//		datum		functie				aanpassing
//v1r1
//v1r2			RadioChecked(veld)		v1r2 Verbeterde controle
//v1r3	21-10-2004	Bericht(tekst, veld)		v1r3 veld is nu een object, geen verwijzing meer naar form[0]
//				Terug()				verwijderd
//		26-10-2004	Popup(Url, Breedte, Hoogte)	voor het openen van een url in een popup
//		18-11-2004	IsPostcode(invoer, land)	Duitse check toegevoegd
//v1r4	24-11-2004	IsDatum(invoer, dateType)	Controle datum
//v1r5	06-01-2005	MM_preloadImages()
//				MM_swapImgRestore()
//				MM_findObj(n, d)
//				MM_swapImage()
//v1r6	09-02-2005	IsDecimaal(invoer)		Decimaal datum
//		11-02-2005	IsDatum(invoer)			DateType weg (niet relevant)
//		11-02-2006	DatumBlur(objectNaam)		DateType weg (niet relevant)
//		11-02-2006	DatumKeyUp(objectNaam, e)	DateType weg (niet relevant)
//		11-02-2006	DateType				1,2,3 wordt *USA,*YDM,*EUR
//		15-02-2005	Detail(taak, recordnummer)	Submitten van detailscherm
//		15-02-2005	Vertalen(veld)			Submitten van vertaalmodus

var DecimaalTeken = ",";
var Separator = ".";
// If you are using any Java validation on the back side you will want to use the / because 
// Java date validations do not recognize the dash as a valid date separator.
var DateType = "*EUR"; // Global value for type of date format
//                *USA = mm/dd/yyyy
//                *YDM = yyyy/dd/mm  (Unable to do date check at this time)
//                *EUR = dd.mm.yyyy
var YearType = 4; //Set to 2 or 4 for number of digits in the year for Netscape
var YearLength = 2; // Set to 4 if you want to force the user to enter 4 digits for the year before validating.
var NieuweStatus = "";
var Blokkeren = false;

function Bericht(tekst, veld)	//v1r3 veld is nu een object, geen verwijzing meer naar form[0]
{
	alert(tekst);
	if(veld == null || veld.type == null)
	{
		if(veld[0] == null)
		{
			return false;
		}
		var veldObject = veld[0];
	}
	else
	{
		veldObject = veld;
	}
	if(veldObject.type != null)
	{
		veldObject.focus();
		if(veldObject.type.toLowerCase() != "select-one" && veldObject.type.toLowerCase() != "select-multiple")
		{
			veldObject.select();
		}
	}
	return false;
}

function Controle(invoer, lengte, geldigeTekens)
{
	if(invoer.length < lengte && lengte != 0)
	{
		return false;
	}
	for(var a = 0; a < invoer.length; a ++)
	{
		if(geldigeTekens.indexOf(invoer.substr(a, 1)) == -1)
		{
			return false;
		}
	}
	return true;
}

function dateValid(objName)
{
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intday;
	var intMonth;
	var intYear;
	var booFound = false;
	var datefield = objName;
	var intElementNr;
	var strMonthArray = new Array("Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec");
	if(objName.length < 1)
	{
		return true;
	}
	if(objName.indexOf(Separator) != -1)
	{
		strDateArray = objName.split(Separator);
		if(strDateArray.length != 3)
		{
			return false;
		}
		else
		{
			strDay = strDateArray[0];
			strMonth = strDateArray[1];
			strYear = strDateArray[2];
		}
		booFound = true;
	}
	if(! booFound)
	{
		if(objName.length > 5)
		{
			strDay = objName.substr(0, 2);
			strMonth = objName.substr(2, 2);
			strYear = objName.substr(4);
		}
	}
	//Adjustment for short years entered
	if(strYear.length == 2)
	{
		strYear = '20' + strYear;
	}
	strTemp = strDay;
	strDay = strMonth;
	strMonth = strTemp;
	intday = parseInt(strDay, 10);
	if(isNaN(intday))
	{
		return false;
	}
	intMonth = parseInt(strMonth, 10);
	if(isNaN(intMonth))
	{
		for(i = 0; i < 12; i ++)
		{
			if(strMonth.toUpperCase() == strMonthArray[i].toUpperCase())
			{
				intMonth = i + 1;
				strMonth = strMonthArray[i];
				i = 12;
			}
		}
		if(isNaN(intMonth))
		{
			return false;
		}
	}
	intYear = parseInt(strYear, 10);
	if(isNaN(intYear))
	{
		return false;
	}
	if(intMonth > 12 || intMonth < 1)
	{
		return false;
	}
	if((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1))
	{
		return false;
	}
	if((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1))
	{
		return false;
	}
	if(intMonth == 2)
	{
		if(intday < 1)
		{
			return false;
		}
		if(Schrikkel(intYear) == true)
		{
			if(intday > 29)
			{
				return false;
			}
		}
		else
		{
			if(intday > 28)
			{
				return false;
			}
		}
	}
	return true;
}

