
function frm_submit(form_name, fields) {
	var hadError = false;
	var bad_fields = "";
	var frm = document.forms[form_name];	

	//fields = { Name:"reName", Email_Address:"reEmail" };

	reName = /[a-zA-Z\.,\- ]+/;
	reUsername = /[a-zA-Z0-9@_\.\-]+/;
	rePassword = /[a-zA-Z0-9_\.\-]+/;
	reEmail = /[a-zA-Z0-9\-\.\_]+@[a-zA-Z0-9\-\_]+\.[a-zA-Z0-9\-\.\_]+/;
	rePostal = /([a-zA-Z][0-9][a-zA-Z]\s?[0-9][a-zA-Z][0-9]|[0-9][0-9][0-9][0-9][0-9])/;
	reCity = /[a-zA-Z\.,\- ]+/;
	reAddress = /[0-9a-zA-Z\.,\- ]+/;
	reAge = /[0-9]+/;
	rePhone = /[0-9\-\. \(\)xXeEtT]+/;
	
	var inputs = frm.getElementsByTagName('input');
	for( var itm in inputs ) {
		if( fields[inputs[itm].name] ) {
			if( testField(inputs[itm].value, eval(fields[inputs[itm].name]), inputs[itm].name+"_err") ) { 
				hadError = true;
				if( bad_fields != "" ) bad_fields += ", ";
				bad_fields += inputs[itm].name;
			}
		}
	}
	var inputs = frm.getElementsByTagName('select');
	for( var itm in inputs ) {
		if( fields[inputs[itm].name] ) {
			if( testSelect(inputs[itm].value, inputs[itm].name+"_err") ) {
				hadError = true;
				if( bad_fields != "" ) bad_fields += ", ";
				bad_fields += inputs[itm].name;
			}
		}
	}
	if( bad_fields != "" && !(document.getElementById('errMissingFields') == null) ) {
		bad_fields = bad_fields.replace(/_/g, " ");
		document.getElementById('errMissingFields').innerHTML = bad_fields;
	}

	if( !hadError )	{
		setClassName(form_name+"_err","frmErrorMsg-off");
		frm.submit();			
	} else {
		setClassName(form_name+"_err","frmErrorMsg-on");
	}
}


function testField(val,re,errLayer) {
	if( !re.test(val) ) {
		setClassName(errLayer,"frmErrorMsg-on"); return true;
	} else {
		setClassName(errLayer,"frmErrorMsg-off"); return false;
	}
}
function testMatch(val,val2,errLayer) {
	if( val != val2 ) {
		setClassName(errLayer,"frmErrorMsg-on"); return true;
	} else {
		setClassName(errLayer,"frmErrorMsg-off"); return false;
	}
}
function testSelect(val,errLayer) {
	if( val == "" ) {
		setClassName(errLayer,"frmErrorMsg-on"); return true;
	} else {
		setClassName(errLayer,"frmErrorMsg-off"); return false;
	}
}
function testCheck(val,errLayer) {
	if( val == false ) {
		setClassName(errLayer,"frmErrorMsg-on"); return true;
	} else {
		setClassName(errLayer,"frmErrorMsg-off"); return false;
	}
}	

function setClassName(objId, className) {
	document.getElementById(objId).className = className;
}

var hand = function(str){
	var targetLayer = "username_err";
	window.document.getElementById(targetLayer).innerHTML=str;
	if( trim(str) == "" )	setClassName(targetLayer,"frmErrorMsg-off");
	else 					setClassName(targetLayer,"frmErrorMsg-on");
}	
function validateUsername(user) {
	var targetLayer = "username_err";
	var strDomain="";
	setClassName(targetLayer,"frmErrorMsg-on");
	window.document.getElementById(targetLayer).innerHTML="<font color='#005500'>Validating username...</font>";
	var ajax = new Ajax();
	ajax.doGet(strDomain+'library/ajaxvalidate.php?action=validateUsername&username='+user,hand,'text');
}		

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
