// JavaScript Document

var Calendar_sDateSyntax = "";
var Calendar_aWeekdays = new Array();
var Calendar_aMonthnames = new Array();
var Calendar_aShortMonthnames = new Array();
var Calendar_sCloseText = "";
var Calendar_sToManyNightsText = "";
var Calendar_sCanNotBeSameDays = "";
var Calendar_iTodayMinutes = 0;
var Calendar_iSelectedMinutes = 0;
var Calendar_oDiv = null;
var Calendar_oInput = null;
var Calendar_firstMonth = 0;
var Calendar_firstYear = 0;
var Calendar_aMonthFirst = new Array();
var Calendar_aMonthNext = new Array();

var Calendar_sInputID_CheckIn  = "";
var Calendar_sInputID_CheckOut = "";
var Calendar_sInputID_Nights   = "";
var Calendar_aCalendarDiv = new Array();
var Calendar_aInput = new Array();
var Calendar_bLoaded = new Array();
var Calendar_iMinInterval = new Array();

var Calendar_bSetNightsInProgress = new Array();

var Calendar_iMsieVersion = 0;

ua = window.navigator.userAgent;
msie = ua.indexOf("MSIE ");
if(msie>0) Calendar_iMsieVersion = parseInt (ua.substring (msie+5, ua.indexOf (".", msie )));
else Calendar_iMsieVersion = 0;


function Calendar_SetNights(sInputID_Nights, sInputId_CheckIn, sInputID_CheckOut) {
	if(Calendar_bSetNightsInProgress[sInputID_Nights]) return;
	Calendar_sInputID_Nights = sInputID_Nights;
	Calendar_sInputID_CheckIn = sInputId_CheckIn;
	Calendar_sInputID_CheckOut = sInputID_CheckOut;
	var oSelect = document.getElementById(sInputID_Nights);
	var oInputCheckIn = document.getElementById(sInputId_CheckIn);
	var oInputCheckOut = document.getElementById(sInputID_CheckOut);
	if(!oSelect || !oInputCheckIn) return false;
	
	Calendar_ActualizeDynamics(sInputID_Nights, sInputID_CheckOut);
	
	var iMilliseconds = oSelect.value * 1000 * 60 * 60 * 24;
	if(!oInputCheckIn.value) {
		dDate = new Date();
		oInputCheckIn.value = dDate.getFullYear() + "-" + (dDate.getMonth()+1) + "-" + dDate.getDate();
	}
	var a = oInputCheckIn.value.split("-");
	var iStartMilliseconds = Calendar_GetInMilliseconds(1*a[0], 1*a[1], 1*a[2]);
	iMilliseconds += iStartMilliseconds;
	dDate = new Date(iMilliseconds);
	oInputCheckOut.value = dDate.getFullYear() + "-" + (dDate.getMonth()+1) + "-" + dDate.getDate();
	
	Calendar_SetHumanCheckInOut();
}

function Calendar_SetDate(sInputID, sCalendarDivID, sInputID_CheckIn, sInputID_CheckOut, sInputID_Nights, iMinInterval) {
	Calendar_oInput = null;
	var oInput = document.getElementById(sInputID);
	var oInputHuman = document.getElementById(sInputID + "_string");
	var oDiv = document.getElementById(sCalendarDivID);
	if(!oInput || !oDiv || !oInputHuman) return false;
	
	if(typeof iMinInterval != "undefined") {
		Calendar_iMinInterval[sCalendarDivID] = iMinInterval;
	}
	else {
		Calendar_iMinInterval[sCalendarDivID] = 1;
	}
	
	Calendar_ActualizeDynamics(sInputID_Nights, sInputID_CheckOut);
	
	var aDim = Calendar_GetDim(oInputHuman);
	var iWidth = 323; // ez a sCalendarDivID azonosítójú DIV szélessége 
	x = aDim["left"] + parseInt(oInputHuman.offsetWidth/2) - parseInt(iWidth/2);
	oDiv.style.left = x + "px";
	oDiv.style.top = (aDim["top"] + oInputHuman.offsetHeight) + "px";
	oDiv.style.display = "block";
	aDim = Calendar_GetDim(oDiv);
	
	var windowHeight = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight;
	if(aDim["top"]+aDim["height"]>windowHeight) {
		oDiv.style.top = (aDim["top"] - oDiv.offsetHeight - oInputHuman.offsetHeight) + "px";
	}
	if(aDim["left"]<0) {
		oDiv.style.left = "0px";
	}
	
	if(oDiv.childNodes && oDiv.childNodes.length) for(var i=oDiv.childNodes.length-1; i>=0; i--) {
		oDiv.removeChild(oDiv.childNodes[i]);
	}
	
	Calendar_sInputID_CheckIn  = sInputID_CheckIn;
	Calendar_sInputID_CheckOut = sInputID_CheckOut;
	Calendar_sInputID_Nights   = sInputID_Nights;
	Calendar_aCalendarDiv[Calendar_sInputID_Nights]  = oDiv;
	Calendar_aInput[Calendar_sInputID_Nights]        = oInput;
	oDiv.appendChild(Calendar_GetNew(oInput.value, oInput, oDiv, true));

	return false;
}

