function build_package_date(form)
{ 
 if (validate(book_package)!=false)
 {
   if (checkdate(book_package.FROM_DATE)!=false)
   {
     if (doDateCheckp(book_package.FROM_DATE)!=false)
     {
       build_package_desc()
       getToDate(form)
       return true;
     } 
     else 
       return false; 
  }
  else 
   return false;     
 }
 else 
  return false;    
}


function build_package_date_hotel(form)
{
  if (validate(book_package_hotel)!=false)
  {
   if (checkdate(book_package_hotel.FROM_DATE)!=false)
   {
     if (doDateCheckp(book_package_hotel.FROM_DATE)!=false)
     {
       build_package_desc_hotel()
       getToDateHotel(form)
       return true;
     } 
     else 
       return false; 
  }
  else 
   return false;     
  }
  else 
  return false;    
}



function build_air_date(air_only)
{
 if (validation(air_only)!=false)
 {
   if (checkdate(this.air_only.FROM_DATE)!=false)  
   {  
     if (checkdate(this.air_only.TO_DATE)!=false)
     { 
       if (doDateCheck(this.air_only.FROM_DATE, this.air_only.TO_DATE) != false)  
       {
         build_air_desc(this.air_only.TO_DATE)
         return true; 
       }     
       else 
        return false; 
     }
     else 
      return false;     
   }
   else 
     return false;    
 }
 else 
  return false; 

} 


function build_air_desc(TO_DATE)
{
  searchItem = document.air_only.ORIGIN.value + ";" + document.air_only.DESTIN.value + ":" //  make JFK;GEO:
  num_descitem=document.air_only.num_descitem.value // get the total number of possible descitems
  j=0
  for ( i=0; i<num_descitem; i++)
  {
    name="document.air_only.descitem_" + (i+1) + ".value" 
    eval("val="+name)
    if (val.indexOf(searchItem,0) != -1)  // found it
    {
      j++
      name="document.air_only.desc_" + j + ".value=\""+val.substring((searchItem.length),(val.length))+"\""
      eval(name)
      document.air_only.num_desc.value=j // set the number of descriptions being sent - over write each time through loop
    }
  }
  
  if(TO_DATE.value=="")
  {
   document.air_only.desc_1.value = "One Way " + document.air_only.desc_1.value
   return true
  }
  else  
  {
   document.air_only.desc_1.value = "Round Trip " + document.air_only.desc_1.value
   return true
  }
  

  document.air_only.action = "https://travelspan-middleware.com/cgi.exe"  
  return true  
}  


function build_package_desc()
{
  searchItem = document.book_package.SPECIFIC_PRODUCT.value + ":" // make SDQMJD;G;SDQMLA;MF:
  num_descitem=document.book_package.num_descitem.value // get the total number of possible descriptions
  j=0
  for ( i=0; i<num_descitem; i++)
  {
    name="document.book_package.descitem_" + (i+1) + ".value"
    eval("val="+name)
    if (val.indexOf(searchItem,0) != -1)  // found it
    {
      j++;
      name="document.book_package.desc_" + j + ".value=\""+val.substring((searchItem.length),(val.length))+"\""
        eval(name)
      document.book_package.num_desc.value=j // set the number of descriptions being sent - over write each time through loop
    }
  }
}


function build_package_desc_hotel()
{
  searchItem = document.book_package_hotel.SPECIFIC_PRODUCT.value + ":" // make SDQMJD;G;SDQMLA;MF:
  num_descitem=document.book_package_hotel.num_descitem.value // get the total number of possible descriptions
  
  j=0
  for ( i=0; i<num_descitem; i++)
  {
    name="document.book_package_hotel.descitem_" + (i+1) + ".value"
    eval("val="+name)
    if (val.indexOf(searchItem,0) != -1)  // found it
    {
      j++;
      name="document.book_package_hotel.desc_" + j + ".value=\""+val.substring((searchItem.length),(val.length))+"\""
        eval(name)
      document.book_package_hotel.num_desc.value=j // set the number of descriptions being sent - over write each time through loop
    }
  }
}



