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

function setDate(theID, selectedDate, daysOut, shortDate)
{
	theDate = new Date();

	if( daysOut == null )
		daysOut = 0;
	
	selectedDate = createDateObjfromString(selectedDate);
	selectedDate.setDate( selectedDate.getDate() + daysOut );

	document.getElementById(theID).value = correctYear(selectedDate.getYear()) + '-' + numberToString(selectedDate.getMonth()+1) + '-' + numberToString(selectedDate.getDate());
	
	writeDaySelect(correctYear(selectedDate.getYear()), selectedDate.getMonth(), theID + 'Day', selectedDate.getDate() );
	
	for(i=0;i<numMonths;i++)
	{
		theMonth = theDate.getMonth();
		theYear = correctYear(theDate.getYear());
		
		if( theMonth == selectedDate.getMonth() && theYear == correctYear(selectedDate.getYear()) )
			selectThis = i;
		
		if(shortDate)
			theLabel = monthNameArray[theMonth].toString().substring(0,3) + " " + theYear.toString().substring(2,4);
		else
			theLabel = monthNameArray[theMonth] + " " + theYear;
		theValue = theYear + "-" + numberToString(theMonth+1);
		
		document.getElementById(theID + 'MonthYear').options[i] = new Option(theLabel, theValue, false, false);
		theDate.setMonth( theMonth+1 );
	}
	document.getElementById(theID + 'MonthYear').options[selectThis].selected = true;
}
function correctYear(theYear)
{
	// this a hack for certain browsers (opera, safari, etc) which return the year
	// from the getYear() function as 103 instead of 2003...
	if( theYear < 2000 )
		theYear = 1900 + theYear;
	return theYear;
}
function days_in_month(year, month)
{
     return 32 - new Date(year, month, 32).getDate();
}
function createDateObjfromString(theString)
{
	theYear		= theString.substring(0,4);
	theMonth	= theString.substring(5,7).valueOf()-1;
	theDay		= theString.substring(8,10);
	
	daysInMonth	= days_in_month( theYear, theMonth );
	if( theDay > daysInMonth )
		theDay = daysInMonth;
	
	if( theString.length >= 10 )
	{
		theDateObj = new Date(
			theYear,
			theMonth,
			theDay
		);
	}
	
	return theDateObj;
}
function numberToString(theNumber)
{
	theNumber = theNumber.toString();
	if( theNumber.length == 1 )
		theNumber = '0' + theNumber;
	return theNumber;
}
function writeDaySelect(year, month, selectID, selectedDay)
{	
	daysInMonth	= days_in_month( year, month );
	for(i=document.getElementById(selectID).length;i>=0;i--)
	{
		document.getElementById(selectID).options[i] = null;
	}
	for(i=0;i<daysInMonth;i++)
	{
		j = i + 1;
		document.getElementById(selectID)[i] = new Option(j,numberToString(j),false,false);
	}
	document.getElementById(selectID).options[selectedDay-1].selected=true;
}
function updateDate(theID)
{
	document.getElementById(theID).value = document.getElementById(theID + 'MonthYear').value + '-' + document.getElementById(theID + 'Day').value;
}
function updateDays(theID)
{
	updateDate(theID);
	dateString = document.getElementById(theID).value;
	dateObj = createDateObjfromString(dateString);
	writeDaySelect(correctYear(dateObj.getYear()), dateObj.getMonth(), theID + 'Day', dateObj.getDate());
}



function timeDropDown(fieldName,existingTime)
{
	if( existingTime == null || existingTime == '00:00:00')
	{
		selectedHour = 8;
		selectedMin	 = 30;
	}else
	{
		selectedHour = existingTime.substring(0,2);
		selectedMin	 = existingTime.substring(3,5);
	}
	timeSuffix = 'AM';
	
	document.writeln("<input type='hidden' id='" + fieldName + "' name='" + fieldName + "' value='" + numberToString(selectedHour) + ":" + numberToString(selectedMin) + ":00' />");
	
	// writes the hour drop down
	document.writeln("<select id='" + fieldName + "Hours' name='" + fieldName + "Hours' onchange=\"document.getElementById('" + fieldName + "').value=document.getElementById('" + fieldName + "Hours').value + ':' + document.getElementById('" + fieldName + "Mins').value + ':00'\">");
	for(i=0;i<24;i++)
	{
		j = i;
		
		if( i == 12)
			timeSuffix = 'PM';
		else if( i == 0)
			j = 12;
		else if( i > 12)
			j = j - 12;
			
		status = '';
		if( i == selectedHour )
			status = ' selected="selected"';
		document.writeln("<option value='" + numberToString(i) + "'" + status + ">" + j + " " + timeSuffix + "</option>");
	}
	document.writeln("</select>");
	
	document.writeln(":");
	
	document.writeln("<select id='" + fieldName + "Mins' name='" + fieldName + "Mins' onchange=\"document.getElementById('" + fieldName + "').value=document.getElementById('" + fieldName + "Hours').value + ':' + document.getElementById('" + fieldName + "Mins').value + ':00'\">");
	for(i=15;i<=60;i+=15)
	{
		status = '';
		if( i == selectedMin || (i == 60 && selectedMin == '00' ) )
			status = ' selected="selected"';
		if( i == 60 )
			j = '00';
		else
			j = i;
		document.writeln("<option value='" + j + "'" + status + ">" + j + "</option>");
	}
	document.writeln("</select>");
}

		
		function createDateObj(theID)
		{
			theDateObj = new Date(
				document.getElementById(theID).value.substring(0,4),
				document.getElementById(theID).value.substring(5,7) - 1,
				document.getElementById(theID).value.substring(8,10)
			);
			return theDateObj;
		}

		function dateDifference(startDateID, endDateID)
		{
			startDateObj	= createDateObj(startDateID);
			endDateObj		= createDateObj(endDateID);
			difference		= new Date();
			if( startDateObj.getTime() >= endDateObj.getTime() )
			{
				return false;
			}else
			{
				difference.setTime(Math.abs( endDateObj.getTime() - startDateObj.getTime() ));
				daysApart = Math.floor(difference.getTime() / (1000 * 60 * 60 * 24)); 
				return daysApart;
			}
		}
		function maintainNumNights(startDateID, endDateID, numNightsID)
		{
			daysApart = dateDifference(startDateID, endDateID);
			if( !daysApart )
				maintainEndDate(startDateID, endDateID, document.getElementById(numNightsID).value);
			else if( parseInt(daysApart) != document.getElementById(numNightsID).value )
				document.getElementById(numNightsID).selectedIndex = parseInt(daysApart) - 1;
		}
		function changeSelected(selectID, newOption)
		{	
			selectedOption = document.getElementById(selectID).selectedIndex;
			document.getElementById(selectID).options[selectedOption].selected = false;
			if( newOption != null )
				document.getElementById(selectID).options[newOption].selected = true;
		}
		function maintainEndDate(startDateID, endDateID, newNumNights)
		{
			theDateObj = createDateObj(startDateID);
			theDateObj.setDate( theDateObj.getDate() + parseInt(newNumNights) );
			
			changeSelected( endDateID + 'Day', theDateObj.getDate() - 1 );
			
			theValue = theDateObj.getYear() + "-" + numberToString( theDateObj.getMonth() + 1 );
			for(i=0;i<numMonths;i++)
			{
				if( document.getElementById(endDateID + 'MonthYear').options[i].value == theValue )
					newOption = i;	 
			}
			alert(theValue);
			changeSelected( endDateID + 'MonthYear', newOption );
			updateDate(endDateID);
			updateDays(endDateID);
		} 
		
