function dateselect_initialize(dayselect, monthselect, yearselect, daystore, monthstore, yearstore, languagecode, yearsbefore, yearsafter)
{
	var monthnames
	switch (languagecode)
	{
		case 'nl': monthnames = new Array("januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"); break;
		case 'en': monthnames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); break;
		case 'de': monthnames = new Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"); break;
		case 'fr': monthnames = new Array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"); break;
		default: monthnames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); break;
	}
	var currentdate = new Date();
	var yearcount = currentdate.getFullYear() - (yearsbefore + 1);
				
	var objday = document.getElementById(dayselect)
	var objmonth = document.getElementById(monthselect)
	var objyear = document.getElementById(yearselect)

	var objdaystore = document.getElementById(daystore)
	var objmonthstore = document.getElementById(monthstore)
	var objyearstore = document.getElementById(yearstore)

	dateselect_clear(dayselect);
	objday.options.length = 32;
	objday.options[0].value = 0;

	if (languagecode=="nl")
	{
		objday.options[0].text = "<dag>";
	}
	if (languagecode=="en")
	{
		objday.options[0].text = "<day>";
	}
	if (languagecode=="fr")
	{
		objday.options[0].text = "<jour>";
	}
	if (languagecode=="de")
	{
		objday.options[0].text = "<tag>";
	}			
	
	for (var i = 1; i < 32; i++)
	{
		objday.options[i].value = i;
		objday.options[i].text = i;
	}
	if (!isNaN(objdaystore.value)) dateselect_selectbyvalue(dayselect, objdaystore.value)
				
	dateselect_clear(monthselect);
	objmonth.options.length = 13;
	objmonth.options[0].value = 0;

	if (languagecode=="nl")
	{
		objmonth.options[0].text = "<maand>";
	}
	if (languagecode=="en")
	{
		objmonth.options[0].text = "<month>";
	}
	if (languagecode=="fr")
	{
		objmonth.options[0].text = "<mois>";
	}
	if (languagecode=="de")
	{
		objmonth.options[0].text = "<monat>";
	}			
	
	for (var i = 1; i < 32; i++)
	{
		objday.options[i].value = i;
		objday.options[i].text = i;
	}

	for (var i = 1; i < 13; i++)
	{
		objmonth.options[i].value = i;
		objmonth.options[i].text = monthnames[i - 1];
	}
	if (!isNaN(objmonthstore.value)) dateselect_selectbyvalue(monthselect, objmonthstore.value)
				
	dateselect_clear(yearselect);
	objyear.options.length = yearsbefore + yearsafter + 2;
	objyear.options[0].value = 0;
	
	if (languagecode=="nl")
	{
		objyear.options[0].text = "<jaar>";
	}
	if (languagecode=="en")
	{
		objyear.options[0].text = "<year>";
	}
	if (languagecode=="fr")
	{
		objyear.options[0].text = "<an>";
	}
	if (languagecode=="de")
	{
		objyear.options[0].text = "<jahr>";
	}	
	
	for (var i = 1; i < objyear.options.length; i++)
	{
		objyear.options[i].value = yearcount + i;
		objyear.options[i].text = yearcount + i;
	}
	if (!isNaN(objyearstore.value)) dateselect_selectbyvalue(yearselect, objyearstore.value)
}

