//***************** DO NOT EDIT *****************
//This file was automatically generated  by concatenating
//  reg/quote.js
//  reg/contact_us.js
//  reg/fs.js
//  reg/utilities.js
//  vendor/swfobject.js
//  reg/agent_resources.js
//  reg/track.js

/****** File: reg/quote.js ******/

// jsvascript to support eurogroups quotes setup

var errorSectionPage1 = "";
var errorSectionPage2 = "";

function onPage1Load()
{
  errorSectionPage1 = document.getElementById("errorSectionPage1").innerHTML;
  document.getElementById("errorSectionPage1").innerHTML = "";
}

function onPage2Load()
{
  errorSectionPage2 = document.getElementById("errorSectionPage2").innerHTML;
  document.getElementById("errorSectionPage2").innerHTML = "";
}

function testErrors()
{
}

function isAgent()
{
  return document.QuotesForm.isAgent[0].checked;
}

function switchFields()
{
  if (isAgent()) {
    setVisibility(getElement("agent"), 1);
    setVisibility(getElement("nonAgent"), 0);
  }
  else {
    setVisibility(getElement("agent"), 0);
    setVisibility(getElement("nonAgent"), 1);
  }

}

function displayErrorsPage1(errorMessagesPage1)
{
  document.getElementById("errorSectionPage1").innerHTML = errorSectionPage1;
  document.getElementById("errorMessagesPage1").innerHTML = errorMessagesPage1;
}

function getErrorHTML()
{
  var errorHTML = 
    '<div id="genericErrorContainer" style="display: block;" >' +
    '<div class="error-box-top"></div>' +
    '<div class="error-box-mid">' +
    '<div class="error-sign"></div>' +
    '<div class="error-box-message">' +
    '<p id="contact_us_error_message">Please correct the following errors and then continue:' +
    '<br />' +
    '</p>' +
    '<p id="errorMessages">' +
    '</p>' +
    '</div>' +
    '<div class="clear"></div>' +
    '</div>' +
    '<div class="error-box-btm"></div>' +
    '</div';
  return errorHTML;
}

function submitVerifyPage1()
{
  var errorHTML = getErrorHTML();
  var errorMessagesPage1 = "";
  if (isAgent()) {
    if (document.getElementById("agencyContactPerson").value == "") {
      errorMessagesPage1 += "Agency contact person field cannot be empty<br>";
    }
    if (document.getElementById("agencyIata").value == "") {
      errorMessagesPage1 += "Agency IATA field cannot be empty<br>";
    }
    if (document.getElementById("agencyEmailAddress").value == "") {
      errorMessagesPage1 += "Email address field cannot be empty<br>";
    }
    if (!isValidEmailId($('#agencyEmailAddress').val())) {
      errorMessagesPage1 += "Please enter a valid email address<br>";
    }
    if (document.getElementById("agencyPhoneNumber").value == "") {
      errorMessagesPage1 += "Agency phone number field cannot be empty<br>";
    }
  }
  else {
    if (document.getElementById("contactPerson").value == "") {
      errorMessagesPage1 += "Contact person field cannot be empty<br>";
    }
    if (document.getElementById("address").value == "") {
      errorMessagesPage1 += "Address field cannot be empty<br>";
    }
    if (document.getElementById("city").value == "") {
      errorMessagesPage1 += "City field cannot be empty<br>";
    }
    if (document.getElementById("state").value == "") {
      errorMessagesPage1 += "State field cannot be empty<br>";
    }
    if (document.getElementById("zipCode").value == "") {
      errorMessagesPage1 += "Zipcode field cannot be empty<br>";
    }
    if (document.getElementById("emailAddress").value == "") {
      errorMessagesPage1 += "Email address field cannot be empty<br>";
    }
    if (!isValidEmailId($('#emailAddress').val())) {
      errorMessagesPage1 += "Please enter a valid email address<br>";
    }
    if (document.getElementById("phoneNumber").value == "") {
      errorMessagesPage1 += "Phone number field cannot be empty<br>";
    }
  }

  if (document.getElementById("nTravelers").value < 9) {
      errorMessagesPage1 += "Our Groups Department is dedicated to serving the needs of groups of 9 or more, and while your group is a bit short of 9, we wanted to let you know that you can easily place your order on-line.<br>";
  }

  if (errorMessagesPage1 != "") {
    //return errorMessagesPage1;
    $('#genericErrorContainer').replaceWith(errorHTML);
    $('#errorMessages').after(errorMessagesPage1);
    return $('#genericErrorContainer').html();
  }
  return "";

}

function submitVerifyPage2()
{
  var errorHTML = getErrorHTML();
  var errorMessagesPage2 = "";
  var needRailTickets = document.getElementById("needRailTickets").checked;

  if (document.getElementById("trip1Time").value == "" && needRailTickets) {
    errorMessagesPage2 += "Please enter a time for your first trip<br>";
  }

  if (errorMessagesPage2 != "") {
    $('#genericErrorContainer').replaceWith(errorHTML);
    $('#errorMessages').after(errorMessagesPage2);
    return $('#genericErrorContainer').html();
  }
  return "";
}

function formSubmitPage1()
{
  if (submitVerifyPage1()) document.QuotesForm.submit();
}

function quote_form_1_validate(){
  return submitVerifyPage1();
}

function quote_form_2_validate(){
  return submitVerifyPage2();
}



var MAX_TRIPS = 8;
var tripCount = 2;
  
