$(function() {

    var _loadingImg = $('<img />')
		.attr('src','/img/ajax-loader.gif')
		.hide();

    $('#UserRegisterForm').submit(function(){
        _loadingImg.appendTo('.submit').show();
        $.post('/users/register',
            $(this).serializeArray(),
            afterValidate,
            "json"
        );
        return false;
    });
 
    function afterValidate(data, status)  {
        $(".message").remove();
        $(".error-message").remove();
        if (data.errors) {
            onError(data.errors);
        } else if (data.success) {
            onSuccess(data.success);
        }
    }
 
    function onSuccess(data) {
        flashMessage(data.message);
        _loadingImg.hide();
		
        window.setTimeout(function() {
            window.location.href = '/users/thank_you';
        }, 3000);
		
    };
 
    function onError(data) {
        flashMessage(data.message);
        $.each(data.data, function(model, errors) {
            for (fieldName in this) {
                var element = $("#" + camelize(model + '_' + fieldName));
                var _insert = $(document.createElement('div')).insertAfter(element);
                _insert.addClass('error-message').text(this[fieldName])
            }
            _loadingImg.hide();
        });
    };
 
    function flashMessage(message) {
		
        var _insert = $(document.createElement('div')).css('display', 'none');
        _insert.attr('id', 'flashMessage').addClass('message').text(message);
        _insert.insertBefore($("#UserRegisterForm")).fadeIn('slow');
    }

    function camelize(string) {
        var a = string.split('_'), i;
        s = [];
        for (i=0; i<a.length; i++){
            s.push(a[i].charAt(0).toUpperCase() + a[i].substring(1));
        }
        s = s.join('');
        return s;
    }
	
	/* Turn <legends> into <h3> */
	$('legend').each(function(index) {
		$(this).replaceWith('<h3>' + $(this).text() + '</h3>');
	});
	
});