	/*
 	 creator: 	chip Kreis
	 date:		3/19/2006
	 purpose:	functions which call an asp page via http, returning information For the calling page
	 change log: 9/21/06 Debra McClarran - Return information For the calendar popup to replace calSBT.asp
	 change log: 8/29/07 Debra McClarran - revised logic For UI Dev Smart Calendar V 1.0
	*/

	// set global variables
	var g_restool_url = g_ADDRESS + "includes/calendar.asp";
		
	function padAge(age){
		if (age.length < 2 && age != 0){
			age = '0' + age;
		}
		return age;
	}

	function findSeperator(inDate){
		var i;
		var retVal = "";

		// Loop through each Char in String
		for (i = 0; i < inDate.length; i++){
			// If the current index value is not a number, then it is the seperator
			if (isNaN(inDate.substr(i,1))){
				retVal = inDate.substr(i,1);
			}
		}
		return retVal;
	}


    // this is using a function defined in scripts/CommonResTool.js
	function filldate(m,d,y,caltype)
	{
		datestr = padAge(m) + "/" + padAge(d) + "/" + y;	
		if (caltype == "Depart"){
			document.getElementById('gsDepartureDate').value = datestr;
			CommonResTool.toggleCalendar('changingDepart', 'visibility_off', 'Depart', '', '', CommonResTool.currentResTool);
		}else if (caltype == "Return"){
			document.getElementById('gsReturnDate').value = datestr;
			CommonResTool.toggleCalendar('changingReturn', 'visibility_off', 'Return', '', '', CommonResTool.currentResTool);
		}		
	}
	
	function setDepartDate(dttoday)
	{		
		if (document.getElementById('gsDepartureDate').value == dttoday){
			document.getElementById('gsDepartureDate').value = padAge((d.getMonth() + 1).toString()) + "/" + padAge(d.getDate().toString()) + "/" +  d.getFullYear().toString().substr(2,2);
		}else if (document.getElementById('gsDepartureDate').value.length == 0){ 
			document.getElementById('gsDepartureDate').value = padAge((d.getMonth() + 1).toString()) + "/" + padAge(d.getDate().toString()) + "/" +  d.getFullYear().toString().substr(2,2);
		}		
	}
		
	function newCalendarClass (id, newClass, calType){
		var elemToChange = document.getElementById(id);
		elemToChange.className = newClass;		
	}
	
	function getDateValue(inDate, inPart){
		
		var d = new Date();
		
		if (inDate == "mm/dd/yy")
			inDate = padAge((d.getMonth() + 1).toString()) + "/" + padAge(d.getDate().toString()) + "/" +  d.getFullYear().toString().substr(2,2);
	
		var sSeparator = findSeperator(inDate);
		var arrayDate = inDate.split(sSeparator);
		
		if (inPart == "YEAR")
			return parseInt(arrayDate[2],10);
		if (inPart == "MONTH")
			return parseInt(arrayDate[0],10);
		if (inPart == "DAY")
			return parseInt(arrayDate[1],10);
	}
	
	function changeCalendarClass (id, newClass, calType, departDates, departDays, packageType, maxDateAir, maxDateLand)
	{
		var elemToChange = document.getElementById(id);
		var dtdepart = document.getElementById('gsDepartureDate').value;
		var currentMonth = getDateValue(dtdepart, "MONTH").toString()
		var currentYear = getDateValue(dtdepart, "YEAR").toString()		
				
		elemToChange.className = newClass;
		navigateCalendar(calType,currentMonth,currentYear,departDates,departDays,packageType,maxDateAir,maxDateLand);
	}

	function createXmlHttpRequest()
	{
		var p_xmlHttp;
	
		if ( window.ActiveXObject ){
			p_xmlHttp = new ActiveXObject( "Microsoft.XMLHTTP" );
		}else if ( window.XMLHttpRequest ){
			p_xmlHttp = new XMLHttpRequest();
		}
		return p_xmlHttp;
	}
	
	// gets destinations and their corresponding types in xml format
	function navigateCalendar(calType, startMonth, startYear, departDates, departDays, packageType, maxDateAir, maxDateLand)
	{
	    //DEBUG
	    //THIS WORKS - alert("navigateCalendar called");
	
		var thisVals = "CalType=" + calType + "&startMonth=" + startMonth + "&startYear=" + startYear + "&departDates=" + departDates + "&departDays=" + departDays + "&address=" + g_ADDRESS + "&packageType=" + packageType + "&maxDateAir=" + maxDateAir + "&maxDateLand=" + maxDateLand;
		doXmlHttpPost( thisVals, calType);
	}	
	
	function doXmlHttpPost( vals, calType )
	{
	    //DEBUG
	    //THIS WORKS - alert("doXmlHttpPost called");
	
		var thisPostURL = g_restool_url;
		var thisXmlHttpObject = new createXmlHttpRequest();
		
		if ( thisPostURL == "" ){
			thisPostURL = g_restool_url;
		}
	
		thisXmlHttpObject.open( "POST", thisPostURL, true );
		thisXmlHttpObject.onreadystatechange = function()
		{			
			handleXmlHttpPostStateChange( thisXmlHttpObject, calType );
		}
		
		thisXmlHttpObject.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded;" );
		thisXmlHttpObject.send( vals );
	}
	
	function handleXmlHttpPostStateChange( theXmlHttpObject, calendarType )	
	{
		if ( theXmlHttpObject.readyState == 4 )
		{
			if ( theXmlHttpObject.status == 200 )
			{
			    //DEBUG
			    //alert("status OK");
			
				if ( theXmlHttpObject.responseText != "" )
				{	
				    //DEBUG
				    //alert(theXmlHttpObject.responseText);
								
					if ( calendarType == "Depart" )
					{
						// populate div with returned html For depart calendar
						document.getElementById("departCalendar").innerHTML = theXmlHttpObject.responseText;	 
					}
					else if ( calendarType == "Return" )
					{	
						// populate div with returned html For Return calendar
						document.getElementById("returnCalendar").innerHTML = theXmlHttpObject.responseText;
					}					
				}		
			} 
			//DEBUG - returning 500 error (internal server error)
			else {
			    alert("status NOT OK: " + theXmlHttpObject.status);
			}
		}
	}