var aSelected = new Array();
var sLastSelectedDate = false;
var aReloadFunctions = new Array();
var hTempCloseFormFunction = false;
var aMulti = new oMulti();
var dateSelectorDate = new Date();
var dateSelectorField = false; 

//--------------- Login --------------//

function checkLogin() {
	sName = document.getElementById("name").value;
	sPassword = document.getElementById("password").value;
	requestXML('wrapper.php', 'action=checkLogin&sName=' + sName + '&sPassword=' + sPassword, checkLogin2); 
}

function checkLogin2(a_oRequest) {
	oXML = a_oRequest.responseXML;
	sResult = getNodeValue(oXML, "loginResult");
	if (sResult == "true") {
		document.onmousedown = disableText;
		oDiv = document.createElement('div');
		oDiv.id = "logout";
		oDiv.innerHTML = '<a href="javascript:logout()"><img src="images/logout.gif" alt="log out" /></a>';
		oHeader = document.getElementById("header-wrap");
		oHeader.appendChild(oDiv);
		setSystem('Home');
	} else {
		oErrorCell = document.getElementById("error");
		oErrorCell.innerHTML = "combinatie van naam en wachtwoord zijn niet geldig";
	}
}

function logout() {
	requestXML('wrapper.php', 'action=logout', logout2);
}

function logout2(a_oRequest) {
	oDiv = document.getElementById("logout");
	if (oDiv) oDiv.parentNode.removeChild(oDiv);
	setSystem("Home");
}

//--------------- System --------------//

function oMulti() {}

function setMain(a_sClass) {
	requestXML('wrapper.php', 'action=bhMain&sClassName=' + a_sClass, setMainXHTML);
}

function setSystem(a_sClass) {
	setMenu(a_sClass);
	setMain(a_sClass);
	return true;
}


function setMenu(a_sClass) {
	requestXML('wrapper.php', 'action=bhMenu&sClassName=' + a_sClass, setMenuItems, true);
}

function setMenuItems(a_oRequest) {
	// alert(a_oRequest.responseText);
	oXML = a_oRequest.responseXML;
	aFunctions = oXML.getElementsByTagName("function");
	oMenu = document.getElementById("actions");
	oMenu.innerHTML = "<div style='float: left; width: 10px;'>&nbsp;</div>";
	if (aFunctions.length > 0) {
		for (iCounter = 0; iCounter < aFunctions.length; iCounter++) {
			oFunction = aFunctions[iCounter];
			sLabel = getNodeValue(oFunction, "label");
			sMulti = getNodeValue(oFunction, "multi");
			oButton = document.createElement("div");
			if (sMulti) {
//				oButton.innerHTML = '<span class="label">' + sLabel + '</span><img src="images/down.png" alt="meer" />';
				oButton.innerHTML = sLabel;
				oButton.className = "button multi";
				oButton.onmouseover = function() { this.className = "button multi multiOver"; };
				oButton.onmouseout = function() { this.className = "button multi"; };
				oButton.onclick = showMulti;
				oButton.id = "multi" + sLabel;
				sMenu = '';
				oItems = oFunction.getElementsByTagName("multiItem");
				oSubMenu = document.createElement("div");
				oSubMenu.className = "multiMenu";
				for (iCounter2 = 0; iCounter2 < oItems.length; iCounter2++) {
					sItemLabel = getNodeValue(oItems[iCounter2], "itemLabel");
					sOnclick =  getNodeValue(oItems[iCounter2], "onclick");
					oItem = document.createElement("div");
					oItem.className = "button";
					oItem.innerHTML = sItemLabel;
					oItem.onclick = new Function('', "hideMulti('" + oButton.id + "');" + sOnclick);
					oSubMenu.appendChild(oItem);
				}
				aMulti["multi" + sLabel] = new Array(oSubMenu, sOnclick);
			} else {
				sOnclick = getNodeValue(oFunction, "onclick");
				// oButton.innerHTML = '<span class="label">' + sLabel + '</span>';
				oButton.innerHTML = sLabel;
				oButton.className = "button";
				oButton.id = "action" + sLabel;
				oButton.onclick = new Function('', sOnclick);
				oButton.onmouseover = function() { this.className = "button over"; };
				oButton.onmouseout = function() { this.className = "button"; };
			}
			oMenu.appendChild(oButton);
		}
	}
	aButtons = oXML.getElementsByTagName("menu");
	oMenu = document.getElementById("submenu");
	aClear = oXML.getElementsByTagName("clear");
	if (aClear.length > 0) oMenu.innerHTML = "";
	if (aButtons.length > 0) {
		oMenu.innerHTML = "";
		for (iCounter = 0; iCounter < aButtons.length; iCounter++) {
			oButton = aButtons[iCounter];
			sLabel = getNodeValue(oButton, "label");
			sOnclick = getNodeValue(oButton, "onclick");
			oNewButton = document.createElement("div");
			oNewButton.innerHTML = sLabel;
			oNewButton.className = "button";
			oNewButton.id = "function" + sLabel;
			oNewButton.onclick = new Function('', sOnclick);
			oNewButton.onmouseover = function() { this.className = "button over"; };
			oNewButton.onmouseout = function() { this.className = "button"; };
			oMenu.appendChild(oNewButton);
		}
	}
}