function addTrip()
{
  tripCount++;
  
  var tripTitle = "Trip " + tripCount;
  var tripFrom = "trip" + tripCount + "From";
  var tripTo = "trip" + tripCount + "To";
  var tripDepartureDate = "trip" + tripCount + "DepartureDate";
  var tripTime = "trip" + tripCount + "Time";
  var tripClass = "trip" + tripCount + "Class";

  var s = 
    '<div class="group-trip-search-field">' + 
    '<div class="trip2">' + tripTitle + '<br />' +
    '</div>' +
    '<div class="from">From:<br />' +
    '<input type="text" name="' + tripFrom + '" value="" class="from-field" />' +
    '</div>' +
    '<div class="to">To:<br />' +
    '<input type="text" name="' + tripTo + '" value="" class="to-field" />' +
    '</div>' +

    '<div class="departure">Departure Date:<br />' +
    '<input type="text" name="' + tripDepartureDate + '" id="' + tripDepartureDate + '" ' +
    'value="" class="departure-field" />' +

    '</div>' +
    '<script type="text/javascript" charset="utf-8">' +  
    'Date.format = "mm/dd/yyyy";' + 
	"$(function() {$('#" + tripDepartureDate + "').datePicker();});" +
    '</script>' +

    '<div class="trip-time">Time:<br/>' +
    '<span class="departure">' +
    '<input type="text" name="' + tripTime + '" value="" class="time-field" />' +
    '</span></div>' +
      
    '<div>Class:<br/>' +
    '<span class="field-float-left">' +
    '<select id="class1" class="select-box-small" name="' + tripClass + '">' +
    '<option value="First" selected="selected">1st</option>' +
    '<option value="Second">2nd</option>' +
    '</select>' +
    '</span> </div>' +
    '</div>' +
    '<div class="clear"></div>' ;

    if (tripCount <= MAX_TRIPS) {      
      $('#appendTrip').append(s);
	  $('#totalTickets').val(tripCount);
	}
    else {
      tripCount--;
    }

}

var MAX_PASSES = 8;
var passCount = 1;

function addPass()
{
  passCount++;
  var railPassName = "railPassName" + passCount;
  var duration = "duration" + passCount;
  var passClass = "passClass" + passCount;

  var s = 
    '<div class="group-trip-search-field">' +
    '<div class="from">Rail Pass Name:<br />' +

    '<input type="text" name="' + railPassName + '" value="" class="from-field" />' +
    '</div>' +
    '<div class="from">Duration:<br />' +
    '<input type="text" name="' + duration  + '" value="" class="from-field" />' +
    '</div>' +
    '<div>Class:<br/>' +
    '<span class="field-float-left">' +
    '<select id="time" class="select-box-small" name="' + passClass + '" >' +
    '<option value="First" selected="selected">1st</option>' +
    '<option value="Second">2nd</option>' +
    '</select>' +
    '</span> </div>' +
    '</div>' ;

    if (passCount <= MAX_PASSES) {
      $('#appendPass').append(s);
	  $('#totalPasses').val(passCount);
    }
    else {
      passCount--;
    }

}

/****** File: reg/contact_us.js ******/
function isValidEmailId(str)
{
  var len = str.length;
  if (len < 5) return false;

  var atIndex = str.indexOf('@');
  if (atIndex == -1 || atIndex == 0) return false;

  var atLastIndex = str.lastIndexOf('@');
  if (atIndex != atLastIndex) return false;

  var dotIndex = str.indexOf('.', atIndex);
  if (dotIndex == -1) return false;
  if ((atIndex+1) == dotIndex) return false;
  if ((dotIndex+1) == len) return false;
  return true;
}

function contactUsSubmitVerify()
{
  var errorHTML = 
    '<div id="genericErrorContainer" style="display: block;" >' +
    '<div class="error-box-top"></div>' +
    '<div class="error-box-mid">' +
    '<div class="error-sign"></div>' +
    '<div class="error-box-message">' +
    '<p id="contact_us_error_message">Please correct the following errors and then continue:' +
    '<br />' +
    '</p>' +
    '<p id="errorMessages">' +
    '</p>' +
    '</div>' +
    '<div class="clear"></div>' +
    '</div>' +
    '<div class="error-box-btm"></div>' +
    '</div';

  var fullName = $('#full-name').val();
  var country = $('#country').val();
  var email = $('#contact-us-email').val();
  var confirmEmail = $('#contact-us-confirm-email').val();
  var errorMessages = "";

  if (fullName == "")
    errorMessages += "The name field needs to be filled in<br>";

  if (country == "")
    errorMessages += "The country field needs to be filled in<br>";

  if (email == "") {
    errorMessages += "The email address field needs to be filled in<br>";
  }
  else
    if (!isValidEmailId(email))
      errorMessages += "Email address has invalid format<br>";

  if (email != confirmEmail)
    errorMessages += "The two email address fields should be identical<br>";

  if (errorMessages != "") {
    $('#genericErrorContainer').replaceWith(errorHTML);
    $('#errorMessages').after(errorMessages);
    return $('#genericErrorContainer').html();
  }
  return "";

}

function contact_us_validate()
{
  return contactUsSubmitVerify();
}

/****** File: reg/fs.js ******/
var displayTextBoxes = false;

function FsData() {
  this.urls = new Array();
  this.urls["fsAtocRequest"] = "/rail/point_to_point/atocresults.htm";
  this.urls["fsRequest"] = "/rail/point_to_point/results.htm";
  this.urls["fsScRequest"] = "/rail/point_to_point/schedules.htm";
  this.urls["fsLater"] = "/rail/point_to_point/later.htm";
  this.urls["fsVpRequest"] = "/rail/point_to_point/vp_trip_result.htm";
  this.urls["fsVpLater"] = "/rail/point_to_point/vp_trip_later.htm";
  this.urls["fsPhRequest"] = "/rail/point_to_point/passholderresults.htm";
  this.urls["fsAmtrakRequest"] = "/rail/point_to_point/amtrakptpresults.htm";
  this.urls["fsMobileRequest"] = "/rail/point_to_point/mresults.htm";
}
  
