﻿
var iIndex = 1;
var images = new Array();

var g_tripType;

function PreloadCycleImages() 
{  
  if (document.images)
  {
    for (var i = 1; i <= 7; i++)
    {      
      images[i] = new Image();
      images[i].src = 'images/searching_' + i + '.jpg';            
    };
  };
};

function doPost()
{
  if (validate())
  {    
    StartShowWait();
    document.frmGui.submit();
  }; 
};

function ShowWait()
{  
  var imageNew = new Image();
  var imageOld = new Image();
 
  if (document.images)
  {   
    if (iIndex >= images.length)
    {
      iIndex = 1;
    };    
        
    imageNew = document.getElementById('cycle');        
    imageOld = images[iIndex];
    if (imageNew)
    {
      if (imageOld)
      {
        imageNew.src = imageOld.src;
        iIndex++;
      };      
    };
  };  
};

function StartShowWait()
{   
  document.getElementById('gui').style.display = 'none';  
  document.getElementById('mydiv').style.display = 'block';        
  window.setInterval('ShowWait()',500);    

};

function HideWait()
{    
  if (document.getElementById('mydiv')){
      document.getElementById('mydiv').style.display = 'none';
      window.clearInterval();
  };  
};

function saveDates()
{
  var departOn1;
  var departOn2;
  var returnOn;
  
  departOn1 = document.frmGui.txtDepartOn1.value + '/' + document.getElementById('departOnYear1').innerHTML;    
  createCookie('departOn1',departOn1,0,20); 
  
  if (document.frmGui.txtDepartOn2)
  {
    departOn2 = document.frmGui.txtDepartOn2.value + '/' + document.getElementById('departOnYear2').innerHTML;      
    createCookie('departOn2',departOn2,0,20); 
  };
  
  returnOn = document.frmGui.txtReturnOn.value + '/' + document.getElementById('returnOnYear').innerHTML;    
  createCookie('returnOn',returnOn,0,20); 
        							
};

function getDates(europe)
{  
  var cookieValue1 = readCookie('departOn1');           
  var cookieValue2 = readCookie('departOn2');   
  var cookieValue3 = readCookie('returnOn');   
  
  if (cookieValue1 != null)
  {
    if (cookieValue1.indexOf('NaN') != -1) return false;
  }
  else
  {
    return false;
  };
  
  if (cookieValue2 != null)
  {
    if (cookieValue2.indexOf('NaN') != -1) return false;
  }
  else
  {
    return false;
  };
  
  if (cookieValue3 != null)
  {
    if (cookieValue3.indexOf('NaN') != -1) return false;
  }
  else
  {
    return false;
  }
             
  FormatDate(document.frmGui.txtDepartOn1,document.getElementById('departOnYear1'),document.getElementById('departOnDay1'),cookieValue1,0,europe);		  				          
  if (europe) cookieValue1 = swapDM(cookieValue1);   
  m_MasterDate = new Date(cookieValue1);
    
  if (document.frmGui.txtDepartOn2)
  {                   
    FormatDate(document.frmGui.txtDepartOn2,document.getElementById('departOnYear2'),document.getElementById('departOnDay2'),cookieValue2,0,europe);    
  };
           
  FormatDate(document.frmGui.txtReturnOn,document.getElementById('returnOnYear'),document.getElementById('returnOnDay'),cookieValue3,0,europe);       	    
};

function swapDM(val)
{
  var iDay = val.substring(0,val.indexOf('/'));    
  var iMonth = val.slice(val.indexOf('/') + 1,val.lastIndexOf('/'));
  var iYear = val.substring(val.lastIndexOf('/') + 1);

  return iMonth + '/' + iDay + '/' + iYear;
};

function saveDepDes()
{
  var dep1;
  var des1;
  var dep2;
  var des2;
  
  dep1 = document.frmGui.txtDepart1.value;  
  createCookie('depart1',dep1,0,20); 
  
  des1 = document.frmGui.txtDest1.value;  
  createCookie('dest1',des1,0,20); 
  
  if (document.frmGui.txtDepart2)
  {
    dep2 = document.frmGui.txtDepart2.value;  
    createCookie('depart2',dep2,0,20); 
  };
  
  if (document.frmGui.txtDest2)
  {
    des2 = document.frmGui.txtDest2.value;  
    createCookie('dest2',des2,0,20);         							
  };
};

