//MenuLeft code
function initMenu() {
  $('#hoofdcat ul').hide();
  $('#hoofdcat li.active ul').show();

  $('#hoofdcat li a').click(
    function() {
      var checkElement = $(this).next();
      if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
      	return false;
      }
      if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
        $('#hoofdcat ul:visible').parent().removeClass('active');
		$('#hoofdcat ul:visible').slideUp('normal');
		$(this).parent().addClass('active');
        checkElement.slideDown('normal');
        	return false;
        }
      }
    );
}

//ga naar Merk
function goMerk(obj,sorter){
	if (!sorter) sorter = '';
	if (obj.options[obj.selectedIndex].value != 0) window.location.href=obj.options[obj.selectedIndex].value+sorter;
}

//ga naar Categorie
function goSubcategorie(obj,sorter){
	if (!sorter) sorter = '';	
	if (obj.options[obj.selectedIndex].value != 0) window.location.href=obj.options[obj.selectedIndex].value+sorter;
}

//ga naar Pagina
function goPage(obj,sorter){
	var $link = sorter+obj.options[obj.selectedIndex].value;
	/*$link = $link.replace('?page=0','');
	$link = $link.replace('&page=0','');
	alert($link);*/
	if (obj.options[obj.selectedIndex].value != 0) window.location.href=$link;
}

//functies voor de winkelwagen
var lastval = new Array();

function select_check(id){
	if(document.getElementById(id) && document.getElementById(id).value){
		var val = document.getElementById(id).value;
		window.location = val;
	}
}

function CurrencyFormatted(amount,convert)
{
      var i = parseFloat(amount);
      if(isNaN(i)) { i = 0.00; }
      var minus = '';
      if(i < 0) { minus = '-'; }
      i = Math.abs(i);
      i = parseInt((i + .005) * 100);
      i = i / 100;
      
	  
	  if(convert){
		s = new String(i);
      	if(s.indexOf('.') < 0) { s += '.-'; }
		else{
      		if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
		}
     	s = minus + s;		
		//s = s.replace(/\./,',');
	  }else{
			s = i;  
	  }
	  
      return s;
}


var nieuw = '';
var verzendkosten_add = false;
var soortverzendkosten = '';
var uncheckTrapop = true;


function geenKosten(){
	
	// Er moet wel een order zijn	
	if (!document.getElementById('verzendkostendisplay')) {
		document.getElementById("verzendkosten").value = document.getElementById("verzendkosten_korting").value;
		doSerializeMainForm();
		return;
	}
	
	if (checkobject("installatieservice")) {
		document.getElementById('installatieservice').value = 0;
	}
	if (checkobject("kortingdisplay")) {
		document.getElementById('kortingdisplay').innerHTML = 0;
		document.getElementById('korting').value = 0;			
	}
	if(verzendkosten_add){
		// Geen verzendkosten
		if (document.getElementById('verzendkostendisplay')) var huidig  = document.getElementById('verzendkostendisplay').innerHTML;	
		var nieuw	= 0;		
		document.getElementById('verzendkostendisplay').innerHTML = CurrencyFormatted(nieuw,true);
		document.getElementById("verzendkosten").value 			  = document.getElementById('verzendkostendisplay').innerHTML;
		calculateTotal();
		verzendkosten_add = false;
		soortverzendkosten = '';
		document.getElementById('bet-5').style.display = "block";
		document.getElementById('bet-5_label').style.display = "block";
	}else{
		var nieuw	= 0;
		if (document.getElementById('verzendkostendisplay')) document.getElementById('verzendkostendisplay').innerHTML = CurrencyFormatted(nieuw,true);
		if (document.getElementById('verzendkosten') && document.getElementById('verzendkostendisplay')) document.getElementById("verzendkosten").value 			  = document.getElementById('verzendkostendisplay').innerHTML;
		calculateTotal();
		verzendkosten_add = false;
		soortverzendkosten = '';
		document.getElementById('bet-5').style.display = "block";
		document.getElementById('bet-5_label').style.display = "block";		
	}
	doSerializeMainForm();	
}

