function MM_validateForm() {
  var i,p,q,fm,nm,test,num,min,max,month,date,year,leaptest,leapyear,doberr,errors='',args=MM_validateForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) {fm=val.name; if ((val=val.value)!="") {
	                         if (fm=='mob') {month=val
							 } else if (fm=='dob') {date=val;
							                 if (isNaN(val)) {doberr=1
											 } else if (date!=Math.round(date)) {doberr=1
											 } else if (month=='Apr' || month=='Jun' || month=='Sept' || month=='Nov') {if (date<1 || date>30) {doberr=1}
							                 } else if (month=='Feb') {leaptest=1
											 } else {if (date<1 || date>31) {doberr=1}
											 }
							 } else if (fm=='yob' && doberr!=2) {year=val;
							                 if (isNaN(val)) {doberr=1
											 } else if (year!=Math.round(year)) {doberr=1
											 } else if (year<1870 || year>2030) {doberr=1
											 } else if (leaptest==1) {leapyear=year/4; if (leapyear!=Math.round(leapyear) || year==1900) {if (date<1 || date>28) {doberr=1}}
											 } else {if (date<1 || date>29) {doberr=1}
											 }
							 } else if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
                              if (p<1 || p==(val.length-1)) {nm=fmConvert(fm); errors+='- '+nm+' must contain an e-mail address.\n'};
                             } else if (test!='R') {
                                   if (isNaN(val)) {nm=fmConvert(fm); 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 (val<min || max<val) {nm=fmConvert(fm); errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n'};
                                        }
			                 }
		}
	 else if (test.charAt(0) == 'R') if (fm=='dob' || fm=='yob') {if (doberr!=2) {doberr=1}}
	                                    else {nm=fmConvert(fm); errors += '- '+nm+' is required.\n'}}; 
           	 if (doberr==1) {doberr=2; nm=fmConvert(fm); errors+='- '+nm+' is invalid.\n'}
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}

function fmConvert(fm) {
  var nm
  switch (fm)
  {
	case 'l_name':
	nm='Last Name'
	break
	case 'f_name':
	nm='First Name'
	break
	case 'dob':
	nm='Date of birth'
	break
	case 'yob':
	nm='Date of birth'
	break
	case 'addr_1':
	nm='Address'
	break
	case 'phone':
	nm='Phone'
	break
	case 'email':
	nm='Email'
	break
	case 'comments':
	nm='Comments'
	break
	};
	return nm
}