function PopUpModalDialog(strURL, winName, winWidth, winHeight, winTop, winLeft, winResizable, winScroll, winStatus, winHelp, winLocation, winMenu, winToolbar){
	if(window.showModalDialog){
		var features =
			'dialogWidth:'		+ winWidth + 'px' +
			';dialogHeight:'	+ winHeight + 'px' +
			';dialogTop='		+ winTop + 'px' +
			';dialogLeft='		+ winLeft + 'px' +
			';resizable:'		+ winResizable +
			';scrollbars:'		+ winScroll +
			';status:'			+ winStatus +
			';help:'			+ winHelp ;
		window.showModalDialog(strURL, winName, features);
	}else{
		var features =
			'width='			+ winWidth +
			',height='			+ winHeight +
			',top='				+ winTop +
			',left='			+ winLeft +
			',resizable='		+ winResizable +
			',scrollbars='		+ winScroll +
			',status='			+ winStatus +
			',location='		+ winLocation +
			',menubar='			+ winMenu +
			',toolbar='			+ winToolbar;
			',dependant=yes'
		window.open (strURL, winName, features);
	}
}
function PopUpModalWindowPG(){
	window.showModalDialog("RequestPastGuestNumber.aspx" , "" , "dialogHeight:400px;dialogWidth:650px;resizable:1;scrollbars:0;status:0;help:0;dialogTop=px;dialogLeft:px")
}
function PopUpModalWindowFromShip(){
	window.showModalDialog("EmailToFriend.aspx?From=FromShip" , "Email To a Friend" , "dialogHeight:400px;dialogWidth:500px;resizable:0;scrollbars:0;status:0;help:0;dialogTop=px;dialogLeft:px")
		
}
function PopUpModalWindowFromDestination(){
	window.showModalDialog("EmailToFriend.aspx?From=FromDestination" , "Email To a Friend" , "dialogHeight:400px;dialogWidth:500px;resizable:0;scrollbars:0;status:0;help:0;dialogTop=px;dialogLeft:px")			
}
function PopUpModalWindowFromItinerary(){
	window.showModalDialog("EmailToFriend.aspx?From=FromItinerary" , "Email To a Friend" , "dialogHeight:400px;dialogWidth:500px;resizable:0;scrollbars:0;status:0;help:0;dialogTop=px;dialogLeft:px")			
}
function PopUpModalWindowFromShoreTour(){
	window.showModalDialog("EmailToFriend.aspx?From=FromShoreTour" , "Email To a Friend" , "dialogHeight:400px;dialogWidth:500px;resizable:0;scrollbars:0;status:0;help:0;dialogTop=px;dialogLeft:px")			
}
function PopUpModalWindowFromConfirmation(){
	window.showModalDialog("EmailToFriend.aspx?From=FromConfirmation" , "Email To a Friend" , "dialogHeight:400px;dialogWidth:500px;resizable:0;scrollbars:0;status:0;help:0;dialogTop=px;dialogLeft:px")			
}
function PopUpModalWindowFromSpecials(){
	window.showModalDialog("EmailToFriend.aspx?From=FromSpecials" , "Email To a Friend" , "dialogHeight:400px;dialogWidth:500px;resizable:0;scrollbars:0;status:0;help:0;dialogTop=px;dialogLeft:px")			
}
function PopUpModalWindowAddPastGuest(){
	var PastGuestNumber	= 0;
	var ReturnVal = new Object();
	window.showModalDialog("AddPastGuestNumber.aspx?From=FromUpdateprofile.aspx" , ReturnVal , "dialogHeight:400px;dialogWidth:600px;resizable:0;scrollbars:0;status:0;help:0")			
	PastGuestNumber = ReturnVal.PastGuestNumber;
	if((PastGuestNumber != 0) && (PastGuestNumber != null)){
		document.frmTestPage.action = "TestPage.aspx?PastGuest=" + PastGuestNumber;
		document.frmTestPage.submit();
	}else if( PastGuestNumber = -1 ){
		document.location.href = "UpdateProfile.aspx"			
	}else if  (PastGuestNumber = -2 ){
		document.location.href = "MyProfile.aspx"
	}
}
function SetError(){
 	var Error = document.getElementById("lblError");
 	if(Error != null){
		Error.innerText = "";
	}
}
function CheckLength300Chars(oSrc, args){
	var TextMessage;
	TextMessage = args.Value;			
	args.IsValid = (TextMessage.length < 300);			
}
function PopUpWindow(PageName){
	window.open(PageName);
}

