function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}


function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}


function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') {
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (val<min || max<val) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}



function setAirFieldValues()
{

	document.forms[0].depart1.value = document.forms[0].depart1.defaultValue;
	document.forms[0].arrive1.value = "[Arriving]";
}

function setCarFieldValues()
{
	document.forms[0].depart1.value = "[Pick_Up]";
	document.forms[0].arrive1.value = "[Leave_Blank]";
}

function setHotelFieldValues()
{
	document.forms[0].depart1.value = "[Check_In]";
	document.forms[0].arrive1.value = "[Leave_Blank]";
}

function clearFieldDc1()
{
	document.forms[0]._dc1.value = "";
}

function clearField(control)
{
   if(control.value.charAt(0)=='[')
    control.value = control.value = "";
   else
    control.select();
}

function validate_QQuote()
{
      var passed = "no";
      var availURL;
      if(document.forms[0]._rcl[0].checked)
	{
          var str, str2;
          str = document.forms[0].depart1.value;
          str2 = document.forms[0].arrive1.value;

          // New variables to edit agency lead time - DRC 
          var dmth1 = document.forms[0]._month1.options
                          [document.forms[0]._month1.selectedIndex].value;
          var ddt1  = document.forms[0]._date1.options
                          [document.forms[0]._date1.selectedIndex].value;
          var dhr1  = document.forms[0]._hour1.options
                          [document.forms[0]._hour1.selectedIndex].value;
          var alt   = document.forms[0]._leadtime.value;

          if(str == "[Departing]" || str == "") {
              alert("Please enter 'flight departure city'.");
              document.forms[0].depart1.focus();
          }
          else {
              if(str2 == "[Arriving]" || str2 == "") {
                 alert("Please enter 'flight arrival city'.");
                 document.forms[0].arrive1.focus();
              }
              else {
                  // Check agency lead time - DRC
                  if ( !leadTimeEdit(dmth1, ddt1, dhr1, alt) ) {
                      document.forms[0]._month1.focus(); 
                  }
                  else {
                      availURL="http://www.travelgalileo.com/cgi-bin/gx.cgi/AppLogic+FareShopAppLogic?_relax=1&Type=R"
                      passed = "yes";
                  }
              }
          }
	}
	else if(document.forms[0]._rcl[1].checked)
	{
		var str;
		str = document.forms[0].depart1.value;
		document.forms[0].arrive1.value = "";
		if(str == "[Pick_Up]" || str == "")
		{
			alert("Please enter 'car pick up city'.");
			document.forms[0].depart1.focus();
		}
		else
		{
            availURL="http://www.travelgalileo.com/cgi-bin/gx.cgi/AppLogic+VendorCarAvailability?_relax=1"
			passed = "yes";
		}
	}
	else if(document.forms[0]._rcl[2].checked)
	{
		var str;
		str = document.forms[0].depart1.value;
		document.forms[0].arrive1.value = "";
		if(str == "[Check_In]" || str == "")
		{
			alert("Please enter 'hotel check in city'.");
			document.forms[0].depart1.focus();
		}
		else
		{
            availURL="http://www.travelgalileo.com/cgi-bin/gx.cgi/AppLogic+VendorHotelAvailability?_relax=1"
			passed = "yes";
		}
	}
	else
	{
		passed = "yes";
	}

	if(passed == "yes")
	{
        var formElements = document.forms[0].elements;
        for(i = 0; i < formElements.length; i++)
        {
            e = formElements[i];

            if(e.name != null && e.name != "")
            {  
               if(e.type.length > 6 && e.type.substring(0, 7) == "select-")
                   availURL += "&" + e.name + "=" + e.options[e.selectedIndex].value;
               else
                   availURL += "&" + e.name + "=" + escape(e.value);
            }
        }
        window.location = availURL;
	}
}