function datetimeselect_initialize(dayselect, monthselect, yearselect, hourselect, minuteselect, daystore, monthstore, yearstore, hourstore, minutestore, languagecode, yearsbefore, yearsafter)
{
	var monthnames
	switch (languagecode)
	{
		case 'nl': monthnames = new Array("januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"); break;
		case 'en': monthnames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); break;
		case 'de': monthnames = new Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"); break;
		case 'fr': monthnames = new Array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"); break;
		default: monthnames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); break;
	}
	var currentdate = new Date();
	var yearcount = currentdate.getFullYear() - (yearsbefore + 1);
				
	var objday = document.getElementById(dayselect)
	var objmonth = document.getElementById(monthselect)
	var objyear = document.getElementById(yearselect)
	var objhour = document.getElementById(hourselect)
	var objminute = document.getElementById(minuteselect)
	
	var objdaystore = document.getElementById(daystore)
	var objmonthstore = document.getElementById(monthstore)
	var objyearstore = document.getElementById(yearstore)
	var objhourstore = document.getElementById(hourstore)
	var objminutestore = document.getElementById(minutestore)

	dateselect_clear(dayselect);
	objday.options.length = 32;
	objday.options[0].value = 0;
	objday.options[0].text = "<dag>";
	for (var i = 1; i < 32; i++)
	{
		objday.options[i].value = i;
		objday.options[i].text = i;
	}
	if (!isNaN(objdaystore.value)) dateselect_selectbyvalue(dayselect, objdaystore.value)
				
	dateselect_clear(monthselect);
	objmonth.options.length = 13;
	objmonth.options[0].value = 0;
	objmonth.options[0].text = "<maand>";
	for (var i = 1; i < 13; i++)
	{
		objmonth.options[i].value = i;
		objmonth.options[i].text = monthnames[i - 1];
	}
	if (!isNaN(objmonthstore.value)) dateselect_selectbyvalue(monthselect, objmonthstore.value)
				
	dateselect_clear(yearselect);
	objyear.options.length = yearsbefore + yearsafter + 2;
	objyear.options[0].value = 0;
	objyear.options[0].text = "<jaar>";
				
	for (var i = 1; i < objyear.options.length; i++)
	{
		objyear.options[i].value = yearcount + i;
		objyear.options[i].text = yearcount + i;
	}
	if (!isNaN(objyearstore.value)) dateselect_selectbyvalue(yearselect, objyearstore.value)
	
	dateselect_clear(hourselect);
	objhour.options.length = 24;
	for (var i = 0; i < 24; i++)
	{
		objhour.options[i].value = i;
		objhour.options[i].text = fillzero(i, 2);
	}
	if (!isNaN(objhourstore.value)) dateselect_selectbyvalue(hourselect, objhourstore.value)
	
	dateselect_clear(minuteselect);
	objminute.options.length = 60;
	for (var i = 0; i < 60; i++)
	{
		objminute.options[i].value = i;
		objminute.options[i].text = fillzero(i, 2);
	}
	if (!isNaN(objminute.value)) dateselect_selectbyvalue(minuteselect, objminutestore.value)
}

function dateselect_clear(strinselectid)
{
	var numberofoptions = new Number();
	var objselect = document.getElementById(strinselectid);
	if (objselect) {
		if (objselect.options) {
			if (objselect.options.length > 0)
			{
				numberofoptions = objselect.options.length;
				for (var i = 0; i < numberofoptions; i++)
				{
					objselect.remove(0);
				}
			}
		}
	}
}
			
function dateselect_selectbyvalue(strIDSelect, strValue) {
	var l_objSelect = document.getElementById(strIDSelect)

	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objSelect) == null) {alert("Bad Object Reference: " + strIDSelect + "\n\nFunction: dateselect_selectbyvalue"); return (false);}
	// Controleren of het element type een select is.
	if (l_objSelect.tagName.toUpperCase() != "SELECT") {alert("Bad Object Type: " + strIDSelect + "\n\nObject Type: " + l_objSelect.tagName.toUpperCase() + "\nObject Type Expected: SELECT\n\nFunction: dateselect_selectbyvalue"); return (false);}
	// Controleren of het select element options heeft.
	if (l_objSelect.options.length > 0) {
		for (var i = 0; i < l_objSelect.options.length; i++) {
			// Indien de waarde van de option overeen komt met de opgegeven waarde deze selecteren.
			if (l_objSelect.options[i].value == strValue) {
				l_objSelect.options[i].selected = true;
				return (true);
			}
		}
	}
	return (false);
}
			
