var prijsOmheining = 0;
var prijsHek = 0;
var prijsLongeercirkel = 0;
var prijsBuitenbak = 0;

function checkTheForm(what) {
  var form = document.offerteForm;
  switch (form._lastview.value) {
  case 'omheining':
    if (form['ligger_aantal'].value==0)
        {
        alert('U moet het aantal liggers selecteren!');
        var div = document.getElementById('block_ligger_aantal');
        div.focus();
        div.scrollIntoView(false);
        return false;
        }
    if (form['paal_afstand'].value==0)
        {
        alert('U moet de paal-afstand selecteren!');
        var div = document.getElementById('block_paal_afstand');
        div.focus();
        div.scrollIntoView(false);
        return false;
        }

   if (form['aantal_meters'].value=='0' || form['aantal_meters'].value=='') {
        alert('U heeft het aantal meters niet ingevuld!');
        form['aantal_meters'].focus();        
        return false;
        }
    if (isNaN(form['aantal_meters'].value))
        {
        alert('Aantal meters moet een getal zijn!');
        form['aantal_meters'].focus();        
        return false;
        }
    break;
    
    
    
  case 'landhekken (omheining)':
  case 'landhekken (buitenbak)':
  case 'landhekken (longeercirkel)':
    
    var aantal_hekken = form['aantal_hekken'].value;
    for (var i=1;i<=aantal_hekken;i++) {
        var vorm = form['vorm_landhek_'+i];
        if (vorm.value=="0") {
            alert('Vorm van de poort is niet geselecteerd!');
            var div = document.getElementById('block_vorm_landhek_'+i);
            div.focus();
            div.scrollIntoView(false);            
            return false;
            }
    }
    break;
    
    
    
  case 'buitenbak':
    if (form['ligger_aantal'].value==0)
        {
        alert('U moet het aantal liggers selecteren!');
        var div = document.getElementById('block_ligger_aantal');
        div.focus();
        div.scrollIntoView(false);
        return false;
        }
    if (form['paal_afstand'].value==0)
        {
        alert('U moet de paal-afstand selecteren!');
        var div = document.getElementById('block_paal_afstand');
        div.focus();
        div.scrollIntoView(false);
        return false;
        }
   if (form['breedte_meters'].value=='0' || form['breedte_meters'].value=='') {
        alert('U heeft geen breedte ingevuld!');
        form['breedte_meters'].focus();
        return false;
        }
    if (isNaN(form['breedte_meters'].value))
        {
        alert('Breedte moet een getal zijn!');
        form['breedte_meters'].focus();
        return false;
        }
   if (form['lengte_meters'].value=='0' || form['lengte_meters'].value=='') {
        alert('U heeft geen lengte ingevuld!');
        form['lengte_meters'].focus();
        return false;
        }
    if (isNaN(form['lengte_meters'].value))
        {
        alert('Lengte moet een getal zijn!');
        form['lengte_meters'].focus();
        return false;
        }
    break;
    
  case 'longeercirkel':
    if (form['ligger_aantal'].value==0)
        {
        alert('U moet het aantal liggers selecteren!');
        var div = document.getElementById('block_ligger_aantal');
        div.focus();
        div.scrollIntoView(false);
        return false;
        }
    if (form['paal_afstand'].value==0)
        {
        alert('U moet de paal-afstand selecteren!');
        var div = document.getElementById('block_paal_afstand');
        div.focus();
        div.scrollIntoView(false);
        return false;
        }

   if (form['doorsnede'].value=='0' || form['doorsnede'].value=='') {
        alert('U heeft geen doorsnede ingevuld!');
        return false;
        }
    if (isNaN(form['doorsnede'].value))
        {
        alert('Doorsnede moet een getal zijn!');
        return false;
        }

    break;
    
    
    
  case 'overig':
    for (var i=0;i<form.length;i++) {
        var fieldname = form[i].name;
        if (fieldname!='') {
            if (fieldname.substr(0,1)!='_') {
                if (isNaN(form[fieldname].value))
                    {
                    alert(fieldname+' moet een getal zijn!');
                    return false;
                    }    
            }
        }
    }
    break;
  case 'keuzelijst':
    if (!(form['omheining'].checked || form['landhekken (omheining)'].checked || form['buitenbak'].checked || form['landhekken (buitenbak)'].checked || form['longeercirkel'].checked || form['landhekken (longeercirkel)'].checked || form['overig'].checked ))
        {
        alert('U heeft geen selectie gemaakt!');
        return false;
        }
    break;

  }
  
  return true;
}

function calc_omheining() {
 //controleer welk product voldoen aan deze eigenschappen en bereken het de prijs (aantal meter * meterprijs + montagekosten)
   http = createRequestObject();
	
   http.open('post',  '/_get_product.php');
   http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
   http.onreadystatechange = omheiningResult; 
 
   var paalDikte = document.offerteForm.paalDikte.value;
   var paalLengte = document.offerteForm.paalLengte.value;
   var paalAfstand = document.offerteForm.paalAfstand.value;
   var aantalLiggers= document.offerteForm.aantalLiggers.value;

   var sendstr ='paalDikte='+paalDikte+'&paalLengte='+paalLengte+'&paalAfstand='+paalAfstand+'&aantalLiggers='+aantalLiggers;
   http.send(sendstr);
   
}

