var appName = "Store";
var appType = "P";

function Store_onload() {
	// Alle image objecten afgaan en kijken of ze geladen moeten worden
	var params = new Array();
	
	for (i=0;i<page.controls.length; i++) {
		obj = page.controls[i];
		if (obj.getType() == "Picture") {
			if (obj.tag != "" && obj.dataSource != "") {
				params["ProductID"] = obj.tag;
				obj.dataParams = params;
				obj.dataBind();
			}
		}
		
		if (obj.getType() == "ViewMedia") {
			obj.init();
		}
	}
	// Als er een productId is meegegeven, dan
	// zitten we in de details van een product en 
	// moeten we controleren of de combinatie geldig is
	if (window.productId) {
		initProductOptions();
	}

}

function btnToTop_onclick(ev, el) { scroll(0,0); }

// In het shop-sjabloon wordt deze cookie geplaatst
function btnBack_onclick() { 
	previousLocation = getCookie("previousLocation");
	gotourl(previousLocation);
}

function btnShowFullDescr_onclick() {
	new Effect.Appear(pnlFullDescr.containerElementId);  
	pnlDescr.hide();
	btnHideFullDescr.show();
	btnShowFullDescr.hide();
}

function btnHideFullDescr_onclick() {
	pnlDescr.show();  
	pnlFullDescr.hide();
	btnShowFullDescr.show();
	btnHideFullDescr.hide();
}


function btnCart_onclick(ev, el) {
	
	var productId = el.tag;
	var productOptionIds = "";
	var params = new Array();
	
	basketGUID = getCookie("basketGUID");
	
	var params = new Array();
	productOptionIds = "";
	for (i=0; i< page.controls.length; i++) {
		obj = page.controls[i]; 
		if (obj) {
		if (obj.getType() == "DropDownBox" && obj.id.indexOf("cboPO_") == 0){
			if (productOptionIds != "")
				productOptionIds += ";" + obj.tag;
			else
				productOptionIds = obj.tag;
					
			params[obj.tag] = obj.getSelectedValue();
			
		}
		}	
	}	
	
	params["ProductOptionIDs"] = productOptionIds;
	
	params["DocumentGUID"] = getCookie("DocumentGUID");
	params["ProductOptionIDs"] = productOptionIds;
	params["ProductID"] = productId;
	oXmlRequest = new XmlRequest();
	oXmlRequest.functionName = "addProductToBasket"
	oXmlRequest.params = params;	
	oXmlRequest.onsuccess = addProductToBasket_success;
	oXmlRequest.onfailed = "";
	oXmlRequest.start();
		
	function addProductToBasket_success(oXmlResponse) {
		if (oXmlResponse.statusCode != 2000) {
			alert(oXmlResponse.responseText);
		}
		else {
			var documentGuid = oXmlResponse.data[0]["DocumentGUID"];
			
			if (documentGuid == "") {
				alert("Sorry, de creatie van het mandje is mislukt. Probeert u het later opnieuw");
			}
			else {
				setCookie("DocumentGUID", documentGuid, 0);
				
				if (pnlBasket) {
					showBasket();
				}
			}
				
		}
		
	}
			
}

function btnCheckout_onclick() {
	window.location = serverrootssl + webroot + "/mijn-winkelwagentje";
}


function showBasket() {
	pnlBasket.show();
	
	var dataParams  = new Array();
	dataParams["DocumentGUID"] = getCookie("DocumentGUID");
	dgBasketItems.dataSource = "getDocumentByGuid";
	dgBasketItems.dataParams = dataParams;
	dgBasketItems.ondatabind = dgBasketItems_ondatabind;
	dgBasketItems.dataBind();
	
	
	function dgBasketItems_ondatabind(oXmlResponse) {
		//alert(oXmlResponse.responseText);
	}
	
}




function btnContinueShopping_onclick() {
	pnlBasket.hide();
}


