function YY_checkform() { //v4.06
//copyright (c)1998,2001 Yaromat.com
  var args = YY_checkform.arguments; var myDot=true; var myV=''; var myErr='';var addErr=false;var myReq;
  for (var i=1; i<args.length;i=i+4){
    if (args[i+1].charAt(0)=='#'){myReq=true; args[i+1]=args[i+1].substring(1);}else{myReq=false}
    var myObj = MM_findObj(args[i].replace(/\[\d+\]/ig,""));
    myV=myObj.value;
    if (myObj.type=='text'||myObj.type=='password'){
      if (myReq&&myObj.value.length==0){addErr=true}
      if ((myV.length>0)&&(args[i+2]==1)){ //fromto
        if (!(myV/1)||myV<args[i+1].split('_')[0]/1||myV > args[i+1].split('_')[1]/1){addErr=true}
      }
      if ((myV.length>0)&&(args[i+2]==2)&&!myV.match("^[\\w\\.=-_]+@[\\w\\.-_]+\\.[a-z]{2,4}$")){addErr=true}// email
      if ((myV.length>0)&&(args[i+2]==3)){ // date
        var myMa=args[i+1].split("#"); var myAt=myV.match(myMa[0]);
        if(myAt){
          var myD=(myAt[myMa[1]])?myAt[myMa[1]]:1; var myM=myAt[myMa[2]]-1; var myY=myAt[myMa[3]];
          var myDate=new Date(myY,myM,myD);
          if(myDate.getFullYear()!=myY||myDate.getDate()!=myD||myDate.getMonth()!=myM){addErr=true};
        }else{addErr=true}
      }
      if ((myV.length>0)&&(args[i+2]==4)){ // time
        var myMa=args[i+1].split("#"); var myAt=myV.match(myMa[0]);if(!myAt){addErr=true}
      }
      if (myV.length>0&&args[i+2]==5){ // check this 2
            var myObj1 = MM_findObj(args[i+1].replace(/\[\d+\]/ig,""));
      if(myObj1.length)myObj1=myObj1[args[i+1].replace(/(.*\[)|(\].*)/ig,"")];
            if(!myObj1.checked){addErr=true}
      }
      if (myV.length>0&&args[i+2]==6){ // the same
            var myObj1 = MM_findObj(args[i+1]);
            if(myV!=myObj1.value){addErr=true}
      }
    }else
    if (!myObj.type&&myObj.length>0&&myObj[0].type=='radio'){
          var myTest = args[i].match(/(.*)\[(\d+)\].*/i);
          var myObj1=(myObj.length>1)?myObj[myTest[2]]:myObj;
      if (args[i+2]==1&&myObj1&&myObj1.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true}
      if (args[i+2]==2){
        var myDot=false;
        for(var j=0;j<myObj.length;j++){myDot=myDot||myObj[j].checked}
        if(!myDot){myErr+='* ' +args[i+3]+'\n'}
      }
    }else
    if (myObj.type=='checkbox'){
      if(args[i+2]==1&&myObj.checked==false){addErr=true}
      if(args[i+2]==2&&myObj.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true}
    }else
    if (myObj.type=='select-one'||myObj.type=='select-multiple'){
      if(args[i+2]==1&&myObj.selectedIndex/1==0){addErr=true}
    }else
    if (myObj.type=='textarea'){
      if(myV.length<args[i+1]){addErr=true}
    }
    if (addErr){myErr+='* '+args[i+3]+'\n'; addErr=false}
  }
  if (myErr!=''){alert('The required information is incomplete or contains errors:\t\t\t\t\t\n\n'+myErr)}
  document.MM_returnValue = (myErr=='');
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}


window.name="base";

var formErrs = 0;
var sformErrs = "";
var sDataErrs="";

function resetFormErrors()
{
formErrs =0;
sformErrs = "";
sDataErrs= "";

}

function validateForm()
{
//debugger;
if (formErrs != 0)
   return false;
else
    return true;
}

