var aMaand = new Array("jan", "feb", "maa", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec");
var aLMaand = new Array("januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");

// Check for browser
var bMSIE = (navigator.appName == "Microsoft Internet Explorer");

function WindowClose()
{
	opener.focus();
	self.close();
}

function SetFocus(obj)
{
	obj.focus();
	if (obj.type=='text' || obj.type=='password')
		obj.select();
	return true;
}

function error(element, text)
{
	// error op het scherm schrijven
	alert(text);
	element.focus();
	if (element.type=='text' || element.type=='password')
	{
		if (!bMSIE)
			element.value = "";
		element.select();
	}
}

function replaceString(szString,szFind,szReplace)
{
	var iMatched, fSubstring, sSubstring;
	iMatched=0;
	while(iMatched>=0)
	{
		iMatched=szString.indexOf(szFind);
		if(iMatched<0)
		return szString;
		fSubstring=szString.substring(0,iMatched);
		sSubstring=szString.substring(iMatched+szFind.length,szString.length);
		szString=fSubstring + szReplace + sSubstring;
	}
	// Next line for Netscape compatibility only - no effects
	return(0);
}

function isNumber(input)
{
	input = replaceString(input,',','.');
	return !isNaN(input);
}

// Returns false if not date, or the date if valid
function isDate(sDate)
{
	var datePat = /^(\d{1,2})(\/|-| )(\d{1,2}|\D{3}|\D{4}|\D{5}|\D{6}|\D{7}|\D{8}|\D{9})\2(\d{2}|\d{4})$/;
	// Remove whitespace
	//sDate = replaceString(sDate,' ','');
	// Validate string
	var matchArray = sDate.match(datePat);
	
	// is the format ok?
	if (matchArray == null)
		return false;
	
	// parse date into variables
	var day = matchArray[1];
	var month = matchArray[3];
	var year = matchArray[4];
	
	// check month range
	var sMonth = month;
	if (!isNaN(month))
	{
		// get month name name from array
		if (month < 1 || month > 12)
			sMonth = aMaand[month-1];
	}
	else
	{
		// check special months
		var sMonth2 = sMonth.toLowerCase();
		if (sMonth2=='mrt')
			sMonth = 'maa';
		if (sMonth2=='mar')
			sMonth = 'maa';
		if (sMonth2=='march')
			sMonth = 'maart';
		if (sMonth2=='may')
			sMonth = 'mei';
		if (sMonth2=='oct')
			sMonth = 'okt';
		if (sMonth2=='october')
			sMonth = 'oktober';
		
		// check if monthname is valid
		month = 0;
		var iMonth = 0;
		for(iMonth=0;iMonth<aMaand.length;iMonth++)
			if(aMaand[iMonth].toLowerCase()==sMonth.toLowerCase())
				month = iMonth+1;
		if (month==0)
		{
		for(iMonth=0;iMonth<aLMaand.length;iMonth++)
			if(aLMaand[iMonth].toLowerCase()==sMonth.toLowerCase())
				month = iMonth+1;
		}
	}
	if (month < 1 || month > 12)
		return false;
	
	// check year
	year = parseFloat(year)
	if (year<100)
	{
		if (year<60)
			year=year+2000;
		else
			year=year+1900;
	}
	
	// return the actual date
	var dDate = new Date(year, month-1, day);
//	var dDate = new Date(year, month, day);
	return dDate;
}

function isPhone(input)
{
	for (i=0; i<input.length; i++)
	{
		character = input.charAt(i);
		if (character < '0' || character > '9')
		{
			if ((character != ' ' && character != '-'))
				return false;
		}
	}
	return true;
}

function isEmail(input)
{
	// Email adres controleren
	if (input.length > 0)
	{
		var sAddress = input
		var iAt = sAddress.indexOf('@');
		if (iAt < 2)
			return false;
		else
		{
			// Controleren of adres numeriek is (mag niet)
			sAddress = input.substring(0,iAt);
			if (isNumber(sAddress))
				return false;
			
			sAddress = input.substring(iAt+1,input.length);
			var iDot = sAddress.indexOf('.');
			if ((iDot < 2) || (sAddress.length-iDot-1 < 2))
				return false;
			else
			{
				// Controleren of domein numeriek is (mag niet)
				sAddress = sAddress.substring(0,iDot);
				if (isNumber(sAddress))
					return false;
				// Controleren of net numeriek is (mag niet)
				sAddress = input.substring(iAt+iDot+2,input.length);
				if (isNumber(sAddress))
					return false;
			}
		}
	}
	return true;
}

function isRekeningNr(input)
{
	// Rekening nummer controleren
	if (input.length > 0)
	{
		var sValue = input;
		sValue = sValue.toUpperCase();
		sValue = replaceString(sValue,".","");
		sValue = replaceString(sValue,",","");
		
		// Verschil maken tussen giro en bank
		if (sValue.substr(0,1) != 'P')
		{
			// bank
			if (!isNumber(sValue))
				return false;
			if (sValue.length != 9)
				return false;
				
			// Elf proef
			var iChr = 0, iTotal = 0;
			for (iChr=1;iChr<=9;iChr++)
				iTotal += sValue.substr(9-iChr,1) * iChr;
			if (iTotal % 11 != 0)
				return false;
		}
		else
		{
			// giro
			var sGiro = sValue.substr(1,sValue.length);
			if (!isNumber(sGiro))
				return false;
			if ((sGiro.length < 3) || (sGiro.length > 10))
				return false;
		}
	}
	return sValue;
}

function FormatDate(dDate)
{
	var sDate = dDate.getDate() + ' ' + aMaand[dDate.getMonth()] + ' ' + dDate.getFullYear();
	return sDate;
}

function toNumber(input)
{
	i = 0;
	while (input.charAt(i) != '.' && input.charAt(i) != ',' && i < input.length) i++;
	return parseFloat(input.substring(0, i) + '.' + input.substring(i+1, input.length));
}

function Controleer(element, VeldType, MinWaarde, MaxWaarde)
{	
	switch (element.type)
	{
		case 'select-one':
			var x=element.options[element.selectedIndex].value;
			break;
		default:
			var x=element.value;
			break;
	}
	if (x!="")
	{
		if (VeldType==0) // Numeriek
		{
			// . vervangen door , voor nummerieke vergelijking
			x = replaceString(x,'.',',');
			if (element.value != x)
				element.value = x;
			if (!isNumber(x))
			{
				//element.value = "";
				error(element,"De waarde die u heeft ingetoetst ( "+x+" ) is geen numerieke waarde.");
				return false;
			}
			if (MinWaarde != MaxWaarde)
			{
				// , vervangen door . voor nummerieke vergelijking
				x = replaceString(x,',','.');
				if (!isNaN(eval(MinWaarde)))
				{
					if (x<eval(MinWaarde))
					{
						//element.value = "";
						error(element,"De waarde die u heeft ingetoetst ( "+replaceString(x,'.',',')+" ) is te klein, minimale waarde is: "+MinWaarde);
						return false;
					}
				}
				if (!isNaN(eval(MaxWaarde)))
				{
					if (x>eval(MaxWaarde))
					{
						//element.value = "";
						error(element,"De waarde die u heeft ingetoetst ( "+replaceString(x,'.',',')+" ) is te groot, maximale waarde is: "+MaxWaarde);
						return false;
					}
				}
			}
		}
		else if ((VeldType==4) || (VeldType==5)) // Keuzelijsten
		{
			if((x==MinWaarde) && (MinWaarde!=""))
			{
				error(element,"U moet wel een waarde selecteren.");
				return false;
			}
		}
		else if (VeldType==2) // Datum
		{
			var dDate = isDate(x);
			var dMin = isDate(MinWaarde);
			var dMax = isDate(MaxWaarde);
			if (!dDate)
			{
				//element.value = "";
				error(element,"De waarde die u heeft ingetoetst ( "+x+" ) is geen geldige datum.");
				return false;
			}
			x = FormatDate(dDate);
			if (dMin)
			{
				if (dDate<dMin)
				{
					//element.value = "";
					error(element,"De waarde die u heeft ingetoetst ( "+x+" ) is te klein, minimale waarde is: "+MinWaarde);
					return false;
				}
			}
			if (dMax)
			{
				if (dDate>dMax)
				{
					//element.value = "";
					error(element,"De waarde die u heeft ingetoetst ( "+x+" ) is te groot, maximale waarde is: "+MaxWaarde);
					return false;
				}
			}
			element.value = x;
		}
		else
		{
			if (x<MinWaarde && MinWaarde!="")
			{
				//element.value = "";
				error(element,"De waarde die u heeft ingetoetst ( "+x+" ) is te klein, minimale waarde is: "+MinWaarde);
				return false;
			}
			if (x>MaxWaarde && MaxWaarde!="")
			{
				//element.value = "";
				error(element,"De waarde die u heeft ingetoetst ( "+x+" ) is te groot, maximale waarde is: "+MaxWaarde);
				return false;
			}
		}
	}
	return true;
}

function ControleerNull(element, sDevWaarde)
{
	var x=element.value;
	if (x=="")
	{
		error(element,"U heef geen waarde ingetoetst!");
		element.value = sDevWaarde;
		return false;
	}
	return true;
}

function CheckList(VeldList, Save)
{
	var x=VeldList.value;
	if (x == "_XXX_") {Opslaan(Save, "F");}
	if (x != "_XXX_") {Opslaan(Save, "T");}
}

function validate(frm)
{
	for (i = 0; frm.length > i; i++)
	{
		if (frm[i].type == 'hidden')
		{
			if (frm[i].value.substring(0,3).toString() == '@#@')
			{
				var iItemLength = frm[i-1].value.length;
				if (iItemLength==0)
				{
					error(frm[i-1], 'U heeft voor dit item geen waarde ingevuld!');
					return false;
				}
			}
		}
	}
	return true;
}
	
function inputMaxWidth(sElement, iElement)
{
// Onbekend of between beide invoerelementen weergeven anders verbergen
	x = sElement.value
	if (x=='-1' || x =='BETWEEN')
		iElement.width=50;
	else
		iElement.width=0;
}

