
var appName = "Basket";
var appType = "P";

/***** 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 Basket_onload() {
	// Wanneer de klant vanuit de online betaling komt, 
	// sturen we 'm door naar stap 4
	if (source == "ogone") {
		document.getElementById('BasketLoading').style.display = "none";
		pnlStep4.show();
		googleConversionCode();
	}
	else {
		// Controleer of er iets in het winkelwagentje zit
		var params = new Array()
		params["DocumentGUID"] = getCookie("DocumentGUID"); 
		oXmlRequest = new XmlRequest();
		oXmlRequest.functionName = "getDocumentByGuid"
		oXmlRequest.params 	= params;	
		oXmlRequest.onsuccess = getDocumentByGuid_success;
		oXmlRequest.start();
	}

	function getDocumentByGuid_success(oXmlResponse) {
	
		document.getElementById('BasketLoading').style.display = "none";
		
		// Er zit iets in het winkelmandje
		if (oXmlResponse.statusCode == "2000") {
				
			// We controleren of er ook wel iets in het mandje zit
			var row = oXmlResponse.data[0];
			if (row) {
				// De klant komt vanuit de registration-app,
				// We sturen 'm dan meteen door naar stap 3
				if (source == "registration") {
					step2To3();
				}
				else {
					step1ShowBasket();	
					pnlStep1.show();
				}	
			 }
			 else {
		 		pnlEmptyBasket.show();
		 	 }
		}
		// Het winkelmandje is leeg
		else {
			pnlEmptyBasket.show();
		}
	}
	
}

function step1ShowBasket() {
	
	var params  = new Array();
	params["DocumentGUID"] = getCookie("DocumentGUID");
	dgBasketItems.dataSource = "getDocumentByGuid";
	dgBasketItems.dataParams = params;
	dgBasketItems.ondatabind = dgBasketItems_ondatabind;
	dgBasketItems.dataBind();

	dgTaxTotals.dataSource = "getDocumentTotalsByGuid";
	dgTaxTotals.dataParams = params;
	dgTaxTotals.ondatabind = dgTaxTotals_ondatabind;
	dgTaxTotals.dataBind();
			
	function dgBasketItems_ondatabind(oXmlResponse) {}
	function dgTaxTotals_ondatabind(oXmlResponse) {}
	
}

function dgBasketItems_onclick(ev, el, row, col) {
	if (col == "dcQuantityPlus") {
		var params = new Array()
		params["DocumentGUID"] = getCookie("DocumentGUID"); 
		params["Action"] = "QuantityPlus";
		params["DocumentItemID"] = row;
		oXmlRequest = new XmlRequest();
		oXmlRequest.functionName	= "updateDocumentItem"
		oXmlRequest.params 			= params;	
		oXmlRequest.onsuccess 		= updateDocumentItem_success;
		oXmlRequest.onfailed 		= "";
		oXmlRequest.start();
	}
	else if (col == "dcQuantityMin") {
		var params = new Array()
		params["DocumentGUID"] = getCookie("DocumentGUID"); 
		params["Action"] = "QuantityMin";
		params["DocumentItemID"] = row;
		oXmlRequest = new XmlRequest();
		oXmlRequest.functionName	= "updateDocumentItem"
		oXmlRequest.params 			= params;	
		oXmlRequest.onsuccess 		= updateDocumentItem_success;
		oXmlRequest.onfailed 		= "";
		oXmlRequest.start();
	}
	else if (col == "OnDelete") {
		var x = confirm('Bent u zeker dat u dit product wil verwijderen uit uw winkelwagentje?');
		if (x == true) {
			var params = new Array()
			params["DocumentGUID"] = getCookie("DocumentGUID"); 
			params["Action"] = "Delete";
			params["DocumentItemID"] = row;
			oXmlRequest = new XmlRequest();
			oXmlRequest.functionName	= "updateDocumentItem"
			oXmlRequest.params 			= params;	
			oXmlRequest.onsuccess 		= updateDocumentItem_success;
			oXmlRequest.onfailed 		= "";
			oXmlRequest.start();	
		}
	}
	
	function updateDocumentItem_success(oXmlResponse) {
		
		if (oXmlResponse.statusCode != 2000) {}
		else {
			var documentGuid = oXmlResponse.data[0]["DocumentGUID"];
			// Het mandje kon niet aangemaakt worden
			if (documentGuid == "") {}
			else {
				setCookie("DocumentGUID", documentGuid, 0);
				dgBasketItems.dataBind();
				dgTaxTotals.dataBind();
			}
			
		}
	}
	
}

// De klant dient zich eerst te registreren 
function btnToRegistration_onclick() { window.location = webroot + "/registreren?source=basket"; }

/**** STAP 1 naar 2 ***************************************/
function step1To2() {
	// Controleer of er iets in het winkelwagentje zit
	var params = new Array()
	params["DocumentGUID"] = getCookie("DocumentGUID"); 
	oXmlRequest = new XmlRequest();
	oXmlRequest.functionName = "getDocumentByGuid"
	oXmlRequest.params 	= params;	
	oXmlRequest.onsuccess = getDocumentByGuid_success;
	oXmlRequest.start();

	function getDocumentByGuid_success(oXmlResponse) {
	
		// Het winkelmandje bestaat wel degelijk
		if (oXmlResponse.statusCode == "2000") {
			// We controleren of er ook wel iets in het mandje zit
			var row = oXmlResponse.data[0];
			if (row) {
				// We gaan verder naar stap 2
				pnlStep2.show();
				pnlStep1.hide();
				if (user.id == 1) {
					// Vul de login op met het emailadres
					var email = readCookie('email');
				 	if (email != null){
						txtEmail.setValue(email);
						txtPassword.focus();
						chkRemember.setChecked(true);
					}else{
						txtEmail.focus();
					}
				}
			}
		}
		// Het winkelmandje is leeg
		else {
			pnlEmptyBasket.show();
		}
	}
	
}

