/**
 * All custom stuff to the form goes in here
 */

/**
 * Form initialisation function. All things that need to be done at the first rendering of the form go in here
 */
function initForm()
{
	formRendering();
	RenderLoans(document.getElementById("loansCount"));
}

/**
 * All form validation goes in here. Autoval will be deprecated soon!!!
 */
function Validate()
{
	//Instantiate overall error message container
	var aErrors					=	new Array();
	
	//Get values for block 'form1'
	var iLimit		=	rewriteToInteger(getValueById("request_amount"));
	// var iProductType	=	getValueById("cpt_id");                                  // Do not ask since 23-01-2012
	var iPayment		=	rewriteToInteger(getValueById("payment"));
	var iHouseType		=	getValueById("household_ht_id");
	var iMaritalState	=	getValueById("household_ms_id");
	// var iBkr		=	getValueById("bkrJa");                                      // not being asked for lenen.nl
	// var iNumberChildren	=	getValueById("household_number_childrenJa");       // not being asked for lenen.nl
	
	//Test values for block 'form1'
   // 2011-11-14 Edwin van der Heide: not being asked for lenen.nl   
	// if (iBkr == false || iBkr < 1)			{aErrors[aErrors.length] = "u heeft nog niet aangegeven of u een negatieve BKR notering heeft";}
	//if (!(IsNumeric(iNumberChildren)))		{aErrors[aErrors.length] = "u heeft de vraag over kinderen nog niet beantwoord";}

	if (iLimit == 0)				{aErrors[aErrors.length] = "u heeft nog niet aangegeven welk bedrag u wenst te lenen";}
	else if (iLimit < 2500 || iLimit > 100000)	{aErrors[aErrors.length] = "voor deze limiet kunnen wij u helaas geen aanbieding doen. U kunt bij ons een aanvraag doen vanaf Eur.2500 tot en met Eur.100000";	}
	// if (iProductType == false || iProductType < 1)	{aErrors[aErrors.length] = "u heeft nog niet aangegeven welk soort product u wenst aan te vragen";}  // Do not ask since 23-01-2012
	if (iPayment < 1)				{aErrors[aErrors.length] = "u heeft nog niet aangegeven wat uw maximaal per maand wenst te betalen";}
	if (iHouseType == false || iHouseType < 1)	{aErrors[aErrors.length] = "u heeft uw huidige woonsituatie nog niet ingevoerd";}
	if (iMaritalState == false || iMaritalState < 1){aErrors[aErrors.length] = "u heeft uw huidige burgerlijke staat nog niet ingevoerd";}
	
	//Get values for block 'form2'
	var iClientGender		=	getValueById("client_gender");
	var sClientInitials		=	getValueById("client_initials");
	var sClientLastname		=	getValueById("client_lastname");
	var dClientBirthdate		=	getValueById("client_birthdate");
	var iClientIncomeType		=	getValueById("client_ect_id");
	var dClientIncomeSince		=	getValueById("client_ect_date");
	var iClientIncomeAmount		=	rewriteToInteger(getValueById("client_gross_income"));
	var iClientLivingExpense	=	rewriteToInteger(getValueById("household_living_expense"));
	
	//Test values for block 'form2'
	if (iClientGender < 1)		{	aErrors[aErrors.length]	=	"u heeft nog niet aangegeven wat uw geslacht is";												}
	if (String(sClientInitials).length < 1)				{	aErrors[aErrors.length]	=	"u heeft uw voorletters nog niet ingevuld";														}
	if (String(sClientLastname).length < 2)					{	aErrors[aErrors.length]	=	"u heeft uw achternaam nog niet ingevuld";														}
	if (! isValidDateString(dClientBirthdate))				{	aErrors[aErrors.length]	=	"u heeft uw geboortedatum niet, of foutief, ingevuld";											}
	if (iClientIncomeType < 1)								{	aErrors[aErrors.length]	=	"u heeft nog niet aangegeven wat voor inkomen u heeft";											}
	else if (iClientIncomeType >= 1 && iClientIncomeType != 6)
	{
		if (! isValidDateString(dClientIncomeSince))		{	aErrors[aErrors.length]	=	"u heeft nog niet ingevuld sinds wanneer u dit inkomen ontvangt";								}
		if (iClientIncomeAmount <= 0)						{	aErrors[aErrors.length]	=	"u heeft nog niet aangegeven welk bedrag aan bruto inkomen u maandelijks ontvangt";				}
	}
	if (iClientLivingExpense <= 0)							{	aErrors[aErrors.length]	=	"u heeft uw maandelijkse woonlasten nog niet ingvuld";											}
	
	//Get values for block 'form3'
	var iPartnerGender			=	getValueById("partner_gender");
	var sPartnerInitials		=	getValueById("partner_initials");
	var sPartnerLastname		=	getValueById("partner_lastname");
	var dPartnerBirthdate		=	getValueById("partner_birthdate");
	var iPartnerIncomeType		=	getValueById("partner_ect_id");
	var dPartnerIncomeSince		=	getValueById("partner_ect_date");
	var iPartnerIncomeAmount	=	rewriteToInteger(getValueById("partner_gross_income"));
	
	//Test values for block 'form3'
	if (iMaritalState > 1)
	{
		if (iPartnerGender < 1)	{aErrors[aErrors.length]	=	"u heeft nog niet aangegeven wat het geslacht van uw partner is";							}
		if (String(sPartnerInitials).length < 1)		{aErrors[aErrors.length]	=	"u heeft de voorletters van uw partner nog niet ingevuld";									}
		if (String(sPartnerLastname).length < 2)		{aErrors[aErrors.length]	=	"u heeft de achternaam van uw partner nog niet ingevuld";									}
		if (! isValidDateString(dPartnerBirthdate))		{aErrors[aErrors.length]	=	"u heeft de geboortedatum van uw partner nog niet, of foutief, ingevuld";					}
		if (iPartnerIncomeType < 1)							{	aErrors[aErrors.length]	=	"u heeft nog niet aangegeven wat voor inkomen uw partner heeft";							}
		else if (iPartnerIncomeType > 1 && iPartnerIncomeType != 6)
		{
			if (! isValidDateString(dPartnerIncomeSince))	{	aErrors[aErrors.length]	=	"u heeft nog niet ingevuld sinds wanneer uw partner dit inkomen ontvangt";					}
			if (iPartnerIncomeAmount <= 0)					{	aErrors[aErrors.length]	=	"u heeft nog niet ingevuld welk bedrag aan bruto inkomen uw partner maandelijks ontvangt";	}
		}
	}
	
	//Get values for block 'form4'
    // Do not ask since 23-01-2012
   /*
	var iHasLoans		=	getValueById("lopendeleningenjn");
	var iLoanCount		=	getValueById("loansCount");
	
	//Test values for block 'form4'
	if (iHasLoans < 1)	{aErrors[aErrors.length] = "u heeft nog niet aangegeven of u momenteel lopende financieringen heeft";}
	else if (iHasLoans == 1 && iLoanCount > 0)
	{
		for (var i=0; i < iLoanCount; i++)
		{
			var iLimit	=	rewriteToInteger(getValueById("loan0_amount"));
			var iBalance	=	rewriteToInteger(getValueById("loan0_balance"));
			if (iLimit <= 0)	{aErrors[aErrors.length] = "u heeft van lening "+(i+1)+" de afgesloten limiet nog niet ingevuld";}
			if (iBalance > (iLimit * 1.1))					{	aErrors[aErrors.length]	=	"u heeft van lening "+(i+1)+" een veel hoger saldo ingevoerd dan de limiet";	}
		}
	}
   */
	
	//Get values for block 'form5'
	var sPostalCode		=	getValueById("address_postalcode");
	var sHousenumber	=	getValueById("address_housenumber");
	var sEmailAddress	=	getValueById("e-mail");
	var sPhoneNumber	=	getValueById("telephone");

   //see if zip-check was OK
	var sStreet 		= 	getValueById("street");
	var sCity   		= 	getValueById("city");
	if (String(sStreet).length < 1 || String(sCity).length < 1)
	{
		aErrors[aErrors.length] = "de postcode - huisnummercombinatie is ongeldig.";		
	}
   if(document.getElementById('client_password')!=null)
   {
      if (getValueById("client_password")=="")
      {
        aErrors[aErrors.length] = "vul a.u.b. een geldig wachtwoord in";                   
      }
   
   }
	
	//Test values for block 'form5'
	if (String(sPostalCode).length < 6) {
           aErrors[aErrors.length] = "u heeft de postcode van uw huidige woonadres nog niet ingevuld";		
        }
	if (String(sHousenumber).length < 1){
           aErrors[aErrors.length] = "u heeft het huisnummer van uw huidige woonadres nog niet ingevuld";	
        }
	if (! isValidEmail(sEmailAddress)){ 
           aErrors[aErrors.length] = "vul a.u.b. een geldig emailadres in";							
        }

//Rene 28 okt. 2011: Phone AND Email
if (! isValidPhoneString(sPhoneNumber) || ! isValidEmail(sEmailAddress)){ 
           aErrors[aErrors.length] = "vul a.u.b. een geldig emailadres en een geldig telefoonnummer in";                   
        }


   // EvdHeide 27 october 2011 
   // added field validation for phone number for Geldlenen.nl
   //if (String(sPhoneNumber).length <= 9) {
     //      aErrors[aErrors.length] = "u heeft het telefoon nummer nog niet goed ingevuld";		
   //}

	
	//Render errors if any exist
	if (aErrors.length > 0)
	{
		var sErrorMessage	=	"";
		if (aErrors.length == 1)
		{
			sErrorMessage	=	"Kunt u a.u.b. deze vraag nog beantwoorden:\n__________________________________________________\n\n";
		}
		else
		{
			sErrorMessage	=	"Kunt u a.u.b. deze vragen nog beantwoorden:\n__________________________________________________\n\n";
		}
		for (var i=0; i < aErrors.length; i++)
		{
			sErrorMessage	+=	" - "+aErrors[i]+"\n";
		}
		sErrorMessage		+=	"\n\nControleer a.u.b. uw invoer en probeer opnieuw het formulier te versturen.";
		alert(sErrorMessage);
		return false;
	}
	//No errors encountered, post the succer
	document.getElementById("posttest").value	=	1;
	document.forms[0].submit();
	return true;
}