function Calendar_GetDim(oNode) {
	var iLeft = 0;
	var iTop = 0;
	var aDim = new Array();
	
	var oParentNode = oNode;
	while(oParentNode) {
		iLeft += oParentNode.offsetLeft;
		iTop += oParentNode.offsetTop;
		oParentNode = oParentNode.offsetParent;
	};
	
	aDim["left"] = iLeft;
	aDim["top"] = iTop;
	aDim["width"] = oNode.offsetWidth;
	aDim["height"] = oNode.offsetHeight;

	return aDim;
}

function Calendar_Init(sWeekdays, sMonthnames, sShortMonthnames, sCloseText, sToManyNightsText, sDateSyntax, sCanNotBeSameDays) {
	if(sWeekdays) {
		a = sWeekdays.split("|");
		if(a && a.length) for(i=0; i<=a.length; i++) Calendar_aWeekdays[i] = a[i];
	}
	if(sMonthnames) {
		a = sMonthnames.split("|");
		if(a && a.length) for(i=0; i<=a.length; i++) Calendar_aMonthnames[i+1] = a[i];
	}
	if(sShortMonthnames) {
		a = sShortMonthnames.split("|");
		if(a && a.length) for(i=0; i<=a.length; i++) Calendar_aShortMonthnames[i+1] = a[i];
	}
	Calendar_sCloseText = sCloseText ? sCloseText : "close";
	Calendar_sToManyNightsText = sToManyNightsText ? sToManyNightsText : "To many nights";
	Calendar_sCanNotBeSameDays = sCanNotBeSameDays ? sCanNotBeSameDays : "Can not be same days";
	Calendar_sDateSyntax = sDateSyntax ? sDateSyntax : "d m y";
	var dDate = new Date();
	dDate.setHours(0);
	dDate.setMinutes(0);
	dDate.setSeconds(0);
	dDate.setMilliseconds(0);
	Calendar_iTodayMinutes = dDate.getTime();
	Calendar_firstMonth = dDate.getMonth() + 1;
	Calendar_firstYear = dDate.getFullYear();
}

function Calendar_GetNew(sStartDateISO, oInput, oDiv, bStart, sInputNights) {
	Calendar_oInput = oInput;
	Calendar_oDiv = oDiv;
	Calendar_bLoaded[oDiv.id] = false;
	var aMonthFirst = Calendar_GetFields(sStartDateISO);
	var iNextDay = 1;
	var iNextMonth = aMonthFirst["month_index"] + 1;
	var iNextYear = aMonthFirst["year_index"];
	if(iNextMonth==13) { iNextMonth = 1; iNextYear++; }
	var sNextDateISO = iNextYear + "-" + iNextMonth + "-" + iNextDay;
	var aMonthNext = Calendar_GetFields(sNextDateISO);
	
	Calendar_aMonthFirst = aMonthFirst;
	Calendar_aMonthNext = aMonthNext;
	
	if(bStart) {
		Calendar_iSelectedMinutes = Calendar_GetInMilliseconds(aMonthFirst["year_index"], aMonthFirst["month_index"], aMonthFirst["day_first_index"]);
	}

	return Calendar_Draw(aMonthFirst, aMonthNext, oDiv);
}

function Calendar_FinishDrawing(sId) {
	Calendar_bLoaded[sId] = true;
	if(Calendar_iMsieVersion<=6) {
		var a = document.getElementsByTagName("TABLE");
		if(a && a.length) for(var i in a) {
			if(a[i] && a[i].className && a[i].className.search(/calendardependent/)!=-1) {
				a[i].style.visibility = "hidden";
			}
		} 
	}
}