function validateElement()
{
     var err =false;
     var objElement, hForm, hElement, hSetting, hDataType;

switch(validateElement.arguments.length)
{
   
      case 4:
         objElement =document.getElementById(validateElement.arguments[1]);
          if (objElement.type == "radio" || objElement.type == "checkbox")
           objElement =document.getElementsByName(validateElement.arguments[1]);

         if (!dataValidate(validateElement.arguments[2], objElement, validateElement.arguments[3]))
              err= true;

         break;

       case 7:
     

        objElement =document.getElementById(validateElement.arguments[1]);
         //debugger; 
         if (!dataValidate(validateElement.arguments[2], objElement, validateElement.arguments[3]))
              err= true;
         else if (dataValidate('1',objElement, ''))//if 1st element empty don't check 2nd.
         {
         objElement = "";
         objElement =document.getElementById(validateElement.arguments[4]);
         
         if (objElement.type == "radio" || objElement.type == "checkbox")
           objElement =document.getElementsByName(validateElement.arguments[4]);
         if (validateElement.arguments[5] != 2)//this can be either 1 or 3 not 2!
             hSetting = validateElement.arguments[5];
         else
             hSetting= "1";
         if (!dataValidate( hSetting, objElement, validateElement.arguments[6]))
             err= true;
         }

         break;
       default:
        errMessage ="Invalid number of arguments";
         break;
   }

if (err) //if err is true
 {
  //alert (validateElement.arguments[0]); //alert error
  sformErrs=sformErrs+"\n"+validateElement.arguments[0]+ " " + sdataErrs+ "\t";
  if (objElement.type == "text")
      objElement.focus();
 formErrs ++;
 return false;
 }
else
 return true; //no errors found

}


function dataValidate(setting, objElement, dataType)
{
sdataErrs="";
//debugger;
switch (setting)
         {
         case '1'://check for null, field is required
         if (objElement.type =="text" || objElement.type == "select-one") //validate only text boxes
              if (objElement.value == "")
                return false;
              else
                 return true;
          else //not a text box
               return validate_Check_n_Radio(objElement); //if null
              break;

         case '2'://if not null validate data type

            if (objElement.type =="text" || objElement.type == "select-one") //validate only text boxes
                if (objElement.value == "") //if null
                   return true;
                 else
                   return checkDataType (dataType, objElement.value);
             else //not a text box
               return validate_Check_n_Radio(objElement); //if null
            break;

         case '3':// check for null and valid data type
           if (objElement.type =="text" || objElement.type == "select-one") //validate only text boxes
                 if (objElement.value == "")
                   return false;
                else
                  return checkDataType (dataType, objElement.value);
             else //not a text box
                return validate_Check_n_Radio(objElement); //if null
            break;

         default:
            return false;
         }

}