/**
 * Switches the input block 'lopende leningen' to visible/invisible
 * It is currently triggered by a radiogroup with name 'lopendeleningenjn'
 * @param bShow boolean
 * @returns void
 */
function toonLopendeLeningen(bShow)
{
	document.getElementById('lopendeleningen').style.display	=	(bShow == true)	?	'block'	:	'none';
}

/**
 * Renders the required number of loan rows
 * @param oObj DOM-object
 * @returns void
 */
function RenderLoans(oObj)
{
 // Do not ask since 23-01-2012
   /*
	var iValue				=	parseInt(oObj.options[oObj.selectedIndex].value);
	if (isNaN(iValue))		{	iValue	=	0;	}
	document.getElementById("loan0").style.display	=	(iValue > 0)	?	"block"	:	"none";
	document.getElementById("loan1").style.display	=	(iValue > 0)	?	"block"	:	"none";
	document.getElementById("loan2").style.display	=	(iValue > 1)	?	"block"	:	"none";
	document.getElementById("loan3").style.display	=	(iValue > 2)	?	"block"	:	"none";
	document.getElementById("loan4").style.display	=	(iValue > 3)	?	"block"	:	"none";
	document.getElementById("loan5").style.display	=	(iValue > 4)	?	"block"	:	"none";
	document.getElementById("loan6").style.display	=	(iValue > 5)	?	"block"	:	"none";
	document.getElementById("loan7").style.display	=	(iValue > 6)	?	"block"	:	"none";
	document.getElementById("loan8").style.display	=	(iValue > 7)	?	"block"	:	"none";
	document.getElementById("loan9").style.display	=	(iValue > 8)	?	"block"	:	"none";
	document.getElementById("loan10").style.display	=	(iValue > 9)	?	"block"	:	"none";
   */
}


