<!-- 
// ----------------------------------------------
// REGULAR FARE FINDER SPECIFIC METHODS
// ----------------------------------------------
function preFareFinderSubmitActions(error, acesError) {
  setTripTypeIfReturnDateSelected(false);
  closeCalendar();
  closeStationList();
    
  if(! checkFareFinderMandatoryFields(error))
    return false;
    
  return validateForACESBooking(acesError);
  
}	

function checkFareFinderMandatoryFields(error){
    var errorMsg = "";
    var fieldList = checkFields(false);
    if (fieldList != "") { 
      errorMsg = error + "\n" + fieldList + "\n\n";
    }

    if (errorMsg != ""){
      alert(errorMsg);
      return false;
    } else {
        return true;
    }
} 
// ----------------------------------------------
// END REGULAR FARE FINDER SPECIFIC METHODS
// ----------------------------------------------

// ----------------------------------------------
// AUTO TRAIN SPECIFIC METHODS
// ----------------------------------------------
function preAutoTrainFareFinderSubmitActions(error) {
	closeCalendar(); 
	return checkAutoTrainFareFinderMandatoryFields(error);  
}	

function checkAutoTrainFareFinderMandatoryFields(error){
    var errorMsg = "";
    var fieldList = checkFields(true);
    if (fieldList != "") { 
      errorMsg = error + "\n" + fieldList+ "\n\n";
    }

    if (errorMsg!="") {
      alert(errorMsg);
      return false;
    }
    return true;
}

function autoTrainChgLocation(field) {
  if (field == "Abfahrt") {
    if (document.form.wdf_originSelect.options[1].selected == true) {
      document.form.wdf_destinationSelect.options[0].selected = false;    
      document.form.wdf_destinationSelect.options[1].selected = false;
      document.form.wdf_destinationSelect.options[2].selected = true;            
    }
    else if (document.form.wdf_originSelect.options[2].selected == true) {
      document.form.wdf_destinationSelect.options[0].selected = false;    
      document.form.wdf_destinationSelect.options[1].selected = true;
      document.form.wdf_destinationSelect.options[2].selected = false;            
    }
  }
  else if (field == "Ankunft"){
    if (document.form.wdf_destinationSelect.options[1].selected == true) {
      document.form.wdf_originSelect.options[0].selected = false;    
      document.form.wdf_originSelect.options[1].selected = false;
      document.form.wdf_originSelect.options[2].selected = true;            
    }
    else if (document.form.wdf_destinationSelect.options[2].selected == true) {
      document.form.wdf_originSelect.options[0].selected = false;    
      document.form.wdf_originSelect.options[1].selected = true;
      document.form.wdf_originSelect.options[2].selected = false;            
    }
  }
}

// -----------------------------------
// END AUTO TRAIN SPECIFIC METHODS
// -----------------------------------

// Set return to empty if selecting one-way trip
function blankReturnDate(isAutoTrainBookingPath){
	var retDate = document.getElementById('wdfdate2');
	retDate.value = "";	
	if(isAutoTrainBookingPath == true) {		
		showHideReturnDateSection('form_item_to_date', false);
	} else {
		showHideReturnDateSection('tickets_ret_date_time', false);
	}
}

// Default the return date if selecting return trip
function setReturnDate(isAutoTrainBookingPath){
	var depDate = $('wdfdate1'); 
	var retDate = $('wdfdate2');
	var dateOnPage = getValidatedDateArray(1);
    if (isValidDate(dateOnPage)) {
		var dateOnPageObj = new Date(dateOnPage[0], (dateOnPage[1]-1), dateOnPage[2]);
		dateOnPageObj.setDate(dateOnPageObj.getDate()+1);
    	retDate.value = formatDate(dateOnPageObj);
    }
    if(isAutoTrainBookingPath == true) {    	
		showHideReturnDateSection('form_item_to_date', true);
	} else {
		showHideReturnDateSection('tickets_ret_date_time', true);
	}
}

// Auto select the return trip type button if the return date is populated
function setTripTypeIfReturnDateSelected(isAutoTrainBookingPath){
	if(isAutoTrainBookingPath == false) {
    if(document.getElementById('wdfdate2').value != '' || document.getElementById('wdftime2').selectedIndex > 0){
    	document.getElementById('oneway').checked = false;
    	document.getElementById('return').checked = true;
    }
    else {
    	document.getElementById('oneway').checked = true;
    	document.getElementById('return').checked = false;
    }
  }
  else {
   if(document.getElementById('wdfdate2').selectedIndex > 0 || document.getElementById('wdftime2').selectedIndex > 0){
    	document.getElementById('oneway').checked = false;
    	document.getElementById('return').checked = true;
    }
    else {
    	document.getElementById('oneway').checked = true;
    	document.getElementById('return').checked = false;
    }
  }
}

// Check mandatory fields have been entered
function checkFields(isAutoTrainBookingPath){
  var fieldList="";
  
  var deprtCityVal = document.getElementById('departs').value;
  var arrivesCityVal = document.getElementById('arrives').value;
  var departDate = document.getElementById('wdfdate1').value;
  var returnDate = document.getElementById('wdfdate2').value;


  var dateText = "Datum";
  if(isAutoTrainBookingPath == true) {
	dateText = "Tag";
  }
  
  if (deprtCityVal == ""){
	  fieldList = " -- Abfahrt\n";
  }
  if(arrivesCityVal == ""){
      fieldList = fieldList + " -- Ankunft\n";
  }
  
  
  if(departDate==""){
    fieldList = fieldList + " -- Abfahrt " + dateText + "\n";
  }
  
  if (document.getElementById('return').checked == true){
    if( returnDate==""){
      fieldList = fieldList + " -- R\374ckfahrtsdatum\n";
    }
  }  
  
  return fieldList;
}


