var isValidPage = true;
var errorMessages = new Array();

function OpenReportWindow(url)
{
    newwindow = window.open(url, 'voorbeeld', 'resizable=1,left=100,top=100,height=600,width=850');
    //newwindow=window.open(url,'name','left=100,top=100,height=520,width=800,resizable=true,scrollbars=true,toolbar=no,menubar=no,location=no');
    if (window.focus) {newwindow.focus()}
}

function OpenReportWindow(url, windowwidth, windowheight) {
    newwindow = window.open(url, "voorbeeld", 'location=no,left=100,top=100,height=' + windowheight + ',width=' + windowwidth);
    //newwindow=window.open(url,'name','left=100,top=100,height=520,width=800,resizable=true,scrollbars=true,toolbar=no,menubar=no,location=no');
    if (window.focus) { newwindow.focus() }
}
		
function trimspaces(strValue)
{
	strValue=strValue.replace(/^[\s]+/g,"");
	strValue=strValue.replace(/[\s]+$/g,"");
	return strValue;
}

function IsEmpty(id)
{
	Item = document.getElementById(id);
	var chkEmpty = false;
	
	//first trim variable
	if(Item != null)
	{
		strValue = trimspaces(Item.value);	
		if (strValue == '')
		{
			chkEmpty = true;
		}	
	}
	
	return chkEmpty;
}

function HaveSameValue(id1, id2)
{
	Item1 = document.getElementById(id1);
	Item2 = document.getElementById(id2);
	var chkSameValue = false;

	if(Item1 != null && Item2 != null)
	{
		//first trim variable
		strValue1 = trimspaces(Item1.value);
		strValue2 = trimspaces(Item2.value);
		if (strValue1 == strValue2)
		{
			chkSameValue = true;
		}	
	}

	return chkSameValue;
}


function IsOnlyNumericField(id)
{
	Item = document.getElementById(id);
	if(Item == null) return false;

	return HasOnlyNumbers(Item.value);	
}


function IsNumeric(sText)
{
	var charSign;
	var validChars = "0123456789.";
	var isNumber = true;

	for (i = 0; i < sText.length && isNumber == true; i++)
	{
		charSign = sText.charAt(i);
		if (validChars.indexOf(charSign) == -1)
		{
			isNumber = false;
		}
	}
	return isNumber;
}