function showHideBezorgen(){
	document.getElementById("row_bezorgen").style.display 		   = "none";
	document.getElementById("row_bezorgen_belgie").style.display   = "none";
	geenKosten();
	
	//check welk land is geselecteerd
	if($("#form_aflever_land").val()=="nederland"){
		document.getElementById("row_bezorgen").style.display 	   = "";
		if(document.getElementById("rad_bezorgen_belgie").checked){
			document.getElementById("rad_bezorgen_belgie").checked = false;
			document.getElementById("rad_bezorgen").checked 	   = true;
			welKosten("bezorgen");
		}else{
			document.getElementById("rad_bezorgen").checked 		= false;
			document.getElementById("rad_bezorgen_belgie").checked 	= false;
		}
	
	}
	else if($("#form_aflever_land").val()=="belgie"){
		document.getElementById("row_bezorgen_belgie").style.display = "";
		if(document.getElementById("rad_bezorgen").checked){
			document.getElementById("rad_bezorgen").checked 		 = false;
			document.getElementById("rad_bezorgen_belgie").checked 	 = true;
			welKosten("bezorgen_belgie");
		}else{
			document.getElementById("rad_bezorgen").checked 		 = false;
			document.getElementById("rad_bezorgen_belgie").checked 	 = false;
		}
	}
}

function welKosten(soort){ 

	// Er moet wel een order zijn	
	if (!document.getElementById('verzendkostendisplay')) {
		document.getElementById("verzendkosten").value = document.getElementById("verzendkosten_korting").value;
		doSerializeMainForm();
		return;
	}
	
	if (checkobject("installatieservice")) {
		document.getElementById('installatieservice').value = 0;
	}

	if(soort != soortverzendkosten){
		uncheckTrapop = false;
		geenKosten();
		uncheckTrapop = true;		
	}
	if(verzendkosten_add == false){
		// Wel verzendkosten	
		var huidig  = document.getElementById('verzendkostendisplay').innerHTML;
		if(document.getElementById('verzendkosten_korting')){
			nieuw		= Number(document.getElementById("verzendkosten_korting").value.replace(',','.').replace('-','00'));
		}else{
			nieuw		= Number(document.getElementById("orig_verzendkosten_"+soort).value.replace(',','.').replace('-','00'));
		}

		document.getElementById('verzendkostendisplay').innerHTML = CurrencyFormatted(nieuw,true);
		document.getElementById("verzendkosten").value 			  = document.getElementById('verzendkostendisplay').innerHTML;
		calculateTotal();
		soortverzendkosten = soort;
		verzendkosten_add  = true;

		if (checkobject("bet-5")) {
			document.getElementById('bet-2').checked = true;	
		}

		document.getElementById('bet-5').style.display = "none";
		document.getElementById('bet-5_label').style.display = "none";		
	}
	doSerializeMainForm();
}

function updateVerzendkosten(){
	// Er moet wel al een wagentje zijn..
	if (document.getElementById('verzendkostendisplay')){
		nieuw		= Number(document.getElementById("verzendkosten_korting").value.replace(',','.').replace('-','00'));	
		document.getElementById("verzendkosten").value = CurrencyFormatted(nieuw,true);
		document.getElementById('verzendkostendisplay').innerHTML = CurrencyFormatted(nieuw,true);		
		calculateTotal();
	} else {
		document.getElementById("verzendkosten").value = document.getElementById("verzendkosten_korting").value;
		doSerializeMainForm();	
	}
}

function extraKosten(checked,bedrag){
	// Kosten voor service (bedrag)
	if (checkobject("installatieservice")) {
		document.getElementById('installatieservice').value = 0;
	}
	var huidig  = document.getElementById('verzendkostendisplay').innerHTML;
	
	if (checked){
		nieuw	= Number(huidig.replace(',','.').replace('-','00')) + Number(bedrag);
	} else {
		nieuw	= Number(huidig.replace(',','.').replace('-','00')) - Number(bedrag);
	}
	document.getElementById('verzendkostendisplay').innerHTML = CurrencyFormatted(nieuw,true);
	document.getElementById("verzendkosten").value 			  = document.getElementById('verzendkostendisplay').innerHTML;
	calculateTotal();
}

function calculateTotal(){
	var val2 = document.getElementById('verzendkostendisplay').innerHTML;
	var val3 = document.getElementById('subtotaal').innerHTML;
	var val1 = 0;
	val2 = val2.replace(',','.');
	val2 = CurrencyFormatted(val2,false);
	val3 = val3.replace(' ',''); // eventuele duizentallen goed berekeken
	val3 = CurrencyFormatted(val3,false);
	var total = val1+val2+val3;
	document.getElementById('total_prijs').value = total;

	var rawtotal = total;
	total 		 = CurrencyFormatted(total,true);
	
	//total is
	document.getElementById('totaalprijs').innerHTML = total;
		
	if (checkobject("korting")) {
		var installatieservice = document.getElementById('installatieservice').value;		
		if (installatieservice > 0){
			rawtotal = Number(rawtotal) + Number(installatieservice);
			document.getElementById('totaalprijs').innerHTML = CurrencyFormatted(rawtotal,true);
		}
		document.getElementById('totaalprijsnieuwdisplay').innerHTML = CurrencyFormatted(rawtotal,true);
		document.getElementById('totaalprijsnieuw').value = rawtotal;
//		doKortingMath();
	}
	doSerializeMainForm();	
}

