
var html_code = '';
// months
var ARR_MONTHS = ["January","February","March","April","May","June","July","August","September","October","November","December"];
// short months
var ARR_SHORTMONTHS = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
// month days
var ARR_MONTHDAYS = [31,28,31,30,31,30,31,31,30,31,30,31];
// week day titles as they appear on the calendar
var ARR_WEEKDAYS = ["S","M","T","W","T","F","S"];
// day week starts from (normally 0-Su or 1-Mo)
var NUM_WEEKSTART = 0;
// departure/return date
var ARR_DEPARR = ["Departure Date","Return Date"];
var ARR_DEPARR1 = ["leave","return"];
var CDDATE = 0;
var CRDATE = 0;

function drawCalendar (calendarId,year,month,init) {

	if (showReturnCalendar || calendarId == 1) {

		var current_day = new Date ();
		var first_day = new Date (year,(month-1),1);

		if (!init && showReturnCalendar) {
			var d_y_el = ((calendarId == 2) ? document.getElementById ('formCalendar1month') : document.getElementById ('formCalendar2month'));
			var d_y = getYearFromVal (d_y_el.value);
			var d_m = getMonthFromVal (d_y_el.value);
			if (calendarId == 1) {
				var dep = (year * 100 + month);
				var arr = (d_y * 100 + d_m);
				if (dep > arr) {
					drawCalendar (2,year,month,0);
				}
			} else if (calendarId == 2) {
				var dep = (d_y * 100 + d_m);
				var arr = (year * 100 + month);
				if (dep > arr) {
					drawCalendar (1,year,month,0);
				}
			}
		}

		html_code = '<table cellspacing="0" cellpadding="0">';
		if (!noText) {
			html_code += '<tr><td colspan="3" class="pad4"><b>'+ARR_DEPARR[(calendarId-1)]+':</b></td></tr>';
		}
		html_code += '<tr><td colspan="3" style="padding-bottom: 4px;"><select id="formCalendar'+calendarId+'month" name="'+ARR_DEPARR1[(calendarId-1)]+'_y" type="text" onchange="drawCalendar ('+calendarId+',getYearFromVal (this.value),getMonthFromVal (this.value),0);">';
		var cy = current_day.getFullYear ();
		var m1 = 0;
		for (var m = (current_day.getMonth () + 1); m <= (12 + current_day.getMonth ()); m++) {
			m1 = (((m%12) != 0) ? (m%12) : 12);
			html_code += '<option id="formCalendar'+calendarId+'month'+cy+'-'+m1+'" value="'+cy+'-'+m1+'"'+((m1 == month) ? ' selected' : '')+'>'+ARR_MONTHS[((m-1)%12)]+' '+cy+'</option>';
			if (m == 12) {
				cy += 1;
			}
		}
		html_code += '</select>&nbsp;';
		html_code += '<select id="formCalendar'+calendarId+'day" name="'+ARR_DEPARR1[(calendarId-1)]+'_d" type="text" onChange="clickDay (this.value,\''+calendarId+'\');">';
		for (var d = ((month == (current_day.getMonth () + 1)) ? current_day.getDate () : 1); d <= getMonthDays (year,month); d++) {
			html_code += '<option id="formCalendar'+calendarId+'day'+d+'" value="'+d+'"'+((d == selectDate[(calendarId-1)] && init) ? ' selected' : '')+'>'+d+'</option>';
		}
		html_code += '</select>';
		html_code += '</td></tr>';
		if (!noCalendars) {
			html_code += '<!--tr>';
			if ((year * 100 + month) > (current_day.getFullYear () * 100 + (current_day.getMonth () + 1))) {
				html_code += '<td align="left"><img src="img/left_arrow.gif" style="cursor: hand; cursor: pointer;" onClick="drawCalendar ('+calendarId+','+((month == 1) ? (year - 1) : year)+','+((month == 1) ? 12 : (month - 1))+',0)"></td>';
			} else {
				html_code += '<td><img src="img/spacer.gif" style="width: 19px; height: 15px;"></td>';
			}
			html_code += '<td align="center"><b>'+ARR_MONTHS[month-1]+'</b></td>';
			var till = (((current_day.getMonth () + 1) == 1) ? (current_day.getFullYear () * 100 + 12) : ((current_day.getFullYear () + 1) * 100 + current_day.getMonth ()));
			if ((year * 100 + month) < till) {
				html_code += '<td align="right"><img src="img/right_arrow.gif" style="cursor: hand; cursor: pointer;" onClick="drawCalendar ('+calendarId+','+((month == 12) ? (year + 1) : year)+','+((month == 12) ? 1 : (month + 1))+',0)"></td>';
			} else {
				html_code += '<td align="right"><img src="img/spacer.gif" style="width: 19px; height: 15px;"></td>';
			}
			html_code += '</tr--><tr><td colspan="3" align="center">';

//			var el = document.getElementById ('formCalendar'+calendarId+'month'+year+'-'+month);
//			el.selected = true;

			html_code += '<table cellpadding="0" cellspacing="0" class="cal"><tr>';

			for (var n = 0; n < 7; n++) {
				html_code += '<td class="weekdays"><b>'+ARR_WEEKDAYS[(NUM_WEEKSTART+n)%7]+'</b></td>';
			}
			html_code += '</tr>';
			for (var n = 0; n < ((7 - NUM_WEEKSTART + first_day.getDay ()) % 7); n++) {
				html_code += '<td class="emptyDate">&nbsp;</td>';
			}
			var corr = n;
			for (var a = 0; a < 6; a++) {
				for (var i = n; i < 7; i++) {
					if (year == current_day.getFullYear () && month == (current_day.getMonth () + 1) && current_day.getDate () > (a * 7 + i + 1 - corr)) {
						html_code += '<td id="formCalendar'+calendarId+(a * 7 + i + 1 - corr)+'" class="pastDate">'+(a * 7 + i + 1 - corr)+'</td>';
					} else if (year == current_day.getFullYear () && month == (current_day.getMonth () + 1) && current_day.getDate () == (a * 7 + i + 1 - corr)) {
						html_code += '<td id="formCalendar'+calendarId+(a * 7 + i + 1 - corr)+'" onmouseover="hiDay (this);" onmouseout="loDay (this);" onclick="clickDay ('+(a * 7 + i + 1 - corr)+','+calendarId+');" class="normalDate"><b>'+(a * 7 + i + 1 - corr)+'</b></td>';
					} else if ((a * 7 + i + 1 - corr) <= getMonthDays (year,month)) {
						html_code += '<td id="formCalendar'+calendarId+(a * 7 + i + 1 - corr)+'" onmouseover="hiDay (this);" onmouseout="loDay (this);" onclick="clickDay ('+(a * 7 + i + 1 - corr)+','+calendarId+');" class="normalDate">'+(a * 7 + i + 1 - corr)+'</td>';
					} else {
						html_code += '<td class="emptyDate">&nbsp;</td>';
					}
				}
				html_code += '</tr><tr>';
				n = 0;
			}
			html_code += '</tr></table></td></tr>';
		}
		html_code += '</table>';

//		document.write (html_code);
//		html_code += '<br />year - '+current_day.getFullYear ()+'<br />month - '+(current_day.getMonth () + 1)+'<br />date - '+current_day.getDate ()+'<br />day - '+first_day.getDay ()+'<br />first day - '+first_day.getDay ()+'<br />last date - '+getMonthDays (year,month);

		var elmntById = document.getElementById ('formCalendar'+calendarId);
		elmntById.innerHTML = html_code;

		var sDate;
		if (calendarId == 1)
			sDate = (!CDDATE) ? selectDate[(calendarId-1)] : CDDATE;
		else if (calendarId == 2)
			sDate = (!CRDATE) ? selectDate[(calendarId-1)] : CRDATE;

		clickDay (sDate,calendarId);

	}

}

