//sendmail.js
//created 060710 by sly
//modified 25march2008 by younch1
//used on public customerservice

//function to determine which if form is member form so correct url can be served up
function chgFormAction(pMemURL,vPubURL){
	//determine if member form has been selected
	if (
		document.getElementById("formaddressChange").checked==true
		|| document.getElementById("formBenefitsCoverage").checked==true
		|| document.getElementById("formBilling").checked==true
		|| document.getElementById("formclaims").checked==true
		|| document.getElementById("formMembershipQuestions").checked==true
		|| document.getElementById("formreferrals").checked==true
		|| document.getElementById("formCoverageForm").checked==true	
		|| document.getElementById("formRequestIDCard").checked==true
		) {
		//serve up envionment-specific url for member form
		document.chooseForm.action = pMemURL;
	}
	//if not member form, serve up public url for form
	else {
		document.chooseForm.action = sendmail.jhtml;
	}
}

function killErr(){
	//make sure error messages are cleared out when starting
	errMsgs = document.getElementById("errorMesssages");
	while (errMsgs.hasChildNodes()){errMsgs.removeChild(errMsgs.firstChild);}
}

function pickOne(){
	var gotOne = false;
	var daList = document.getElementById("formsList");
	var rads = daList.getElementsByTagName("input");
	
	//make sure error messages are cleared out when starting
	errMsgs = document.getElementById("errorMesssages");
	while (errMsgs.hasChildNodes()){errMsgs.removeChild(errMsgs.firstChild);}
	
	//iterate through radio buttons to find if any are selected
	for (i=0; i<rads.length; i++) {if (rads[i].checked) {gotOne = true;}}
	
	if(gotOne == true){document.chooseForm.submit();}//submit form if something is selected
	else{//write error message in a list
		var listEl = document.createElement("li");
		var errMssg = document.createTextNode("Please select a topic.");
		listEl.appendChild(errMssg);
		document.getElementById("errorMesssages").appendChild(listEl);
	}
}

//validate a CSC form
function validate(formName){
	daForm = 'document.'+formName;
	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 dates into one
	if(document.getElementById("inputdateOfService")){
		var dos = document.getElementById("inputdateOfServiceMo").value + document.getElementById("inputdateOfServiceDate").value + document.getElementById("inputdateOfServiceYr").value;
		if(dos == "MMDDYYYY"){dos = ""}
		document.getElementById("inputdateOfService").value = dos;
	}
	
	//combine 3-part phone #s into one
	if(document.getElementById("inputphoneDay")){
		var phoneNumDay = document.getElementById("inputphoneDayAC").value + document.getElementById("inputphoneDayPfx").value + document.getElementById("inputphoneDayL4").value;
		document.getElementById("inputphoneDay").value = phoneNumDay;
	}
	if(document.getElementById("inputphoneEve")){
			var phoneNumEve = document.getElementById("inputphoneEveAC").value + document.getElementById("inputphoneEvePfx").value + document.getElementById("inputphoneEveL4").value;
			document.getElementById("inputphoneEve").value = phoneNumEve;
	}
	
	//iterate over form fields and perform validation
	//fields is multidimensional array, rendered on page by XSL: (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].toLowerCase();//want labels in lowercase for error messages
			fmLabel = fmLabel.replace(/ id/," ID");//except ID always uppercase
			fmLabel = fmLabel.replace(/zip/,"ZIP");//except ZIP always uppercase
			fmLabel = fmLabel.replace(/\#/,"number");//for readability
		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
				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 == 'MemberID#') || (fmName.indexOf('otherFamMemberID') != -1)){
				var memberIdFilter=/\d/;
				if(!(memberIdFilter.test(usrValue))){
					isValid = false;
					if(fmName.indexOf('otherFamMemberID') != -1){var errText = "The member ID of one of the other family members is not valid. Please try again.";}
					else{var errText = "The member ID is not valid. Please try again.";}
					doErrorMessage(errText);
				}
			}
			else if(fmName == 'chargeAmt'){
				var moneyFilter=/\d+[\$,\,,\.]?/;
				if(!(moneyFilter.test(usrValue))){
					isValid = false;
					var errText = "The charge amount is not valid. Please try again.";
					doErrorMessage(errText);
				}else{//put forward slashes in date
					document.getElementById("inputchargeAmt").value=usrValue.replace(/(^\d{2})(\d{2})(\d{4})/,"$1/$2/$3 (mm/dd/yyyy)");
				}
			}
			else if(fmName == 'dateOfService'){
				var dateFilter=/(([0][1,2,3,4,5,6,7,8,9])|10|11|12)(([0][1,2,3,4,5,6,7,8,9])|([1,2]\d)|30|31)(19|20)(\d{2})/;
				if(!(dateFilter.test(usrValue))){
					isValid = false;
					var errText = "The date of service is not valid. Please try again.";
					doErrorMessage(errText);
				}else{//put forward slashes in date
					document.getElementById("inputdateOfService").value=usrValue.replace(/(^\d{2})(\d{2})(\d{4})/,"$1/$2/$3 (mm/dd/yyyy)");
				}
			}
			else if((fmName == 'Phone-Day') || (fmName == 'Phone-Evening')){
				var phoneFilter=/\d{10}/;
				if(!(phoneFilter.test(usrValue))){
					isValid = false;
					if(fmName == 'Phone-Day'){
						var errText = "The day phone number is not valid. Please try again.";
					}else{
						var errText = "The evening phone number is not valid. Please try again.";
					}
					doErrorMessage(errText);
				}else{//put dashes in phone #
					if(fmName == 'Phone-Day'){document.getElementById("inputphoneDay").value=usrValue.replace(/(^\d{3})(\d{3})(\d{4})/,"$1-$2-$3");}
					else if(fmName == 'Phone-Evening'){document.getElementById("inputphoneEve").value=usrValue.replace(/(^\d{3})(\d{3})(\d{4})/,"$1-$2-$3");}
				}
			}
			else if((fmName == 'Zip') || (fmName == 'Zip-new')){
				var zipFilter=/\d{5}(-\d{4})?/;
				if(!(zipFilter.test(usrValue))){
					isValid = false;
					var errText = "The zip code is not valid. Please try again.";
					doErrorMessage(errText);
				}
			}
		}//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 dates - don't want to submit these
			if(document.getElementById("inputdateOfServiceMo")){document.getElementById("inputdateOfServiceMo").value="";}
			if(document.getElementById("inputdateOfServiceDate")){document.getElementById("inputdateOfServiceDate").value="";}
			if(document.getElementById("inputdateOfServiceYr")){document.getElementById("inputdateOfServiceYr").value="";}
			//kill the 3-part phone numbs - don't want to submit these
			if(document.getElementById("inputphoneDayAC")){document.getElementById("inputphoneDayAC").value="";}
			if(document.getElementById("inputphoneDayPfx")){document.getElementById("inputphoneDayPfx").value="";}
			if(document.getElementById("inputphoneDayL4")){document.getElementById("inputphoneDayL4").value="";}
			if(document.getElementById("inputphoneEveAC")){document.getElementById("inputphoneEveAC").value="";}
			if(document.getElementById("inputphoneEvePfx")){document.getElementById("inputphoneEvePfx").value="";}
			if(document.getElementById("inputphoneEveL4")){document.getElementById("inputphoneEveL4").value="";}
			
			if(document.getElementById("healthPlan")){			
				doSubject();				
			}
			
			//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);
	}

	function doSubject(){
		var hlthPln = document.getElementById("healthPlan").value; 
		document.getElementById("sbjct").value = hlthPln +' - '+ document.getElementById("sbjct").value;
		
	}