function checkobject(obj) {
	if (document.getElementById(obj)) { return true; } else { return false; }
}

function doKortingMath(){
	var installatieservice = document.getElementById('installatieservice').value.replace(',','.').replace('-','00');
	var totaalprijsnieuw   = document.getElementById('totaalprijsnieuw').value.replace(',','.').replace('-','00');	
	var totaalprijsoud     = document.getElementById('total_prijs').value.replace(',','.').replace('-','00');	
	
	var korting = Number(totaalprijsoud) - Number(totaalprijsnieuw) + Number(installatieservice);

	if (korting < 0){
		alert('Negatieve korting\n\n Kortingen worden op 0 gezet');	
		var korting = 0;
		var totaalprijsnieuw = document.getElementById('total_prijs').value;
		document.getElementById('totaalprijsnieuw').value = document.getElementById('total_prijs').value;
	}

	document.getElementById('korting').value = korting;
	document.getElementById('kortingdisplay').innerHTML = '- '+CurrencyFormatted(korting,true);
	document.getElementById('totaalprijsnieuwdisplay').innerHTML = CurrencyFormatted(totaalprijsnieuw,true);
	if (document.getElementById('totaalprijsnieuw').value.indexOf(",,") || document.getElementById('totaalprijsnieuw').value.indexOf("..")){
		document.getElementById('totaalprijsnieuw').value = document.getElementById('totaalprijsnieuw').value.replace('..','.').replace(',,',',');
	}
}	
function doInstallatieMath(){	
	var installatieservice = document.getElementById('installatieservice').value.replace(',','.').replace('-','00');
	var totaalprijsoud = document.getElementById('total_prijs').value.replace(',','.').replace('-','00');	
	var totaalprijsnieuw = document.getElementById('totaalprijsnieuw').value.replace(',','.').replace('-','00');	
	
	var totaalprijsnieuw =  Number(totaalprijsoud) + Number(installatieservice)

	document.getElementById('totaalprijsnieuw').value = totaalprijsnieuw;
	document.getElementById('installatieservicedisplay').innerHTML = CurrencyFormatted(installatieservice,true);	

	document.getElementById('korting').value = 0;
	document.getElementById('kortingdisplay').innerHTML = CurrencyFormatted(0,true);
	document.getElementById('totaalprijsnieuwdisplay').innerHTML = CurrencyFormatted(totaalprijsnieuw,true);


	if (document.getElementById('installatieservice').value.indexOf(",,") || document.getElementById('installatieservice').value.indexOf("..")){
		document.getElementById('installatieservice').value = document.getElementById('installatieservice').value.replace('..','.').replace(',,',',');
	}else{
	 doKortingMath()		
	}
}	

//checkbox garantie
function addGarantie(checked,garantievan,product_id,amount){
	if(checked){
		url = 'https://www.apparatuurtopper.nl/index.php?action=add&type=addGarantie&product_id='+product_id+'&amount='+amount+'&return=true&garantievan='+garantievan;
	}else{
		url = 'https://www.apparatuurtopper.nl/index.php?action=delete&type=removeProduct&product_id='+product_id;
	}
	window.location=url;
}

//alle garanties toevoegen aan winkelwagen
function addGaranties(checked){
	if(checked){
		url = 'https://www.apparatuurtopper.nl/index.php?action=add&type=addGaranties';
	}else{
		url = 'https://www.apparatuurtopper.nl/index.php?action=delete&type=removeGaranties';
	}
	window.location=url;
}

