//<!-- Build Number: 01.01.077 LKH.WIDX 1/27/2008 -->
function isblank(s)
{
	
	for(var i=0;i<s.length;i++)
	{
		var c = s.charAt(i);
		
		if((c!=' ') && (c!='\n') && (c!='\t'))
	        return true;	
	}
	return false;
}


function isemail(email)
{
	invalidChars = " /:,;"

	// Check if it's empty			
	if (email=="")
		return false;
	
	// Check if it has invalid characters
	for (i=0; i<invalidChars.length; i++)
	{
		badChar = invalidChars.charAt(i)
		if (email.indexOf(badChar,0)>-1)
		return false;
	}
	
	// Check if it contains an @
	atPos = email.indexOf("@",1)
	if (atPos==-1)
		return false;
		
	// only one @
	atPos = email.indexOf("@",atPos+1)
	if (atPos>-1)
		return false;
	
	// Check if it contains a period after @
	periodPos = email.indexOf(".", atPos)
	if (periodPos==-1)
		return false;
		
	// At least 2 characters after the period
	if (periodPos+3 > email.length)
		return false;
		
	// everything ok
	return true;
}

//function validate that the value is  date with mask, probably is missing another mask 
function isdate(s)
{
	if (!(check_mask("##/##/####",s)||check_mask("##/#/####",s)||check_mask("#/##/####",s)|| check_mask("#/#/####",s)))
	{
		return false;
	}
	return true;
}

//function verify the value be a integer 
function isinteger(s)
{
	
	 var checkOK = "0123456789";
	  var checkStr = s; 
	  var allValid = true;
	  var decPoints = 0;
	  var allNum = "";
	  for (i = 0;  i < checkStr.length;  i++)
	  {
	    ch = checkStr.charAt(i);
	    for (j = 0;  j < checkOK.length;  j++)
		{
	      if (ch == checkOK.charAt(j))
	        break;
		}
	    if (j == checkOK.length)
	    {
	      allValid = false;
	      break;
	    }
	    allNum += ch;
	  }
	  if (!allValid)
	  {
	   return false;
	  }
	  return true;
}


//function verify the value be a decimal 
function isdecimal(s)
{
	
	 var checkOK = "0123456789.";
	  var checkStr = s; 
	  var allValid = true;
	  var decPoints = 0;
	  var Points=0;
	  var allNum = "";
	  for (i = 0;  i < checkStr.length;  i++)
	  {
	    ch = checkStr.charAt(i);
	    for (j = 0;  j < checkOK.length;  j++)
		{
	      if (ch == "." && checkOK.charAt(j)==".")
		  	{   Points++;		
			}
		  if (ch == checkOK.charAt(j))
	        break;
		}
	    if (j == checkOK.length)
	    {
	      allValid = false;
	      break;
	    }
		if (Points>1)
		{
		  allValid = false;
	      break;
		}
	    allNum += ch;
	  }
	  if (!allValid)
	  {
	   return false;
	  }
	  return true;
}

	//function validate that the value is  date with mask, probably is missing another mask 
	function  check_mask(mask,value)
	{
		var i;
		if (value.length != mask.length) 
		{
			return false;
		}
		for (i=0; i<mask.length; i++)
		{
			if ( mask.charAt(i) == '#' )
			{
				if ( !parseInt(value.charAt(i)) && value.charAt(i) != '0' )
				{
					return false;
				}
			}
			else
			{
				if (mask.charAt(i) != value.charAt(i))
				{
					return false;
				}
			}
		}
		return true;
	}
	