function julianToDate(jul)
{
var A1
var B1
var C1
var D1
var E1
var F1
var W1
var X1
var Z1
var gdate
var day
var month
var year
with (Math)
{
Z1=eval(jul) + 0.5
W1 = floor((Z1 - 1867216.25) / 36524.25)
X1= floor(W1 / 4)
A1=Z1 + 1 + W1 - X1
B1= A1 + 1524
C1=floor((B1 - 122.21) / 365.25)
D1=floor(365.25 * C1)
E1=floor((B1 - D1) / 30.6001)
F1=floor(30.6001 * E1)
day= B1 - D1 - F1
month= E1 - 1
if ((E1 - 1)> 12)
{
month = E1 - 13
}
year = C1 - 4715
if((month != 1) && (month!=2))
{
 year = C1 - 4716
}
}

day = day.toString()
month = month.toString()
if (month < 10)
{
  month= 0 + month
}

year = year.toString()
if (day < 10)
{
 day= 0 + day
}
gdate = month + day + year
return gdate

}

function dateToJulian(gdate)
{
 MM=gdate.charAt(0) + gdate.charAt(1)
 MM=eval(MM)
 DD = gdate.charAt(2) + gdate.charAt(3)
 DD = eval(DD)
 YYYY = gdate.charAt(4) + gdate.charAt(5) + gdate.charAt(6) + gdate.charAt(7)
 YYYY = eval(YYYY)
 HR = 0
 MN = 0
 with (Math)
 {
 HR = HR + (MN / 60);
 GGG = 1;
 if(YYYY <= 1585) GGG = 0;
 JD = -1 * floor(7 * (floor((MM + 9) / 12) + YYYY) / 4);
 S = 1;
 if ((MM - 9) < 0) S = -1;
 A = abs(MM - 9);
 J1 = floor(YYYY + S * floor(A / 7));
 J1 = -1 * floor((floor(J1 / 100) + 1) * 3 / 4);
 JD = JD + floor(275 * MM / 9) + DD + (GGG * J1);
 JD = JD +1721027 + 2 * GGG + 367 * YYYY - 0.5;
 JD = JD + (HR / 24);
}
return JD;
}


function getToDate(form)
{
 var val
 var toDate
 var fromDate
 name = "document." + form + ".FROM_DATE.value"
eval("fromDate=" + name)
name="document." + form + ".duration.value"
eval("dur="+name)
val = dateToJulian(fromDate)
val = eval(val) + eval(dur)
toDate=julianToDate(val)
name="document." + form + ".TO_DATE.value = \""+toDate+"\""
eval(name)
name ="document." + form + ".action=\"https://travelspan-middleware.com/cgi.exe\""
eval(name)
return true
}

function getToDateHotel(form)
{
 var val
 var toDate
 var fromDate
 name = "document." + form + ".FROM_DATE.value"
eval("fromDate=" + name)
name="document." + form + ".duration.value"
eval("dur="+name)
val = dateToJulian(fromDate)
val = eval(val) + eval(dur)
toDate=julianToDate(val)
name="document." + form + ".TO_DATE.value = \""+toDate+"\""
eval(name)
name ="document." + form + ".action=\"https://travelspan-middleware.com/cgi.exe\""
eval(name)
return true
}