function PopUpWindow(PageName){
	var wind = window.open(PageName);
	wind.target = "_blank";
}
function RedirectTo(PageName){
	document.forms[0].action = PageName;
	document.forms[0].submit();			
}
/*
function ReloadTo(PageName){
	if ( (PageName == null) || (PageName == "") ) {
	}else{
		window.location.href = PageName;
	}		
}
*/
function RegularExpressionValidator(val, validationexpression) {	
    var value = val;    
    var rx = new RegExp(validationexpression);
    var matches = rx.exec(value);
    return (matches != null && value == matches[0]);
}
function ValidateZipCodeForUSAndCA (ZipCode, CountryCode){
	var IsValid = true;				
	var RegExpUS = "\\d{9}(-\\d{4})?|\\d{5}\\s\\d{4}|\\d{5}\\-\\d{4}|\\d{5}";
	var RegExpCA = "^[A-Za-z]\\d[A-Za-z]\\d[A-Za-z]\\d|^[A-Za-z]\\d[A-Za-z]-\\d[A-Za-z]\\d|^[A-Za-z]\\d[A-Za-z]\\s\\d[A-Za-z]\\d";			
	var ExpUS = new RegExp(RegExpUS);
	var ExpCA = new RegExp(RegExpCA);				
	
	if ( CountryCode == "US"){	
		IsValid = RegularExpressionValidator(ZipCode, RegExpUS);
	}else {
		if(ExpCA.exec(ZipCode) == null){
			IsValid = false;
		}
	}
	return (IsValid);
}

function std_OnChangeControl(srvCtl, rfvCtl, rfvCtl2)
{
    var lsrvCtl = document.getElementById(srvCtl);
    var lrfvCtl = document.getElementById(rfvCtl);
    var lrfvCtl2 = document.getElementById(rfvCtl2);
    
    if ((lsrvCtl.value != null) && (lsrvCtl.value != ""))
    {
        lsrvCtl.className = "LV_valid_field";
    }
            
    if (lrfvCtl != null)
    {
        lrfvCtl.style.display = "none";
    }
    
    if (lrfvCtl2 != null)
    {
        lrfvCtl2.style.display = "none";
    }
    
    std_OnDeactivateControl(srvCtl, rfvCtl, rfvCtl2);    
}

function std_OnActivateControl(srvCtl, rfvCtl, rfvCtl2)
{    
    var srvCtl = document.getElementById(srvCtl);
    var rfvCtl = document.getElementById(rfvCtl);
    var rfvCtl2 = document.getElementById(rfvCtl2);
    
    srvCtl.className = "";
    
    if (rfvCtl != null)
    {
        rfvCtl.style.display = "none";
    }
    
    if (rfvCtl2 != null)
    {
        rfvCtl2.style.display = "none";
    }
}

function std_OnDeactivateControl(srvCtl, rfvCtl, rfvCtl2)
{
    var lrfvCtl = document.getElementById(rfvCtl);
    var lrfvCtl2 = document.getElementById(rfvCtl2);
    var srvCtl = document.getElementById(srvCtl);

    if ((srvCtl.value != null) && (srvCtl.value != ""))
    {
        srvCtl.className = "LV_valid_field";
    }
    else
    {
        srvCtl.className = "";
    }

    if (lrfvCtl != null)
    {	        
        ValidatorValidate(lrfvCtl);
                
        lrfvCtl = document.getElementById(rfvCtl);
        
        if (lrfvCtl.style.display == "inline")
        {
            srvCtl.className = "LV_invalid_field";        
        }
        else
        {
            if (lrfvCtl2 != null)
            {
                ValidatorValidate(lrfvCtl2);
                lrfvCtl2 = document.getElementById(rfvCtl2);
                if (lrfvCtl2.style.display == "inline")
                {
                    srvCtl.className = "LV_invalid_field";
                }
            }
        }
    }
}


