		function FDK_Validate(FormName, stopOnFailure, AutoSubmit, ErrorHeader)
		{
		 var theFormName = FormName;
		 var theElementName = "";
		 if (theFormName.indexOf(".")>=0)  
		 {
		   theElementName = theFormName.substring(theFormName.indexOf(".")+1)
		   theFormName = theFormName.substring(0,theFormName.indexOf("."))
		 }
		 var ValidationCheck = eval("document."+theFormName+".ValidateForm")
		 if (ValidationCheck)  
		 {
		  var theNameArray = eval(theFormName+"NameArray")
		  var theValidationArray = eval(theFormName+"ValidationArray")
		  var theFocusArray = eval(theFormName+"FocusArray")
		  var ErrorMsg = "";
		  var FocusSet = false;
		  var i
		  var msg
		    
		 
		        // Go through the Validate Array that may or may not exist
		        // and call the Validate function for all elements that have one.
		  if (String(theNameArray)!="undefined")
		  {
		   for (i = 0; i < theNameArray.length; i ++)
		   {
		    msg="";
		    if (theNameArray[i].name == theElementName || theElementName == "")
		    {
		      msg = eval(theValidationArray[i]);
		    }
		    if (msg != "")
		    {
		     ErrorMsg += "\n"+msg;                   
		     if (stopOnFailure == "1") 
		     {
		       if (theFocusArray[i] && !FocusSet)  
		      {
		       FocusSet=true;
		       theNameArray[i].focus();
		      }
		      alert(ErrorHeader+ErrorMsg);
		      document.MM_returnValue = false; 
		      break;
		     }
		     else  
		     {
		      if (theFocusArray[i] && !FocusSet)  
		      {
		       FocusSet=true;
		       theNameArray[i].focus();
		      }
		     }
		    }
		   }
		  }
		  if (ErrorMsg!="" && stopOnFailure != "1") 
		  {
		   alert(ErrorHeader+ErrorMsg);
		  }
		  document.MM_returnValue = (ErrorMsg==""); 
		  if (document.MM_returnValue && AutoSubmit)  
		  {
		   eval("document."+FormName+".submit()")
		  }
		 }
		}
		
		function FDK_StripChars(theFilter,theString)
		{
			var strOut,i,curChar
		
			strOut = ""
			for (i=0;i < theString.length; i++)
			{		
				curChar = theString.charAt(i)
				if (theFilter.indexOf(curChar) < 0)	// if it's not in the filter, send it thru
					strOut += curChar		
			}	
			return strOut
		}
		
		function FDK_AddToValidateArray(FormName,FormElement,Validation,SetFocus)
		{
		    var TheRoot=eval("document."+FormName);
		 
		    if (!TheRoot.ValidateForm) 
		    {
		        TheRoot.ValidateForm = true;
		        eval(FormName+"NameArray = new Array()")
		        eval(FormName+"ValidationArray = new Array()")
		        eval(FormName+"FocusArray = new Array()")
		    }
		    var ArrayIndex = eval(FormName+"NameArray.length");
		    eval(FormName+"NameArray[ArrayIndex] = FormElement");
		    eval(FormName+"ValidationArray[ArrayIndex] = Validation");
		    eval(FormName+"FocusArray[ArrayIndex] = SetFocus");
		 
		}
		
		function FDK_ValidateNonBlank(FormElement,ErrorMsg)
		{
		  var msg = ErrorMsg;
		  var val = FormElement.value;  
		
		  if (!(FDK_StripChars(" \n\t\r",val).length == 0))
		  {
		     msg="";
		  }
		
		  return msg;
		}
		
		function FDK_AddNonBlankValidation(FormName,FormElementName,SetFocus,ErrorMsg)  {
		  var ValString = "FDK_ValidateNonBlank("+FormElementName+","+ErrorMsg+")"
		  FDK_AddToValidateArray(FormName,eval(FormElementName),ValString,SetFocus)
		}
		
		function FDK_ValidateInternationalPhone(FormElement,Required,ErrorMsg)
		{
			var msg = ""
			var theString = FormElement.value;
			
			var theLen = FDK_StripChars(" \n\t\r",theString).length
			if (theLen == 0)	
				if (!Required) return "";		
				else return ErrorMsg;
		
			theString = FDK_StripChars("+*() -./_\n\r",theString)		
		
			if (!FDK_AllInRange("0","9",theString) || theString.length < 6)
			{
				msg = ErrorMsg;
			}	
		
			return msg		
		}
		
		function FDK_reformat(s)
		{
		    var arg;
		    var sPos = 0;
		    var resultString = "";
		
		    for (var i = 1; i < FDK_reformat.arguments.length; i++) {
		       arg = FDK_reformat.arguments[i];
		       if (i % 2 == 1) 
		           resultString += arg;
		       else 
		       {
		           resultString += s.substring(sPos, sPos + arg);
		           sPos += arg;
		       }
		    }
		    return resultString;
		}
		
		function FDK_AllInRange(x,y,theString)
		{
			var i, curChar
			
			for (i=0; i < theString.length; i++)
			{
				curChar = theString.charAt(i)
				if (curChar < x || curChar > y) //the char is not in range
					return false
			}
			return true
		}
		
		function FDK_AddInternationalPhoneValidation(FormName,FormElementName,Required,SetFocus,ErrorMsg)  {
		  var ValString = "FDK_ValidateInternationalPhone("+FormElementName+","+Required+","+ErrorMsg+")"
		  FDK_AddToValidateArray(FormName,eval(FormElementName),ValString,SetFocus)
		}
		
		function FDK_ValidateEmail(FormElement,Required,ErrorMsg)
		{
		   var msg = "";
		   var val = FormElement.value;
		   var msgInvalid = ErrorMsg;
		
		   var theLen = FDK_StripChars(" ",val).length
		   if (theLen == 0)	     {
		     if (!Required) return "";
		     else return msgInvalid;
		   }
		
		   if (val.indexOf("@",0) < 0 || val.indexOf(".")<0) 
		   {
		      msg = msgInvalid;
		   }
		   return msg;
		}
		
		function FDK_AddEmailValidation(FormName,FormElementName,Required,SetFocus,ErrorMsg)  {
		  var ValString = "FDK_ValidateEmail("+FormElementName+","+Required+","+ErrorMsg+")"
		  FDK_AddToValidateArray(FormName,eval(FormElementName),ValString,SetFocus)
		}