function HasOnlyNumbers(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 showFaqText(faqNumber)
{
	location.replace('faq.htm#'+faqNumber);
}

function IsValidDutchPostalCode(id)
{
	var ValidCharsPart1 = "0123456789";
	var ValidCharsPart2 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var Char;

	Item = document.getElementById(id);

	//first trim variable
	if(Item == null) return false;

	// postal code must have 6 characters
	strValue = trimspaces(Item.value);
	if (strValue.length != 6) return false;

	// first; 4 numbers
	for (i = 0; i < 4; i++)
	{
		Char = strValue.charAt(i);
		if (ValidCharsPart1.indexOf(Char) == -1) return false;
	}

	// second; 2 letters
	for (i = 4; i < 6; i++)
	{
		Char = strValue.charAt(i);
		if (ValidCharsPart2.indexOf(Char) == -1) return false;
	}

	return true;
}


function IsValidBankAccountNumber(id)
{
	Item = document.getElementById(id);
	
	//first trim variable
	if(Item == null) return false;

	// accountnumber can only contain numbers and .
	strValue = trimspaces(Item.value);
	if (!IsNumeric(strValue)) return false;
	
	strValue = strValue.replace(".","");

	//TODO: doe banknummer check voor nummers met 9 of 10 posities, korte nummers zijn Postbank nummers
	if (strValue.length>10) return false;
	
	return true;
}


function IsValidAmount(id)
{
	var minValue = 3000;
	var maxValue = 500000;
	Item = document.getElementById(id);

	//first trim variable
	if(Item == null) return false;

	// amount can only contain numbers and .
	strValue = trimspaces(Item.value);
	if (!IsNumeric(strValue)) return false;
	
	var floatVal = parseFloat(strValue);
	
	if (floatVal < minValue || floatVal > maxValue) return false;
	
	return true;
}


function IsValidCofCNumber(id)
{
	var validChars = "0123456789. ";
	var charSign;

	// get field
	Item = document.getElementById(id);	
	if(Item == null) return false;

	// Chamber of Commerce number 
	strValue = trimspaces(Item.value);
	if (strValue.length < 2 || strValue.length > 15) return false;

	for (i = 0; i < strValue.length; i++)
	{
		charSign = strValue.charAt(i);
		if (validChars.indexOf(charSign) == -1)	return false;
	}
	return true;
}


function ShowMessage()
{
	s = "";
	for (i=0; i<errorMessages.length; i++) 
	{
		s += errorMessages[i] + "\n";
	}
	alert(s);
	errorMessages = new Array();
}

function toggleShow(id) 
{
	if (document.getElementById) 
	{
    	eval("document.getElementById(id).style.visibility = \"visible\"");
		eval("document.getElementById(id).style.display = \"block\"");
	} 
	else 
	{
   	    if (document.layers) {
  	        	document.layers[id].visibility = show;
  	         	document.layers[id].display = block;
  	    } else {
  	        if (document.all) {
            eval("document.all." + id + ".style.visibility = \"visible\"");
  		    eval("document.all." + id + ".style.display = \"block\"");
  	        }
 	    }
 	}
}

function toggleHide(id) 
{
	if (document.getElementById) 
	{
    	eval("document.getElementById(id).style.visibility = \"hidden\"");
		eval("document.getElementById(id).style.display = \"none\"");
	} 
	else 
	{
   	    if (document.layers) {
  	        	document.layers[id].visibility = hidden;
  	         	document.layers[id].display = none;
  	    } else {
  	        if (document.all) {
            eval("document.all." + id + ".style.visibility = \"hidden\"");
  		    eval("document.all." + id + ".style.display = \"none\"");
  	        }
 	    }
 	}
}

function IsValidDate(id)
{ 
	
	var item = document.getElementById(id).value;
	var splittedString = item.split("-");
	
	if (splittedString.length == 3)
	{
		d = splittedString[0];
		m = splittedString[1]-1; // m 0-11
		y = splittedString[2];
		with (new Date(y, m, d))
    		return ((getDate()==d) && (getMonth()==m)) 
	}
	return false;
}

function IsValidPasswordChange()
{
	if(IsEmpty('fldOldPassword') && IsEmpty('fldNewPassword'))
	{	return; }
	
	if(!IsEmpty('fldOldPassword') && IsEmpty('fldNewPassword'))
	{
		errorMessages[errorMessages.length] = "Nieuw wachtwoord kan niet leeg zijn";
		isValidPage = false;
		return;
	}	

	if(!HaveSameValue('fldNewPassword', 'fldNewPassword2'))
	{
		errorMessages[errorMessages.length] = "Nieuw wachtwoord is niet goed bevestigd";
		isValidPage = false;
	}	

}

function IsValidLastName()
{
	if(IsEmpty('fldContactpersoon'))
	{
		errorMessages[errorMessages.length] = "Geen achternaam voor contactpersoon ingevuld";
		isValidPage = false;
	}	
}

function IsValidInitials()
{
	if(IsEmpty('fldInitialen'))
	{
		errorMessages[errorMessages.length] = "Geen initialen ingevuld";
		isValidPage = false;
	}	
}

function IsValidDriverName()
{
	if(IsEmpty('fldBerijder'))
	{
		errorMessages[errorMessages.length] = "Geen naam voor bestuurder ingevuld";
		isValidPage = false;
	}	
}

function IsValidEmployeeName()
{
	if(IsEmpty('fldNaam'))
	{
		errorMessages[errorMessages.length] = "Geen naam ingevuld";
		isValidPage = false;
	}	
}

function IsValidLicensePlate()
{
	if(IsEmpty('fldKenteken'))
	{
		errorMessages[errorMessages.length] = "Geen kenteken ingevuld";
		isValidPage = false;
	}
	
	Item = document.getElementById('fldKenteken');
	
	//kenteken moet 6 tekens hebben
	if(Item.value.length > 0 && Item.value.length < 6)
	{
		errorMessages[errorMessages.length] = "Kenteken moet precies 6 karakters bevatten";
		isValidPage = false;
	}
}

function IsValidRegisterCode()
{
	if(IsEmpty('fldRegisterCode'))
	{
		errorMessages[errorMessages.length] = "Geen meldcode ingevuld";
		isValidPage = false;
		return;
	}
	
	if(!IsOnlyNumericField('fldRegisterCode'))
	{
		errorMessages[errorMessages.length] = "Meldcode is niet numeriek";
		isValidPage = false;
		return;
	}
	
}

function IsValidFiscalValue()
{
	if(IsEmpty('fldFiscaleWaarde'))
	{
		errorMessages[errorMessages.length] = "Geen fiscale waarde ingevuld";
		isValidPage = false;
	}
	
	if (!IsValidAmount('fldFiscaleWaarde'))
	{
		errorMessages[errorMessages.length] = "Incorrecte, te lage of te hoge fiscale waarde ingevuld";
		isValidPage = false;
	}
}

function IsValidOwner()
{
	if(IsEmpty('fldSelectEigenaar'))
	{
		errorMessages[errorMessages.length] = "Geen eigenaar geselecteerd";
		isValidPage = false;
	}
}

function IsValidStreet()
{
	if(IsEmpty('fldStraat'))
	{
		errorMessages[errorMessages.length] = "Geen straatnaam ingevuld";
		isValidPage = false;
	}
}

function IsValidNumber()
{
	if(IsEmpty('fldHuisnummer'))
	{
		errorMessages[errorMessages.length] = "Geen nummer ingevuld";
		isValidPage = false;
	}
}

function IsValidPostalCode()
{
	if(IsEmpty('fldPostcode'))
	{
		errorMessages[errorMessages.length] = "Geen postcode ingevuld";
		isValidPage = false;
		return;
	}
	
	if(!IsValidDutchPostalCode('fldPostcode'))
	{
		errorMessages[errorMessages.length] = "Ongeldige postcode ingevuld";
		isValidPage = false;
	}
}

function IsValidCity()
{
	if(IsEmpty('fldPlaats'))
	{
		errorMessages[errorMessages.length] = "Geen plaats ingevuld";
		isValidPage = false;
	}
}

function IsValidAdres()
{
	IsValidStreet();
	IsValidNumber();
	IsValidPostalCode();
	IsValidCity();
}

function IsValidCompanyName()
{
	if(IsEmpty('fldBedrijfsnaam'))
	{
		errorMessages[errorMessages.length] = "Geen bedrijfsnaam ingevuld";
		isValidPage = false;
	}
}

function IsValidMerchantName()
{
	if(IsEmpty('fldHandelsnaam'))
	{
		errorMessages[errorMessages.length] = "Geen handelsnaam ingevuld";
		isValidPage = false;
	}
}

function IsValidCofC()
{
	if(IsEmpty('fldKVKnummer'))
	{
		errorMessages[errorMessages.length] = "Geen Kamer van Koophandel nummer ingevuld";
		isValidPage = false;
	}
	else if (!IsValidCofCNumber('fldKVKnummer'))
	{
		errorMessages[errorMessages.length] = "Incorrect Kamer van Koophandel nummer ingevuld";
		isValidPage = false;
	}

	if(IsEmpty('fldKVKplaats'))
	{
		errorMessages[errorMessages.length] = "Geen Kamer van Koophandel plaats ingevuld";
		isValidPage = false;
	}
	
}

function IsValidBankDetails()
{
	if(IsEmpty('fldBankGiroRek'))
	{
		errorMessages[errorMessages.length] = "Geen rekeningnummer ingevuld";
		isValidPage = false;
		return;
	}
	
	if(!IsValidBankAccountNumber('fldBankGiroRek'))
	{
		errorMessages[errorMessages.length] = "Incorrect rekeningnummer ingevuld";
		isValidPage = false;
	}

}

function IsValidBirthday()
{
	if(IsEmpty('fldGeboortedatum'))
	{
		errorMessages[errorMessages.length] = "Geen geboortedatum ingevuld";
		isValidPage = false;
		return;
	}

	if (!IsEmpty('fldGeboortedatum') && !IsValidDate('fldGeboortedatum'))
	{		
		errorMessages[errorMessages.length] = "Geen correcte datum ingevuld voor geboortedatum";
		isValidPage = false;
	}

}

function IsValidDriversLicenseNumber()
{
	if(IsEmpty('fldRijbewijsNr'))
	{
		errorMessages[errorMessages.length] = "Geen rijbewijs nummer ingevuld";
		isValidPage = false;
	}

}

function ValidateEmployer()
{
	isValidPage = true;

	IsValidPasswordChange();
	IsValidLastName();
	IsValidInitials();
	IsValidCompanyName();
	IsValidMerchantName();
	IsValidCofC();
	IsValidAdres();
	IsValidBankDetails();
	
	if(!isValidPage)
	{
		ShowMessage();
	}

	return isValidPage;
}

function ValidateEmployee()
{
	isValidPage = true;

	IsValidPasswordChange();
	IsValidEmployeeName();
	IsValidBirthday();
	IsValidDriversLicenseNumber();
	IsValidAdres();
	IsValidBankDetails();
	IsValidDriversLicenseNumber();
	
	if(!isValidPage)
	{
		ShowMessage();
	}

	return isValidPage;
}

function EmployerMessageBeforeSaving()
{
	isValidPage = true;
	
	IsValidPasswordChange();
	IsValidLastName();
	IsValidInitials();
	IsValidCompanyName();
	IsValidMerchantName();
	IsValidCofC();
	IsValidAdres();
	IsValidBankDetails();
	errorMessages = new Array();

	if (isValidPage)
	{
		alert('Het opslaan en aanmaken van uw contract kan enige tijd duren. Wacht tot het volgende scherm verschijnt en druk niet meer op de knop Opslaan.');
	}
}

function EmployeeMessageBeforeSaving()
{
	isValidPage = true;

	IsValidPasswordChange();
	IsValidEmployeeName();
	IsValidBirthday();
	IsValidDriversLicenseNumber();
	IsValidAdres();
	IsValidBankDetails();
	errorMessages = new Array();
	
	if (isValidPage)
	{
		alert('Het opslaan en aanmaken van uw contract kan enige tijd duren. Wacht tot het volgende scherm verschijnt en druk niet meer op de knop Opslaan.');
	}
}

function ValidateNewDriver()
{
	isValidPage = true;

	IsValidDriverName();
	if (!IsValidEmail('fldEmail')) 
	{
		errorMessages[errorMessages.length] = "Geen of incorrect email adres ingevuld";
		isValidPage = false;
	}
	IsValidLicensePlate();
	IsValidRegisterCode();
	IsValidFiscalValue();
	IsValidOwner();

	if(!isValidPage)
	{
		ShowMessage();
	}

	return isValidPage;
}

function ValidateEditedDriver()
{
	isValidPage = true;

	IsValidDriverName();
	if (!IsValidEmail('fldEmail')) 
	{
		errorMessages[errorMessages.length] = "Geen of incorrect email adres ingevuld";
		isValidPage = false;
	}
	IsValidLicensePlate();
	IsValidRegisterCode();
	IsValidFiscalValue();
	IsValidOwner();

	if(!isValidPage)
	{
		ShowMessage();
	}

	return isValidPage;
}

function ValidateEmail(id)
{
	if (!IsValidEmail(id)) 
	{
		alert("U heeft een incorrect emailadres ingevoerd!");
		return false;
	}
}


function IsValidEmail(id)
{
	Item = document.getElementById(id);
	var blnEmail = false;
	if(Item != null)
	{
		var email = Item.value;
		var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})?$/;
		if (filter.test(email)) {
			blnEmail = true;
		};
	}
	return blnEmail;
}


