/*
This is the Universal Form Validation Script. In order to use this script
you must pass one variable to the function. the variable is the form id
that contains the elements you want to validate.

There are support for the following type of input fields:
	
	1)-Checks text fields for NULL values
	2)-Checks Radio Buttons for at least one option chosen
	3)-Checks email address for Valid Email address
	4)-Checks check boxes for checked value
	5)-Checks Phone numbers to follow the US phone Standard of (555)555-5555
	6)-Checks Zip codes for the 5 digit, number only verification

Make Sure to setup your form input values like the following examples:

	Text Fields-		<input type="text" name="textname" id="textname" title="Required Field" />
	Radio Buttons-		<input name="radiobutton" type="radio" id="radio" value="1"  title="Required Field" />
	Email Fields-		<input type="text" name="textfield10" id="textfield10" title="Required Email Field" />
	Check Boxes-		<input type="checkbox" name="checkbox" id="checkbox" value="yes" title="Required Field" />
	Phone Field-		<input type="text" name="phonefield" id="phonefield" title="Required Phone Field" />
	Zip Field-			<input type="text" name="zipfield" id="zipfield" title="Required Zip Field" />
	
	*The most important thing to remember is that the type and the title are case sensitive. So Please watch your Spelling!
	
You are able to have multiple required email fields as well as multiple radio groups. There is currently no support for list box validation. That is something that will have to be done seperately.

There is one limitation to the Radio Button portion of the script. If you are building the form for IE, then it is very important that you do not put any form elements inbetween the radio buttons (including hidden fields). For the most part this is not usually a problem, but just a caution statement just incase.

*/