function leadTimeEdit(m1, d1, t1, lt) {

  // Targe date (current date + lead time)
  var targetDate  = new Date();           // Start with current date
  var oneHour     = 1000 * 60 * 60;       // One hour in milliseconds
  var dateInMs    = 0;                    // Current date in milliseconds

  // Current date
  var currMth    = new String();
  var currDay    = new String();
  var currYr     = new String();
  var currMthDay = new String();

  // Departure date information
  var departMth    = new String();
  var departDay    = new String();
  var departYr     = new String();
  var departMthDay = new String();
  var departDate   = new Date();


  // Validate the input parameters
  if (   m1 == null
      || d1 == null
      || t1 == null
      || lt == null
      || m1 == ""
      || d1 == ""
      || t1 == ""
      || lt == "" ) {
       return displayLTMsg("0");     // Could not validate lead time
  }
  
  // Get the current date
  currMth = (targetDate.getMonth() + 1).toString();  // Month values = 0-11
  currDay = targetDate.getDate().toString();
  currYr  = targetDate.getFullYear().toString();
 
  // zero fill any month values from 1 - 9
  switch (currMth) {  
      case("1") : currMth = "01";
                  break;
      case("2") : currMth = "02";
                  break;
      case("3") : currMth = "03";
                  break;
      case("4") : currMth = "04";
                  break;
      case("5") : currMth = "05";
                  break;
      case("6") : currMth = "06";
                  break;
      case("7") : currMth = "07";
                  break;
      case("8") : currMth = "08";
                  break;
      case("9") : currMth = "09";
                  break;
  }
 
  // zero fill any day values from 1 - 9
  switch (currDay) {  
      case("1") : currDay = "01";
                  break;
      case("2") : currDay = "02";
                  break;
      case("3") : currDay = "03";
                  break;
      case("4") : currDay = "04";
                  break;
      case("5") : currDay = "05";
                  break;
      case("6") : currDay = "06";
                  break;
      case("7") : currDay = "07";
                  break;
      case("8") : currDay = "08";
                  break;
      case("9") : currDay = "09";
                  break;
  }
 
  // Create the lead time date 
  dateInMs = targetDate.getTime();  // Change current date to milliseconds
  dateInMs = dateInMs +             // Add in the lead time in milliseconds
                 ( oneHour * parseInt(lt) ); 
  targetDate.setTime(dateInMs);     // Set the new target date (lead time)
  targetDate.setSeconds(0);         // Set the target seconds to zero
  targetDate.setMilliseconds(0);    // Set the target milliseconds to zero

  // Set the departure month using the passed parameter
  departMth = m1.toString();

  // zero fill any month values from 1 - 9
  switch (departMth) {  
      case("1") : departMth = "01";
                  break;
      case("2") : departMth = "02";
                  break;
      case("3") : departMth = "03";
                  break;
      case("4") : departMth = "04";
                  break;
      case("5") : departMth = "05";
                  break;
      case("6") : departMth = "06";
                  break;
      case("7") : departMth = "07";
                  break;
      case("8") : departMth = "08";
                  break;
      case("9") : departMth = "09";
                  break;
  }

  // Set the departure day using the passed parameter
  departDay = d1.toString();

  // zero fill any day values from 1 - 9
  switch (departDay) {  
      case("1") : departDay = "01";
                  break;
      case("2") : departDay = "02";
                  break;
      case("3") : departDay = "03";
                  break;
      case("4") : departDay = "04";
                  break;
      case("5") : departDay = "05";
                  break;
      case("6") : departDay = "06";
                  break;
      case("7") : departDay = "07";
                  break;
      case("8") : departDay = "08";
                  break;
      case("9") : departDay = "09";
                  break;
  }
 
  // Determine the departure year
  departMthDay = departMth + departDay;
  currMthDay   = currMth + currDay;

  if ( departMthDay < currMthDay ) {
      departYr = ( parseInt(currYr) + 1 ).toString(); // Departing next year
  }
  else {
      departYr = currYr;                              // Departing this year
  }

  // Set the departure date to a Date Object
  departDate.setYear( parseInt(departYr) );
  departDate.setMonth( parseInt(m1) - 1);             // Month values = 0-11
  departDate.setDate( parseInt(d1) );
  departDate.setHours( parseInt(t1) );               
  departDate.setMinutes(0);
  departDate.setSeconds(0);
  departDate.setMilliseconds(0);

  // Check the lead time. Convert both dates to milliseconds first.
  if ( departDate.getTime() < targetDate.getTime() ) {
      return displayLTMsg(lt);
  }
  
  return true;              // Everything is OK.

// End of leadTimeEdit function
}


