//	Vakantiesoorten
//	var VAK_WINTER= 108;
//	var VAK_PAARDEN= 109;
//	var VAK_FIETSEN= 102;
//	var VAK_WELLNESS= 107;
//	var VAK_AGRO= 110;
//	var VAK_STEDEN= 105;

//	Vakantiesoorten
var VAK_ZOMER= 0;
var VAK_WINTER= 1;
var VAK_PRAAG= 2;
var VAK_RONDREIS= 3;
var VAK_GOLFARR= 4;
var VAK_GOLF= 5;

//	Huurseizoenen:
var HSZ_LZH= 0;				//	lente, zomer & herfst
var HSZ_WINTER= 1;			//	winter
var HSZ_HELEJAAR= 2;		//	hele jaar

//	---

function Vakantie2Huurseizoen(soortVak) {
	if (soortVak== VAK_ZOMER || soortVak== VAK_PRAAG)
		huurSeizoen= HSZ_HELEJAAR;
	else
		if (soortVak== VAK_WINTER)
			huurSeizoen= HSZ_WINTER;
		else
			huurSeizoen= HSZ_LZH;
	return(huurSeizoen);}

//	---

function Zet_AankomstDatum( soortAcc, huurSeizoen, aankomstDag,  aankomstDatumObject  ) {
	var today= new Date();
	var optLen= aankomstDatumObject.options.length;
	var the_array = weekArray( huurSeizoen, today, aankomstDag, false, soortAcc );
	SetOptionProp( aankomstDatumObject, the_array );

	//	Default waarde
	with (aankomstDatumObject)
		if (selectedIndex< 0 || selectedIndex== optLen- 1)
			{
			var DeflDatum= new Date(2002, 2, 30);	//	22 dec 2001
			if (today.getTime()< DeflDatum.getTime()) {
				var dagen= (str2WeekDag(aankomstDag) + 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_VertrekDatum( soortAcc, huurSeizoen, aankomstDatum, vertrekDag, vertrekDatumObject ) {
	aankomstDatum= mdyToDate( aankomstDatum );
	var optLen= vertrekDatumObject.options.length;
	var alleenZat = AlleenZaterdagWisselen( soortAcc, huurSeizoen );
	var vroegsteDatum = new Date( aankomstDatum.getFullYear(), aankomstDatum.getMonth(), aankomstDatum.getDate())
	if (alleenZat)
		vroegsteDatum.setDate(vroegsteDatum.getDate() + 1);
	else
		//	Minimaal 3 nachten blijven
		vroegsteDatum.setDate(vroegsteDatum.getDate() + 3);
	var the_array= weekArray( huurSeizoen, vroegsteDatum, vertrekDag, true, soortAcc);
	SetOptionProp( vertrekDatumObject, the_array );

	//	Default waarde
   	with (vertrekDatumObject)
   	   	if (selectedIndex< 0 || selectedIndex== optLen- 1)
			selectedIndex= 0; }

//	---

function Zet_WeekDag( weekdagObject, huurSeizoen, soortAcc  ) {
	with (weekdagObject)
		var weekDag = options[selectedIndex].value;
	var alleenZat = AlleenZaterdagWisselen( soortAcc, huurSeizoen );

	if (alleenZat)
		the_array = new Array( new Array("Zaterdag","Zaterdag") );
	else
		the_array = new Array(new Array("Zaterdag","Zaterdag"),new Array("Zondag","Zondag"),new Array("Maandag","Maandag"),new Array("Dinsdag","Dinsdag"),new Array("Woensdag","Woensdag"),new Array("Donderdag","Donderdag"),new Array("Vrijdag","Vrijdag"));

	SetOptionProp( weekdagObject, the_array );

	//	Default waarde
   	with (weekdagObject)
   	   	if (selectedIndex< 0)
			selectedIndex= 0;
   		else
			if (weekDag!= options[selectedIndex].value)
				selectedIndex= 0; }

//	---

function AlleenZaterdagWisselen( soortAcc, huurSeizoen ) {
	var alleenZat = false;
	if (soortAcc== "Huis" || soortAcc== "Huis op park")
		alleenZat = true;
	else {
		if (soortAcc== "Appartement") {
			if (huurSeizoen == HSZ_WINTER)
				alleenZat = true;
			}
		else {
			if (soortAcc== "Hotel" || soortAcc== "Pension")
				if (huurSeizoen == HSZ_WINTER)
					alleenZat = true; }; };
	return( alleenZat ); }

// ---

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( huurSeizoen, vroegsteDatum, weekDag, isVertrek, soortAcc ) {
	var the_array= new Array();
	var loop= 0;

	//	Seizoen bereik
	var firstSeizoen= Seizoen(huurSeizoen, vroegsteDatum);
	var lastSeizoen= (isVertrek && huurSeizoen!=HSZ_HELEJAAR)?(Seizoen(huurSeizoen, vroegsteDatum)):(maxSeizoen(huurSeizoen, vroegsteDatum));

	//	Maximaal aantal regels
	var maxWeken= (isVertrek)?(6):(160);

	//	Marge zodat er ook een vertrekdatum kan worden gekozen
	var vertrekMarge= 1;	//	vertrekmarge op 1 millisec zodat de seizoen-grens-datum niet 2x wordt getoond
	if (!isVertrek && huurSeizoen!=HSZ_HELEJAAR) {
		var msPerDag= 24 * 60 * 60 * 1000; 					// Aantal milliseconds per dag
		var minDagen= (AlleenZaterdagWisselen( soortAcc, huurSeizoen ))?(7):(2);	//	Minimaal verbijf
		var vertrekMarge= (minDagen * msPerDag); }

	//	the_array[loop++]= new Array('Kies een vertrekdatum', '');
	for (seizoen= firstSeizoen; seizoen<= lastSeizoen; seizoen+= 1) {
		//alert(seizoen+":"+SeizoenStart( seizoen, huurSeizoen));
		var curDatum= SeizoenStart( seizoen, huurSeizoen);
		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, huurSeizoen);
		//	if (isVertrek) alert(DateTomdy(curDatum) + " -> " + DateTomdy(maxDatum));
		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, huurSeizoen ) {
	if (huurSeizoen== HSZ_LZH)
		datum= LaatsteZaterdagMaart(jaar);
	else
		if (huurSeizoen== HSZ_WINTER)
			datum= EersteZaterdagDecember(jaar- 1);
		else
			datum= LaatsteZaterdagMaart(jaar);
	return( datum ); };

//	---

function SeizoenEinde( jaar, huurSeizoen ) {
	if (huurSeizoen== HSZ_LZH)
		datum= EersteZaterdagDecember(jaar);
	else
		if (huurSeizoen== HSZ_WINTER)
			datum= LaatsteZaterdagMaart(jaar);
		else
			datum= LaatsteZaterdagMaart(jaar+1);
	return( datum ); };

//	---

//	Evt. huidige of komende seizoen
function Seizoen( huurSeizoen, datum ) {
	seizoen= datum.getFullYear();
	if (huurSeizoen== HSZ_LZH)
		if (datum.getMonth()>= 11)
			if (datum.getTime()>= EersteZaterdagDecember(datum.getFullYear()).getTime())
				seizoen+= 1;
	if (huurSeizoen== HSZ_WINTER)
		if (datum.getMonth()>= 2)
			if (datum.getTime()>= LaatsteZaterdagMaart(datum.getFullYear()).getTime())
				seizoen+= 1;
	if (huurSeizoen== HSZ_HELEJAAR)
		if (datum.getMonth()<= 2)
			if (datum.getTime()< LaatsteZaterdagMaart(datum.getFullYear()).getTime())
				seizoen-= 1;
	return( seizoen ); }

//	---

//	Maximaal boekbare seizoen (= Evt. huidige + komende twee seizoenen)
function maxSeizoen( huurSeizoen, datum ) {
	if (inSeizoen(huurSeizoen, datum))
		var seizoen= Seizoen(huurSeizoen, datum)+ 2;
	else {
		var seizoen= datum.getFullYear()+ 2;
		if (huurSeizoen== HSZ_LZH)
			if (datum.getTime()< LaatsteZaterdagMaart(datum.getFullYear()).getTime())
				seizoen-= 1; };
	return( seizoen ); };

//	---

function inSeizoen( datum, huurSeizoen ) {
	if (huurSeizoen== HSZ_LZH)
		var isOK= isZomer(datum);
	else
		if (huurSeizoen== HSZ_WINTER)
			isOK= !isZomer(datum);
		else
			isOK= true;
	return( isOK ); };

//	---

function isZomer( date ) {
	var isZomer= (date.getTime()>= LaatsteZaterdagMaart(date.getFullYear()).getTime() && date.getTime()< EersteZaterdagDecember(date.getFullYear()).getTime());
	return( isZomer ); }

//	---

function LaatsteZaterdagMaart( jaar ) {
	var datum= new Date(jaar, 2, 31);
	var dag= 31- (1 + datum.getDay()) % 7;
	datum.setDate( dag );
	return( datum ); }

//	---

function EersteZaterdagDecember( jaar ) {
	var datum= new Date(jaar, 11, 1);
	var dag= 1 + (6 - datum.getDay()) % 7;
	datum.setDate( dag );
	return( datum ); }

//	---

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] ); }