function getBrowserType() {
  var browserName = navigator.appName.toLowerCase();
  var browserUserAgent = navigator.userAgent.toLowerCase();

  var browserType = "X";  // some unknown browser

  if (browserName.indexOf("microsoft") >= 0) {
    browserType = "I";
  }
  else if (browserName.indexOf("netscape") >= 0) {
    browserType = "N";
  }
  else if (browserUserAgent.indexOf("aol") >= 0) {
    browserType = "A";
  }
  else if (browserUserAgent.indexOf("opera") >= 0) {
    browserType = "O";
  }
  return browserType;
}

function getBrowserVersion() {
  var browserVersion = navigator.appVersion;
  for (var v = 3; v <= 6; v++) {
    if (browserVersion.indexOf(v + ".") >= 0) return v;
  }
  return 0;
}

function doTextBoxes() {
  var browserType = getBrowserType();
  var ver = getBrowserVersion();
  return ((browserType == "N" && ver >= 5) || 
          (browserType == "I" && ver >= 4) ||
           browserType == "A");
}

function binSearch(toFind, array, low, high) {
  var mid = Math.floor( (low+high)/2 );
  if (low > high) {
    return -1;
  }
  var matchResult = match(toFind, array[mid].text);
  if (low == high) {
    return (matchResult == 0 ) ? mid : -1;
  }
  else if (matchResult == 0) {
    return mid;
  }
  else if (matchResult < 0) {
    return binSearch(toFind, array, low, mid-1);
  }
  else {
    return binSearch(toFind, array, mid+1, high);
  }
}

function match(toFind, subject) {
  var toFindLC = toFind.toLowerCase();
  var subjectLC = subject.toLowerCase();
  var toFindLCLen = toFindLC.length;
  if (toFindLCLen > 0 && toFindLC == subjectLC.substr(0, toFindLCLen)) {
    return 0;
  }
  else {
    return (toFindLC < subjectLC) ? -1 : +1;
  }
}

function selectFirstMatch(city, index, fromTo) {
  var array = document.fspage[fromTo].options;
  for (var i = index; i > 0; i--) {
    if (match(city, array[i - 1].text) != 0) break;
  }     
  return i;
}

function hOnKeyUp(fromTo) {
  var selectBox = document.fspage[fromTo];
  var array = selectBox.options;
  var city = document.fspage["TXT_" + fromTo].value;

  var index = binSearch(city, array, 0, array.length-1);

  if ( index == -1 ) {
    selectBox.selectedIndex = -1;
  }
  else  {
    var newIndex = selectFirstMatch(city, index, fromTo);
    array[newIndex].selected = true;
  }
}

function hOnBlur(fromTo) {
  var selectWidget = document.fspage[fromTo];
  var array = selectWidget.options;
  var index = selectWidget.selectedIndex;
  if (index >= 0) {
    document.fspage['TXT_' + fromTo].value = array[index].text;
  }
}

function request_text_box(fromTo, heading) {
  if (displayTextBoxes) {
    document.write(heading);
    var tabIndex = (fromTo == 'F') ? 1 : 2;
    document.write('<input autocomplete="off" type="text" ' +
      'name="TXT_' + fromTo + '" ' +
      'size="20" onKeyUp="hOnKeyUp(\'' + fromTo + '\')" ' +
      'onBlur="hOnBlur(\'' + fromTo + '\')" ' +
      'TABINDEX="' + tabIndex + '"><p>');
  }
}

displayTextBoxes = doTextBoxes();



// New FS
function showPopup(pURL) {
  var cWidth= 420;
  var cHeight= 625;
  var cParams= "status=1,toolbar=1,scrollbars=1,location=0,menu=1,resizable=1";

  var width = (showPopup.arguments[1] > 0) ? showPopup.arguments[1] : cWidth;
  var height = (showPopup.arguments[2] > 0) ? showPopup.arguments[2] : cHeight;
  var params = (showPopup.arguments[3]) ? showPopup.arguments[3] : cParams;
  popupWindow = window.open(pURL,
                            "popupWindow",
                            "width=" + width + "," +
                            "height=" + height + "," +
                            params);
  if (popupWindow.focus) popupWindow.focus();
}

function fareDebug(countrySite, stateId, solutionIndex, klass, step) {
  showPopup("/fs/" + countrySite + "/FSServe?fn=fareDebug&stateId=" + 
            stateId + "&solutionIndex=" + solutionIndex +
     "&klass=" + klass + "&step=" + step);
}

function fareRules(countrySite, stateId, solutionIndex, klass, step) {
  showPopup("/fs/" + countrySite + "/FSServe?fn=fareRules&stateId=" + 
            stateId + "&solutionIndex=" + solutionIndex +
     "&klass=" + klass + "&step=" + step);
}

function showAccomodations(countrySite, stateId) {
  showPopup("/fs/" + countrySite + "/FSServe?fn=showAccomodations&stateId=" +
            stateId, 420, 400);
}

function book(widget, value) {
  document.PtpResults.fareSelect.value = value;
  //alert(document.PtpResults);
  //document.PtpResults.submit();
  return true;
}

function selectFare(widget, value) {
  document.PtpResults.fareSelect.value = value;
  document.PtpResults.submit();
  return false;
}