function displayLTMsg(lt1) {

  var hours = new String("hours");

  if ( parseInt(lt1) < 2 ) {
       hours = "hour";
  }
  
  return confirm(
      "This agency has determined that reservations must be placed " +
      lt1 + " " + hours + " in advance of your scheduled departure time. " +
      "This itinerary does not meet that requirement. To continue your " + 
      "search press \"OK\". To enter a new departure date press \"Cancel\". " );

// End of displayLTMsg function
}


<!-- generic location list logic. -->

<!-- Hide script from old browsers
function getLocationList(control)
{
   var city = control.value;
   if ( (city=="") || (city.indexOf("[")>=0) )
   {
      window.status="Enter City or Airport";
      alert("In order to retrieve a list of locations, you must enter either a city, airport name or code.  We will then try to find a airport or city that matches or is similar to the name entered.");
      return;
   }

   href="http://www.travelgalileo.com/cgi-bin/gx.cgi/AppLogic+LocationList?vendor=Galileo&textName=" + control.name +"&type=" + control.form.name+ "&city=" + escape(city);

   var w = open (href, "LocationList", "width=500,height=250,resizable,status");
   if (w.opener==null)
      w.opener=self;
   if (newBrowser=="true")
      w.focus();
   return;
}



function makeArray(n){this.length = n;return this;}

month	= new makeArray(12);
smonth	= new makeArray(12);
mday	= new makeArray(12);




 month[1]="January";
 month[2]="February";
 month[3]="March";
 month[4]="April";
 month[5]="May";
 month[6]="June";
 month[7]="July";
 month[8]="August";
 month[9]="September";
 month[10]="October";
 month[11]="November";
 month[12]="December";


 smonth[1]="Jan";
 smonth[2]="Feb";
 smonth[3]="Mar";
 smonth[4]="Apr";
 smonth[5]="May";
 smonth[6]="Jun";
 smonth[7]="Jul";
 smonth[8]="Aug";
 smonth[9]="Sep";
 smonth[10]="Oct";
 smonth[11]="Nov";
 smonth[12]="Dec";


mday[1]=31; 
mday[2]=28;
mday[3]=31;
mday[4]=30;
mday[5]=31;
mday[6]=30;
mday[7]=31;
mday[8]=31;
mday[9]=30;
mday[10]=31;
mday[11]=30;
mday[12]=31;


msPerDay  =  1000*60*60*24+900000;


browserName = navigator.appName;
browserVer = parseFloat(navigator.appVersion);
if ((browserName == "Netscape" && browserVer >= 3)|| browserVer>=4) 
   newBrowser="true";
else newBrowser = "false";

dispMonth=null;
calendarWin=null;


function noError(){return true;}
window.onerror=noError;