//check het bestelformulier
function check_bestelform(){
	//total is
	var val1 = document.getElementById('totaalprijs').innerHTML;
	val1 	 = val1.replace(',','.');
	val1 	 = CurrencyFormatted(val1,false);
	
	if(val1<0){
		alert('U heeft geen producten toegevoegd aan uw winkelwagen.');
		return false;
	}
	
	if(document.getElementById('voorwaarden')){
		if(!document.getElementById('voorwaarden').checked){
			alert('U dient akkoord te gaan met onze algemene voorwaarden');return false;
		}
	}
	
	
	var formelements = document.getElementById('gegevens_form');	
	var element = '';
	var check_rekening = false;
	var rekening = Array("voornaam","achternaam","adres","nummer","postcode","plaats");
	for(i=0;i<rekening.length;i++){
		if(document.getElementById('rekening_'+rekening[i]) && document.getElementById('rekening_'+rekening[i]).value != ""){
			check_rekening = true;
		}
	}
	
	var error   = false;
	var name;
	var message = "";
	var rExp;
	for(i=0; i<formelements.elements.length; i++)
	{
		element = formelements.elements[i] ;
		if(element.className.search(/check/) > -1){
		element.className = "check";
		
		if(element.type == "text"){
			name = element.name;
			if(name.search(/aflever_/) > -1 || (check_rekening && name.search(/rekening_/)> -1 )){
				
					if(!element.value || element.value=="" || element.value==" "){
						element.className = "error check";
						error = true;	
					}
					else if(name.search(/email/)>-1){					
						 var email = element.value.toLowerCase();
						 rExp = /^[a-z0-9\._%-]{2,}@[a-z0-9\._%-]{2,}\.[a-z]{2,4}$/;
						 if (!rExp.exec(email)) {
						  message += '- Controleer het veld "Email"\n';
						  element.className = "error check";
						  error = true;
						 }else{
							 element.value = email;
						 }
					}
					else if(name.search(/postcode/)>-1){
						 var postcode = element.value.toUpperCase().split(' ').join('');
						 rExp = /^[1-9]\d{3}[A-Z]{2}$/;
						 if (!rExp.exec(postcode)) {
						  message += '- Vul de postcode in met notatie 1234AB\n';
						  element.className = "error check";
						  error = true;
						 }else{
							 element.value = postcode;	 
						}
					}
				}
			}
		}
	}
	
	if(error){
		if(message!=""){
			alert('U heeft niet alle gegevens correct ingevoerd.\n' + message);	
		}
		else{
			alert('U heeft niet alle gegevens correct ingevoerd.\n');		
		}		
	}
	else{
		formelements.submit();	
	}
}

//contactformulier checken
//check het bestelformulier
function check_contactform(formid){	
	var formelements = document.getElementById(formid);	
	var element = '';	
	var error   = false;
	var name;
	var message = "";
	var rExp;
	for(i=0; i<formelements.elements.length; i++)
	{
		element = formelements.elements[i] ;
		if(element.className.search(/check/) > -1){
			element.className = "check";
			if(element.type == "text" || element.type == "select-one"){
				name = element.name;
				if(!element.value || element.value=="" || element.value==" "){
					element.className = "error check";
					error = true;	
				}
				else if(name.search(/email/)>-1){					
					 var email = element.value.toLowerCase();
					 rExp = /^[a-z0-9\._%-]{2,}@[a-z0-9\._%-]{2,}\.[a-z]{2,4}$/;
					 if (!rExp.exec(email)) {
					  message += '- Controleer het veld "Email"\n';
					  element.className = "error check";
					  error = true;
					 }else{
						 element.value = email;
					 }
				}
				else if(name.search(/postcode/)>-1){
					 var postcode = element.value.toUpperCase().split(' ').join('');
					 rExp = /^[1-9]\d{3}[A-Z]{2}$/;
					 if (!rExp.exec(postcode)) {
					  message += '- Vul de postcode in met notatie 1234AB\n';
					  element.className = "error check";
					  error = true;
					 }else{
						 element.value = postcode;	 
					}
				}
			}
			else if(element.type == "textarea"){
				 if(!element.value || element.value=="" || element.value==" "){
					 error = true;
					 message += '- Controleer het veld "opmerkingen"\n';
				 }
			}
		}
	}
	
	
	if(error){
		if(message!=""){
			alert('U heeft niet alle gegevens correct ingevoerd.\n' + message);	
		}
		else{
			alert('U heeft niet alle gegevens correct ingevoerd.\n');		
		}		
	}
	else{
		formelements.submit();	
	}
}

function extraKostenDiv(){
	if(document.getElementById('bezorg_div')){
	document.getElementById('bezorg_div').style.display = "block";
	if(document.getElementById('rad_afhalen').checked==true){
		document.getElementById('bezorg_div').style.display = "none";
	}
	}
}

function showRekeningadres(bool){
	document.getElementById('rekeningadres').style.display = "none";
	if(bool){
		document.getElementById('rekeningadres').style.display = "block";
	}
}

