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 '';
		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('newsletter');
	checker.addRule('first','firsterr',/\S/,'required');
	checker.addRule('last','lasterr',/\S/,'required');
	checker.addRule('email','emailerr',/^[\w][-._\w]*[\w]@([\w][-._\w]*[\w]\.[\w]{2,3})$/,'Please double-check your email address','required');
	checker.addRule('phone','phoneerr',phonecheck);
	checker.init();
});