function step2To1() {
	pnlStep2.hide();
	pnlStep1.show();
}

function btnLostPassword_onclick() {
	var emailAddress = txtEmail.getValue();
	// Alvorens we een email kunnen sturen met het paswoord
	// moeten we natuurlijk het emailadres hebben
	if(!emailAddress) {
		dlgEmptyEmailLogin1 = new Dialog("dlgEmptyEmailLogin1", "Gelieve uw emailadres in te geven!", "ok");
		dlgEmptyEmailLogin1.render();
		dlgEmptyEmailLogin1.show(); 
		
		txtEmail.setError("EmailLogin");
		txtEmail.focus();
	}
	else {
		var params = new Array();
		params["Email"] = emailAddress;
		oXmlRequest = new XmlRequest();
		oXmlRequest.functionName = "retrievePassword"
		oXmlRequest.params 	= params;	
		oXmlRequest.onsuccess = retrievePassword_success;
		oXmlRequest.start();
	}
	
}

function retrievePassword_success (oXmlResponse) {
	
	if (oXmlResponse.statusCode == "2000") {
		dlgPasswordSent = new Dialog("dlgPasswordSent", oXmlResponse.message["nl"], "ok");
		dlgPasswordSent.render();
		dlgPasswordSent.show();
	}
	else {
		dlgPasswordSentFailed = new Dialog("dlgPasswordSentFailed", oXmlResponse.message["nl"], "failed");
		dlgPasswordSentFailed.render();
		dlgPasswordSentFailed.show();
	}
	
}

