/********************************************************************************
*								 globester.js                                  	*
*********************************************************************************
* Author: Avrinder                                           		     		*
* Copyright 2005 www.globester.com                                         		*
*                    			                                          		*
* Created: Feb 15, 2005 by Avrinder & Devi										*
* Last updated: Feb 24, 2005 by Avrinder S.M.						         	*
* www.anmsoft.com																*
********************************************************************************/
																				
//-------------------------------------------------------------------------------
// Step 1:
//-------------------------------------------------------------------------------
// Create ARRAYS of the 3 search types.
// Define the date elements separately.
//
// creating ROUND-TRIP Array
rtElementArray = new Array("froCity", "toCity", "depTime", "retTime", "adult", "child", "infant", "srchAirline", "simpleclass") ;
rtDateElementArray = new Array("depDateRT", "retDateRT") ;

// creating ONE-WAY Array
owElementArray = new Array("froCityOW", "toCityOW", "depTimeOW", "adultOW", "childOW", "infantOW", "srchAirlineOW", "simpleclassOW") ;
owDateElementArray = new Array("depDateOW") ;

// creating MULTI-CITY Array
mcElementArray = new Array("froCity1", "toCity1", "froCity2", "toCity2", "froCity3", "toCity3", "SD1", "SD2", "adultMC", "childMC", "infantMC", "srchAirlineMC", "simpleclassMC") ;
mcDateElementArray = new Array("depDate1", "depDate2", "depDate3") ;
//-------------------------------------------------------------------------------
// Step 2:
//-------------------------------------------------------------------------------
// *onLoad* function

function visible()
{
	// get DIVs (containing the FORMS) by their ID
	// and assign them to 3 diff variables
	RT = document.getElementById("searchRT");
	OW = document.getElementById("searchOW");
	MC = document.getElementById("searchMC");
	Div1 = document.getElementById("Stop1");
	Div2 = document.getElementById("Stop2");
	
	// Now, find which radio button is *checked*. Then get 
	// its value & assign it to the variable *formName*.
	var formName;
	for(i=0;i<document.globesterForm.searchType.length;i++)
		{
			if(document.globesterForm.searchType[i].checked == true)
			formName = document.globesterForm.searchType[i].value;
		}
	//alert("*****"+formName+"*****");
	
	// Depending on which radio button was *checked*
	// set the visibility of related DIV to *visible*
	// and *hide* the remaining two.
	if (formName == 'RT'){
		RT.style.visibility = 'visible';
		OW.style.visibility = 'hidden';
		MC.style.visibility = 'hidden';
		document.globesterForm.froCity.focus();
	}
	if (formName == 'OW'){
		OW.style.visibility = 'visible';
		RT.style.visibility = 'hidden';
		MC.style.visibility = 'hidden';
		document.globesterForm.froCityOW.focus();
	}
	if (formName == 'MC'){
		MC.style.visibility = 'visible';
		OW.style.visibility = 'hidden';
		RT.style.visibility = 'hidden';
	}
}
// END of *onLoad* function
//-------------------------------------------------------------------------------
// Step 3:
//-------------------------------------------------------------------------------
// Write a function which will reset the elements of a given array ( which we've 
// defined above). Call this function and replace *elemArray* with one of the 
// arrayname. Also, replace *val* with the value u want it to get reset to.

	function resetElements(elemArray, val) // u provide the name & value when u call this function
	{
		if(elemArray.length > 0)
		{
			for(i=0; i<elemArray.length; i++)
			{
				elem = eval("document.globesterForm." + elemArray[i]);
				// if the element is an input field
				if(elem.type == "text")
				{
					elem.value = val;
					elem.style.backgroundColor = '#FFFFFF';
					elem.readOnly = false;
				}
				// if element is a select field
				// NOTE: for multi-select type of field add one more *else if* &
				// change *select-one* to *select-multi*
				else if(elem.type == "select-one")
				{
					elem.selectedIndex = 0;
				}
				// alert("elem.type =" + elem.type);
					
			}
				
		}

	}

//-------------------------------------------------------------------------------	
// Step 4:
//-------------------------------------------------------------------------------
// Functions executed when a particular radio button is clicked