function Calendar_Close(sCalendarDivID) {
	var oCalendarDiv = document.getElementById(sCalendarDivID);
	if(oCalendarDiv) {
		if(Calendar_iMsieVersion<=6) {
			var a = document.getElementsByTagName("TABLE");
			if(a && a.length) for(var i in a) {
				if(a[i] && a[i].className && a[i].className.search(/calendardependent/)!=-1) {
					a[i].style.visibility = "visible";
				}
			} 
		}
		oCalendarDiv.style.display = "none";
		if(Calendar_bLoaded[sCalendarDivID]) Calendar_bLoaded[sCalendarDivID] = false;
	}
	return false;
}

function Calendar_GoToNextMonth() {
	var iNewMonth = Calendar_aMonthFirst["month_index"] + 1;
	var iNewYear = Calendar_aMonthFirst["year_index"];
	if(iNewMonth==13) { iNewMonth = 1; iNewYear++; }
	var sNewDateISO = iNewYear + "-" + iNewMonth + "-1";
	if(Calendar_oDiv.childNodes && Calendar_oDiv.childNodes.length) for(var i=Calendar_oDiv.childNodes.length-1; i>=0; i--) {
		Calendar_oDiv.removeChild(Calendar_oDiv.childNodes[i]);
	} 
	Calendar_oDiv.appendChild(Calendar_GetNew(sNewDateISO, Calendar_oInput, Calendar_oDiv));
	return false;
}

function Calendar_GoToPrevMonth() {
	var iNewMonth = Calendar_aMonthFirst["month_index"] - 1;
	var iNewYear = Calendar_aMonthFirst["year_index"];
	if(iNewMonth==0) { iNewMonth = 12; iNewYear--; }
	if((iNewYear==Calendar_firstYear && iNewMonth<Calendar_firstMonth) || iNewYear<Calendar_firstYear) {
		return false;
	}
	var sNewDateISO = iNewYear + "-" + iNewMonth + "-1";
	
	if(Calendar_oDiv.childNodes && Calendar_oDiv.childNodes.length) for(var i=Calendar_oDiv.childNodes.length-1; i>=0; i--) {
		Calendar_oDiv.removeChild(Calendar_oDiv.childNodes[i]);
	} 
	Calendar_oDiv.appendChild(Calendar_GetNew(sNewDateISO, Calendar_oInput, Calendar_oDiv));
	return false;
}

