function validate(){
		with(document.frmRes){			  
			         
			if(fnIsEmpty(txt_first_name.value)){
				
				if(language == 'spanish')
				{								
					alert('El nombre no puede estar vac'+document.getElementById('spanish_i').innerHTML+'o.');
				}
				else
				{
					alert('First name should not be blank.');
				}
				txt_first_name.focus();
				return false;
			}

			if(fnIsEmpty(txt_last_name.value)){
				
				if(language == 'spanish')
				{										
					alert('El apellido no puede estar'+document.getElementById('spanish_i').innerHTML+'o.');
				}
				else
				{
					alert('Last name should not be blank.');
				}	
				txt_last_name.focus();
				return false;
			}
			
			if(fnIsEmpty(txt_addressline1.value)){
				
				if(language == 'spanish')
				{					
										
					alert('La l'+document.getElementById('spanish_i').innerHTML+'nea 1 de la direcci'+document.getElementById('spanish_o').innerHTML+'n no puede estar vac'+document.getElementById('spanish_i').innerHTML+'a.');
				}
				else
				{
					alert('Address line 1 should not be blank.');
				}		
				
				txt_addressline1.focus();
				return false;
			}
			if(fnIsEmpty(txt_city.value)){
				
				if(language == 'spanish')
				{					
										
					alert('Por favor ingrese el nombre de la ciudad.');
				}
				else
				{
					alert('Please city enter name.');
				}
				
				txt_city.focus();
				return false;
			}
			
			if(fnIsEmpty(txt_state.value)){
				
				if(language == 'spanish')
				{					
										
					alert('El estado no puede estar vac'+document.getElementById('spanish_i').innerHTML+'o.');
				}
				else
				{
					alert('State should not blank.');
				}	
				txt_state.focus();
				return false;
			}
			if(lstCountry.value==0){
				
				if(language == 'spanish')
				{										
					alert('El pa'+document.getElementById('spanish_i').innerHTML+'s no puede estar vac'+document.getElementById('spanish_i').innerHTML+'o.');
				}
				else
				{
					alert('Country should not be blank.');
				}	
				lstCountry.focus();
				return false;
			}
			if(fnIsEmpty(txt_zip.value)){
				
				if(language == 'spanish')
				{					
										
					alert('El c'+document.getElementById('spanish_o').innerHTML+'digo postal no puede estar vac'+document.getElementById('spanish_i').innerHTML+'o.');
				}
				else
				{
					alert('Zip should not be blank.');
				}	
				txt_zip.focus();
				return false;
			}

			if(fnIsEmpty(txt_home_phone.value) && fnIsEmpty(txt_cell_phone.value) && fnIsEmpty(txt_work_phone.value) )
			{
				
				if(language == 'spanish')
				{					
										
					alert('Ingrese al menos un n'+document.getElementById('spanish_u').innerHTML+'mero telef'+document.getElementById('spanish_o').innerHTML+'nico.');
				}
				else
				{
					alert('Enter at least one phone number.');
				}	
				
				return false;
			}

			if(fnIsEmpty(txt_email.value)){
				
				if(language == 'spanish')
				{					
										
					alert('El email no puede estar vac'+document.getElementById('spanish_i').innerHTML+'o.');
				}
				else
				{
					alert('Email should not be blank.');
				}						
				txt_email.focus();
				return false;
			}
			if(!fnValidEmail(txt_email.value)){
				alert('Please enter a valid address.');
				txt_email.focus();
				return false;
			}
			if(!fnIsEmpty(txt_email2.value))
			{
				if(!fnValidEmail(txt_email2.value)){
					if(language == 'spanish')
					{					
											
						alert('Por favor ingrese una direcci'+document.getElementById('spanish_o').innerHTML+'n v'+document.getElementById('spanish_a').innerHTML+'lida.');
					}
					else
					{
						alert('Please enter a valid address.');
					}	
					txt_email2.focus();
					txt_email2.select();
					return false;
				}
			}
            
            var txt_value = txt_reference.value;
			if(fnIsEmpty(txt_value)) {
				
				if(language == 'spanish')
				{					
										
					alert("Por favor complete \'C"+document.getElementById('spanish_o').innerHTML.value+"mo se enter"+document.getElementById('spanish_o').innerHTML.value+" de nosotros?\'");
				}
				else
				{
					alert("Please Fill \'How did you hear about us?\'.");
				}	
				txt_reference.focus();
				return false;
			}
			
			
			if(!fnValidateSpecialCharacters(txt_value))
			{
				if(language == 'spanish')
				{					
										
					alert(" Los Caracteres Especiales no son permitidos en el campo, \'C"+document.getElementById('spanish_o').innerHTML.value+"mo se enter"+document.getElementById('spanish_o').innerHTML.value+" de nosotros?\'");
				}
				else
				{
					alert("Special Characters are not allowed in the field, 'How did you hear about us?'.");
				}
				
				txt_reference.focus();
				return false;
			}
					
			var len = document.frmRes.elements.length;
			var temp=0;
			var selected_credit_no = 0;
			for (var i = 0; i < len; i++) {
			if (document.frmRes.elements[i].type=="radio" && document.frmRes.elements[i].name=="rad_credit_card" ) {		
				if(document.frmRes.elements[i].checked == true) 
					{
						selected_credit_no = document.frmRes.elements[i].value;
						temp = 1;		
					}
				}			
			}

			if (temp==0) {
				
				if(language == 'spanish')
				{					
										
					alert('Por favor seleccione al menos una tarjeta.');
				}
				else
				{
					
					alert('Please select at least one card.');
				}	
				return false;
			}

			if(fnIsEmpty(txt_credit_card.value)){
				
				if(language == 'spanish')
				{					
										
					alert('La tarjeta de cr'+document.getElementById('spanish_e').innerHTML+'dito no puede estar vac'+document.getElementById('spanish_i').innerHTML+'a.');
				}
				else
				{
					alert('Credit Card should not be blank.');
				}	
				txt_credit_card.focus();
				return false;
			}
	

			if(lstMonth.value==0){
				if(language == 'spanish')
				{					
										
					alert('Por favor seleccione la fecha de Caducidad.');
				}
				else
				{
					
					alert('Please select Expiry date');
				}	
				lstMonth.focus();
				return false;
			}
			if(lstYear.value==0){
				if(language == 'spanish')
				{					
										
					alert('Por favor seleccione la fecha de Caducidad.');
				}
				else
				{
					
					alert('Please select Expiry date');
				}
				lstYear.focus();
				return false;
			}

			var cardno = txt_credit_card.value;
			var exp_year = lstYear.value;
			var exp_month = lstMonth.value;
			if(exp_month < 10)	{
				exp_month = 0+lstMonth.value;
			}

			flag = validateCard(cardno,selected_credit_no,exp_month,exp_year);

			if(flag==false)
			{
				return false;
			}

			if(chkTerm.checked==false)
			{
				if(language == 'spanish')
				{					
										
					alert('Por favor lea los T'+document.getElementById('spanish_e').innerHTML+'rminos & Condiciones.');
				}
				else
				{
					alert("Please Accept Terms & Conditions.");
				}	
				return false;
			}
		}
}
function IsInteger(){   
	
	
   if((window.event.keyCode<48) || (window.event.keyCode>57) )
   { window.event.keyCode=0; }		
}

