//AJAX
var obj;
var tmpElementId;
function ajax(ajaxUrl, elementId){
	tmpElementId = elementId;
	if (window.XMLHttpRequest) {
		// Not IE
		obj = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		try{
			obj = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e){
			try{
				obj = new ActiveXObject("Microsoft.XMLHTTP");						
			}
			catch(e1){
				obj = null;
			}
		}
	}
	
	if(obj!=null){
		//need to keep IE from caching the CT
		obj.onreadystatechange = onResponse;
		obj.open("GET", ajaxUrl,  true);
		//alert(ajaxUrl);
		
		obj.setRequestHeader('If-Modified-Since', 'Wed, 15 Nov 1995 00:00:00 GMT');		
		obj.send(null);
	}
	return false;
}

function onResponse(){
	var elementId = tmpElementId;
	if(obj.readyState == 4){
		if(obj.status == 200){
			//alert('success');
			var retval=obj.responseText;
			//alert(retval);
			document.getElementById(elementId).innerHTML = retval;
		}
		else{
			alert(obj.status);
			//alert(obj.responseText);
		}
	}else if(obj.readyState == 0){
		document.getElementById(elementId).innerHTML = 'Requesting...';
		//alert('Requesting');
	}else if(obj.readyState == 1){
		document.getElementById(elementId).innerHTML = 'Loading...';
		//alert('Loading');
	}else if(obj.readyState == 2){
		document.getElementById(elementId).innerHTML = 'Loaded...';
		//alert('Loaded');
	}else if(obj.readyState == 3){
		document.getElementById(elementId).innerHTML = 'Ready...';
		//alert('Ready');
	}else{
		alert(obj.readyState);
	}
}

// END AJAX


function initResLauncher(){
	// *** must be set per instance ***
	frm = document.resLauncher;
	// ********************************
	
	//
	// Begine creation of Month/Year <select>
	//
	var mnths = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
	
	currDt   = new Date();
	currMnth = currDt.getMonth();
	currYear = currDt.getFullYear();
	currDay  = currDt.getDate();
	
	var mt,yr,dy,mnthYr,len;
	
	// Iterate
	for (var mnthIdx=currMnth;mnthIdx<=currMnth+12;mnthIdx++) {
		yr = currYear;
		mt = mnthIdx;
		if (mt>11) {
			mt -= 12;
			yr += 1;
		}
		len  = frm.arrMnthYr.options.length;
		sel  = (yr==currYear && mt==currMnth) ? true : false;
		tmpDt = new Date(yr,mt,currDay);
		
		// Create <option>
		frm.arrMnthYr.options[len] = new Option(mnths[mt] + " " + yr,tmpDt,sel,sel);
	}
	
	// Call Other Methods
	setDays(currDt);
	setDates();
}

// 
// Build the days of the CURRENT month (in the corresponding year)
// dt is sent as a JavaScript new Date() object
//
function setDays(dt) {
	var days,yr,mt,day,tm,len,sel,tmpDt;
	yr = dt.getFullYear();
	mt = dt.getMonth();
	day = (mt==currMnth && yr==currYear) ? dt.getDate() : 1;

	var tmpMt = mt+1;
	var tmpYr = yr;
	if (tmpMt>11) {
		var tmpMt = mt-11;
		var tmpYr = yr+1;
	}
	tmpDt = new Date(tmpYr,tmpMt);
	tm = tmpDt.getTime();
	tmpDt.setTime(tm-86400000);
	dayCnt = tmpDt.getDate();

	//
	// Begine creation of date <select>
	//
	
	// Remove all <select> data
	frm.arrDay.options.length = 0;
	// Iterate
	for (var i=day;i<=dayCnt;i++) {
		len   = frm.arrDay.options.length;
		tmpDt = new Date(yr,mt,i);
		sel   = (tmpDt == currDt) ? true : false;
		
		// Create <option>
		frm.arrDay.options[len] = new Option(i,tmpDt,sel,sel);
	}
}

function setDates(updateDays) {
	
	// When Changing Months we need to reset the
	// days to allow for for selection of any day
	if (updateDays) setDays(new Date(frm.arrMnthYr.options[frm.arrMnthYr.selectedIndex].value));
	
}

//
// Submit!
//
function launchBE() {
	
	//
	// Retrieve form variables
	//
	
	// Nights
	var nights = frm.nights.options[frm.nights.selectedIndex].value;
	// Month/Year
	var mnthYr   = new Date(frm.arrMnthYr.options[frm.arrMnthYr.selectedIndex].value);
	var thisMnth = mnthYr.getMonth();
	var thisYear = mnthYr.getFullYear();
	// Day
	var dt		= new Date(frm.arrDay.options[frm.arrDay.selectedIndex].value);
	var thisDay = dt.getDate();
	
	//
	// Create Arrival Date & Calculate Departure Date values
	//
	
	// Arrival Date
	arrivalDt = (thisMnth+1)+"/"+thisDay+"/"+thisYear;
	// Calculate
	tmpDt = new Date(thisYear,thisMnth,thisDay);
	tm    = tmpDt.getTime();
	tmpDt.setTime(tm+(86400000*nights));
	//Departure Date
	departureDt = (tmpDt.getMonth()+1)+"/"+tmpDt.getDate()+"/"+tmpDt.getFullYear();
	
	document.resLauncher.checkinDate.value = arrivalDt;
	document.resLauncher.checkoutDate.value = departureDt;
	

	
}