/**
 * Overloaded cart update function used to handle updates in the big cart div.
 * Changes in the shoppingcart will cause the big cart to be removed, updated
 * and displayed again if it was open before updating.
 */
function overloadedCart () {
	if (cart.req.readyState == 4 && cart.req.status == 200) {
		var reopen = false;
		var bestellijst = document.getElementById("bigcart");

		// Is bigcart div available?
		if (bestellijst) {
			// Should it be reopened?
			if (bestellijst.style.display == "block") reopen = true;
			// Remove old bigcart
			bestellijst.parentNode.removeChild(bestellijst);
		}
		
		// Write updated cart and bigcart
		document.getElementById ("shop_cart_placeholder").innerHTML = cart.req.responseText;

		var bigCart = document.getElementById("bigcart2");
		bigCart.id = 'bigcart';
		//bigCart.parentNode.removeChild (bigCart);
		document.body.appendChild(bigCart);
		
		// Reopen is needed
		if (reopen) openPopup ("bigcart");
	}
}


/**
 * Show or hide a div.
 */
function enablAltAddress (divId, isVisible) {
	if (isVisible)
		document.getElementById (divId).style.display = "block";
	else {
		var inputs = document.getElementById (divId).getElementsByTagName ("input");
		
		for (var i = 0; i < inputs.length; i ++) {
			inputs[i].value = "";
		}
		
		document.getElementById (divId).style.display = "none";
	}
}


/**
 * Submit the form with the given id to altUrl
 */
function checkoutPrevious () {
	if (document.getElementById ("statusid")) {
		document.getElementById ("statusid").value = "0";
	} else {
		var element = document.createElement ("input");
		element.id = "statusid";
		element.name = "staid";
		element.value = "0";
		element.type = "hidden";
		document.getElementById ("checkout").appendChild (element);
	}
	if (document.getElementById ("callback")) {
		document.getElementById ("callback").value = "";
	}
	if (document.getElementById ("checkout").cartaction)
		document.getElementById ("checkout").cartaction.value = "";
	document.getElementById ("checkout").checkoutstep.value = document.getElementById ("previousstep").value;
	document.getElementById ("checkout").submit ();
}

/**
 * Change shop_search form action and post to search page.
 */
function submitSearch () {
	if(document.getElementById ("searchquery").value=="zoek op trefwoord"){document.getElementById ("searchquery").value="";}
	document.getElementById ("searchquery").value = document.getElementById ("searchquery").value.replace (/[^a-zA-Z0-9\s]/g, "");
	
	var terms = document.getElementById ("searchquery").value
	
	document.getElementById ("searchform").action = "/" + terms + ".24.zoeken.html";
	document.getElementById ("searchform").submit ();
}


/**
 * Switch product variation divs.
 *
 * Input: select - The select element which selects a variation.
 */
function switchVariation (select) {
	var options = select.getElementsByTagName ("option");

	for (var i = 0; i < options.length; i ++) {
		if (select.selectedIndex == i) {
			document.getElementById ("productdescimage_" + options[i].value).className = "tonen";
			if (document.getElementById("productimagelink_" + options[i].value)) {
				document.getElementById("productimagelink_" + options[i].value).className = "tonen";
			}
			document.getElementById("description_" + options[i].value).className = "tonen";
			document.getElementById ("price_"        + options[i].value).className = "tonen";
			if (document.getElementById("specification_" + options[i].value)) {
				document.getElementById("specification_" + options[i].value).className = "tonen";
			}
			document.getElementById ("btnorder_"      + options[i].value).className = "tonen";
		} else {
			document.getElementById("productdescimage_" + options[i].value).className = "verbergen";
			if (document.getElementById("productimagelink_" + options[i].value)) {
				document.getElementById("productimagelink_" + options[i].value).className = "verbergen";
			}
			document.getElementById ("description_"  + options[i].value).className = "verbergen";
			document.getElementById ("price_"        + options[i].value).className = "verbergen";
			if (document.getElementById("specification_" + options[i].value)) {
				document.getElementById("specification_" + options[i].value).className = "verbergen";
			}
			document.getElementById ("btnorder_"      + options[i].value).className = "verbergen";
		}
	}
}


/**
 * Toon een popup (div met id <element>). De popup wordt gecentreerd op de pagina,
 * achter de popup wordt een div met id hiderdiv geplaatst die voorkomt dat de
 * achterliggende pagina kan worden gebruikt zolang de popup open staat.
 */