function blockChars2(string, para) 
	{
		var validchars = para;
		var parsed = true;
		for (var i=0; i < string.length; i++) {
			var letter = string.charAt(i);
			if (validchars.indexOf(letter) == -1)
				continue;
			if (blockChars2.arguments.length==3){
				if (blockChars2.arguments[2] == 0){
					alert(letter + " is not allowed.");
				}
			}else{
				alert(letter + " is not allowed.");
			}
			parsed = false;
			break;
		}
		return parsed;
	}
	
	
		/*	FUNCTION allowValidChars	*/
	/*	Usage -> allowValidChars(Checking String, integer, space [Optional])	*/
	function allowValidChars2(string) {
		var parsed = true;
		var blockCharacters = "~`!@#$%^&*+=|\\{[}]:;\"'<,>.?/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		parsed = blockChars2(string, blockCharacters,1);
		if (parsed==false){
			if ((allowValidChars2.arguments.length==1) || 
			(allowValidChars2.arguments.length==2 && allowValidChars2.arguments[1] == 0)){
				alert("Please provide a valid phone number to submit this form.");
			}
		}
		return parsed;
	}

	function allowValidChars(string) {
		var parsed = true;
		var blockCharacters = "~`!@#$%^&*+=|\\{[}]:;\"'<,>.?/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		parsed = blockChars2(string, blockCharacters,1);
		if (parsed==false){
			if ((allowValidChars.arguments.length==1) || 
			(allowValidChars.arguments.length==2 && allowValidChars.arguments[1] == 0)){
				alert("Please provide a valid phone number to submit this form.");
			}
		}
		return parsed;
	}
	
	
