﻿function CreateXmlHttp() {

  var xmlHttp = null;

  //
	// Try to create the XmlHttp in Internet Explorer.
  //

	try {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch(e) {
		try {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch(oc) {
			xmlHttp = null;
		}
	}

  //
	// Try to create the XmlHttp in Mozilla/Safari.
  //

	if(!xmlHttp && typeof XMLHttpRequest != "undefined") {
		xmlHttp = new XMLHttpRequest();
	}

	return xmlHttp;

}

function LoadPropositions(propositionType, root) {

  var selectedPropositionGuid = null;
  var cpg = document.getElementById('CPG');
  var ajaxUri =root+ 'AjaxHandlers/PropositionListScript.ashx?proposition_type=';
  var propAttempts = 0;
  
  if(propositionType == 'PACKAGE')
  {
    //LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/PropositionListScript.ashx?proposition_type=' + propositionType, 'PRP')
    LoadOptionsIntoSelectControl(ajaxUri + propositionType, 'PRP');
  }

  selectedPropositionGuid = GetSelectedPropositionGuid();
  if(selectedPropositionGuid == "" && propositionType == 'PACKAGE' && propAttempts < 1){
    propAttempts++;
    LoadOptionsIntoSelectControl(ajaxUri + propositionType, 'PRP');
    selectedPropositionGuid = GetSelectedPropositionGuid();
  }
  
  
  cpg.value = selectedPropositionGuid;

    switch(propositionType)
    {
        case 'PACKAGE':      
            LoadPropositionData(selectedPropositionGuid);
            break;
            
        case 'ACCOM':
            LoadAccomPropositionData(selectedPropositionGuid);
            break;
            
        case 'FLIGHT':
            LoadFlightPropositionData(selectedPropositionGuid);
            break;
            
        case 'TRANSFER':
            LoadTransferPropositionData(selectedPropositionGuid);
            break;

        case 'MEETANDGREET':
            LoadMeetAndGreetPropositionData(selectedPropositionGuid);
            break;
            
        case 'EUROSTAR':
            LoadEuroStarPropositionData(selectedPropositionGuid);
            break;
            
        case 'EUROSTAR_TRAIN':
            LoadEuroStarTrainPropositionData(selectedPropositionGuid);
            break;

        case 'AIRPORTPARKING':
            LoadAirportParkingPropositionData(selectedPropositionGuid);
            break;

        case 'VEHICLEHIRE':
            LoadCarHirePropositionData(selectedPropositionGuid);
            break;
            
        case 'AIRPORTLOUNGE':
            LoadAirportLoungePropositionData(selectedPropositionGuid);
            break;
                                    
        default://If you fall through to here isn't the site screwed? 
            LoadPropositionData(selectedPropositionGuid);
            break;
    }
  
}

function PropositionOnChangeHandler()
{
    var selectedPropositionGuid = null;
    var cpg = document.getElementById('CPG');
    
    selectedPropositionGuid = GetSelectedPropositionGuid();
    cpg.value = selectedPropositionGuid;
    
    LoadPropositionData(selectedPropositionGuid);  
}

function VehicleHireDestinationOnChangeHandler(destDropdown, stationDropdown) {
    
  var destination = null;
  var selectedPropositionGuid = null;
  
  selectedPropositionGuid = GetSelectedPropositionGuid();
  destination = document.getElementById(destDropdown);
  
  if (selectedPropositionGuid != null) {
    if (destination != null) {
      LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/VehicleHireStations.ashx?proposition_guid=' + selectedPropositionGuid + '&destination=' + destination.value, stationDropdown)
    } else {

    }
  } else {

  }
  //setResortState();

}

function TransfersDestinationOnChangeHandler() {
    
  var destination = null;
  var selectedPropositionGuid = null;
  var destinationName;
  var destinationGuid;
  var destinationCombo;
  
  selectedPropositionGuid = GetSelectedPropositionGuid();
  destination = document.getElementById('DTN');
  destinationCombo = document.getElementById('uxDestAirport');
  
  if (selectedPropositionGuid != null) {
    if (destination != null) {
        destinationName = destinationCombo.value.split('|')[0];
        destinationGuid = destinationCombo.value.split('|')[1];
        LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/TransfersResort.ashx?proposition_guid=' + selectedPropositionGuid + '&destination=' + destinationName, 'RST')
        destination.value = destinationGuid;
    } else {

    }
  } else {

  }
  
}

function DestinationOnChangeHandler() {
    
  var destination = null;
  var selectedPropositionGuid = null;
  
  selectedPropositionGuid = GetSelectedPropositionGuid();
  destination = document.getElementById('DTN');
  
  if (selectedPropositionGuid != null) {
    if (destination != null) {
      LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/Resort.ashx?proposition_guid=' + selectedPropositionGuid + '&destination=' + destination.value, 'RST')
    } else {

    }
  } else {

  }
  setResortState();

}

function LoadPropositionData(propositionGuid) {

//  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/Resort.ashx?proposition_guid=' + propositionGuid, 'RST');
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/DepartureGroups.ashx?proposition_guid=' + propositionGuid, 'DPC');
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/DestinationGroups.ashx?proposition_guid=' + propositionGuid, 'DTN');
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/DurationGroups.ashx?proposition_guid=' + propositionGuid, 'NN');
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/PriceGroups.ashx?proposition_guid=' + propositionGuid, 'BDG');
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/BoardBasisGroups.ashx?proposition_guid=' + propositionGuid, 'BB');
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/StarRatingGroups.ashx?proposition_guid=' + propositionGuid, 'SR');
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/SupplierGroups.ashx?proposition_guid=' + propositionGuid, 'uxTourOperator');
  setSearchFormDefaults();

}

function LoadAccomPropositionData(propositionGuid) {

  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/DurationGroups.ashx?proposition_guid=' + propositionGuid, 'DG');
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/PriceGroups.ashx?proposition_guid=' + propositionGuid, 'BDG');
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/StarRatingGroups.ashx?proposition_guid=' + propositionGuid, 'SR');
  //setAccomSearchFormDefaults();

}

function LoadFlightPropositionData(propositionGuid) {

  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/DepartureGroups.ashx?proposition_guid=' + propositionGuid, 'uxDept');
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/CabinClassGroups.ashx?proposition_guid=' + propositionGuid, 'uxCabinClass'); 
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/FlightCarrierGroups.ashx', 'uxAirline');
}

function LoadAirportLoungePropositionData(propositionGuid) {

  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/DepartureAirports.ashx?proposition_guid=' + propositionGuid, 'uxDept');
  
}

function LoadTransferPropositionData(propositionGuid) {  
  
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/TransferAirports.ashx?proposition_guid=' + propositionGuid + '&airport_type=1', 'uxDeptAirport'); 
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/TransfersResort.ashx?proposition_guid=' + propositionGuid, 'RST');  
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/TransfersDestinationGroups.ashx?proposition_guid=' + propositionGuid, 'uxDestAirport');
  //$('uxDestAirport').outerHTML = $('uxDestAirport').outerHTML.replace(new RegExp('Any destination','g'),'Select Airport');    
  
  return true;
}

function LoadCarHirePropositionData(propositionGuid) {

  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/DestinationGroups.ashx?proposition_guid=' + propositionGuid, 'uxPickupCity');
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/DestinationGroups.ashx?proposition_guid=' + propositionGuid, 'uxDropOffCity');
     
}

function LoadAirportParkingPropositionData(propositionGuid) {

  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/DepartureAirports.ashx?proposition_guid=' + propositionGuid, 'uxDept');
     
}

function LoadMeetAndGreetPropositionData(propositionGuid) {

  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/DepartureGroups.ashx?proposition_guid=' + propositionGuid, 'uxDeptAirport');
     
}

function LoadEuroStarPropositionData(propositionGuid) {
    // need a feed for eurostar departure points
  //LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/DepartureGroups.ashx?proposition_guid=' + propositionGuid, 'DPC');
    // need a feed for valid eurostar destinations
  //LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/DestinationGroups.ashx?proposition_guid=' + propositionGuid, 'DTN');
  
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/PriceGroups.ashx?proposition_guid=' + propositionGuid, 'BDG');
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/BoardBasisGroups.ashx?proposition_guid=' + propositionGuid, 'BB');
  LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/StarRatingGroups.ashx?proposition_guid=' + propositionGuid, 'SR');  

}

function LoadEuroStarTrainPropositionData(propositionGuid) {
    // need a feed for eurostar departure points
  //LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/DepartureGroups.ashx?proposition_guid=' + propositionGuid, 'DPC');
    // need a feed for valid eurostar destinations
  //LoadOptionsIntoSelectControl(siteRoot + 'AjaxHandlers/DestinationGroups.ashx?proposition_guid=' + propositionGuid, 'DTN');  

}

function GetSelectedPropositionGuid() {

    var propositions = document.getElementById('PRP');

    return propositions.value;

}


function LoadOptionsIntoSelectControl(ajaxHandlerUri, elementId) {

  var propositions = document.getElementById(elementId);
  var xmlHttp = CreateXmlHttp();

  if(propositions) {

	  if(xmlHttp) {

      try {
      
         /* Async call back function - not currently used
         xmlHttp.onreadystatechange = function() { 
      
          if (xmlHttp.readyState==4){ 
                             
            if (xmlHttp.status==200){
            
              if (browserType.indexOf('IE') >= 0) {
              
                propositions.innerHTML = '<option value="">dummy</option>' + xmlHttp.responseText;
                propositions.outerHTML = propositions.outerHTML;
                
              } else {
                propositions.innerHTML = xmlHttp.responseText;
              }
              
              xmlHttp = null;
            }                     
          }          
        }
        */
              
		    xmlHttp.open("GET", ajaxHandlerUri,  false);
		    xmlHttp.send(null);
		    
		    // manual process for sync request/response.
       if (xmlHttp.status==200){
                  
          if (browserType.indexOf('IE') >= 0) {          
            propositions.innerHTML = '<option value="">dummy</option>' + xmlHttp.responseText;
            propositions.outerHTML = propositions.outerHTML;
            
          } else {
            propositions.innerHTML = xmlHttp.responseText;
          }
          if(elementId=="RST")
          {
             setResortState()
          }
          xmlHttp = null;
        } 
        
      } catch (e) {
      //  alert(e);
      }

	  } else {

      alert('Failed to create XmlHttp object to make request to <' + ajaxHandlerUri + '!');

    }

  } else {

    alert('Cannot find element with an id of <' + elementId + '>!');

  }

}
function setResortState()
{
    if($('RST').options.length <= 2)
    {
        $('RST').disabled = true;
    }
    else
    {
        $('RST').disabled = false;
    }
}
 