function selectFare1(form, value) {
  form.fareSelect.value = value;
  form.submit();
  return false;
}

function mask(f) { 
  if(isNaN(parseInt(f.value))) f.value= "";
}

function enableRT(f) {
    f.d1.disabled=false;
    f.m1.disabled=false;
    f.t1.disabled=false;
}

function disableRT(f) {
    f.d1.disabled=true;
    f.m1.disabled=true;
    f.t1.disabled=true;
}

function initializeRT(f) {
  var rtContr = f.r[0];
  if (rtContr == null) return; 
  if (f.r[0].checked) {
    enableRT(f);
  }
  else {
    disableRT(f);
  }
}

//var dots;
//var count=0;
function wait_page_on_load(mainDiv, dotsDiv, img, width, height, countrySite) {
  //dots = dotsDiv;
  var key = getFunctionKey();
  var fsData = new FsData();
  var finurl = "/" + countrySite + fsData.urls[key] + window.location.search;
  window.location.replace(finurl);

  if(document.getElementById&&!(navigator.userAgent.indexOf("5.2")>-1)){
    mainDiv.style.backgroundImage = img;
    mainDiv.style.position = "relative";
    mainDiv.style.width = width;
    mainDiv.style.height = height;
    mainDiv.style.backgroundRepeat = "no-repeat";

//    if(!document.all) {
//      animate();
//    }
  }
}
//function animate(){
//  wait = "We are searching for your ticket(s) ";
//  
//  switch (count){
//    case 0:dots.firstChild.nodeValue = wait+"";count++;break;
//    case 1:dots.firstChild.nodeValue = wait+".";count++;break;
//    case 2:dots.firstChild.nodeValue = wait+"..";count++;break;
//    case 3:dots.firstChild.nodeValue = wait+"...";count++;break;
//    case 4:dots.firstChild.nodeValue = wait+"....";count++;break;
//    case 5:dots.firstChild.nodeValue = wait+".....";count++;break;
//    default:dots.firstChild.nodeValue = wait+"......";count=0;
//  }
//  setTimeout("animate()",500);
//}

// Second argument is an optional country code
// Only the cities that belongs to such country will be returned

function setupPTP(countrySite) {
/*
  var countryIndex = 1;
  var filterCountryCode = setupPTP.arguments[countryIndex];
  if ((typeof(document.form1)!="undefined")&&(typeof(document.form1.from0)!="undefined")){
  // setTimeout("initialize(document.form1.F0,document.form1.T0, 
  //  document.form1.d0, true, countrySite)",900);
    initialize(document.form1.from0,document.form1.to0, document.form1.deptDate0, true,
      countrySite, filterCountryCode);
//    initializeRT(document.form1);
   document.form1.from0.onfocus= function() {
     handleFocus(0);
   }
   document.form1.to0.onfocus= function() {
     handleFocus(1);
   }
  }
*/  
}


function showPtpPopunder(url) {
  ptpPopunder=window.open(url, "ptpPopunder", "status=yes,toolbar=yes,location=yes,menubar=yes,directories=yes,resizable=yes,scrollbars=yes,width=800,height=600");
  ptpPopunder.blur();
  window.focus();
}
  
function getFunctionKey() {
  var fnName = "fn=";
  var query = window.location.search;
  var mainEls = query.split("&");
  var result = null;
  
  for( var index in mainEls) {
    var element = mainEls[index];
    if( element.indexOf(fnName) > -1) {
      //this is the one
      var subEls = element.split("=");
      if( subEls.length == 2) {
        result = subEls[1];
        break;
      }
    }
  }
  return (result!=null)? result : "fsRequest";
}

///////  new wait page function

function getFsValue(name) {
  var queryStr = window.location.search;
  var pattern = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp(pattern);
  var results = regex.exec(queryStr);

  if (results==null) {
    return "";
  }
  else {
    return results[1];
  }
}

function g3_wait_page_on_load(countrySite, urlPrefix) {
  var key = getFunctionKey();
  var fsData = new FsData();
  var prefix = 
    (typeof(urlPrefix)=='undefined' || urlPrefix==null)? "" : "/"+urlPrefix;
  var lang = getFsValue("lang");
  if (!lang == "") prefix = "/" + lang;
  var finurl = prefix + "/" + countrySite + fsData.urls[key] + window.location.search +"&noLock=1";
  window.location.replace(finurl);
}


/****** File: reg/utilities.js ******/
function truncateString(str, maxLength) {
  if (str.length <= maxLength)
    return str;
  return str.substring(0, maxLength-1);
}

function URLDecode(encodeStr) {
  return unescape(String(encodeStr).replace(/\+/g, " "));
}

function URLEncode(str) {
  return escape(str.replace(/\ /g, "+"));
}

// Removes the leading zeros (eg. 08 become 8 for a month value)
function trimLeftZeros(s) {
  return s.replace(/^0+/, '');
}

// Retrives the element from the document by its id 
function getElement(id) {
  return (document.all)? document.all[id] : document.getElementById(id);
}
  
// Retrives the "single value control" value
function getValue( ctr ) {
  var result = null;
  if( ctr!=null ) { // sanity check
    var form = (getValue.arguments[1]!=null)? getValue.arguments[1]: null;
    if( form!=null ) {
      // radio can be evaluated only within a form with widget name(no id in IE)
      // alert("Inside getValue with ctr.len="+form[ctr].length)
      for( var i=0; i<form[ctr].length; i++ ) {
        if( form[ctr][i].checked == true ) {
          result = form[ctr][i].value;
        }
      }
    }
    else {
      // Test if ctr is a "select-one" or a text input
      var index=ctr.selectedIndex;
      result = (index==null)? ctr.value: ctr.options[index].value;
    }
  }
  return result;
}

