function reqVal(element) {
var retVal=null;
if ((element.id.indexOf("req_")>-1)||(element.name.indexOf("req_")>-1))
	retVal="Y";
return retVal;
}
var thisForm;
function validateForm(theForm){ 
thisForm = theForm;
var err = 0;
var check = 0;
var Max = 0;
var Desc = "";
var Value = "";
var msg = "Please make sure you fill out all required fields and re-submit your form. \n\n";
var msgArr = new Array();
var msgCnt = -1;

//loop through all form elements
 for (var e = 0; e < theForm.elements.length; e++)
 {
 //if the required attribute is set to Y then do the validation
 Desc = theForm.elements[e].id;

if(reqVal(theForm.elements[e]) == "Y")
 { 
 theName = theForm.elements[e].name;

 // Text Box, Text Area, or Password - check for value
	if (theForm.elements[e].type == "text" | theForm.elements[e].type == "textarea" | theForm.elements[e].type == "password" | theForm.elements[e].type == "file") 
	{
 		Value = theForm.elements[e].value;
 		check = 0;
		
 		var ValueLength = Value.length;
		//loops through each character in the value and makes sure at least one is not a space (charcode 32)
 		for (var t = 0; t < ValueLength; t++)
  		{if (Value.charCodeAt(t) != 32) {check = 1}}
  
 		if (check == 0){err = 1;
		 theForm.elements[e].style.backgroundColor = '#FF9900';
		 //document.getElementById(Desc).style.color = 'white';
		 //msg = msg + "Required Input: " + Desc + "\n\n";
		 msgCnt = msgCnt + 1;
		 msgArr[msgCnt] = Desc +";Required Input: " + Desc; 
		}
     }
	
	// Select Box - check for value not equal to "Select One"
	if (theForm.elements[e].type == "select-one" ) {
	   var thisVal = theForm.elements[e].options[theForm.elements[e].selectedIndex].value;
	   if (thisVal == "null" || thisVal == ""){
	 		err = 1; 
	 		theForm.elements[e].style.backgroundColor = '#FF9900';
	 		//msg = msg + "Required Input: " + Desc + "\n\n";
			msgCnt = msgCnt + 1;
			msgArr[msgCnt] = Desc +";Required Input: " + Desc; 
		} 
	 
	 }
	 
	// Select Multiple - check for value not equal to "Select One"
	
	if (theForm.elements[e].type == "select-multiple" && theForm.elements[e].options.value == "null" | theForm.elements[e].options.value == "")
	 {err = 1; 
	 theForm.elements[e].style.backgroundColor = '#FF9900';
	 //msg = msg + "Required Input: " + Desc + "\n\n";
	 msgCnt = msgCnt + 1;
	 msgArr[msgCnt] = Desc +";Required Input: " + Desc; 
	 } 
	 
	//Radio or checkbox -check for at least one checked
	if (theForm.elements[e].type == "radio" | theForm.elements[e].type == "checkbox")
	{
	
	 var ok = 0;
	 //loop through every check box or radio with the same name
	 for (var CE = 0; theForm.elements[e + CE].name == theName; CE++)
	  {
	  if (theForm.elements[e + CE].checked) {ok = 1;}}
	  
	  if (ok == 0) {
	  for (var CE = 0; theForm.elements[e + CE].name == theName; CE++)
	  {
	  err = 1; 
	 
	 
	 var errElem = theForm.elements[e+CE];
	 
	 var parentNd= errElem.parentNode;
	 var parentTag=errElem.parentNode.tagName;
	 while (1)
	 {
		if ((parentTag.indexOf("TD")>-1) || (parentTag.indexOf("P")>-1))		
			break;
		parentNd = parentNd.parentNode;	
		parentTag=parentNd.tagName;
	}
	parentNd.className = "validationTable";
	}
 
	  //msg = msg + "Required Input: " + Desc + "\n\n";
	  msgCnt = msgCnt + 1;
	  msgArr[msgCnt] = Desc +";Required Input: " + Desc; 
	}
	  //reset e because we've skipped ahead in the elements sequence 
	  e = e + CE - 1;
     }
      
	
    //check that max length is not exceeded
    if(theForm.elements[e].maxlength)
     {
	 	Max = theForm.elements[e].maxlength;
	 	Chars = theForm.elements[e].value.length;
	 	if( Chars > Max)
	    { err = 1;
		  //msg = msg + "Maximum of " + Max + " Characters Exceeded: " + Desc + " has " + Chars + " Characters \n\n";
		  msgCnt = msgCnt + 1;
		  msgArr[msgCnt] = Desc +";Maximum of " + Max + " Characters Exceeded: " + Desc + " has " + Chars + " Characters"; 
	    } 
	 }
	 
   //check that a correct email address is entered when specified
    if(theForm.elements[e].email)
     {
	 
	
		var str = theForm.elements[e].value;

		var at="@";
		var dot=".";
		var lat=str.indexOf(at);
		var lstr=str.length;
		var ldot=str.indexOf(dot);
		var thisErr = 0;
		
		if (str.indexOf(at)==-1){
		
		   thisErr = 1;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	
		   thisErr = 1;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    
			thisErr = 1;
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    
			thisErr = 1;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		   
			thisErr = 1;
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		  
			thisErr = 1;
		 }
		
		 if (str.indexOf(" ")!=-1){
		    
			thisErr = 1;
		 }					

        if (thisErr == 1){
	
		  document.getElementById(Desc).style.backgroundColor = '#FF9900';
		  err = 1;
		  //msg = msg + "Invalid Email Address: " + Desc + "\n\n";
		  msgCnt = msgCnt + 1;
		  msgArr[msgCnt] = Desc +";Invalid Email Address: " + Desc; 
	    }
		
	  } // email check  */
	  
	  //phone number
	 //phone number
	
	if(theForm.elements[e].phone)
     { 
	   
	     
		  var thisError = 0;
		  
		  var numval = theForm.elements[e].value;
		  var valid1 = numval.search(/^\d\d\d-\d\d\d-\d\d\d\d$/);
		  var valid2 = numval.search(/^\d\d\d \d\d\d \d\d\d\d$/);
		 	if (valid1 != 0 && valid2 !=0) {
				thisError = 1;
			}
         
			
		  if (thisError == 1){
	
		  			document.getElementById(Desc).style.backgroundColor = '#FF9900';
		  			err = 1;
		  			//msg = msg + "The field: " + Desc + " requires a valid format phone/fax number. \n eg:\n123 456 7890\n123-456-7890\n\n";
					msgCnt = msgCnt + 1;
					msgArr[msgCnt] = Desc +";The field: " + Desc + " requires a valid format phone/fax number. \n eg:\n123 456 7890\n123-456-7890"; 

	  		}
		
			  
	   } //if phone
	  // if phone number

  } //if required
	 
	if (theForm.elements[e].confirm)
	{
		var elemValue = document.getElementById(Desc).value;
		var compareTo = document.getElementById(theForm.elements[e].confirm).value;
		if (elemValue!=compareTo)
		{
			document.getElementById(Desc).style.backgroundColor = '#FF9900';
  			err = 1;
  			//msg = msg + Desc + " does not match the value of " +  theForm.elements[e].confirm + "\n\n";
			msgCnt = msgCnt + 1;
			msgArr[msgCnt] = Desc +";" + Desc + " does not match the value of " +  theForm.elements[e].confirm; 

		}
	} //if confirm param 


}  //loop


 if (err > 0) {
	var display = "<table cellpadding=2 cellspacing=0 class=redBorderedTable width=50>";
	display = display + "<tr><td><img src='/images/minicoach.gif'></td></tr>";
	display = display + "<tr><td><img src='/images/exclamation.png' align=absmiddle/><b><font color=#C00000>Oops, looks like you have missed some question(s).</font></b><br>";
	display = display + "<br>Click on each link below and we will take you directly to that section, ";
	display = display + "where you will find unanswered questions highlighted in <font color=#FF9900><b>orange</b></font>.</td></tr>";
	display = display + "<tr><td>Then re-submit when completed.</td></tr>";

	var valKoach = document.getElementById("validationKoach");
	var errId, elemId;
	var errMsg;
	var errElem;
	var parentNd;
	var parentId;
	var arr;
	var elemMsg;
	for (i=0;i<=msgCnt;++i)
	{
		errId = msgArr[i].substring(0,msgArr[i].indexOf(";"));
		errMsg = msgArr[i].substring(msgArr[i].indexOf(";")+1,msgArr[i].length);
		arr = errMsg.split(":");
		elemMsg = arr[0] + ":" + getDisplayMsg(errId);
		errElem = document.getElementById(errId);
		parentNd= errElem.parentNode;
		while (1)
		{
			parentId=parentNd.id;
			if ((parentId!="") && (typeof(parentId)!="undefined"))
			{
				if (parentId.indexOf("datatab")>-1)
					break;
			}
			parentNd = parentNd.parentNode;		
		}
		elemId = parentId.replace("data","");
		errMsg = "<tr><td><a href='#' onclick=bringUp('" + elemId + "')><img src='/images/rightRedArrow.gif' border=0 align=absmiddle>&nbsp;<u>" + elemMsg + "</u></a>";
		display = display + errMsg + "</td></tr>";
	}
	display = display + "<tr><td><br><a href=# onclick=vkSubmit(null)><b>Re-submit</b>&nbsp;<img src='/images/redArrowButton.gif' border=0 align=absmiddle></a><br></td></tr>";
	display = display + "<tr><td>&nbsp;</td></tr></table>";
 	valKoach.innerHTML=display; 
 	return false; }
 else
 {
    if (window.$find!=undefined)
    {
        var modalDisplay = $find('ModalDisp');
        if (modalDisplay!=null)
            modalDisplay.show();
    }
    thisForm.submitType.value = "Submit";
 	thisForm.submit();
 	return true;
 }
 
 
} //function