function openPopup (element) {
	document.getElementById ("hiderdiv").style.height  = document.documentElement.scrollHeight + "px";
	document.getElementById ("hiderdiv").style.display = "block";
	document.getElementById(element).style.display = "block";

    // Sluiten actie kopieren naar hider div onclick.
	var arr = document.getElementById(element).getElementsByTagName("img");
	for (var i = 0; i < arr.length; i++) {
	    if (arr[i].onclick != undefined && arr[i].attributes["onclick"].value.indexOf("closePopup") > -1) {
	        document.getElementById("hiderdiv").onclick = arr[i].onclick;
	        break;
	    }
	}
	
	// Foto size ophalen en popup breedte aanpassen
	var width = 500 + "px";
	if (document.getElementById(element).getElementsByTagName("table")[0].className == "popup") {
		width = "auto"; 
	}
	
	/*var imgs = document.getElementById (element).getElementsByTagName ("img");
	for (var i = 0; i < imgs.length; i ++) {
	   if (imgs[i].className == "productimage") {
	       width = imgs[i].clientWidth + 80;
	       break;
       }
    }*/
    
    document.getElementById (element).style.width  = width;
	
	// ScrollY positie ophalen
	var scrollY = 0;
	if (typeof (window.pageYOffset) == 'number')
	    scrollY = window.pageYOffset;
	else if (document.body && document.body.scrollTop)
	    scrollY = document.body.scrollTop;
	else if (document.documentElement && document.documentElement.scrollTop)
	    scrollY = document.documentElement.scrollTop;
	
	// Hoogte van zichtbaar deel van pagina ophalen
	var winHeight = 0;
	if (typeof (window.innerWidth) == 'number')
	    winHeight = window.innerHeight;
	else if (document.documentElement && document.documentElement.clientHeight)
	    winHeight = document.documentElement.clientHeight;	
	
	// De popup centreren
	var x = document.body.clientWidth / 2 - document.getElementById (element).clientWidth / 2;
	var y = scrollY + winHeight / 2 - document.getElementById (element).clientHeight / 2;
	
	document.getElementById (element).style.left = x + "px";
	document.getElementById (element).style.top  = y + "px";
}

/**
 * Onclick kleine img, grote img vervangen.
 */
function switchImg(variatie, bron) {
	if (variatie == 'novar') {
		var img = document.getElementById('popup_productimage');
	}
	else {
		var img = document.getElementById('popup_productimage_' + variatie);
	}
	img.src = bron;
}

/**
* De geopende popup (div met id <element>) sluiten.
*/
function closePopup (element) {
	document.getElementById (element).style.display = "none";
	document.getElementById ("hiderdiv").style.display = "none";
}


/**
 * Show one the div belonging to a tab from the tabPanel div.
 */
function showTab (panelId, tabId, deze) {
	//alle tabs donkere background image geven.
	var tabs = document.getElementById('tabs_table').getElementsByTagName('td')
	for(var i=0; i<tabs.length; i++){
		if (tabs[i].className=='tabs_omschrijving') {
			newImage = "url(/sites/_sitetemplate/6/images/middentab_omschr.png)";
			tabs[i].style.backgroundImage=newImage;
		}
		else if (tabs[i].className=='tabs_specificaties') {
			newImage = "url(/sites/_sitetemplate/6/images/middentab_omschr.png)";
			tabs[i].style.backgroundImage=newImage;
		}
		else if (tabs[i].className=='tabs_reviews') {
			newImage = "url(/sites/_sitetemplate/6/images/middentab_review.png)";
			tabs[i].style.backgroundImage=newImage;
		}
		else if (tabs[i].className=='tabs_tellafriend') {
			newImage = "url(/sites/_sitetemplate/6/images/middentab_omschr.png)";
			tabs[i].style.backgroundImage=newImage;
		}
		tabs[i].style.color='#ffffff';
	}
	if (document.getElementById('tabs_table_r')) {
		var tabrechts = document.getElementById('tabs_table_r').getElementsByTagName('td')[0];
		newImage = "url(/sites/_sitetemplate/6/images/middentab_bijpassend.png)";
		tabrechts.style.backgroundImage=newImage;
		tabrechts.style.color='#ffffff';
	}
	
	//deze tab lichtere background image geven.
	if (deze.className=='tabs_omschrijving') {
		newImage = "url(/sites/_sitetemplate/6/images/middentab_omschr_aan.png)";
	}
	else if (deze.className=='tabs_specificaties') {
		newImage = "url(/sites/_sitetemplate/6/images/middentab_omschr_aan.png)";
	}
	else if (deze.className=='tabs_reviews') {
		newImage = "url(/sites/_sitetemplate/6/images/middentab_review_aan.png)";
	}
	else if (deze.className=='tabs_tellafriend') {
		newImage = "url(/sites/_sitetemplate/6/images/middentab_omschr_aan.png)";
	}
	else if (deze.className=='tabs_bijpassend') {
		newImage = "url(/sites/_sitetemplate/6/images/middentab_bijpassend_aan.png)";
	}
	deze.style.backgroundImage=newImage;
	deze.style.color='#000000';
	
	var panel = document.getElementById (panelId);
	
	for (var i = 0; i < panel.childNodes.length; i ++) {
		var tag = panel.childNodes[i].nodeName;

	//alert('test2');
		
		if (tag.toUpperCase () == "DIV") {
			if (panel.childNodes[i].id == tabId) {
				panel.childNodes[i].style.display = "block";
				panel.childNodes[i].width = 528 + "px";
				//panel.childNodes[i].style.className = "tonen";
			} else {
				panel.childNodes[i].style.display = "none";
				panel.childNodes[i].width = 528 + "px";
				//panel.childNodes[i].style.className = "verbergen";
			}
		}
	}
}