function verifyCardNumber(ccNumb, cType)
    {  
//    alert('from js '+ ccNumb + ' ' + cType);
        //Capitalize cardtype for consistency
        var cardType = cType.toUpperCase();             
        
        // Strip any non-digits (useful for credit card numbers with spaces and hyphens)
        var number = ccNumb.replace(/\D/g, '');        
        
        //Verify Card Number as per : 
                //1) Type of card
                //2) Mod10 validation
        if(verifyCardType(cardType,number))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

function verifyCardType(cardType, cardNumber)
    {
        if(cardType == "AMEX")
        {
             // AMEX -- 34 or 37 -- 15 length
            var regExp = new RegExp('^(34|37)');          
            if((cardNumber.match(regExp)) && cardNumber.length == 15) {
                if(Mod10Validation(cardType, cardNumber)) {
                    return true; }
                else {
                    return false; }
            }
            else {
                return false; }
        }
        else if(cardType == "VISA")
        {
            // VISA -- 4 -- 13 and 16 length
            var regExp = new RegExp('^(4)');
            if((cardNumber.match(regExp)) && (cardNumber.length == 13 || cardNumber.length == 16)) {
                if(Mod10Validation(cardType, cardNumber)) {
                    return true; }
                else {
                    return false; }
            }
            else {
                return false; }
        }
        else if(cardType == "MASTERCARD")
        {
            // MasterCard -- 51 through 55 -- 16 length 
            var regExp = new RegExp('^(51|52|53|54|55)');            
            if((cardNumber.match(regExp)) && cardNumber.length == 16) {
                    if(Mod10Validation(cardType, cardNumber)) {
                    return true; }
                else {
                    return false; }
            }
            else {
                return false; }
        }
        else if(cardType == "DINNERSCLUB" || cardType == "CARTE BLANCHE")
        {
            // Diners Club -- 300-305, 36 or 38 -- 14 length
             var regExp = new RegExp('^(300|301|302|303|304|305|36|38)');
            if((cardNumber.match(regExp)) && cardNumber.length == 14) {
                    if(Mod10Validation(cardType, cardNumber)) {
                    return true; }
                else {
                    return false; }
            }
            else {
                return false; }
        }
        else if(cardType == "ENROUTE")
        {
            // enRoute -- 2014,2149 -- 15 length
            var regExp = new RegExp('^(2014|2149)');
            if((cardNumber.match(regExp)) && cardNumber.length == 15) {                    
                    if(Mod10Validation(cardType, cardNumber)) {
                    return true; }
                else {
                    return false; }
            }
            else {
                return false; }
        }
        else if(cardType == "DISCOVER")
        {
            // Discover -- 6011 -- 16 length
            var regExp = new RegExp('^(6011)');
            if((cardNumber.match(regExp)) && cardNumber.length == 16) {
                    if(Mod10Validation(cardType, cardNumber)) {
                    return true; }
                else {
                    return false; }
            }
            else {
                return false; }
        }
        else if(cardType == "JCB")
        {
            //JCB -- 3 -- 16 length
            //-------2131, 1800 -- 15 length
            var regExp1 = new RegExp('^(3)');
            var regExp2 = new RegExp('^(2131|1800)');
            if(((cardNumber.match(regExp1)) && cardNumber.length == 16) ||
                ((cardNumber.match(regExp2)) && cardNumber.length == 15)) {
                    if(Mod10Validation(cardType, cardNumber)) {
                    return true; }
                else {
                    return false; }
            }
            else {
                return false; }
        }
        else
        {
            return false;
        }
    }

function Mod10Validation(cardType, number)
    {
      // Set the string length and parity
      var number_length=number.length;
      var parity=number_length % 2;

      // Loop through each digit and do the maths
      var total=0;
      for (i=0; i < number_length; i++) {
            //Fetch current digit
            var digit=number.charAt(i);   
            // Multiply alternate digits by two
            if (i % 2 == parity) {
                digit=digit * 2;
                // If the sum is two digits, add them together (in effect)
                if (digit > 9) {
                    digit=digit - 9;
                }
            }
            // Total up the digits
            total = total + parseInt(digit);
      }

      // If the total mod 10 equals 0, the number is valid
      if (total % 10 == 0) {
        return true;
      } 
      else {       
        return false;
      }
    }
    
function ValidateCreditCardExpiry(expMonth, expYear)
    {
        
//        alert('entered common.js for validate card expiry');
        
        //Set expiry date as last day of the month depending upon the month value
        var expDate = 30;
        if(expMonth == 1 || expMonth == 3 || expMonth == 5 || expMonth == 7 || expMonth == 8 || expMonth == 10 || expMonth == 12)
        {
            expDate = 31;
        }
        else if(expMonth == 4 || expMonth == 6 || expMonth == 9 || expMonth == 11)
        {
            expDate = 30;
        }
        else
        {
            expDate = 28;
        }

        //Fetch current Date
        var today = new Date();
        
        //Set Expiry Date
        var expiryDate = new Date();
        expiryDate.setFullYear(expYear,expMonth-1, expDate);
//       alert(expiryDate + '   ' + today);
                
        //Verify expiryDate is later than today's date                
        if(expiryDate >= today) {
            return true;}
        else {
            return false; }
    }
    
function isNotEmpty(value)
{
    if (value != null && value.replace(/^\s*|\s*$/g,'').length > 0)            
        return true;                       
    else 
        return false;                       
}