function ValidateEmailToEmployer(idname, idemail, idNameEmployer, idemailEmployer)
{
	if (IsEmpty(idname))
	{
		alert("U heeft geen naam ingevoerd!");
		return false;
	}
	
	if (!IsValidEmail(idemail)) 
	{
		alert("U heeft een incorrect emailadres ingevoerd!");
		return false;
	}

	if (IsEmpty(idNameEmployer))
	{
		alert("U heeft geen naam werkgever ingevoerd!");
		return false;
	}

	if (!IsValidEmail(idemailEmployer)) 
	{
		alert("U heeft een incorrect emailadres ingevoerd voor uw werkgever!");
		return false;
	}

	return true;
}

function SetArrivalDate()
{
	arrivalDate = new Date();
	arrivalDate.setDate(arrivalDate.getDate() + 2);
	
	strDay = new String(arrivalDate.getDate());
	strMonth = new String(arrivalDate.getMonth()+1);
	strYear = new String(arrivalDate.getFullYear());
	
	strDay = (strDay.length == 1) ? "0" + strDay: strDay;
	strMonth = (strMonth.length == 1) ? "0" + strMonth: strMonth;
	
	document.getElementById('arrDate').value = strDay + '-' + strMonth + '-' + strYear;
}

function SetDepartureDate()
{
	departureDate = new Date();
	departureDate.setDate(departureDate.getDate() + 4);
	
	strDay = new String(departureDate.getDate());
	strMonth = new String(departureDate.getMonth()+1);
	strYear = new String(departureDate.getFullYear());
	
	strDay = (strDay.length == 1) ? "0" + strDay: strDay;
	strMonth = (strMonth.length == 1) ? "0" + strMonth: strMonth;
	
	document.getElementById('depDate').value = strDay + '-' + strMonth + '-' + strYear;
}