function Calendar_Return(iYear, iMonth, iDay) {

	var oOther = null;
	var sOriginalValue = "";
	if(Calendar_oDiv) Calendar_oDiv.style.display = "none";
	if(Calendar_oInput) {
		sOriginalValue = Calendar_oInput.value;
		Calendar_oInput.value = iYear + "-" + iMonth + "-" + iDay;
		sId = Calendar_oInput.id;
		iTime = Calendar_GetInMilliseconds(iYear, iMonth, iDay);
		
		if(sId==Calendar_sInputID_CheckIn) {
			oOther = document.getElementById(Calendar_sInputID_CheckOut);
			if(oOther.value) {
				a = oOther.value.split("-");
				iOtherTime = Calendar_GetInMilliseconds(1*a[0], 1*a[1], 1*a[2]);
				if(iOtherTime<iTime || iOtherTime=="NaN") {
					oOther.value = Calendar_GetNextDayString(iYear, iMonth, iDay);
				}
			}
			else {
				oOther.value = Calendar_GetNextDayString(iYear, iMonth, iDay);
			}
		}
		else if(sId==Calendar_sInputID_CheckOut) {
			oOther = document.getElementById(Calendar_sInputID_CheckIn);
			if(oOther.value) {
				a = oOther.value.split("-");
				iOtherTime = Calendar_GetInMilliseconds(1*a[0], 1*a[1], 1*a[2]);
				if(iOtherTime>iTime || iOtherTime=="NaN") {
					oOther.value = Calendar_GetPrevDayString(iYear, iMonth, iDay);
				}
			}
			else {
				oOther.value = Calendar_GetPrevDayString(iYear, iMonth, iDay);
			}
		}
	}
	if(Calendar_sInputID_Nights) {
		oInputNumOfNights = document.getElementById(Calendar_sInputID_Nights);
		if(oInputNumOfNights) {
			Calendar_ActualizeDynamics(Calendar_sInputID_Nights, Calendar_sInputID_CheckOut);
			Calendar_bSetNightsInProgress[Calendar_sInputID_Nights] = true;
			a = oOther.value.split("-");
			iOtherTime = Calendar_GetInMilliseconds(1*a[0], 1*a[1], 1*a[2]);
			if(sId==Calendar_sInputID_CheckIn) iDiffSeconds = iOtherTime - iTime;
			else if(sId==Calendar_sInputID_CheckOut) iDiffSeconds = iTime - iOtherTime;
			if(Calendar_iMinInterval[Calendar_oDiv.id]>0) {

				iHours = Calendar_iMinInterval[Calendar_oDiv.id] * 24;
				iDays = iDiffSeconds / (1000*60*60* iHours );
			}
			else {
				iDays = 0;
			}
			if(oInputNumOfNights.value!=iDays) {
				var bFound = false;
				for(var i=0; i<=oInputNumOfNights.options.length-1; i++) {
					if(oInputNumOfNights.options[i].value==iDays) {
						bFound = true;
						oInputNumOfNights.selectedIndex = i;
						break;
					}
				}
				if(!bFound) {
					Calendar_oInput.value = sOriginalValue;
					if(iDays==0) alert(Calendar_sCanNotBeSameDays);
					else alert(Calendar_sToManyNightsText);
				}
			}
			Calendar_bSetNightsInProgress[Calendar_sInputID_Nights] = false;
		}
	}
	
	Calendar_SetHumanCheckInOut();
	
	//Calendar_oInput.focus(); // hiszen readonly!!!
	
	return false;
}

function Calendar_SetHumanCheckInOut() {
	Calendar_SetHumanDate(Calendar_sInputID_CheckIn, Calendar_sInputID_CheckIn + "_string");
	Calendar_SetHumanDate(Calendar_sInputID_CheckOut, Calendar_sInputID_CheckOut + "_string");
}

function Calendar_SetHumanDate(sIsoID, sHumanID) {
	var sHumanFormat = Calendar_sDateSyntax;
	var oInputISO = document.getElementById(sIsoID);
	var oInputHuman = document.getElementById(sHumanID);
	var a = oInputISO.value.split("-");
	oInputHuman.value = sHumanFormat.replace(/\|y\|/, 1*a[0]).replace(/\|m\|/, Calendar_aShortMonthnames[1*a[1]]).replace(/\|d\|/, 1*a[2]);
}

function Calendar_GetFields(sStartDateISO) {
	var iWeekday = -1;
	var iDay = 0;
	var iMonth = 0;
	var iYear = 0;
	var aFieldsInMonth = new Array();
	if(!sStartDateISO) {
		var dDate = new Date();
		iWeekday = dDate.getDay();
		iDay = dDate.getDate();
		iMonth = dDate.getMonth() + 1;
		iYear = dDate.getFullYear();
	}
	else {
		var a = sStartDateISO.split("-");
		iDay = 1* a[2];
		iMonth = 1* a[1];
		iYear = 1* a[0];
		if(iDay>0 && iDay<32 && iMonth>0 && iMonth<13 && iYear>2000 && iYear<3000) {
			var dDate = new Date();
			dDate.setDate(iDay);
			dDate.setMonth(iMonth - 1);
			dDate.setFullYear(iYear);
			iWeekday = dDate.getDay();
		}
		else {
			var dDate = new Date();
			iDay = dDate.getDate();
			iMonth = Calendar_firstMonth;
			iYear = Calendar_firstYear;
			iWeekday = dDate.getDay();
		}
		if(iWeekday<0 || iWeekday>6) {
			alert("Bad iWeekday (" + iWeekday + ")");
			return false;
		}
	}
	if(iDay!=1) {
		iFirstWeekday = (new Date(iYear, (iMonth-1), 1)).getDay();
	}
	else {
		iFirstWeekday = iWeekday;
	}
	aFieldsInMonth["day_first_index"] = iDay;
	aFieldsInMonth["day_first_weekday"] = iWeekday;
	aFieldsInMonth["first_weekday"] = iFirstWeekday;
	aFieldsInMonth["month_index"] = iMonth;
	aFieldsInMonth["year_index"] = iYear;
	aFieldsInMonth["list_of_days"] = Calendar_CreateDaysInMonth(iMonth, iYear);
	return aFieldsInMonth;
}

