var isIE          = (document.all)?true:false; // is Internet Explorer
var today         = new Date(new Date().valueOf());
var todayDefault  = new Date(new Date().valueOf());
var default_date  = todayDefault.getDate()+"/"+eval(todayDefault.getMonth()+1)+"/"+todayDefault.getYear();
var x,y; // Yilmaz. Required for positioning CAL layer and using in getPositon()

dateBoxPieceBlank = "<td width=\"22\" height=\"18\" align=\"center\" valign=\"middle\" bgcolor=\"#FFFFFF\">&nbsp;</td>";
var dateBoxPiece = "<td width=\"22\" height=\"18\" align=\"center\" valign=\"middle\" onMouseOver=\"this.style.background='#BFE4F9';\" onMouseOut=\"this.style.background='##BGCOLOR##';\" style=\"cursor:pointer; border: 1px solid #E9E9E9;\" onClick=\"setDateBoxes('##DATESET##',##MONTH##,##DAY##,##YEAR##)\" bgcolor=\"##BGCOLOR##\" bordercolor=\"#333333\"><font size=\"1\" color=\"#00388C\">##DAY##</font></td>";
var dateBoxPiece2 = "<td width=\"26\" height=\"18\" align=\"center\" valign=\"middle\"  style=\"border: 1px solid #E9E9E9;text-decoration=none;\" bgcolor=\"##BGCOLOR##\" bordercolor=\"#333333\" ><font size=\"1\" color=\"#C4C4C4\">##DAY##</font></td>";

var baseDateBoxHeader = "<table border=\"0\" style=\"border: 1px solid #E9E9E9; font-family:arial;\ cellpadding=\"2\" cellspacing=\"0\" width=\"160\"><tr><td colspan=\"7\" align=\"center\">\n";
baseDateBoxHeader += "<table  bgcolor=\"#0FA0EE\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"150\"><tr>";
baseDateBoxHeader += "<td style=\"cursor:default; width:18px; border:1px outset; background-color: menu; padding-bottom:1px; text-align:center;\" onClick=\"previousMonth('##DATESET##')\" onMouseOver=\"this.style.background='#BFE4F9';\" onMouseOut=\"this.style.background='#CCCCCC';\" onMouseDown=\"this.style.border='1px inset';\"><b>«</b></td>\n"; baseDateBoxHeader += "<td style=\"background-color:#FFFFFF; color:#006699; font-size:9pt; text-align:center;\" nowrap><b>##MONTHNAME## ##YEAR##</b></td>\n";
baseDateBoxHeader += "<td style=\"cursor:default; width:18px; border:1px outset; background-color: menu; text-align:center; padding-bottom:1px;\" onClick=\"nextMonth('##DATESET##');\" onMouseOver=\"this.style.background='#BFE4F9';\" onMouseOut=\"this.style.background='#CCCCCC';\" onMouseDown=\"this.style.border='1px inset';\"><b>»</b></td>\n"; baseDateBoxHeader += "</tr>\n";
baseDateBoxHeader += "</table></td></tr><tr style=\"color:#FFFFFF; text-align:center; cursor:default;\">\n";
baseDateBoxHeader += "<td bgcolor=\"#406696\" style=\"border: 1px outset; font-size:11px;\">Su</td><td bgcolor=\"#0FA0EE\" style=\"border: 1px outset; font-size:11px;\">Mo</td><td bgcolor=\"#0FA0EE\" style=\"border: 1px outset; font-size:11px;\">Tu</td><td bgcolor=\"#0FA0EE\" style=\"border: 1px outset; font-size:11px;\">We</td><td bgcolor=\"#0FA0EE\" style=\"border: 1px outset; font-size:11px;\">Th</td>\n";
baseDateBoxHeader += "<td bgcolor=\"#0FA0EE\" style=\"border: 1px outset; font-size:11px;\">Fr</td><td bgcolor=\"#406696\" style=\"border: 1px outset; font-size:11px;\">Sa</td></tr>";

var dateBoxFooter = "<tr bgcolor=\"#0FA0EE\">\n"; dateBoxFooter += "<td valign=\"middle\" colspan=\"7\" align=\"center\"><div name=\"close_btn\" style=\"height:14; border:1px solid buttonface; background-color:#0FA0EE; cursor:pointer; color:#FFFFFF; font-size:11px;\" align=\"center\" onClick=\"hideCalendar();\" onmouseover=\"this.style.background='#006699';\" onmouseout=\"this.style.background='#0FA0EE';\">[ <b>Close</b> ]</div></td>\n";
dateBoxFooter  += "</tr>\n</table>\n";
var calBuffer  = "";
var caldays    = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var months     = new Array("January","February","March","April","May","June","july","August"," September","October","November","December");
function y2k(number) {
	return (number < 1000) ? number + 1900 : number;
	}