function FillCity(destination)
{
	document.getElementById('destination').value = destination;
}



function IsBeforeTodayDate(id)
{ 
	
	var item = document.getElementById(id).value;
	var splittedString = item.split("-");
	var today = new Date();

	if (splittedString.length == 3)
	{
		d = splittedString[0];
		m = splittedString[1]-1; // m 0-11
		y = splittedString[2];
		
		enteredDate = new Date(y, m, d);
		return enteredDate < today;
		
	}
	return false;
}

function DepDateNotAfterArrDate(idArrDate, idDepDate)
{ 
	var item = document.getElementById(idArrDate).value;
	var splittedString = item.split("-");

	if (splittedString.length == 3)
	{
		d = splittedString[0];
		m = splittedString[1]-1; // m 0-11
		y = splittedString[2];
		
		arrDay = new Date(y, m, d);
		
		item = document.getElementById(idDepDate).value;
		splittedString = item.split("-");
		
		if (splittedString.length == 3)
		{
			d = splittedString[0];
			m = splittedString[1]-1; // m 0-11
			y = splittedString[2];
			
			depDay = new Date(y, m, d);
		
			return arrDay >= depDay;
		}
		return false;
	}
	return false;
}



function IsValidCreditCardNr(id)
{
	Item = document.getElementById(id);
	var blnResult = false;
	if(Item != null)
	{
		var filter  = /^(\d)*$/;
		if (filter.test(Item.value)) 
		{
			blnResult = true;
		}
	}
	return blnResult;
}