function formRendering()
{
	var iHouseType		=	getValueById("household_ht_id");
	var iMaritalState	=	getValueById("household_ms_id");
	var iClientGender	=	getValueById("client_gender");
	var iPartnerGender	=	getValueById("partnerMale");
	
	document.getElementById("form3").style.display		=	(iMaritalState > 1)		?	"block"										:	"none";
	document.getElementById("lblWoonlast").innerHTML	=	(iHouseType == 1)		?	"Bruto hypotheeklast per maand"				:	"Huur per maand";
	// document.getElementById("lblPartnerName").innerHTML	=	(iPartnerGender == 2)	?	"Voorletter, tussenvoegsel, meisjesnaam"	:	"Voorletter, tussenvoegsel, achternaam";
}


/**
 * Function to lookup street and city by postalcode and housenumber input
 */
function doAddressLookup()
{
	var sPostalCode	=	getValueById("address_postalcode");
	var iHousenumber	=	getValueById("address_housenumber");
	if (String(sPostalCode).length >= 6 && String(iHousenumber).length > 0)
	{
		var sParams			=	"pc="+sPostalCode+"&hn="+iHousenumber;
		AddCallRequest("/ajax/addressLookup.php", sParams, "POST", "", "processAddressResult(oCall.responseXML)");
	}
}