// for Round Trip:
// show RT form when RT button is clicked + *reset* other 2 forms
function showRT()
{
	RT.style.visibility = 'visible';
	document.globesterForm.froCity.focus();
	OW.style.visibility = 'hidden';
	MC.style.visibility = 'hidden';
	// reset OW elements
	resetElements(owElementArray, "");
	resetElements(owDateElementArray, "");
	// reset MC elements
	resetElements(mcElementArray, "Enter city name");
	resetElements(mcDateElementArray, "mm/dd/yyyy");
	Div1.style.visibility = 'hidden';
	Div2.style.visibility = 'hidden';
}
// for One Way:
// show OW form when OW rbutton is clicked + *reset* other 2 forms
function showOW()
{
	OW.style.visibility = 'visible';
	document.globesterForm.froCityOW.focus();
	RT.style.visibility = 'hidden';
	MC.style.visibility = 'hidden';
	// reset RT elements
	resetElements(rtElementArray, "");
	resetElements(rtDateElementArray, "");
	// reset MC elements
	resetElements(mcElementArray, "Enter city name");
	resetElements(mcDateElementArray, "mm/dd/yyyy");
	Div1.style.visibility = 'hidden';
	Div2.style.visibility = 'hidden'; 
}
// for Multicity:
// show MC form when MC rbutton is clicked + *reset* other 2 forms
function showMC()
{
	MC.style.visibility = 'visible';
	OW.style.visibility = 'hidden';
	RT.style.visibility = 'hidden';
	Div1.style.visibility = 'visible';
	Div2.style.visibility = 'visible';
	// reset OW elements
	resetElements(owElementArray, "");
	resetElements(owDateElementArray, "mm/dd/yyyy");
	// reset RT elements
	resetElements(rtElementArray, "");
	resetElements(rtDateElementArray, "mm/dd/yyyy");
}

/**************************** END ************************************/

// Added by Avrinder: Mar 24 2005
// for MC form, where if the user selects "YES" from the select option
// for *stopovers?*, the departure city (froCity) gets disabled, as well 
// as inherits the value of the preceding destination city (toCity).

	
function resetIt() {
	FC1 = document.globesterForm.froCity1;
	FC2 = document.globesterForm.froCity2;
	FC3 = document.globesterForm.froCity3;
	
	TC1 = document.globesterForm.toCity1;
	TC2 = document.globesterForm.toCity2;
	TC3 = document.globesterForm.toCity3;
	
	s1 = document.globesterForm.SD1;
	s2 = document.globesterForm.SD2;

	d1 = document.getElementById("Stop1");
	d2 = document.getElementById("Stop2");

	//alert("clicked");

	// for 1st stopover select menu		
	if (s1.selectedIndex == 1) // if stopover = 'Yes'
		{ 		
			if (TC1.value == '') // but the city name was not entered before selecting 'Yes'
				{
					s1.selectedIndex = 0; // dude u gotta reset stopover to 'No'
					TC1.focus(); // u gotta point out where they have to enter the city name, dontcha?
					TC1.style.backgroundColor = "yellow"; // some yellow color too, for the dumb-asses
					alert("Please enter the stopover city name  before \n you select the stopover option!!");
				}			
			else //if the city name was entered ...
				{
				FC2.value = TC1.value; 
				FC2.style.backgroundColor = "#CCCCCC"; // set bgcolor as gray
				FC2.style.color = "#666666"; // set font color as dark gray
				FC2.readOnly = true; // make froCity2 readonly
				TC1.style.backgroundColor = "#CCCCCC"; // set bgcolor as gray
				TC1.style.color = "#666666"; // set font color as dark gray
				TC1.readOnly = true; // make toCity1 readonly
				s2.selectedIndex = 0; // set the 2nd stopover to 'No' before you...
				d2.style.visibility = 'hidden'; // ... hide it!
				}		
	}
	else { // if stopover = 'No'
		TC1.readOnly = false; // make toCity1 editable
		TC1.style.backgroundColor = "#FFFFFF"; // reset bgcolor to white
		TC1.style.color = "black"; // reset font color to black
		FC2.readOnly = false; // make froCity2 editable
		FC2.style.backgroundColor = "#FFFFFF"; // reset bgcolor to white
		FC2.style.color = "black"; // reset font color to black
		d2.style.visibility = 'visible'; // unhide the 2nd stopover select menu

	}
	// for 2nd stopover select menu	
	if (s2.selectedIndex == 1) // if stopover = 'Yes'
		{
			if (TC2.value == '') // but the city name was not entered before selecting 'Yes'
			{
				s2.selectedIndex = 0;
				TC2.focus();
				TC2.style.backgroundColor = "yellow";				
				alert("Please enter the stopover city name  before \n you select the stopover option!!");
			}
			else //if the city name was entered ...
			{
			FC3.value = TC2.value;
			FC3.style.backgroundColor = "#CCCCCC";
			FC3.style.color = "#666666";
			FC3.readOnly = true; 
			TC2.style.backgroundColor = "#CCCCCC";
			TC2.style.color = "#666666";
			TC2.readOnly = true;			
			s1.selectedIndex = 0;
			}
	}
	else { // if stopover = 'No'
		FC3.readOnly = false;
		FC3.style.backgroundColor = "#FFFFFF";
		FC3.style.color = "black";
		TC2.readOnly = false;
		TC2.style.backgroundColor = "#FFFFFF";
		TC2.style.color = "black";		
	}
}
/*
function checkThis(){

	FC1 = document.globesterForm.froCity1;
	FC2 = document.globesterForm.froCity2;
	FC3 = document.globesterForm.froCity3;
	
	TC1 = document.globesterForm.toCity1;
	TC2 = document.globesterForm.toCity2;
	TC3 = document.globesterForm.toCity3;
	
	s1 = document.globesterForm.SD1;
	s2 = document.globesterForm.SD2;

	d1 = document.getElementById("Stop1");
	d2 = document.getElementById("Stop2");

	if (s1.selectedIndex == 0 && s2.selectedIndex == 1 && FC2.value == TC1.value)
	{
		FC2.value = '';
		alert("Same city not allowed");
	}
}
*/

