  function checkforspaces(val){
if(val=="")return false;
  str=val.split("");
  ctr=0;
  for(j=0;j<str.length;j++){
   if(str[j].charCodeAt(0)!=32){
     ctr++;
     break;
   }
  }
  if(ctr>0){
   return true;
  }
  else{
    return false;
  }

}
function trim_spaces(val){
if(val=="")return "";
  str=val.split("");
  str2=val.split("");
  for(mj=0;mj<str2.length;mj++){
   if(str2[mj].charCodeAt(0)!=32){
     break;
   }
   else{
    str.shift();
   }
  }
  if(str.length==0||str==null)return "";
  str.reverse();
  str2=str.join("");
  str2=str2.split("");
  for(mj=0;mj<str2.length;mj++){
   if(str2[mj].charCodeAt(0)!=32){
     break;
   }
   else{
    str.shift();
   }
  }
   str.reverse();
   str=str.join("");
    return str;
}
function retDateFields(refObj,ii,validparams){
year="";
mon="";
day="";
myfld=refObj.elements[ii];
if(refObj.elements[ii+1]!=null&&refObj.elements[ii+2]!=null){
  retdata=returnFormObj(validparams,refObj.elements[ii+1].name);

  if(retdata[1].split("=")[0].split("")[0].toLowerCase()=="y")
  {
  year=trim_spaces(refObj.elements[ii+1].value);
  refObj.elements[ii+1].value=trim_spaces(refObj.elements[ii+1].value);
  }

  if(retdata[1].split("=")[0].split("")[0].toLowerCase()=="m")
  {
  mon=trim_spaces(refObj.elements[ii+1].value);
  refObj.elements[ii+1].value=trim_spaces(refObj.elements[ii+1].value);
  }
  if(retdata[1].split("=")[0].split("")[0].toLowerCase()=="d"){
  day=trim_spaces(refObj.elements[ii+1].value);
  refObj.elements[ii+1].value=trim_spaces(refObj.elements[ii+1].value);
  }
  retdata=returnFormObj(validparams,refObj.elements[ii+2].name);
  if(retdata[1].split("=")[0].split("")[0].toLowerCase()=="y")
  {
  year=trim_spaces(refObj.elements[ii+2].value);
  refObj.elements[ii+2].value=trim_spaces(refObj.elements[ii+2].value);
  }
  if(retdata[1].split("=")[0].split("")[0].toLowerCase()=="m")
  {
  mon=trim_spaces(refObj.elements[ii+2].value);
  refObj.elements[ii+2].value=trim_spaces(refObj.elements[ii+2].value);
  }
  if(retdata[1].split("=")[0].split("")[0].toLowerCase()=="d")
  {
  day=trim_spaces(refObj.elements[ii+2].value);
  refObj.elements[ii+2].value=trim_spaces(refObj.elements[ii+2].value);
  }
  retdata=returnFormObj(validparams,refObj.elements[ii].name);
  if(retdata[1].split("=")[0].split("")[0].toLowerCase()=="y")
  {
  year=trim_spaces(refObj.elements[ii].value);
  refObj.elements[ii].value=trim_spaces(refObj.elements[ii].value);
  }
  if(retdata[1].split("=")[0].split("")[0].toLowerCase()=="m")
  {
  mon=trim_spaces(refObj.elements[ii].value);
  refObj.elements[ii].value=trim_spaces(refObj.elements[ii].value);
  }
  if(retdata[1].split("=")[0].split("")[0].toLowerCase()=="d")
  {
  day=trim_spaces(refObj.elements[ii].value);
  refObj.elements[ii].value=trim_spaces(refObj.elements[ii].value);
  }
   maxi=ii+2;

  if(year==""||mon==""||day==""){
  mydateinfo="oneblank_"+maxi;
  //alert(year+"-"+mon+"-"+day);
  }
  if(year==""&&mon==""&&day==""){
   mydateinfo="allblank_"+maxi;
  }
  if(year!=""&&mon!=""&&day!=""){
  mydateinfo=year+"-"+mon+"-"+day+"_"+maxi;
  }
  // alert(year+"-"+mon+"-"+day);

}
else{
  mydateinfo="nottocheck";
}

 return mydateinfo;
}
//=====================================================================================================================
function retDobFields(refObj,ii,validparams){
year="";
mon="";
day="";
myfld=refObj.elements[ii];
if(refObj.elements[ii+1]!=null&&refObj.elements[ii+2]!=null){
  retdata=returnFormObj(validparams,refObj.elements[ii+1].name);
  if(retdata[1].split("=")[0].split("_")[0].toLowerCase()=="doby")
  {
  year=trim_spaces(refObj.elements[ii+1].value);
  refObj.elements[ii+1].value=trim_spaces(refObj.elements[ii+1].value);
  }
  if(retdata[1].split("=")[0].split("_")[0].toLowerCase()=="dobm")
  {
  mon=trim_spaces(refObj.elements[ii+1].value);
  refObj.elements[ii+1].value=trim_spaces(refObj.elements[ii+1].value);
  }
  if(retdata[1].split("=")[0].split("_")[0].toLowerCase()=="dobd")
  {
  day=trim_spaces(refObj.elements[ii+1].value);
  refObj.elements[ii+1].value=trim_spaces(refObj.elements[ii+1].value);
  }
   retdata=returnFormObj(validparams,refObj.elements[ii+2].name);
   if(retdata[1].split("=")[0].split("_")[0].toLowerCase()=="doby")
   {
   year=trim_spaces(refObj.elements[ii+2].value);
   refObj.elements[ii+2].value=trim_spaces(refObj.elements[ii+2].value);
   }
  if(retdata[1].split("=")[0].split("_")[0].toLowerCase()=="dobm")
  {
  mon=trim_spaces(refObj.elements[ii+2].value);
  refObj.elements[ii+2].value=trim_spaces(refObj.elements[ii+2].value);

  }
  if(retdata[1].split("=")[0].split("_")[0].toLowerCase()=="dobd")
  {
  day=trim_spaces(refObj.elements[ii+2].value);
  refObj.elements[ii+2].value=trim_spaces(refObj.elements[ii+2].value);
  }
   retdata=returnFormObj(validparams,refObj.elements[ii].name);
  if(retdata[1].split("=")[0].split("_")[0].toLowerCase()=="doby")
  {
  year=trim_spaces(refObj.elements[ii].value);
  refObj.elements[ii].value=trim_spaces(refObj.elements[ii].value);
  }
  if(retdata[1].split("=")[0].split("_")[0].toLowerCase()=="dobm")
  {
  mon=trim_spaces(refObj.elements[ii].value);
  refObj.elements[ii].value=trim_spaces(refObj.elements[ii].value);
  }
  if(retdata[1].split("=")[0].split("_")[0].toLowerCase()=="dobd")
  {
  day=trim_spaces(refObj.elements[ii].value);
  refObj.elements[ii].value=trim_spaces(refObj.elements[ii].value);
  }
   maxi=ii+2;
  if(year==""||mon==""||day==""){
  mydateinfo="oneblank_"+maxi;
  //alert(year+"-"+mon+"-"+day);
  }
  if(year==""&&mon==""&&day==""){
   mydateinfo="allblank_"+maxi;
  }
  if(year!=""&&mon!=""&&day!=""){
  mydateinfo=year+"-"+mon+"-"+day+"_"+maxi;
  }
 // alert(year+"-"+mon+"-"+day);

}
else{
  mydateinfo="nottocheck";
}
 return mydateinfo;
}

