var tempPassword
function validateForm(objForm){
	//Scrub data
	var replApos = /'/g;
	var replQote = /"/g;
	flag=0
	for (i=0;i<objForm.length;i++){
		var tempField = objForm.elements[i];
		if(!validateData(tempField)){flag=1}
	}
	if(flag==1){
		alert('There was a problem with some of the information that you entered.\n Please correct the fields marked in red.')
		return false
	}else{
		for (i=0;i<objForm.length;i++){
			var tempField = objForm.elements[i];
			var arrName = tempField.name.split("_")
			if(arrName.length>1){
				tempField.name=arrName[0]
			}
		}
		return true
	}
}
function validateData(objField){
	objField.style.backgroundColor="White"
	var flag=0
	var arrName = objField.name.split("_")
	if(arrName.length>1){
		reqs=arrName[1]
		if(reqs.indexOf("RE")>=0){ //Required (not blank)
			if(objField.value.length<1 || objField.selectedIndex<1){
				objField.style.backgroundColor="Red"
				flag=1
			}
		}
		if(reqs.indexOf("NM")>=0){ //Numerical
			if(isNaN(objField.value)){
				objField.style.backgroundColor="Red"
				flag=1
			}
		}
		if(reqs.indexOf("PW")>=0){ //Save password
			tempPassword = objField
		}
		if(reqs.indexOf("CF")>=0){ //Compare password and password confirm
			if(tempPassword.value!=objField.value){
				objField.style.backgroundColor="Red"
				tempPassword.style.backgroundColor="Red"
				flag=1
			}
		}
		if(reqs.indexOf("PH")>=0 && objField.value.length>0){ //Validates and rewrites phone number
			actNumber = ""
			for(x=0;x<objField.value.length;x++){
				if(!isNaN(objField.value.substring(x,x+1)) && objField.value.substring(x,x+1)!=" "){
					actNumber = actNumber + objField.value.substring(x,x+1)
				}
			}
			if(actNumber.length==10){
				objField.value = "(" + actNumber.substring(0,3) + ") " + actNumber.substring(3,6) + "-" + actNumber.substring(6,10) 
			}else{
				objField.style.backgroundColor="Red"
				flag=1
			}
			
		}
		if(reqs.indexOf("EM")>=0 && objField.value.length>0){ //E-mail address
			if(objField.value.indexOf('@')>0 && objField.value.indexOf('.') > objField.value.indexOf('@')+1){
				//all is well
			}else{
				objField.style.backgroundColor="Red";
				flag=1;
			}
		}
		if(reqs.indexOf("CC")>=0){ //Credit card LUHN formula
				cardNumber = objField.value
				cardType = document.getElementById("cardType").options[document.getElementById("cardType").selectedIndex].value
			  var isValid = false;
			  var ccCheckRegExp = /[^\d ]/;
			  isValid = !ccCheckRegExp.test(cardNumber);
			
			  if (isValid)
			  {
				var cardNumbersOnly = cardNumber.replace(/ /g,"");
				var cardNumberLength = cardNumbersOnly.length;
				var lengthIsValid = false;
				var prefixIsValid = false;
				var prefixRegExp;
			
				switch(cardType)
				{
				  case "MasterCard":
					lengthIsValid = (cardNumberLength == 16);
					prefixRegExp = /^5[1-5]/;
					break;
			
				  case "Visa":
					lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
					prefixRegExp = /^4/;
					break;
			
				  case "American Express":
					lengthIsValid = (cardNumberLength == 15);
					prefixRegExp = /^3(4|7)/;
					break;
			
				  default:
					prefixRegExp = /^$/;
					alert("Card type not found");
				}
			
				prefixIsValid = prefixRegExp.test(cardNumbersOnly);
				isValid = prefixIsValid && lengthIsValid;
			  }
			
			  if (isValid)
			  {
				var numberProduct;
				var numberProductDigitIndex;
				var checkSumTotal = 0;
			
				for (digitCounter = cardNumberLength - 1; 
				  digitCounter >= 0; 
				  digitCounter--)
				{
				  checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
				  digitCounter--;
				  numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
				  for (var productDigitCounter = 0;
					productDigitCounter < numberProduct.length; 
					productDigitCounter++)
				  {
					checkSumTotal += 
					  parseInt(numberProduct.charAt(productDigitCounter));
				  }
				}
			
				isValid = (checkSumTotal % 10 == 0);
			  }
			
			  if(!isValid){
				objField.style.backgroundColor="Red"
				flag=1
			  }
		}
	}
	if(flag==1){
		return false
	}else{
		return true
	}	
}