function validateDaysetnextday (mCtrl, dCtrl,warn)
{
   
 var selday,selmonth,dCtrl2,mCtrl2,temp,selday2,selmonth2;
 var dayControl,monthControl,today;
 eval("dayControl=document.forms[0]." + dCtrl );
 eval("monthControl=document.forms[0]." + mCtrl );
 selday=dayControl.selectedIndex+1;
 selmonth=monthControl.selectedIndex+1;
 dCtrl2=dCtrl.substring(0, dCtrl.length - 1)+(parseInt(dCtrl.charAt(dCtrl.length - 1))+1);
 mCtrl2=mCtrl.substring(0, mCtrl.length - 1)+(parseInt(mCtrl.charAt(mCtrl.length - 1))+1);
 if(eval("dayControl2=document.forms[0]." + dCtrl2))
 {   
 eval("monthControl2=document.forms[0]." + mCtrl2);
 selday2=dayControl2.selectedIndex+1;
 selmonth2=monthControl2.selectedIndex+1;
 today=new Date();
 relmonth=selmonth-today.getMonth();
 if(relmonth<=0)
   relmonth+=12;
 relmonth2=selmonth2-today.getMonth();
 if(relmonth2<=0)
   relmonth2+=12;
 if(relmonth==relmonth2&&selday>selday2)
   {selmonth2=selmonth;
    if(mday[selmonth]>selday)
      selday2=selday+1;
      else
      {selday2=1;
      selmonth2=selmonth+1;
      if(selmonth2>12)
         selmonth2=1;
      }
   dayControl2.options[selday2-1].selected=true;
   monthControl2.options[selmonth2-1].selected=true; 
   validateDay (mCtrl2, dCtrl2,warn);}  
 if(relmonth>relmonth2)
   {selmonth2=selmonth;
    if(mday[selmonth]>selday)
      selday2=selday+1;
      else
      {selday2=1;
      selmonth2=selmonth+1;
      if(selmonth2>12)
         selmonth2=1;
      }
   dayControl2.options[selday2-1].selected=true; 
   monthControl2.options[selmonth2-1].selected=true; 
   validateDay (mCtrl2, dCtrl2,warn);}
}
validateDay (mCtrl, dCtrl,warn);

}   


function validateDay (mCtrl, dCtrl,warn)
{
   
 var selday,selmonth;
 var dayControl,monthControl;
 eval("dayControl=document.forms[0]." + dCtrl );
 eval("monthControl=document.forms[0]." + mCtrl );
 selday=dayControl.selectedIndex+1;
 selmonth=monthControl.selectedIndex+1;
 
 if (mday[selmonth]<selday)
 {
  if (selmonth==2) 
  {
   today=new Date()
   var year=today.getYear();
   var thisMonth=today.getMonth()+1;
   if (year<100)
	year+=2000;
   if (thisMonth>selmonth)
	year++;
   if (isLeapYear(year)==true)
   { 
	mday[2]=29;
	if (selday==29)
		return;
   }
  }
	dayControl.options[mday[selmonth]-1].selected=true;
	if (warn==true)
		alert(month[selmonth]+" only has "+mday[selmonth]+" days");   
 }	
}

function isLeapYear(year)
{
	if (year % 4 != 0) { return false; }
	if (year % 400 == 0) { return true;}
	return (year % 100 != 0);
}



function closeCalendar()
{
 if (calendarWin!=null)
 {
	cw=calendarWin;
	calendarWin=null;
	cw.close();
 }
}
 onUnload=closeCalendar;

function openCalendar (mCtrl, dCtrl,pmCtrl,f,i)
{

 if (newBrowser=="false")
  {
   alert("This feature requires Internet Explorer 4.0, Netscape 3.1 or later versions");
   return;
  }
 today			 = new Date();
 currentMonth	 = today.getMonth();
 prevCtrlMonth=currentMonth;
 dispMonth=currentMonth;
 formIndex	= f;
 monthCtrl = mCtrl;
 dateCtrl  = dCtrl;
 eval("dispMonth=document.forms[" + formIndex + "]." + monthCtrl + ".selectedIndex");
 if (dispMonth<currentMonth)
	dispMonth+=12;

 if (pmCtrl!='') // make sure return month is after depart month
 {
 eval("prevCtrlMonth=document.forms[" + formIndex + "]." + pmCtrl + ".selectedIndex");
 if (prevCtrlMonth<currentMonth)
	prevCtrlMonth+=12;
 if (prevCtrlMonth>dispMonth)
	dispMonth=prevCtrlMonth;
 }

 firstOfMonth  = new Date(today.getYear(),dispMonth,1);
 calendarWin = this.open("","calendarWin","location=false,toolbar=false,status=false,menubar=false,resizable=true,width=240,height=320,top=50,left=150");
 // Fix the blasted NS Y2K bug.
 if (browserName == "Netscape" && browserVer >= 4.5) 
 {
   newDate = "true";
 }
 else
 {
   newDate = "false";
 }	 

 drawCalendar(0,calendarWin);
}