function ReLoadHotellistPage(id)
{
	Item = document.getElementById(id);
    location.href = 'default.aspx?id=2&amp;' + id + '=' + Item.checked;
}

function popupWindows(pageName)
{
	var st = pageName.replace(/\+/g, '%2b');
	var p = window.open(st);
}

function poptastic(url)
{
	var newwindow;
	newwindow=window.open(url,'name','height=400,width=200,toolbar=no,menubar=no,location=no');
	if (window.focus) {newwindow.focus()}
}

function toggleShowHideAnders(anders)
{
	var selectedText = trimspaces(document.getElementById('fldSelectEigenaar').value);
	anders = trimspaces(anders);

	if (selectedText == anders)
	{
		toggleShow('txtAnders');
	}
	else
	{
		toggleHide('txtAnders');
	}
}

function questionAnswered()
{

	if (!document.aanmeldingsvragen.radQ1[0].checked &&	
		!document.aanmeldingsvragen.radQ2[0].checked &&	
		!document.aanmeldingsvragen.radQ3[0].checked)
	{
		alert("Rijbijtellingvrij is voor u waarschijnlijk niet interessant. Wilt u meer informatie bekijk dan deze website verder of neem contact op met BasiqRent. Wilt u toch een login account ontvangen, vul dan uw email adres in.");
		toggleShow('lblAanmelden');
		toggleShow('fldNewEmail');
		// toggleShow('btnClear');
		toggleShow('btnAnswer');		
	}
	else
	{
		//alert("Rijbijtellingvrij is voor u interessant. Vul nu u email adres in om een login account te ontvangen.");
		toggleShow('lblAanmelden');
		toggleShow('fldNewEmail');
		// toggleShow('btnClear');
		toggleShow('btnAnswer');		
	}
	
}

function toggleShowHideEmailAanmelden()
{
	if (document.getElementById('fldSelectEigenaar').value == 'Anders, namelijk:')
	{
		toggleShow('txtAnders');
	}
	else
	{
		toggleHide('txtAnders');
	}
}

function copyValueToEmptyField(idFrom, idTo)
{

	if (IsEmpty(idTo))
	{
		itemFrom = document.getElementById(idFrom);
		itemTo = document.getElementById(idTo);
		
		itemTo.value = trimspaces(itemFrom.value);
	}

}


