// -----------------------------------------------------------------------------------
// FORM HANDLING -  GENERAL USE
// -----------------------------------------------------------------------------------
function checkForm(jAction, jFormName, jFields, jFieldMsg, jChecks, jMandatory, jLanguage) {
	try {	var jValue, jType, jMsg="", jRegExp, jCount=0, jFormObj, jGotError, jMaxError = 5;

			if (jLanguage=='nl') { jMsg = "Niet alle velden zijn correct ingevuld.\nDe incorrect ingevulde velden zijn gemarkeerd met een '!'.\n \nControleer de ingevulde gegevens en probeer het opnieuw."; }
			if (jLanguage=='en') { jMsg = "Not all fields pass validation.\nIncorrect fields are marked with a '!'.\n \nPlease correct the problem and try again."; }

			for (var y=0; y<jFields.length; y++) { 
				if (checkFormObject(jFields[y], jFormName)) {	
						jFormObj = document.forms[jFormName].elements[jFields[y]];
						jValue	 = ""; jGotError = false;

						try { jType = jFormObj.type;  } catch (excp) {  }
						try { jType = jType.toUpperCase(); } catch (excp) { jType = ''; }

						if  (jType=='SELECT') { jValue = jFormObj.options[jFormObj.selectedIndex].value; } 
						else if (jType=='SELECT-ONE') { jValue = jFormObj.options[jFormObj.selectedIndex].value; } 
						else if (jType=='RADIO') { jValue = checkRadioButton(jFormObj); }
						else if (jType=='TEXT') { jValue = jFormObj.value; }
						else if (jType=='CHECKBOX') { jValue = jFormObj.checked.toString(); if ((jValue=='0') || (jValue=='false')) { jValue=''; } }
						else if (jType=='TEXTAREA') { jValue = jFormObj.value; }
						else if (jType=='FILE') { jValue = jFormObj.value; }
						else if (jType=='HIDDEN') { jValue = jFormObj.value; }
						else if (jType=='PASSWORD') { jValue = jFormObj.value; }
						else if (checkIsArray(jFormObj)) { jType='RADIO'; jValue = checkRadioButton(jFormObj); } 

						// only validate input if it is required or when it is filled.
						if ((jValue.length>0) || (jMandatory[y].toLowerCase()=="true")) {
							jValue = jValue.replace(/^\s+|\s+$/g,"gi"); jRegExp = new RegExp(jChecks[y],"gi"); 
							if (jRegExp.test(jValue) == false) { jGotError = true; }
						
							if (jGotError == true) { 
								if (checkObject(jFields[y]+'ID')) { document.getElementById(jFields[y]+'ID').innerHTML = jFieldMsg[y]; } jCount+=1;
							} else { if (checkObject(jFields[y]+'ID')) { document.getElementById(jFields[y]+'ID').innerHTML = ''; } }
						}
				}
			}

		// normal handling
		if (jCount> 0) { alert(jMsg); return false; }
		if (jCount==0) { 
				if (checkObject(jFormName+"SentButton")) { document.getElementById(jFormName+"SentButton").disabled = true;  }
				if (checkFormObject("SentButton", jFormName)) { document.forms[jFormName].elements["SentButton"].disabled = true;  }
				if (checkFormObject("sendingformallowed", jFormName)) { document.forms[jFormName].elements['sendingformallowed'].value = '556d699968986a989a9869986e989a986c709d98989898989b996c986a9869'; }
				document.forms[jFormName].action = jAction.toLowerCase();
		}

	} catch (excp) { alert('Current webbrowser is not supported.\nError: '+excp); return false; }
}

// check value of raiobuttons
function checkRadioButton(jObj) {
    var cnt = -1;
    for (var i=jObj.length-1; i > -1; i--) { if (jObj[i].checked) {cnt = i; i = -1;} }
    if (cnt > -1) return jObj[cnt].value;
    else return '';
}