function isCreditCard(st) {
  if (st.length > 19)
	return (false);

  sum = 0; mul = 1; l = st.length;
  for (i = 0; i < l; i++) {
	digit = st.substring(l-i-1,l-i);
	tproduct = parseInt(digit ,10)*mul;
	if (tproduct >= 10)
	  sum += (tproduct % 10) + 1;
	else
	  sum += tproduct;
	if (mul == 1)
	  mul++;
	else
	  mul--;
  }
  if ((sum % 10) == 0)
	return (true);
  else
	return (false);
}


function iscc()
{
	val=document.frmReservation.txtCCNumber.value;
	if(!isCreditCard(val))
	{
		document.frmReservation.txtCCNumber.focus();
		document.frmReservation.txtCCNumber.select();
	}
}

function isVisa(cc)
{
  if (((cc.length == 16) || (cc.length == 13)) &&
	  (cc.substring(0,1) == 4))
	return isCreditCard(cc);
  return false;
}


function isMasterCard(cc)
{
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 16) && (firstdig == 5) &&
	  ((seconddig >= 1) && (seconddig <= 5)))
	return isCreditCard(cc);
  return false;

}



function CalAmount(rid)
{
	if(rid==1) {
		document.frmRes.txt_deposit.value=parseFloat(document.frmRes.txt_rental_rate_tax.value);
		document.frmRes.txt_bal_due_checkin.value="0.00";
		if(document.frmRes.hidCurrency.value!='USD')
		{
        document.frmRes.txt_deposit_home.value=parseFloat(document.frmRes.txt_rental_rate_tax_home.value);
		document.frmRes.txt_bal_due_checkin_home.value="0.00";
		}
	}

	if(rid==2){
		document.frmRes.txt_deposit.value=(parseFloat(document.frmRes.txt_rental_rate.value)* parseFloat(document.frmRes.hidMinimumDays.value))/100;		document.frmRes.txt_bal_due_checkin.value=parseFloat(document.frmRes.txt_rental_rate_tax.value)-parseFloat(document.frmRes.txt_deposit.value);
        if(document.frmRes.hidCurrency.value!='USD')
		{
		document.frmRes.txt_deposit_home.value=(parseFloat(document.frmRes.txt_rental_rate_home.value)* parseFloat(document.frmRes.hidMinimumDays.value))/100;		document.frmRes.txt_bal_due_checkin_home.value=parseFloat(document.frmRes.txt_rental_rate_tax_home.value)-parseFloat(document.frmRes.txt_deposit_home.value);
		}

	}

	if(rid==3) {
		document.frmRes.txt_deposit.value=parseFloat(document.frmRes.hidMinimumNight_usd.value);		document.frmRes.txt_bal_due_checkin.value=parseFloat(document.frmRes.txt_rental_rate_tax.value)-parseFloat(document.frmRes.txt_deposit.value);
		if(document.frmRes.hidCurrency.value!='USD')
		{
		document.frmRes.txt_deposit_home.value=parseFloat(document.frmRes.hidMinimumNight.value);		document.frmRes.txt_bal_due_checkin_home.value=parseFloat(document.frmRes.txt_rental_rate_tax_home.value)-parseFloat(document.frmRes.txt_deposit_home.value);
		}

	}

	if(rid==4){
		document.frmRes.txt_deposit.value=parseFloat(document.frmRes.hidMinimumAmount_usd.value);		document.frmRes.txt_bal_due_checkin.value=parseFloat(document.frmRes.txt_rental_rate_tax.value)-parseFloat(document.frmRes.txt_deposit.value);
		if(document.frmRes.hidCurrency.value!='USD')
		{
		document.frmRes.txt_deposit_home.value=parseFloat(document.frmRes.hidMinimumAmount.value);		document.frmRes.txt_bal_due_checkin_home.value=parseFloat(document.frmRes.txt_rental_rate_tax_home.value)-parseFloat(document.frmRes.txt_deposit_home.value);
		}

	}
}