// Sets the "single value control" value
function setValue( ctr, value ) {
  if(ctr==null) return; // sanity check
  var form = (setValue.arguments[2]!=null)? setValue.arguments[2]: null;
  if( form!=null) {
    // radio can be evaluated only within a form with widget name (no id for IE)
    for( var i=0; i<form[ctr].length; i++ ) {
      if( form[ctr][i].value == value ) {
        form[ctr][i].checked = true;
        break;
      }
    }
  }
  else if( ctr.type=="text" || ctr.type=="hidden") {
    ctr.value = value;
  }
  else if(ctr.type == "select-one") {
    // find the right index for the value
    var indexFound = false;
    for( var i=0; i< ctr.options.length; i++) {
      if( ctr.options[i].value==value) {
        ctr.options[i].selected = true;
        indexFound = true;
      }
    }
    // if no index found select the option at index zero
    if(!indexFound && ctr.options.length>0) {
      ctr.options[0].selected = true;
    }
  }
}

// Disables-enables the control based on the flag value
function disable(ctr, flag) {
  ctr.disabled = flag;
}

// Make page element visible or not based on the passed flag (true/false)
function setVisibility(element, flag) {
  if (document.layers) {
    element.visibility= flag? 'show' : 'hide';
  }
  else {
    element.style.visibility = flag? 'visible' : 'hidden';
  }
}

// Display or remove a given page element based on the passed flag (true/false)
function setDisplay(element, flag) {
  if (document.layers) 
    element.display = (flag)? 'block' : 'none';
  else
    element.style.display = (flag)? 'block' : 'none';
}
  
// Disables-enables the widget specified by id based on the flag value
function disableWidget(id, flag) {
  disable(getElement(id), flag);
}

// Helper for the getValue by a widget id
function getWidgetValue(id) {
  var result = null;
  var ctr = getElement(id);
  var formName = ( getWidgetValue.arguments[1]!=null )?
      getWidgetValue.arguments[1] : null;
  if( formName!=null) {
    result = getValue(id, document.forms[formName]);
  }
  else if( ctr!=null ) {
    result = getValue(ctr);
  }
  return result;
}
  
  

// Helper for the setValue by a widget id 
function setWidgetValue(id, val) {
  var ctr = getElement(id);
  var formName = (setWidgetValue.arguments[2]!=null)? 
    setWidgetValue.arguments[2]: null;
  if(formName!=null) {
    setValue(id, val, document.forms[formName]);
  }
  else if (ctr!=null) {
    setValue(ctr, val);
  }
}

function fillForm(theForm, queryString){
  var pairs= queryString.substring(1).split("&");
  var map = new Object();
  for (var i = 0; i < pairs.length; i++) {
    var pair= pairs[i].split("=");
    var key = pair[0];
    map[key] = pair[1];;
  }

  var els = theForm.elements; 
  for(var i=0; i<els.length; i++){
    var value = map[els[i].name]; 
    if (typeof(value) != "undefined") {
      switch(els[i].type){
        case "text":
        case "hidden":
    els[i].value = URLDecode(value);
      break;
        case "radio":
        case "checkbox":
          if (URLEncode(els[i].value) == value)
            els[i].checked = true;
    else
            els[i].checked = false;
        break;
      }
    }
  }
}


if ( isSite("studentuniverse") || isSite("travelocity") )
  loadStylesheets();

function isSite(site)
{
  var url = document.URL;
  if (url.indexOf(site) != -1)
    return 1;
  return 0;
}

function submitVerify()
{
  var dialog = 
    "Before purchasing this product, please understand that the " +
    "condition of this product is that travel must be begin within " +
    "2 months of the date of purchase and once travel has started it " + 
    "must be completed within 2 months.";

  document.ProductForm.onsubmit=function() {
  if (confirm(dialog))
    return true;
  else
    return false;
  }
}
  
function commissionVerify()
{
  var f1 = document.ShipInfo.commission;
  var f2 = document.ShipInfo.agencyServiceFee;
  if (f1 == undefined || f2 == undefined) return true;
  var commission = f1.value;
  var agencyServiceFee = f2.value;
  var dialog = 
    "The current commission on this booking is $" + commission + "\n" + 
    "Press Ok to continue the checkout process, or Cancel to go back and " +
    "add an agency fee.";
  
  if (agencyServiceFee == "0.00" || agencyServiceFee == "") {
    if (confirm(dialog)) return true; else return false;
  }
  else {
    return true;
  }
}
  
function showPopup(pURL) {
  var cWidth= 420;
  var cHeight= 625;
  var cParams= "status=1,toolbar=1,scrollbars=1,location=0,menu=1,resizable=1";
 
  var width = (showPopup.arguments[1] > 0) ? showPopup.arguments[1] : cWidth; 
  var height = (showPopup.arguments[2] > 0) ? showPopup.arguments[2] : cHeight; 
  var params = (showPopup.arguments[3]) ? showPopup.arguments[3] : cParams; 
  popupWindow = window.open(pURL,
                            "popupWindow",
                            "width=" + width + "," +
                            "height=" + height + "," +
                            params); 
  if (popupWindow!=null) popupWindow.focus();
}

function switchPage(pURL) {
  var cWidth= 420;
  var cHeight= 625;

  var width = (switchPage.arguments[1] > 0) ? switchPage.arguments[1] : cWidth; 
  var height = (switchPage.arguments[2] > 0) ? switchPage.arguments[2] : cHeight; 
  window.resizeTo(width, height);
  window.location.href= pURL;
}