function selectDate(dayNum,cWin) {

if (dispMonth==null) {cWin.close();return}
var m=monthNum-1;
eval("document.forms[" + formIndex + "]." + monthCtrl + ".selectedIndex=" + m);
var d=dayNum-1;
eval("document.forms[" + formIndex + "]." + dateCtrl  + ".selectedIndex=" + d);
validateDaysetnextday(monthCtrl,dateCtrl,false)
closeCalendar();
}


function w(htext)
{
buffer+=htext;
//calendarWin.document.write(htext);
}


function drawCalendar (upDown,cWin)
{

if (dispMonth==null) {cWin.close();return}

 newMonth=dispMonth;
 newMonth+=upDown;
 if ((newMonth < currentMonth) || (newMonth-currentMonth >= 12))
  return;
 dispMonth = newMonth;

 buffer=new String();

 if (newDate == "true")
 {
	firstOfMonth = new Date(today.getFullYear(),dispMonth,1);
 }
 else
 {
   firstOfMonth = new Date(today.getYear(),dispMonth,1);
 }

 cWin.document.open();
 if (cWin.opener==null)
	cWin.opener=self;
 calendarWin=cWin;
 buffer="<html>\r\n<head>\r\n<script language=JavaScript>\r\n <!--\r\n function noError(){window.close(); return true}\r\n function unload(){opener.calendarWin=null}\r\n window.onerror=noError;\r\n \/\/-->\r\n <\/script>\r\n <title>Calendar<\/title><\/head>\r\n <body bgcolor=#FFFFFF onUnload=unload() >\r\n";
 w('<form><center>');
 monthNum = firstOfMonth.getMonth() + 1;
 pM=monthNum-1; if (pM<1)  pM+=12;
 nM=monthNum+1; if (nM>12) nM-=12;
 // NS 4.6 and above can't use getYear()
 if (newDate == "true")
 {
   yr = firstOfMonth.getFullYear();
 }
 else
 {
	yr = firstOfMonth.getYear();
	if (yr <1999)
	{
	  yr += 1900;
	}
 }




 w("\r\n<table cellspacing=0 cellpadding=0 border=0 width=200>\r\n");
 w("<tr><td align=center valign=middle><font face=verdana size=4 color=#268AD6><b>\r\n");
 w(month[monthNum] + " " + yr +"\r\n</b></font></td></tr>\r\n");
 w("</table>\r\n");   
		
 w("\r\n<table border=0 cellpadding=4 cellspacing=0 bgcolor=#FFFFFF width=200>\r\n");
 
 w("<tr><td align=center><table border=0 cellpadding=0 cellspacing=0 bgcolor=#FFFFFF>\r\n");

 w("<tr><td colspan=7 align=center valign=top height=35>\r\n");

 if (newMonth != currentMonth)
	w("<input type='button' value=\"<< "+smonth[pM]+ "\" onclick=opener.drawCalendar(-1,window)>&nbsp;&nbsp;");
 if (newMonth-currentMonth != 11)
	w("<input type='button'  name="+smonth[nM]+" value=\""+smonth[nM]+ " >>\" onclick=opener.drawCalendar(1,window)>");

 w("</td></tr></table><table border=1 cellpadding=0 cellspacing=0 bordercolor=#268AD6>\r\n");
 
 w("<tr bgcolor=#268AD6 height=23>\r\n");
 w("<th><font face=verdana size=1><b>S</b></font></th>\r\n");
 w("<th><font face=verdana size=1><b>M</b></font></th>\r\n");
 w("<th><font face=verdana size=1><b>T</b></font></th>\r\n");
 w("<th><font face=verdana size=1><b>W</b></font></th>\r\n");
 w("<th><font face=verdana size=1><b>T</b></font></th>\r\n");
 w("<th><font face=verdana size=1><b>F</b></font></th>\r\n");
 w("<th><font face=verdana size=1><b>S</b></font></th></tr>\r\n");

 activeMonth = firstOfMonth.getMonth();

 firstCell = firstOfMonth.getTime() - (msPerDay*firstOfMonth.getDay());
 firstOfMonth.setTime(firstCell);

 for (row=0; row<6; row++)
 {
  w("\r\n<tr bgcolor=#DDEEFF height=25>");
  for (col=0; col<7; col++)
  {
   date = firstOfMonth.getDate();
   w("<td align=center>");

   if (firstOfMonth.getMonth() != activeMonth)
	w("&nbsp;");
   else
   {
	 w("<input type=button name="+date+ " value=");
	 if ( date < 10 )
		w("0");
	 w(date + " onClick=opener.selectDate(" + date + ",window)>");
   }
   nextDay = firstOfMonth.getTime() + msPerDay;
   firstOfMonth.setTime(nextDay);
   w("</td>");
  }
  w("</tr>");
 }
 w("\r\n</table><br></td></tr></table></form>\r\n</body></html>");

 calendarWin.document.write(buffer);
 calendarWin.document.close();

 calendarWin.focus();

}


