/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Formulier Afhandeling +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */

/* ***************************************************************************************
    FormHandler (formId, formvariabelen)
***************************************************************************************** */
function fnFormHandler() {
	fArgs = fnFormHandler.arguments;
	aPostData = new Array();
	var bCheckbox = false;
	var bCheckboxChecked = false;
	
	formId = fArgs[0];
	form = document.forms[formId];
	
	form.method = "post";
	
	fError = new Array();
		
	//i begint bij 1 omdat 1e arggument formId is(, en eindigd bij op 1 naar laatste omdat de laatste de submit is??)
	for (i = 1; i <= form.length - 1; i++) {
		formElementNr = i - 1;
				
		var n = form.elements[formElementNr].name;
		var v = form.elements[formElementNr].value;
		var t = form.elements[formElementNr].type;
		var objElement = form.elements[formElementNr];
		
		if (t == "checkbox") {
			bCheckbox = true;
			
			if (objElement.checked == true) {
				
				if (bCheckboxChecked == false) {
					bCheckboxChecked = true;
				}
			}
		}
		
		switch(fArgs[i]) {
			case "email":
					if (!fnValidateEmail(v)) {
						fError[formElementNr] = form.elements[formElementNr].name + " is invalid";
					}
				    break;
			case "postal":
					if (checkPostcode(form.elements[formElementNr].value) === false) {
						fError[formElementNr] = form.elements[formElementNr].name + " is invalid";
					}
					break;
			case "date":
					if (fnValidateDate(v) == false) {
						fError[formElementNr] = form.elements[formElementNr].name + " is invalid (mm-dd-yy)";
					}
					break;	
			case 1:
					if (form.elements[formElementNr].value == "") {
						fError[formElementNr] = form.elements[formElementNr].name + " is required";
					}
					break;
				default:
				//Nothing
		}
	}
	
	if (bCheckbox == true) {
		if (bCheckboxChecked == false) {
			fError[fError.length + 1] = "Al least one interest needs to be checked";
		}
	}

	//Geef de fouten weer wanneer die er zijn, anders het form versturen
	if (fError.length > 0) {
		for (keyName in fError) {
			alert(fError[keyName]);
			break;
		}
	}
	else {
		form.submit();
	}
	return false;
}

//Controleer geldigheid Email adres
function fnValidateEmail(emailAddress) {
	var foundAtSymbol = 0;
	var foundDot = 0;
	var md;

	//Ga eerste elk teken bij langs
	for (var x=0; x < emailAddress.length - 1; x++) {
		md = emailAddress.substr(x, 1);

		//Is het een @
		if (md == '@') {
			foundAtSymbol++;
		}

		//Tel hoeveelheid punten na @
		if (md == '.' && foundAtSymbol == 1) 
			foundDot++;
		}

	//Is er 1 @ en meer punten?
	if (foundDot > 0 && foundAtSymbol == 1) {
		return(true);
	} 
	else {
		return(false);
	}
}

function fnValidateDate(p_sDate) {
	regex_Date = /\d{1,2}-\d{1,2}-\d{2}/;	//Date format = mm-dd-yy
	
	if (regex_Date.test(p_sDate)) {
		return true;
	}
	else {
		return false;
	}
}

function fnCheckIfNumber(sText)
{
  var ValidChars = "0123456789";
  var IsNumber=true;
  var Char;

 
  for (i = 0; i < sText.length && IsNumber == true; i++) 
  { 
  Char = sText.charAt(i); 
  if (ValidChars.indexOf(Char) == -1) 
     {
     IsNumber = false;
     }
  }
  return IsNumber;
}


function fnInitCalculate()
{
	sElNrTmp = document.forms["contactForm"];
	sElNr = sElNrTmp.elements["aantal_kalenders"].value;

  if(!fnCheckIfNumber(sElNr)) {
    global_nChances = global_nChances * -1;
    if(global_nChances<0){
      alert("Please only use numbers in this field");
    }
    return;
  }

	objElKleurTmp = document.forms["contactForm"];
	objElKleur = objElKleurTmp.elements["kleur"];
	
	for (var i = 0; i < objElKleur.length; i++)
	{
		if (objElKleur[i].checked) nKleur = objElKleur[i].value;
	}
	
	objElLogoTmp = document.forms["contactForm"];
	objElLogo = objElLogoTmp.elements["logo"];
  
  if(sElNr<25) objElLogo[1].checked = true;
  else if(!global_logocheck) {
    objElLogo[0].checked = true;
    global_logocheck = false;
  }
	
	for (var i = 0; i < objElLogo.length; i++)
	{
		if (objElLogo[i].checked) sLogo = objElLogo[i].value;
	}
	
	switch(sLogo)
	{
		case "true":
			bLogo = true;
			break;
		case "false":
			bLogo = false;
			break;
	}
	
	fnCalculatePrice(nKleur, bLogo, sElNr);
}

function fnCalculatePrice(p_nColors, p_bLogo, p_nElNr)
{
	//Basic Price	
  if(p_nElNr<51)
    nPriceBasic = 37.5;
  else if(p_nElNr<101)
    nPriceBasic = 35.5;
  else if(p_nElNr<151)
    nPriceBasic = 33.75;
  else if(p_nElNr<201)
    nPriceBasic = 31.75;
  
  if(p_nElNr>200) {
    //Set prices in layers and in hidden form elements
  	objElTotall.innerHTML = "";
  	objElOmzetbelasting.innerHTML = "";
  	objElPriceToPay.innerHTML = "Please contact us"
    return;
  }
  else {  
  	nPrice = nPriceBasic + global_aPricesKleur[p_nColors - 1];
   	nPrice = nPrice * p_nElNr;
  	
  	if (p_bLogo) nPrice = nPrice + global_nPriceLogo;
  	
    if(p_nElNr=="" || p_nElNr==0) nPrice = 0;
  	nTotallPrice = nPrice;
  	
  	nPriceToPay = nPrice * ((global_nOmzetBelasting / 100) + 1);
  	nPriceOmzetbelasting = nPrice * (global_nOmzetBelasting / 100);
    
    //nPriceToPay = Math.round(nPriceToPay*100)/100;
    //nPriceOmzetbelasting = Math.round(nPriceOmzetbelasting*100)/100;
    nTotallPrice = nTotallPrice.toFixed(2);
    nPriceToPay = nPriceToPay.toFixed(2);
    nPriceOmzetbelasting = nPriceOmzetbelasting.toFixed(2);
  	
  	objElTotall = document.getElementById("totaal");
  	objElInput_Totall = document.getElementById("input_totaal");
  	
  	objElOmzetbelasting = document.getElementById("omzetbelasting");
  	objElInput_Omzetbelasting = document.getElementById("input_omzetbelasting");	
  	
  	objElPriceToPay = document.getElementById("tebetalen");				//Element to inform the user
  	objElInput_PriceToPay = document.getElementById("input_tebetalen");			//Hidden textbox
  	
  	
  	//Set prices in layers and in hidden form elements
  	objElTotall.innerHTML = global_sEenheid + " " + nTotallPrice;
  	objElInput_Totall.value = global_sEenheid + " " + nTotallPrice;
  	
  	objElOmzetbelasting.innerHTML = global_sEenheid + " " + nPriceOmzetbelasting;
  	objElInput_Omzetbelasting.value = global_sEenheid + " " + nPriceOmzetbelasting;
  	
  	objElPriceToPay.innerHTML = global_sEenheid + " " + nPriceToPay;	//Element to inform the user
  	objElInput_PriceToPay.value = global_sEenheid + " " + nPriceToPay;	//Hidden textbox
  }
}