function switchSite(pURL) {
  if (this.opener) {
    opener.location= pURL;
    close();
  }
  else {
    this.location= pURL;
  }
}

function deletePopupClose(status) {
  if (status == 1) opener.location= "$yesURL";
  window.close();
}                                                                            

function fsCategory(categoryName) {
  showPopup("/us/rail/fares_schedules/fare_categories/" + categoryName + ".htm",
            380, 350, 
            "status=1,toolbar=0,location=0,menu=1,resizable=1,scrollbars=1");
}

function getStylesheet() {
  return '<link rel=stylesheet type="text/css" href="' 
         + ((navigator.appName == 'Microsoft Internet Explorer') 
            ? '/css/swiss_en.css' 
            : '/css/swiss_en_ns.css')
         + '">';
}
                                
function processGoTo() {
  var value= document.goToForm.GoTo.options[
                            document.goToForm.GoTo.selectedIndex].value;
  if (value != '../travel_agent.htm') {
    window.open(value, '_top');
  }
  else {
    showPopup(value, 424, 280, 
              "status=0,toolbar=0,location=0,menu=0,resizable=1,scrollbars=0");
  }
}

function displayCityPopunder(url){
  win2=window.open(url, "city_promo", "status=no,toolbar=no,location=no,menu=no,resizable=yes,scrollbars=no,width=510,height=310");
  win2.blur();

  window.focus();
}

function loadStylesheets()
{
  //Load style sheets
  browser_version= parseInt(navigator.appVersion);
  browser_type = navigator.appName;
  platform = navigator.platform;
  platform_slice=platform.slice(0, 3);

  if (browser_type == "Microsoft Internet Explorer" && (browser_version >= 4))
  {
    document.write("<link REL='stylesheet' href='/iestyle.css' TYPE='text/css'>");
  }
  else 
    if (browser_type == "Netscape" && (platform_slice == "Mac") && 
      (browser_version != 5)) {
      document.write("<link REL='stylesheet' href='/macstyle.css' TYPE='text/css'>");
  }

  else 
    if (browser_type == "Netscape" && (browser_version >= 4)) {
      document.write("<link REL='stylesheet' href='/nsstyle.css' TYPE='text/css'>");
  }
} // end loadStylesheets()

// ------------------ travelcuts rollover functions ------------------ //

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function preload()
{
  MM_preloadImages(
    '/images/travelcuts/bookflight1.gif',
    '/images/travelcuts/onlinetravelshop1.gif',
    '/images/travelcuts/hotdeals1.gif',
    '/images/travelcuts/ebulletin1.gif',
    '/images/buttons/submit1.gif',
    '/images/buttons/close1.gif',
    '/images/buttons/buy_now1.gif',
    '/images/buttons/get_fares_schedules1.gif',
    '/images/buttons/add_to_shopping_cart_bgd1.gif',
    '/images/buttons/add_to_shopping_cart1.gif',
    '/images/buttons/yes1.gif'
  );
}

function processing_init() {
  MM_preloadImages(
    '/images/buttons/processing_order.gif',
    '/img/misc/processing_train.gif'
  );
}

function submitOrder(formName) {
  showProcessing();
  var objForm = document.forms[formName];
  objForm.submit();
}

function showProcessing() {
  $('#submit_order').hide();
  $('#processing_order').show();
}

function textCounter(field, cntfield, maxlimit) 
{
  if (field.value.length > maxlimit)
  { // text too long...trim it!
    field.value = field.value.substring(0, maxlimit);
  }
  else if( cntfield != null )
  { // otherwise, update 'characters left' counter if exists
    cntfield.value = maxlimit - field.value.length;
  }
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  
  for (i=0; i<(args.length-2); i+=3) {
    if ((obj=MM_findObj(args[i]))!=null) { 
      v=args[i+2];
      if (obj.style){ 
        obj=obj.style; 
        v=(v=='show')?'visible':(v=='hide')?'hidden':v; 
      }
      obj.visibility=v; 
    }
  }
}

function getQueryValue(key)
{
  var vars = parseQuery();
  return  vars[key];
}

function parseQuery()
{
  var queryVars = new Array();
  var query = window.location.search.substring(1);
  var pairs = query.split("&");
  
  for (var i=0;i<pairs.length;i++) {
    var pos = pairs[i].indexOf('=');
    if (pos >= 0) {
      var name = pairs[i].substring(0,pos);
      var value = pairs[i].substring(pos+1);
      queryVars[name] = value;
    }
  }
  return queryVars;
}
  
var RE_answers = new Array(20);
function flip(nr)
{
  var queCtr = document.getElementById("que"+nr);
  var ansCtr = document.getElementById("ans"+nr);
  if( queCtr==null || ansCtr==null) { 
    //alert("Cotrol(s) null");
    return;
  }
  if( RE_answers[nr]==null ) {
    RE_answers[nr] = queCtr.innerHTML;
    queCtr.innerHTML = RE_answers[nr]+"<br/>"+ansCtr.innerHTML;
  }
  else {
    queCtr.innerHTML = RE_answers[nr];
    RE_answers[nr]=null;
  }
}
  
/** ======================================================================
 * This function retrieves port from the browser current URL 
 * It returns the unsecure port value or empty string if port is unspecified.
 * If you need secure port value just add 1 to it.
 * It is meant for development environment
 * and it can be use to build link or cookie name.
 * ======================================================================*/ 