/*****************************************************************************
 * Menu functies
 ****************************************************************************/

var menu_props  = new Array ();
var menu_scroll = new Array ();

/**
 * Menu status initialiseren bij het inladen van de pagina.
 */
function initMenu () {
	var menu = document.getElementById ("shop_menu2");
	var subMenus = menu.getElementsByTagName ("div");
	
	var cookies = document.cookie.split (";");
	var cookieValue = "";

	// Het juiste cookie zoeken
	for (var i = 0; i < cookies.length; i ++) {
		if (cookies[i].indexOf ("ParadeShopMenus=") == 1) {
			cookieValue = cookies[i].split("=")[1];
			break;
		}
	}
	if (cookieValue != "") {
		// Indien het cookie bestaat, splitsen op menu
		var menus = cookieValue.split (".");
		for (var i = 0; i < menus.length - 1; i ++) {
			// Voor elk menu de status ophalen
			var menuId = menus[i].split (":")[0];
			var menuUp = menus[i].split (":")[1];
			document.getElementById (menuId).style.display="block";
			if (menuUp == 0) {
				// Menu dicht klappen
				var tekst;
				if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Engels") {
					tekst = "Show Menu";
				}
				else if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Duits") {
					tekst = "Men&#252; zeigen";
				}
				else if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Frans") {
					tekst = "Montrer menu";
				}
				else {
					tekst = "Menu tonen";
				}
				menu_props[menuId] = document.getElementById(menuId).clientHeight; //+ 32
				document.getElementById (menuId).style.height   = "0px";
				document.getElementById (menuId).style.overflow = "hidden";
				document.getElementById (menuId + "_control").src = "/sites/_sitetemplate/6/images/bullet_down.gif";
				document.getElementById (menuId + "_control").alt = "Menu tonen";
			}
		}
		//alert(menu_props.length);
	}
	else{
		for(var i=0; i<subMenus.length; i++){
			var tekst;
			if (i < 3) {
				if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Engels") {
					tekst = "Hide Menu";
				}
				else if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Duits") {
					tekst = "Men&#252; verbergen";
				}
				else if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Frans") {
					tekst = "Retenir menu";
				}
				else {
					tekst = "Menu verbergen";
				}
				subMenus[i].style.display = "block";
				menu_props[subMenus[i].id] = subMenus[i].clientHeight;
				subMenus[i].style.overflow = "hidden";
				document.getElementById (subMenus[i].id + "_control").src = "/sites/_sitetemplate/6/images/bullet_up.gif";
				document.getElementById (subMenus[i].id + "_control").alt = tekst;
			}
			else {
				if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Engels") {
					tekst = "Show Menu";
				}
				else if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Duits") {
					tekst = "Men&#252; zeigen";
				}
				else if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Frans") {
					tekst = "Montrer menu";
				}
				else {
					tekst = "Menu tonen";
				}
				subMenus[i].style.display = "block";
				menu_props[subMenus[i].id] = subMenus[i].clientHeight; //+ 32
				subMenus[i].style.height   = "0px";
				subMenus[i].style.overflow = "hidden";
				document.getElementById (subMenus[i].id + "_control").src = "/sites/_sitetemplate/6/images/bullet_down.gif";
				document.getElementById (subMenus[i].id + "_control").alt = tekst;
			}
		}
	}
}


/**
 * Een submenu met id <element> open of dichtklappen.
 */
