var NS4 = (document.layers)?true:false;
var IE4 = (document.all)?true:false;
var aDag = new Array("zo", "ma", "di", "wo", "do", "vr", "za");

function GetDateFromWeek(iYear, iWeekNr, iOffset) {
	// Find first monday of year
	var dDate = new Date(iYear, 0, 1);
	var iFirstMonday = 2-dDate.getDay(); // 0=zondag -> 1 extra om op 1-jan te beginnen
	delete(dDate);

	// Get offset
	iOffset = iFirstMonday + iOffset;

	// Datum bepalen
	dDate = new Date(iYear, 0, (iWeekNr-1)*7 + iOffset);
	return dDate;
}
function GetDateString(dDate) {
	return aDag[dDate.getDay()] + ' ' + FormatDate(dDate);
}

// Weeknummer voor presentatie in scherm
function GetWeekNr(dDate) {
	var dFirst = new Date(dDate.getFullYear(), 0, 1);
	var iWeek = 0, iOffsetWeek = 2;

	// Indien 1-jan op vr, za of zo, dan 1e week is laatste week van voorgaand jaar
	if ((dFirst.getDay() == 5) || (dFirst.getDay() == 6) || (dFirst.getDay() == 0))
		iOffsetWeek = 1;

	// Bepaal weeknummer in jaar
	iWeek = Math.floor((parseInt(dDate.valueOf() / 86400000) - parseInt(dFirst.valueOf() / 86400000)) / 7) + iOffsetWeek;
	delete(dFirst);

	if (iWeek == 0) {
		// Indien week 0, dan hoort bij laatste week van voorgaand jaar
		var dLast = new Date(dDate.getFullYear()-1, 11, 31);
		iWeek = GetWeekNr(dLast);
		delete(dLast);
	} else if (iWeek == 53) {
		// Indien week 53, dan controleren of hoort bij 1e week van volgend jaar
		var dFirst = new Date(dDate.getFullYear() + 1, 0, 1);

		// Indien 1-jan op ma, di, wo of do, dan 1e week van volgend jaar
		if ((dFirst.getDay() == 1) || (dFirst.getDay() == 2) || (dFirst.getDay() == 3) || (dFirst.getDay() == 4))
			iWeek = 1;
		delete(dFirst);
	}
	return iWeek;
}

// Weeknummer voor opslag in database
function GetWeek(dDate) {
	// Find first monday of year
	var dFirst = new Date(dDate.getFullYear(), 0, 1);
	var iFirstMonday = dFirst.getDay()-6; // 0=zondag -> 1 extra om op 1-jan te beginnen
	var iWeek = 0, iOffsetWeek = 2;

	// Bepaal weeknummer in jaar
	iWeek = Math.floor((parseInt(dDate.valueOf() / 86400000) - parseInt(dFirst.valueOf() / 86400000) + iFirstMonday) / 7) + iOffsetWeek;
	delete(dFirst);

	return iWeek;
}

function ClearAllLists() {
	var bNone = false;
	var sCon = 'all';
	if(NS4)
		sCon = 'frm';

	clearSelect(eval('document.' + sCon + '.lstBegin'), bNone);
	clearSelect(eval('document.' + sCon + '.lstJaarEind'), bNone);
	clearSelect(eval('document.' + sCon + '.lstEind'), bNone);
}

function clearSelect(lst, bAddNone) {
	var elOption;
	var iCount=0;
	if(!lst)
		return;

	// Remove all options
	iCount = lst.options.length;
	for(var i=0;i<iCount;i++) {
		if (IE4)
			lst.options.remove(0);
		else
			lst.options[0]=null;
	}

	// Check if none should be added
	if (bAddNone) {
		elOption = new Option();
		elOption.value = -1;
		elOption.text = 'Geen';
		//now IE and NS have a different way to handle object creation.
		if (IE4)
			lst.options.add(elOption,0);
		else
			lst.options[0] = elOption;
		delete(elOption);
	}
}