function Datum(invoer)
{
	var gecorrigeerdeString = "";	
	var geldigeTekens = "0123456789";
	var teller = 0;
	for(var a = 0; a < invoer.value.length; a ++)
	{
		if(geldigeTekens.indexOf(invoer.value.substr(a, 1)) != -1)
		{
			gecorrigeerdeString += invoer.value.substr(a, 1);
			teller ++;
			//xx-xx-xxxx (1 of 3) of xxxx-xx-xx (2)
			if(((DateType == "*USA" || DateType == "*EUR") && teller == 2) || (DateType == "*YDM" && teller == 6) || (teller == 4))
			{
				gecorrigeerdeString += Separator;
			}
		}
	}
	invoer.value = gecorrigeerdeString;
}

function DatumBlur(objectNaam)
{
	// objectNaam = object name
	// objectNaam.value = value in the field being checked
	// e = event
	// DateType
	// *USA = mm/dd/yyyy
	// *YDM = yyyy/mm/dd
	// *EUR = dd.mm.yyyy
	if(objectNaam.value.length < 8 && objectNaam.value.length >=1 || objectNaam.value.length == 9)
	{
		return false;
	}
	// Reformat date to format that can be validated. mm/dd/yyyy
	// Additional date formats can be entered here and parsed out to
	// a valid date format that the validation routine will recognize.
	if(DateType == "*USA")
	{ // mm/dd/yyyy
		var mMonth = objectNaam.value.substr(0, 2);
		var mDay = objectNaam.value.substr(3, 2);
		var mYear = objectNaam.value.substr(6, 4);
	}
	if(DateType == "*YDM")
	{ // yyyy/mm/dd
		var mYear = objectNaam.value.substr(0, 4)
		var mMonth = objectNaam.value.substr(5, 2);
		var mDay = objectNaam.value.substr(8, 2);
	}
	if(DateType == "*EUR")
	{ // dd.mm.yyyy
		var mDay = objectNaam.value.substr(0, 2);
		var mMonth = objectNaam.value.substr(3, 2);
		var mYear = objectNaam.value.substr(6, 4)
	}
	if(YearLength == 4)
	{
		if(mYear.length < 4)
		{
			return false;
		}
	}
	// Store reformatted date to new variable for validation.
	var vDateValueCheck = mMonth + Separator + mDay + Separator + mYear;
	if(mYear.length == 2 && YearType == 4)
	{
		//Turn a two digit year into a 4 digit year
		var mToday = new Date();
		//If the year is greater than 30 years from now use 19, otherwise use 20
		var checkYear = mToday.getFullYear() + 30; 
		var mCheckYear = '20' + mYear;
		if(mCheckYear >= checkYear)
		{
			mYear = '19' + mYear;
		}
		else
		{
			mYear = '20' + mYear;
		}
		vDateValueCheck = mMonth + Separator + mDay + Separator + mYear;
		// Store the new value back to the field.  This function will
		// not work with date type of 2 since the year is entered first.
		if(DateType == "*USA")
		{ // mm/dd/yyyy
			objectNaam.value = mMonth + Separator + mDay + Separator + mYear;
		}
		if(DateType == "*EUR")
		{ // dd.mm.yyyy
			objectNaam.value = mDay + Separator + mMonth + Separator + mYear;
		}
	} 
	if(! dateValid(vDateValueCheck))
	{
		return false;
	}
	return true;
}

function DatumKeyUp(objectNaam, e)
{
	if(StuurTeken(e))
	{
		objectNaam.select();
		objectNaam.focus();
		return false;
	}
	Datum(objectNaam);
}

function DecimaalBlur(invoer)
{
	var gecorrigeerdeString = "";
	var aantalKommas = 0;
	var geldigeTekens = "0123456789";
	for(var a = 0; a < invoer.value.length; a ++)
	{
		if(geldigeTekens.indexOf(invoer.value.substr(a, 1)) != -1)
		{
			gecorrigeerdeString += invoer.value.substr(a, 1);
		}
		if(invoer.value.substr(a, 1) == DecimaalTeken)
		{
			if(aantalKommas == 0)
			{
				gecorrigeerdeString += DecimaalTeken;
			}
			aantalKommas += 1;
		}
	}
	invoer.value = gecorrigeerdeString;
}