//standaard formulier check
function check(which, verplicht, error, emailerror){
	var empty = false;
	for (i=0;i<which.length;i++){
		var veld=which.elements[i];
		
		if(veld.type=="text"){
			veld.className = "";
		}
		for (j=0;j<verplicht.length;j++){
			if(veld.type=="text" && veld.name==verplicht[j][0] && veld.value==''){
				veld.className = "error check";
				empty = true;
			}
			if(veld.type=="textarea" && veld.name==verplicht[j][0] && veld.value==''){
				veld.className = "error check";
				empty = true;
			}
			if(veld.type=="checkbox" && veld.name==verplicht[j][0] && !veld.checked && verplicht[j][1]=='voorwaarden'){
				veld.className = "error check";
				alert("U moet wel akkoord gaan met de voorwaarden");
				return false;
			}
			if(veld.type=="text" && veld.value!='' && veld.name=='postcode' && verplicht[j][1]=='postcode') {
				postcode = veld.value.toUpperCase();
				veld.value = postcode;
				rExp = /^[1-9]{1}[0-9]{3}[A-Z]{2}$/; // van 1000AA tot 8999ZZ - Let op, geen spatie!
				if (!rExp.exec(postcode)) {
					alert('U heeft het veld postcode niet juist ingevuld.\nVul de postcode in met notatie 1234AB');
					return false;
				}
			}

			if(veld.type=="text" && veld.value!='' && veld.name=='email' && verplicht[j][1]=='email'){
				// E-mail check!
				var email=/^[_\.0-9a-z-]+\@([0-9a-z][0-9a-z-]*\.)+([a-z]{2,4})+$/i
				if(!(email.test(veld.value))){
					veld.style.background="#FF818C";
					alert("Geen geldig emailadres");
					return false;
				}
			}
		}
	}
	if(empty){
		alert("Niet alle velden zijn ingevuld.");
		return false;
	} else {
		document.getElementById("spamcheck").value = "GEEN_SPAM";
		return true;
	}
}

var checkedPostcode,checkedPostcode2;
$(document).ready(function() {
	$('#form_aflever_postcode, #form_aflever_nummer').blur(function() {
		if($("#form_aflever_land").val()=="nederland"){
			var ingevuldepostcode   = $("#form_aflever_postcode").val().replace(' ', '').toUpperCase();
			$("#form_aflever_postcode").val(ingevuldepostcode);
			var ingevuldehuisnummer = $("#form_aflever_nummer").val();
			if (checkedPostcode!=ingevuldepostcode && ingevuldehuisnummer.length > 0 && VerifyPostcode_check(ingevuldepostcode)){
				checkedPostcode = ingevuldepostcode;
				getStraatPlaats("form_aflever_postcode","form_aflever_nummer","form_aflever_adres","form_aflever_plaats");
			}
		}
	});

	$('#form_rekening_postcode, #form_rekening_nummer').blur(function(){		
		if($("#form_rekening_land").val()=="nederland"){
			var ingevuldepostcode 	= $("#form_rekening_postcode").val().replace(' ', '').toUpperCase();
			$("#form_rekening_postcode").val(ingevuldepostcode);
			var	ingevuldehuisnummer = $("#form_rekening_nummer").val();
			if (checkedPostcode2!=ingevuldepostcode && ingevuldehuisnummer.length > 0 && VerifyPostcode_check(ingevuldepostcode)){
				checkedPostcode2 = ingevuldepostcode;
				getStraatPlaats("form_rekening_postcode","form_rekening_nummer","form_rekening_adres","form_rekening_plaats");
			}
		}
	});
	$(".meestbekekenproduct").click(function(){
		window.location = $(this).find('a').attr("href");
		return false;	
	});
});





function getStraatPlaats(postcodeField,huisnummerField,returnAdres,returnPlaats){
	var postcode 		= $("#"+postcodeField).val();
	var huisnummer		= $("#"+huisnummerField).val();
	var proxy 			= '/index.php?action=ajax&type=getApiRequest';
	
	$.post(proxy, {'type':"getStraatPlaats", 'postcode': postcode, 'huisnummer': huisnummer},
	function(data){
		if (data != 'no'){
			var element = data.split(',');
			$("#"+returnAdres).val(element[0]);
			$("#"+returnPlaats).val(element[1]);
		}
	});
}

function VerifyPostcode_check(str) {
	//str=str.replace(/(^\s*)|(\s*$)/g, "");
	rExp = /^[1-9]{1}[0-9]{3}[A-Z]{2}$/; // van 1000AA tot 8999ZZ - Let op, geen spatie!
	if (!rExp.exec(str)) {
		return false;
	} else {
		return true;
	}
}


function doSerializeMainForm(){
//	$("#serializedform").val($("#gegevens_form").serialize());
	$.ajax({   
			type : 'POST',
			url : '/index.php?action=add&type=addSerializedform',
			dataType : 'json',
			data: {
				serializedform: $("#gegevens_form").serialize()
			},
			success: function(data) {
				return
			},
			error: function(XMLHttpRequest, textStatus, errorThrown) {
				return
			}
		});

}
