function showDaysInAMonth(_intMonth, _intYear) {
	var intDays = 0;

	if (_intMonth == 3 || _intMonth == 5 || _intMonth == 8 || _intMonth == 10) {
		// April, June, September and November
		intDays = 30;
	} else {
		if (_intMonth == 1) {
			if (_intYear/4 - parseInt(_intYear/4) != 0) {
				// Febrary but not leap year
				intDays = 28;
			} else {
				// Leap year
				intDays = 29;
			}
		} else {
			intDays = 31;
		}
	}

	return intDays;
}

function showCalendar(_strAllowTodayOrder, _strId, _intMonth, _intYear, _intSelectedDay) {
	var strCalendar = "";
	var dtNow = new Date();
	var strAllowTodayOrder = "";
	var arrMonths = new Array(
						"Jan",
						"Feb",
						"Mar",
						"Apr",
						"May",
						"Jun",
						"Jul",
						"Aug",
						"Sep",
						"Oct",
						"Nov",
						"Dec");

	var arrFullMonths = new Array(
						"January",
						"February",
						"March",
						"April",
						"May",
						"June",
						"July",
						"August",
						"September",
						"October",
						"November",
						"December");

	var arrDays = new Array(
						"S",
						"M",
						"T",
						"W",
						"T",
						"F",
						"S");

	// Check selection
	if(!_strAllowTodayOrder)
	{
		strAllowTodayOrder = "false";
	}
	else
	{
		strAllowTodayOrder = _strAllowTodayOrder;
	}
	if (!_intSelectedDay) {
		if (getObject("frmSelDay" + _strId).value != "") {
			// Fetch form field values
			intSelectedMonth = getObject("frmSelMonth" + _strId).value;
			intSelectedYear = getObject("frmSelYear" + _strId).value;

			// Make sure the month and year are the same as for selected day
			if (intSelectedMonth == _intMonth && intSelectedYear == _intYear) {
				_intSelectedDay = getObject("frmSelDay" + _strId).value;
			}
		}
	}

	// No month or year specified, use the default
	if (!_intMonth && !_intYear) {
		// Get current month and year
		_intMonth = dtNow.getMonth();
		_intYear = dtNow.getYear();

		// Cross-browser workaround
		if (_intYear < 1000){
			_intYear = _intYear + 1900;
		}

		// Start month is current+1 and end is current+1
		_intMonth = getNextMonth(_intMonth, _intYear);
		if (_intMonth == 0)  {
		_intYear = getNextMonthYear(11, _intYear);
		} else {
			//_intYear = getNextMonthYear(_intMonth, _intYear);
		}
		//_intYear = getNextMonthYear((_intMonth-1), _intYear);
	}

	strCalendar += "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
	strCalendar += "<tr>\n";
	strCalendar += "<td colspan=7 align=center><a href=\"javascript:showCalendar('" + strAllowTodayOrder + "','" + _strId + "', " + getPreviousMonth(_intMonth, _intYear) + ", " + getPreviousMonthYear(_intMonth, _intYear) + ")\"><img src=\"images/calendar/misc/cal_bck.gif\" width=14 height=12 border=\"0\"></a><img src=\"images/calendar/month/cal_mnt_" + (_intMonth+1) + ".gif\" width=35 height=12><img src=\"images/calendar/year/cal_yr_" + _intYear + ".gif\" width=35 height=12><a href=\"javascript:showCalendar('" + strAllowTodayOrder + "','" + _strId + "', " + getNextMonth(_intMonth, _intYear) + ", " + getNextMonthYear(_intMonth, _intYear) + ")\"><img src=\"images/calendar/misc/cal_fwd.gif\" width=14 height=12 border=\"0\"></a></td>\n";
	strCalendar += "</tr><tr>\n";

	// Show weekdays
	for (i=0;i<7;i++) {
		strCalendar += "<td align=center><b><img src=\"images/calendar/misc/cal_" + i + ".gif\" width=14 height=12></b></td>\n";
	}

	strCalendar += "</tr>\n";

	// Show days
	var dtCurrent = new Date("1 " + arrFullMonths[_intMonth] + ", " + _intYear);
	var day1 = dtCurrent.getDay();
	
	

	var intCurrentDay = 1;
	var intNextMonth = 1;
	for (i=0;i<6;i++) {
		if (intNextMonth == 1) {
			if (i==0) {
				var intPreviousMonth = getPreviousMonth(_intMonth, _intYear);
				var intPreviousMonthYear = getPreviousMonthYear(_intMonth, _intYear);

				for (ii=0;ii<day1;ii++) {
					strCalendar += "<td align=center></td>";
				}

				for (ii=day1;ii<7;ii++) {
					var strSelected = "a";

					var intStatus = isAvailible(_intYear + "-" + fmtMonthDay(_intMonth+1) + "-" + fmtMonthDay(intCurrentDay));



					if (intStatus == 1) {
						strSelected = "e";
					} else if (intStatus == 2) {
						strSelected = "d";
					}

					if (intCurrentDay == _intSelectedDay) {
						strSelected = "b";
					}

					var dtThis = new Date(intCurrentDay + " " + arrFullMonths[_intMonth] + ", " + _intYear);
					
					var currentTime = new Date();
					//Subtract one day if current day bookings are allowed
					if(strAllowTodayOrder == "true")
					{
						currentTime.setTime(currentTime.getTime()-86400000);
					}
					if (currentTime.getTime() > dtThis.getTime()) {
						strSelected = "e";
					}


					strCalendar += "<td align=center" + strSelected + ">";
					
					if (strSelected != "e") {
						strCalendar += "<a href=\"javascript:selectDay('" + strAllowTodayOrder + "','" + _strId + "', " + intCurrentDay + ", " + _intMonth + ", " + _intYear + ");\">";
					}
					
					strCalendar += "<img src=\"images/calendar/dates/cal_date_" + intCurrentDay + "_" + strSelected + ".gif\" border=0 width=14 height=12>";
					
					if (strSelected != "e") {
						strCalendar += "</a>";
					}
					
					strCalendar += "</td>";
					intCurrentDay++;
				}
			} else {
				strCalendar += "</tr><tr>";

				for (ii=0;ii<7;ii++) {  
					if (intCurrentDay<=showDaysInAMonth(_intMonth, _intYear)) {
						var strSelected = "a";
						
						var intStatus = isAvailible(_intYear + "-" + fmtMonthDay(_intMonth+1) + "-" + fmtMonthDay(intCurrentDay));
						if (intStatus == 1) {
							strSelected = "e";
						} else if (intStatus == 2) {
							strSelected = "d";
						}
					
						if (intCurrentDay == _intSelectedDay) {
							strSelected = "b";
						}
						
						var dtThis = new Date(intCurrentDay + " " + arrFullMonths[_intMonth] + ", " + _intYear);
						var currentTime = new Date();
						//Subtract one day if current day bookings are allowed,
						if(strAllowTodayOrder == "true")
						{
							currentTime.setTime(currentTime.getTime()-86400000);
						}
						if (currentTime.getTime() > dtThis.getTime()) {
							strSelected = "e";
						}

						strCalendar += "<td align=center>";
						
						if (strSelected != "e") {
							strCalendar += "<a href=\"javascript:selectDay('" + strAllowTodayOrder + "','" + _strId + "', " + intCurrentDay + ", " + _intMonth + ", " + _intYear + ");\">";
						}
						
						strCalendar += "<img src=\"images/calendar/dates/cal_date_" + intCurrentDay + "_" + strSelected + ".gif\" border=0 width=14 height=12>";
						
						if (strSelected != "e") {
							strCalendar += "</a>";
						}
						
						strCalendar += "</td>";
						intCurrentDay++;
					} else {
						strCalendar += "<td align=center></td>";
						intNextMonth++;
					}
				}
			}
		}
	}

	strCalendar += "</tr></table>\n";

	getObject(_strId).innerHTML = strCalendar;

	// If both cala and calb have selected dates, calculate total
	if (getObject("frmSelDaycala").value != "" && getObject("frmSelDaycalb").value != "") {
		calculateRental();
	}
}