function validateForACESBooking(acesError){
  var fieldList="";
  var errorMsg="";
  var origin = document.getElementById('departs').value;
  var destination = document.getElementById('arrives').value;
  var numberOfChildren = document.getElementById('children').value;
  var numberOfInfants = document.getElementById('infants').value;   
  
  if (origin.toUpperCase() == 'ACE'.toUpperCase() || destination.toUpperCase() == 'ACE'.toUpperCase() 
        || origin.toUpperCase().indexOf('(ACE)') != -1 || destination.toUpperCase().indexOf('(ACE)') != -1)  {
	    if(numberOfChildren > 0 || numberOfInfants > 0) {
	        fieldList = fieldList + " " + acesError + "\n";
	    }    
  }
  
  if (fieldList != "") {
      errorMsg = fieldList + "\n\n";
  }

  if (errorMsg != ""){
      alert(errorMsg);
      return false;
  }
}

function showHideReturnDateSection(shID, show) {    
    if(show == true) {
    	if (document.getElementById(shID)) {
    		document.getElementById(shID).style.display = 'block';
    	}
    } else {
    	if (document.getElementById(shID)) {
    		document.getElementById(shID).style.display = 'none';
    	}
    }
}

function alphabetical(a, b)
{
     var P = a.toLowerCase();
     var Z = b.toLowerCase();
     
     var A = threeletterCode(P);
     var B = threeletterCode(Z);
     if (A < B){
        return -1;
     }else if (A > B){
       return  1;
     }else{
       return 0;
     }
}

function threeletterCode(a) {
   var x = a.indexOf('(');
   var y = a.indexOf(')');
   
   return a.substring(x+1, y);
}

var AmtrakAutocompleter = { };
AmtrakAutocompleter.Local = Class.create(Autocompleter.Base, {
  initialize: function(element, update, array, options) {
    this.baseInitialize(element, update, options);
    this.options.array = array;
  },

  getUpdatedChoices: function() {
    this.updateChoices(this.options.selector(this));
  },

  setOptions: function(options) {
    this.options = Object.extend({
      choices: 10,
      partialSearch: true,
      partialChars: 2,
      ignoreCase: true,
      fullSearch: false,
      selector: function(instance) {
        var ret       = []; // Beginning matches
        var partial   = []; // Inside matches
        var middle   = []; // Middle matches
        var entry     = instance.getToken();
        var count     = 0;

        for (var i = 0; i < instance.options.array.length &&
          ret.length < instance.options.choices ; i++) {

          var elem = instance.options.array[i];

          if (entry.length == 3 || entry.length == 2) {
            var test = entry;
            if (entry.length == 3) {
              test = '(' + entry.toLowerCase() + ')';
            }
            if (entry.length == 2) {
              test = '(' + entry.toLowerCase();
            }

            var foundPos = instance.options.ignoreCase ?
              elem.toLowerCase().indexOf(test.toLowerCase()) :
              elem.indexOf(test);
            if (foundPos != -1) {
              if (entry.length == 2) {
                   ret.push("<li>" + elem + "</li>");
              }
              else {
                   ret.push("<li>" + elem + "</li>");
              }
            }
          }
		            
          if (entry.length > 1) {
            var test = entry;
            test = '- ' + entry.toLowerCase();

            var foundPos = instance.options.ignoreCase ?
              elem.toLowerCase().indexOf(test.toLowerCase()) :
              elem.indexOf(test);
            if (foundPos != -1) {
                   middle.push("<li>" + elem + "</li>");
            }
          }          
		}        

		ret.sort(alphabetical);
        if (middle.length)
          ret = ret.concat(middle.slice(0, instance.options.choices - ret.length));

        for (var i = 0; i < instance.options.array.length &&
          ret.length < instance.options.choices ; i++) {

          var elem = instance.options.array[i];
          var foundPos = instance.options.ignoreCase ?
            elem.toLowerCase().indexOf(entry.toLowerCase()) :
            elem.indexOf(entry);

          while (foundPos != -1) {
            if (foundPos == 0 && elem.length != entry.length) {
              ret.push("<li>" + elem + "</li>");
              break;
            } else if (entry.length >= instance.options.partialChars &&
              instance.options.partialSearch && foundPos != -1) {
              if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) {
                partial.push("<li>" + elem + "</li>");
                break;
              }
            }

            foundPos = instance.options.ignoreCase ?
              elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) :
              elem.indexOf(entry, foundPos + 1);

          }
        }
        if (partial.length)
          ret = ret.concat(partial.slice(0, instance.options.choices - ret.length));

        if (ret.length == 0) {
          return "<ul><li>" + "Es tut uns leid, aber es wurden keine Treffer gefunden" + "</li></ul>";
        }

        ret = ret.uniq();
        
        return "<ul>" + ret.join('') + "</ul>";
      }
    }, options || { });
  }
});

// Sets the Status tab date to todays date.
function set_status_date() {
  $('wdfdate3').clear();
  var date = new Date();
  var text = formatDate(date);
  $('wdfdate3').value = text;
}
// -->