/*------------------------------------------------*/
function isLeapYear(yr) {
	if (((yr % 4 == 0) && (yr % 100 != 0)) || (yr % 400 == 0)) { return true; }  else { return false; }
	}
/*------------------------------------------------*/
function getPosition(obj) {
	// Yilmaz, Dec. 2005
	// Gets the absolute position of the any object in document
	// and set x and y variables with this values
	// "obj" is ID of the clicked object in the form
	x = obj.offsetLeft;
	y = obj.offsetTop;
	while(obj.offsetParent) {
		// Don't touch if obj is BODY element;
		if(obj==document.getElementsByTagName('body')[0]) { break; } else {
			x   += obj.offsetParent.offsetLeft-2;
			y   += obj.offsetParent.offsetTop+2;
			obj = obj.offsetParent;
		}
	}
}
/*------------------------------------------------*/	
function setPosition(theLayer, fromLeft, fromTop) {
	// Set the calendar position bottom left corner of the caller form element
	theLayer.style.left = fromLeft+'px';
	theLayer.style.top  = fromTop+'px';
	}	
/*------------------------------------------------*/
function getElementPosition(el) {
	var coors = new Array();
	theX = el.offsetLeft;
	theY = el.offsetTop;
	while(el.offsetParent) {
		// Don't touch if obj is BODY element;
		if(el==document.getElementsByTagName('body')[0]) { break; } else {
			theX   += el.offsetParent.offsetLeft;
			theY   += el.offsetParent.offsetTop;
			el = el.offsetParent;
		}
	}
	//left, top;
	coors[0] = theX;
	coors[1] = theY;
	return coors;
}
/*------------------------------------------------*/
function GetDOW2(d,m,y) {
	var dt=new Date(y,m-1,d);  return(dt.getDay())%7;
	}
/*------------------------------------------------*/
var selectBoxFlag = false;
var maxYear       = 0;
var minYear       = 0;
var formName;
var formElement;
var inDateSet = 'in';
/*------------------------------------------------*/
function displayCalendar(hideSelects, formName, formElement, formElement2) {
	this.formName     = formName;
	this.formElement  = formElement;
	this.formElement2 = formElement2;
	selectBoxFlag     = hideSelects;
	
	if(window.document.forms[this.formName][this.formElement].value != "") 
	var tarih = window.document.forms[this.formName][this.formElement].value.replace(/(\s+$)|(^\s+)/g, ''); 
	else var tarih = window.document.forms[this.formName][this.formElement2].value.replace(/(\s+$)|(^\s+)/g, ''); 
	if ((tarih.indexOf("/") == -1) || (tarih.indexOf("/",0) != 2) || (tarih.indexOf("/",3) != 5)) tarih = "";
	else if (isNaN(tarih.charAt(0)) || isNaN(tarih.charAt(1)) || isNaN(tarih.charAt(3)) || isNaN(tarih.charAt(4)) || isNaN(tarih.charAt(6)) || isNaN(tarih.charAt(7)) || isNaN(tarih.charAt(8)) || isNaN(tarih.charAt(9))) tarih = "";
	if (tarih == "") tarih = default_date;
	var Dates  = tarih.split("/");
	var inYear = Dates[2];
	var mon  = parseInt(Dates[1],10); 
	var day  = parseInt(Dates[0],10);
	var year = parseInt(Dates[2],10);
	currentMonth = mon;
	currentYear  = year;
	currentDay   = day;
	currentTS  = todayDefault.getTime();
	futureTS   = eval(currentTS + 1000*60*60*24*365);
	futureDate = new Date(futureTS);
	maxMonth   = futureDate.getMonth()+1;
	maxYear    = futureDate.getFullYear();
	minYear    = todayDefault.getYear();
	drawCalendarBody(inDateSet, mon, day, year, formElement, formElement2);

	// Firefox Fix. Yilmaz, Dec. 2005
	calObj = window.document.getElementById("CAL");
	var theSender = window.document.forms[formName][formElement];
	var formName=window.document.forms[formName].name;
	if(isIE) {
		getPosition(theSender);
		setPosition(calObj, x, y);
		}
	else {
		getPosition(theSender); // now x and y variables has been set
		setPosition(calObj, x, y);		
		hideSelects        = false; // Don't hide form elements in firefox;
		}
	// Now, show the layer "CAL"
	calObj.style.visibility = "visible";
	if(hideSelects)	 {
		hideFormElements(theSender.form, calObj);
	}
}
/*----------------------------------------------------------------------------------*/
function hideCalendar(hideSelects)	{
	window.document.getElementById("CAL").style.visibility = "hidden";
	// OK, calendar layer now secret. Display all form elements again..
	var theForm = window.document.forms[formName];
	if(theForm) {
		for(var ss=0; ss<theForm.elements.length; ss++) {
			if(theForm.elements[ss].type=="select-one") {
				//Show...
				theForm.elements[ss].style.visibility = 'visible';
				}
			}
		}
	}