// Popup Calendar
		
		function findPosX(obj)
		{
			var curleft = 0;
			if (obj.offsetParent)
			{
				while (obj.offsetParent)
				{
					curleft += obj.offsetLeft;
					obj = obj.offsetParent;	 
				}
			}
			else if (obj.x)
				curleft += obj.x;
			return curleft;
		} 

		
		function findPosY(obj)
		{
			var curtop = 0;
			if (obj.offsetParent)
			{
				while (obj.offsetParent)
				{
					curtop += obj.offsetTop;
					obj = obj.offsetParent;
				}
			}
			else if (obj.y)
				curtop += obj.y;
			return curtop;
		}
		
		function leftString(fullString, subString) {
		   if (fullString.indexOf(subString) == -1) {
		      return "";
		   } else {
		      return (fullString.substring(0, fullString.indexOf(subString)));
		   }
		}

		function PositionCal(frm,idValue)
		{	  
			var obj = document.getElementById(frm);
			var txtbx = document.getElementById(idValue); 
			obj.style.left = findPosX(txtbx)+'px';	 
			obj.style.top = findPosY(txtbx)+20+'px';	
		}
		
		function SrcCal(frm,idValue,chkinId) 
		{	 
			var frame =	document.getElementById(frm); 
			var value =	document.getElementById(idValue); 
		 	var calSrc = '/popup.htm?id='+idValue + '&selectedDate=' + value.value;
			if(idValue.indexOf('checkOut') != -1) { calSrc += '&checkIn=' + document.getElementById(chkinId).value; }
			window.frames['CalFrame'].location.replace( calSrc );
			return false;
		}
		
		function ShowCal(frm, idValue,chkinId) 
		{	 
			PositionCal(frm,idValue);	
			document.getElementById(frm).style.display = 'block';
			SrcCal(frm,idValue,chkinId);  
			document.getElementById(idValue).select();
		}
		
		function SetDateForID(id, date)
		{
			value =	document.getElementById(id);
			if(value)
			{
				value.value	= date;
				document.getElementById('CalFrame').style.display = 'none';
			}
		}
		
		function hideCal() 
		{	
			document.getElementById('CalFrame').style.display = 'none';	 
			frameRef = window.frames['CalFrame'];
			if (frameRef.location.href.indexOf('/templates/arestravel3.0/blank.htm') == -1) frameRef.location.replace('/templates/arestravel3.0/blank.htm');
			//return false;
		}
		
		var ns6=document.getElementById&&!document.all;
		
		function toggleCal(e)
		{
	        cur = ns6 ? e.target : event.srcElement;
			if(cur.id.indexOf('checkIn') == -1 && cur.id.indexOf('checkOut') == -1)
				hideCal();	 
	    }
		
		function makeFrame() {
			ifrm = document.createElement("IFRAME");
			ifrm.id = "CalFrame";
			ifrm.name = "CalFrame";
			ifrm.setAttribute("src", "/templates/arestravel3.0/blank.htm");
			ifrm.setAttribute("scrolling", "no");
			ifrm.setAttribute("frameborder", "0");
			ifrm.style.position = "absolute";
			ifrm.style.borderWidth = 0+"px";
			ifrm.style.width = 130+"px";
			ifrm.style.height = 180+"px";
			ifrm.style.display = "none";
			ifrm.style.zIndex = "100";
		    ifrm.style.backgroundColor = "#fff";
			document.body.insertBefore(ifrm, document.body.lastChild);
			document.onclick = toggleCal; 
		}
													
	    
		