function cboProductOption_onchange(ev, el) {
	alert(el.getSelectedValue());
}


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(gls("CertainToDeleteProductFromBasket"));
		
		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) {
			alert(oXmlResponse.message["nl"]);
		}
		else {
			// id ophalen
			var documentGuid = oXmlResponse.data[0]["DocumentGUID"];
			
			if (documentGuid == "") {
				alert("Sorry, de creatie van het mandje is mislukt. Probeert u het later opnieuw");
			}
			else {
				setCookie("DocumentGUID", documentGuid, 0);
				
				if (pnlBasket) {
					dgBasketItems.dataBind();
				}
			}
		}
	}
		
	
	
}




function initProductOptions() {
	if (numberOfProductOptions == 0) {
		return;	
	}
	
	// alle productoptions leegmaken
	cboFirstProductOption = 0;
	for (i=0; i < numberOfProductOptions; i++) {
		
		obj = eval("cboPO_" + i);
		obj.dataClear;
		if (i==0) {
			cboFirstProductOption = obj;
		}
	}
	debug.write("Filling up the first productoption: " + cboFirstProductOption.id);
	
	initProductOption(cboFirstProductOption);
}

function initProductOption(cboProductOption) {
	var params = new Array();
	
	// eerst onzelf leegmaken
	cboProductOption.dataClear();
	
	// eerst de productoptions van die met een lagere volgnr ophalen
	productOptionNumber = parseInt(cboProductOption.id.substring(6));
	productOptionIds = "";
	for (i=0; i < productOptionNumber; i++) {
		obj = eval("cboPO_" + i);
		if (obj) {
			if (productOptionIds != "")
				productOptionIds += ";" + obj.tag;
			else
				productOptionIds = obj.tag;
			
				//alert(obj.getSelectedValue());		
			params[obj.tag] = obj.getSelectedValue();
		}
	
	}
	
	// dan deze dropdown opvullen
	productOptionId = cboProductOption.tag;
	//alert("productOptionId: " + productOptionId);
	params["ProductOptionID"] = productOptionId;
	params["ProductOptionIDs"] = productOptionIds;
	params["ProductID"] = productId;
	
	//alert("params: " + params["ProductOptionID"] + " - " + params["ProductOptionIDs"] + " - " + params["ProductID"]);
	cboProductOption.displayMember = "Name";
	cboProductOption.valueMember = "ProductOptionValueID";
	cboProductOption.dataParams = params;
	cboProductOption.dataSource = "getProductOptionValues";
	cboProductOption.ondatabind = cboProductOption_ondatabind;
	cboProductOption.dataBind();
	
	function cboProductOption_ondatabind(oXmlResponse) {
		//alert("databind voor " + cboProductOption.getSelectedValue());
		
		// volgende productOption initialiseren
		cboNextProductOption = getNextCboProductOption(cboProductOption);
		if (cboNextProductOption != null) {
			initProductOption(cboNextProductOption);	
		}
		
		// als dit de laatste is: dan checken we de combinatie
		productOptionNumber = parseInt(cboProductOption.id.substring(6));
		if (productOptionNumber >= numberOfProductOptions - 1) { // eigenlijk mag het == zijn, maar voor de zekerheid om oneindige loops te vermijden >=
			//alert("combinatie checken");
			checkProductOptionCombination();			
		}
		
		
		
	}

}

// kijkt of er na cboProductOption nog een dropdownbox komt, en geeft die dan terug
function getNextCboProductOption(cboProductOption) {
	productOptionNumber = parseInt(cboProductOption.id.substring(6));
	if (productOptionNumber < numberOfProductOptions-1) {
		// dan is er nog eentje na	
		obj = eval("cboPO_" + (productOptionNumber+1));
		return obj;
	}
	else {
		return null;	
	}
	
	
}


function cboProductOption_onchange(ev, el) {
	//alert("cboProductOption_onchange: " + el.id);	
	cbo = getNextCboProductOption(el);
	if (cbo != null) {
		initProductOption(cbo);	
	}
	else {
		// als er geen volgende meer is -> combinatie checken
		//alert("combinatie checken 2");
		checkProductOptionCombination();		
	}
	
	
	
	
}