/*----------------------------------------------------------------------------------*/
function mustBeHide(div_top, div_left, div_bottom, div_right, item_top, item_left, item_bottom, item_right) {
	var a = (div_bottom >= item_top) ? true : false;
	var b = (div_top <= item_bottom) ? true : false;
	var c = (div_right >= item_left) ? true : false;
	var d = (div_left <= item_right) ? true : false;
	return (a && b && c && d) ? true : false;
	// if return true, hide the element otherside the function..
	}
/*----------------------------------------------------------------------------------*/
function hideFormElements(frm, theLayer) {
		// Automatically hides overlapping select menus in form when calendar visible
		divTop    = y;
		divLeft   = x;
		divBottom = divTop + theLayer.offsetHeight;
		divRight  = divLeft + theLayer.offsetWidth;
		/* thes1 and thes2 returned by getElementPosition.
		we must now find element width + left and height + top for thes[2] and thes[3]*/
		for(var pos=0; pos<frm.elements.length; pos++) {
			if(frm.elements[pos].type=="select-one") {
				thes = getElementPosition(frm.elements[pos])
				thes[2] = parseInt(thes[1] + frm.elements[pos].offsetHeight);
				thes[3] = parseInt(thes[0] + frm.elements[pos].offsetWidth);
				if(mustBeHide(divTop, divLeft, divBottom, divRight, thes[1], thes[0], thes[2], thes[3])) {
					frm.elements[pos].style.visibility = 'hidden';
					}
				}
			}
		}

function nextMonth(inDateSet)
{
currentMonth += 1;
if(currentMonth > 12 && currentYear + 1 <= maxYear){currentMonth = 1; currentYear++;}
if(currentMonth > 12){currentMonth = 12;}
if(currentYear == maxYear && currentMonth == maxMonth+1) {}
else if(currentMonth == (todayDefault.getMonth()+1) && currentYear == todayDefault.getYear()){drawCalendarBody(inDateSet,currentMonth,currentDay,currentYear, formElement, formElement2);}
else{
drawCalendarBody(inDateSet,currentMonth,0,currentYear, formElement, formElement2);}}

function previousMonth(inDateSet) {
	if(formElement == "Tarih2" && window.document.forms[formName][formElement2].value != "") {
    	var date_txt = window.document.forms[formName][formElement2].value.replace(/(\s+$)|(^\s+)/g, ''); 
		var date_arr = date_txt.split("/");
		today = new Date(date_arr[2],date_arr[1]-1,date_arr[0]);
		}	
	if(currentYear == maxYear && currentMonth > maxMonth) currentMonth = maxMonth;
	if(currentYear == maxYear-1 && currentMonth < maxMonth) currentMonth = maxMonth;	
	if ((currentMonth - 1) < (today.getMonth()+1	) && currentYear <= today.getYear() && formElement == "Tarih2" ) {
		drawCalendarBody(inDateSet, currentMonth, 0, currentYear, formElement, formElement2);
		}	
	else if ((currentMonth-1)<(todayDefault.getMonth()+1) && currentYear<=todayDefault.getYear() && formElement=="Tarih1") {
		drawCalendarBody(inDateSet, currentMonth, currentDay, currentYear, formElement, formElement2);
		}
	else {	
		currentMonth -= 1;		
		if(currentYear == maxYear && currentMonth > maxMonth) currentMonth = maxMonth;
		if(currentYear == maxYear-1 && currentMonth < maxMonth) currentMonth = maxMonth;		
		if ( currentMonth < 1 && currentYear - 1 >= minYear ) {
			currentMonth = 12;   currentYear -= 1;
			drawCalendarBody(inDateSet, currentMonth, currentDay, currentYear, formElement, formElement2);
			}		
  		if(currentMonth == (today.getMonth()+1) && currentYear == today.getYear()) {
			drawCalendarBody(inDateSet, currentMonth, currentDay, currentYear, formElement, formElement2);
			}		
  		else {
			drawCalendarBody(inDateSet, currentMonth, 0, currentYear, formElement, formElement2);
			}
		}
	}
	
var currentMonth=1; 
var currentYear=y2k(today.getYear());
var currentDay=1;

function drawCalendarBody(inDateSet, mon, day, year, formElement, formElement2)	{
	calObj = window.document.getElementById("CAL");  
	var dowStartPos = GetDOW2(1,mon,year);  
	var finalDay = caldays[(mon-1)]; 
	if(isLeapYear(year) && mon == 2) { finalDay += 1; }  
	re_MonthName = /##MONTHNAME##/g;  
	re_Year = /##YEAR##/g;  
	re_DateSet = /##DATESET##/g;
	dateBoxHeader = baseDateBoxHeader;  
	dateBoxHeader = dateBoxHeader.replace(re_MonthName,months[(mon-1)]);  
	dateBoxHeader = dateBoxHeader.replace(re_Year,""+year);  
	dateBoxHeader = dateBoxHeader.replace(re_DateSet,""+inDateSet);
	calBuffer = generateGrid(inDateSet, dowStartPos, finalDay, mon, day, year, formElement, formElement2);	
	calObj.innerHTML = dateBoxHeader + calBuffer + dateBoxFooter;
	}