function getMonthDays (year,month) {

	if ((month) != 2) {
		return ARR_MONTHDAYS[(month - 1)];
	} else {
		var corr = ((year % 4) == 0 && ((year % 400) == 0 || (year % 100) != 0)) ? 1 : 0;
		return ARR_MONTHDAYS[(month - 1)] + corr;
	}

}

function hiDay (elementId) {

	if (elementId.className != 'sel1Date') {
		elementId.className = 'activeDate';
	}

}

function loDay (elementId) {

	if (elementId.className != 'sel1Date') {
		elementId.className = 'normalDate';
	}

}

function clearPeriod (calType) {

	for (var i = 1; i <= 31; i++) {
		if (document.getElementById ('formCalendar'+calType+i)) {
			var elmntById = document.getElementById ('formCalendar'+calType+i);
			if (elmntById.className != 'pastDate') {
				elmntById.className = 'normalDate';
			}
		}
	}

}

function clickDay (elementId,calType) {

	clearPeriod (calType);
	if (document.getElementById ('formCalendar'+calType+elementId)) {
		var el = document.getElementById ('formCalendar'+calType+elementId);
		if (el.className != 'pastDate') {
			if (calType == 1)
				CDDATE = elementId;
			else if (calType == 2)
				CRDATE = elementId;
			el.className = 'sel1Date';
			var el1 = document.getElementById ('formCalendar'+calType+'day');
			el1.value = elementId;
		}
	}

}

function getYearFromVal (val) {

	var ar = val.split (/-/);
	return parseInt (ar[0]);

}

function getMonthFromVal (val) {

	var ar = val.split (/-/);
	return parseInt (ar[1]);

}
