﻿var Registration =
{
	RootPath: "",

	Register: function()
	{
		var usernameError = "";
		var passwordError = "";
		var verifyError = "";
		var emailError = "";
		var generalError = "";
		var coppaError = "";
		
		//$("#lblPassword").qtip("hide");
		//var alternate_api = $("#lblUserName").qtip("api");
		
		//alternate_api.show();
		//return;
		var username = $("#userName").val();
		var password = $("#password").val();
		var verifyPassword = $("#verifyPassword").val();
		var email = $("#email").val();
		var coppa = $("#coppa").is(':checked');

		var valid = true;
		//  username is not empty
		if( username == null || username.length == 0 )
		{
			usernameError = "Username is required.";
			valid = false;
		}

		//  password is not empty
		if (password == null || password.length == 0)
		{
			passwordError = "Password is required.";
			valid = false;
		}

		if ((verifyPassword == null || verifyPassword.length == 0) && password != null && password.length > 0) 
		{
			verifyError = "Password verification is required.";
			valid = false;
		}

		//  password is not empty
		if ( password != null && password.length> 0 && verifyPassword != null && verifyPassword.length > 0)
		{
			if( password != verifyPassword )
			{
				passwordError = "Passwords do not match.";
				valid = false;
			}
		}

		//  password is not empty
		if (email == null || email.length == 0)
		{
			emailError = "Email is required.";
			valid = false;
		}
		else
		{
			var validEmail = Registration.IsValidEmail(email);
			if( !validEmail )
			{
				emailError = "Invalid Email Address.";
				valid = false;
			}
		}

		if (coppa == null || coppa == false)
		{
			valid = false;
			coppaError = "Please agree and check box.";
		}
		

		if( valid == true )
		{
			//  Do teh Ajax!1!!
			var url = Registration.RootPath + "Account/RegisterAccount";
			$.ajax({
				"dataType": "jsonp",
				"url": url,
				"data":
				{
					"username": username,
					"password": password,
					"verifyPassword": verifyPassword,
					"email": email,
					"coppa": coppa,
					"mailingList": $("#mailingList:checked").length > 0,
					"invitationId": $("#invitationId").val()
				},
			"success": function (data)
				{
					if (data.result)
					{
						//var newLocation = "http://" + AlbumEdit2.OwnerRootPath + data.name;  // Set in a variable for testing.
						//window.location = newLocation;
						window.location = Registration.RootPath + "Account/RegistrationSuccessful";
						//Registration.ShowThankyouPopup();
						return;
					}
					else
					{
						usernameError = data.usernameError;
						passwordError = data.passwordError;
						verifyError  = data.verifyError;
						emailError = data.emailError;
						generalError = data.generalError;
						coppaError = data.coppaError;

						Registration.SetErrors(usernameError, passwordError, verifyError, emailError, coppaError, generalError);
					}
				},
			"error": function (req, status, error)
				{

				}
			});
		}

		Registration.SetErrors(usernameError, passwordError, verifyError, emailError, coppaError, generalError);
		
	},

	SetErrors: function (usernameError, passwordError, verifyError, emailError, coppaError, generalError)
	{
		var hasErrors = false;
		if (usernameError.length > 0)
		{
			$("#lblUserName").qtip("api").updateContent(usernameError);
			$("#lblUserName").qtip("show");
			hasErrors = true;
		}
		else
		{
			$("#lblUserName").qtip("hide");
		}

		//  Show or hide the errors
		if (passwordError.length > 0)
		{
			$("#lblPassword").qtip("api").updateContent(passwordError);
			$("#lblPassword").qtip("show");
			hasErrors = true;
		}
		else
		{
			$("#lblPassword").qtip("hide");
		}

		if (verifyError.length > 0)
		{
			$("#lblVerifyPassword").qtip("api").updateContent(verifyError);
			$("#lblVerifyPassword").qtip("show");
			hasErrors = true;
		}
		else
		{
			$("#lblVerifyPassword").qtip("hide");
		}

		if (emailError.length > 0)
		{
			$("#lblEmail").qtip("api").updateContent(emailError);
			$("#lblEmail").qtip("show");
			hasErrors = true;
		}
		else
		{
			$("#lblEmail").qtip("hide");
		}


		if (coppaError.length > 0)
		{
			$("#coppa").qtip("api").updateContent(coppaError);
			$("#coppa").qtip("show");
			hasErrors = true;
		}
		else
		{
			$("#coppa").qtip("hide");
		}

		if (!hasErrors && generalError.length > 0)
		{
			$("#btnRegister").qtip("api").updateContent(generalError);
			$("#btnRegister").qtip("show");
			hasErrors = true;
		}
		else
		{
			$("#btnRegister").qtip("hide");
		}
	},

	HideAllErrors: function()
	{
		$("#lblUserName").qtip("hide");
		$("#lblPassword").qtip("hide");
		$("#lblVerifyPassword").qtip("hide");
		$("#lblEmail").qtip("hide");
		$("#coppa").qtip("hide");
	},


	ShowForgotUsername: function ()
	{
		Registration.HideAllErrors();
		$.blockUI
		(
			{
				message: $("#forgotUsernamePopup"),
				css:
				{
					width: '300px',
					top: '10%',
					left: '30%'
				}
			}
		);
	},

	IsValidEmail: function(email) 
	{
	   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	  
	   var valid = reg.test(email);

	   return valid;
	},

	ShowForgotPassword: function ()
	{
		Registration.HideAllErrors();
		$.blockUI
		(
			{
				message: $("#forgotPasswordPopup"),
				css:
				{
					width: '410px',
					top: '10%',
					left: '30%'
				}
			}
		);
	},

	ShowThankyouPopup: function ()
	{
		Registration.HideAllErrors();
		$.blockUI
		(
			{
				message: $("#thankYouPopup"),
				css:
				{
					width: '330px',
					top: '10%',
					left: '30%'
				}
			}
		);
	},

	ForgotUsername: function ()
	{
		// TODO Show Forgot username popup
	},

	ForgotPassword: function ()
	{
		// TODO Show Forgot password popup
	},

	ClosePopup: function()
	{
		$.unblockUI
		(
			{
				onUnblock: function (el, opts)
				{
					//window.location.reload();
				}
			}
		);
	},

	OnDocumentReady: function ()
	{
		
	},

	OnWindowLoaded: function ()
	{
	}
}
$(document).ready(Registration.OnDocumentReady);
$(window).load(Registration.OnWindowLoaded);