function Calendar_CreateDaysInMonth(iMonth, iYear) {
	var aDays = new Array();
	var iLastDay = Calendar_GetLastDay(iYear, iMonth);
	for(var i=1; i<=iLastDay; i++) aDays[i] = i;
	return aDays;
}

function Calendar_GetLastDay(iYear, iMonth) {
	return (new Date((new Date(iYear, (iMonth-1)+1,1))-1)).getDate();
}

function Calendar_Draw(aMonthFirst, aMonthNext, oDiv) {
	var oTable = document.createElement("TABLE");
	if(document.all) {
		if(!oTable.tHead) {
			oTable.createTHead();
		}
		if(!oTable.tBodies || !oTable.tBodies.length) {
			oTBody = document.createElement("TBODY");
			oTable.appendChild(oTBody);
			//oTable.tBodies[0] = oTBody;
		}
	}
	else {
		oTable.innerHTML = "<thead></thead><tbody></tbody>";
	}
	oTable.className = "ocmscalendar";
	oTable.cellSpacing = 0;
	
	
	oTable.tHead.insertRow(0);
	oTd = oTable.tHead.rows[0].appendChild(document.createElement("TD"));
	oTd.colSpan = 16;
	oTd.className = "closetab";
	oTd.innerHTML = "<a href='javascript:command(\"close\");' "
		+ "onclick=\"return Calendar_Close('" + Calendar_aCalendarDiv[Calendar_sInputID_Nights].id + "');\">"
		+ Calendar_sCloseText + "</a>";
	
	oTable.tHead.insertRow(1);

	oTd = oTable.tHead.rows[1].appendChild(document.createElement("TD"));
	oTd.className = "monthnavigator";
	
	var iNewMonth = Calendar_aMonthFirst["month_index"] - 1;
	var iNewYear = Calendar_aMonthFirst["year_index"];
	if(iNewMonth==0) { iNewMonth = 12; iNewYear--; }
	if((iNewYear==Calendar_firstYear && iNewMonth<Calendar_firstMonth) || iNewYear<Calendar_firstYear) {
		s = "&nbsp;";
	}
	else s = "<a href=\"javascript:command('get previous month')\" onclick=\"return Calendar_GoToPrevMonth();\">&lt;&lt;</a>";
	oTd.innerHTML = s;

	oTd = oTable.tHead.rows[1].appendChild(document.createElement("TD"));
	oTd.colSpan = 5;
	oTd.className = "monthname";
	oTd.innerHTML = Calendar_aMonthnames[aMonthFirst["month_index"]] + " " + aMonthFirst["year_index"];

	oTd = oTable.tHead.rows[1].appendChild(document.createElement("TD"));
	oTd.className = "monthname";
	oTd.innerHTML = "&nbsp;";
	
	oTd = oTable.tHead.rows[1].appendChild(document.createElement("TD"));
	oTd.className = "separator1";
	oTd.innerHTML = "&nbsp;";
	oTd.style.fontSize = "1px";
	oTd = oTable.tHead.rows[1].appendChild(document.createElement("TD"));
	oTd.className = "separator2";
	oTd.innerHTML = "&nbsp;";
	oTd.style.fontSize = "1px";

	oTd = oTable.tHead.rows[1].appendChild(document.createElement("TD"));
	oTd.className = "monthname";
	oTd.innerHTML = "&nbsp;";

	oTd = oTable.tHead.rows[1].appendChild(document.createElement("TD"));
	oTd.colSpan = 5;
	oTd.className = "monthname";
	oTd.innerHTML = Calendar_aMonthnames[aMonthNext["month_index"]] + " " + aMonthNext["year_index"];

	oTd = oTable.tHead.rows[1].appendChild(document.createElement("TD"));
	oTd.className = "monthnavigator";
	oTd.innerHTML = "<a href=\"javascript:command('get net month')\" onclick=\"return Calendar_GoToNextMonth();\">&gt;&gt;</a>";
	
	
	oTable.tBodies[0].insertRow(0);
	for(var d=0; d<=6; d++) {
		iWeekday = d + 1;
		if(iWeekday==7) iWeekday = 0;
		oTD = oTable.tBodies[0].rows[0].appendChild(document.createElement("TD"));
		oTD.className = "weekdayname";
		oTD.innerHTML = Calendar_aWeekdays[iWeekday];
	}
	
	oTd = oTable.tBodies[0].rows[0].appendChild(document.createElement("TD"));
	oTd.className = "separator1";
	oTd.innerHTML = "&nbsp;";
	oTd.style.fontSize = "1px";
	oTd.rowSpan = 7;
	oTd = oTable.tBodies[0].rows[0].appendChild(document.createElement("TD"));
	oTd.className = "separator2";
	oTd.innerHTML = "&nbsp;";
	oTd.rowSpan = 7;
	oTd.style.fontSize = "1px";
	
	for(var d=0; d<=6; d++) {
		iWeekday = d + 1;
		if(iWeekday==7) iWeekday = 0;
		oTD = oTable.tBodies[0].rows[0].appendChild(document.createElement("TD"));
		oTD.className = "weekdayname";
		oTD.innerHTML = Calendar_aWeekdays[iWeekday];
	}
	
	bFirstStarted = false;
	iFirst = 0;
	bNextStarted = false;
	iNext = 0;
	for(var w=1; w<=6; w++) {
		oTable.tBodies[0].insertRow(w);
		for(var d=0; d<=6; d++) {
			iWeekday = d + 1;
			if(iWeekday==7) iWeekday = 0;
			oTD = oTable.tBodies[0].rows[w].appendChild(document.createElement("TD"));
			if(iWeekday==0 || iWeekday==6) oTD.className += (oTD.className ? " " : "") + "weekend";
			s = "&nbsp;";
			if(w==1) {
				if(bFirstStarted) s = aMonthFirst["list_of_days"][++iFirst];
				else {
					if(iWeekday==aMonthFirst["first_weekday"]) {
						bFirstStarted = true;
						s = aMonthFirst["list_of_days"][++iFirst];
					}
				} 
			}
			else {
				if(aMonthFirst["list_of_days"][iFirst+1]) s = aMonthFirst["list_of_days"][++iFirst];
			}
			oTD.innerHTML = s;
			iTime = Calendar_GetInMilliseconds(aMonthFirst["year_index"], aMonthFirst["month_index"], aMonthFirst["list_of_days"][iFirst]);
			if(iTime<Calendar_iTodayMinutes) {
				oTD.className += (oTD.className ? " " : "") + "inactive";
			}
			else {
				if(s!="&nbsp;") {
					sNewDate = aMonthFirst["year_index"] + "," + aMonthFirst["month_index"] + "," + aMonthFirst["list_of_days"][iFirst];
					oTD.innerHTML = "<a href=\"javascript:command('insert date: " + sNewDate.replace(/\,/g,"-") + "');\" "
						+ "onclick=\"return Calendar_Return(" + sNewDate + ");\" "
						+ "onmouseover=\"Calendar_MouseOver(this);\" onmouseout=\"Calendar_MouseOut(this)\""
						+ ">" + s + "</a>";
				}
				if(iTime==Calendar_iSelectedMinutes && s!="&nbsp;") {
					oTD.className += (oTD.className ? " " : "") + "today";
				}
			}
		}
		for(var d=0; d<=6; d++) {
			iWeekday = d + 1;
			if(iWeekday==7) iWeekday = 0;
			oTD = oTable.tBodies[0].rows[w].appendChild(document.createElement("TD"));
			if(iWeekday==0 || iWeekday==6) oTD.className = (oTD.className ? " " : "") + "weekend";
			s = "&nbsp;";
			if(w==1) {
				if(bNextStarted) s = aMonthNext["list_of_days"][++iNext];
				else {
					if(iWeekday==aMonthNext["first_weekday"]) {
						bNextStarted = true;
						s = aMonthNext["list_of_days"][++iNext];
					}
				} 
			}
			else {
				iNext++;
				if(aMonthNext["list_of_days"][iNext]) s = aMonthNext["list_of_days"][iNext];
			}
			oTD.innerHTML = s;
			if(s!="&nbsp;") {
				sNewDate = aMonthNext["year_index"] + "," + aMonthNext["month_index"] + "," + aMonthNext["list_of_days"][iNext];
				oTD.innerHTML = "<a href=\"javascript:command('insert date: " + sNewDate.replace(/\,/g,"-") + "');\" "
					+ "onclick=\"return Calendar_Return(" + sNewDate + ");\" "
					+ "onmouseover=\"Calendar_MouseOver(this);\" onmouseout=\"Calendar_MouseOut(this)\""
					+ ">" + s + "</a>";
			}
		}
	}
	
	setTimeout("Calendar_FinishDrawing('"+oDiv.id+"')",50);
	
	return oTable;
}