function getDepDes()
{
  var cookieValue = readCookie('depart1');
  if (cookieValue != null){       
	  document.frmGui.txtDepart1.value = cookieValue;	  
  };
  
  cookieValue = readCookie('dest1');    
  if (cookieValue != null){       
	  document.frmGui.txtDest1.value = cookieValue;
  };
  
  cookieValue = readCookie('depart2');    
  if (cookieValue != null){       
    if (document.frmGui.txtDepart2) document.frmGui.txtDepart2.value = cookieValue;
  };   
  
  cookieValue = readCookie('dest2');    
  if (cookieValue != null){       
	  if (document.frmGui.txtDest2) document.frmGui.txtDest2.value = cookieValue;
  };     
};
    
function validate()
{  
  var pass;
  var errCnt = 0;
  var curDate = new Date(Date.parse(new Date().toDateString()));	
  var dow = curDate.getDay();
  var day = curDate.getDate();
  var month = curDate.getMonth();  
  var year = curDate.getFullYear();
  var dep1;
  var do1,do2,ro,md;
     
  pass = true;
  
    
  if (document.frmGui)
  {                   
    if (scwDateInputSequence == 'DMY'){                 
      do1 = bstSwapDM(document.frmGui.txtDepartOn1.value + '/' + document.getElementById('departOnYear1').innerHTML);
      
      if (document.frmGui.txtDepartOn2) do2 = bstSwapDM(document.frmGui.txtDepartOn2.value + '/' + document.getElementById('departOnYear2').innerHTML);        
      ro = bstSwapDM(document.frmGui.txtReturnOn.value + '/' + document.getElementById('returnOnYear').innerHTML);
      md = bstSwapDM(m_MasterDate.scwFormat(scwDateOutputFormat));
    }
    else
    {
      do1 = document.frmGui.txtDepartOn1.value + '/' + document.getElementById('departOnYear1').innerHTML;
      if (document.frmGui.txtDepartOn2) do2 = document.frmGui.txtDepartOn2.value + '/' + document.getElementById('departOnYear2').innerHTML;        
      ro = document.frmGui.txtReturnOn.value + '/' + document.getElementById('returnOnYear').innerHTML;        
      md = m_MasterDate.scwFormat(scwDateOutputFormat);  
    };
                                                          
    if (!Date.parse(do1) || ro.indexOf('00/00') != -1)
    {
      alert('You have entered an Invalid Date.  Please correct.');
      return false;
    } 
                                                                  
    var days = days_Between(new Date(Date.parse(do1)),curDate);    
    var numInf;     

    if (dow == 0){dow = 7};
    
    if (document.frmGui.selNumberOfInfants)
    {
      numInf = parseInt(document.frmGui.selNumberOfInfants.selectedIndex);
    }
    else{
      numInf = 0;
    };
       
    if (document.frmGui.selNumberOfAdults)
    {
      if ((parseInt(document.frmGui.selNumberOfAdults.selectedIndex) + 1) + parseInt(document.frmGui.selNumberOfChildren.selectedIndex) + numInf > 6)
      {            
        alert('The number of passengers combined cannot exceed 6.  Please contact us directly if you need to book more than 6 passengers or try multiple bookings.  Thank you!');
        document.frmGui.selNumberOfAdults.selectedIndex = 0;
        document.frmGui.selNumberOfChildren.selectedIndex = 0;
        
        if (document.frmGui.selNumberOfInfants)
        {
          document.frmGui.selNumberOfInfants.selectedIndex = 0;
        };
        pass = false;
      };       
    };
    
    if ((document.frmGui.txtDepart1.value == document.frmGui.txtDest1.value) && document.frmGui.txtDepart1.value != ''){
      pass = false;
      alert('Your departue and destination cannot be the same.  Please correct to continue.');  
    };
    
    if (document.frmGui.txtDepart2)
    {
      if ((document.frmGui.txtDepart2.value == document.frmGui.txtDest2.value) && document.frmGui.txtDepart2.value != ''){
        pass = false;
        alert('Your departue and destination cannot be the same.  Please correct to continue.');  
      };
    };

    if (do1 == '' || do1 == '//')
    {
      alert('Please enter a Leave On Date.');
      pass = false;
    }
    else
    {

      dep1 = new Date((new Date(do1)).toDateString());         
         
      if (Date.parse(dep1) == Date.parse(curDate))
      {
        alert('Due to time restrictions we cannot sell same day tickets.');
        pass = false;    
      }     
      else if (Date.parse(dep1) > Date.parse(curDate))
      {        
        if (document.frmGui.radTripType.length > 2)
        {
          if (document.frmGui.radTripType[2].checked)
          {
            if ((new Date(do2)) < dep1) 
            {
              alert('The Departure Date for the next part of your trip cannot be earlier then the previous Departure Date.');
              pass = false;                    
            };         
          };
        };
                       
        if (document.frmGui.radTripType.value == 'roundTrip')
        {
          if (ro != '' && ro != '//')
          {
             if ((new Date(ro)) < dep1)
            {
              alert('Your Return Date cannot be before your Departure Date.');
              pass = false;
            };
          }
          else
          {
            alert('Please enter a Return On Date.');
            pass = false;
          };
        };      
        
        if ((dow == 5 && days <= 3) || (dow == 6 && days <= 2) || (dow == 7 && days <= 1))
        {
          pass = false;

          var sellDate = new Date();
          sellDate.setFullYear(year,month ,day + ((7 - dow) + 2));
          alert('Due to weekend restricitons we cannot sell fares departing before ' + sellDate.toDateString() + '.  We apologize for any inconvenience!');
        }
        else if (days <= 1)
        {
          pass = false;
          alert('Due to certain restricitons we cannot sell fares less then 2 days out from your departure date.  We apologize for any inconvenience!');    
        };      
      }
      else if (Date.parse(dep1) < Date.parse(curDate) )
      {
        if (ro != '' && ro != '//')
        {
          alert('Your Departure Date cannot be before Today\'s Date.');
          pass = false;
        }
        else
        {
          alert('Please enter a Return On Date.');
          pass = false;
        };
      };            
    };
       
    if (ro)
    {
      if (ro != '' && ro != '//')
      {
        var dtBuf = new Date(Date.parse(ro));
        days = days_Between(dtBuf,new Date(Date.parse(md))); 

        if (days > 330)
        {
          pass = false;
          alert('Due to certain restricitons we cannot sell fares more than 330 days out from your departure date.  We apologize for any inconvenience!');
        };
      }
      else
      {
        alert('Please enter a Return On Date.');
        pass = false;
      };      
    };

    errCnt = errCnt + checkField('txtDepart1','depart1',3);  
    errCnt = errCnt + checkField('txtDest1','dest1',3); 
    
    if (document.frmGui.radTripType.length > 2)
    {
      if (document.frmGui.radTripType[2].checked == true)
      {
        errCnt = errCnt + checkField('txtDepart2','depart2',3);  
        errCnt = errCnt + checkField('txtDest2','dest2',3);      
      };    
    };
  };
    
  if (errCnt > 0)
  {
    pass = false;
    if (errCnt == 1)
    {
      alert('There is 1 required field with invalid or missing data.  Please correct.'); 
     }
    else if (errCnt > 1)
    {
      alert('There are ' + errCnt + ' required fields with invalid or missing data.  Please correct.'); 
    };
  }
  else
  {
    saveDates(); 
    saveDepDes();
  };
          
  return pass;
};