function openCloseMenu (element) {

	var menu = document.getElementById (element);
	
	// Niet sliden als er al geslide wordt
	if (menu_scroll[element]) return;

	// Indien huidige grootte van menu niet bekend deze ophalen
	if (!menu_props[element]) {
		try{
			menu_props[element] = menu.clientHeight;
			menu.style.height   = menu_props[element] + "px";
			menu.style.overflow = "hidden";
		}
		catch(e){
			// niks doen
		}
	}
	// Sliden locken
	menu_scroll[element] = true;
	
	try{
		// Menu open of dicht klappen
		if (menu.clientHeight > 0){
			slideElement (element, 0, true);
		}
		else{
			slideElement (element, menu_props[element], false);
		}
	}
	catch(e){
		// niks doen
	}
}


/**
 * Deze functie zorgt voor het dadwerkelijk werken van de openCloseMenu methode.
 */
function slideElement (element, to, up) {
	var size = document.getElementById (element).clientHeight;
	
	if (up) {
		// Menu dichtklappen
		if (size > menu_props[element] * .25) {
			size -= 10;
		} else if (size > menu_props[element] * .1) {
			size -= 5;
		} else {
			size --;
		}
	} else {
		// Menu open klappen
		if (size < menu_props[element] * .75) {
			size += 10;
		} else if (size < menu_props[element] * .9) {
			size += 5;
		} else {
			size ++;
		}
	}
	// Nieuwe grootte instellen
	if(size<0){size=0};
	document.getElementById (element).style.height = size + "px";
	
	if ((up && size > to) || (!up && size < to)) { 
		// Doorgaan met sliden tot maximum berijkt is
		setTimeout ("slideElement ('" + element + "', " + to + ", " + up + ")", 50);
	} else {
		// Controls wijzigen en sliden vrij geven
		var tekst;
		if (up) {
			if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Engels") {
				tekst = "Show Menu";
			}
			else if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Duits") {
				tekst = "Men&#252; zeigen";
			}
			else if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Frans") {
				tekst = "Montrer menu";
			}
			else {
				tekst = "Menu tonen";
			}
			document.getElementById (element + "_control").src = "/sites/_sitetemplate/6/images/bullet_down.gif";
			document.getElementById (element + "_control").alt = tekst;
			document.getElementById (element).style.height = "0px";
		} else {
			if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Engels") {
				tekst = "Hide Menu";
			}
			else if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Duits") {
				tekst = "Men&#252; verbergen";
			}
			else if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Frans") {
				tekst = "Retenir menu";
			}
			else {
				tekst = "Menu verbergen";
			}
			document.getElementById (element + "_control").src = "/sites/_sitetemplate/6/images/bullet_up.gif";
			document.getElementById (element + "_control").alt = tekst;
			document.getElementById (element).style.height = menu_props[element] + "px";
		}
		
		menu_scroll[element] = false;
		updateMenuCookie ();
	}
}


/**
 * Cookie opslaan waarin de menu status wordt opgeslagen zodat deze blijft 
 * gelden over meerdere pagina's.
 */
function updateMenuCookie () {
	var menu = document.getElementById ("shop_menu2");
	var subMenus = menu.getElementsByTagName ("div");
	var value = "";
	
	for (var i = 0; i < subMenus.length; i ++) {
		var menuId = subMenus[i].id;
		
		value += menuId + ":";
		if (document.getElementById (menuId).clientHeight == 0) {
			// Menu is ingeklapt
			value += "0.";
		} else {
			// Menu is uitgeklapt
			value += "1.";
		}
	}
	document.cookie = "ParadeShopMenus=" + value + ";;";
}


function generateOrderId () {
	var orderID = "1";
	var mydate = new Date();
	var tv = mydate.getYear() % 10;
	orderID = orderID + tv;
	tv = (mydate.getMonth() * 31) + mydate.getDate();
	orderID = orderID + ((tv < 10) ? '0' : '') + ((tv < 100) ? '0' : '') + tv;
	tv = (mydate.getHours() * 3600) + (mydate.getMinutes() * 60) + mydate.getSeconds();
	orderID = orderID + ((tv < 10) ? '0' : '') + ((tv < 100) ? '0' : '') + ((tv < 1000) ? '0' : '') + ((tv < 10000) ? '0' : '') + tv;
	tvplus = Math.round(Math.random() * 9);
	orderID += ((tvplus + 1) % 10)

	document.getElementById ("orderID").value = orderID;
	return true;
}


function idealRecover () {
	var url = window.location.toString ();
	                                                                                         
	document.getElementById ("totalprice").value = url.split("totalprice=")[1].split("&")[0];
}


