﻿///<reference path="dialogcommon.js" />
///<reference path="validation.js" />

if (Membership == null || typeof(Membership) != "object") { var Membership = new Object(); }

///<value>Gets or sets the current user</value>
Membership.CurrentUser = null;

Membership.AddUser = function() {
	///<summary>Saves a new user</summary>
	var errorLabel = "newUserError";
	Validator.ResetErrorLabel(errorLabel);

	if (!Validator.CheckRequired("txtFornavn", "Fornavn er ikke fylt ut", errorLabel))
		return;
	if (!Validator.CheckRequired("txtEtternavn", "Etternavn er ikke fylt ut", errorLabel))
		return;
	if (!Validator.CheckRequired("txtNewEmail", "E-post er ikke fylt ut", errorLabel))
		return;
	if (!Validator.CheckRequired("txtNewEmail", "E-post er ikke gyldig", errorLabel))
		return;
	if (!Validator.CheckRequired("txtNewPassword", "Passord er ikke fylt ut", errorLabel))
		return;
	if (!Validator.CheckPassword("txtNewPassword", { minLength: 7 }, "Passord må være minst 7 tegn", errorLabel))
		return;
	if (!Validator.CheckRequired("txtRepeatPassword", "Repetert passord er ikke fylt ut", errorLabel))
		return;
	if (!Validator.CheckEqual("txtRepeatPassword", "txtNewPassword", "Passordene er ikke like", errorLabel))
		return;
	if (!Validator.CheckRequired("txtMobile", "Mobilnummer er ikke fylt ut", errorLabel))
		return;
	if (!Validator.CheckPhoneNumber("txtMobile", "Mobilnummer må være kun 8 siffer, uten mellomrom", errorLabel))
		return;
	if (!Validator.CheckRequired("chkAcceptTerms", "Vilkårene må aksepteres", errorLabel))
		return;

	var firstName = $F("txtFornavn");
	var lastName = $F("txtEtternavn");
	var mail = $F("txtNewEmail");
	var pwd = $F("txtNewPassword");
	var pwdRepeat = $F("txtRepeatPassword");
	var mob = $F("txtMobile");
	var wantsNewsletter = $("chkNewsletter").checked;
	
	Dialog.InvokeUserHandler("register", { "firstname": firstName, "lastname": lastName, 
		"username": mail, "password": pwd, "passwordrepeat": pwdRepeat, "mobile": mob, "newsletter":wantsNewsletter },
		function(transport) { 
			var error = null;
			if (transport.responseJSON) {
				var response = transport.responseJSON;
				if (response.Error && response.Error.length > 0) {
					switch (response.Error) {
						case "FieldRequiredValidationException":
							Validator.ShowError(response.FieldName, errorLabel, response.Message);
							break;
						case "ValidationException": 
							Validator.ShowError(null, errorLabel, response.Message);
							break;
						default:
							alert("Det oppstod en feil: " + response.Message);
					}
				} else {
				    alert("Steg 1 av brukerregistreringen er fullført.\nDu vil om kort tid motta en e-post med informasjon\nom hvordan du aktiviserer kontoen din.");
					Dialog.Close("txtLoginEmail", "site");
				}
			}
		},
		function(transport) { alert("Det oppstod en feil under registrering. Prøv igjen senere."); }
	);
}

Membership.Login = function() {
	///<summary>Logs in a user</summary>
	var errorLabel = "loginError";
	Validator.ResetErrorLabel(errorLabel);
	if (!Validator.CheckRequired("txtLoginEmail", "E-post er ikke fylt ut", errorLabel))
		return;
	if (!Validator.CheckRequired("txtLoginPassword", "Passord er ikke fylt ut", errorLabel))
		return;
		
	Dialog.InvokeUserHandler("login", { 
		"username": $F("txtLoginEmail"), 
		"password": $F("txtLoginPassword"),
		"rememberme": $("chkRememberMe").checked },
		function(transport) { 
			var error = null;
			if (transport.responseJSON) {
				var response = transport.responseJSON;
				if (response.Error && response.Error.length > 0) {
					alert("Det oppstod en feil: " + response.Message);
				} else {
					if (response.IsLoggedIn) {
						Dialog.Close("txtLoginEmail", "site");
						Membership.CurrentUser = response;
						$F("txtLoginPassword").value = "";
						init();
					} else {
						Validator.ShowError("txtLoginPassword", "loginError", "Brukernavn eller passord er feil");
					}
				}
			}
		},
		function(transport) { 
			alert("Feil under innlogging. Prøv igjen senere."); 
		}
	);
}
Membership.ResetPassword = function() {
	///<summary>Resets a user password</summary>
	var errorLabel = "reminderError";
	Validator.ResetErrorLabel(errorLabel);
	if (!Validator.CheckRequired("txtReminderEmail", "E-post er ikke fylt ut", errorLabel))
		return;
	if (!Validator.CheckEmail("txtReminderEmail", "E-post er ikke gyldig", errorLabel))
		return;
		
	var email = $F("txtReminderEmail");
	
	Dialog.InvokeUserHandler("resetpassword", { "email": email }, 
		function(transport) {
			var result = transport.responseJSON;
			if (result && result.OK) {
				alert("Nytt passord er generert og sendt til " + email);
				Dialog.Close("txtLoginEmail", "site");
			} else {
				if (result.Error == "MembershipPasswordException") {
					Validator.ShowError(null, errorLabel, result.Message);
				} else {
					Validator.ShowError("txtReminderEmail", errorLabel, "Fant ikke epost-adressen i systemet");
				}
			}
		});
}
Membership.LoadCurrentUser = function() {
	///<summary>Loads the current user into the Membership.CurrentUser property</summary>
	Dialog.InvokeUserHandler("currentuser", null, function(transport) { 
		if (transport.responseJSON)
			Membership.CurrentUser = transport.responseJSON;
	});
}