function Zet_Datum(weekDag, DatumObject) {
	var today= new Date();
	var optLen= DatumObject.options.length;
	var the_array = weekArray(today, weekDag);
	SetOptionProp( DatumObject, the_array );

	//	Default waarde
	with (DatumObject)
		if (selectedIndex< 0 || selectedIndex== optLen- 1)
			{
			var DeflDatum= new Date(2002, 2, 30);	//	22 dec 2001
			if (today.getTime()< DeflDatum.getTime()) {
				var dagen= (str2WeekDag(weekDag) + 7 - DeflDatum.getDay()) % 7;
				var datum= new Date(DeflDatum.getFullYear(), DeflDatum.getMonth(), DeflDatum.getDate());
				datum.setDate( datum.getDate() + dagen );
				datumTekst= formatDatum(datum);

				var found= false;
				var n= 0;
				while (!found && n< options.length)
					if (datumTekst == options[n].text)
						found= true;
					else
						n+= 1;
				selectedIndex= (found)?n:0;}
			else
				selectedIndex= 0;
	};
}

function Zet_WeekDag( weekdagObject ) {
	with (weekdagObject)
		var weekDag = options[selectedIndex].value;

	the_array = new Array( new Array("Vrijdag","Vrijdag"), new Array("Zaterdag","Zaterdag"));
	SetOptionProp( weekdagObject, the_array );

	//	Default waarde
   	with (weekdagObject)
   	   	if (selectedIndex< 0)
			selectedIndex= 1;
   		else
			if (weekDag!= options[selectedIndex].value)
				selectedIndex= 1;
}

function SetOptionProp(the_select, the_array) {
	for (loop=0; loop < the_array.length; loop++) {
		if ((loop+1)> the_select.options.length) {
			opt= new Option('text', 'value');
			the_select[the_select.options.length]= opt;
		};
		if (the_array[loop].length == 1 ) {
			the_select.options[loop].text = the_array[loop];
			the_select.options[loop].value= the_array[loop];
		}
		else {
			the_select.options[loop].text = the_array[loop][0];
			the_select.options[loop].value= the_array[loop][1];
		};
	};
	if (the_select.options.length > the_array.length) {
		loop = the_select.options.length - 1;
		while (loop >= the_array.length) {
			the_select.options[loop]= null;
			loop -= 1;
		};
	};
}

function weekArray(vroegsteDatum, weekDag) {
	var the_array= new Array();
	var loop= 0;

	//	Seizoen bereik
	var firstSeizoen= Seizoen(vroegsteDatum);
	var lastSeizoen= firstSeizoen+1;

	//	Maximaal aantal regels
	var maxWeken = 53;

	//	Marge zodat er ook een vertrekdatum kan worden gekozen
	var vertrekMarge= 0;
	var msPerDag= 24 * 60 * 60 * 1000; 	//	Aantal milliseconds per dag
	var minDagen= 7;					//	Minimaal verbijf
	var vertrekMarge= (minDagen * msPerDag);

	//	the_array[loop++]= new Array('Kies een vertrekdatum', '');
	for (seizoen= firstSeizoen; seizoen<= lastSeizoen; seizoen+= 1) {
		var curDatum= SeizoenStart( seizoen);
		if (curDatum.getTime()< vroegsteDatum.getTime())
			curDatum= vroegsteDatum;
		curDatum= new Date(curDatum.getFullYear(), curDatum.getMonth(), curDatum.getDate());
		var dagen= (str2WeekDag(weekDag) + 7 - curDatum.getDay()) % 7;
		curDatum.setDate( curDatum.getDate() + dagen );
		maxDatum= SeizoenEinde( seizoen);
		while ((curDatum.getTime()<= (maxDatum.getTime()- vertrekMarge)) && (loop< maxWeken)) {
			the_array[loop] = new Array( 2 );
			the_array[loop][0] = formatDatum( curDatum );
			the_array[loop][1] = DateTomdy( curDatum );
			curDatum.setDate(curDatum.getDate()+ 7);
			loop++;
		};
	};

	//	the_array[loop]= new Array( replicate('-', 30), '-');
	return( the_array );
}

function SeizoenStart(jaar) {
			datum= EersteDagJaar(jaar);
	return(datum);
};

function SeizoenEinde(jaar) {
			datum= LaatsteDagJaar(jaar+1);
	return(datum);
};

//	Evt. huidige of komende seizoen
function Seizoen(datum) {
	seizoen= datum.getFullYear();
	return(seizoen);
}

//	Maximaal boekbare seizoen (= Evt. huidige + komende twee seizoenen)
function maxSeizoen(datum) {
	var seizoen= Seizoen(datum)+ 2;
	return(seizoen);
};

function inSeizoen( datum ) {
	return(true);
};

function EersteDagJaar( jaar ) {
	var datum= new Date(jaar, 0, 1);
	return(datum);
}

function LaatsteDagJaar( jaar ) {
	var datum= new Date(jaar, 11, 31);
	return(datum);
}

function str2WeekDag( dagNaam ) {
	if (dagNaam== "Maandag")
		WeekDag = 1;
	else
		if (dagNaam== "Dinsdag")
			WeekDag = 2;
		else
			if (dagNaam== "Woensdag")
				WeekDag = 3;
			else
				if (dagNaam== "Donderdag")
					WeekDag = 4;
				else
					if (dagNaam== "Vrijdag")
						WeekDag = 5;
					else
						if (dagNaam== "Zaterdag")
							WeekDag = 6;
						else
							if (dagNaam== "Zondag")
								WeekDag = 7;
	return(WeekDag);
}

function formatDatum( datum ) {
	var mdyString= DateTomdy(datum);
	var dag= mdyString.substring(3, 5);
	if (dag.substring(0,1)== "0")
		dag= mdyString.substring(4, 5);
	var maand= Maand(mdyString.substring(0, 2)- 1);
	var jaar= mdyString.substring(6, 10);
	var retval= dag + ' ' + maand + ', ' + jaar;
	return(retval);
}

function DateTomdy( datum ) {
	var jaar = datum.getFullYear();
	jaar += (jaar < 100)?1900:0;
	var maand = datum.getMonth() + 1;
	var dag = datum.getDate();
	retval = padleft( String( maand ), 2, "0") + "/" + padleft( String( dag ), 2, "0") + "/" + jaar;
	return(retval);
}

function mdyToDate( datumstr ){
	return( new Date( datumstr.substring(6,10), datumstr.substring(0,2)- 1, datumstr.substring(3,5) ) );
}


function padleft( str, resultLen, padChar ) {
	var count = resultLen - str.length;
	return( replicate( padChar, count) + str );
}

function replicate( kar, width ) {
	var replStr= "";
	for (var loop=0; loop < width; loop++)
		replStr= replStr+ kar;
	return(replStr);
}

function Maand( maandNr) {
	var MaandNaam = new Array( 'Januari','Februari','Maart','April','Mei','Juni','Juli','Augustus','September','Oktober','November','December');
	return( MaandNaam [maandNr] );
}
