function $(v) { return(document.getElementById(v)); }
function $T(v,i) { return((typeof(i)=='string'?$(i):(i?i:document)).getElementsByTagName(v)); }
function addEvent( obj, type, fn ) {
	if ( obj.attachEvent ) {
		obj['e'+type+fn] = fn;
		obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
		obj.attachEvent( 'on'+type, obj[type+fn] );
	} else {
		obj.addEventListener( type, fn, false );
	}
}
function removeEvent( obj, type, fn ) {
	if ( obj.detachEvent ) {
		obj.detachEvent( 'on'+type, obj[type+fn] );
		obj[type+fn] = null;
	} else {
		obj.removeEventListener( type, fn, false );
	}
}

function validateCurrency(strValue) { return /(^\$\d{1,3}(,\d{3})*\.\d{2}$)|(^\(\$\d{1,3}(,\d{3})*\.\d{2}\)$)/.test(strValue); };
function validateEmail(strValue) { return /^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9_\-\.]*)(\.[a-z]{2,3}(\.[a-z]{2}){0,2})$/i.test(strValue); };
function validateTime(strValue) { return /^([1-9]|1[0-2]):[0-5]\d(:[0-5]\d(\.\d{1,3})?)?$/.test(strValue); };
function validateState(strValue) { return /^(AK|AL|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL|IN|KS|KY|LA|MA|MD|ME|MI|MN|MO|MS|MT|NB|NC|ND|NH|NJ|NM|NV|NY|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VA|VT|WA|WI|WV|WY)$/i.test(strValue); };
function validateSSN(strValue) { return /^\d{3}\-\d{2}\-\d{4}$/.test(strValue); };
function validatePhone(strValue) { return /^\([1-9]\d{2}\)\s?\d{3}\-\d{4}$/.test(strValue); };
function validateNumeric(strValue) { return /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/.test(strValue); };
function validateInteger(strValue) { return /(^-?\d\d*$)/.test(strValue); };
function validateNotEmpty(strValue) { if (trimAll(strValue) != '') { return true; } else { return false; }; };
function validateUSZip(strValue) { return /(^\d{5}$)|(^\d{5}-\d{4}$)/.test(strValue); };
function validateUSDate(strValue) { return /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/.test(strValue); };
function validateAgainst(strTmp, objRegEx) { return objRegEx.test(strTmp); }
function rightTrim(strValue) { return strValue.replace(/^([\w\W]*)(\b\s*)$/, ''); };
function leftTrim(strValue) { return strValue.replace(/^(\s*)(\b[\w\W]*)$/, ''); };
function trimAll(strValue) { return strValue.replace(/^(\s*)$/, ''); };
function removeCurrency(strValue) { return strValue.replace(/^\$/,''); }
function addCurrency(strValue) {
	if (!(/^\${0,1}[0-9]+(\.[0-9][0-9]){0,1}$/.test(strValue))) { return strValue; } // error: not a valid number just return original value
	if (/^\${0,1}[0-9]+$/.test(strValue)) { strValue += ".00"; } // add: added cents to number without
	if (/^\$[0-9]+(\.[0-9][0-9]){0,1}$/.test(strValue)) { return strValue; } // already: already valid currency format just return
	if (/^[0-9]+(\.[0-9][0-9]){0,1}$/.test(strValue)) { return "$"+strValue; } // add: added $ to number
	return strValue; //error: failed just return original value
}
function removeCents(strValue) { return strValue.replace(/[.][0-9][0-9]$/g, ''); };
function addCents(strValue) { 	if (/^\${0,1}[0-9]+$/.test(strValue)) { return strValue += ".00"; } else { return strValue; }; };
function removeCommas(strValue) { return strValue.replace(/,/g, ''); };
function addCommas(strValue) { return strValue.replace(/(-?[0-9]+)([0-9]{3})/g, '$1,$2'); };
function removeCharacters(strValue, objRegEx) { return strValue.replace(objRegEx, strToRemove); };

var validate_alpha		= /^[A-Za-z]*((\s)*[A-Za-z]*)*$/;
var validate_alphanumeric_nospace		= /^[A-Za-z0-9]$/;
var validate_password		= /^[A-Za-z0-9]{6,}$/;
var validate_password_shadow = 	validate_password;
var validate_notempty	= /^.+$/;
var validate_email		= /^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9_\-\.]*)(\.[a-z]{2,3}(\.[a-z]{2}){0,2})$/i;
var validate_money		= /^[0-9]+(\.[0-9][0-9]){0,1}$/;
var validationArray = new Array();
function addValidation(id, validationType) {
	validationArray[id] = validationType;
	if (validationType == 'money') {
		$(id).onblur = function() { this.value = addCents(removeCurrency(this.value)); validateThis(this.id); };
	} else if (validationType == 'xxxxxx') {
		
	} else {
		$(id).onblur = function() { validateThis(this.id); };
	}
	$(id).onfocus = function() { clearValidation(this.id); };
}
function validateThis(id) {
	if (validationArray[id] == 'password_shadow') { if($('passowrd') != $('passowrd_shadow')) { return false; }; };
	if (eval('validate_'+validationArray[id]).test($(id).value) ) { $(id+'_container').className = "Good"; return true; } else { $(id+'_container').className = "Error"; return false; };
};
function clearValidation(id) { $(id+'_container').className = ""; };
function validateAll() { validated = true; for (var id in validationArray) { if (!validateThis(id)) { validated = false; }; }; return validated; };