/* credit card validations */
function mod10( cardNumber ) { // LUHN Formula for validation of credit card numbers.
	var ar = new Array( cardNumber.length );
	var i = 0,sum = 0;


    	for( i = 0; i < cardNumber.length; ++i ) {
    		ar[i] = parseInt(cardNumber.charAt(i));
    	}
    	for( i = ar.length -2; i >= 0; i-=2 ) { // you have to start from the right, and work back.
    		ar[i] *= 2;							 // every second digit starting with the right most (check digit)
    		if( ar[i] > 9 ) ar[i]-=9;			 // will be doubled, and summed with the skipped digits.
    	}										 // if the double digit is > 9, ADD those individual digits together 


		for( i = 0; i < ar.length; ++i ) {
			sum += ar[i];						 // if the sum is divisible by 10 mod10 succeeds
		}
		return (((sum%10)==0)?true:false);	 	
}


function expired( month, year ) {
	var now = new Date();							// this function is designed to be Y2K compliant.
	//year = '20'+year;
	var expiresIn = new Date(year,month,0,0,0);		// create an expired on date object with valid thru expiration date
	expiresIn.setMonth(expiresIn.getMonth()+1);		// adjust the month, to first day, hour, minute & second of expired month
	if( now.getTime() < expiresIn.getTime() ) return false;
	return true;									// then we get the miliseconds, and do a long integer comparison
    }