function checkDataType (dataType, data)
{
//debugger;
 switch(dataType)
         {
         
          case "alpha":
              if (data.match ("^[a-z A-Z\.\'-]+$"))
                    return true;
              else
              {
				 sdataErrs += " Invalid Text ";
                 return false;
              }
          case "alphanumeric":
            if (data.match ("^[a-z A-Z0-9\'\,\#\%\&-]+$"))
               return true;
            else
            {
               sdataErrs += " Invalid Text ";
               return false;
			}
          case "numeric":
            if (data.match ("[0-9]"))
              return true;
            else
             {
               sdataErrs += " Invalid Text ";
               return false;
             }
          case "email":
          
          
          var filter  = /^([a-zA-Z0-9_\.\'\-])+\@(([a-zA-Z0-9\-\'\_])+\.)+([a-zA-Z0-9\-\_]{2,4})+$/;
          if (filter.test(data))
           {
            for (var i =0; i < data.length; i++)
             {
             if (data.charAt(0)== "." || data.charAt(0)== "_" || data.charAt(0)== "-")
             {
               sdataErrs += " Invalid Email Text ";
               return false;
			 }
             if (data.charAt(data.length-1)== "." || data.charAt(data.length-1)== "_" || data.charAt(data.length-1)== "-" || data.charAt(data.length-1)== "'" || data.charAt(data.length-1)== '"')
             {
               sdataErrs += " Invalid Email Text ";
               return false;
			 }
              if (data.charAt(i) == "." && data.charAt(i+1) == ".")
              {
               sdataErrs += " Invalid Email Text ";
               return false;
			  }

              if (data.charAt(i) == "." && data.charAt(i+1) == "-")
              {
               sdataErrs += " Invalid Email Text ";
               return false;
			  }

              if (data.charAt(i) == "." && data.charAt(i+1) == "_")
              {
               sdataErrs += " Invalid Email Text ";
               return false;
			  }

              if (data.charAt(i) == "." && data.charAt(i-1) == ".")
              {
               sdataErrs += " Invalid Email Text ";
               return false;
			  }

              if (data.charAt(i) == "." && data.charAt(i-1) == "-")
              {
               sdataErrs += " Invalid Email Text ";
               return false;
			  }

              if (data.charAt(i) == "." && data.charAt(i-1) == "_")
              {
               sdataErrs += " Invalid Email Text ";
               return false;
			  }

             }
            return true;
           }
          else
          {
             sdataErrs += " Invalid Email Text ";
             return false;
		  }

           case "areacode":
            
            if (data.match ("[0-9]") && data.length ==3)
            {
             
              var c;
              for (var i =0; i < data.length; i++)
              {
                 
                c = data.charAt(i);
                if (!(c>="0"&&c<="9"))
                {
                     
                    sdataErrs += " Invalid Areacode";
                    return false;
			    }
              }  
              return true;
            }
            else
            {
               
               sdataErrs += " Invalid Areacode";
               return false;
			}
           case "phoneprefix":
             
            if (data.match ("[0-9]")&& data.length ==3)
              {
              var c;
              for (var i =0; i < data.length; i++)
              {
                c = data.charAt(i);
                if (!(c>="0"&&c<="9"))
                {
                    sdataErrs += " Invalid Phone Prefix";
                    return false;
			    }
              }  
              return true;
            }
            else
            {
               sdataErrs += " Invalid Phone Prefix ";
               return false;
			}
           case "phonesuffix":
            if (data.match ("[0-9]")&& data.length ==4)
              {
              var c;
              for (var i =0; i < data.length; i++)
              {
                c = data.charAt(i);
                if (!(c>="0"&&c<="9"))
                {
                    sdataErrs += " Invalid Phone Suffix";
                    return false;
			    }
              }  
              return true;
            }
            else
            {
               sdataErrs += " Invalid Phone Suffix ";
               return false;
			}
	    case "phoneext":
             
            if (data.match ("[0-9]")&& data.length <=5)
              {
              var c;
              for (var i =0; i < data.length; i++)
              {
                c = data.charAt(i);
                if (!(c>="0"&&c<="9"))
                {
                    sdataErrs += " Invalid Phone Extension";
                    return false;
			    }
              }  
              return true;
            }
            else
            {
               sdataErrs += " Invalid Phone Extension ";
               return false;
	     }
	           
            case "zipcode5":
            if (data.match ("[0-9]")&& data.length ==5)
              {
              var c;
              for (var i =0; i < data.length; i++)
              {
                c = data.charAt(i);
                if (!(c>="0"&&c<="9"))
                {
                    sdataErrs += " Invalid ZIP code";
                    return false;
			    }
              }  
              return true;
            }
            else
            {
               sdataErrs += " Invalid ZIP code";
               return false;
			}
			case "zip4":
            if (data.match ("[0-9]"))
              {
              var i;
              var c;
              for (i =0; i < data.length; i++)
              {
                c = data.charAt(i);
                if (!(c>="0"&&c<="9"))
                {
                    sdataErrs += " Invalid ZIP code + 4";
                    return false;
			    }
              }  
              if (data.length<4&&data.length>0)
              {
                    sdataErrs += " Invalid ZIP code + 4";
                    return false;
              }
              return true;
            }
            else
            {
               sdataErrs += " Invalid  ZIP code + 4.";
               return false;
			}
        default:
        sdataErrs += " Invalid  Invalid Data Type ";
        return false;

       }

}

function validate_Check_n_Radio(objElement)
{
 //debugger;
 for (i = 0; i < objElement.length; i++)
 {
  if (objElement[i].checked == true)
      return true;
  }
 sdataErrs = " Selection is required ";
 return false;
}

function showPageErrors()
{		
	if (sformErrs.length>0)
	{
	     var StaticMsg = "In order to proceed with your registration, you must provide the appropriate data for the field(s) listed below.\n";
	    StaticMsg += "\nThe following fields are currently blank or invalid:\n";
	    StaticMsg += sformErrs;
		alert(StaticMsg);
	}
}
