function checkage(){
	var total = document.getElementById('infoRC').value;
	var count = 1;
	var msg = "";
	var docheck = true;
    do{
		if(count == 1){
			monthname = "birthmonth";	
			dayname = "birthday";	
			yearname = "birthyear";	
		}else{
			monthname = "birthmonth"+count;
			dayname = "birthday"+count;	
			yearname = "birthyear"+count;
		}
		month = document.passengers[monthname].value;
		day = document.passengers[dayname].value;
		year = document.passengers[yearname].value;
		checkme = displayage(year, month, day, "years", 0, "rounddown");
		if((checkme <=17)&&(docheck)){
			msg = 'At least one passsenger has to be 18+ in order to book a cabin. Please verify your infromation and try again';	
		}else{
			docheck = false; 
		}
		count ++;
	}while(count <= total);
	if(msg != ""){
		alert(msg);
		return false;
	}else{
		window.passengers.submit();
		xajax.$('actionbutton').innerHTML="<img src=\"/images/ajax-loader.gif\"> Processing... please wait";
		return true;	
	}
}

function validate_form(theform){
	var counter;
	var formElements = theform.elements;
	var proceed;
	var msg = '';
	var ccmsg = '';
	var extra = '';
	
	//To prevent hit submit button once clicked.
	var btnsubmit;
	if(theform.id == 'payment')
	{
		btnsubmit = document.getElementById('submitbutton');
		btnsubmit.disabled = true;
	}
	
	for (i=0; i<formElements.length; i++) {
	   var clName = formElements[i].className;
	   //alert("Class: "+clName+" "+formElements[i].type+" "+formElements[i].name);
	   if(clName == "required"){
		  myName = formElements[i].name;
		  myType = formElements[i].type;
		  switch(myType){
		     case 'undefined': msg +="Error detected in the form"; break;
			 case 'radio': 
			 radios = theform[myName].length-1;
				 myOption = -1;
				 for (r=radios; r > -1; r--) {
					 if (theform[myName][r].checked) {
					 	myOption = r;
					    //i = myOption;
					 }
				     //i++;
				 }
				 
				 if (myOption == -1) {
				 	changeClass(myName, 'alertMe');
					//alert("Id: "+theform.id);
					if(theform.id == "passengers"){
						msg = 'Please make sure all required fields are properly completed. Errors were found and have been marked in red.';										
					}
					//blankquestions += ","+document[theform][myName];
				 } else {
					changeClass(myName, 'preField');
				 }
				 
				 //i = i-1; //subtract one from the i variable used on the for loop to compensate for the i++ already found within the for loop
				          //if we do not subtract 1 then we will end up skipping one of the inputs
			 break;
			 case 'checkbox':
				 boxes = theform[myName].length;
				 
				 txt = ""
				 for (c = 0; c < boxes; c++) {
					if (theform[myName][c].checked) {
					 txt = "at least one checked";
					 //i = boxes;
					}
					//i++;
				 }
				 var e = myName.indexOf("[]");
				  if(e >=1){
					 myName =  myName.replace("[]","");
				  }
				 if (txt == "") {
				   changeClass(myName, 'alertMe');
				   msg = 'Please make sure all required fields are properly completed. Errors were found and have been marked in red.';
				 } else {
				   changeClass(myName, 'preField');
				 }
				
				// i = i-1;
			 break;
			 case 'select':
			    if (theform[myName].selectedIndex == 0) {
					 s = myName.replace("_"," ");
					 msg += s;
					 changeClass(myName, 'alertMe');
					 msg = 'Please make sure all required fields are properly completed. Errors were found and have been marked in red.';
				  }else{
					 changeClass(myName, 'preField');
				  }
			 break;
			 default:
				 if (theform[myName].value == '') {
					 s = myName.replace("_"," ");
					 msg += s;
					 changeClass(myName, 'alertMe');
					 msg = 'Please make sure all required fields are properly completed. Errors were found and have been marked in red.';
				  }else{
					 if(myName == "repassword"){ 
						if(theform.password.value != theform.repassword.value){
							msg ="The passwords entered didn't match";
							changeClass('password', 'alertMe')
							changeClass('repassword', 'alertMe')
						}
					 }else{
						 if(myName == "creditcardnumber"){
							 ccmsg = validateCard(theform[myName].value);
							 msg = "Credit Card Check";
						 }else{
					 		changeClass(myName, 'preField');
						 }
					 }
				  }
			 break;    
		  }
		  
	   }
	}
	if (msg != ''){
		switch(theform.id){
		  case "payment":
		     if(!ccmsg){
				if(msg != "Credit Card Check"){ 
					alert(msg);
				}
				btnsubmit.disabled = false;		//To enable if any error in the input
				return false;
			 }else{
				if(msg == "Credit Card Check"){  
					return true;
				}else{
					alert(msg);
				   btnsubmit.disabled = false;	//To enable if any error in the input
				   return false;
				}
			 }
		  break; 
		  default:
			if(msg != ""){
				alert(msg);
			}
			mylegend = document.getElementById('thelegend');
			if(mylegend){
				alert("Message: "+msg+" "+ccmsg);
				mylegend.innerHTML = "Please fix the items in red";
			}
				 xajax.$('actionbutton').innerHTML="<input type=\"submit\" name=\"submitbutton\" id=\"submitbutton\" value=\"Submit\" class=\"primaryAction\" /> <input type=\"reset\" name=\"resetbutton\" id=\"resetbutton\" value=\"Reset\" class=\"secondaryAction\" />";
				 return false;
	   }
	}else{
	   switch(theform.id){
		  case "passengers":
		     checkage();
			 return false;
		  break; 
		  default:
			 xajax.$('actionbutton').innerHTML="<img src=\"/images/ajax-loader.gif\"> Processing... please wait";
		     return true
	   }
	}
}

