// ----------------------------------------------------------------------------
// 19/06/2008 3:12:32 PM apugh@sageinternet.com
// ----------------------------------------------------------------------------
// o Cleaned up code with Javascript Lint
// o Correxcted: comparisons against null, 0, true, false, or an empty string
//   allowing implicit type conversion to use === or !==
// ----------------------------------------------------------------------------
function MM_findObj(n, d) { //v4.01
	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);}
	if(!x && d.getElementById) {x=d.getElementById(n);}
	return x;
}

// ----------------------------------------------------------------------------
// 19/06/2008 3:12:35 PM apugh@sageinternet.com
// ----------------------------------------------------------------------------
// o Added validation for case when Form field name (args[i]) dos not exist on
//   page
// o Correxcted: comparisons against null, 0, true, false, or an empty string
//   allowing implicit type conversion to use === or !==
// o Added more robust email validation
// ----------------------------------------------------------------------------
function MM_validateForm() { //v4.0
	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=MM_findObj(args[i]);
		if (val !== null) {
			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{
						var filter= /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
						if (filter.test(val) === false){
							errors+='- '+nm+' must contain an e-mail address.\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';
			}
		}
		else {
			errors+='- '+args[i]+': The author of this page is attempting to validate this field but it does not exist in the page\n';
		}
	}
	if (errors) {alert('The following error(s) occurred:\n'+errors);}
	document.MM_returnValue = (errors === '');
}