function dateselect_selectbylabel(strIDSelect, strLabel) {
	var l_objSelect = document.getElementById(strIDSelect)

	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objSelect) == null) {alert("Bad Object Reference: " + strIDSelect + "\n\nFunction: dateselect_selectbylabel"); return (false);}
	// Controleren of het element type een select is.
	if (l_objSelect.tagName.toUpperCase() != "SELECT") {alert("Bad Object Type: " + strIDSelect + "\n\nObject Type: " + l_objSelect.tagName.toUpperCase() + "\nObject Type Expected: SELECT\n\nFunction: dateselect_selectbylabel"); return (false);}
	// Controleren of het select element options heeft.
	if (l_objSelect.options.length > 0) {
		for (var i = 0; i < l_objSelect.options.length; i++) {
			// Indien de label van de option overeen komt met de opgegeven label deze selecteren.
			if (l_objSelect.options[i].text == strLabel) {
				l_objSelect.options[i].selected = true;
				return (true);
			}
		}
	}
	return (false);
}
			
function dateselect_isleapyear(yearselect)
{
	var objyear = document.getElementById(yearselect);
				
	if (objyear.value > 0)
		return (objyear.value % 4 == 0);
	else
		return (false);
}
			
function dateselect_fixnumberofdays(dayselect, monthselect, yearselect)
{
	var objday = document.getElementById(dayselect)
	var objmonth = document.getElementById(monthselect)
	var objyear = document.getElementById(yearselect)
	var tempmonth = new Number();
	var tempday = new Number();
				
	tempmonth = objmonth.value;
	tempday =  objday.value;
				
	if (tempmonth > 0)
	{
		if (tempmonth == 4 || tempmonth == 6 || tempmonth == 9 || tempmonth == 11)
		{
			if (objday.options.length != 31)
			{
				objday.options.length = 31;
				for (var i = 29; i < 31; i++)
				{
					objday.options[i].value = i;
					objday.options[i].text = i;
				}
				if (tempday > 30) dateselect_selectbyvalue(dayselect, 0);
			}
		}
					
		if (tempmonth == 1 || tempmonth == 3 || tempmonth == 5 || tempmonth == 7 || tempmonth == 8 || tempmonth == 10 || tempmonth == 12)
		{
			if (objday.options.length != 32)
			{
				objday.options.length = 32;
				for (var i = 29; i < 32; i++)
				{
					objday.options[i].value = i;
					objday.options[i].text = i;
				}
			}
		}
					
		if (tempmonth == 2)
		{
			if (dateselect_isleapyear(yearselect))
			{
				if (objday.options.length != 30)
				{
					objday.options.length = 30;
					for (var i = 29; i < 30; i++)
					{
						objday.options[i].value = i;
						objday.options[i].text = i;
					}
					if (tempday > 29) dateselect_selectbyvalue(dayselect, 0);
				}
			}
			else
			{
				if (objday.options.length != 29)
				{
					objday.options.length = 29;
					if (tempday > 28) dateselect_selectbyvalue(dayselect, 0);
				}
			}
		}
	}
}
			
function dateselect_validatedate(dayselect, monthselect, yearselect, mustenter, datename, showalerts, backtodateselect, msg1, msg2)
{
	var objday = document.getElementById(dayselect)
	var objmonth = document.getElementById(monthselect)
	var objyear = document.getElementById(yearselect)
	var tempdateiscomplete = objday.value != 0 && objmonth.value != 0 && objyear.value != 0;
	var tempdateisempty = objday.value == 0 && objmonth.value == 0 && objyear.value == 0;
							
	if (tempdateisempty)
	{
		if (mustenter)
		{
			//if (showalerts) alert(datename + " is verplicht.");			
			if (showalerts) alert(msg1);
			if (backtodateselect) objday.focus(); 
			return (false);
		}
	}
							
	if (!tempdateiscomplete && !tempdateisempty)
	{
		if (mustenter)
		{
			if (showalerts) alert(msg1);
			if (backtodateselect) objday.focus(); 
			return (false);
		}
		else
		{
			if (showalerts) alert(msg2);
			if (backtodateselect) objday.focus(); 
			return (false);
		}
	}
	return (true);
}
			