function validateCard(cardNumber,cardType,cardMonth,cardYear) {
	if( cardNumber.length == 0 ) {						//most of these checks are self explanitory
		alert("Please enter a valid card number.");
		return false;				
	}
	for( var i = 0; i < cardNumber.length; ++i ) {		// make sure the number is all digits.. (by design)
		var c = cardNumber.charAt(i);


			if( c < '0' || c > '9' ) {
				alert("Please enter a valid card number. Use only digits. do not use spaces or hyphens.");
				return false;
			}
		}
		var length = cardNumber.length;			//perform card specific length and prefix tests
		switch(cardType) 
		{		
			case "1": 
					if( length != 16 ) {
						alert("Please enter a valid MasterCard number.");
						return false;
					}
					var prefix = parseInt( cardNumber.substring(0,2));
					if( prefix < 51 || prefix > 55) {
						alert("Please enter a valid MasterCard Card number.");
						return false;
					}
					break;   
			case "2":
					if( length != 16 && length != 13 ) {
						alert("Please enter a valid Visa Card number.");
						return false;
					}
					var prefix = parseInt( cardNumber.substring(0,1));
					if( prefix != 4 ) {
						alert("Please enter a valid Visa Card number.");
						return false;
					}
					break;
			case "3": 
					if( length != 15 ) {
						alert("Please enter a valid American Express Card number.");
						return false;
					}
					var prefix = parseInt( cardNumber.substring(0,2));
					if( prefix != 34 && prefix != 37 ) {
						alert("Please enter a valid American Express Card number.");
						return false;
					}
					break;
			case "4":
					if( length != 16 ) {
						alert("Please enter a valid Discover Card number.");
						return false;
					}
					var prefix = parseInt( cardNumber.substring(0,4));

					if( prefix != 6011 ) {
						alert("Please enter a valid Discover Card number.");
						return false;
					}
					break;
		}
		/*if( !mod10( cardNumber ) ) { 		// run the check digit algorithm
			alert("This is not a valid credit card number.");
			return false;
		}*/
		if( expired( cardMonth, cardYear ) ) {							// check if entered date is already expired.
			alert("The expiration date you have entered would make this card invalid.");
			return false;
		}		
		return true; // at this point card has not been proven to be invalid
}

/*------------------------*/


function ShowTerms(cid)
{
		
	
	var windowName = "";
		var features =
		'width='        + '600'+
		',height='      + '575'+
		',directories=' + 'no' +
		',location='    + 'no' +
		',menubar='     + 'no' +
		',scrollbars='  + 'yes'+
		',status='      + 'no' +
		',toolbar='     + 'no' +
		',resizable='   + 'yes' +
		',left='        + '70'+
		',top='			+ '25';
				
		window.open('https://www.allvacationreservations.com/terms.php?cid='+cid,windowName,features);
		
}