﻿var Account = {};

Account.Login = (function($) {
    var config = {};

    var init = function(settings) {
        $("#loginForm").validate();
    };

    return { Init: init };
} (jQuery));


Account.MyProfile = (function($) {
    var config = {
        ProfileSettings: ""
    };

    var profileModal;

    var init = function(settings) {
        profileModal = $.ProfileSelector.Create(
			".innerHtml", // The class name of links that cause the loading of their content in the page
			"#profileLegend", // The legend ID to enable breadcrumbing behaviour
			"#profileSettingsMainForm", // The form whose content gets replaces.
			config.ProfileSettings); // The URL to return to when comingout of an options screen
		profileModal.Init();
    };
    
    function formSubmit(data)
	{
		HandleMessages(data);
		profileModal.Return(data.Model);
	}

    return { Init: init };
} (jQuery));


Account.ChangePassword = (function($) {
    var config = {
        PasswordLength: 6
    };

    var init = function(settings) {
	    $("#forgottenPasswordForm").validate({
		    rules: {
			    newPassword: {
				    minlength: config.PasswordLength
			    },
			    confirmPassword: {
				    minlength: config.PasswordLength,
				    equalTo: "#newPassword"
			    }
		    },
		    messages: {
			    newPassword: {
				    minlength: "Your password must be at least " + config.PasswordLength + " characters long"
			    },
			    confirmPassword: {
			        minlength: "Your password must be at least " + config.config.PasswordLength + " characters long",
				    equalTo: "Please enter the same password as above"
			    }
		    }
	    });
    };

    return { Init: init };
} (jQuery));


Account.ForgottenPassword = (function($) {
    var config = {};

    var init = function(settings) {
        $("#forgottenPassworForm").validate();
    };

    return { Init: init };
} (jQuery));


Account.Register = (function($) {
    var config = {
        PasswordLength: 6
    };

    var init = function(settings) {
		$("#registerForm").validate({
			rules: {
				password: {
					minlength: config.PasswordLength
				},
				confirmPassword: {
					minlength: config.PasswordLength,
					equalTo: "#password"
				}
			},
			messages: {
				password: {
					minlength: "Your password must be at least " + config.PasswordLength + " characters long"
				},
				confirmPassword: {
				    minlength: "Your password must be at least " + config.PasswordLength + " characters long",
					equalTo: "Please enter the same password as above"
				}
			}
		});
    };

    return { Init: init };
} (jQuery));


Account.Profile = {};


Account.Profile.AlterProfileInformation = (function($) {
    var config = {};

    var init = function(settings) {
    	var validator;
	    $(document).ready(function() {
		    validator = $("#alterProfileInformationForm").validate();
	    });
	    $("form").submit(function(e) {
		    var isvalid = validator.element("#email");
		    if (isvalid) {
			    $.post($(this).attr("action"), $(this).serialize(), function(data) { formSubmit(data); });
			    e.preventDefault();
		    }
	    });
    };

    return { Init: init };
} (jQuery));


Account.Profile.ChangeAvatar = (function($) {
    var config = {};

    var init = function(settings) {
	    $("form").submit(function(e) {
		    $.post($(this).attr("action"), $(this).serialize(), function(data) { formSubmit(data); });
		    e.preventDefault();
	    });
    };

    return { Init: init };
} (jQuery));


Account.Profile.ChangePassword = (function($) {
    var config = {
        PasswordLength: 6
    };

    var validator;

    var init = function(settings) {
        $(document).ready(function() {
		    validator = $("#changePasswordForm").validate({
			    rules: {
				    newPassword: {
				        minlength: config.PasswordLength
				    },
				    confirmPassword: {
					    minlength: config.PasswordLength,
					    equalTo: "#newPassword"
				    }
			    },
			    messages: {
				    newPassword: {
					    minlength: "Your password must be at least "+config.PasswordLength+" characters long"
				    },
				    confirmPassword: {
					    minlength: "Your password must be at least "+config.PasswordLength+" characters long",
					    equalTo: "Please enter the same password as above"
				    }
			    }
		    });
	    });
	    $("form").submit(function(e) {
		    var isvalid = validator.element("#currentPassword") && validator.element("#newPassword") && validator.element("#confirmPassword");
		    if (isvalid) {
			    $.post($(this).attr("action"), $(this).serialize(), function(data) { formSubmit(data); });
			    e.preventDefault();
		    }
	    });
    };

    return { Init: init };
} (jQuery));


Account.Profile.PrivacySettings = (function($) {
    var config = {};

    var init = function(settings) {
    	$("form").submit(function(e) {
		    $.post($(this).attr("action"), $(this).serialize(), function(data) { formSubmit(data); });
		    e.preventDefault();
	    });
    };

    return { Init: init };
} (jQuery));