// checks if an object is an array
function checkIsArray(jObj) {
	try {    if (jObj.length>0) { return true; } else { return false };
	} catch (excp) { return false }
}

// checks if an object exists
function checkObject(jID) { 
	try { var o = document.getElementById(jID); if (o) { return true } else { return false }
	} catch (excp) { return false }
}

// checks if an form object exists
function checkFormObject(jName, jFormName) { 
	try { var o = document.forms[jFormName].elements[jName]; if (o) { return true } else { return false }
	} catch (excp) { return false }
}


// -----------------------------------------------------------------------------------


// -----------------------------------------------------------------------------------
// INIT SITE
// -----------------------------------------------------------------------------------
function initSite() {
	if (checkObject("MenuSelectedId")) {
		var jLeft = ObjectPosition(document.getElementById("MenuSelectedId"));
		if (jLeft>0) { 
				document.getElementById("SiteMenuSelected").style.left = jLeft+'px';
				document.getElementById("SiteMenuSelected").style.display = '';
		}
	}
}

function ObjectPosition(obj) {
    var curleft = 0;
      if (obj.offsetParent) {
            do {  if (obj.id=='SiteContainer') { return curleft; break;}
				  curleft += obj.offsetLeft;
            } while (obj = obj.offsetParent);
      }
      return curleft;
}

// -----------------------------------------------------------------------------------
// TELL A FRIEND
// -----------------------------------------------------------------------------------

function validateTellafriend(jAction, jLanguage) {
	var jFields		= Array("MyName","MyEmail","YourName","YourEmail");
	var jFieldMsg	= Array("!","!","!","!");
	var jChecks		= Array(".{1,}","^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$",".{1,}","^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$");
	var jMandatory	= Array("true","true","true","true");
	return checkForm(jAction, 'SsmFormData', jFields, jFieldMsg, jChecks, jMandatory, jLanguage);
}
// -----------------------------------------------------------------------------------
// PRODUCT
// -----------------------------------------------------------------------------------
function switchImage(jObj, jURL) {
	if (checkObject(jObj)) { document.getElementById(jObj).style.backgroundImage = 'url('+jURL+'u.jpg)'; }
	if (checkObject(jObj+'A')) { document.getElementById(jObj+'A').href = jURL+'.jpg'; 	}
}

function resizeThumbnail(jObj) {
	try {
		var jWidth  = jObj.style.width; if (jWidth=='') { jWidth = jObj.width; }
		var jHeight = jObj.style.height; if (jHeight=='') { jHeight = jObj.height; }

		if ((jWidth<1) || (jWidth=='')) { jWidth = 100; }
		if ((jHeight<1) || (jHeight=='')) { jHeight = 100; }

		var jNewWidth, jNewHeight, jFactor, jMarginLeft = 0, jMarginTop = 0;

		if (jWidth>jHeight) {
			jFactor = Math.round(jWidth/100);
			jNewWidth = 100;
			jNewHeight = Math.round(jHeight/jFactor);
			if (jNewHeight<100) { jMarginTop = Math.round(((100-jNewHeight)/2)) }
		} else {
			jFactor = Math.round(jHeight/100);
			jNewHeight = 100;
			jNewWidth = Math.round(jWidth/jFactor);
			if (jNewWidth<100) { jMarginLeft = Math.round(((100-jNewWidth)/2)) }
		}

		jObj.style.width = jNewWidth; jObj.width = jNewWidth;
		jObj.style.height = jNewHeight; jObj.height = jNewHeight;
		jObj.style.marginLeft = jMarginLeft;
		jObj.style.marginTop = jMarginTop;
	} catch (excp) { alert(excp); }
}