function setMainXHTML(a_oRequest) {
	oXML = a_oRequest.responseXML;
	// if (oXML) {
	//	procesErrorXML(oXML);
	//} else {
		oMain = document.getElementById("main");
		oMain.innerHTML = a_oRequest.responseText;
	//}
}

function showMulti(a_oEvent) {
	oLayer = document.createElement('div');
	oLayer.className = 'layer';
	document.body.appendChild(oLayer);
	oLayer.id = "multi";
	oEvent = (typeof(event) != "undefined" ? event : a_oEvent);
	oParent = getEventTarget(oEvent);
	if (oParent.tagName != "DIV") oParent = oParent.parentNode;
	oParent.className = "button multi";
	oMenu = aMulti[oParent.id][0];
	aPos = findPos(oParent);
	oMenu.style.left = aPos[0] - 1;
	oMenu.id = "multidiv";
	oMenu.style.top = aPos[1] + 20;
	document.body.appendChild(oMenu);
	oLayer.onclick = new Function('', 'hideMulti(' + oParent.id + ')');
}

function hideMulti(a_sId) {
	oDiv = document.getElementById("multi");
	if (oDiv) document.body.removeChild(oDiv);
	oDiv = document.getElementById("multidiv");
	if (oDiv) document.body.removeChild(oDiv);
	oDiv = document.getElementById(a_sId);
	if (oDiv) oDiv.className = "button";
}

function isIE() {
	return (navigator.appName == "Microsoft Internet Explorer");
	
}

//------------- Extra ---------------//

function voidf(a_oRequest) {
}

function procesErrorXML(a_oXML) {
	aErrors = oXML.getElementsByTagName("procesError");
	sFunctionName = getNodeValue(aErrors[0], "sFunction");
	iCode = getNodeValue(aErrors[0], "iErrorCode");
	sDescription = getNodeValue(aErrors[0], "sErrorDescription");
	procesError(sFunctionName, iCode, sDescription);
}

function bHnewItem(a_sClassName, a_hCloseFormFunction) {
	hTempCloseFormFunction = a_hCloseFormFunction;
	newItem(a_sClassName, "form1", bHsetForm);
}

function reloadOnFinish() {
	while (sFunction = aReloadFunctions.shift()) {
		eval(sFunction);
	}
}

function showResult(a_oRequest) {
	alert(a_oRequest.responseText);
}

function setNumToConfirm(a_oRequest) {
	oXML = a_oRequest.responseXML;
	iNum = getNodeValue(oXML, "number");
	oSpan = document.getElementById("Bevestigen");
	oSpan.innerHTML = "Bevestigen (" + iNum + ")";
}