function testform(form){
	var currradio = "";
	var setcounter=0;
	var nullerror=0; 												
	var checkerror=0;
	var emailvalid=0;
	var emailcount=0;
	var radiocount=0;
	var radiocounter=0;
	var zipcounter=0;
	var phonecounter=0;
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var phonefilter = /^\([1-9]\d{2}\)\s?\d{3}\-\d{4}$/;
	var zipfilter = /([0-9]{5})/;
	var errorstr ="Form Validation Not Passed \n";
	var x=document.getElementById(form); 
	var itemlist = new Array();
		itemlist[0]="item1_name";
		itemlist[1]="item2_name";
		itemlist[2]="item3_name";
		itemlist[3]="item4_name";

	if(document.getElementById("billingAdd").checked==true){
	 	var checked=true;
	 }else{
	 	var checked=false;
	 }

	for (var i=0;i<x.length;i++){ 									
		if (x.elements[i].type=="text"){
			if (x.elements[i].title=="Required Field"){ 			
				var	elementtemp = x.elements[i].value; 				
				switch(x.elements[i].name){
					case "Billfname":
					  	if(checked){
					  		if(elementtemp==null||elementtemp==""){  			
								x.elements[i].style.backgroundColor="#FFFF00"; 	
								nullerror=nullerror+1;
						  	}
						}
					  	break;    
					case "Billlname":
					  	if(checked){
					  		if(elementtemp==null||elementtemp==""){  			
								x.elements[i].style.backgroundColor="#FFFF00"; 	
								nullerror=nullerror+1;
						  	}
						}
					  	break;
					case "Billaddress1":
						if(checked){
					  		if(elementtemp==null||elementtemp==""){  			
								x.elements[i].style.backgroundColor="#FFFF00"; 	
								nullerror=nullerror+1;
						  	}
						}
						break;
					case "Billcity":
						if(checked){
					  		if(elementtemp==null||elementtemp==""){  			
								x.elements[i].style.backgroundColor="#FFFF00"; 	
								nullerror=nullerror+1;
						  	}
						}
						break;
					case "Billstate":
						if(checked){
					  		if(elementtemp==null||elementtemp==""){  			
								x.elements[i].style.backgroundColor="#FFFF00"; 	
								nullerror=nullerror+1;
						  	}
						}
						break;
					case "Billzip":
						if(checked){
					  		if(elementtemp==null||elementtemp==""){  			
								x.elements[i].style.backgroundColor="#FFFF00"; 	
								nullerror=nullerror+1;
						  	}
						}
						break;
					default:
					  	if(elementtemp==null||elementtemp==""){  			
							x.elements[i].style.backgroundColor="#FFFF00"; 	
							nullerror=nullerror+1;
					  	}
				}
			}

			if(x.elements[i].title=="Required Email Field"){
				emailcount=emailcount+1;
				if(x.elements[i].value==null||x.elements[i].value==""){
					x.elements[i].style.backgroundColor="#FFFF00";
					nullerror=nullerror+1;
				}else{
					var email =x.elements[i].value;
					if (email.match(filter)){
						emailvalid=emailvalid+1;
					 }else{
					 	x.elements[i].style.backgroundColor="#FFFF00";
					 }
				}
				
			}
			
			if (x.elements[i].title=="Required Zip Field"){
				if(x.elements[i].value==null||x.elements[i].value==""){
					x.elements[i].style.backgroundColor="#FFFF00";
					nullerror=nullerror+1;
				}else{
					var zip =x.elements[i].value;
					if (zip.match(zipfilter)){
						x.elements[i].style.backgroundColor="#FFFFFF";
					}else{
						zipcounter=zipcounter+1;
					 	x.elements[i].style.backgroundColor="#FFFF00";
					}
				}
			}
			
			if (x.elements[i].title=="Required Phone Field"){
				if(x.elements[i].value==null||x.elements[i].value==""){
					x.elements[i].style.backgroundColor="#FFFF00";
					nullerror=nullerror+1;
				}else{
					var phone =x.elements[i].value;
					if (phone.match(phonefilter)){
						x.elements[i].style.backgroundColor="#FFFFFF";
					}else{
						phonecounter=phonecounter+1;
					 	x.elements[i].style.backgroundColor="#FFFF00";
					}
				}
			}
		}
		
		if (x.elements[i].type=="radio"&&x.elements[i].title=="Required Field"){
			if (currradio!=x.elements[i].name){
				currradio = x.elements[i].name;
				radiocount=radiocount+1;
				var radioarray = document.getElementsByName(x.elements[i].name);
				if(navigator.appName=="Microsoft Internet Explorer"){
					var loopamount=radioarray.length-1;
					for (z=0;z<=loopamount;z++){
						if (x.elements[i].checked==true){
							radiocounter=radiocounter+1;
						}
						i=i+1;
					}
				}else{
					for (radio in radioarray){
						if(radioarray[radio].checked==true){
							radiocounter=radiocounter+1;
						}
					}
				}
			}
		}
		
		if (x.elements[i].type=="checkbox"){
			if (x.elements[i].title=="Required Field"){
				if(x.elements[i].checked==false){
					checkerror=checkerror+1;
				}
			}
		}
		
		var elel = x.length-1;
		var itemcount=0;
		var itemnull=0;
		if (i==elel){
			for (s in itemlist){
				itemcount=itemcount+1;
				if(document.getElementById(itemlist[s]).value==null||document.getElementById(itemlist[s]).value==""){
					itemnull=itemnull+1;
				}
			}
			if(document.getElementById("cc_exp_month").value=="00"||document.getElementById("cc_exp_year").value=="year"){
				errorstr=errorstr+"\n \n Please Enter the Credit Card Expiration Date.";
				nullerror=nullerror+1;
			}
			
			if(itemcount==itemnull){
				errorstr=errorstr+"\n \n You Must Enter At Least One Item.";
				nullerror=nullerror+1;
			}
		}
  	}
	
	if (nullerror>=1||checkerror>=1||emailvalid<emailcount||radiocount!=radiocounter||zipcounter>=1||phonecounter>=1){
		if (nullerror>=1) errorstr=errorstr+"\n \n Required Input Fields Can Not Be Left Blank.";
		if (checkerror>=1) errorstr=errorstr+"\n \n Required Check Boxes Can Not Be Left Blank.";
		if (emailvalid<emailcount) errorstr=errorstr+"\n \n Please Enter A Valid Email Address.";
		if (radiocount!=radiocounter) errorstr=errorstr+"\n \n Please Select At Least One Required Options.";
		if (zipcounter>=1) errorstr=errorstr+"\n \n Please Enter A Valid Zip Code.";
		if (phonecounter>=1) errorstr=errorstr+"\n \n Please Enter A Valid Phone Number. example: (555)555-5555";
		errorstr=errorstr+"\n \n";
		alert(errorstr);
		return false;
	}
	else return true;
}