// find out what DOM to use
if (document.getElementById)
{
	DOMtype = "std";
}
else if (document.all)
{
	DOMtype = "ie4";
}
else if (document.layers)
{
	DOMtype = "ns4";
}

function grabobj(objname) // v1.0
{
var ret = null;
	switch (DOMtype)
	{
		case "std":
		{
			ret = document.getElementById(objname);
		}
		break;

		case "ie4":
		{
			ret = document.all[objname];
		}
		break;
		case "ns4":
		{
			ret = document.layers[objname];
		}
		break;
	}
return ret;
}
function isValid(string,allowed) {
    for (var i=0; i< string.length; i++) {
       if (allowed.indexOf(string.charAt(i)) == -1)
          return false;
    }
    return true;
}
function chkfields () // v1.0
{
	var errors="";
	var emailvalid  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var numbers = "0123456789";

	// FILTER
	// e=email
	// n=numbers
	// a=letters
	// s=just check for the special characters
	// an=alphanumeric
	
	// SPECIAL FILTERING	
	// any special characters also use in filtering?  i.e. @/,.'  if a \ or ", insert a \ before.
		
	// object id | filter | "R" for is this required? | special characters during filtering | minimum length | maximum length
	
	for(i=1;i<mt_fields.length;i=i+6)
	{
		var currenterror="";
		var obj = mt_fields[i-1];
		var objvalue = grabobj(obj).value;
		var params = mt_fields[i];
		var req = mt_fields[i+1];
		var specialchars = mt_fields[i+2];
		var minlength = mt_fields[i+3];
		var maxlength = mt_fields[i+4];
		var foundemail = false;
		if(alerttype == 1) { newline="\n"; }else{ newline="<br>"; }
		if (params)
		{
			if (req == "R" || objvalue){
				if (params == "E"){
					if (!emailvalid.test(objvalue))
					{
						currenterror=obj+": Invalid E-mail Entered"+newline;
					}	
				}
				if (params == "ED"){
					if (!emailvalid.test(objvalue))
					{
						currenterror=obj+": Invalid E-mail Entered"+newline;
					} else {
						if (grabobj("Confirm Email").value!=objvalue)
						{
							currenterror=obj+": confirmation does not match"+newline;
						}
					}
					
				}
			}
			if (params == "A"){ if (!isValid(objvalue,letters+specialchars)) { currenterror=obj+": Must contain only letters."+newline; } }
			if (params == "N"){ if (!isValid(objvalue,numbers+specialchars)) { currenterror=obj+": Must contain only numbers."+newline; } }
			if (params == "AN"){ if (!isValid(objvalue,letters+numbers+specialchars)) { currenterror=obj+":  Must contain only letters and numbers."+newline; } }
			if (params == "S"){ if (!isValid(objvalue,specialchars)) { currenterror=obj+":  Must contain only the character(s) \""+specialchars+"\"."+newline; } }
		}
		
		
		if (req == "R"){ if(!objvalue) { currenterror=obj+":  Required Field."+newline; } }
		if (!maxlength)
		{
			//max length
			if(objvalue.length < minlength)
			{
				currenterror=obj+":  Must contain a minimum of "+minlength+" characters."+newline;
			}
		} else if (!minlength)
		{
			if(objvalue.length > maxlength)
			{
			currenterror=obj+":  Must contain a maximum of "+maxlength+" characters."+newline;
			}
		} else if (minlength > 0 && maxlength > 0)
		{
			if(objvalue.length < minlength || objvalue.length > maxlength)
			{
			currenterror=obj+":  Must contain a minimum of "+minlength+" and maximum of "+maxlength+" characters."+newline;
			}
		}
		errors = errors+currenterror;
	}
	//////
	
	
	if(errors)
	{
		if(alerttype == 1)
		{
			alert ("The following error(s) occurred:\n\n"+errors);
		}else{
			grabobj(alerttype).innerHTML = "<b><font color=\"#FF0000\">The following error(s) occurred:</font></b><br>"+errors
		}
	}
	document.mt_return = (errors == '');
}