function validation(air_only)
{

document.air_only.ORIGIN.value = document.air_only.ORIGIN.value.toUpperCase( )
document.air_only.DESTIN.value = document.air_only.DESTIN.value.toUpperCase( )

if (document.air_only.ORIGIN.value=="") 
 {
  alert("Departure City Cannot Be Blank")
  document.air_only.ORIGIN.focus();
  document.air_only.ORIGIN.select();
  return false;
 }

else if (!(document.air_only.ORIGIN.value=="YYZ" || document.air_only.ORIGIN.value=="JFK" || document.air_only.ORIGIN.value=="SDQ" || document.air_only.ORIGIN.value=="GEO" || document.air_only.ORIGIN.value=="POS" || document.air_only.ORIGIN.value=="PUJ" || document.air_only.ORIGIN.value=="POP" || document.air_only.ORIGIN.value=="TAB" || document.air_only.ORIGIN.value=="STI" || document.air_only.ORIGIN.value=="PAP" || document.air_only.ORIGIN.value=="FLL" || document.air_only.ORIGIN.value=="FLP" || document.air_only.ORIGIN.value=="MIP" || document.air_only.ORIGIN.value=="PBM"))
  {
    alert("Departure City Not Valid")
  document.air_only.ORIGIN.focus();
    document.air_only.ORIGIN.select();
    return false;
  }

else if (document.air_only.DESTIN.value=="") 
 {
  alert("Destination City Cannot Be Blank")
  document.air_only.DESTIN.focus();
  document.air_only.DESTIN.select();
  return false;
 }

else if (!(document.air_only.DESTIN.value=="YYZ" || document.air_only.DESTIN.value=="JFK" || document.air_only.DESTIN.value=="SDQ" || document.air_only.DESTIN.value=="GEO" || document.air_only.DESTIN.value=="POS" || document.air_only.DESTIN.value=="PUJ" || document.air_only.DESTIN.value=="POP" || document.air_only.DESTIN.value=="TAB" || document.air_only.DESTIN.value=="STI" || document.air_only.DESTIN.value=="PAP"|| document.air_only.DESTIN.value=="FLL" || document.air_only.DESTIN.value=="FLP" || document.air_only.DESTIN.value=="MIP" || document.air_only.DESTIN.value=="PBM"))
 {
    alert("Destination City Not Valid")
  document.air_only.DESTIN.focus();
    document.air_only.DESTIN.select();
    return false;
 }

else if (document.air_only.ORIGIN.value==document.air_only.DESTIN.value)
 {
    alert("Destination City Cannot Be The Same As Departure City")
  document.air_only.DESTIN.focus();
    document.air_only.DESTIN.select();
    return false;
 }

 else
  return true;
}

function checkdate(objName) 
{
var datefield = objName;
var error

if (chkdate(objName) == false || error==1) 
{
 datefield.select();
 alert("Invalid Date Format! The Date Format To Be Entered is 'mmddyyyy'");
 datefield.focus();
 return false;
}
else 
 return true;
 
}


function chkdate(objName)
 {
var strDatestyle = "US"; //United States date style
//var strDatestyle = "EU";  //European date style
var strDate;
var strDateArray;
var strDay;
var strMonth;
var strYear;
var intday;
var intMonth;
var intYear;
var booFound = false;
var datefield = objName;
var strSeparatorArray = new Array("-"," ","/",".");
var intElementNr;
var err = 0;
var strMonthArray = new Array(12);
strMonthArray[0] = "Jan";
strMonthArray[1] = "Feb";
strMonthArray[2] = "Mar";
strMonthArray[3] = "Apr";
strMonthArray[4] = "May";
strMonthArray[5] = "Jun";
strMonthArray[6] = "Jul";
strMonthArray[7] = "Aug";
strMonthArray[8] = "Sep";
strMonthArray[9] = "Oct";
strMonthArray[10] = "Nov";
strMonthArray[11] = "Dec";
strDate = datefield.value;

if (strDate.length < 1) {
return true;
}
for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
strDateArray = strDate.split(strSeparatorArray[intElementNr]);
if (strDateArray.length != 3) {
err = 1;
return false;
}
else {
strDay = strDateArray[0];
strMonth = strDateArray[1];
strYear = strDateArray[2];
}
booFound = true;
   }
}
if (booFound == false) 
{
if (strDate.length==8) 
{
strDay = strDate.substr(0, 2);
strMonth = strDate.substr(2, 2);
strYear = strDate.substr(4,4);
}
else return false;

}
if (strYear.length == 2) {
strYear = '20' + strYear;
}
// US style
if (strDatestyle == "US") {
strTemp = strDay;
strDay = strMonth;
strMonth = strTemp;
}
intday = parseInt(strDay, 10);
if (isNaN(intday)) {
err = 2;
return false;
}
intMonth = parseInt(strMonth, 10);
if (isNaN(intMonth)) {
for (i = 0;i<12;i++) {
if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
intMonth = i+1;
strMonth = strMonthArray[i];
i = 12;
   }
}
if (isNaN(intMonth)) {
err = 3;
return false;
   }
}
intYear = parseInt(strYear, 10);
if (isNaN(intYear)) {
err = 4;
return false;
}
if (intMonth>12 || intMonth<1) {
err = 5;
return false;
}
if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
err = 6;
return false;
}
if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
err = 7;
return false;
}
if (intMonth == 2) {
if (intday < 1) {
err = 8;
return false;
}
if (LeapYear(intYear) == true) {
if (intday > 29) {
err = 9;
return false;
}
}
else {
if (intday > 28) {
err = 10;
return false;
}
}
}
if (strDatestyle == "US") 
  return true;