function omheiningResult() {
   if(http.readyState != 4) return;
 
   var resultObj = parse_str(http.responseText);
   var omschrijving = document.getElementById('omheiningOmschrijving');
   var prijs= document.getElementById('omheiningPrijs');
   var aantalMeters = document.getElementById('aantalMetersOmheining').value;
   omschrijving.innerHTML = resultObj.omschrijving;
   if (isNumeric(aantalMeters)) {
    prijs.innerHTML = 'prijs: '+ number_to_currency(aantalMeters * resultObj.prijs) ;
    prijsOmheining = aantalMeters * parseFloat(resultObj.prijs);
    if (isNumeric(resultObj.montagekosten)) {
        prijs.innerHTML += '<br/>montagekosten: '+ number_to_currency(aantalMeters * resultObj.montagekosten) ;
        prijsOmheining += aantalMeters * parseFloat(resultObj.montagekosten);
        }
    }
   else {
    prijs.innerHTML = 'prijs: ?';
    prijsOmheining = 0;
    }
   calcTotaalprijs();
}

function calc_hekken() {
 //controleer welk product voldoet aan deze eigenschappen en bereken het de prijs (aantal * prijs + montagekosten)
   http = createRequestObject();
	
   http.open('post',  '/_get_hekken.php');
   http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
   http.onreadystatechange = hekkenResult; 
 
   var vormLandhek = document.offerteForm.vormLandhek.value;
   var typeLandhek = document.offerteForm.typeLandhek.value;
   var afmetingenLandhek = document.offerteForm.afmetingenLandhek.value;


   var sendstr ='vormLandhek='+vormLandhek+'&typeLandhek='+typeLandhek+'&afmetingenLandhek='+afmetingenLandhek;
   http.send(sendstr);
}

function hekkenResult() {
   if(http.readyState != 4) return;
 
   var resultObj = parse_str(http.responseText);
   var omschrijving = document.getElementById('hekkenOmschrijving');
   var prijs= document.getElementById('hekkenPrijs');
   var aantal = document.getElementById('aantalLandhekken').value;
   omschrijving.innerHTML = resultObj.omschrijving;
   if (isNumeric(aantal)) {
    prijs.innerHTML = 'prijs: '+ number_to_currency(aantal * resultObj.prijs) ;
    prijsHek = aantal * parseFloat(resultObj.prijs);
    if (isNumeric(resultObj.montagekosten)) {
        prijs.innerHTML += '<br/>montagekosten: '+ number_to_currency(aantal * resultObj.montagekosten) ;
        prijsHek += aantal * parseFloat(resultObj.montagekosten);
        }
    }
   else  {
    prijsHek = 0;
    prijs.innerHTML = 'prijs: ?';
    }
   calcTotaalprijs();
   
}

function calc_longeercirkel() {
 //controleer welk product voldoet aan deze eigenschappen en bereken het de prijs (prijs + montagekosten)
   http = createRequestObject();
	
   http.open('post',  '/_get_longeercirkel.php');
   http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
   http.onreadystatechange = longeercirkelResult; 
 
   var aantalLiggers = document.offerteForm.LongeerCirkelAantalLiggers.value;
   var doorsnee = document.offerteForm.LongeerCirkelDoorsnee.value;


   var sendstr ='aantalLiggers='+aantalLiggers+'&doorsnee='+doorsnee;
   http.send(sendstr);
}

function longeercirkelResult() {
   if(http.readyState != 4) return;
 
   var resultObj = parse_str(http.responseText);
   var omschrijving = document.getElementById('longeercirkelOmschrijving');
   var prijs= document.getElementById('longeercirkelPrijs');
   omschrijving.innerHTML = resultObj.omschrijving;
   if (document.offerteForm.longeerCirkel.checked) {   
    prijs.innerHTML = 'prijs: '+ number_to_currency(resultObj.prijs) ;
    prijsLongeercirkel = parseFloat(resultObj.prijs);
    if (isNumeric(resultObj.montagekosten)) {
        prijs.innerHTML += '<br/>montagekosten: '+ number_to_currency(resultObj.montagekosten) ;
        prijsLongeercirkel += parseFloat(resultObj.montagekosten);
        }
   }
   else {
    prijs.innerHTML = 'prijs: ?';
    prijsLongeercirkel = 0;
   }
   calcTotaalprijs();

}

function calc_buitenbak() {
 //controleer welk product voldoet aan deze eigenschappen en bereken het de prijs (prijs + montagekosten)
   http = createRequestObject();
	
   http.open('post',  '/_get_buitenbak.php');
   http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
   http.onreadystatechange = buitenbakResult; 
 
   var paalAfstand = document.offerteForm.BuitenbakPaalAfstand.value;
   var aantalLiggers = document.offerteForm.BuitenbakAantalLiggers.value;
   var afmetingen = document.offerteForm.BuitenbakAfmeting.value;


   var sendstr ='paalAfstand='+paalAfstand+'&aantalLiggers='+aantalLiggers+'&afmetingen='+afmetingen;

   http.send(sendstr);
}