function Calendar_MouseOver(oAhref) {
	var oParent = oAhref.parentNode;
	oParent.className += (oParent.className ? " " : "") + "aover";
}

function Calendar_MouseOut(oAhref) {
	var oParent = oAhref.parentNode;
	if(oParent.className) {
		var a = oParent.className.split(" "); 
		if(a.length==1) oParent.className = "";
		else if(a.length==2) oParent.className = a[0];
		else if(a.length==3) oParent.className = a[0] + " " + a[1];
		else if(a.length==4) oParent.className = a[0] + " " + a[1] + " " + a[2];
		else if(a.length==5) oParent.className = a[0] + " " + a[1] + " " + a[2] + " " + a[3];
	}
	else oParent.className = "";
}

function Calendar_GetInMilliseconds(iYear, iMonth, iDay) {
	var dDate = new Date();
	dDate.setDate(iDay);
	dDate.setMonth(iMonth - 1);
	dDate.setFullYear(iYear);
	dDate.setHours(0);
	dDate.setMinutes(0);
	dDate.setSeconds(0);
	dDate.setMilliseconds(0);
	return dDate.getTime();
}

function Calendar_GetNextDayString(iYear, iMonth, iDay) {
	var sDayString = "";
	var iLastDay = Calendar_GetLastDay(iYear, iMonth);
	if(Calendar_iMinInterval[Calendar_oDiv.id]==0) {
		sDayString = iYear + "-" + iMonth + "-" + iDay;
	}
	else {
		if(iDay<iLastDay) {
			sDayString = iYear + "-" + iMonth + "-" + (iDay + Calendar_iMinInterval[Calendar_oDiv.id]);
		}
		else {
			iOtherDay = 1;
			iOtherMonth = iMonth + 1;
			iOtherYear = iYear;
			if(iOtherMonth>12) { iOtherMonth = 1; iOtherYear++; }
			sDayString = iOtherYear + "-" + iOtherMonth + "-" + iOtherDay;
		}
	}
	return sDayString;
}