function btnStep2Login_onclick() {
	// Is het klantennummer (gebruikersnaam) ingevuld?
	if (txtEmail.getValue() == "") {
		dlgEmptyEmail= new Dialog("dlgEmptyEmail", "Gelieve uw emailadres in te geven!", "ok");
		dlgEmptyEmail.render();
		dlgEmptyEmail.show(); 
	}
	// Is het paswoord ingevuld?
	else if (txtPassword.getValue() == "") {
		dlgEmptyPassword1 = new Dialog("dlgEmptyPassword1", "Gelieve een paswoord in te geven!", "ok");
		dlgEmptyPassword1.render();
		dlgEmptyPassword1.show(); 
	}
	else {
		
		var params = new Array();
		params["UserName"] = txtEmail.getValue();
		var username = params["UserName"];
		params["Password"] = txtPassword.getValue();
		
		oXmlRequest = new XmlRequest();
		oXmlRequest.functionName = "step2CheckLogin";
		oXmlRequest.params 	= params;	
		oXmlRequest.onsuccess = step2CheckLogin_success;
		oXmlRequest.start();
		
	}
	
	function step2CheckLogin_success(oXmlResponse) {
		
		if (oXmlResponse.statusCode == 2000) {
			
			var row = oXmlResponse.data[0];
			user.id = row["UserID"];
			user.email = row["Email"];
			user.name = row["Name"];
			user.fullName = row["FirstName"] + " " + row["LastName"];
			user.token = row["Token"];
			user.webroot = webroot;
			user.writeToCookie();
			
			if (chkRemember.getChecked() == true){
				createCookie('email', user.email , 365, user.webroot)
			}
			
			pnlStep2Login.hide();
			pnlStep2LoggedIn.show();
			btnStep2Login.hide();
			btnStep2To3.show();
			
			lblUserInfo.setValue(row["Info"]);
			lblLoggedInInfo.setValue("U bent ingelogd als <em>" + user.fullName + " (" + user.name + ")");	
		}
		else {
			dlgLoginError = new Dialog("dlgLoginError", oXmlResponse.message["nl"], "failed");
			dlgLoginError.render();
			dlgLoginError.show(); 	
			
			txtPassword.setValue("");
		
		}
		
	}
}

function txtEmailLogin_onkeyup(ev, el) {
	if (ev.keyCode == 13) {
		btnStep2Login_onclick();
	}
}

function txtPassword_onkeyup(ev, el) {
	if (ev.keyCode == 13) {	  
		btnStep2Login_onclick();
	}
}

/**** STAP 2 naar 3 ***************************************/
function step2To3() {
	pnlStep2.hide();
	pnlStep3.show();
	
	oXmlRequest = new XmlRequest();
	oXmlRequest.functionName = "step3GetUser";
	oXmlRequest.onsuccess = step3GetUser_success;
	oXmlRequest.start();
		
	function step3GetUser_success(oXmlResponse) {
			
		if (oXmlResponse.statusCode == 2000) {
			
			var row = oXmlResponse.data[0];
			// De voornaam kan leeg zijn
			if (row["FirstName"] != "") {
				lblFirstName.setValue(row["FirstName"]);
			} 
			else {
				lblFirstName.setValue("...");
			}
			lblLastName.setValue(row["LastName"]);
			lblAddress.setValue(row["Address"]);
			lblHouseNumber.setValue(row["HouseNumber"]);
			lblZip.setValue(row["Zip"]);
			lblCountry.setValue(row["Country"]);
			lblCity.setValue(row["City"]);
			lblVat.setValue(row["Vat"]);
			
			// delivery address
			txtFirstName.setValue(row["FirstName"]);
			txtLastName.setValue(row["LastName"]);
			txtAddress.setValue(row["Address"]);
			txtHouseNumber.setValue(row["HouseNumber"]);
			txtZip.setValue(row["Zip"]);
			cboCountry.setSelectedValue(row["CountryID"]);
			txtCity.setValue(row["City"]);
			
			// delivery address mag uitstaan nu
			txtFirstName.setDisabled();
			txtLastName.setDisabled();
			txtAddress.setDisabled();
			txtHouseNumber.setDisabled();
			txtZip.setDisabled();
			cboCountry.setDisabled();
			txtCity.setDisabled();
			
			chkCopyUserData.setChecked(true);
			
			showOrderOverview();
				
		}
	}
}