function dateselect_store(dayselect, monthselect, yearselect, daystore, monthstore, yearstore, fulldatestore, fulldatestoretype)
{
	var objday = document.getElementById(dayselect)
	var objmonth = document.getElementById(monthselect)
	var objyear = document.getElementById(yearselect)
	var objdaystore = document.getElementById(daystore)
	var objmonthstore = document.getElementById(monthstore)
	var objyearstore = document.getElementById(yearstore)
	var objfulldatestore = document.getElementById(fulldatestore)

	if(dateselect_validatedate(dayselect, monthselect, yearselect, true, "", false, false))
	{
		objdaystore.value = objday.value;
		objmonthstore.value = objmonth.value;
		objyearstore.value = objyear.value;
		switch (fulldatestoretype)
		{
			case "sql": objfulldatestore.value = objyear.value + '-' + fillzero(objmonth.value, 2) + '-' + fillzero(objday.value, 2); break;
			case "en": objfulldatestore.value = fillzero(objmonth.value, 2) + '/' + fillzero(objday.value, 2) + '/' + objyear.value; break;
			case "nl": objfulldatestore.value = fillzero(objday.value, 2) + '-' + fillzero(objmonth.value, 2) + '-' + objyear.value; break;
			case "nlfull": objfulldatestore.value = objday.value + ' ' + objmonth.options[objmonth.value].text + ' ' + objyear.value; break;
			case "enfull": objfulldatestore.value = objday.value + ' ' + objmonth.options[objmonth.value].text + ' ' + objyear.value; break;
			case "defull": objfulldatestore.value = objday.value + '. ' + objmonth.options[objmonth.value].text + ' ' + objyear.value; break;
			case "frfull": objfulldatestore.value = 'le ' + objday.value + ' ' + objmonth.options[objmonth.value].text + ' ' + objyear.value; break;
			default: objfulldatestore.value = objyear.value + '-' + fillzero(objmonth.value, 2) + '-' + fillzero(objday.value, 2); break;
		}
	}
	else
	{
		objdaystore.value = "";
		objmonthstore.value = "";
		objyearstore.value = "";
		objfulldatestore.value = "";
	}
}

function datetimeselect_store(dayselect, monthselect, yearselect, hourselect, minuteselect, daystore, monthstore, yearstore, hourstore, minutestore, fulldatestore, fulldatestoretype)
{
	var objday = document.getElementById(dayselect)
	var objmonth = document.getElementById(monthselect)
	var objyear = document.getElementById(yearselect)
	var objhour = document.getElementById(hourselect)
	var objminute = document.getElementById(minuteselect)
	var objdaystore = document.getElementById(daystore)
	var objmonthstore = document.getElementById(monthstore)
	var objyearstore = document.getElementById(yearstore)
	var objhourstore = document.getElementById(hourstore)
	var objminutestore = document.getElementById(minutestore)
	var objfulldatestore = document.getElementById(fulldatestore)

	if(dateselect_validatedate(dayselect, monthselect, yearselect, true, "", false, false))
	{
		objdaystore.value = objday.value;
		objmonthstore.value = objmonth.value;
		objyearstore.value = objyear.value;
		objhourstore.value = objhour.value;
		objminutestore.value = objminute.value;
		switch (fulldatestoretype)
		{
			case "sql": objfulldatestore.value = objyear.value + '-' + fillzero(objmonth.value, 2) + '-' + fillzero(objday.value, 2) + ' ' + fillzero(objhour.value, 2) + ':' + fillzero(objminute.value, 2); break;
			case "nl": objfulldatestore.value = fillzero(objday.value, 2) + '-' + fillzero(objmonth.value, 2) + '-' + objyear.value + ' ' + fillzero(objhour.value, 2) + ':' + fillzero(objminute.value, 2); break;
			default: objfulldatestore.value = objyear.value + '-' + fillzero(objmonth.value, 2) + '-' + fillzero(objday.value, 2) + ' ' + fillzero(objhour.value, 2) + ':' + fillzero(objminute.value, 2); break;
		}
	}
	else
	{
		objdaystore.value = "";
		objmonthstore.value = "";
		objyearstore.value = "";
		objhourstore.value = "";
		objminutestore.value = "";
		objfulldatestore.value = "";
	}
}