function returnFormObj(validparams,fldname){
 var obj=new Array(0,0) ;
 var frmfields=validparams.split(",");
 for(h=0;h<frmfields.length;h++){
  td=frmfields[h];
  td=td.split(":");
  if(td[0]!=null&&td[1]!=null){
  if(fldname.toLowerCase()==td[0].toLowerCase()){
    obj=new Array(fldname,td[1]);
    break;
  }
  }
 }
 return obj;
}
//=====================================================================================================================
function validateme(refObj,validparams,your_Func){
var alertmsg="";
var focusfld=null;
var counter=false;
var single_param;
var todate=new Date();
//alert(" Date : "+todate.getDate()+" Month : "+todate.getMonth()+" Year : "+todate.getYear());
var tdate=todate.getDate();
var tmon=todate.getMonth()+1;
var tyear=todate.getYear();
if(checkforspaces(validparams)==false || refObj==null)return true;
  for(i=0;i<refObj.elements.length;i++){
  fld=refObj.elements[i];
  if(fld.type.toLowerCase()!="submit" &&fld.type.toLowerCase()!="hidden" &&fld.type.toLowerCase()!="radio" &&fld.type.toLowerCase()!="checkbox"){
    single_param=returnFormObj(validparams,fld.name);
     if(single_param[0]!=0){
      val=single_param[1].split("=");
      if(val[1]==null)val[1]="";
      switch (val[0].toLowerCase()){
      case "sr":

     if(checkforspaces(fld.value)==false)
       {
        fld.value="";
        counter=true;
      	alertmsg=alertmsg+">> "+val[1]+" field can't be blank.\n";
       }
     fld.value=trim_spaces(fld.value);
      break;
      case "nr":
      if(checkforspaces(fld.value)==false)
       {
        fld.value="";
        counter=true;
      	alertmsg=alertmsg+">> "+val[1]+" field can't be blank.\n";
       }
       else{
         if(isNaN(Number(fld.value))){
         counter=true;
      	 alertmsg=alertmsg+">> "+val[1]+" field value must be a number.\n";
         }
       }
      break;
      case "nn":
      if(checkforspaces(fld.value)==false)
       {
        fld.value="";
       }
       else{
         if(isNaN(Number(fld.value))){
         counter=true;
      	 alertmsg=alertmsg+">> "+val[1]+" field value must be a number.\n";
         }
       }
      break;
      case "emr":
       if(checkforspaces(fld.value)==false)
       {
        fld.value="";
        counter=true;
      	alertmsg=alertmsg+">> "+val[1]+" field can't be blank.\n";
       }
       else{
       fld.value=trim_spaces(fld.value);
         if(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(fld.value))){
         counter=true;
      	 alertmsg=alertmsg+">> "+val[1]+" field value is not a proper email address.\n";
         }
       }
      break;
      case "emn":
      if(checkforspaces(fld.value)==false)
       {
        fld.value="";
       }
       else{
        fld.value=trim_spaces(fld.value);
         if(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(fld.value))){
         counter=true;
      	 alertmsg=alertmsg+">> "+val[1]+" field value is not a proper email address.\n";
         }
       }
      break;
     case "dtr":

      if(checkforspaces(fld.value)==false)
       {
       fld.value="";
        if(val[1]==null||val[1]==""||val.length<3||val[1].length>1||val[2]==null||val[2]=="")break;
       counter=true;
	   alertmsg=alertmsg+">> "+val[2]+" field value is required and should be in yyyy"+val[1]+"mm"+val[1]+"dd like "+tyear+val[1]+tmon+val[1]+tdate+".\n";
      }
      else{
       if(val[1]==null||val[1]==""||val.length<3||val[1].length>1||val[2]==null||val[2]=="")break;
      dtval=refObj.elements[i].value.split(val[1]);
      if(dtval.length==1){
      counter=true;
      alertmsg=alertmsg+">> "+val[2]+" field contains invalid date data and should be in yyyy"+val[1]+"mm"+val[1]+"dd like  "+tyear+val[1]+tmon+val[1]+tdate+".\n";
      break;
      }
      err=0;
      if(isNaN(Number(dtval[0]))){
        err++;
      }
      if(isNaN(Number(dtval[1]))){
       err++;
      }
      if(isNaN(Number(dtval[2]))){
        err++;
      }
      if(isNaN(Number(dtval[0]))==false && dtval[0].length<4){
        err++;
         counter=true; alertmsg=alertmsg+">> Year part of "+val[2]+" field  should be in long like i.e. "+tyear+".\n";
      }
      if(isNaN(Number(dtval[1]))==false && dtval[1].length>2&&Number(dtval[1])>12&&Number(dtval[1])<1){
       err++;
      }
      if(isNaN(Number(dtval[2]))==false && dtval[2].length>2&&Number(dtval[2])>31&&Number(dtval[2])<1){
      err++;
      }
   daylist="31-00-31-30-31-30-31-31-30-31-30-31";
   daylist=daylist.split("-");
   if(isNaN(Number(dtval[0]))==false &&isNaN(Number(dtval[1]))==false &&isNaN(Number(dtval[2]))==false && dtval[0].length==4){
      if(Number(dtval[0])%4==0)daylist[1]="29"; else daylist[1]="28";
    	if(Number(daylist[Number(dtval[1])-1])<Number(dtval[2])){
   		 err++;
    	}
   }
   if(err>0){ counter=true; alertmsg=alertmsg+">> "+val[2]+" field  contains invalid date.\n";}
   else{
   		dtval[1]=(Number(dtval[1])<10)? "0"+Number(dtval[1]):Number(dtval[1]);
       dtval[2]=(Number(dtval[2])<10)? "0"+Number(dtval[2]):Number(dtval[2]);
       fld.value=dtval[0]+val[1]+dtval[1]+val[1]+dtval[2];
       }
   }
      break;


      case "dtn":
      if(checkforspaces(fld.value)==false)
       {
       fld.value="";
       }
      else{
      if(val[1]==null||val[1]==""||val.length<3||val[1].length>1||val[2]==null||val[2]=="")break;
      dtval=refObj.elements[i].value.split(val[1]);
      if(dtval.length==1){
      counter=true;
      alertmsg=alertmsg+">> "+val[2]+" field contains invalid date data and should be in yyyy"+val[1]+"mm"+val[1]+"dd like  "+tyear+val[1]+tmon+val[1]+tdate+".\n";
      break;
      }
      err=0;
      if(isNaN(Number(dtval[0]))){
        err++;
      }
      if(isNaN(Number(dtval[1]))){
       err++;
      }
      if(isNaN(Number(dtval[2]))){
        err++;
      }
      if(isNaN(Number(dtval[0]))==false && dtval[0].length<4){
        err++;
         counter=true; alertmsg=alertmsg+">> Year part of "+val[2]+" field  should be in long like i.e. "+tyear+".\n";
      }
      if(isNaN(Number(dtval[1]))==false && dtval[1].length>2&&Number(dtval[1])>12&&Number(dtval[1])<1){
       err++;
      }
      if(isNaN(Number(dtval[2]))==false && dtval[2].length>2&&Number(dtval[2])>31&&Number(dtval[2])<1){
      err++;
      }
   daylist="31-00-31-30-31-30-31-31-30-31-30-31";
   daylist=daylist.split("-");
   if(isNaN(Number(dtval[0]))==false &&isNaN(Number(dtval[1]))==false &&isNaN(Number(dtval[2]))==false && dtval[0].length==4){
      if(Number(dtval[0])%4==0)daylist[1]="29"; else daylist[1]="28";
    	if(Number(daylist[Number(dtval[1])-1])<Number(dtval[2])){
   		 err++;
    	}
   }
   if(err>0){ counter=true; alertmsg=alertmsg+">> "+val[2]+" field  contains invalid date.\n";}
    else{
        dtval[1]=(Number(dtval[1])<10)? "0"+Number(dtval[1]):Number(dtval[1]);
       dtval[2]=(Number(dtval[2])<10)? "0"+Number(dtval[2]):Number(dtval[2]);
       fld.value=dtval[0]+val[1]+dtval[1]+val[1]+dtval[2];
       }
   }
      break;



     case "dr":
      case "mr":
      case "yr":
      //statements;
      retval=retDateFields(refObj,i,validparams);
      if(retval=="nottocheck")break;
      retval=retval.split("_");
      i=Number(retval[1]);
      if(retval[0]=="oneblank"||retval[0]=="allblank"){
       counter=true;
       //alert(retval[0]);
      	 alertmsg=alertmsg+">> "+val[1]+" field value is required.\n";
      }
      else{
      dtval=retval[0].split("-");
      err=0;
      if(isNaN(Number(dtval[0]))){
        err++;
      }
      if(isNaN(Number(dtval[1]))){
       err++;
      }
      if(isNaN(Number(dtval[2]))){
        err++;
      }
      if(isNaN(Number(dtval[0]))==false && dtval[0].length<4){
        err++;
         counter=true; alertmsg=alertmsg+">> Year part of "+val[1]+" field  should be in long like i.e. "+tyear+".\n";
      }
      if(isNaN(Number(dtval[1])) || dtval[1].length>2||Number(dtval[1])>12||Number(dtval[1])<1){
       err++;
      }
      if(isNaN(Number(dtval[2])) || dtval[2].length>2||Number(dtval[2])>31||Number(dtval[2])<1){
      err++;
      }
   daylist="31-00-31-30-31-30-31-31-30-31-30-31";
   daylist=daylist.split("-");
   if(isNaN(Number(dtval[0]))==false &&isNaN(Number(dtval[1]))==false &&isNaN(Number(dtval[2]))==false && dtval[0].length==4){
      if(Number(dtval[0])%4==0)daylist[1]="29"; else daylist[1]="28";
    	if(Number(daylist[Number(dtval[1])-1])<Number(dtval[2])){
   		 err++;
    	}
   }
   if(err>0){ counter=true; alertmsg=alertmsg+">> "+val[1]+" field  contains invalid date.\n";}
   }
      break;
      case "dn":
      case "mn":
      case "yn":
      retval=retDateFields(refObj,i,validparams);
      if(retval=="nottocheck")break;
      retval=retval.split("_");
     // alert(retval[0]);
      i=Number(retval[1]);
      if(retval[0]=="allblank"){
       //do nothing
      }
      else{
      if(retval[0]=="oneblank"){
       counter=true;
       alertmsg=alertmsg+">> Fill all date part values of "+val[1]+" field.\n";
      }
      else{
      dtval=retval[0].split("-");
      err=0;
      if(isNaN(Number(dtval[0]))){
        err++;
      }
      if(isNaN(Number(dtval[1]))){
       err++;
      }
      if(isNaN(Number(dtval[2]))){
        err++;
      }
      if(isNaN(Number(dtval[0]))==false && dtval[0].length<4){
        err++;
        counter=true; alertmsg=alertmsg+">> Year part of "+val[1]+" field  should be in long like i.e. "+tyear+".\n";
      }
      if(isNaN(Number(dtval[1])) || dtval[1].length>2||Number(dtval[1])>12||Number(dtval[1])<1){
       err++;
      }
      if(isNaN(Number(dtval[2]))|| dtval[2].length>2||Number(dtval[2])>31||Number(dtval[2])<1){
      err++;
      }
   daylist="31-00-31-30-31-30-31-31-30-31-30-31";
   daylist=daylist.split("-");
   if(isNaN(Number(dtval[0]))==false &&isNaN(Number(dtval[1]))==false &&isNaN(Number(dtval[2]))==false && dtval[0].length==4){
      if(Number(dtval[0])%4==0)daylist[1]="29"; else daylist[0]="28";
    	if(Number(daylist[Number(dtval[1])])<Number(dtval[2])){
   		 err++;
    	}
   }
   if(err>0){ counter=true; alertmsg=alertmsg+">> "+val[1]+" field  contains invalid date.\n";}
   }
   }
      break;

     case "dobd_r":
      case "dobm_r":
      case "doby_r":
      //statements;
      retval=retDobFields(refObj,i,validparams);
      if(retval=="nottocheck")break;
      retval=retval.split("_");
      i=Number(retval[1]);
      if(retval[0]=="oneblank"||retval[0]=="allblank"){
       counter=true;
       //alert(retval[0]);
      	 alertmsg=alertmsg+">> "+val[1]+" field is required.\n";
      }
      else{
      dtval=retval[0].split("-");
      err=0;
      if(isNaN(Number(dtval[0]))){
        err++;
      }
      if(isNaN(Number(dtval[1]))){
       err++;
      }
      if(isNaN(Number(dtval[2]))){
        err++;
      }
      if(isNaN(Number(dtval[0]))==false && dtval[0].length<4){
        err++;
         counter=true; alertmsg=alertmsg+">> Year part of "+val[1]+" field  should be in long like i.e. "+tyear+".\n";
      }
      if(isNaN(Number(dtval[1]))==false && dtval[1].length>2&&Number(dtval[1])>12&&Number(dtval[1])<1){
       err++;
      }
      if(isNaN(Number(dtval[2]))==false && dtval[2].length>2&&Number(dtval[2])>31&&Number(dtval[2])<1){
      err++;
      }
   daylist="31-00-31-30-31-30-31-31-30-31-30-31";
   daylist=daylist.split("-");
   if(isNaN(Number(dtval[0]))==false &&isNaN(Number(dtval[1]))==false &&isNaN(Number(dtval[2]))==false && dtval[0].length==4){
      if(Number(dtval[0])%4==0)daylist[1]="29"; else daylist[1]="28";
    	if(Number(daylist[Number(dtval[1])-1])<Number(dtval[2])){
   		 err++;
    	}
   }
   if(err>0){ counter=true; alertmsg=alertmsg+">> "+val[1]+" field  contains invalid date.\n";}
    else{
    if(err==0){
    yyyy=tyear;
    mmmm=tmon;
    mmmm--;
    dddd=tdate;
       mydob=new Date(yyyy,mmmm,dddd);
       givendob=new Date(Number(dtval[0]),Number(dtval[1])-1,Number(dtval[2]));
       if(givendob>=mydob){
         counter=true; alertmsg=alertmsg+">> Invalid date of birth given in "+val[1]+" field.\n";
       }

    }
   }
   }
      break;

      case "dobd_n":
      case "dobm_n":
      case "doby_n":
      retval=retDobFields(refObj,i,validparams);
      if(retval=="nottocheck")break;
      retval=retval.split("_");
     // alert(retval[0]);
      i=Number(retval[1]);
      if(retval[0]=="allblank"){
       //do nothing
      }
      else{
      if(retval[0]=="oneblank"){
       counter=true;
       alertmsg=alertmsg+">> Fill all date part values of "+val[1]+" field.\n";
      }
      else{
      dtval=retval[0].split("-");
      err=0;
      if(isNaN(Number(dtval[0]))){
        err++;
      }
      if(isNaN(Number(dtval[1]))){
       err++;
      }
      if(isNaN(Number(dtval[2]))){
        err++;
      }
      if(isNaN(Number(dtval[0]))==false && dtval[0].length<4){
        err++;
        counter=true; alertmsg=alertmsg+">> Year part of "+val[1]+" field  should be in long like i.e."+tyear+".\n";
      }
      if(isNaN(Number(dtval[1]))==false && dtval[1].length>2&&Number(dtval[1])>12&&Number(dtval[1])<1){
       err++;
      }
      if(isNaN(Number(dtval[2]))==false && dtval[2].length>2&&Number(dtval[2])>31&&Number(dtval[2])<1){
      err++;
      }
   daylist="31-00-31-30-31-30-31-31-30-31-30-31";
   daylist=daylist.split("-");
   if(isNaN(Number(dtval[0]))==false &&isNaN(Number(dtval[1]))==false &&isNaN(Number(dtval[2]))==false && dtval[0].length==4){
      if(Number(dtval[0])%4==0)daylist[1]="29"; else daylist[1]="28";
    	if(Number(daylist[Number(dtval[1])-1])<Number(dtval[2])){

   		 err++;
    	}
   }
   if(err>0){ counter=true; alertmsg=alertmsg+">> "+val[1]+" field  contains invalid date.\n";}
   else{
    if(err==0){
    yyyy=tyear;
    mmmm=tmon;
    mmmm--;
    dddd=tdate;
       mydob=new Date(yyyy,mmmm,dddd);
       givendob=new Date(Number(dtval[0]),Number(dtval[1])-1,Number(dtval[2]));
       if(givendob>=mydob){
         counter=true; alertmsg=alertmsg+">> Invalid date of birth given in "+val[1]+" field.\n";
       }

    }
   }
   }
   }
      break;
   case "dobr":

      if(checkforspaces(fld.value)==false)
       {
       fld.value="";
        if(val[1]==null||val[1]==""||val.length<3||val[1].length>1||val[2]==null||val[2]=="")break;
       counter=true;
	   alertmsg=alertmsg+">> "+val[2]+" field value is required and should be in yyyy"+val[1]+"mm"+val[1]+"dd like "+tyear+val[1]+tmon+val[1]+tdate+".\n";
      }
      else{

       if(val[1]==null||val[1]==""||val.length<3||val[1].length>1||val[2]==null||val[2]=="")break;
      dtval=refObj.elements[i].value.split(val[1]);
      if(dtval.length==1){
      counter=true;
      alertmsg=alertmsg+">> "+val[2]+" field contains invalid date data and should be in yyyy"+val[1]+"mm"+val[1]+"dd like "+tyear+val[1]+tmon+val[1]+tdate+".\n";
      break;
      }
      err=0;
      if(isNaN(Number(dtval[0]))){
        err++;
      }
      if(isNaN(Number(dtval[1]))){
       err++;
      }
      if(isNaN(Number(dtval[2]))){
        err++;
      }
      if(isNaN(Number(dtval[0]))==false && dtval[0].length<4){
        err++;
         counter=true; alertmsg=alertmsg+">> Year part of  "+val[2]+" field  should be in long like i.e. "+tyear+".\n";
      }
      if(isNaN(Number(dtval[1]))==false && dtval[1].length>2&&Number(dtval[1])>12&&Number(dtval[1])<1){
       err++;
      }
      if(isNaN(Number(dtval[2]))==false && dtval[2].length>2&&Number(dtval[2])>31&&Number(dtval[2])<1){
      err++;
      }
   daylist="31-00-31-30-31-30-31-31-30-31-30-31";
   daylist=daylist.split("-");
   if(isNaN(Number(dtval[0]))==false &&isNaN(Number(dtval[1]))==false &&isNaN(Number(dtval[2]))==false && dtval[0].length==4){
      if(Number(dtval[0])%4==0)daylist[1]="29"; else daylist[1]="28";
    	if(Number(daylist[Number(dtval[1])-1])<Number(dtval[2])){
   		 err++;
    	}
   }
   if(err>0){ counter=true; alertmsg=alertmsg+">> "+val[2]+" field  contains invalid date.\n";}
    else{
    if(err==0){
   yyyy=tyear;
    mmmm=tmon;
    mmmm--;
    dddd=tdate;
       mydob=new Date(yyyy,mmmm,dddd);
       givendob=new Date(Number(dtval[0]),Number(dtval[1])-1,Number(dtval[2]));
       if(givendob>=mydob){
         counter=true; alertmsg=alertmsg+">> Invalid date of birth given in "+val[2]+" field.\n";
       }else{
       dtval[1]=(Number(dtval[1])<10)? "0"+dtval[1]:dtval[1];
       dtval[2]=(Number(dtval[2])<10)? "0"+dtval[2]:dtval[2];
       fld.value=dtval[0]+val[1]+dtval[1]+val[1]+dtval[2];
       }

    }
   }
   }
      break;
      case "dobn":
      if(checkforspaces(fld.value)==false)
       {
       fld.value="";
       }
      else{
      if(val[1]==null||val[1]==""||val.length<3||val[1].length>1||val[2]==null||val[2]=="")break;
      dtval=refObj.elements[i].value.split(val[1]);
      if(dtval.length==1){
      counter=true;
      alertmsg=alertmsg+">> "+val[2]+" field contains invalid date data and should be in yyyy"+val[1]+"mm"+val[1]+"dd like "+tyear+val[1]+tmon+val[1]+tdate+".\n";
      break;
      }
      err=0;
      if(isNaN(Number(dtval[0]))){
        err++;
      }
      if(isNaN(Number(dtval[1]))){
       err++;
      }
      if(isNaN(Number(dtval[2]))){
        err++;
      }
      if(isNaN(Number(dtval[0]))==false && dtval[0].length<4){
        err++;
         counter=true; alertmsg=alertmsg+">> Year part of  "+val[2]+" field  should be in long like i.e."+tyear+".\n";
      }
      if(isNaN(Number(dtval[1]))==false && dtval[1].length>2&&Number(dtval[1])>12&&Number(dtval[1])<1){
       err++;
      }
      if(isNaN(Number(dtval[2]))==false && dtval[2].length>2&&Number(dtval[2])>31&&Number(dtval[2])<1){
      err++;
      }
   daylist="31-00-31-30-31-30-31-31-30-31-30-31";
   daylist=daylist.split("-");
   if(isNaN(Number(dtval[0]))==false &&isNaN(Number(dtval[1]))==false &&isNaN(Number(dtval[2]))==false && dtval[0].length==4){
      if(Number(dtval[0])%4==0)daylist[1]="29"; else daylist[1]="28";
    	if(Number(daylist[Number(dtval[1])-1])<Number(dtval[2])){
   		 err++;
    	}
   }
   if(err>0){ counter=true; alertmsg=alertmsg+">> "+val[2]+" field  contains invalid date.\n";}
    else{
    if(err==0){
    yyyy=tyear;
    mmmm=tmon;
    mmmm--;
    dddd=tdate;
       mydob=new Date(yyyy,mmmm,dddd);
       givendob=new Date(Number(dtval[0]),Number(dtval[1])-1,Number(dtval[2]));
       if(givendob>=mydob){
         counter=true; alertmsg=alertmsg+">> Invalid date of birth given "+val[2]+" field.\n";
       }
       else{
       dtval[1]=(Number(dtval[1])<10)? "0"+dtval[1]:dtval[1];
       dtval[2]=(Number(dtval[2])<10)? "0"+dtval[2]:dtval[2];
       fld.value=dtval[0]+val[1]+dtval[1]+val[1]+dtval[2];
       }

    }
   }
   }
      break;
   case "imgr":
         imagelist="jpg,jpeg,gif,bmp,png,pjpeg";
         imagelist=imagelist.toUpperCase();
         imagelist=imagelist.split(",");
          if(checkforspaces(fld.value)==false){
           counter=true; alertmsg=alertmsg+">> "+val[1]+" requires a valid image file.\n";
          }
          else{
         if(fld.value.split(".").length>1){
          ext=fld.value.split(".")[1].toUpperCase();
         valid=false;
         for(k=0;k<imagelist.length;k++){
          if(imagelist[k]==ext)valid=true;
         }
         if(valid==false){
            counter=true; alertmsg=alertmsg+">> File choosen for "+val[1]+" field is not a valid image file.\n";
         }
         }
         else{
            counter=true; alertmsg=alertmsg+">> "+val[1]+" requires a valid image file.\n";
         }
         }
   break;
   case "imgn":
         imagelist="jpg,jpeg,gif,bmp,png,pjpeg";
         imagelist=imagelist.toUpperCase();
         imagelist=imagelist.split(",");
          if(checkforspaces(fld.value)==false){
           fld.value="";
          }
          else{
         if(fld.value.split(".").length>1){
          ext=fld.value.split(".")[1].toUpperCase();
         valid=false;
         for(k=0;k<imagelist.length;k++){
          if(imagelist[k]==ext)valid=true;
         }
         if(valid==false){
            counter=true; alertmsg=alertmsg+">> File choosen for "+val[1]+" field is not a valid image file.\n";
         }
         }
         else{
            counter=true; alertmsg=alertmsg+">> "+val[1]+" requires a valid image file.\n";
         }
         }
   break;
   }//switch cases ends here.
      if(counter==true&&focusfld==null)focusfld=fld;
   }

  }
  }

  customfunction=eval(your_Func);
  if(customfunction!=null){
    msg="";
    retmsg=customfunction();
    if(retmsg!=""){
    counter=true;
    alertmsg=alertmsg+retmsg;
    }
  }

  if(counter==true){
  alert(alertmsg);
  if(focusfld!=null)focusfld.focus();
  return false;
  }
  else{
  return true;
  }
}