function checkProductOptionCombination() {
	var params = new Array();
	productOptionIds = "";
	for (i=0; i < page.controls.length; i++) {
		obj = page.controls[i]; 
		//alert(obj.id);
		if (obj) {
		if (obj.getType() == "DropDownBox" && obj.id.indexOf("cboPO_") == 0){
			var productOptionNumber = obj.id.substring(6);
			var productOptionId = obj.tag;
			//alert(productOptionId);
			if (productOptionIds != "")
				productOptionIds += ";" + productOptionId;
			else
				productOptionIds = productOptionId;
					
			//alert(obj.id + " " + obj.getSelectedValue());
			params[productOptionId] = obj.getSelectedValue();
			//alert(params[obj.tag]); 
		}
		}
	}	

	params["ProductOptionIDs"] = productOptionIds;
	params["ProductID"] = productId;
	oXmlRequest = new XmlRequest();
	oXmlRequest.functionName = "checkProductOptionCombination";
	oXmlRequest.params = params;	
	oXmlRequest.onsuccess = checkProductOptionCombination_success;
	oXmlRequest.start()
	
}

function checkProductOptionCombination_success(oXmlResponse) {
	// 	Dit ook oproepen bij het starten van de pagina (niet alleen bij change van de dropdowns)
	if (oXmlResponse.statusCode == 2000) {
		var row = oXmlResponse.data[0];
		
		if (row["MediaID"] != "") {
			MPreview.mediaId = row["MediaID"];
			MPreview.needsCreate = true;
			MPreview.init();
		}
		
		lblPriceInfo.setValue(row["PriceInfo"]);
		// We 'loopen' door alle objecten op de pagina totdat we de 'In winkelwagentje'-knop tegenkomen
		// en we tonen de knop
		for (i=0; i< page.controls.length; i++) {
			obj = page.controls[i]; 
			if (obj) {
			if (obj.getType() == "image" && obj.id.indexOf("btnCart_") == 0) {
				obj.show();	
			}
			}
		}
		// We controleren of er stockbeheer is
		if (stock == true) {
			// Er is stockbeheer dus we tonen de juiste icoontjes
			if (row["Stock"] > 0) {
				document.getElementById("InStock").style.display = "block";
				document.getElementById("NotInStock").style.display = "none";
				// Moeten we de knop 'In winkelwagentje' verbergen als een product niet op voorraad is
				if (out_of_stock_hide_buy_button == true) {
					// We verbergen de knop want het product is niet op voorraad
					for (i=0; i< page.controls.length; i++) {
						obj = page.controls[i]; 
						if (obj.getType() == "image" && obj.id.indexOf("btnCart_") == 0) {
							obj.show();
						}
					}
				}
			}
			else {
				document.getElementById("InStock").style.display = "none";
				document.getElementById("NotInStock").style.display = "block";
				// Moeten we de knop 'In winkelwagentje' verbergen als een product niet op voorraad is
				if (out_of_stock_hide_buy_button == true) {
					// We tonen de knop want het product is op voorraad
					for (i=0; i< page.controls.length; i++) {
						obj = page.controls[i]; 
						if (obj.getType() == "image" && obj.id.indexOf("btnCart_") == 0) {
							obj.hide();
						}
					}
				}
			}
		}
		else {
			document.getElementById("InStock").style.display = "none";
			document.getElementById("NotInStock").style.display = "none";
		}
	}
	else if (oXmlResponse.statusCode == 4000) {
		// We 'loopen' door alle objecten op de pagina totdat we de 'In winkelwagentje'-knop tegenkomen
		// en we verbergen de knop
		for (i=0; i< page.controls.length; i++) {
			obj = page.controls[i]; 
			if (obj.getType() == "image" && obj.id.indexOf("btnCart_") == 0) {
				obj.hide();
			}
		}
		if (stock == true) {
			document.getElementById("InStock").style.display = "none";
			document.getElementById("NotInStock").style.display = "block";
		}
		else {
			document.getElementById("InStock").style.display = "none";
			document.getElementById("NotInStock").style.display = "none";
		}
		lblPriceInfo.setValue(oXmlResponse.message["nl"]);
	}
	
}