function bringUp(tabId)
{
	var div = document.getElementById(tabId);
	showPane(div);
}

function vkSubmit(theForm)
{
    if ((thisForm==null)&&(theForm!=null))
        thisForm = theForm;
    if (thisForm!=null)
    {
    if (validateForm(thisForm))
    {
        thisForm.submitType.value = "Submit";
        thisForm.submit();
        }
	}
}
var returnMsg="";
function getDisplayMsg(elemId)
{
    var elem = document.getElementById(elemId);
    var DescFull = elem.name;
    var DescArr = DescFull.split("$");
    elemMsg = DescArr[2];
    getElementName(elemMsg);
    if (returnMsg!="")
        elemMsg = returnMsg;
    return elemMsg;
}

var xmlhttp;

function getElementName(elementId)
{
	xmlhttp=GetXmlHttpObject();
	if (xmlhttp==null)
	{
		alert ("Your browser does not support http request");
		return
	}
	var url="/includes/GetElementName.aspx";
	xmlhttp.onreadystatechange=stateChangedEdit;
	//xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");	
	var data = "elementId="+elementId+"&sid="+Math.random();	
	url = url + "?" + data;
	xmlhttp.open("get",url,false);
	xmlhttp.send(null);    
	returnMsg = xmlhttp.responseText;
}

function stateChangedEdit() 
{ 
	if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete")
	{ 	
		returnMsg = xmlhttp.responseText;
		
	} 
} 


function GetXmlHttpObject()
{ 
	var objXMLHttp=null;
	try{
		// Opera 8.0+, Firefox, Safari
		objXMLHttp = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			objXMLHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
	return objXMLHttp;
}