function getDevelPort() {
  var port = window.location.port ; 
  if (port!=null && port.length>0) {
    var intPort = parseInt(port);
    if (isNaN(intPort)) {
      intPort = 0;
    }
    else if ((intPort%2) == 1) {
      // downgrade from secure port to regular one
      intPort--;
    } 
    port = (intPort>0)? intPort.toString() : null;
  }
  return (port!=null)? port : '';
}

/** ======================================================================
 * This function calls the LivePersonChat object (if available in the 
 * current cobrand) to create the error logs
 * ======================================================================*/
function doLivePersonChatLogs(errors) {
  // Create logs for the LivePersonChat application
  if (typeof(regLpcLog)!='undefined' && regLpcLog!=null) {
    regLpcLog.log(errors);
  }
  // else alert('Invalid regLpcLog');
}

/** ======================================================================
 * This function creates the DcsPost logs
 * ======================================================================*/
function doDcsPostLog(_tag) {
  if (typeof(_tag)=='undefined' || _tag==null) return; // sanity check
  var paramName  = 'dcsAct';
  var paramValue = getQueryValue(paramName);
  var hasParameter = typeof(paramValue)!='undefined' && paramValue!=null;
  
  var cookieValue = $.cookie(paramName);
  var hasCookie = typeof(cookieValue)!='undefined' && cookieValue!=null;
  var dcsValue = hasParameter? paramValue : hasCookie? cookieValue : null;
  
  if (dcsValue) {
    // gets current bizState from the cookie
    var port = getDevelPort();
    var cookie = 'eid'+ port;
    var bizStateId = $.cookie(cookie);
    _tag.WT.dcsvid = bizStateId;
    // alert('dcAct='+paramValue + ', bizStateId='+ bizStateId + '.');
    
    switch (dcsValue) {
      case 'registration' :
        _tag.WT.rv = '1';
        break
      case 'login' :
        _tag.WT.z_login = '1'; 
        break;      
    } // end of switch
  } // end of valid dcsAct parameter
  else {
    // Clear up old value
    if (typeof(_tag.WT.rv)!='undefined') delete _tag.WT.rv;
    if (typeof(_tag.WT.z_login)!='undefined') delete _tag.WT.z_login;
  }
  // remove cookies
  if (hasCookie) { 
    $.cookie('dcsAct', null, { 'path': '/' });
  }

}
  
/** ======================================================================
 * Adds a given function to the onload event handler
 * It does not overwritte the page onload method but append to it
 * ======================================================================*/
function addOnloadEvent(func) { 
  var oldonload = window.onload; 
  if (typeof window.onload != 'function') { 
    window.onload = func; 
  }
  else { 
    window.onload = function() { 
      if (oldonload) { 
        oldonload(); 
      }
      func(); 
    }
  }
}

/** ======================================================================
 * Adds a given function to the onunload event handler
 * It does not overwritte the page onunload method but append to it
 * ======================================================================*/
function addOnunloadEvent(func) { 
  var oldonunload = window.onunload; 
  if (typeof window.onunload != 'function') { 
    window.onunload = func; 
  }
  else { 
    window.onunload = function() { 
      if (oldonunload) { 
        oldonunload(); 
      }
      func(); 
    }
  }
}

/** ======================================================================
 * Class StringBuffer used to efficiently append a lot of string
 * ======================================================================*/
function StringBuffer() { this.buffer = []; }

StringBuffer.prototype.append = function append(string) {
  this.buffer.push(string);
  return this;
};

StringBuffer.prototype.toString = function toString() {
  return this.buffer.join("");
};
  
/*
 * Date Format 1.2.3
 * (c) 2007-2009 Steven Levithan <stevenlevithan.com>
 * MIT license
 *
 * Includes enhancements by Scott Trenda <scott.trenda.net>
 * and Kris Kowal <cixar.com/~kris.kowal/>
 *
 * Accepts a date, a mask, or a date and a mask.
 * Returns a formatted version of the given date.
 * The date defaults to the current date/time.
 * The mask defaults to dateFormat.masks.default.
 */

var dateFormat = function () {
  var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
    timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
    timezoneClip = /[^-+\dA-Z]/g,
    pad = function (val, len) {
      val = String(val);
      len = len || 2;
      while (val.length < len) val = "0" + val;
      return val;
    };

  // Regexes and supporting functions are cached through closure
  return function (date, mask, utc) {
    var dF = dateFormat;

    // You can't provide utc if you skip other args (use the "UTC:" mask prefix)
    if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
      mask = date;
      date = undefined;
    }

    // Passing date through Date applies Date.parse, if necessary
    date = date ? new Date(date) : new Date;
    if (isNaN(date)) throw SyntaxError("invalid date");

    mask = String(dF.masks[mask] || mask || dF.masks["default"]);

    // Allow setting the utc argument via the mask
    if (mask.slice(0, 4) == "UTC:") {
      mask = mask.slice(4);
      utc = true;
    }

    var _ = utc ? "getUTC" : "get",
      d = date[_ + "Date"](),
      D = date[_ + "Day"](),
      m = date[_ + "Month"](),
      y = date[_ + "FullYear"](),
      H = date[_ + "Hours"](),
      M = date[_ + "Minutes"](),
      s = date[_ + "Seconds"](),
      L = date[_ + "Milliseconds"](),
      o = utc ? 0 : date.getTimezoneOffset(),
      flags = {
        d:    d,
        dd:   pad(d),
        ddd:  dF.i18n.dayNames[D],
        dddd: dF.i18n.dayNames[D + 7],
        m:    m + 1,
        mm:   pad(m + 1),
        mmm:  dF.i18n.monthNames[m],
        mmmm: dF.i18n.monthNames[m + 12],
        yy:   String(y).slice(2),
        yyyy: y,
        h:    H % 12 || 12,
        hh:   pad(H % 12 || 12),
        H:    H,
        HH:   pad(H),
        M:    M,
        MM:   pad(M),
        s:    s,
        ss:   pad(s),
        l:    pad(L, 3),
        L:    pad(L > 99 ? Math.round(L / 10) : L),
        t:    H < 12 ? "a"  : "p",
        tt:   H < 12 ? "am" : "pm",
        T:    H < 12 ? "A"  : "P",
        TT:   H < 12 ? "AM" : "PM",
        Z:    utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
        o:    (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
        S:    ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
      };

    return mask.replace(token, function ($0) {
      return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
    });
  };
}();