function setNavigationCookie () {
	var pees = document.getElementsByTagName ("p");
	var value = "";
	
	for (var i = 0; i < pees.length; i ++) {
		if (pees[i].className == "breadcrumb") {
			var aas = pees[i].getElementsByTagName ("a");

			for (var j = 0; j < aas.length; j ++) {
				value += aas[j].href + "^" + aas[j].innerHTML + "^";
			}
			document.cookie = "ParadeShopNavigation=" + value + ";;";
			break;
		}
	}
}


function getNavigationCookie () {
	var cookies = document.cookie.split (";");
	var cookieValue = "";

	// Het juiste cookie zoeken
	for (var i = 0; i < cookies.length; i ++) {
		if (cookies[i].indexOf ("ParadeShopNavigation=") == 1) {
			cookieValue = cookies[i].split("=")[1];
			break;
		}
	}
	
	var pees = document.getElementsByTagName ("p");
	
	for (var i = 0; i < pees.length; i ++) {
		if (pees[i].className == "breadcrumb") {
			var cData = cookieValue.split ("^");
			var oldShit = pees[i].innerHTML;
			var tekst;
			if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Engels") {
				tekst = "You are here: ";
			}
			else if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Duits") {
				tekst = "Sie sind hier: ";
			}
			else if (document.getElementById("gekozenkleur").getElementsByTagName("input")[2].value == "Frans") {
				tekst = "Vous &#234;tre ici: ";
			}
			else {
				tekst = "U bent hier: ";
			}
			pees[i].innerHTML = tekst;
			for (var j = 0; j < cData.length - 1; j += 2) {
				pees[i].innerHTML += "<a href=\"" + cData[j] + "\"/>" + cData[j + 1] + "</a>&#160;&#187;&#160;";
			}
			pees[i].innerHTML += oldShit;
		}
	}
}


function toggleShipmentInputs (active) {
	var candidates = document.getElementsByTagName ("div");
	
	for (var i = 0; i < candidates.length; i ++) {
		if (candidates[i].id.indexOf ("shipmentData_") != -1) {
			if (candidates[i].id.split ("_")[1] == active) {
				candidates[i].className = "tonen";
			} else {
				candidates[i].className = "verbergen";
			}
		}
	}
}


function togglePaymentInputs (active) {
	var candidates = document.getElementsByTagName ("div");
	
	for (var i = 0; i < candidates.length; i ++) {
		if (candidates[i].id.indexOf ("paymentData_") != -1) {
			if (candidates[i].id.split ("_")[1] == active) {
				candidates[i].className = "tonen";
			} else {
				candidates[i].className = "verbergen";
			}
		}
	}
}


function autoCheckPaymentForm () {
	var selected = -1;
	var methods = document.getElementsByName ("payid");
	var err = "";
	var hasEnabledElements = false;
	
	for (var i = 0; i < methods.length; i ++) {
		if (!methods[i].disabled) hasEnabledElements = true;
		if (methods[i].checked) selected = methods[i].value;
	}
	
	if (!hasEnabledElements) return true;
	
	if (selected == -1) {
		alert ("U kunt niet verder gaan met bestellen vanwegen de volgend fout(en):\n\n* U hebt geen betaalmethode geselecteerd.");
		return false;
	}
	
	if (document.getElementById ("paymentData_" + selected)) {
		var formElements = document.getElementById ("paymentData_" + selected).getElementsByTagName ("input");
	
		for (var i = 0; i < formElements.length; i ++) {
			if (formElements[i].name) {
				var controls = formElements[i].name.split (":");
				if (controls[1] == "user") {
					if (controls[3] == "must" && formElements[i].value == "") {
						err += "* U dient het veld " + controls[0] + " in te vullen.\n";
					}
					if (formElements[i].value != "") {
						if (controls[2] == "text") {
						
						} else if (controls[2] == "bankaccount" && !isElfProef (formElements[i])) {
							err += "* Het bankrekening nummer wat u hebt ingevuld is ongeldig.";
						}
					}
				}
			}
		}
	}
	
	if (err != "") {
		alert ("U kunt niet verder gaan met bestellen vanwegen de volgend fout(en):\n\n" + err);
		return false;
	} else {
		return true;
	}
}


function isElfProef (element) {
    var value = element.value;
	var totaal = 0;

	value = value.replace (/\./g, "");
	value = value.replace (/\s/g, "");
	element.value = value;

	if (value.length == 7) return true; // Giro nummer
	if (value.length < 9) return false;

	for (var i = 0; i < value.length; i ++)
		totaal += value.charAt (i) * (value.length - i);

	if (totaal % 11 != 0)
		return false;
	else
		return true;
}