function MailValidator(f)
{
	target = /REQ_/;
	target2 = /_/g;
	var empty_fields=""
	var email_fields=""
	var fieldfocus = null;
	var temp="";
	
	
	for(var i=0; i<f.length; i++)
	{
		var e=f.elements[i];
		
		// first check if the field is text or textarea and if it is required
		if (
				(
					(
						(
							(e.type=="text") ||	(e.type=="textarea")	||	(e.type=="password")	||	(e.type=="select-one")
						) 
						&& 
						!(e.optional)
					) 
					|| 
					(	
						!(
							(e.value==null) || 	(e.value=="") 	|| 	!isblank(e.value)
						)
					)
				) 
				|| 
				(e.name.search(target)==0)
			)
		{
		
		
			/*if (e.integer)
			{
			
				alert(e.name + '=' + e.value);
				alert((e.optional));
				alert(e.value.search("-"));
				alert('integer and required' + (e.integer && !(e.optional)));
				alert('integer and not required, no -' +(	(e.integer) && (e.optional) && (e.value.search("-")==-1)	));
				
			}*/
			// finally check if the field is empty
			if(e.name == "REQ_Phone" || e.name == "Phone") {
				//alert("element NAME = "+ e.name)
				if((e.value==null) || (e.value=="") || !isblank(e.value) || e.value.search("- Phone Number -")!=-1 || !allowValidChars(e.value) /*)*/  )
				{
				 		empty_fields+="\n        " + e.description;
				 		if (fieldfocus==null) fieldfocus = e;
				}
			}
			else {
						if	(	(e.value==null) || (e.value=="") || !isblank(e.value)  ||  ( !(e.optional) && (e.value.search("- ")!=-1) )		)
						{
			  				temp = e.name.replace(target, "");	// Erase "REQ_" from string
							temp = temp.replace(target2, " ");	// Replace "_" with spaces
							
							 if(e.description!=null && e.description!="")
			                    {                                                        
			                        empty_fields+="\n        " + e.description;
			                    }
			                    else
			                    {                                              
			                        empty_fields+="\n        " + temp;
			                    }
								
							if (fieldfocus==null)
								fieldfocus = e;
						}
						
						if (	(e.email && !(e.optional))  || 	(	(e.email) && (e.optional) && (e.value.search("- ")==-1)	)	)
						//if (e.email )
						{
							if (!isemail(e.value))
							{
								temp = e.name.replace(target, "");	// Erase "REQ_" from string
								temp = temp.replace(target2, " ");	
								 if(e.description!=null && e.description!="")
			                    {                                                        
									email_fields+="\nThe  " + e.description + " field must contain a valid email address.\n";
			                    }
			                    else
			                    {                                              
			                       email_fields+="\nThe  " + temp + " field must contain a valid email address.\n";
			                    }
								
							    
								fieldfocus = e;
							}
						}
						
						if (	(e.date && !(e.optional))  || 	(	(e.date) && (e.optional) && (e.value.search("-")==-1)	)	)
						//if (e.date)
						{
							if (!isdate(e.value))
							{
								temp = e.name.replace(target, "");	// Erase "REQ_" from string
								temp = temp.replace(target2, " ");	
							   
								if(e.description!=null && e.description!="")
			                    {                                                        
									 email_fields+="\nThe  " + e.description + " field must contain a valid date.\n";
			                    }
			                    else
			                    {                                              
			                       email_fields+="\nThe  " + temp + " field must contain a valid date.\n";
			                    }
								fieldfocus = e;
							}
						}
						
						
						
						if (	(e.integer && !(e.optional))  || 	(	(e.integer) && (e.optional) && (e.value.search("-")==-1)	)	)
						{
							if (!isinteger(e.value))
							{
								temp = e.name.replace(target, "");	// Erase "REQ_" from string
								temp = temp.replace(target2, " ");	
							    
								if(e.description!=null && e.description!="")
			                    {                                                        
									 email_fields+="\nThe  " + e.description + " field must contain a valid number.\n";
			                    }
			                    else
			                    {                                              
			                       email_fields+="\nThe  " + temp + " field must contain a valid number.\n";
			                    }
								fieldfocus = e;
							}
							else
							{
								
								var v = parseFloat(e.value);
								if(isNaN(v) || ((e.min!=null)&&(v<e.min)) || ((e.max!=null)&&(v>e.max)))
								{
									temp = e.name.replace(target, "");	// Erase "REQ_" from string
									temp = temp.replace(target2, " ");	
									
									
									if(e.description!=null && e.description!="")
				                    {                                                        
										 email_fields+="\nThe  " +  e.description + " field must be ";
				                    }
				                    else
				                    {                                              
				                       email_fields+="\nThe  " + temp + " field must be ";
				                    }
								
									if(e.min!=null && e.max!=null)
										{
											email_fields+="\n greater than " + e.min;
											email_fields+=" and less than " + e.max;
										}
									else
									{
										if(e.min!=null)
											{email_fields+="greater than " + e.min;}
										if(e.max!=null)
											{email_fields+="less than " + e.max;}
									}
									fieldfocus = e;
								}
							}
						}
						
						
						if (	(e.decimal && !(e.optional))  || 	(	(e.decimal) && (e.optional) && (e.value.search("-")==-1)	)	)
						//if (e.decimal)
						{
							if (!isdecimal(e.value))
							{
								temp = e.name.replace(target, "");	// Erase "REQ_" from string
								temp = temp.replace(target2, " ");	
							    
								if(e.description!=null && e.description!="")
				                    {                                                        
										 email_fields+="The  " + e.description + " field must contain a valid decimal number.\n";
				                    }
				                    else
				                    {                                              
				                       email_fields+="The  " + temp + " field must contain a valid decimal number.\n";
				                    }
								fieldfocus = e;
							}
						}
			}/*end of else*/
			
		} /*end of field check*/
	} /*end of for*/
	
	//empty_fields= empty_fields + "\n"  + email_fields;
	
	if (empty_fields || email_fields )
	{
		alert ("The following required field(s) are empty or invalid:" + empty_fields + "\n"  + email_fields  + "\n");
		fieldfocus.focus();
		return false;
	}

	return true;
}
function MailValidator_notify(notify)
{
	target = /REQ_/;
	target2 = /_/g;
	var empty_fields=""
	var email_fields=""
	var fieldfocus = null;
	var temp="";
	
	
	for(var i=0; i<notify.length; i++)
	{
		var e=notify.elements[i];
		
		// first check if the field is text or textarea and if it is required
		if (
				(
					(
						(
							(e.type=="text") ||	(e.type=="textarea")	||	(e.type=="password")	||	(e.type=="select-one")
						) 
						&& 
						!(e.optional)
					) 
					|| 
					(	
						!(
							(e.value==null) || 	(e.value=="") 	|| 	!isblank(e.value)
						)
					)
				) 
				|| 
				(e.name.search(target)==0)
			)
		{
		
		
			/*if (e.integer)
			{
			
				alert(e.name + '=' + e.value);
				alert((e.optional));
				alert(e.value.search("-"));
				alert('integer and required' + (e.integer && !(e.optional)));
				alert('integer and not required, no -' +(	(e.integer) && (e.optional) && (e.value.search("-")==-1)	));
				
			}*/
			// finally check if the field is empty
 
						if	(	(e.value==null) || (e.value=="") || !isblank(e.value)  ||  ( !(e.optional) && (e.value.search("-")!=-1) )		)
						{
			  				temp = e.name.replace(target, "");	// Erase "REQ_" from string
							temp = temp.replace(target2, " ");	// Replace "_" with spaces
							
							 if(e.description!=null && e.description!="")
			                    {                                                        
			                        empty_fields+="\n        " + e.description;
			                    }
			                    else
			                    {                                              
			                        empty_fields+="\n        " + temp;
			                    }
								
							if (fieldfocus==null)
								fieldfocus = e;
						}
						
						if (	(e.email && !(e.optional))  || 	(	(e.email) && (e.optional) && (e.value.search("-")==-1)	)	)
						//if (e.email )
						{
							if (!isemail(e.value))
							{
								temp = e.name.replace(target, "");	// Erase "REQ_" from string
								temp = temp.replace(target2, " ");	
								 if(e.description!=null && e.description!="")
			                    {                                                        
									email_fields+="\nThe  " + e.description + " field must contain a valid email address.\n";
			                    }
			                    else
			                    {                                              
			                       email_fields+="\nThe  " + temp + " field must contain a valid email address.\n";
			                    }
								
							    
								fieldfocus = e;
							}
						}
						
						if (	(e.date && !(e.optional))  || 	(	(e.date) && (e.optional) && (e.value.search("-")==-1)	)	)
						//if (e.date)
						{
							if (!isdate(e.value))
							{
								temp = e.name.replace(target, "");	// Erase "REQ_" from string
								temp = temp.replace(target2, " ");	
							   
								if(e.description!=null && e.description!="")
			                    {                                                        
									 email_fields+="\nThe  " + e.description + " field must contain a valid date.\n";
			                    }
			                    else
			                    {                                              
			                       email_fields+="\nThe  " + temp + " field must contain a valid date.\n";
			                    }
								fieldfocus = e;
							}
						}
						
						
						
						if (	(e.integer && !(e.optional))  || 	(	(e.integer) && (e.optional) && (e.value.search("-")==-1)	)	)
						{
							if (!isinteger(e.value))
							{
								temp = e.name.replace(target, "");	// Erase "REQ_" from string
								temp = temp.replace(target2, " ");	
							    
								if(e.description!=null && e.description!="")
			                    {                                                        
									 email_fields+="\nThe  " + e.description + " field must contain a valid number.\n";
			                    }
			                    else
			                    {                                              
			                       email_fields+="\nThe  " + temp + " field must contain a valid number.\n";
			                    }
								fieldfocus = e;
							}
							else
							{
								
								var v = parseFloat(e.value);
								if(isNaN(v) || ((e.min!=null)&&(v<e.min)) || ((e.max!=null)&&(v>e.max)))
								{
									temp = e.name.replace(target, "");	// Erase "REQ_" from string
									temp = temp.replace(target2, " ");	
									
									
									if(e.description!=null && e.description!="")
				                    {                                                        
										 email_fields+="\nThe  " +  e.description + " field must be ";
				                    }
				                    else
				                    {                                              
				                       email_fields+="\nThe  " + temp + " field must be ";
				                    }
								
									if(e.min!=null && e.max!=null)
										{
											email_fields+="\n greater than " + e.min;
											email_fields+=" and less than " + e.max;
										}
									else
									{
										if(e.min!=null)
											{email_fields+="greater than " + e.min;}
										if(e.max!=null)
											{email_fields+="less than " + e.max;}
									}
									fieldfocus = e;
								}
							}
						}
						
						
						if (	(e.decimal && !(e.optional))  || 	(	(e.decimal) && (e.optional) && (e.value.search("-")==-1)	)	)
						//if (e.decimal)
						{
							if (!isdecimal(e.value))
							{
								temp = e.name.replace(target, "");	// Erase "REQ_" from string
								temp = temp.replace(target2, " ");	
							    
								if(e.description!=null && e.description!="")
				                    {                                                        
										 email_fields+="The  " + e.description + " field must contain a valid decimal number.\n";
				                    }
				                    else
				                    {                                              
				                       email_fields+="The  " + temp + " field must contain a valid decimal number.\n";
				                    }
								fieldfocus = e;
							}
						}

			
		} /*end of field check*/
	} /*end of for*/
	
	//empty_fields= empty_fields + "\n"  + email_fields;
	
	if (empty_fields || email_fields )
	{
		alert ("The following required field(s) are empty or invalid:" + empty_fields + "\n"  + email_fields  + "\n");
		fieldfocus.focus();
		return false;
	}

	return true;
}