// -----------------------------------------------------------------------------------
// ORDER FORM
// -----------------------------------------------------------------------------------
function initForm() {
		var jProductAA = ctFloat(document.forms['SsmFormData'].elements['ProductAAprice'].value);
		var jProductBB = ctFloat(document.forms['SsmFormData'].elements['ProductBBprice'].value);
		var jProductCC = ctFloat(document.forms['SsmFormData'].elements['ProductCCprice'].value);


		if ((jProductAA>0) || (jProductBB>0) || (jProductCC>0)) {
			document.getElementById("ProductNoneTR").style.display = 'none'; 
			if (jProductAA>0)  { document.getElementById("ProductAATR").style.display = ''; }
			if (jProductBB>0)  { document.getElementById("ProductBBTR").style.display = ''; }
			if (jProductCC>0)  { document.getElementById("ProductCCTR").style.display = ''; }
		}
		// set product name, price and subproducts
		document.getElementById("ProductPriceSPAN").innerHTML = document.forms['SsmFormData'].elements['ProductPrice'].value;
		document.getElementById("ProductNameSPAN").innerHTML = document.forms['SsmFormData'].elements['ProductName'].value;

		document.getElementById("ProductAApriceSPAN").innerHTML = document.forms['SsmFormData'].elements['ProductAAprice'].value;
		document.getElementById("ProductAAnameTD").innerHTML = document.forms['SsmFormData'].elements['ProductAAname'].value;

		document.getElementById("ProductBBpriceSPAN").innerHTML = document.forms['SsmFormData'].elements['ProductBBprice'].value;
		document.getElementById("ProductBBnameTD").innerHTML = document.forms['SsmFormData'].elements['ProductBBname'].value;

		document.getElementById("ProductCCpriceSPAN").innerHTML = document.forms['SsmFormData'].elements['ProductCCprice'].value;
		document.getElementById("ProductCCnameTD").innerHTML = document.forms['SsmFormData'].elements['ProductCCname'].value;
}

function showHide(jShowID) {
	if (checkObject('TableAA')) { document.getElementById('TableAA').style.display = 'none'; }
	if (checkObject('TableBB')) { document.getElementById('TableBB').style.display = 'none'; }
	if (checkObject('TableCC')) { document.getElementById('TableCC').style.display = 'none'; }
	if (checkObject('TableDD')) { document.getElementById('TableDD').style.display = 'none'; }

	if (checkObject(jShowID)) { document.getElementById(jShowID).style.display = ''; }
	if (jShowID=='TableCC') { calcTotal(); }
}

function ctFloat(jValue) {
	// determine decimal sign
	var jTestValue = 1/2; jTestValue = jTestValue.toString();
	var jDecimalSign, jNonDecimalSign;
	if (jTestValue.indexOf('.')>-1) { jDecimalSign = '.'; jNonDecimalSign = ','; }
	if (jTestValue.indexOf(',')>-1) { jDecimalSign = ','; jNonDecimalSign = '.'; }
	jValue = jValue.replace(jNonDecimalSign, jDecimalSign);
	try { return parseFloat(jValue); }
	catch (excp) { return 0; }
}