function generateGrid(inDateSet, startPos, endPos, m, d, y, formElement, formElement2) {
	var currentDay = 1;
	var gridCount  = 0;
	var doBlanks   = true; 
	var tmpBuffer  = "";
	re_Month       = /##MONTH##/g;
	re_Day         = /##DAY##/g;
	re_Year        = /##YEAR##/g;
	re_BGColor     = /##BGCOLOR##/g;
	re_DateSet     = /##DATESET##/g;
	for(var i=0;i<6;i++) {
		tmpBuffer += "<tr>\n";		
		for(var j=0;j<7;j++) {		
			if(gridCount < startPos || currentDay > endPos) {
				tmpBuffer += dateBoxPieceBlank + "\n";
				}
			else {
				var temp_datebox = (currentDay+"/"+m+"/"+y);
				var datebox = Date.UTC(y,(m-1),currentDay);
				//From Today
				if (formElement=="Tarih1") {
					var datetoday = Date.UTC(todayDefault.getFullYear(),todayDefault.getMonth(),todayDefault.getDate());
					}			
				//From Depart Date
				else if(formElement=="Tarih2") {
					var date_txt = window.document.forms[formName][formElement2].value.replace(/(\s+$)|(^\s+)/g, '');
					var date_arr = date_txt.split("/");
					var datetoday = Date.UTC(date_arr[2],(date_arr[1]-1),date_arr[0]);
					}			
				//From Today
				else if (formElement=="checkinDate") {
					var datetoday = Date.UTC(((todayDefault.getFullYear())),todayDefault.getMonth(),todayDefault.getDate()+3);
					}			
				//From Today
				else {
					var datetoday = Date.UTC(todayDefault.getFullYear(),todayDefault.getMonth(),todayDefault.getDate() + 3);
					}			
				
				//Check Date if it is past or not
				if (datebox >= datetoday) {
					pasrsedDBP = dateBoxPiece;
					}
				//Disable Past Dates
				else {
					pasrsedDBP = dateBoxPiece2;
					}				
				pasrsedDBP = pasrsedDBP.replace(re_Month,""+m);
				pasrsedDBP = pasrsedDBP.replace(re_Day,""+currentDay);
				pasrsedDBP = pasrsedDBP.replace(re_Year,""+y);
				pasrsedDBP = pasrsedDBP.replace(re_DateSet,""+inDateSet);
				
				if(currentDay == d && datebox >= datetoday ) {
					pasrsedDBP = pasrsedDBP.replace(re_BGColor,"#ABD262");
					}
				else {
					pasrsedDBP = pasrsedDBP.replace(re_BGColor,"#FFFFFF");
					}
				tmpBuffer += pasrsedDBP + "\n";
				currentDay++;
				}
			gridCount++;
			}
		tmpBuffer += "</tr>\n";
		} 	
	return tmpBuffer;
	}

function setDateBoxes(whichDateSet,m,d,y)	{
	if(d.toString().length == 1) d = "0"+d;
	if(m.toString().length == 1) m = "0"+m;
	window.document.forms[this.formName][this.formElement].value = d + "/" + m + "/" + y;
	updateDonusTarihi(window.document.forms[this.formName][this.formElement].name);
	hideCalendar();
}

function updateDonusTarihi(formElement)	{	
	if (formElement=="Tarih1") {
	var gidisDate = window.document.formn.Tarih1.value.split("/");
	var donusYear =  parseInt(gidisDate[2],10);
	var donusMon =  parseInt(gidisDate[1],10);
	var donusDay =   parseInt(gidisDate[0],10)+2;
	var dateToParse=donusMon+"/"+donusDay+"/"+donusYear;
	var timeStamp=new Date();
	timeStamp.setTime(Date.parse(dateToParse));
	var tempMonth=(timeStamp.getUTCMonth()+1).toString();
	if(tempMonth.length<2)	{
	tempMonth="0"+(timeStamp.getUTCMonth()+1);	
	}
	var tempDate=(timeStamp.getUTCDate()).toString();
	if(tempDate.length<2)	{
	tempDate="0"+(timeStamp.getUTCDate());	
	}
	
	var set_Tarih2=(tempDate+"/"+tempMonth+"/"+timeStamp.getUTCFullYear());
	window.document.formn.Tarih2.value=set_Tarih2;
	}//end if()	
}//end function