function dateselect_validatedateofbirth(dayselect, monthselect, yearselect, showalerts, backtodateselect)
{
	var tempdatenow = new Date();
	var objday = document.getElementById(dayselect)
	var objmonth = document.getElementById(monthselect)
	var objyear = document.getElementById(yearselect)

	var tempdate = new Date(objyear.value, objmonth.value -1, objday.value);
	tempdatenow.setHours(0, 0, 0, 0);
	if (dateDiff("d", tempdatenow, tempdate) > 0)
	{
		if (showalerts) alert("De ingevoerde geboortedatum mag geen datum in de toekomst zijn.");
		if (backtodateselect) objday.focus();
		return (false);
	}
	return (true);
}

function dateselect_validatepurchasedate(strdayselectid, strmonthselectid, stryearselectid, blnmustenter, blnshowalerts, strdatename, blnbacktodateselect)
{
	var tempdatenow = new Date();
	var objday = document.getElementById(strdayselectid)
	var objmonth = document.getElementById(strmonthselectid)
	var objyear = document.getElementById(stryearselectid)
	var tempdate = new Date(objyear.value, objmonth.value -1, objday.value);
	var tempdateisempty = objday.value == 0 && objmonth.value == 0 && objyear.value == 0;
	
	tempdatenow.setHours(0, 0, 0, 0);
	
	if (!dateselect_validatedate(strdayselectid, strmonthselectid, stryearselectid, blnmustenter, strdatename, blnshowalerts, blnbacktodateselect)) return (false);
	if (!tempdateisempty)
	{
		if (dateDiff("d", tempdatenow, tempdate) > 0)
		{
			if (blnshowalerts) alert("De ingevoerde " + strdatename + " mag geen datum in de toekomst zijn.");
			if (blnbacktodateselect) objday.focus();
			return (false);
		}
		if (dateDiff("d", dateAdd("m", -24, tempdatenow), tempdate) < 0)
		{
			if (blnshowalerts) alert("De ingevoerde " + strdatename + " mag niet meer dan twee jaar in het verleden liggen.");
			if (blnbacktodateselect) objday.focus();
			return (false);
		}
	}
	return (true);
}

function checktoestemming(dayselect, monthselect, yearselect, checkpermit, showalerts, backtodateselect)
{
	var tempdatenow = new Date();
	var objday = document.getElementById(dayselect)
	var objmonth = document.getElementById(monthselect)
	var objyear = document.getElementById(yearselect)
	var objpermit = document.getElementById(checkpermit)
	var tempdate = new Date(objyear.value, objmonth.value -1, objday.value);
	tempdatenow.setHours(0, 0, 0, 0);

	if (dateDiff("d", dateAdd("m", -192, tempdatenow), tempdate) > 0)
	{
		if (!objpermit.checked)
		{
			if (showalerts)
			{
				if (!confirm("Deze persoon zou 15 jaar of jonger zijn en heeft geen toestemming van ouders/verzorgers.\nIs de juiste datum opgegeven?"))
				{
					if (backtodateselect) objday.focus()
				}
			}
			return (false);
		}
		else
		{
			return (true);
		}
	}
	else
	{
		objpermit.checked = false;
		return (true);
	}
}

function checktoestemmingneeded(dayselect, monthselect, yearselect)
{
	var tempdatenow = new Date();
	var objday = document.getElementById(dayselect)
	var objmonth = document.getElementById(monthselect)
	var objyear = document.getElementById(yearselect)
	var tempdate = new Date(objyear.value, objmonth.value -1, objday.value);
	tempdatenow.setHours(0, 0, 0, 0);
	return (dateDiff("d", dateAdd("m", -192, tempdatenow), tempdate) > 0);
}

function IsFutureDate(strDate, strText)
{			     
     // Parse the string in DD-MM-YYYY format
     re = /(\d{1,2})-(\d{1,2})-(\d{4})/
     var arr = re.exec(strDate);
     var dt1 = new Date( parseInt(arr[3]), parseInt(arr[2], 10) - 1, parseInt(arr[1], 10) );
     
     if (dt1 > new Date()){
		alert(strText);
		return false;
     }
     return true;
}