var submitcount=0;

function submitOnce() {
	if (submitcount == 0)
      {
      submitcount++;
      return true;
      }
   else 
      {
      alert("This search has already been submitted.  Thanks!");
      return false;
      }
}



// END - MC function for selecting stopover (Y or N)


//Antonio:15th Jan'07Globester Form Validation

function globesterSubmitAction()
{

RT = document.getElementById("searchRT");
OW = document.getElementById("searchOW");

var formName;
	
	for(i=0;i<document.globesterForm.searchType.length;i++)
		{
			if(document.globesterForm.searchType[i].checked == true)
			formName = document.globesterForm.searchType[i].value;
		}
	//alert("*****"+formName+"*****");

var errmsg="";

if (formName == 'RT'){

   if((document.globesterForm.elements['froCity'].value=="") )
	
{
//alert("Round Trip From City is Required");
		errmsg=errmsg+"Please enter From City\n";
}

   if((document.globesterForm.elements['toCity'].value==""))
{
//alert("Round Trip To City is Required");
		errmsg=errmsg+"Please enter To City\n";
}

   if((document.globesterForm.elements['depDateRT'].value==""  ))
{
//alert("Round Trip Dept Date is Required" + document.globesterForm.elements['depDateRT'].value);
		errmsg=errmsg+"Please enter the Departure Date\n";
}

  if((document.globesterForm.elements['retDateRT'].value==""))
{
//alert("Round Trip Return Date is Required");
		errmsg=errmsg+"Please enter the Return Date\n";
 }

  if(!isDate(document.globesterForm.elements['depDateRT'].value))

{
       errmsg=errmsg+"Departure Date format should be : mm/dd/yyyy!\n";
}

  if(!isDate(document.globesterForm.elements['retDateRT'].value))

{
       errmsg=errmsg+"Return Date format should be : mm/dd/yyyy!\n";

}


}


if (formName == 'OW'){

   if((document.globesterForm.elements['froCityOW'].value=="") )
	
{
//alert("One Way From City is Required");
		errmsg=errmsg+"Please enter From City\n";
}

   if((document.globesterForm.elements['toCityOW'].value==""))
{
//alert("One Way To City is Required");
		errmsg=errmsg+"Please enter To City\n";
}

   if(document.globesterForm.elements['depDateOW'].value==""  )  
	 
{
//alert("One Way Dept Date is Required");
		errmsg=errmsg+"Please enter the Departure Date\n";
}

  if(!isDate(document.globesterForm.elements['depDateOW'].value))

{
       errmsg=errmsg+"Departure Date format should be : mm/dd/yyyy!\n";
}

 }

	 if(errmsg){
			alert(errmsg);
			return false;      

		}else{

			document.globesterForm.action = "/globester/pages/globester.do";
			document.globesterForm.submit();
    		return true;      
		}

}


function changeCase(x){
         x.value = x.value.toUpperCase();
        }


//Antonio:On 7th Feb'07 for Date Validation on Index Page

var dtCh= "/";
var minYear=2007;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		//alert("The date format should be : mm/dd/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		//alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		//alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		//alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		//alert("Please enter a valid date")
		return false
	}
return true
}