function changeTripDisplay(tripType)
{ 
  if (document.frmGui.radTripType)
  {
    if (tripType != ''){
      g_tripType = tripType;    
      if (tripType == 'roundTrip'){         
        document.getElementById('returnOnDate').style.display = 'block';      
        document.getElementById('returnOnText').style.display = 'block';  
        
        document.getElementById('multiCity').style.display = 'none';
        document.frmGui.radTripType[0].checked = true;
      }
      else if (tripType == 'oneWay'){
        document.getElementById('returnOnDate').style.display = 'none'; 
        document.getElementById('returnOnText').style.display = 'none';       
               
        document.getElementById('multiCity').style.display = 'none';       
        document.frmGui.radTripType[1].checked = true;
      }
      else if (tripType == 'openJaw'){
        document.getElementById('returnOnDate').style.display = 'none'; 
        document.getElementById('returnOnText').style.display = 'none';  
        
        if (document.frmGui.txtDepartOn2) document.frmGui.txtDepartOn2.value = document.frmGui.txtReturnOn.value;		    
              
        document.getElementById('multiCity').style.display = 'block';
        document.frmGui.radTripType[2].checked = true;
      };
      
      createCookie('tripType',tripType,0,20);    
    }
    else
    {       
      var cookieValue = readCookie('tripType');
      
      if (cookieValue == null){                            
        changeTripDisplay('roundTrip');      
      }
      else 
      {    
        changeTripDisplay(cookieValue);     
      };
    };
  };
};