function UpdateList(sLst) {
	var elOption;
	var lst, lstJaar;
	var sText = '';
	var iWeekNr = 1, iOffset = 0;
	var iJaar = 0, iYear = 0, iSelect = 0;

	var sCon = 'all';
	if(NS4)
		sCon = 'frm';

	lst = eval('document.' + sCon + '.lst' + sLst);
	lstJaar = eval('document.' + sCon + '.lstJaar' + sLst);

	if ((sLst == 'Begin') && lst.disabled)
		return true;

	// Get selected year
	iYear = lstJaar.value;
	if (!iYear || iYear == -1) {
		if (sLst == 'Begin')
			iYear = iFBeginJaar;
		else
			iYear = iFEindJaar;
	}

	// Check if year list is filled
	if (lstJaar.options.length == 0) {
		for(iJaar=iYearStart;iJaar<=iYearEnd;iJaar++) {
			// Add entry to list
			elOption = new Option();
			elOption.value = iJaar;
			elOption.text = iJaar;

			// Now IE and NS have a different way to handle object creation.
			if (IE4)
				lstJaar.options.add(elOption,lstJaar.options.length);
			else
				lstJaar.options[lstJaar.options.length] = elOption;
			delete(elOption);
		}
		lstJaar.value = iYear;
	}

	// Clear week list
	clearSelect(lst, false);

	// Get/Save selections
	if (sLst == 'Begin') {
		iSelect = iFBegin;
		iFBeginJaar = iYear;
	} else {
		iSelect = iFEind;
		iFEindJaar = iYear;
	}

	// Set weekday
	if (sLst == 'Begin')
		iOffset = -2;
	else
		iOffset = 5;

	for(iWeekNr=1;iWeekNr<=53;iWeekNr++) {
		var dDate = GetDateFromWeek(iYear, iWeekNr, iOffset);
		sText = GetDateString(dDate);
		delete(dDate);

		// Add entry to list
		elOption = new Option();
		elOption.value = iWeekNr;
		elOption.text = sText;

		// Now IE and NS have a different way to handle object creation.
		if (IE4)
			lst.options.add(elOption,lst.options.length);
		else
			lst.options[lst.options.length] = elOption;
		delete(elOption);
	}
	lst.value = iSelect;
}

var iPrevVal = 99;
function UpdateSelect(iValue) {
	var sCon = 'all';
	if(NS4)
		sCon = 'frm';
	eval('document.' + sCon + '.lstBegin').disabled = (iValue == 0);
	eval('document.' + sCon + '.lstJaarEind').disabled = (iValue == 0);
	eval('document.' + sCon + '.lstEind').disabled = (iValue == 0);
	if (iValue == 0) {
		iPrevVal = 0;
		ClearAllLists();
	} else {
		if (iPrevVal != 1) {
			iPrevVal = 1;
			UpdateList('Begin');
			UpdateList('Eind');
		}
	}
}

function WeekNr(sLst, iWeekNr) {
	// Save selection
	if (sLst == 'Begin')
		iFBegin = iWeekNr;
	else
		iFEind = iWeekNr;
}

function validatefrm(frm) {
	var iBJaar = 0, iEJaar = 0;
	var iBWeek = 0, iEWeek = 0;

	// Algemene controle
	if (!validate(frm))
		return false;

	if (frm.lstBegin.disabled)
		return true;

	// Invoer ophalen
	iBJaar = parseInt(frm.lstJaarBegin.value);
	iBWeek = parseInt(frm.lstBegin.value);
	iEJaar = parseInt(frm.lstJaarEind.value);
	iEWeek = parseInt(frm.lstEind.value);

	// Controleren of eindjaar voor beginjaar ligt
	if (iBJaar > iEJaar) {
		error(frm.lstJaarEind,'Het eindjaar mag niet voor het beginjaar liggen.');
		return false;
	}

	// Maximaal 1 jaar verschil
	if (iBJaar < iEJaar - 1) {
		error(frm.lstJaarEind,'Het eindjaar mag maximaal 1 jaar na het beginjaar liggen.');
		return false;
	}

	// Beginweek moet na eindweek liggen
	if ((iBJaar == iEJaar) && (iBWeek > iEWeek)) {
		error(frm.lstEind,'De begindatum moet voor de einddatum liggen.');
		return false;
	}
	return true;
}