var isIE4  = false 
var isNS6  = false 
var isNav4 = false 
if (document.all) isIE4 = true;
else if (document.layers) isNav4 = true;
else if (document.getElementById) isNS6 = true;

// convert all characters to lowercase to simplify testing
var agt = navigator.userAgent.toLowerCase();

// *** BROWSER VERSION ***
// Note: On IE5, these return 4, so use is_ie5up to detect IE5.
var is_major = parseInt(navigator.appVersion);
var is_minor = parseFloat(navigator.appVersion);

// Note: Opera and WebTV spoof Navigator.  We do strict client detection.
// If you want to allow spoofing, take out the tests for opera and webtv.
var is_nav      = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                    && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                    && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
var is_nav2     = (is_nav && (is_major == 2));
var is_nav3     = (is_nav && (is_major == 3));
var is_nav4     = (is_nav && (is_major == 4));
var is_nav4up   = (is_nav && (is_major >= 4));
var is_navonly  = (is_nav && ((agt.indexOf(";nav") != -1) ||
                  (agt.indexOf("; nav") != -1)));
var is_nav6     = (is_nav && (is_major == 5));
var is_nav6up   = (is_nav && (is_major >= 5));
var is_gecko    = (agt.indexOf('gecko') != -1);

var is_chrome   = (agt.indexOf('chrome') != -1);

var is_ie       = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var is_ie3      = (is_ie && (is_major < 4));
var is_ie4      = (is_ie && (is_major == 4) && (agt.indexOf("msie 4")!=-1) );
var is_ie4up    = (is_ie && (is_major >= 4));
var is_ie5      = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
var is_ie5_5    = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") !=-1));
var is_ie5up    = (is_ie && !is_ie3 && !is_ie4);
var is_ie5_5up  = (is_ie && !is_ie3 && !is_ie4 && !is_ie5);
var is_ie6      = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.")!=-1) );
var is_ie6up    = (is_ie && !is_ie3 && !is_ie4 && !is_ie5 && !is_ie5_5);

