function rmFindObj(n, d)
{
     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=rmFindObj(n,d.layers[i].document);
     if  (!x && document.getElementById)
         x=document.getElementById(n);
     return x;
}

function rmValidateForm()
{
  var i,p,q,nm,test,myname,num,min,max,errors='',args=rmValidateForm.arguments;
  for (i=0; i<(args.length-2); i+=3)
  {
      test=args[i+2];
      val=rmFindObj(args[i]);
      if (val)
      {
           nm=val.name;
           myname=getName(nm);
           if ((val=val.value)!="")
           {
               if (test.indexOf('isEmail')!=-1)
               {
                  p=val.indexOf('@');
                  if (p<1 || p==(val.length-1))
                     errors+='- '+myname+' must contain an e-mail address.\n';
               }
               else if (test!='R')
               {
                  if (isNaN(val)) errors+='- '+myname+' must contain a number.\n';
                  if (test.indexOf('inRange') != -1)
                  {
                     p=test.indexOf(':');
                     min=test.substring(8,p);
                     max=test.substring(p+1);
                     if (val<min || max<val)
                        errors+='- '+myname+' must contain a number between '+min+' and '+max+'.\n';
                  }
                }
            }
            else if (test.charAt(0) == 'R')
               errors += '- '+myname+' is required.\n';
       }
   }
   if (errors) alert('The following error(s) occurred:\n'+errors);
   document.rmReturnValue = (errors == '');
}