function getPreviousMonth(_intMonth, _intYear) {
	if (_intMonth == 0) {
		return 11;
	} else {
		return (_intMonth - 1);
	}
}

function getPreviousMonthYear(_intMonth, _intYear) {
	if (_intMonth == 0) {
		return _intYear-1;
	} else {
		return _intYear;
	}
}

function getNextMonth(_intMonth, _intYear) {
	if (_intMonth == 11) {
		return 0;
	} else {
		return (_intMonth + 1);
	}
}

function getNextMonthYear(_intMonth, _intYear) {
	if (_intMonth == 11) {
		return _intYear+1;
	} else {
		return _intYear;
	}
}

function selectDay(_strAllowTodayOrder,_strId, _intDay, _intMonth, _intYear) {
	// Change selection
	getObject("frmSelDay" + _strId).value = _intDay;
	getObject("frmSelMonth" + _strId).value = _intMonth;
	getObject("frmSelYear" + _strId).value = _intYear;

	// Refresh the calendar
	showCalendar(_strAllowTodayOrder, _strId, _intMonth, _intYear, _intDay);
}

function showTime(_strId, _blnUpDown) {
	strTime = "";
	var obj = getObject("frm" + _strId).value;

	// Reformat the string, get 2 integers from hh:mm
	var strHour = obj.substr(0,2);
	var strMinute = obj.substr(3,2);

	if (strHour.substr(0,1) == "0") {
		strHour = strHour.substr(1);
	}

	var intHour = parseInt(strHour);


	if (strMinute.substr(0,1) == "0") {
		strMinute = strMinute.substr(1);
	}

	var intMinute = parseInt(strMinute);

	// Increase or decrease
	if (_blnUpDown) {
		if (intMinute == 30) {
			intHour++;
			if (intHour == 24) {
				intHour = 00;
			}

			intMinute = 0;
		} else {
			intMinute = 30;
		}
	} else {

		if (intMinute == 0) {

			intHour--;
			if (intHour == -1) {
				intHour = 23;
			}

			intMinute = 30;
		} else if (intMinute == 30) {
			intMinute = 0;
		}
	}

	// Fix to display the string correctly
	if (intHour < 10) {
		strHour = "0" + intHour;
	} else {
		strHour = intHour;
	}

	if (intMinute == 0) {
		strMinute = "00";
	} else {
		strMinute = intMinute;
	}

	getObject("frm" + _strId).value = strHour + ":" + strMinute;
	getObject(_strId).innerHTML = strHour + ":" + strMinute;
	
	calculateRental();
}