function DecimaalKeyUp(objectNaam, e)
{
	if(StuurTeken(e))
	{
		objectNaam.select();
		objectNaam.focus();
		return false;
	}
	DecimaalBlur(objectNaam);
}

function Detail(taak, recordnummer)
{
	var frm = document.frmtaak;
	frm.task.value = taak;
	frm.rrn.value = recordnummer;
	frm.submit();
}

function EerstHoofdletterBlur(invoer)
{
	invoer.value = invoer.value.substr(0, 1).toUpperCase() + invoer.value.substr(1, invoer.value.length - 1).toLowerCase();
}

function HoofdletterBlur(invoer)
{
	var gecorrigeerdeString = "";
	var geldigeTekens = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	invoer.value = invoer.value.toUpperCase();
	for(var a = 0; a < invoer.value.length; a ++)
	{
		if(geldigeTekens.indexOf(invoer.value.substr(a, 1)) != -1)
		{
			gecorrigeerdeString += invoer.value.substr(a, 1);
		}
	}
	invoer.value = gecorrigeerdeString;
}

function HoofdletterKeyUp(objectNaam, e)
{
	if(StuurTeken(e))
	{
		objectNaam.select();
		objectNaam.focus();
		return false;
	}
	HoofdletterBlur(objectNaam);
}

function IsDatum(invoer)
{
	if(DateType == "*USA")// mm/dd/yyyy
	{
		return dateValid(invoer.substr(0, 2) + Separator + invoer.substr(3, 2) + Separator + invoer.substr(6, 4));
	}
	if(DateType == "*YDM")// yyyy/mm/dd
	{
		return dateValid(invoer.substr(5, 2) + Separator + invoer.substr(7, 2) + Separator + invoer.substr(0, 4));
	}
	if(DateType == "*EUR")// dd.mm.yyyy
	{
		return dateValid(invoer.substr(3, 2) + Separator + invoer.substr(0, 2) + Separator + invoer.substr(6, 4));
	}
}

function IsDecimaal(invoer)
{
	pos = invoer.indexOf(DecimaalTeken);
	if(pos != -1)
	{
		pos = invoer.indexOf(DecimaalTeken, pos + 1);
		if(pos != -1)  //er mag geen tweede decimaalteken voorkomen
		{
			return false;
		}
	}	
	var geldigeTekens = "0123456789" + DecimaalTeken;
	return Controle(invoer, 0, geldigeTekens)
}

function IsEmail(invoer)  //controle geldigheid e-mail
{
	invoer = Trim(invoer);
	var pos = invoer.indexOf("@");
	if(invoer.length > 5)
	{
		if(invoer.indexOf(" ") == -1) //string mag geen spaties bevatten
		{
			if(pos > 0 && pos < invoer.length - 4)
			{
				pos=invoer.indexOf("@", pos + 1);  //er mag geen tweede @ voorkomen
				if(pos == -1)
				{
					pos = invoer.length - invoer.lastIndexOf("."); //laatste positie van rechts van . in dotpos
					if(pos > 2 && pos < 6)//domein moet minimaal 2 maximaal 4 tekens bevatten
					{
						return true;
					}
				}
			}
		}
	}
	return false;
}

function IsLetter(invoer, lengte)
{
	var geldigeTekens = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	return Controle(invoer, lengte, geldigeTekens)
}

function IsNummer(invoer, lengte)
{
	var geldigeTekens = "0123456789";
	return Controle(invoer, lengte, geldigeTekens)
}

function IsPostcode(invoer, land)
{
	if(land.toUpperCase() == "DK")
	{
		return (IsNummer(invoer, 4) || IsNummer(invoer, 5) || IsNummer(invoer, 6) || IsNummer(invoer, 7) || IsNummer(invoer, 8) || IsNummer(invoer, 9) || IsNummer(invoer, 10));
	}
	if(land.toUpperCase() == "BE")
	{
		return IsNummer(invoer, 4);
	}
	if(land.toUpperCase() == "FR")
	{
		return IsNummer(invoer, 5);
	}
	if(land.toUpperCase() == "DE")
	{
		return IsNummer(invoer, 5);
	}
	if(! IsNummer(invoer.substr(0, 4), 4))
	{
		return false;
	}
	return IsLetter(invoer.substr(4, 2), 2);
}

function IsTelefoon(invoer, lengte)
{
	var geldigeTekens = "1234567890-+ ()";
	return Controle(invoer, lengte, geldigeTekens)
}

