if (!(typeof(addEvent)=='function')) {
	function addEvent(name,obj,f) {
		if (window.attachEvent) {
			obj.attachEvent("on"+name,f);
		} else if (window.addEventListener) {
			obj.addEventListener(name,f,false);
		}
	}
}

function validphone(digits) {
	switch (digits.length) {
		case 11:
			if (digits.substr(0,1) == '1') {
				digits=digits.substr(1);
			} else {
				throw('Please double-check your phone number');
				break;
			}
		case 10:
			break;
		case 7:
			throw('Please include your area code.');
		case 0:
			return '';
			break;
		default:
			// You'da thunk "case 0" would take care of this, wouldn't you?
			if (digits.length != 0) {
				throw('Please double-check your phone number');
			}
	}

	return '('+digits.substr(0,3)+')'+' '+digits.substr(3,3)+'-'+digits.substr(6,4);
}
function phonecheck(r) {
	while (r.resultnode[0].hasChildNodes()) r.resultnode[0].removeChild(r.resultnode[0].firstChild);
	var digits=r.inputnode[0].node.value.replace(/[^0-9]/g,'');
	try {
		r.inputnode[0].node.value=validphone(digits);
	} catch (e) {
		r.resultnode[0].appendChild(document.createTextNode(e));
		return false;
	}
	return true;
}

addEvent('load',window,function() {
	var Checker = new formchk();
	Checker.addRule('email','emailerr',/^([\w][-._\w]*[\w]@([\w][-._\w]*[\w]\.[\w]{2,3}))?$/,'Please double-check your email address');
	Checker.addRule('phone','phoneerr',phonecheck);
	Checker.addRule('zip','ziperr',/^([0-9]{5}([- /]?[0-9]{4}))|([a-zA-Z]{1}[0-9]{1}[a-zA-Z]{1}(\-| |){1}[0-9]{1}[a-zA-Z]{1}[0-9]{1})?$/,'Please double-check your ZIP code');
	Checker.init();
});