function showOrderOverview() {
	var params  = new Array();
	params["DocumentGUID"] = getCookie("DocumentGUID");
	params["PaymentTypeID"] = cboPaymentTypeID.getSelectedValue();
	params["ShipmentTypeID"] = cboShipmentTypeID.getSelectedValue();
	dgBasketItemsConfirm.dataSource = "getDocumentByGuid";
	dgBasketItemsConfirm.dataParams = params;
	dgBasketItemsConfirm.dataBind();
	
	dgTaxTotalsConfirm.dataSource = "getDocumentTotalsByGuid";
	dgTaxTotalsConfirm.dataParams = params;
	dgTaxTotalsConfirm.dataBind();	
}


function cboPaymentTypeID_onchange(el, ev) { showOrderOverview(); }
function cboShipmentTypeID_onchange(el, ev) { showOrderOverview(); }

function chkCopyUserData_onclick(el, ev) {
	if (chkCopyUserData.getChecked() == false) {
		txtFirstName.setEnabled();
		txtLastName.setEnabled();
		txtAddress.setEnabled();
		txtHouseNumber.setEnabled();
		txtZip.setEnabled();
		cboCountry.setEnabled();
		txtCity.setEnabled();
	}
	else {
		step2To3();
	}

}

function btnStep3ConfirmOrder2_onclick() {
	if (chkTermsOfService2.getChecked() == true) {
		pnlTermsOfService.hide();
		btnStep3ConfirmOrder_onclick();
	}
}

function googleConversionCode() {

	document.getElementById("googleConversionFrame").src = layoutroot + "/googleconversion.php";
	
}
function btnStep3ConfirmOrder_onclick() {
	
	
	
	var params = new Array()
	params["DocumentGUID"] = getCookie("DocumentGUID"); 
	params["PaymentTypeID"] = cboPaymentTypeID.getSelectedValue();
	params["ShipmentTypeID"] = cboShipmentTypeID.getSelectedValue();
	
	if (chkCopyUserData.getChecked() == false) {

		params["SaveDeliveryAddress"] = "true";	
		params["FirstName"] = txtFirstName.getValue();
		params["Name"] = txtLastName.getValue();
		params["Address"] = txtAddress.getValue();
		params["HouseNumber"] = txtHouseNumber.getValue();
		params["Zip"] = txtZip.getValue();
		params["CountryID"] = cboCountry.getSelectedValue();
		params["City"] = txtCity.getValue();
	
	}
	
	params["Comments"] = txtComments.getValue();
	
	// De klant dient zich akkoord te verklaren met de verkoopvoorwaarden
	if (chkTermsOfService.getChecked() == true || chkTermsOfService2.getChecked() == true) {
		oXmlRequest = new XmlRequest();
		oXmlRequest.functionName = "step3CreateOrderFromDocument"
		oXmlRequest.params = params;	
		oXmlRequest.onsuccess = step3CreateOrderFromDocument_success;
		oXmlRequest.start();
		
		btnStep3ConfirmOrder.showBusy();
	}
	else {
		pnlTermsOfService.show();
	}
	
	function step3CreateOrderFromDocument_success(oXmlResponse) {
		
		btnStep3ConfirmOrder.hideBusy();
	
		if (oXmlResponse.statusCode == "2000") {
			orderGuid = oXmlResponse.data[0]["DocumentGUID"];
			
			if(cboPaymentTypeID.getSelectedValue() == "ogone") {
				paymentOgone(orderGuid);
			}
			else {
				paymentOffline(orderGuid);
			}
		}

	}

}

/**** OGONE ***************************************/
function paymentOgone() {
	scroll(0,0);
	pnlStep3.hide();
	pnlStep3ogone.show();
	document.getElementById("ogone").src = webroot + "/project/apps/paymentogone/php/start.php?guid=" + orderGuid;
}

/**** OFFLINE BETALING ***************************************/
function paymentOffline() {
	pnlStep3.hide();
	pnlStep4.show();
	
	googleConversionCode();
}

function btnContinueShopping_onclick() { window.location = serverroot + webroot + "/shop"; }

function btnStep3To2_onclick() {
	pnlStep3.hide();
	pnlStep2.show();
}

function btnStep1To2_onclick() { step1To2(); }
function btnStep2To1_onclick() { step2To1(); }	
function btnStep2To3_onclick() { step2To3(); }

