//limit # of characters allowed in textarea
function limitText(limitField, limitCount, limitNum) {
	if (limitField.value.length > limitNum) {
		limitField.value = limitField.value.substring(0, limitNum);
	} else {
		limitCount.value = limitNum - limitField.value.length;
	}
}

//validate form
function validate(submitStory){
	daForm = 'document.submitStory';
	var isValid = true;
	
	//make sure error messages are cleared out when starting
	errMsgs = document.getElementById("errorMesssages");
	while (errMsgs.hasChildNodes()){errMsgs.removeChild(errMsgs.firstChild);}
	
	//combine 3-part phone #s into one
	if(document.getElementById("Phone")){
		var phoneNum = document.getElementById("PhoneAreaCode").value + document.getElementById("PhonePrefix").value + document.getElementById("PhoneSuffix").value;
		document.getElementById("Phone").value = phoneNum;
	}
	
	//create dummyEmail for better form readying
	if(document.getElementById("inputEmailConf")){
		document.getElementById("E-mail").value = document.getElementById("inputEmailConf").value;
	}
	
	//iterate over form fields and perform validation
	//fields is multidimensional array: (0=required, 1=name, 2=id, 3=label)
	for (var f = 0; f < fields.length; f++){
		//set up variables for required, name, id & label
		var fmReq = fields[f][0];
		var fmName = fields[f][1];
		var fmId = fields[f][2];
		var fmLabel = fields[f][3];//want labels in lowercase for error messages
			//fmLabel = fields[f][3].toLowerCase();//want labels in lowercase for error messages - removed 09Oct, not needed
			//fmLabel = fmLabel.replace(/\#/,"number");//for readability - removed 09Oct, not needed
		var usrValue = document.getElementById(fmId).value;//this is the value the user has selected/entered for this field
		usrValue = usrValue.replace(/\s{2,}/," ");
		
		//is field empty?
		if((usrValue == '') || (usrValue == ' ')){//field is empty
			if((fmReq == 'true')&&(fmName !='EmailConf')){//field is required
				isValid = false;//form not valid - a required field is empty
				//var errText = 'Please enter your '+fmLabel+'.';//define error text - removed 09Oct, all/specific text in fmLabels
				var errText = fmLabel;//define error text
				doErrorMessage(errText);//render error mssg
			}//end if fmReq == 'true'
			else if(fmName =='EmailConf'){//EmailConf requires special processing
				if(document.getElementById("inputemailAddress").value != ''){
					isValid = false;
					var errText = "The two e-mail addresses you entered don't match. Please try again.";
					doErrorMessage(errText);
				}
			}
			
		}//end if usrValue == ''
		
		else{//field has a value
			//does this value need to be validated? regex is fun!
			if(fmName == 'email'){
				var emailFilter=/^.+@.+\..{2,4}$/;
				var illegalChars=/[\(\)\<\>\,\;\:\\\"\[\]]/;
				if ((!(emailFilter.test(usrValue))) || (usrValue.match(illegalChars))){ 
					isValid = false;
					var errText = "The e-mail address is not valid. Please try again.";
					doErrorMessage(errText);
				}
			}
			else if(fmName == 'EmailConf'){
				var email1 = document.getElementById("inputemailAddress").value;
				if (usrValue != email1){
					isValid = false;
					var errText = "The two e-mail addresses you entered don't match. Please try again.";
					doErrorMessage(errText);
				}
			}
		
			else if(fmName == 'Phone'){
				var phoneFilter=/\d{10}/;
				if(!(phoneFilter.test(usrValue))){
					isValid = false;
					if(fmName == 'Phone'){
						var errText = "The phone number is not valid. Please try again.";
					}
					doErrorMessage(errText);
				}else{//put dashes in phone #
					if(fmName == 'Phone'){document.getElementById("Phone").value=usrValue.replace(/(^\d{3})(\d{3})(\d{4})/,"$1-$2-$3");}
				}
			}
			
		}//end else field has a value
	}//end for f++
	//no more fields left
	//any errors found?
	if(isValid == false){
			//form is NOT valid, scroll to top to view error messages
			document.getElementById("errorMesssages").style.marginBottom = "1em";
			scroll(0,0);
		}else{
			//form is VALID, clean up and submit
			//kill the 3-part phone numbs - don't want to submit these
			if(document.getElementById("PhoneAreaCode")){document.getElementById("PhoneAreaCode").value="";}
			if(document.getElementById("PhonePrefix")){document.getElementById("PhonePrefix").value="";}
			if(document.getElementById("PhoneSuffix")){document.getElementById("PhoneSuffix").value="";}
			if(document.getElementById("inputEmailConf")){document.getElementById("inputEmailConf").value="";}
			
			//submit
			eval(daForm+'.submit()');
	}
				
	function doErrorMessage(message){
		//write error message in a list
		var listEl = document.createElement("li");
		var errMssg = document.createTextNode(message);
		listEl.appendChild(errMssg);
		document.getElementById("errorMesssages").appendChild(listEl);
	}
}