// Some common format strings
dateFormat.masks = {
  "default":      "ddd mmm dd yyyy HH:MM:ss",
  shortDate:      "m/d/yy",
  mediumDate:     "mmm d, yyyy",
  longDate:       "mmmm d, yyyy",
  fullDate:       "dddd, mmmm d, yyyy",
  shortTime:      "h:MM TT",
  mediumTime:     "h:MM:ss TT",
  longTime:       "h:MM:ss TT Z",
  isoDate:        "yyyy-mm-dd",
  isoTime:        "HH:MM:ss",
  isoDateTime:    "yyyy-mm-dd'T'HH:MM:ss",
  isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};

// Internationalization strings
dateFormat.i18n = {
  dayNames: [
    "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
    "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
  ],
  monthNames: [
    "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
    "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
  ]
};

// For convenience...
Date.prototype.format = function (mask, utc) {
  return dateFormat(this, mask, utc);
};
 
Date.prototype.getNDays = function() {
  var oneDay = 1000*60*60*24; // converted from millisecond
  var today = new Date();
  var timediff = this.getTime() - today.getTime();
  return Math.ceil(timediff / oneDay);
}
  
// This is the String object extension to remove all spaces or expression define
String.prototype.strip = function(exp) { 
  return this.replace(exp? exp : /\s/g,'');
}

// This is the String object extension to check for a start string
String.prototype.startsWith = function(str) {
  return (this.match("^"+str)==str)
}

// This is the String object extension to trim leading and trailing spaces
String.prototype.trim = function() {
  return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}

/****** File: vendor/swfobject.js ******/
/**
 * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
 *
 * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 */
if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;
/****** File: reg/agent_resources.js ******/
  
$(document).ready(function() {
    
  $('#agent-tools-link').bind('click', function(event) {
    var id = '#'+event.target.id+'-all';
    $(id).toggle();
  });
  $('#agent-deals-link').bind('click', function(event) {
    var id = '#'+event.target.id+'-all';
    $(id).toggle();
  });
  $('#agent-support-link').bind('click', function(event) {
    var id = '#'+event.target.id+'-all';
    $(id).toggle();
  });
});


/****** File: reg/track.js ******/
function isUpper(c) {
  return ('A' <= c && c <= 'Z');
}

function isDigit(c) {
  return ('0' <= c && c <= '9');
}

function popupError(urlBase) {
/*
  var popupURL= urlBase + "/common/track/error.htm";
  var windowOptions= "width=300,height=300,top=100,left=100";
  var errorWindow= window.open(popupURL, "ErrorWindow", windowOptions);
  errorWindow.focus();
*/
  var url = urlBase + 
    '/misc/track/error.htm?height=155&width=350&modal=true';

  tb_show("",url,""); 
}


var SUFFIX_LENGTH= 4;
/*
function isValidOrderID(orderID, prefix) {
  var len= orderID.length;
  var prefixLen= prefix.length;
  if (len < prefixLen + 1 + 1 + SUFFIX_LENGTH) return false;
  if (orderID.indexOf(prefix) != 0) return false;
  var i= prefixLen;
  if (!isDigit(orderID.charAt(i++))) return false;
  while (isDigit(orderID.charAt(i))) i++;
  if (orderID.charAt(i++) != '-') return false;
  var suffixLength= 0;
  //relaxed suffix check since after reds suffix can be all letters
  //var wantDigit= (isDigit(orderID.charAt(i)));
  while (i < len) {
    //var c= orderID.charAt(i++);
    //if (wantDigit ? !isDigit(c) : !isUpper(c)) return false;
    //wantDigit= !wantDigit;
    suffixLength++; i++;
  }
  return suffixLength == SUFFIX_LENGTH;
}
*/

function isValidOrderID(orderID, prefix)
{
  if (orderID == null || orderID.match(/^\w\w-\d+-\w\w\w\w$/) == null)
    return false;
  else
    return true;
}

function stripOrderID(orderID) {
  var firstIndex = orderID.indexOf("-");
  var lastIndex = orderID.lastIndexOf("-");
  return orderID.substring(firstIndex+1, lastIndex);
}

function upCaseAndValidate(widget, prefix) {
  widget.value= widget.value.toUpperCase();
  var isOk= isValidOrderID(widget.value, prefix);
  if (!isOk) {
    var url= document.URL;
    var urlBase= url;
    var firstDot= url.indexOf('.');
    if (firstDot >= 0) {
      var urlBaseEnd= url.indexOf('/', firstDot);
      if (urlBaseEnd >= 0) {
        //var urlCountryEnd = url.indexOf('/', urlBaseEnd+1);
        //if (urlCountryEnd >= 0) urlBase= url.substr(0, urlCountryEnd);
        urlBase = url.substr(0, urlBaseEnd);
      }
    }
    popupError(urlBase);
  }
  else {
    widget.value = stripOrderID(widget.value);
  }
  return isOk;
}