var defDOW = new Array('SUN','MON','TUE','WED','THU','FRI','SAT');

function FormatDate(dayMonthInput,yearDiv,dowDiv,disDate,dateOffSet,europe)
{ 
  var dtBuf = new Date();
      
  var iMonth = disDate.substring(0,disDate.indexOf('/'));    
  var iDay = disDate.slice(disDate.indexOf('/') + 1,disDate.lastIndexOf('/'));
  var iYear = disDate.substring(disDate.lastIndexOf('/') + 1);
      
  if (europe)
  {
    dtBuf = new Date(Date.parse(iDay + '/' + iMonth + '/' + iYear));
  }
  else
  {
    dtBuf = new Date(Date.parse(iMonth + '/' + iDay + '/' + iYear));
  };
  
  var iMaxYear = new Date().getFullYear() + 1;
    
  dtBuf.setDate(dtBuf.getDate() + parseInt(dateOffSet));  
  
  iYear = dtBuf.getFullYear();
  if (iYear > iMaxYear) iYear = iMaxYear;
  
  var buf = new String();  
  if (europe)
  {    
    buf = addLeadingZero(dtBuf.getDate()) + '/' + addLeadingZero((dtBuf.getMonth() + 1));        
  }
  else
  {
    buf = addLeadingZero((dtBuf.getMonth() + 1)) + '/' + addLeadingZero(dtBuf.getDate());
  };
    
  dayMonthInput.value = buf;  
  yearDiv.innerHTML = iYear;    
  dowDiv.innerHTML = defDOW[dtBuf.getDay()];
  
  return buf;
};

function SetDefaultDates(europe)
{					
  var sDate;
  var dtBuf = new Date(Date.parse(new Date().toDateString()));					  
  m_MasterDate = new Date(Date.parse(new Date().toDateString()));
  
  if (europe)
  {
    sDate = dtBuf.getDate() + '/' + (dtBuf.getMonth() + 1) + '/' + dtBuf.getFullYear();
  }
  else
  {
    sDate = (dtBuf.getMonth() + 1) + '/' + dtBuf.getDate() + '/' + dtBuf.getFullYear();
  };  
  
  FormatDate(document.frmGui.txtDepartOn1,document.getElementById('departOnYear1'),document.getElementById('departOnDay1'),sDate,7,europe);		  				    
  FormatDate(document.frmGui.txtReturnOn,document.getElementById('returnOnYear'),document.getElementById('returnOnDay'),sDate,10,europe);		 
  
  if (document.frmGui.txtDepartOn2)
  {
    document.frmGui.txtDepartOn2.value = document.frmGui.txtReturnOn.value;		    
    document.getElementById('departOnYear2').innerHTML = document.getElementById('returnOnYear').innerHTML;
    document.getElementById('departOnDay2').innerHTML = document.getElementById('returnOnDay').innerHTML;
  };
  
  /*
  scwDisabledDates[0] = [new Date(dtBuf.getFullYear(),0,1),new Date(dtBuf.getFullYear(),dtBuf.getMonth(),dtBuf.getDate())];
  
  dtBuf.setDate(dtBuf.getDate() + parseInt(329)); 
    
  scwDisabledDates[1] = [new Date(dtBuf.getFullYear(),dtBuf.getMonth(),dtBuf.getDate()),new Date(dtBuf.getFullYear(),11,31)];
  */
};

function days_Between(date1,date2)
{
  var one_day=1000*60*60*24;
  var days = (Math.abs(date1.getTime()-date2.getTime()));

  return Math.round(days/one_day);
};

function subtract_Days(date1,days)
{
  var one_day=1000*60*60*24;
  var curDateMS = date1.getTime();
  var diffMS = (one_day * days);  
  var returnDate = new Date();
  
  returnDate.setTime(curDateMS - diffMS);
  
  return returnDate;
};


function SetDepartDest()
{
  if (Request.QueryString("departure").Count > 0){
    document.frmGui.txtDepart1.value = Request.QueryString("departure");           
  };
  
  if (Request.QueryString("destination").Count > 0){
    document.frmGui.txtDest1.value = Request.QueryString("destination");           
  };
};