function msieversion()
{
   var ua = window.navigator.userAgent
   var msie = ua.indexOf ( "MSIE " )

   if ( msie > 0 )      // If Internet Explorer, return version number
      return parseInt (ua.substring (msie+5, ua.indexOf (".", msie )))
   else                 // If another browser, return 0
      return 0
}

function  openNewWindow(url,ignore) 
{
	var settings;
	var width = 0;
	var height = 0;
	var MyNewWindow = null;

	// ----------------- for NN4 and IE4 -----------------------------------
	// Testing this first prevents firing the slow Java of NN4
	if (self.screen) 
	{
		width = screen.width
		height = screen.height
	}
	// ----------------- for NN3 with enabled Java -------------------------
	else if (self.java) 
	{   
		var jkit = java.awt.Toolkit.getDefaultToolkit();
	    var scrsize = jkit.getScreenSize();       
	    width = scrsize.width; 
	    height = scrsize.height; 
	}

	// 640 x 480 resolution
	if(width == 640)
	{
		theWidth = 575;
		theHeight= 280;
	}
	// 800 x 600 resolution
	else if(width == 800)
	{
		theWidth = 675;
		theHeight= 400;
	}
	// 1024 x 768 resolution
	else if(width == 1024)
	{
		theWidth = 800;
		theHeight= 568;
	}
	// 1152 x 864 resolution
	else if(width == 1152)
	{
		theWidth = 800;
		theHeight= 664;
	}
	// 1280 x 1024 resolution
	else if(width == 1280)
	{
		theWidth = 800;
		theHeight= 824;
	}
	// 1600 x 1200 resolution
	else if(width == 1600)
	{
		theWidth = 800;
		theHeight= 1000;
	}
	else
	// 640 x 480 resolution
	{
		theWidth = 575;
		theHeight= 280;
	}
	settings=
   		"toolbar=yes,"+
		"location=no,"+
		"directories=no,"+
   		"status=yes,"+
		"menubar=yes,"+
		"scrollbars=yes,"+
   		"resizable=yes,"+
		"left=25,"+
		"top=25,"+
		"width="+theWidth+","+
		"height="+theHeight;
     MyNewWindow=window.open("http://" + url, "NewWindow",settings);
	if (msieversion() != 4 || msieversion == 0)
	{
		if(MyNewWindow != null)
	  	{
			MyNewWindow.focus();	    
	  	}
   	}
}

