
var appName = "Registration";
var appType = "P";

var userID = "";
var cartPage = "mijn-winkelwagentje";

/***** Cookie goodness, yumm... *****/
function createCookie(name,value,days, webroot) {
  if (days){
	var date = new Date();
	date.setTime(date.getTime()+(days*24*60*60*1000));
	var expires = "; expires="+date.toGMTString();
  }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path="+webroot;
}

function readCookie(name){
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++){
	var c = ca[i];
	while (c.charAt(0)==' ') c = c.substring(1,c.length);
	if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

function eraseCookie(name){ createCookie(name,"",-1); }
/***************************/

function Registration_onload() {
	// Als de klant niet ingelogd is, 
	// kan hij zich nog registreren
	if (user.id == 1) {
		pnlRegister.show();
		txtNumber.focus();
	}
	// Ingelogde klanten kunnen zich niet meer registreren
	else {
		pnlRegistrationComplete.show();
		pnlRegister.hide();
	}
}

function alertEmptyField(field) {	

	// Kijk of de dialog al bestaat en als dat zo is, zorg er voor dat ze weg is
	// anders blijft het vorige bericht steeds staan
	if (typeof(dlgEmptyField) != "undefined") { dlgEmptyField.destroy(); }
	
	if (field == "paswoord") { address = "een"; }
	else { address = "uw"; }
	
	dlgEmptyField = new Dialog("dlgEmptyField", "Gelieve " + address + " " + field + " in te geven!", "ok");
	dlgEmptyField.render();
	dlgEmptyField.show(); 
		
}

// Maak alle invulvelden leeg
function clearFields() {

	txtFirstName.setValue("");
	txtLastName.setValue("");
	txtPassword.setValue("");
	txtConfirmPassword.setValue("");
	txtAddress.setValue("");
	txtHouseNumber.setValue("");
	txtZip.setValue("");
	txtCity.setValue("");
	txtEmail.setValue("");
	txtPhone.setValue("");
	txtWorkPhone.setValue("");
	txtVat.setValue("");
	txtFax.setValue("");
	cboCountryID.setSelectedValue("");
	
}

// Terug naar het winkelmandje
function btnBackToCart_onclick() {
	gotourl("/" + cartPage);
}

// Wordt ook gebruikt bij het aanmaken en aanpassen van een klant
// Nadat er op opslaan is geklikt, kijken we na of er iets in het 
// winkelwagentje zit en op basis hiervan sturen we de klant verder
function getDocumentByGuid_success(oXmlResponse) {
	// Er zit iets in het winkelmandje
	// De gebruiker wordt doorgestuurd naar de basket-app 
	// en meteen verder naar de 'uw gegevens'-stap 
	if (oXmlResponse.status == "FILLED") {
		gotourl("/" + cartPage + "?source=registration");
	}
	// Het winkelmandje is leeg, we sturen de klant naar de shop
	else {
		gotourl("/shop");
	}
}

// Wanneer de gebruiker nog geen klant is, 
// mag hij meteen door naar stap 2 en zijn
// gegevens invullen
function btnToStep2_a_onclick() {
	pnlStep2.show();  
	pnlStep1.hide();
	// Maak invulvelden leeg
	clearFields();
}

// Wanneer de gebruiker wel al klant is, maar nog geen paswoord heeft
function btnToStep2_b_onclick() {
	// Als het paswoord en het klantennummer niet leeg is,
	// mag de klant naar stap 2
	if (txtNumber.getValue() != "" && txtEmail1.getValue() != "") {
		// Check het klantennummer
		var params = new Array();
		params["CustomerNumber"] = txtNumber.getValue();
		params["CustomerEmail"] = txtEmail1.getValue();
		oXmlRequest = new XmlRequest();
		oXmlRequest.functionName = "checkCustomerNumber";
		oXmlRequest.params = params;
		oXmlRequest.onsuccess = checkCustomerNumber_success;
		oXmlRequest.start();
	}
	else {
		dlgEmptyError = new Dialog("dlgEmptyError", "U moet uw klantennummer en emailadres ingeven!", "ok");
		dlgEmptyError.render();
		dlgEmptyError.show(); 
	}

	function checkCustomerNumber_success(oXmlResponse) {

		// Klantennummer en emailadres werd gevonden
		if (oXmlResponse.statusCode == 2000) {
		
			// Invulvelden opvullen
			var userData = oXmlResponse.data[0];
			if (userData) {
				userID = userData["UserID"];
				if (userData["ClearPass"] == "") {
					txtFirstName.setValue(userData["FirstName"]);
					txtLastName.setValue(userData["LastName"]);
					// Geboortedatum splitsen
					arr_dob = userData["Dob"].split("-");
					cboYear.setSelectedValue(arr_dob[0]);
					cboMonth.setSelectedValue(arr_dob[1]);
					cboDay.setSelectedValue(arr_dob[2]);
					txtAddress.setValue(userData["Address"]);
					txtHouseNumber.setValue(userData["HouseNumber"]);
					txtZip.setValue(userData["Zip"]);
					txtCity.setValue(userData["City"]);
					txtEmail.setValue(userData["Email"]);
					txtPhone.setValue(userData["Phone"]);
					txtVat.setValue(userData["Vat"]);
					txtWorkPhone.setValue(userData["WorkPhone"]);
					txtFax.setValue(userData["Fax"]);
					cboCountryID.setSelectedValue(userData["CountryID"]);
				
					pnlStep2.show();
					pnlStep1.hide();
				
				}
				else {
					dlgAlreadyRegistered = new Dialog("dlgAlreadyRegistered", "Dit klantennummer is reeds geregistreerd in onze online shop.", "ok");
					dlgAlreadyRegistered.render();
					dlgAlreadyRegistered.show();
				}
			}
		}
		// Klantennummer bestaat maar emailadres was verkeerd
		else if (oXmlResponse.statusCode == 2001) {
			dlgEmailError = new Dialog("dlgEmailError", "Bij dit klantennummer is helaas geen emailadres bekend of het ingegeven emailadres is niet correct!", "ok");
			dlgEmailError.render();
			dlgEmailError.show(); 
		}
		// Klantennummer bestaat niet
		// dus moeten we een nieuwe klant aanmaken
		else if (oXmlResponse.statusCode == 2002) {
			new Effect.Appear(pnlStep2.containerElementId);  
			pnlStep1.hide();
			// Maak invulvelden leeg
			clearFields();
			dlgEmailError = new Dialog("dlgEmailError", "We konden dit klantennummer helaas niet terugvinden!<br /> U bent natuurlijk van harte welkom als nieuwe klant.", "ok");
			dlgEmailError.render();
			dlgEmailError.show(); 
		}
	}
}

// De 'Back'-knop
function btnBack_onclick() {
	pnlStep1.show();
	pnlStep2.hide();
	clearFields();
}

function clearErrors() {
	
	var inpArr = document.getElementsByTagName('input');
	for (i = 0; i < inpArr.length; i++) {
		var inpObj = inpArr[i];
		inpObj.className = "fw_textbox";
	}
	
}

// Klantgegevens opslaan
function btnSave_onclick() {
	
	var params = new Array();
	// Bij een volledig nieuwe registratie is userID leeg en maakt 
	// hij een nieuwe klant aan, bij klant die zijn klantennummer kent
	// worden de gegevens ge-update en is userID wel ingevuld
	params["UserID"] = userID;
	params["FirstName"] = txtFirstName.getValue();
	params["LastName"] = txtLastName.getValue();
	params["Dob"] = cboYear.getSelectedValue() + "-" + cboMonth.getSelectedValue() + "-" + cboDay.getSelectedValue();
	params["ClearPass"] = txtPassword.getValue();
	params["Address"] = txtAddress.getValue();
	params["HouseNumber"] = txtHouseNumber.getValue();
	params["Zip"] = txtZip.getValue();
	params["City"] = txtCity.getValue();
	params["Email"] = txtEmail.getValue();
	params["Phone"] = txtPhone.getValue();
	params["WorkPhone"] = txtWorkPhone.getValue();
	params["Vat"] = txtVat.getValue();
	params["Fax"] = txtFax.getValue();
	params["CountryID"] = cboCountryID.getSelectedValue();
	
	/**************** FORMULIEREN GESTAPO **********************/
	// Controleer of de paswoorden hetzelfde zijn
	if (params["ClearPass"] != txtConfirmPassword.getValue()) {
		dlgPassMismatch = new Dialog("dlgPassMismatch", "U moet tweemaal hetzelfde paswoord ingeven!", "ok");
		dlgPassMismatch.render();
		dlgPassMismatch.show(); 
		txtPassword.setError("Paswoord");
		txtConfirmPassword.setError("Paswoord");
		txtPassword.focus();
	}
	// Controleer of alle velden ingevuld zijn 
	else if (params["FirstName"] == "") {
		clearErrors();
		txtFirstName.setError("Voornaam");
		alertEmptyField("voornaam");
		txtFirstName.focus();
	}
	else if (params["LastName"] == "") {
		clearErrors();
		txtLastName.setError("Familienaam");
		alertEmptyField("familienaam");
		txtLastName.focus();
	}
	else if (params["ClearPass"] == "") {
		clearErrors();
		txtPassword.setError("Paswoord");
		alertEmptyField("paswoord");
		txtPassword.focus();
	}
	else if (params["Address"] == "") {
		clearErrors();
		txtAddress.setError("Adres");
		alertEmptyField("adres");
		txtAddress.focus();
	}
	else if (params["HouseNumber"] == "") {
		clearErrors();
		txtHouseNumber.setError("Huisnummer");
		alertEmptyField("huisnummer");
		txtHouseNumber.focus();
	}
	else if (params["Zip"] == "") {
		clearErrors();
		txtZip.setError("Postcode");
		alertEmptyField("postcode");
		txtZip.focus();
	}
	else if (params["City"] == "") {
		clearErrors();
		txtCity.setError("Woonplaats");
		alertEmptyField("woonplaats");
		txtCity.focus();
	}
	else if (params["Email"] == "") {
		clearErrors();
		txtEmail.setError("Emailadres");
		alertEmptyField("emailadres");
		txtEmail.focus();
	}
	else if (params["Phone"] == "" && params["WorkPhone"] == "") {
		txtPhone.setError("Telefoonnummer");
		alertEmptyField("telefoonnummer");
		txtPhone.focus();
	}
	else {		
		
		// Controle van het emailadres
		var emailFilter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if (emailFilter.test(txtEmail.getValue())) {
		
			oXmlRequest = new XmlRequest();
			oXmlRequest.functionName = "saveCustomer";
			oXmlRequest.params = params;
			oXmlRequest.onsuccess = saveCustomer_success;
			
			// Is het paswoord wel lang genoeg?
			if (params["ClearPass"].length < 4){
				dlgErrorPasswordLength = new Dialog("dlgErrorPasswordLength", "Het paswoord moet minstens uit 4 karakters bestaan", "failed");
				dlgErrorPasswordLength.render();
				dlgErrorPasswordLength.show(); 
			}
			else {
				// Bevat het paswoord wel minstens 1 hoofdletter en 1 cijfer?	
				/*
				var condition1 = /[0-9]/; 
				var condition2 = /[A-Z]/;
				if (!condition1.test(params["ClearPass"])) {
					dlgErrorPasswordNumbers = new Dialog("dlgErrorPasswordNumbers", "Het paswoord moet minstens 1 cijfer bevatten", "failed");
					dlgErrorPasswordNumbers.render();
					dlgErrorPasswordNumbers.show(); 
				}
				else if (!condition2.test(params["ClearPass"])) {
					dlgErrorPasswordUcase = new Dialog("dlgErrorPasswordUcase", "Het paswoord moet minstens 1 hoofdletter bevatten", "failed");
					dlgErrorPasswordUcase.render();
					dlgErrorPasswordUcase.show(); 
				}
				else {
				*/
					// Alles is ok, de request wordt uitgevoerd
					oXmlRequest.start();
					// We verbergen de 'opslaan'-knop zodat de gebruiker geen tweemaal kan klikken
					btnSave.hide();
				/*
				}
				*/
			}
		
		}
		else {
			
			// Kijk of de dialog al bestaat en als dat zo is, zorg er voor dat ze weg is
			// anders blijft het vorige bericht steeds staan
			if (typeof(dlgEmptyField) != "undefined") {
				dlgEmptyField.destroy();
			}
			
			dlgEmptyField = new Dialog("dlgEmptyField", "Dit emailadres is helaas niet geldig!", "ok");
			dlgEmptyField.render();
			dlgEmptyField.show(); 
			
			clearErrors();
			txtEmail.setError("Email");
			txtEmail.focus();
		
		}

	}
	
	// De nieuwe klant heeft zich succesvol geregistreerd
	function saveCustomer_success(oXmlResponse) {
		
		// Het opslaan van de gegevens is gelukt
		// We kunnen verdergaan
		if (oXmlResponse.statusCode == 2000) {
		
			var row = oXmlResponse.data[0];
			
			user.id = row["UserID"];
			user.name = row["Name"];
			user.fullName = row["FirstName"] + " " + row["LastName"];
			user.token = row["Token"];
			user.webroot = webroot;
			user.writeToCookie();
			
			// Controleer of er iets in het winkelwagentje zit
			// op die manier kunnen we de gebruiker terug sturen
			// naar ofwel het winkelwagentje of de shop
			var params = new Array()
			params["DocumentGUID"] = getCookie("DocumentGUID"); 
			oXmlRequest = new XmlRequest();
			oXmlRequest.functionName = "getDocumentByGuid"
			oXmlRequest.params = params;	
			oXmlRequest.onsuccess = getDocumentByGuid_success;
			oXmlRequest.start();

		}
		// Het emailadres (de gebruikersnaam) bestaat reeds in de shop
		// We kunnen dus niet verdergaan
		else if (oXmlResponse.statusCode == 4000) {
			dlgAlreadyRegistered = new Dialog("dlgAlreadyRegistered", "Dit emailadres is reeds geregistreerd in onze online shop.", "ok");
			dlgAlreadyRegistered.render();
			dlgAlreadyRegistered.show();
			btnSave.show();	
		}
	
	}

}

function txtNumber_onkeyup(ev, el) {
	if (ev.keyCode == 13) {
		btnToStep2_b_onclick()
	}
	else {
		if (txtNumber.getValue() != "") {
			btnToStep2_c.hide();
		}
		else {
			btnToStep2_c.show();
		}
	}
	
}

function txtEmail1_onkeyup(ev, el) {
	if (ev.keyCode == 13) {	  
		btnToStep2_b_onclick()
	}
}