function calcTotal() {
	var jTotal = 0;
	var jOutput = '<table border=0 cellspacing=0 cellpadding=2 width="100%"';
	var jObjForm = document.forms['SsmFormData'];

	// get all data
	var jProductCount	= jObjForm.elements['ProductCount'].options[jObjForm.elements['ProductCount'].selectedIndex].value;
	var jProductName	= jObjForm.elements['ProductName'].value;
	var jProductPrice	= ctFloat(jObjForm.elements['ProductPrice'].value);
	var jProductType	= jObjForm.elements['ProductType'].options[jObjForm.elements['ProductType'].selectedIndex].value;

	var jProductAAname = document.forms['SsmFormData'].elements['ProductAAname'].value;
	var jProductAAcount = jObjForm.elements['ProductAAcount'].options[jObjForm.elements['ProductAAcount'].selectedIndex].value;
	var jProductAAprice = ctFloat(jObjForm.elements['ProductAAprice'].value);

	var jProductBBname = document.forms['SsmFormData'].elements['ProductBBname'].value;
	var jProductBBcount = jObjForm.elements['ProductBBcount'].options[jObjForm.elements['ProductBBcount'].selectedIndex].value;	
	var jProductBBprice = ctFloat(jObjForm.elements['ProductBBprice'].value);

	var jProductCCname = document.forms['SsmFormData'].elements['ProductBBname'].value;
	var jProductCCcount = jObjForm.elements['ProductCCcount'].options[jObjForm.elements['ProductCCcount'].selectedIndex].value;	
	var jProductCCprice = ctFloat(jObjForm.elements['ProductCCprice'].value);

	var jCountry		= jObjForm.elements['Land'].options[jObjForm.elements['Land'].selectedIndex].value;	
	var jTotalLabel		= jObjForm.elements['TotalLabel'].value;
	
	var jDeliveryCostNL	= ctFloat(jObjForm.elements['DeliveryNL'].value);
	var jDeliveryCostEur= ctFloat(jObjForm.elements['DeliveryEurope'].value);
	var jDeliveryCostWld= ctFloat(jObjForm.elements['DeliveryWorld'].value);

	var jDeliveryLabel	= jObjForm.elements['DeliveryLabel'].value;

	// create output
	jOutput += '<tr><td>' + jProductCount + 'x</td><td>' + jProductName + '</td><td>&euro; ' +  CurrencyFormatted(jProductPrice) + '</td></tr>';
	jOutput += '<tr><td>&nbsp;</td><td colspan=2>(' + jProductType + ')</td></tr>';
	jTotal = jProductPrice;

	// extra product A
	if (jProductAAcount>0) {
		jOutput += '<tr><td>' + jProductAAcount + 'x</td><td>' + jProductAAname + '</td><td>&euro; ' +  CurrencyFormatted(jProductAAprice) + '</td></tr>';
		jTotal += jProductAAprice;
	}

	// extra product B
	if (jProductBBcount>0) {
		jOutput += '<tr><td>' + jProductBBcount + 'x</td><td>' + jProductBBname + '</td><td>&euro; ' +  CurrencyFormatted(jProductBBprice) + '</td></tr>';
		jTotal += jProductBBprice;
	}

	// extra product C
	if (jProductCCcount>0) {
		jOutput += '<tr><td>' + jProductCCcount + 'x</td><td>' + jProductBBname + '</td><td>&euro; ' +  CurrencyFormatted(jProductCCprice) + '</td></tr>';
		jTotal += jProductCCprice;
	}

	// delivery costs
	if (jCountry.indexOf('NL-')>-1) {
		jOutput += '<tr><td>1x</td><td>' + jDeliveryLabel + '</td><td>&euro; ' +  CurrencyFormatted(jDeliveryCostNL) + '</td></tr>';
		jTotal += jDeliveryCostNL;
	}

	if (jCountry.indexOf('EUR-')>-1) {
		jOutput += '<tr><td>1x</td><td>' + jDeliveryLabel + '</td><td>&euro; ' +  CurrencyFormatted(jDeliveryCostEur) + '</td></tr>';
		jTotal += jDeliveryCostEur;
	}

	if ((jCountry.indexOf('NL-')==-1) && (jCountry.indexOf('EUR-')==-1)) {
		jOutput += '<tr><td>1x</td><td>' + jDeliveryLabel + '</td><td>&euro; ' +  CurrencyFormatted(jDeliveryCostWld) + '</td></tr>';
		jTotal += jDeliveryCostWld;
	}

	// totaal
	jTotal = CurrencyFormatted(jTotal)
	jOutput += '<tr><td style="border-top: 1px solid #808080;">&nbsp;</td><td style="font-weight: bold; border-top: 1px solid #808080;">' + jTotalLabel + '</b></td><td style="font-weight: bold; border-top: 1px solid #808080;">&euro; ' + jTotal + '</b><span id="TotalAmountID" class="FormError"></span></td></tr>';
	jOutput += '</table>';
	document.getElementById("ProductOrderOverview").innerHTML = jOutput;
	
	//set total in form
	jObjForm.elements['TotalAmount'].value = jTotal;
}