function MM_findObj(n, d)//v1r5
{
	var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_preloadImages()//v1r5
{
	var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImage()//v1r5
{
	var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_swapImgRestore()//v1r5
{
	var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function NummerBlur(invoer)
{
	var gecorrigeerdeString = "";
	var geldigeTekens = "0123456789";
	for(var a = 0; a < invoer.value.length; a ++)
	{
		if(geldigeTekens.indexOf(invoer.value.substr(a, 1)) != -1)
		{
			gecorrigeerdeString += invoer.value.substr(a, 1);
		}
	}
	invoer.value = gecorrigeerdeString;
}

function NummerKeyUp(objectNaam, e)
{
	if(StuurTeken(e))
	{
		objectNaam.select();
		objectNaam.focus();
		return false;
	}
	NummerBlur(objectNaam);
}

function Popup(Url, Breedte, Hoogte)
{
	var resizen = 1;
	var dag = new Date();
	var tijd = dag.getTime();
	var breedte = (screen.width / 2) - Breedte / 2;
	var hoogte = (screen.height / 2) - Hoogte / 2;
	if(screen.width == 800)
	{
		breedte = 0;
		hoogte = 0;
	}
	eval("page" + tijd + " = window.open(Url, '" + tijd + "', 'toolbar=0, location=0, statusbar=0, menubar=0, resizable=" + resizen + ", width=" + Breedte + ", height=" + Hoogte + ", top=" + hoogte + ", left=" + breedte + "');");
}

function RadioChecked(veld) //v1r2 Verbeterde controle
{	
	if(veld == null) //veld is niet gedefinieerd op het scherm
	{
		return true;
	}
	if(veld.type == null)
	{
		for(var a = 0; a < veld.length; a ++) //multiple checkbox
		{
			if(veld[a].checked)
			{
				return true;	
			}	
		}
	}
	else
	{
		if(veld.type.toLowerCase() == "hidden") //hidden veld
		{
			if(veld.value != "")
			{
				return true;
			}
		}
		else //single checkbox
		{
			if(veld.checked)
			{
				return true;
			}
		}
	}
	return false;	
}

function Schrikkel(intYear)
{
	if(intYear % 100 == 0)
	{
		if(intYear % 400 == 0)
		{
			return true;
		}
	}
	else
	{
		if((intYear % 4) == 0)
		{
			return true;
		}
	}
	return false;
}

function StuurTeken(e)
{
	var whichCode = (window.Event) ? e.which : e.keyCode;
	var StuurTekens = "8,9,16,35,36,37,39,45,46"; //Backspace,ShiftTab,Spatie,End,Home,<-,->,Ins,Del
	if(StuurTekens.indexOf(whichCode) != -1)
	{
		return true;
	}
	return false;
}

function TijdBlur(invoer)
{
	var gecorrigeerdeString = "";
	var geldigeTekens = "0123456789";
	for(var a = 0; a < invoer.value.length; a ++)
	{
		if(geldigeTekens.indexOf(invoer.value.substr(a, 1)) != -1)
		{
			gecorrigeerdeString += invoer.value.substr(a, 1);
		}
		if(a == 1 || a == 4)
		{
			gecorrigeerdeString += ".";
		}
	}
	invoer.value = gecorrigeerdeString;
}

function TijdKeyUp(objectNaam, e)
{
	if(StuurTeken(e))
	{
		objectNaam.select();
		objectNaam.focus();
		return false;
	}
	TijdBlur(objectNaam);
}


function Trim(invoer) //trimmen van string
{  
	var start = 0;
	var end = invoer.length;
	while ((start < end) && (invoer.charAt(start) == ' '))
	{
		start++;
	}
	while ((end > 0) && (invoer.charAt(end - 1) == ' '))
	{
		end--;
	}
	return invoer.substring(start, end);
}

function Versturen()
{
	if(Blokkeren)
	{
		return false;
	}
	if(! Validatie())
	{
		return false;
	}
	Blokkeren = true;
	var frm = document.forms[0];
	frm.submit();
}

function Vertalen(veld)
{
	var frm = document.frmvertalen;
	frm.vertaalmodus.value = "N"; //initieel 'N'
	if(veld.checked)
	{
		frm.vertaalmodus.value = veld.value;
	}
	frm.submit();	
}

function VoorlettersBlur(tekst)
{
	tekst.value = tekst.value.toUpperCase();
	var GecorrigeerdeString = "";	
	var GeldigeTekens = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	for(var a = 0; a < tekst.value.length; a ++)
	{
		if(GeldigeTekens.indexOf(tekst.value.substr(a, 1)) != -1)
		{
			GecorrigeerdeString += tekst.value.substr(a, 1) + ".";
		}
	}
	tekst.value = GecorrigeerdeString;
}

function VoorlettersKeyUp(tekst, e)
{
	if(! StuurTeken(e))
	{
		VoorlettersBlur(tekst);
	}
}

//Vanaf hier kunnen site-specifieke functies worden toegevoegd