function Calendar_GetPrevDayString(iYear, iMonth, iDay) {
	if(Calendar_iMinInterval[Calendar_oDiv.id]==0) {
		iOtherDay = iDay;
	}
	else {
		iOtherDay = iDay - Calendar_iMinInterval[Calendar_oDiv.id];
	}
	iOtherMonth = iMonth;
	iOtherYear = iYear;
	if(iOtherDay<1) {
		iOtherMonth--;
		if(iOtherMonth<1) {
			iOtherMonth = 12;
			iOtherYear--;
		}
		iOtherDay = Calendar_GetLastDay(iOtherYear, iOtherMonth);
	}
	return iOtherYear + "-" + iOtherMonth + "-" + iOtherDay;
}

function Calendar_ActualizeDynamics(sInputID_Nights, sInputID_CheckOut) {
	
	oDiv = document.getElementById(sInputID_Nights + "_holder_dynamic");
	if(oDiv) oDiv.style.display = "block";
	
	oDiv = document.getElementById(sInputID_Nights + "_holder_static");
	if(oDiv) oDiv.style.display = "none";
	
	oDiv = document.getElementById(sInputID_CheckOut + "_holder_dynamic");
	if(oDiv) oDiv.style.display = "block";
	
	oDiv = document.getElementById(sInputID_CheckOut + "_holder_static");
	if(oDiv) oDiv.style.display = "none";
	
}

function Calendar_DoCheckIn(sMessage) {
	alert(sMessage);
	document.getElementById("check_in_string").focus();
	return false;
}

function Calendar_CloseAll() {
	var a = document.getElementsByTagName("DIV");
	if(a && a.length) for(var i=0; i<=a.length-1; i++) {
		if(a[i] && a[i].id && Calendar_bLoaded[a[i].id]) Calendar_Close(a[i].id);
	}
	return false;
}