function buitenbakResult() {
   if(http.readyState != 4) return;
 
   var resultObj = parse_str(http.responseText);
   var omschrijving = document.getElementById('buitenbakOmschrijving');
   var prijs= document.getElementById('buitenbakPrijs');
   omschrijving.innerHTML = resultObj.omschrijving;
   if (document.offerteForm.buitenbak.checked) {
    prijs.innerHTML = 'prijs: '+ number_to_currency(resultObj.prijs) ;
    prijsBuitenbak = parseFloat(resultObj.prijs);
    if (isNumeric(resultObj.montagekosten)) {
        prijs.innerHTML += '<br/>montagekosten: '+ number_to_currency(resultObj.montagekosten) ;
        prijsBuitenbak += parseFloat(resultObj.montagekosten);
        }
   }
   else {
    prijs.innerHTML = 'prijs: ?';
    prijsBuitenbak = 0;
   }
   calcTotaalprijs();

}

function calcTotaalprijs() {
 var kortingsperc = 10; // 10% korting
 var kortingVanaf = 10000;//korting vanaf 10000 euro
 var btwPerc = 19; //19% btw
 
 var calcKorting = 0;
 var totaalprijs = 0;
 totaalprijs += parseFloat(prijsOmheining);
 totaalprijs += parseFloat(prijsHek);
 totaalprijs += parseFloat(prijsLongeercirkel);
 totaalprijs += parseFloat(prijsBuitenbak);
 var totaalprijsDiv = document.getElementById('totaalprijs');
 var html = '';
 html  = '<div class="extra_padding">';
 if (totaalprijs > kortingVanaf) {
    calcKorting = totaalprijs * (kortingsperc/100);
    html += 'Korting ('+kortingsperc+'%): '+number_to_currency(calcKorting)+'<br/>';
    }
 
 html += 'Totaalprijs (excl.btw): '+ number_to_currency(totaalprijs - calcKorting)+'<br/>';
 var btwBedrag = Math.round((totaalprijs - calcKorting) * (btwPerc/100)* 100)/100;
 html += 'btw : '+ number_to_currency(btwBedrag)+'<br/>';
 
 html += 'Totaalprijs (incl.btw): '+ number_to_currency(totaalprijs - calcKorting + btwBedrag);
 html += '</div>';
 totaalprijsDiv.innerHTML = html;
 
 }

//-helper functions------------------------------------------------------------------------------------------//

function isNumeric(x) {
    // I use this function like this: if (isNumeric(myVar)) { } 
    // regular expression that validates a value is numeric 
    var RegExp = /^[-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?$/; 
    // compare the argument to the RegEx 
    // the 'match' function returns 0 if the value didn't match 
    var result = x.match(RegExp);
    return result;
}


function createRequestObject(){
	var request_o; //declare the variable to hold the object.
	var browser = navigator.appName; //find the browser name
	if(browser == "Microsoft Internet Explorer"){
		/* Create the object using MSIE's method */
		request_o = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		/* Create the object using other browser's method */
		request_o = new XMLHttpRequest();
	}
	return request_o; //return the object
}

function parse_str(str, array){

    var glue1 = '=';
    var glue2 = '&';
 
    var array2 = (str+'').split(glue2);
    var array3 = [];
    var array2l = 0, tmp = '', x = 0;
 
    array2l = array2.length;
    for (x = 0; x<array2l; x++) {
        tmp = array2[x].split(glue1);
        array3[unescape(tmp[0])] = unescape(tmp[1]).replace(/[+]/g, ' ');
    }
 
    if (array) {
        array = array3;
    } else {
        return array3;
    }
}




 function number_to_currency(number, options) {
  try {
    var options   = options || {};
    var precision = options["precision"] || 2;
    var unit      = options["unit"] || "&euro; ";
    var separator = precision > 0 ? options["separator"] || "," : "";
    var delimiter = options["delimiter"] || ".";
    var parts = parseFloat(number).toFixed(precision).split('.');
    return unit + number_with_delimiter(parts[0], delimiter) + separator + parts[1].toString();
  } catch(e) {
    return number
  }
}

function number_with_delimiter(number, delimiter, separator) {
  try {
    var delimiter = delimiter || ",";
    var separator = separator || ".";
    
    var parts = number.toString().split('.');
    parts[0] = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1" + delimiter);
    return parts.join(separator);
  } catch(e) {
    return number
  }
}

    function validateEmail(email)
    {
        var splitted = email.match("^(.+)@(.+)$");
        if(splitted == null) return false;
        if(splitted[1] != null ) {
            var regexp_user=/^\"?[\w-_\.]*\"?$/;
            if(splitted[1].match(regexp_user) == null) return false;
        }
        if(splitted[2] != null) {
            var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
            if(splitted[2].match(regexp_domain) == null) {
    	       var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
    	       if(splitted[2].match(regexp_ip) == null) return false;
          }
          return true;
        }
        return false;
    }
