$(function()
{
    if(signupDynamicOptions)
    {
        jQuery.validator.addMethod('fullnameInvalid', function(value, element)
        {
            if (element.value == element.defaultValue)
            return false;
            
            return true;
            
        }, 'Please fill in your full name');

        jQuery.validator.addMethod('passwordInvalid', function(value, element)
        {
            if (element.value == element.defaultValue)
            return false;
            
            return true;
            
        }, 'Please fill in your password');
        
        mylingo.form.validate($('#signup_form'), {
            rules: {
                "sf_guard_user[password_confirmation]": {
                    equalTo: "#sf_guard_user_password"
                }
            },
            messages: {
                "sf_guard_user[password_confirmation]": {
                    equalTo: "Please enter the same password as above"	
                }
            },
            submitHandler: function(form)
            {
                var signupMainOptions = {
                    clearForm:      false,
                    beforeSubmit:   signupForm.validate,  // pre-submit callback
                    success:        signupForm.showResponse  // post-submit callback
                }

                //Merge dynamic options from HTML with static js options
                signupOptions = jQuery.extend(signupMainOptions, signupDynamicOptions);

                jQuery(form).ajaxSubmit(signupOptions);

                return false;
            }
        });
    }
});

origSubmitVal = null;

var signupForm = {
    validate: function(formData, jqForm)
    {
        // remove old error msg's
        $(".qtip").remove();
        $("#signup_form div.error").remove();
        
        if(!origSubmitVal)
        origSubmitVal = $("#signup_submit").val();
        
        $("#signup_submit").val(signupDynamicOptions.labels.logging);
        return true;
    },

    showResponse: function(responseText, statusText, xhr, $form)
    {
        var obj = jQuery.parseJSON(responseText);

        switch(obj.status)
        {
            case 'success':
                document.location = obj.url;
            break;

            case 'invalid':
                $.each(obj.errors, function(name, value) {
                    $('#sf_guard_user_'+name).after('<div class="error">'+value+'</div>');
                });
        
                $("#signup_submit").val(origSubmitVal);
            break;
        }

        return false;
    }
};