function CurrencyFormatted(amount){
      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;
      s = new String(i);
      if(s.indexOf('.') < 0) { s += '.00'; }
      if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
      s = minus + s;
      return s;
}


function validateStep1(jLanguage) {
	var jFields		= Array("ProductPrice","ProductName","ProductId","ProductType");
	var jFieldMsg	= Array("!","!","!","!");
	var jChecks		= Array(".{1,}",".{1,}",".{1,}",".{1,}");
	var jMandatory	= Array("true","true","true","true");
	var jReturnValue = checkForm('/400.asp', 'SsmFormData', jFields, jFieldMsg, jChecks, jMandatory, jLanguage);

	if (checkObject('SsmFormDataSentButton')) { document.getElementById('SsmFormDataSentButton').disabled = false; }
	if (checkFormObject('sendingformallowed','SsmFormData')) { document.forms['SsmFormData'].elements['sendingformallowed'].value = 'true'; }
	if (jReturnValue!=false) { showHide('TableBB'); }
}

function validateStep2(jLanguage) {
	var jFields		= Array("Naam","Adres","Postcode","Woonplaats","Land","Telefoon","Email");
	var jFieldMsg	= Array("!","!","!","!","!","!","!");
	var jChecks		= Array(".{2,}",".{3,}",".{5,}",".{2,}",".{2,}",".[0123456789+ -]{9,}","^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$");
	var jMandatory	= Array("true","true","true","true","true","true","true");
	var jReturnValue = checkForm('/400.asp', 'SsmFormData', jFields, jFieldMsg, jChecks, jMandatory, jLanguage);

	if (checkObject('SsmFormDataSentButton')) { document.getElementById('SsmFormDataSentButton').disabled = false; }
	if (checkFormObject('sendingformallowed','SsmFormData')) { document.forms['SsmFormData'].elements['sendingformallowed'].value = 'true'; }
	if (jReturnValue!=false) { showHide('TableCC'); }
}

function validateStep3(jLanguage) {
	var jFields		= Array("PaymentMethod","TotalAmount");
	var jFieldMsg	= Array("!","!");
	var jChecks		= Array(".{1,}",".[0123456789.]{4,}");	// minimum amount is 10.00 euros (5 digits)
	var jMandatory	= Array("true","true");
	var jReturnValue = checkForm('/400.asp', 'SsmFormData', jFields, jFieldMsg, jChecks, jMandatory, jLanguage);

	if (checkObject('SsmFormDataSentButton')) { document.getElementById('SsmFormDataSentButton').disabled = false; }
	if (checkFormObject('sendingformallowed','SsmFormData')) { document.forms['SsmFormData'].elements['sendingformallowed'].value = 'true'; }
	if (jReturnValue!=false) { showHide('TableDD'); }
}

function validateStep4(jAction, jLanguage) {
	var jFields		= Array("Referer","ProductPrice","ProductName","ProductId","ProductType","Naam","Adres","Postcode","Woonplaats","Land","Telefoon","Email","PaymentMethod","TotalAmount");
	var jFieldMsg	= Array("!","!","!","!","!","!","!","!","!","!","!","!","!","!");
	var jChecks		= Array(".{1,}",".{1,}",".{1,}",".{1,}",".{1,}",".{2,}",".{3,}",".{5,}",".{2,}",".{2,}",".[0123456789+ -]{9,}","^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$",".{1,}",".[0123456789.]{4,}");
	var jMandatory	= Array("true","true","true","true","true","true","true","true","true","true","true","true","true","true");
	return checkForm(jAction, 'SsmFormData', jFields, jFieldMsg, jChecks, jMandatory, jLanguage);
}