/**
 * Function to set the values returned by the address lookup
 */
function processAddressResult(oXml)
{
	var sStraat	=	"";
	var sPlaats	=	"";
	var iStatus	=	oXml.getElementsByTagName("StatusCode")[0].firstChild.nodeValue;
	if (iStatus == '1')
	{
		sStraat	=	oXml.getElementsByTagName("Street")[0].firstChild.nodeValue;
		sPlaats	=	oXml.getElementsByTagName("City")[0].firstChild.nodeValue;
	}
	else
	{
		setAddressResult("", "");
		alert(oXml.getElementsByTagName("StatusMessage")[0].firstChild.nodeValue);
      // EvdHeide 25 october 2011 
      // temporary fix only for Geldlenen.nl (other websites currently don't have this fix). Assumption is that Internet Explorer/FireFox is looping beyond this point.
      document.getElementById("address_postalcode").value	=	"";
      document.getElementById("address_housenumber").value	=	"";
      
	}
	setAddressResult(sStraat, sPlaats);
}

function setAddressResult(sStraat, sPlaats)
{
	//Hidden input fields
	document.getElementById("street").value	=	sStraat;
	document.getElementById("city").value	=	sPlaats;
   
	//Display labels
	document.getElementById("lbl_street").innerHTML	=	(sStraat == "")	?	"- onbekend -"	:	sStraat;
	document.getElementById("lbl_city").innerHTML	=	(sPlaats == "")	?	"- onbekend -"	:	sPlaats;
}


/**
 * Function to lookup phonenumber in opta registration tabel.
 */
function doPhoneLookup()
{
	var sPhoneNumber	=	getValueById("telephone");
	sPhoneNumber = sPhoneNumber.split('-').join('');
	sPhoneNumber = sPhoneNumber.split(' ').join('');
	sPhoneNumber = sPhoneNumber.split('_').join('');
	sPhoneNumber = sPhoneNumber.split('+').join('');
	sPhoneNumber = sPhoneNumber.split(',').join('');
	sPhoneNumber = sPhoneNumber.split(';').join('');


	if (String(sPhoneNumber).length >= 10)
	{
		var sParams			=	"pn="+sPhoneNumber;
		AddCallRequest("/ajax/phoneLookup.php", sParams, "POST", "", "processPhoneResult(oCall.responseXML)");
	}
}

/**
 * Function to process the phone number if it isn't valid.
 */
function processPhoneResult(oXml)
{
	var iStatus	=	oXml.getElementsByTagName("StatusCode")[0].firstChild.nodeValue;
	if (iStatus != '1')
	{
		alert(oXml.getElementsByTagName("StatusMessage")[0].firstChild.nodeValue);
		document.getElementById('telephone').value='';
	} else {
		document.getElementById('telephone').value = oXml.getElementsByTagName("Phonenumber")[0].firstChild.nodeValue
	}
	
}



function checkPassword()
{
   pw1=document.getElementById('client_password').value;
   pw2=document.getElementById('client_password2').value;
   if (pw1 != '' && pw2!='')
   {
      if(pw1 != pw2)
      {
         alert("Wachtwoord is niet hetzelfde ingevuld.");
         document.getElementById('client_password').value = ''
         document.getElementById('client_password2').value = ''
      }
   }
}
function selection_to_date(identifier)
{
   day      = getValueById(identifier+"_day");
   month    = getValueById(identifier+"_month");
   year     = getValueById(identifier+"_year");
   document.getElementById(identifier).value = day + "-" + month + "-" + year;
   /* used for 
   client_birthdate
   client_ect_date
   partner_birthdate
   partner_ect_date   
   */
}
