function MM_validateForm() { //v4.0
  if (document.getElementById){
  
  
    var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
      if (val) { 
        nm=args[i+1]; 
        if(!nm){nm=val.name;}; 
        if ((val=val.value)!="") {
          if (test.indexOf('isEmail')!=-1) { 
            p=val.indexOf('@');
            if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
          } else if (test.indexOf('Captcha')!=-1) { 
            var captcha=Javacrypt.crypt('zx',val.toLowerCase());
            var captcha_cookie = getCookie('captcha');
            //window.alert('captcha: '+val+', crypted: '+captcha[0]+', cookie: '+captcha_cookie);
            if (captcha[0] != captcha_cookie) errors+='- '+nm+' is incorrect.\n';
          } else if (test!='R') { 
            num = parseFloat(val);
            if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
            if (test.indexOf('inRange') != -1) {
              p=test.indexOf(':');
              min=test.substring(8,p); max=test.substring(p+1);
              if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
            } 
          } 
        } 
        else if (test.charAt(0) == 'R'){
          errors += '- '+nm+' is required.\n'; 
        }
      }
    } 
    if (errors) alert('The following error(s) occurred:\n'+errors);
    document.MM_returnValue = (errors == '');
  } 
}

function getCookie(c_name) {
  if (document.cookie.length>0) {
    c_start=document.cookie.indexOf(c_name + "=");
    if (c_start!=-1){
      c_start=c_start + c_name.length+1;
      c_end=document.cookie.indexOf(";",c_start);
      if (c_end==-1) c_end=document.cookie.length;
      return unescape(document.cookie.substring(c_start,c_end));
    }
  }
  return "";
}