//{
//datefield.value = strMonthArray[intMonth-1] + " " + intday+" " + strYear;
//}
//else {
//datefield.value = intday + " " + strMonthArray[intMonth-1] + " " + strYear;
//}

}
function LeapYear(intYear) {
if (intYear % 100 == 0) {
if (intYear % 400 == 0) { return true; }
}
else {
if ((intYear % 4) == 0) { return true; }
}
return false;
}

function AddDays(strDate,iDays){
 strDate = Date.parse(strDate);
 strDate = parseInt(strDate, 10);
 strDate = strDate + iDays*(24*60*60*1000);
 strDate = new Date(strDate);
 return strDate;
//  alert(strDate);
}




function doDateCheck(FROM_DATE, TO_DATE) 
{
var d = AddDays(Date(),10);

d=d.toString();
var month
var m
var day
var y
m = d.substr(4,3);
if (m=="Jan")
  month="01";
else if (m=="Feb")
  month="02";
else if (m=="Mar")
  month="03";
else if (m=="Apr")
  month="04";
else if (m=="May")
  month="05";
else if (m=="Jun")
  month="06";
else if (m=="Jul")
  month="07";
else if (m=="Aug")
  month="08";
else if (m=="Sep")
  month="09";
else if (m=="Oct")
  month="10";
else if (m=="Nov")
  month="11";
else if (m=="Dec")
  month="12";
if (d.length == 28)
{
day = d.substr(8,2);
y = d.substr(24);
}
else
{   
 day = "0"+d.substr(8,1);
 y = d.substr(23);
}
var dt = month+day+y

var fdate=document.air_only.FROM_DATE.value;
var fdate_ok=fdate.indexOf('/');
var yfdate=fdate.substr(4);

var tdate=document.air_only.TO_DATE.value;
var tdate_ok=tdate.indexOf('/');
var ytdate=tdate.substr(4);

if(document.air_only.TO_DATE.value=="")
{
  if (document.air_only.FROM_DATE.value=="")
  {  
      alert("Departure Date must be entered! Return Date Not Needed If One Way.");
      document.air_only.FROM_DATE.focus();    
      document.air_only.FROM_DATE.select();      
      return false;
  }   
  else if(fdate_ok!=-1)
  { 
    alert("Invalid Date Format! The Date Format To Be Entered is 'mmddyyyy'");
      document.air_only.FROM_DATE.focus();   
    document.air_only.FROM_DATE.select();
    return false; 
  }
  else if(yfdate<y)
  {
     alert("Departure Date Must Be a Present or a Future Date! ");
      document.air_only.FROM_DATE.focus();   
     document.air_only.FROM_DATE.select();
     return false;
  }
  else if(yfdate>y)
  {
    return true;
  }
  else if(yfdate=y && FROM_DATE.value<dt)
  {
   alert("Departure Date Must Be a Present or a Future Date!");
    FROM_DATE.focus();   
   FROM_DATE.select();
   return false;
  }
  else if(document.air_only.FROM_DATE.value<dt)
  {
     alert("Departure Date Must Be a Present or a Future Date! ");
      document.air_only.FROM_DATE.focus();   
     document.air_only.FROM_DATE.select();
     return false;
  }
  else
   return true;
}
else 
{
  if (document.air_only.FROM_DATE.value=="")
  {  
      alert("Departure Date must be entered! Return Date Not Needed If One Way.");
      document.air_only.FROM_DATE.focus();   
      document.air_only.FROM_DATE.select();      
      return false;
  }   
  else if(fdate_ok!=-1)
  { 
    alert("Invalid Date Format! The Date Format To Be Entered is 'mmddyyyy'");
      document.air_only.FROM_DATE.focus();   
    document.air_only.FROM_DATE.select();
    return false; 
  }
  else if(yfdate<y)
  {
     alert("Departure Date Must Be a Present or a Future Date! ");
      document.air_only.FROM_DATE.focus();   
     document.air_only.FROM_DATE.select();
     return false;
  }
  else if(document.air_only.FROM_DATE.value<dt && yfdate<y)
  {
     alert("Departure Date Must Be a Present or a Future Date! ");
      document.air_only.FROM_DATE.focus();   
     document.air_only.FROM_DATE.select();
     return false;
  }
  else if(tdate_ok!=-1)
  { 
    alert("Invalid Date Format! The Date Format To Be Entered is 'mmddyyyy'");
      document.air_only.TO_DATE.focus();   
    document.air_only.TO_DATE.select();
    return false; 
  }
  else if(ytdate<yfdate)
  {
     alert("Return Date Must Be Greater Than The Depature Date!");
      document.air_only.TO_DATE.focus();   
     document.air_only.TO_DATE.select();
     return false;
  }
  else if(ytdate>yfdate)
  {
     return true;
  } 
  else if(ytdate=yfdate && document.air_only.TO_DATE.value<document.air_only.FROM_DATE.value)
  {
     alert("Return Date Must Be Greater Than The Depature Date");
      document.air_only.TO_DATE.focus();   
     document.air_only.TO_DATE.select();
     return false;
  }  
  else
   return true;
}


}


