﻿// JScript File
// added by david xia, to remove the enter evernt
function RemoveEnterEvent() { 
			if (event.keyCode == 13) { 
				event.cancelBubble = true; event.returnValue = false; 
					window.alert("Enter key is disabled.");
			} 
		} 

 function clickButton(e, buttonid)
 { 
    var bt = document.getElementById(buttonid); 
    if (typeof bt == 'object'){ 
        if(navigator.appName.indexOf("Netscape")>(-1)){ 
              if (e.keyCode == 13){ 
                    bt.click(); 
                    return false; 
              } 
        } 
        if (navigator.appName.indexOf("Microsoft Internet Explorer")>(-1)){ 
              if (event.keyCode == 13){ 
                    bt.click(); 
                    return false; 
              } 
        } 
    } 
}
function E(name)
{
    var ob=document.getElementById('ctl00_Content_' + name);
    if (ob==null)
        ob=document.getElementById(name);
    if (ob==null)
        return document.getElementById('ctl00$AvailabilityCtrl$' + name);
    else
        return ob;
}

function validateAcceptance(value, args)
{
    args.IsValid = true;
    var check = E("chkAcceptance");
    if (check!=null && check.checked!=true)
    {
        args.IsValid = false;
    }
}


/*
There are three functions in this set for credit card validation.
*/

// LUHN Formula for validation of credit card numbers.
function mod10( cardNumber ) { 
/* 
  Start from the right, and work backwards. Double every 
  second digit starting with the second right most. If
  the double digit is > 9 then subtract 9.

  Sum the digits and return whether this sum is divisible by 10.

  Example:
    card number: 4 7 8 2 0 0 6 0 1 1 6 7 0 5 5 4
    doubled:     8 7 7 2 0 0 3 0 2 1 3 7 0 5 1 4
    summed:      50

*/
  var ar = new Array( cardNumber.length );
  var i = 0;
  var sum = 0;

  for( i = 0; i < cardNumber.length; ++i ) {
    ar[i] = parseInt(cardNumber.charAt(i));
  }

  for( i = ar.length -2; i >= 0; i-=2 ) {  
      ar[i] *= 2;
      if( ar[i] > 9 ) ar[i]-=9;			 
  }
										 
  for( i = 0; i < ar.length; ++i ) {
      sum += ar[i];						 
  }

  return (((sum%10)==0)?true:false);	  	
}

function validateCardExpiration( value, args ) {
/*
  Create an expired on date object with valid thru expiration date
  adjust the month, to first day, hour, minute & second of expired month
  then we get the miliseconds, and do a long integer comparison
*/
    
    var month = parseInt(E("inputCcMonth").value);
    var year = parseInt(E("inputCcYear").value);
    var nowDate = new Date();					
    var expiresIn = new Date(year,month,0,0,0);		
    //alert(expiresIn);
    expiresIn.setMonth(expiresIn.getMonth()+1);
    if( nowDate.getTime() < expiresIn.getTime() )
    {
        args.IsValid = true;
    }
    else
        args.IsValid = false;
}

function validateCardNumber(value, args) {
/*
  First make sure the number is all digits.. (by design), and
  then perform card specific length and prefix tests depending
  on the card type.

  Now run the check digit algorithm (mod10 test) and finish with
  examining the expiry date.

  If all checks runs through we can now state that the card has
  not been proven to be invalid
*/
    var cardNumber = E("inputCcNumber").value;
    var cardType = E("inputCcType").value;
     
    
    //check if number was changed:
    try
    {
        if (ccNumOriginal==cardNumber && cardType==ccTypeOriginal)
        {
            args.IsValid = true;
            return true;
        }
    }
    catch(e)
    {
    }
    
   
    if( cardNumber.length == 0 ) {						
        //alert("Please enter a valid card number.");
        args.IsValid = false;
        return false;				
    }
    
    if (cardNumber.match(/\d{13,}/) == null && !cardNumber.match(/xxxx/)) {
        //alert("Please enter a valid card number.  Use only digits.  Do not use spaces or hyphens.");
        args.IsValid = false;
        return false;
    }

  var length = cardNumber.length;
  switch( cardType ) {
    
    /* American Express card */
    case "AX":
      if( length != 15 ) {
        //alert("Please enter a valid American Express Card number.");
        args.IsValid = false;
        return false;
      }
      if (cardNumber.match(/xxxx/))
      {
        args.IsValid = true;
        return true;
      }
      
      var prefix = parseInt( cardNumber.substring(0,2));
      if( prefix != 34 && prefix != 37 ) {
        //alert("Please enter a valid American Express Card number.");
        args.IsValid = false;
        return false;
      }
      break;
    
    /* Discover card */
    case "DS":
      if( length != 16 ) {
        //alert("Please enter a valid Discover Card number.");
        args.IsValid = false;
        return false;
      }
      if (cardNumber.match(/xxxx/))
      {
        args.IsValid = true;
        return true;
      }
      var prefix = parseInt( cardNumber.substring(0,4));
      if( prefix != 6011 ) {
        //alert("Please enter a valid Discover Card number.");
        args.IsValid = false;
        return false;
      }
      break;
    
    /* Mastercard */
    case "MC":
      if( length != 16 ) {
        //alert("Please enter a valid MasterCard number.");
        args.IsValid = false;
        return false;
      }
      if (cardNumber.match(/xxxx/))
      {
        args.IsValid = true;
        return true;
      }
      var prefix = parseInt( cardNumber.substring(0,2));
      if( prefix < 51 || prefix > 55) {
        //alert("Please enter a valid MasterCard number.");
        args.IsValid = false;
        return false;
      }
      break;
    
    /* Visa card */
    case "VA":
      if( length != 16 && length != 13 ) {
        //alert("Please enter a valid Visa Card number.");
        args.IsValid = false;
        return false;
      }
      if (cardNumber.match(/xxxx/))
      {
        args.IsValid = true;
        return true;
      }
      var prefix = parseInt( cardNumber.substring(0,1));
      if( prefix != 4 ) {
        //alert("Please enter a valid Visa Card number.");
        args.IsValid = false;
        return false;
      }
      break;
    
    /* Diner's Club card - not supported */
    case "DC":
        args.IsValid = true;
		return true;
		break;
	
	/* Carte Blance card - not supported */
	case "CB":
		return true;
		args.IsValid = true;
		break;
		
	/* JCB card - not supported */
	case "JC":
		return true;
		args.IsValid = true;
		break;
		
  }

  if( !mod10( cardNumber ) ) {
    //alert("The credit card number that you have provided is not a valid credit card number.");
    args.IsValid = false;
    return false;
  }
  
  args.IsValid = true;

  return true;
}

