var packageName = "";
var pkgdateArray = new Array(); var pkgdateMap = new Hash();
var pkgDateManager = null;

function packageCodeChange() {
  var packageCode = $F('packageCode').toUpperCase(); $('packageCode').value = packageCode;
  var brochureCode = ($('brochureCode') ? $F('brochureCode') : '' );
  if (packageCode.length > 0) {
    if (packageData.get(brochureCode+'|'+packageCode)) {
      packageName = packageData.get(brochureCode+'|'+packageCode).packageName;
      pkgdateArray = packageData.get(brochureCode+'|'+packageCode).pkgdateArray;
      pkgdateMap = packageData.get(brochureCode+'|'+packageCode).pkgdateMap;
      pkgDateManager.setValidDates(packageData.get(brochureCode+'|'+packageCode).pkgdateArray2);
      packageQueryComplete();
    } else {
      $('packageDescription') &&  $('packageDescription').update('<p align="center">'+pleaseWait_small+"</p>");
      //disableDate('pkgdate');
      pkgDateManager.disable();
      new Ajax.Request(urlBase+'/packages/ajax/packageQuery.jsp', {
        parameters: {
          packageCode: packageCode,
          brochureCode: brochureCode
        },
        evalJS: 'force',
        onComplete: packageCodeChange
      });
    }
  }
}

function packageQueryComplete() {
  $('packageDescription') && $('packageDescription').update(packageName).show();
  if (pkgDateManager.validDates.length > 0)
    pkgDateManager.enable();
}

function submitPackageSearch(){
  var errors = new Array();
  var fields = "";
  if ($F('packageCode') == '' )
    errors[errors.length] = errorMessage(ERR_PKG_NEED_PKG_CODE);
  else
    fields += hiddenField('packageCode', $F('packageCode'));

  if ($F('pkgdate').length != 6)
    errors[errors.length] = errorMessage(ERR_PKG_BAD_DATE);
  else
    fields += hiddenField('packageStartDate', $F('pkgdate'));


  var totalPax = 0;
  if ($('fs_pkg_paxTypes')) totalPax = countPax($('fs_pkg_paxTypes'));
  else if ($('fs_paxTypes')) totalPax = countPax($('fs_paxTypes'));
  
  if (totalPax == 0) {
    errors[errors.length] = errorMessage(ERR_PKG_NO_PAX);
  } else if (totalPax > 9) {
    errors[errors.length] = errorMessage(ERR_PKG_TOO_MANY_PAX, {
      paxCount: totalPax
    });
  }

  $$('select.paxType').each(function(el){
    if ($F(el) != 0) {
      fields += hiddenField(el.name, $F(el));
      var ageField = el.id.replace("ptc", "ages");
      if ($(ageField) ) fields += hiddenField(ageField, $F(ageField));
    }
  });

  if ($('brochureCode')) {
    fields += hiddenField('brochureCode', $F('brochureCode'));
  }

  if (errors.length > 0) {
    alert(errors.join("\n"));
  } else {
    $('packageSearch').submit();
  }
  return false;
}

function packageSearchInit() {
  $('packageSearch').reset();
  pkgDateManager = new DateManager({
    months: $('pkgdate_mon'),
    days: $('pkgdate_day'),
    hidden: $('pkgdate')
  })
  $('packageSearch').select('select.paxType').each(function(el){
    var ptc = el.id.substring(4);
    if (paxTypes.get(ptc) && paxTypes.get(ptc).popup && !el.hasClassName("ageRestricted")) {
      Event.observe(el, 'change', showWarning.bindAsEventListener(el, ptc));
    }
  });

  $('packageCode').observe('keydown', packageCode_onkeydown);
  Event.observe($('pkg_ptc_CNC'), 'change', PaxQuestionnaire.concessionCountChange.bindAsEventListener($('pkg_ptc_CNC')));
  packageCodeChange();
  $('packageSearch').show();
}

function packageCode_onkeydown(evt) {
  if (evt.keyCode && evt.keyCode == Event.KEY_RETURN) {
    packageCodeChange();
    Event.stop(evt);
  }
}

Event.observe(window, 'load', packageSearchInit);