function displayage(yr, mon, day, unit, decimal, round){
	
	var one_day=1000*60*60*24
	var one_month=1000*60*60*24*30
	var one_year=1000*60*60*24*30*12
	
	today=new Date()
	var pastdate=new Date(yr, mon-1, day)
	
	var countunit=unit
	var decimals=decimal
	var rounding=round
	
	var age
	
	finalunit=(countunit=="days")? one_day : (countunit=="months")? one_month : one_year
	decimals=(decimals<=0)? 1 : decimals*10
	
	if (unit!="years"){
		if (rounding=="rounddown"){
			age = (Math.floor((today.getTime()-pastdate.getTime())/(finalunit)*decimals)/decimals+" "+countunit)
		}else{
			age = (Math.ceil((today.getTime()-pastdate.getTime())/(finalunit)*decimals)/decimals+" "+countunit)
		}
	}else{
		yearspast=today.getFullYear()-yr-1
		tail=(today.getMonth()>mon-1 || today.getMonth()==mon-1 && today.getDate()>=day)? 1 : 0
		pastdate.setFullYear(today.getFullYear())
		pastdate2=new Date(today.getFullYear()-1, mon-1, day)
		tail=(tail==1)? tail+Math.floor((today.getTime()-pastdate.getTime())/(finalunit)*decimals)/decimals : Math.floor((today.getTime()-pastdate2.getTime())/(finalunit)*decimals)/decimals
		age = (yearspast+tail);
	}
	return age;
}
	
function changeClass(who, which){
   pos = who.indexOf("-");
   len = who.length;
   if(pos >=1){
	   newidentitiy = who.substr(0, pos);
	   extra = who.substr(pos, len);
	   who = newidentitiy+"_label"+extra;
   }else{
	  who = who+'_label'   
   }
   //alert(who+" "+which);
   identity=document.getElementById(who);
   if(identity){
      identity.className=which;
   }
} 


function moveOnMax(field,nextFieldID){
  if(field.value.length >= field.maxLength){
    document.getElementById(nextFieldID).focus();
  }
}



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


	for( i = 0; i < Credit_Card_Number.length; ++i ) {
		ar[i] = parseInt(Credit_Card_Number.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.
	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(Credit_Card_Number,Credit_Card_Type,Expiration_Month,Expiration_Year) {
	if( Credit_Card_Number.length == 0 ) {						//most of these checks are self explanitory
		alert("Please enter a valid card number.");
		changeClass("creditcardnumber", 'alertMe');
		return false;				
	}
	for( var i = 0; i < Credit_Card_Number.length; ++i ) {		// make sure the number is all digits.. (by design)
		var c = Credit_Card_Number.charAt(i);


			if( c < '0' || c > '9' ) {
				alert("Please enter a valid card number. Use only digits. do not use spaces or hyphens.");
				changeClass("creditcardnumber", 'alertMe');
				return false;
			}
		}
		var length = Credit_Card_Number.length;			//perform card specific length and prefix tests


	switch( Credit_Card_Type ) {
		case 'American Express':
			if( length != 15 ) {
				alert("Please enter a valid American Express Card number.");
				changeClass("creditcardnumber", 'alertMe');
				return;
			}
			var prefix = parseInt( Credit_Card_Number.substring(0,2));
	
	
			if( prefix != 34 && prefix != 37 ) {
				alert("Please enter a valid American Express Card number.");
				changeClass("creditcardnumber", 'alertMe');
				return;
			}
		break;
		
		case 'Discover':
			if( length != 16 ) {
				alert("Please enter a valid Discover Card number.");
				changeClass("creditcardnumber", 'alertMe');
				return;
			}
			var prefix = parseInt( Credit_Card_Number.substring(0,4));
	
	
			if( prefix != 6011 ) {
				alert("Please enter a valid Discover Card number.");
				changeClass("creditcardnumber", 'alertMe');
				return;
			}
		break;
		
		case 'MasterCard':
			if( length != 16 ) {
				alert("Please enter a valid MasterCard number.");
				changeClass("creditcardnumber", 'alertMe');
				return;
			}
			var prefix = parseInt( Credit_Card_Number.substring(0,2));
	
	
			if( prefix < 51 || prefix > 55) {
				alert("Please enter a valid MasterCard Card number.");
				changeClass("creditcardnumber", 'alertMe');
				return;
			}
		break;
		case 'Visa':
			if( length != 16 && length != 13 ) {
				alert("Please enter a valid Visa Card number.");
				changeClass("creditcardnumber", 'alertMe');
				return;
			}
			var prefix = parseInt( Credit_Card_Number.substring(0,1));
	
			if( prefix != 4 ) {
				alert("Please enter a valid Visa Card number.");
				changeClass("creditcardnumber", 'alertMe');
				return;
			}
		break;
	}
	if( !mod10( Credit_Card_Number ) ) { 		// run the check digit algorithm
		alert("Sorry! this is not a valid credit card number.");
		changeClass("creditcardnumber", 'alertMe');
		return false;
	}else{
		return true; // at this point card has not been proven to be invalid
	}
}
//-->