function GetDeparture()
{
    var depDate;
    depDate = new Date(
        parseInt(E('inputDepartureYear').value),
        parseInt(E('inputDepartureMonth').value) - 1,
        parseInt(E('inputDepartureDay').value)
        );
    return depDate;
}
function GetArrival()
{
    var arrDate;
    arrDate = new Date(
        parseInt(E('inputArrivalYear').value),
        parseInt(E('inputArrivalMonth').value) - 1,
        parseInt(E('inputArrivalDay').value)
        );
    return arrDate;
}
function NumberOfNightsClick()
{
    var arrDate;
    arrDate = GetArrival();
    UpdateArrDateControls(arrDate);
    
    var depDate;
    var newDay = parseInt(E('inputNumberOfNights').value) + parseInt(arrDate.getDate());
    depDate = new Date(
        arrDate.getFullYear(),
        arrDate.getMonth(),
        newDay
        );
    UpdateDepDateControls(depDate);
}
function ShowArrivalCalendar()
{
    var d = GetArrival();
    show_calendar('Arr', 18, new String(d.getMonth()), new String(d.getFullYear()));
}
function ShowDepartureCalendar()
{
    var d = GetDeparture();
    show_calendar('Dep', 18, new String(d.getMonth()), new String(d.getFullYear()));
}
function UpdateArrDateControlsStr(arrDateStr)
{
    var ar = arrDateStr.split('/');
    E('inputArrivalYear').value = ar[2];
    E('inputArrivalMonth').value = parseInt(ar[0],10);
    E('inputArrivalDay').value = parseInt(ar[1],10);
}
function UpdateDepDateControlsStr(depDateStr)
{
    var ar = depDateStr.split('/');
    E('inputDepartureYear').value = ar[2];
    E('inputDepartureMonth').value = parseInt(ar[0],10);
    E('inputDepartureDay').value = parseInt(ar[1],10);
}
function UpdateDepDateControls(depDate)
{
    E('inputDepartureYear').value = depDate.getFullYear();
    E('inputDepartureMonth').value = parseInt(depDate.getMonth())+1;
    E('inputDepartureDay').value = depDate.getDate();
}
function UpdateArrDateControls(arrDate)
{
    E('inputArrivalYear').value = arrDate.getFullYear();
    E('inputArrivalMonth').value = parseInt(arrDate.getMonth())+1;
    E('inputArrivalDay').value = arrDate.getDate();
}
function UpdateNumberOfNights()
{
    var nights;
    nights = E('inputNumberOfNights');
    if (nights==null)
        return;
        
    var arrDate;
    arrDate = GetArrival();
        
    var depDate;
    depDate = GetDeparture();
        
    var MINUTE = 60*1000;
	var HOUR = MINUTE*60;
	var DAY = HOUR*24;
	var day_diff;
	
    diff = (depDate - arrDate)/DAY;
   
    
	if ((diff -1) < 0) {
		nights.selectedIndex = 0;
	} else {
		 
		if ((diff -10) > 0) { 
			nights.selectedIndex = 10;
		} else {

			for (var i = 0; i < nights.length; i++) {
				if (nights[i].value == diff) {
					nights.selectedIndex = i;
				}
			}
	 	}
	 }
}

function CheckArrDate(source, args)
{
    var arrDate;
    arrDate = GetArrival();
        
    UpdateArrDateControls(arrDate);
    var nowDate = new Date();
    nowDate.setHours(0,0,0,0);
    
    args.IsValid = (arrDate >= nowDate);
}
function CheckDepDate(source, args)
{
    var depDate;
    depDate = GetDeparture();
    var arrDate;
    arrDate = GetArrival();
        
    UpdateArrDateControls(arrDate);
    UpdateDepDateControls(depDate);
    UpdateNumberOfNights();
    
    args.IsValid = (depDate > arrDate);
}