function everyMinute() {
	requestXML('wrapper.php', 'action=setNumToConfirm', setNumToConfirm, true);
	setTimeout("everyMinute()", 60000);
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

//------------- Forms ---------------//

function bHsetForm(a_oRequest) {
	if (!hTempCloseFormFunction) hCloseFormFunction = bHcloseForm;
	else hCloseFormFunction = hTempCloseFormFunction;
	document.onmousedown = enableText;
	oBlock = document.createElement("div");
	oBlock.id = "fog";
	document.body.appendChild(oBlock);
	oFormDivWrap = document.createElement("div");
	oFormDivWrap.id = "formDivWrap";
	oFormDivWrap.className = "formDivWrap";
	oFormDivWrap.innerHTML = '<table class="center"><tr><td class="space">&nbsp;</td><td><div class="formDiv">' + a_oRequest.responseText + '</td><td class="space">&nbsp;</div></td></tr></table>';
	document.body.appendChild(oFormDivWrap);	
}

function bHcloseForm(a_sClassName) {
	document.onmousedown = disableText;
	oFog = document.getElementById('fog');
	oForm = document.getElementById('formDivWrap');
	if (oFog) document.body.removeChild(oFog);
	if (oForm) document.body.removeChild(oForm);
	setSystem(a_sClassName);
}

function checkAllFields(a_sFieldName, a_sFormName) {
	aFields = getFormFields(a_sFormName);
	sSearchedId = a_sFormName + "-field-" + a_sFieldName;
	for (iCounter = 0; iCounter < aFields.length; iCounter++) {
		sId = aFields[iCounter].id;
		if (sId.substring(0, sSearchedId.length) == sSearchedId) {
			aFields[iCounter].checked = true;
		}
	}
}

function uncheckAllFields(a_sFieldName, a_sFormName) {
	aFields = getFormFields(a_sFormName);
	sSearchedId = a_sFormName + "-field-" + a_sFieldName;
	for (iCounter = 0; iCounter < aFields.length; iCounter++) {
		sId = aFields[iCounter].id;
		if (sId.substring(0, sSearchedId.length) == sSearchedId) {
			aFields[iCounter].checked = false;
		}
	}
}

function setTextAllFields(a_sFieldName, a_sFormName) {
	aFields = getFormFields(a_sFormName);
	oField = document.getElementById(a_sFormName + "-" + a_sFieldName + "-multiFieldSetter");
 	sSearchedId = a_sFormName + "-field-" + a_sFieldName;
	for (iCounter = 0; iCounter < aFields.length; iCounter++) {
		sId = aFields[iCounter].id;
		if (sId.substring(0, sSearchedId.length) == sSearchedId) {
			aFields[iCounter].value = oField.value;
		}
	}
}

function changeDateField(a_sFormName, a_sFieldName) {
	oDateField = document.getElementById(a_sFormName + "-field-" + a_sFieldName);
	oDayField = document.getElementById(a_sFormName + "-field-" + a_sFieldName + "-day");
	oMonthField = document.getElementById(a_sFormName + "-field-" + a_sFieldName + "-month");
	oYearField = document.getElementById(a_sFormName + "-field-" + a_sFieldName + "-year");
	oDateField.value = oDayField.value + "-" + oMonthField.value + "-" + oYearField.value;
}

function setArrival(a_sFormName, a_sFieldName, a_sFieldDestName, a_iNights) {
	oDateDestField = document.getElementById(a_sFormName + "-field-" + a_sFieldDestName);
	oDayField = document.getElementById(a_sFormName + "-field-" + a_sFieldName + "-day");
	oMonthField = document.getElementById(a_sFormName + "-field-" + a_sFieldName + "-month");
	oYearField = document.getElementById(a_sFormName + "-field-" + a_sFieldName + "-year");
	oDateDestField.value = oDayField.value + "-" + oMonthField.value + "-" + oYearField.value;
	changeDateField(a_sFormName, a_sFieldName);
}

function aFindPos(a_oElement) {
	var iCurleft = iCurtop = 0;
	if (a_oElement.offsetParent) {
		do {
			iCurleft += a_oElement.offsetLeft;
			iCurtop += a_oElement.offsetTop;
		} while (a_oElement = a_oElement.offsetParent);
	}
	return [iCurleft,iCurtop];
}

function aFindScreenPos(a_oElement) {
	var aPos = aFindPos(a_oElement);
	var iCurleft = aPos[0];
	var iCurtop = aPos[1];
	if (a_oElement.offsetParent) {
		do {
			iCurleft -= a_oElement.scrollLeft;
			iCurtop -= a_oElement.scrollTop;
			a_oElement = a_oElement.parentNode;
		} while(a_oElement.tagName != 'HTML');
	}
	return [iCurleft,iCurtop];
}

function dateSelector(a_sFormName, a_sFieldName) {
	dateSelectorField = a_sFormName + "-field-" + a_sFieldName;
	oImg = document.getElementById(a_sFormName + "-calendar-" + a_sFieldName);
	oLayer = document.createElement('div');
	oLayer.className = "dateLayer";
	document.body.appendChild(oLayer);
	addEventListener(oLayer, 'click', closeDateSelector, false);
	oLayer.id = "dateLayer";
	oDiv = document.createElement('div');
	oDiv.id = "dateSelector";
	aPos = aFindScreenPos(oImg);
	oDiv.style.left = aPos[0] + 20 + "px";
	oDiv.style.top = aPos[1] + "px";
	oDiv.innerHTML = 	'<div id="dateSelectorHeader"></div>' + 
						'<div id="dateSelectorMain">' +
						'kalender' +
						'</div>';
	oLayer.appendChild(oDiv);
	oDayField = document.getElementById(a_sFormName + "-field-" + a_sFieldName + "-day");
	oMonthField = document.getElementById(a_sFormName + "-field-" + a_sFieldName + "-month");
	oYearField = document.getElementById(a_sFormName + "-field-" + a_sFieldName + "-year");
	dateSelectorDate = new Date(oYearField.value, oMonthField.value - 1, oDayField.value);
	setDateSelectorDate(dateSelectorDate.getMonth(), dateSelectorDate.getFullYear());
}

function setDateSelectorDate(a_iMonth, a_iYear) {
	a_iMonth++;
	if (a_iMonth < 1) {
		a_iMonth = 12;
		a_iYear--;
	}
	if (a_iMonth > 12) {
		a_iMonth = 1;
		a_iYear++;
	}
	sMonth = "?";
	if (a_iMonth == 1) sMonth = "januari";
	if (a_iMonth == 2) sMonth = "februari";
	if (a_iMonth == 3) sMonth = "maart";
	if (a_iMonth == 4) sMonth = "april";
	if (a_iMonth == 5) sMonth = "mei";
	if (a_iMonth == 6) sMonth = "juni";
	if (a_iMonth == 7) sMonth = "juli";
	if (a_iMonth == 8) sMonth = "augustus";
	if (a_iMonth == 9) sMonth = "september";
	if (a_iMonth == 10) sMonth = "oktober";
	if (a_iMonth == 11) sMonth = "november";
	if (a_iMonth == 12) sMonth = "december";
	oHeader = document.getElementById("dateSelectorHeader");
	oHeader.innerHTML = '<div class="arrow"><a href="javascript:setDateSelectorDate(' + (a_iMonth - 2) + ', ' + a_iYear + ')" title="vorige maand">&lt;</a></div>' + 
						'<div class="month">' + sMonth + '</div>' + 
						'<div class="arrow"><a href="javascript:setDateSelectorDate(' + (a_iMonth) + ', ' + a_iYear + ')" title="volgende maand">&gt;</a></div>' +
						'<div class="arrow"><a href="javascript:setDateSelectorDate(' + (a_iMonth - 1) + ', ' + (a_iYear - 1) + ')" title="jaar terug">&lt;</a></div>' +
						'<div class="year">' + a_iYear + '</div>' + 
						'<div class="arrow"><a href="javascript:setDateSelectorDate(' + (a_iMonth - 1) + ', ' + (a_iYear + 1) + ')" title="jaar vooruit">&gt;</a></div>';
	numDays = new Date(a_iYear, a_iMonth, 0);
	numDays = numDays.getDate();
	firstDay = new Date(a_iYear, a_iMonth - 1, 1);
	firstDay = firstDay.getDay();
	if (firstDay == 0) firstDay = 7;
	firstDay--;
	oMain = document.getElementById("dateSelectorMain");
	HTML = "<table><tr><th>m</th><th>d</th><th>w</th><th>d</th><th>v</th><th>z</th><th>z</th></tr><tr>";
	for (iCounter = 0; iCounter < firstDay; iCounter++) HTML += "<td>&nbsp;</td>";
	day = firstDay;
	for (iCounter = 1; iCounter <= numDays; iCounter++) {
		if (a_iMonth == dateSelectorDate.getMonth()+ 1 &&
			a_iYear == dateSelectorDate.getFullYear() &&
			iCounter == dateSelectorDate.getDate()) {
			sClass = 'class="selectedDay"';
		} else {
			sClass = '';
		}
		HTML += "<td " + sClass + '><a href="javascript:setDateFromSelector(' + a_iYear + ', ' + a_iMonth + ', ' + iCounter + ')" title="selecteer deze dag" />' + iCounter + "</a></td>";
		day++;
		if (day == 7 && iCounter < numDays) {
			day = 0;
			HTML += "</tr><tr>";
		}
	}
	if (day < 7) for (iCounter = day - 1; iCounter < 6; iCounter++) HTML += "<td>&nbsp;</td>";
	HTML += "</tr></table>";
	oMain.innerHTML = HTML;
}

function setDateFromSelector(a_iYear, a_iMonth, a_iDay) {
	oDayField = document.getElementById(dateSelectorField + "-day");
	oMonthField = document.getElementById(dateSelectorField + "-month");
	oYearField = document.getElementById(dateSelectorField + "-year");
	oDayField.selectedIndex = a_iDay - 1;
	oMonthField.selectedIndex = a_iMonth - 1;
	oYearField.value = a_iYear;
	aFieldPieces = dateSelectorField.split('-');
	changeDateField("form1", aFieldPieces.pop());
	closeDateSelector("close");
}

function closeDateSelector(a_oEvent) {
	if (a_oEvent == "close") {
		oDiv = document.getElementById("dateLayer");
		if (oDiv) document.body.removeChild(oDiv);
	} else {
		oParent = getEventTarget(a_oEvent);
		if (oParent) if (oParent.id == "dateLayer") document.body.removeChild(oParent);
	}
}

//------------- Tables ------------------//

function bHdeleteRow(a_sClassName, a_iId) {
	oLayer = document.createElement('div');
	oLayer.className = 'layer';
	document.body.appendChild(oLayer);
	oLayer.id = "warningLayer";
	oDiv = document.createElement('div');
	oDiv.id = "warning";
	oDiv.innerHTML = 	"<p>waarschuwing: deze bewerking kan niet ongedaan worden gemaakt</p><center>" + 
						'<input type="button" value="annuleer" onclick="bHDeleteRowNo()" />&nbsp;' + 
						'<input type="button" value="verwijder" onclick="bHDeleteRowYes(\'' + a_sClassName + '\', \'' + a_iId + '\')" />' + 
						"</center>";
	document.body.appendChild(oDiv);
}

function bHupItem(a_sClassName, a_iId) {
	requestXML('wrapper.php', 'action=bhUpItem&sClassName=' + a_sClassName + '&iId=' + a_iId, bHupItemFinish, true);
}

function bHupItemFinish(a_oRequest) {
 	oXML = a_oRequest.responseXML;
	sClassName = getNodeValue(oXML, "className");
	setSystem(sClassName);
}

function bHdownItem(a_sClassName, a_iId) {
	requestXML('wrapper.php', 'action=bhDownItem&sClassName=' + a_sClassName + '&iId=' + a_iId, bHdownItemFinish, true);
}

function bHdownItemFinish(a_oRequest) {
 	oXML = a_oRequest.responseXML;
	sClassName = getNodeValue(oXML, "className");
	setSystem(sClassName);
}

function bHDeleteRowYes(a_sClassName, a_iId) {
	bHDeleteRowNo();
	requestXML('wrapper.php', 'action=bhDelete&sClassName=' + a_sClassName + '&iId=' + a_iId, bHdeleteRowFinish, true);
}

function bHDeleteRowNo() {
	oLayer = document.getElementById("warningLayer");
	if (oLayer) document.body.removeChild(oLayer);
	oDiv = document.getElementById("warning");
	if (oDiv) document.body.removeChild(oDiv);
}

function bHeditRow(a_sClassName, a_iId) {
	editItem(a_sClassName, "form1", bHsetForm, a_iId);
}

function bHdeleteRowFinish(a_oRequest) {
	oXML = a_oRequest.responseXML;
	sClassName = getNodeValue(oXML, "className");
	iId = getNodeValue(oXML, "id");
	oRow = document.getElementById(sClassName + '-row-' + iId);
	oRow.parentNode.removeChild(oRow);
}

function bHopenChildTable(a_sClassName, a_iId) {
	requestXML('wrapper.php', "action=bHopenChildTable&className=" + a_sClassName + "&iId=" + a_iId, bHopenChildTableStep2, true);
}

function bHopenChildTableStep2(a_oRequest) {
 	oXML = a_oRequest.responseXML;
	sClassName = getNodeValue(oXML, "className");
	setSystem(sClassName);
}

function bHshowMore(a_iRowId) {
	oButton = document.getElementById("expandButton-" + a_iRowId);
	oRow = document.getElementById("showMore-" + a_iRowId);
	if (oButton.src.match(/expand/)) {
		oButton.src = "images/collapse.gif";
		oRow.style.display = "table-cell";
	} else {
		oButton.src = "images/expand.gif";
		oRow.style.display = "none";
	}
}

//------------- Occupation --------------//

function bHeditOccupation() {
	sPost = "action=bhLoadDates&sDates=";
	bFirst = true;
	for (iCounter = 0; iCounter < aSelected.length; iCounter++) {
		if (bFirst) bFirst = false;
		else sPost = sPost + "|";
		sPost = sPost + aSelected[iCounter];
	}
	requestXML('wrapper.php', sPost, bHeditOccupationForm, true);
}

function bHeditOccupationForm(a_oRequest) {
	bHnewItem("Occupation", bHCloseKalanderForm);
}

//------------- Options ----------------//

function bHeditOptionsAv() {
	sPost = "action=bhLoadDates&sDates=";
	bFirst = true;
	for (iCounter = 0; iCounter < aSelected.length; iCounter++) {
		if (bFirst) bFirst = false;
		else sPost = sPost + "|";
		sPost = sPost + aSelected[iCounter];
	}
	requestXML('wrapper.php', sPost, bHeditOptionsAvForm, true);
}

function bHeditOptionsAvForm(a_oRequest) {
	bHnewItem("OptionAv", bHCloseKalanderForm);
}

//------------- Arrangements ----------------//

function bHeditArrangementAv() {
	sPost = "action=bhLoadDates&sDates=";
	bFirst = true;
	for (iCounter = 0; iCounter < aSelected.length; iCounter++) {
		if (bFirst) bFirst = false;
		else sPost = sPost + "|";
		sPost = sPost + aSelected[iCounter];
	}
	requestXML('wrapper.php', sPost, bHeditArrangementAvForm, true);
}

function bHeditArrangementAvForm(a_oRequest) {
	bHnewItem("ArrangementAv", bHCloseKalanderForm);
}

//------------- Arrangements ----------------//

function bHeditMinLengthOfStay() {
	sPost = "action=bhLoadDates&sDates=";
	bFirst = true;
	for (iCounter = 0; iCounter < aSelected.length; iCounter++) {
		if (bFirst) bFirst = false;
		else sPost = sPost + "|";
		sPost = sPost + aSelected[iCounter];
	}
	requestXML('wrapper.php', sPost, bHeditMinLengthOfStayForm, true);
}

function bHeditMinLengthOfStayForm(a_oRequest) {
	bHnewItem("MinLengthOfStay", bHCloseKalanderForm);
}

//------------- Standard prices ------------//

function bHeditStdPrices() {
	sPost = "action=bhLoadDates&sDates=";
	bFirst = true;
	for (iCounter = 0; iCounter < aSelected.length; iCounter++) {
		if (bFirst) bFirst = false;
		else sPost = sPost + "|";
		sPost = sPost + aSelected[iCounter];
	}
	requestXML('wrapper.php', sPost, bHeditStdPricesForm, true);
}

function bHeditStdPricesForm(a_oRequest) {
	bHnewItem("StdPrices", bHCloseKalanderForm);
}

//------------- Room prices ------------//

function bHeditRoomPrices() {
	sPost = "action=bhLoadDates&sDates=";
	bFirst = true;
	for (iCounter = 0; iCounter < aSelected.length; iCounter++) {
		if (bFirst) bFirst = false;
		else sPost = sPost + "|";
		sPost = sPost + aSelected[iCounter];
	}
	requestXML('wrapper.php', sPost, bHeditRoomPricesForm, true);
}

function bHeditRoomPricesForm(a_oRequest) {
	bHnewItem("RoomPrices", bHCloseKalanderForm);
}

//------------- Arrangement prices ------------//

function bHeditArrangementPrices() {
	sPost = "action=bhLoadDates&sDates=";
	bFirst = true;
	for (iCounter = 0; iCounter < aSelected.length; iCounter++) {
		if (bFirst) bFirst = false;
		else sPost = sPost + "|";
		sPost = sPost + aSelected[iCounter];
	}
	requestXML('wrapper.php', sPost, bHeditArrangementPricesForm, true);
}

function bHeditArrangementPricesForm(a_oRequest) {
	bHnewItem("ArrangementPrices", bHCloseKalanderForm);
}

//------------- Fees ------------//

function bHeditFees() {
	sPost = "action=bhLoadDates&sDates=";
	bFirst = true;
	for (iCounter = 0; iCounter < aSelected.length; iCounter++) {
		if (bFirst) bFirst = false;
		else sPost = sPost + "|";
		sPost = sPost + aSelected[iCounter];
	}
	requestXML('wrapper.php', sPost, bHeditFeesForm, true);
}

function bHeditFeesForm(a_oRequest) {
	bHnewItem("FeeDates", bHCloseKalanderForm);
}

//------------- Set for dates all to full ------------//

function bhHotelFull() {
	sPost = "action=bhLoadDates&sDates=";
	bFirst = true;
	for (iCounter = 0; iCounter < aSelected.length; iCounter++) {
		if (bFirst) bFirst = false;
		else sPost = sPost + "|";
		sPost = sPost + aSelected[iCounter];
	}
	requestXML('wrapper.php', sPost, bhHotelFull2, true);
}

function bhHotelFull2(a_oRequest) {
	requestXML('wrapper.php', 'action=bhHotelFull', bhHotelFull3, true);
}

function bhHotelFull3(a_oRequest) {
	document.getElementById('main').innerHTML = '';
	setSystem('BHKalender');
	initKalender();
}


//------------ Kalander -------------------//

function nextFourWeeks() {
	document.getElementById('main').innerHTML = '';
	setSystem('BHKalender');
	initKalender();
	nextFourWeeks2();
}

function nextFourWeeks2() {
	oTable = document.getElementById("calander");
	if (!oTable) {
		setTimeout(nextFourWeeks2, 10);
		return false;
	}
	deSelectDays();
	requestXML("wrapper.php", "action=bhNextFourWeeks", selectDays, true);
	nextFourWeeks3();
}

function nextFourWeeks3() {
	if (aCurrentRequest.length > 1) {
		setTimeout(nextFourWeeks3, 10);
		return false;
	}
	bHeditOccupation();
}

function showPriceBuild(a_sId) {
	requestXML('wrapper.php', 'action=bhShowPriceBuild&dDate=' + a_sId, showPriceBuild2, true);
}

function showPriceBuild2(a_oRequest) {
	oDiv = document.getElementById("calExtraInfo");
	oDiv.innerHTML = a_oRequest.responseText;
}


function bHCloseKalanderForm(a_sClassName) {
	hCloseFormFunction = false;
	hTempCloseFormFunction = false;
	document.getElementById("calander").id="geen";
	bHcloseForm("BHKalender");
	initKalender();
}

function selectDay(a_oEvent) {
	var oCell = getEventTarget(a_oEvent);
	if (oCell.tagName == "DIV") oCell = oCell.parentNode;
	if (oCell.className.indexOf("selected") > -1) {
		if (aSelected.length > 1 && !a_oEvent.ctrlKey) {
			deSelectDays(a_oEvent);
			selectDay(a_oEvent);
		} else {
			deSelectDays(a_oEvent);
			sLastSelectedDate = false;
			setCalOptions();
		}			
	} else {
		deSelectDays(a_oEvent);
		addClass(oCell, "selected");
		aSelected.push(oCell.id);
		if (a_oEvent.shiftKey && sLastSelectedDate) {
			sPost = "action=bhCalanderDays&dFirstDate=" + sLastSelectedDate + "&dSecondDate=" + oCell.id;
			requestXML('wrapper.php', sPost, selectDays, true);
		}
		sLastSelectedDate = oCell.id;
		setCalOptions();
	}
}

function deSelectDays(a_oEvent) {
	if (typeof(a_oEvent) == "undefined" || !a_oEvent.ctrlKey && !a_oEvent.shiftKey) {
		for (iCounter = 0; iCounter < aSelected.length; iCounter++) {
			oCell = document.getElementById(aSelected[iCounter]);
			if (oCell) removeClass(oCell, "selected");
		}
		aSelected = new Array();
	} else if (a_oEvent.ctrlKey) {
		var oCell = getEventTarget(a_oEvent);
		if (oCell.tagName == "DIV") oCell = oCell.parentNode;
		removeClass(oCell, "selected");
		aTemp = new Array();
		for (iCounter = 0; iCounter < aSelected.length; iCounter++) {
			if (aSelected[iCounter] != oCell.id) aTemp.push(aSelected[iCounter]);
		}
		aSelected = aTemp;
		sLastSelectedDate = false;
	}
}

function selectDays(a_oRequest) {
	oXML = a_oRequest.responseXML;
	aDates = oXML.getElementsByTagName("date");
	for (iCounter = 0; iCounter < aDates.length; iCounter++) {
		sDate = aDates[iCounter].childNodes[0].nodeValue;
		oCell = document.getElementById(sDate);
		if (oCell) addClass(oCell, "selected");
		bAdd = true;
		for (iCounter2 = 0; iCounter2 < aSelected.length; iCounter2++) {
			if (aSelected[iCounter2] == sDate) {
				bAdd = false;
				break;
			}
		}
		if (bAdd) aSelected.push(sDate);
	}
	setCalOptions();
}

function initKalender() {
	oTable = document.getElementById("calander");
	if (!oTable) {
		setTimeout(initKalender, 10);
		return false;
	}
	aCells = oTable.getElementsByTagName("td");
	for (iCounter = 0; iCounter < aCells.length; iCounter++) {
		addEventListener(aCells[iCounter], 'click', selectDay, false);
	}
	for (iCounter = 1; iCounter <= 12; iCounter++) {
		oDiv = document.getElementById("month-" + iCounter);
		addEventListener(oDiv, 'click', setMonth, false);
	}
	var date = new Date();
	for (iCounter = date.getFullYear() - 4; iCounter <= date.getFullYear() + 4; iCounter++) {
		oDiv = document.getElementById("year-" + iCounter);
		addEventListener(oDiv, 'click', setYear, false);
	}
	for (iCounter = 0; iCounter < aSelected.length; iCounter++) {
		oCell = document.getElementById(aSelected[iCounter]);
		if (oCell) addClass(oCell, "selected");
	}
	setCalOptions();
}

function setCalOptions() {
	sPost = "sDates=";
	for (iCounter = 0; iCounter < aSelected.length; iCounter++) {
		sPost += aSelected[iCounter] + "|";
	}
	sPost = sPost.substring(0, sPost.length - 1);
	requestXML('wrapper.php', 'action=bhCalOptions&' + sPost, setMenuItems, true);
}

function setYear(a_oEvent) {
	oDiv = getEventTarget(a_oEvent);
	iYear = oDiv.id.substring(5);
	aReloadFunctions.push('document.getElementById("main").innerHTML = "";');
	aReloadFunctions.push('setSystem("BHKalender")');
	aReloadFunctions.push('initKalender()');
	requestXML('wrapper.php', 'action=setSession&bhbs-year=' + iYear, reloadOnFinish, true);
}

function setMonth(a_oEvent) {
	oDiv = getEventTarget(a_oEvent);
	iMonth = oDiv.id.substring(6);
	aReloadFunctions.push('document.getElementById("main").innerHTML = "";');
	aReloadFunctions.push('setSystem("BHKalender")');
	aReloadFunctions.push('initKalender()');
	requestXML('wrapper.php', 'action=setSession&bhbs-month=' + iMonth, reloadOnFinish, true);
}

function bhSelMonth() {
	deSelectDays();
	requestXML("wrapper.php", "action=bhSelMonth", selectDays, true);
}

//------------ Reservations --------------//

function bHconfirmReservation(a_sClassName, a_iId) {
	requestXML('wrapper.php', 'action=confirmReservation&sClassName=' + a_sClassName + '&iId=' + a_iId, bHconfirmReservationFinish, true);
}

function bHconfirmReservationFinish(a_oRequest) {
	oXML = a_oRequest.responseXML;
	sClassName = getNodeValue(oXML, "className");
	sResult = getNodeValue(oXML, "result");
	setSystem(sClassName);
	requestXML('wrapper.php', 'action=setNumToConfirm', setNumToConfirm, true);
}

function bHreservations() {
	requestXML('wrapper.php', 'action=setSession&resDay=' + aSelected[0], reloadOnFinish, true);
	aReloadFunctions.push('setSystem("BHReservations")');
}

function preload() {
	oImg = new Image();
	oImg.src = '/beheer/images/buttonMulti.gif';
	oImg = new Image();
	oImg.src = '/beheer/images/buttonMultiOver.gif';
}

function bHquickFill() {
	bHnewItem("QuickFill", bHCloseKalanderForm);
}