function validate(book_package)
{

if (book_package.island.value=="-1") 
 {
  alert("Please Select a Destination Island");
  return false;
 }
else if (book_package.Pc.value=="") 
 {
  alert("Please Select a Hotel Package");
  return (false);
 }
else if (book_package.duration.value=="")
 {
    alert("Please Select Total Nights");
    return (false);
 }

}

function validate(book_package_hotel)
{

if (book_package_hotel.duration.value=="")
 {
    alert("Please Select Total Nights");
    book_package_hotel.duration.focus();
    return (false);
 }

}


function doDateCheckp(FROM_DATE) 
{
var d = AddDays(Date(),10);

d=d.toString();
var month
var m
var day
var y
m = d.substr(4,3);
if (m=="Jan")
  month="01";
else if (m=="Feb")
  month="02";
else if (m=="Mar")
  month="03";
else if (m=="Apr")
  month="04";
else if (m=="May")
  month="05";
else if (m=="Jun")
  month="06";
else if (m=="Jul")
  month="07";
else if (m=="Aug")
  month="08";
else if (m=="Sep")
  month="09";
else if (m=="Oct")
  month="10";
else if (m=="Nov")
  month="11";
else if (m=="Dec")
  month="12";
if (d.length == 28)
{
day = d.substr(8,2);
y = d.substr(24);
}
else
{   
 day = "0"+d.substr(8,1);
 y = d.substr(23);
}
var dt = month+day+y

var fdate= FROM_DATE.value;
var fdate_ok=fdate.indexOf('/');
var yfdate=fdate.substr(4);


if (FROM_DATE.value=="")
{  
    alert("Departure Date must be entered!");
    FROM_DATE.focus();      
    FROM_DATE.select();      
    return false;
} 
else if(fdate_ok!=-1)
{ 
    alert("Invalid Date Format! The Date Format To Be Entered is 'mmddyyyy'");
    FROM_DATE.focus();      
    FROM_DATE.select();
    return false; 
}
else if(yfdate<y)
{
    alert("Departure Date Must Be a Present or a Future Date! ");
    FROM_DATE.focus();      
    FROM_DATE.select();
    return false;
}
else if(yfdate>y)
{
    return true;
}
else if(yfdate=y && FROM_DATE.value<dt)
{
   alert("Select Date 10 days later than Todays Date!");
    FROM_DATE.focus();      
   FROM_DATE.select();
   return false;
}
else 
  return true;
}




function locChange(val)
{
  if (val==3)
  {
    location="book_package_3_New.htm"
  }

  else if (val==4)
  {
    location="book_package_4_New.htm"
  }
  else if (val==5)
  {
    location="book_package_5_New.htm"
  }
  else if (val==7)
  {
    location="book_package_7_New.htm"
  }
  else if (val==8)
  {
    location="book_package_8_New.htm"
  }
  else if (val==-1)
  {
     location="book_package_New.htm"
  }

}
