////////////////////////////////////////////////////////////////////////////
/// Tijd/kalender functies/vars ////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
maanden	= new Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
maand	= new Array("januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
dagen	= new Array("zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag");
kalenderWindow	= 0;

// bepaal hoeveel seconden sinds 01-01-1970 tot aan arg-datum
function maakEpoch(arg) {
	var ta	= new Array();
	ta	= arg.split('-');
	return Date.UTC(ta[2], ta[1]-1, ta[0], 5, 5, 5);
}

// bepaal aan de hand van epoch-seconden welke week-dag een bepaalde datum is
function bepaalDag(arg) {
	d	= new Date(maakEpoch(arg));
	return d.getDay()+1;
}

// bepaal datum van vandaag
function bepaalHuidigeDatum() {
	d	= new Date();
	return d.getDate() + "-" + (d.getMonth()+1) + "-" + d.getYear();
}

// bepaal vorige en volgende maand aan de hand van een meegegeven datum
function nextPrev(arg1 , arg2) {
	var ta		= new Array();
	ta		= arg1.split('-');

	for (i=0; i<=3; i++) ta[i] = makeInt(ta[i])

	if	(arg2 == "min"	&& ta[1] > 1)	tvar	= ta[0] + "-"    + (ta[1]-1) + "-" + ta[2]
	else if (arg2 == "min")			tvar	= ta[0] + "-12-" + (ta[2]-1)
	else if	(arg2 == "plus"	&& ta[1] < 12)	tvar	= ta[0] + "-"    + (ta[1]+1) + "-" + ta[2]
	else if (arg2 == "plus")		tvar	= ta[0] + "-1-"  + (ta[2]+1)
	return tvar;
}

// zodra waarde van één der dropdowns verandert, maak nieuwe kalender
function formChange() {
	t1 = document.kalenderForm.kalDag.value;
	t2 = document.kalenderForm.kalMaand.value;
	t3 = document.kalenderForm.kalJaar.value;

	if	(t1%400 == 0)	maanden[2] = 29;
	else if (t1%4   == 0)	maanden[2] = 29;
	else			maanden[2] = 28;

	if (t1 > maanden[t2])	t1 = maanden[t2]

	maakKalender(t1+"-"+t2+"-"+t3);
}

// bouw nieuwe kalender aan de hand van meegegeven datum, anders datum van vandaag
function maakKalender(arg) {
	arg		= arg ? arg:bepaalHuidigeDatum();

	tmin		= nextPrev(arg, "min");
	tplus		= nextPrev(arg, "plus");

	var kalender	= "";
	var ta		= new Array();
	ta		= arg.split('-');

	for (i=0; i<=3; i++)		ta[i] = makeInt(ta[i])

	if (ta[0] > maanden[ta[1]])	ta[0] = maanden[ta[1]]

	arg		= "1-" + ta[1] + "-" + ta[2];
	var dag		= bepaalDag(arg);

	// bepaal aantal dagen in februari, afhankelijk van schrikkeljaar
	if	(ta[2]%100==0 && ta[2]%400==0)	maanden[2] = 29;
	else if (ta[2]%4 == 0)			maanden[2] = 29;
	else					maanden[2] = 28;

	// print kalender-header met vorige/volgende-knoppen, maand-naam en jaartal
	kalender += "<table border=0 width=140 cellspacing=0 cellpadding=0 bordercolor='#666666'\"><tr><td>";
	kalender += "<table width=140 bgcolor='#d4d0c8' style='font-family: arial; font-size: 10px' cellpadding=0 cellspacing=0>";
	kalender += "<tr bgcolor='#d4d0c8'> <td> &nbsp; <a style='text-decoration: none' onclick='maakKalender(\"" + tmin + "\"); void(0)'>&lt;&lt;</a> </td>";
	kalender += "<td colspan=5 align=center>" + maand[ta[1]-1] + " " + ta[2] + "</td>";
	kalender += "<td align=right> <a style='text-decoration: none' onclick='maakKalender(\"" + tplus + "\"); void(0)'>&gt;&gt;</a> &nbsp; </td> </tr>";
	kalender += "<tr bgcolor='#d4d0c8'\">";

	// print eerste 2 letters van de namen van de week-dagen
	for (i=0; i<=6; i++)	kalender += "<td align=center>" + dagen[i].substring(0,2) + "</td>"
	kalender += "</tr>"

	// print alle dagen van de maand in de cell van de bijbehorende dag
	for (i=1; i<=42; i++) {
		if (i==parseInt(ta[0])+dag-1)	tempColor = "red"
		else				tempColor = "#DDDDDD"

		if ((i-1)%7 == 0)	kalender += "<tr bgcolor='#DDDDDD'>"

		tempDat		= (i-dag+1) + "-" + ta[1] + "-" + ta[2];
		tempDat2	= dagen[bepaalDag(tempDat)-1] + " " + (i-dag+1) + " " + maand[ta[1]] + " " + tempDat;

		if (i>=dag && i-dag+1<=maanden[ta[1]])	kalender += "<td width=20 align=center bgcolor='" + tempColor + "' onMouseDown=\"maakKalender('" + tempDat + "')\" title='" + tempDat2 + "'>" + (i-dag+1) + "</td>"
		else					kalender += "<td>&nbsp;</td>"

		if (i%7 == 0)	kalender += "</tr>"
	}

	// print dropDowns voor dagen, maanden en jaren
	kalender += "<tr bgcolor='#d4d0c8'><td colspan=7 align=center>";

	kalender += "<select name=kalDag style='font-family: arial; font-size: 10px' onChange='formChange()'\">"
	for (i=1; i<=31; i++) kalender += "<option value='" +i+ "'style='color: #000000' " +((i==ta[0])?"selected":"")+ ">" + i
	kalender += "</select>"

	kalender += "<select name=kalMaand style='font-family: arial; font-size: 10px' onChange='formChange()'\">"
	for (i=1; i<=12; i++) kalender += "<option value='" +i+ "'style='color: #000000' " +((i==ta[1])?"selected":"")+ ">" + i
	kalender += "</select>"

	kalender += "<select name=kalJaar style='font-family: arial; font-size: 10px' onChange='formChange()'\">"
	for (i=ta[2]-10; i<=ta[2]+10; i++) kalender += "<option value='" +i+ "'style='color: #000000' " +((i==ta[2])?"selected":"")+ ">" + i
	kalender += "</select><br>"

	// print kalender-footer met drie links naar de volgende functies: vandaag, cancel en klaar
	kalender += "<a href='javascript:maakKalender(bepaalHuidigeDatum()); void(0)'>vandaag</a> | ";
	kalender += "<a href='javascript:closeKalender(); void(0)'>cancel</a> | ";
	kalender += "<a href='javascript:passVars(); void(0)'>klaar</a>";
	kalender += "</td></tr></table></td></tr></table>";

	document.all["kalender"].innerHTML		= kalender;
}

////////////////////////////////////////////////////////////////////////////
/// Window functies ////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
function returnFalse()		{return false}
function closeKalender()	{window.close()}
function passVars()		{window.opener.handleDate(document.kalenderForm.kalDag.value +"-"+ document.kalenderForm.kalMaand.value +"-"+ document.kalenderForm.kalJaar.value)}

function openKalenderWindow(arg1 , arg2) {
	formName	= arg1;

	velden		= new Array();
	velden		= arg2.split('-');

//	eval("tDag	= makeInt(document."+formName+"."+velden[0]+".value)");
//	eval("tMaand	= makeInt(document."+formName+"."+velden[1]+".value)");
//	eval("tJaar	= makeInt(document."+formName+"."+velden[2]+".value)");



	eval("tDag	= makeInt(document."+formName+"."+velden[0]+".value)");
	eval("tMaand	= makeInt(document."+formName+"."+velden[1]+".value)");
	eval("tJaar	= makeInt(document."+formName+"."+velden[2]+".value)");



	d		= new Date();
	tDag		= (isNaN(tDag)		|| tDag<1	|| tDag>31	) ? d.getDate()		:tDag;
	tMaand		= (isNaN(tMaand)	|| tMaand<1	|| tMaand>12	) ? d.getMonth()+1	:tMaand;
	tJaar		= (isNaN(tJaar)		|| tJaar<1900	|| tJaar>2100	) ? d.getYear()		:tJaar;
	kalenderDatum	= tDag+"-"+tMaand+"-"+tJaar;

	kalenderWindow	= window.open("/kalender/kalenderPopUp.htm" , "kalenderPop", "top="+ (screen.availHeight-135)/2 +", left="+ (screen.availWidth-135)/2 +", resizable=no, scrollbars=no, width=135, height=135");
	kalenderWindow.focus();
}

function handleDate(arg) {
	kalenderWindow.close();

	var ta	= new Array();
	ta	= arg.split('-');

	eval("document."+formName+"."+velden[0]+".value	= "+ta[0]);
	eval("document."+formName+"."+velden[1]+".value	= "+ta[1]);
	eval("document."+formName+"."+velden[2]+".value	= "+ta[2]);
}

////////////////////////////////////////////////////////////////////////////
/// Print wat dingen ///////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/// Print invulvelden voor hoofdpagina
function printDrops(arg1 , arg2 , arg3 , arg4) {
	document.onmousemove	= focusOnKalender;
	onunload		= closeKalender2;

	if	(arg4 == null)	arg4 = bepaalHuidigeDatum()
	else if	(arg4 == "")	arg4 = "--"

	var ta		= new Array();
	var velden	= new Array();
	ta		= arg4.split('-');
	velden		= arg2.split('-');

	if 	(arg4 != "--") {
		for (i=0; i<3; i++)		ta[i] = makeInt(ta[i])

		d	= new Date();
		ta[0]	= (!ta[0] || isNaN(ta[0]) || ta[0]<1	|| ta[0]>31)	? d.getDate()		:ta[0];
		ta[1]	= (!ta[1] || isNaN(ta[1]) || ta[1]<1	|| ta[1]>12)	? d.getMonth()+1	:ta[1];
		ta[2]	= (!ta[2] || isNaN(ta[2]) || ta[2]<1900	|| ta[2]>2100)	? d.getYear()		:ta[2];
	}



	if (!bw.mac) {
		kalender  = "<input onblur='checkDate(1,31)'		type=text name="+velden[0]+" value='"+ta[0]+"' size=1 maxlength=2 "+arg3+" align=middle>&nbsp;";
		kalender += "<input onblur='checkDate(1,12)'		type=text name="+velden[1]+" value='"+ta[1]+"' size=2 maxlength=2 "+arg3+" align=middle>&nbsp;";
		kalender += "<input onblur='checkDate(1970,2030)'	type=text name="+velden[2]+" value='"+ta[2]+"' size=4 maxlength=4 "+arg3+" align=middle>&nbsp;";
		kalender += "<img src='/kalender/kalender.gif' alt='Open kalender' align=middle onClick=\"openKalenderWindow('"+arg1+"' , '"+arg2+"'); void(0)\">"
	}
	else {
		kalender	= "<select name=" + velden[0] + " style='width: 50'>";
		kalender 	+= "<option value=''>";
		for (var i=1; i<=31; i++) kalender  += "<option " + (ta[0] && i==ta[0] ? "selected":"") + " value=" + i + ">" + i;
		kalender	+= "</select>";

		kalender	+= "<select name=" + velden[1] + " style='width: 50'>";
		kalender 	+= "<option value=''>";
		for (var i=1; i<=12; i++) kalender  += "<option " + (ta[1] && i==ta[1] ? "selected":"") + " value=" + i + ">" + i;
		kalender  += "</select>";

		kalender	+= "<select name=" + velden[2] + " style='width: 50'>";
		kalender 	+= "<option value=''>";
		for (var i=1900; i<=2020; i++) kalender  += "<option " + (ta[2] && i==ta[2] ? "selected":"") + " value=" + i + ">" + i;
		kalender  += "</select>";
	}

	document.write(kalender);
}

/// Print kalender in pop-up
function printKalender(){
	if (document.layers)	window.captureEvents(Event.MOUSEDOWN);
	window.onmousedown	=returnFalse;
	document.onkeydown	= returnFalse;
	document.onselectstart	= returnFalse;
	document.oncontextmenu	= returnFalse;
	document.ondragstart	= returnFalse;

	document.write("<form name=kalenderForm><div id='kalender' style='position:absolute; left:0; top:0'>.</div></form>");
	maakKalender(window.opener.kalenderDatum);
}

function focusOnKalender() {
	if (kalenderWindow && kalenderWindow.open && !kalenderWindow.closed) kalenderWindow.focus()
}

function closeKalender2() {
	if (kalenderWindow && kalenderWindow.open && !kalenderWindow.closed) kalenderWindow.close()
}

// Checkt de inhoud van de velden igv 'onblur', een min. en een max. waarde worden meegegeven
function checkDate(arg1 , arg2) {
	var src	= window.event.srcElement;
	var tmp = src.value.replace(/^0/ig, '');
	tmp = makeInt(src.value.replace(/\D/ig, ''));
	if (src.value!='' && (isNaN(tmp) || tmp<arg1 || tmp>arg2)) {
		if (confirm('Geef een getalswaarde tussen de '+arg1+' en '+arg2+'\nWilt u dit veld wissen?'))	src.value = ''
		src.focus();
		src.select();
	}
	else if (isNaN(tmp))	{src.value = ''}
	else			{src.value = tmp}
}

function makeInt(a) {
	return a ? parseInt(a.replace(/^0+/ , '')):''
}

////////////////////////////////////////////////////////////////////////////
/// Einde script ///////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////