var is_opera    = (agt.indexOf("opera") != -1);
var is_opera2   = (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2") != -1);
var is_opera3   = (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3") != -1);
var is_opera4   = (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4") != -1);
var is_opera5   = (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1);
var is_opera5up = (is_opera && !is_opera2 && !is_opera3 && !is_opera4);

function NoPage(i) {
  return;
}
function CheckForm1() {
  return true;
}
function Wait1() {
  if (document.getElementById) {
    if (document.getElementById("formsearch")) {
      if (document.getElementById("formsearch").style.display == "none") {
        document.getElementById("formsearch").style.display = "inline";
        document.getElementById("progressbar").style.display = "none";
      } else {
        document.getElementById("formsearch").style.display = "none";
        document.getElementById("progressbar").style.display = "inline";
      }
    }
  }
}
function AddDate(date1) {
  month = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
  date2 = document.getElementById('form1').f_calcdate.value;
  if (date1.value != '' && date2 == '') {
    var date  = new Date();
    date.setTime(Date.parse(date1.value));
    date.setDate(date.getDate() + 1);
    var d = date.getDate();
    if (d < 10) d = "0" + d;
    var m = date.getMonth();
    var y = date.getFullYear();
    var dd = month[m] + " " + d + ", " + y;
    document.getElementById('form1').f_calcdate.value = dd;
  }
}
function DateDisabled(date) {
  date1 = new Date(date);
  date2 = new Date();
  y = date2.getFullYear();
  m = date2.getMonth() + 1;
  d = date2.getDate() + 2;
  date3 = m+"/"+d+"/"+y;
  date4 = new Date(date3);
  if (date1.getTime() < date4.getTime()) {
    return true;
  }
  return false;
}
function ToggleDisabled(eToggle,iFirst,iLast) {
  var bDisabled = (eToggle.checked ? true : false);
  var eForm = eToggle.form;
  for (var i = iFirst; i <= iLast; i++) {
    eForm.elements[i].disabled = bDisabled;
  }
}
function ToggleEnabled(eToggle,iFirst,iLast) {
  var bDisabled = (eToggle.checked ? false : true);
  var eForm = eToggle.form;
  for (var i = iFirst; i <= iLast; i++) {
    eForm.elements[i].disabled = bDisabled;
  }
}
function hideBack() {
  if (document.getElementById) {
    if (document.getElementById("v_back")) {
      if (document.getElementById('f_trip').value == "round") {
        document.getElementById("back_1").style.display = "";
        document.getElementById("back_2").style.display = "";
        document.getElementById("back_3").style.display = "";
      } else {
        document.getElementById("back_1").style.display = "none";
        document.getElementById("back_2").style.display = "none";
        document.getElementById("back_3").style.display = "none";
      }
    }
  }
}
function hideCard() {
  if (document.getElementById) {
    if (document.getElementById("v_card")) {
      if (document.getElementById('f_payment').value == "skytours") {
        document.getElementById("card_1").style.display = "";
        document.getElementById("card_2").style.display = "";
        document.getElementById("card_3").style.display = "";
        document.getElementById("card_4").style.display = "";
        document.getElementById("card_5").style.display = "";
      } else {
        document.getElementById("card_1").style.display = "none";
        document.getElementById("card_2").style.display = "none";
        document.getElementById("card_3").style.display = "none";
        document.getElementById("card_4").style.display = "none";
        document.getElementById("card_5").style.display = "none";
      }
    }
  }
}
function CheckDate() {
  date1 = document.getElementById('form1').f_date_a.value;
  date2 = document.getElementById('form1').f_calcdate.value;
  if (date1 != '' && date2 != '') {
    var from = new Date(date1);
    var to   = new Date(date2);
    var msLeft = to.getTime() - from.getTime();
    if (msLeft < 0) return false;
  }
  return true;
}
function CheckFromDate() {
  date1 = document.getElementById('form1').f_date_a.value;
  date2 = new Date(date1);
  date3 = new Date();
  if (date2.getTime() < (date3.getTime() + 86400000)) {
    return false;
  }
  return true;
}
function CheckFromDate2(date) {
  date2 = new Date(date);
  date3 = new Date();
  if (date2.getTime() > (date3.getTime() + (329 * 86400000))) {
    return false;
  }
  return true;
}
function populateCardTypes() {
  cCardTypeTxt = new Array ("MasterCard","Visa","American Express");
  cCardTypeVal = new Array ("MasterCard","Visa","American Express");
  for (var i = 0; i < cCardTypeTxt.length; i++) {
    form1.cardtype[form1.cardtype.length] = new Option (cCardTypeTxt[i], cCardTypeVal[i]);
    if (cCardTypeVal[i] == "") { form1.cardtype[i + 1].selected = true; } // Use i + 1 because option 0 is "(Please select...)"
  }
}
function printCardNumber(card) {
  cCardTxt = new Array ("#","MasterCard","Visa","American Express");
  cCardVal = new Array ("","5","4","3");
  for (var i = 0; i < cCardTxt.length; i++) {
    if (cCardTxt[i] == card) {
      j = i;
    }
  }
  document.getElementById('f_cardnumber').value = cCardVal[j];
}
function check_visa(str) {
  var reg = /^4[0-9]{12}(?:[0-9]{3})?$/;
  var result = reg.test(str);
  return result;
}
function check_ae(str) {
  var reg = /^3[47][0-9]{13}$/;
  var result = reg.test(str);
  return result;
}
function check_mc(str) {
  var reg = /^5[1-5][0-9]{14}$/;
  var result = reg.test(str);
  return result;
}
function pause(mSec) {
  clock = new Date();
  justMinute = clock.getTime();
  while (true) {
    just = new Date();
    if (just.getTime() - justMinute > mSec) break;
  }
}
function validateCreditCard(s) {
  // remove non-numerics
  var v = "0123456789";
  var w = "";
  for (i=0; i < s.length; i++) {
    x = s.charAt(i);
    if (v.indexOf(x,0) != -1)
      w += x;
  }

  // validate number
  j = w.length / 2;
  if (j < 6.5 || j > 8 || j == 7) return false;
  k = Math.floor(j);
  m = Math.ceil(j) - k;
  c = 0;
  for (i=0; i<k; i++) {
    a = w.charAt(i*2+m) * 2;
    c += a > 9 ? Math.floor(a/10 + a%10) : a;
  }
  for (i=0; i<k+m; i++) c += w.charAt(i*2+1-m) * 1;
  return (c%10 == 0);
}
function validateCreditCard2(t,n) {
    var cardName = t;
    var value    = n;
    
    var cards  = new Array();
    cards[0]  = {cardName: "Visa", lengths: "13,16", prefixes: "4", checkdigit: true};
    cards[1]  = {cardName: "MasterCard", lengths: "16", prefixes: "51,52,53,54,55", checkdigit: true};
    cards[2]  = {cardName: "DinersClub", lengths: "14,16", prefixes: "300,301,302,303,304,305,36,38,55", checkdigit: true};
    cards[3]  = {cardName: "CarteBlanche", lengths: "14", prefixes: "300,301,302,303,304,305,36,38", checkdigit: true};
    cards[4]  = {cardName: "American Express", lengths: "15", prefixes: "34,37", checkdigit: true};
    cards[5]  = {cardName: "Discover", lengths: "16", prefixes: "6011,650", checkdigit: true};
    cards[6]  = {cardName: "JCB", lengths: "15,16", prefixes: "3,1800,2131", checkdigit: true};
    cards[7]  = {cardName: "enRoute", lengths: "15", prefixes: "2014,2149", checkdigit: true};
    cards[8]  = {cardName: "Solo", lengths: "16,18,19", prefixes: "6334, 6767", checkdigit: true};
    cards[9]  = {cardName: "Switch", lengths: "16,18,19", prefixes: "4903,4905,4911,4936,564182,633110,6333,6759", checkdigit: true};
    cards[10] = {cardName: "Maestro", lengths: "16,18", prefixes: "5020,6", checkdigit: true};
    cards[11] = {cardName: "VisaElectron", lengths: "16", prefixes: "417500,4917,4913", checkdigit: true};
                   
    var cardType = -1;
    for (var i = 0; i < cards.length; i++) {
      if (cardName.toLowerCase() == cards[i].cardName.toLowerCase()) {
        cardType = i;
        break;
      }
    }
    if (cardType == -1) { return false; } // card type not found

    value = value.replace(/[\s-]/g,""); // remove spaces and dashes
    if (value.length == 0) { return false; } // no length

    var cardNo = value;
    var cardexp = /^[0-9]{13,19}$/;
    if (!cardexp.exec(cardNo)) { return false; } // has chars or wrong length
    
    cardNo = cardNo.replace(/\D/g,""); // strip down to digits

    if (cards[cardType].checkdigit) {
      var checksum = 0;
      var mychar = "";
      var j = 1;

      var calc;
      for (i = cardNo.length - 1; i >= 0; i--) {
        calc = Number(cardNo.charAt(i)) * j;
        if (calc > 9) {
          checksum = checksum + 1;
          calc = calc - 10;
        }
        checksum = checksum + calc;
        if (j == 1) {j = 2} else {j = 1};
      } 

      if (checksum % 10 != 0) { return false; } // not mod10
    }  

    var lengthValid = false;
    var prefixValid = false; 
    var prefix  = new Array();
    var lengths = new Array();

    prefix = cards[cardType].prefixes.split(",");
    for (i = 0; i < prefix.length; i++) {
      var exp = new RegExp("^" + prefix[i]);
      if (exp.test(cardNo)) prefixValid = true;
    }
    if (!prefixValid) { return false; } // invalid prefix

    lengths = cards[cardType].lengths.split(",");
    for (j = 0; j < lengths.length; j++) {
      if (cardNo.length == lengths[j]) lengthValid = true;
    }
    if (!lengthValid) { return false; } // wrong length

    return true;
}
function hideValues() {
  needsRecalc = true;
  tmp = document.getElementById('dynamicValues').getElementsByTagName('div');
  for (i = 0; i < tmp.length; i++) {
    if (tmp[i].className == 'dynAmount') {
      (isNav4) ? tmp[i].visibility = 'hide' : tmp[i].style.visibility = 'hidden';
    }
  }
}
function visiValues() {
  needsRecalc = true;
  tmp = document.getElementById('dynamicValues').getElementsByTagName('div');
  for (i = 0; i < tmp.length; i++) {
    if (tmp[i].className == 'dynAmount') {
      (isNav4) ? tmp[i].visibility = 'visible' : tmp[i].style.visibility = 'visible';
    }
  }
}
function hideNames(id) {
  if (document.getElementById) {
    if (document.getElementById(id).style.display == "none") {
      document.getElementById(id).style.display = "";
    } else {
      document.getElementById(id).style.display = "none";
    }
  }
}
function showPress(e) {
  if(!e) { var e = window.event; }
  if (e.keyCode) { code = (e.keyCode || e.charCode); }
  else { if (e.which) { code = e.which; }}
  if (is_chrome) { return true; }
  if (code < 8 || (code > 9 && code < 32) || (code > 33 && code < 37) || (code > 40 && code < 45) || (code > 46 && code < 65) || (code > 90 && code < 97) || (code > 122 && code < 127)) { return false; }
  if (is_ie5up || is_opera5up) {
    if (String.fromCharCode(code) == "'" || String.fromCharCode(code) == '%' || String.fromCharCode(code) == '&' || String.fromCharCode(code) == '(' || code == 8470) { return false; }
  }
  if (is_gecko) {
    if (code == 8470 || (e.keyCode == 0 && String.fromCharCode(code) == "'") || (e.shiftKey && (String.fromCharCode(code) == '%' || String.fromCharCode(code) == '&' || String.fromCharCode(code) == '('))) { return false; }
  }
  return true;
}
function popUp(page) {
  new_window = window.open(page,"new_window","width=500,height=600,location=0,menubar=0,resizable=1,scrollbars=0,status=0,titlebar=0,toolbar=0,left=150,top=50,screenx=150,screeny=50");
  if (new_window.opener == null) {
    new_window.opener = self;
  }
  new_window.focus();
}
