//----------------------------------------------------------------------

function ComboBox( settings )
{
  // Initialization...
  QuoteBox( settings.resort.defaultCountry,
            settings.resort.defaultRegion,
            settings.registerDomain,
            settings.domainLogo,
            settings.source,
            settings.domain,
            settings.referer );

  document.getElementById("qbCruiseSiteDom").value = settings.registerDomain;
  document.getElementById("qbCruiseSiteLogo").value = settings.domainLogo;
  document.getElementById("qbCruiseSource").value = settings.source;
  document.getElementById("qbCruiseDom").value = settings.domain;
  document.getElementById("qbCruiseRef").value = settings.referer;

  document.getElementById("qbTourSiteDom").value = settings.registerDomain;
  document.getElementById("qbTourSiteLogo").value = settings.domainLogo;
  document.getElementById("qbTourSource").value = settings.source;
  document.getElementById("qbTourDom").value = settings.domain;
  document.getElementById("qbTourRef").value = settings.referer;

  // More initialization...
  document.getElementById("qbCruiseRegionID").value = settings.cruise.regionID;
  prepYYYYM( document.getElementById("qbCruiseFrom"), settings.cruise.months );
  prepYYYYM( document.getElementById("qbCruiseTo"), settings.cruise.months );
  prepTripLength( document.getElementById("qbCruiseMinDays"), settings.cruise.days );
  prepTripLength( document.getElementById("qbCruiseMaxDays"), settings.cruise.days );

  document.getElementById("qbTourRegionID").value = settings.tour.regionID;
  document.getElementById("qbTourCountryID").value = settings.tour.countryID;
  prepYYYYM( document.getElementById("qbTourFrom"), settings.tour.months );
  prepYYYYM( document.getElementById("qbTourTo"), settings.tour.months );
  prepTripLength( document.getElementById("qbTourMinDays"), settings.tour.days );
  prepTripLength( document.getElementById("qbTourMaxDays"), settings.tour.days );
  
  // FAB events...
  document.getElementById("qbFabHotelWithAir").onclick = function() {
    showPanels( true, true, false, false );
  };

  document.getElementById("qbFabHotelOnly").onclick = function() {
    showPanels( true, false, false, false );
  };

  document.getElementById("qbFabCruise").onclick = function() {
    showPanels( false, false, true, false );
  };

  document.getElementById("qbFabTour").onclick = function() {
    showPanels( false, false, false, true );
  };

  // Form submission events...
  document.getElementById("qbForm").onsubmit = function() {
    var bResult = true;

    if ( document.getElementById("qbFabHotelWithAir").checked )
      bResult = priceHotelWithAir();
    else {
      bResult = priceHotelOnly();

      if ( bResult )
        document.getElementById("qbGateway").selectedIndex = 0;
    }
    
    return bResult;
  }
  
  document.getElementById("qbCruiseForm").onsubmit = function() {
    var val1 = parseInt( document.getElementById("qbCruiseFrom").value );
    var val2 = parseInt( document.getElementById("qbCruiseTo").value );
    var bResult = ( !val1 || !val2 || val1 <= val2 );

    if ( !bResult )
      alert( "Your selections of \"From Date\" and \"To Date\" will not produce any result." );
    else {
      val1 = parseInt( document.getElementById("qbCruiseMinDays").value );
      val2 = parseInt( document.getElementById("qbCruiseMaxDays").value );
      bResult = ( !val1 || !val2 || val1 <= val2 );

      if ( !bResult )
        alert( "Your selections of \"Minimum Days\" and \"Maximum Days\" will not produce any result." );
    }

    return bResult;
  }
  
  document.getElementById("qbTourForm").onsubmit = function() {
    var val1 = parseInt( document.getElementById("qbTourFrom").value );
    var val2 = parseInt( document.getElementById("qbTourTo").value );
    var bResult = ( !val1 || !val2 || val1 <= val2 );

    if ( !bResult )
      alert( "Your selections of \"From Date\" and \"To Date\" will not produce any result." );
    else {
      val1 = parseInt( document.getElementById("qbTourMinDays").value );
      val2 = parseInt( document.getElementById("qbTourMaxDays").value );
      bResult = ( !val1 || !val2 || val1 <= val2 );

      if ( !bResult )
        alert( "Your selections of \"Minimum Days\" and \"Maximum Days\" will not produce any result." );
    }

    return bResult;
  }
  
  // Back button...
  if ( document.getElementById("qbFabHotelWithAir").checked )
    showPanels( true, true, false, false );
  else if ( document.getElementById("qbFabHotelOnly").checked )
    showPanels( true, false, false, false );
  else if ( document.getElementById("qbFabCruise").checked )
    showPanels( false, false, true, false );
  else if ( document.getElementById("qbFabTour").checked )
    showPanels( false, false, false, true );
}

//----------------------------------------------------------------------

function prepYYYYM( objMonth, arrayYYYY_MM, sDefault )
{
  var dCurrMM = new Date();
  var iYYYY = 0;
  var iMM = 0;
  var sMMM_YY = "";
  var sYYYYM = "";

  for ( var i=0; i<arrayYYYY_MM.length; i++ ) {
    iYYYY = arrayYYYY_MM[i].substr(0, 4);
    iMM = arrayYYYY_MM[i].substr(5, (arrayYYYY_MM[i].length - 5));
    dCurrMM.setYear(iYYYY);
    dCurrMM.setMonth(iMM-1);
    dCurrMM.setDate(15);
    sMMM_YY = dCurrMM.toLocaleString().split(/\s/)[1] + " " + iYYYY.toString();
    sYYYYM = iYYYY + "" + iMM;
    objMonth.options[objMonth.length] = new Option( sMMM_YY, sYYYYM );
  }
}

//----------------------------------------------------------------------

function prepTripLength( objDays, arrayDays, iDefault )
{
  for ( var i=0; i<arrayDays.length; i++ ) {
    objDays.options[objDays.length] = new Option( arrayDays[i], arrayDays[i] );
  }
}

//----------------------------------------------------------------------

function showPanels( bResort, bAir, bCruise, bTour )
{
  document.getElementById("qbPanelGateway").style.display = ( bResort && bAir )? "inline" : "none";
  document.getElementById("qbPanelResort").style.display = ( bResort )? "inline" : "none";
  document.getElementById("qbPanelCruise").style.display = ( bCruise )? "inline" : "none";
  document.getElementById("qbPanelTour").style.display = ( bTour )? "inline" : "none";
}