function addDays(myDate, days) {
    return new Date(myDate.getTime() + days*24*60*60*1000);
}

function fmtMonthDay(_input) {
	_input = _input.toString();

	if (_input.length == 1) {
		return "0" + _input;
	} else {
		return _input;
	}
}

function updatePudo() {
	var timea = getObject("frmTimea").value.replace(":","");
	
	if (timea.substr(0,1) == "0") {
		timea = timea.substr(1,3);
	}
	
	timea = parseInt(timea);
	
	var timeb = getObject("frmTimeb").value.replace(":","");
	
	if (timeb.substr(0,1) == "0") {
		timeb = timeb.substr(1,3);
	}
	
	timeb = parseInt(timeb);
	
	var night_fee = parseInt(getObject("l0x223").innerHTML);
	var night_to = parseInt(getObject("l0x221").innerHTML);
	var night_from = parseInt(getObject("l0x222").innerHTML);
	
	var eurosign = "\u20AC";
	
	if (navigator.userAgent.indexOf("Safari") != -1) {
		eurosign = "EUR";
	}
	
	if (timea < night_to || timea > night_from) {
		getObject("frmDeliverya")[1].text = getObject("l0x217").innerHTML + " (" + eurosign + " " + (parseInt(getObject("apudo").innerHTML) + night_fee) + ")";
		getObject("frmDeliverya")[2].text = getObject("l0x218").innerHTML + " (" + eurosign + " " + (parseInt(getObject("hpudo").innerHTML) + night_fee) + ")";
		getObject("frmDeliverya")[3].text = getObject("l0x219").innerHTML + " (" + eurosign + " " + night_fee + ")";
		getObject("frmDeliverya")[4].text = getObject("l0x220").innerHTML + " (" + eurosign + " " + (parseInt(getObject("hpudo").innerHTML) + night_fee) + ")";
	} else {
		getObject("frmDeliverya")[1].text = getObject("l0x217").innerHTML + " (" + eurosign + " " + getObject("apudo").innerHTML + ")";
		getObject("frmDeliverya")[2].text = getObject("l0x218").innerHTML + " (" + eurosign + " " + getObject("hpudo").innerHTML + ")";
		getObject("frmDeliverya")[3].text = getObject("l0x219").innerHTML + " (" + eurosign + " " + 0 + ")";
		getObject("frmDeliverya")[4].text = getObject("l0x220").innerHTML + " (" + eurosign + " " + getObject("hpudo").innerHTML + ")";	
	}

	if (timeb < night_to || timeb > night_from) {
		getObject("frmDeliveryb")[1].text = getObject("l0x217").innerHTML + " (" + eurosign + " " + (parseInt(getObject("apudo").innerHTML) + night_fee) + ")";
		getObject("frmDeliveryb")[2].text = getObject("l0x218").innerHTML + " (" + eurosign + " " + (parseInt(getObject("hpudo").innerHTML) + night_fee) + ")";
		getObject("frmDeliveryb")[3].text = getObject("l0x219").innerHTML + " (" + eurosign + " " + night_fee + ")";
		getObject("frmDeliveryb")[4].text = getObject("l0x220").innerHTML + " (" + eurosign + " " + (parseInt(getObject("hpudo").innerHTML) + night_fee) + ")";
	} else {
		getObject("frmDeliveryb")[1].text = getObject("l0x217").innerHTML + " (" + eurosign + " " + getObject("apudo").innerHTML + ")";
		getObject("frmDeliveryb")[2].text = getObject("l0x218").innerHTML + " (" + eurosign + " " + getObject("hpudo").innerHTML + ")";
		getObject("frmDeliveryb")[3].text = getObject("l0x219").innerHTML + " (" + eurosign + " " + 0 + ")";
		getObject("frmDeliveryb")[4].text = getObject("l0x220").innerHTML + " (" + eurosign + " " + getObject("hpudo").innerHTML + ")";	
	}

	calculateRental();
}

