var reNonempty = /\S/;
var reZip = /^\d{5}(-\d{4})?$/;
var rePhone = /^\d{3}-\d{3}-\d{4}$/;
/*var reEmail = /^((?:(?:(?:[a-zA-Z0-9][\.\-\+_]?)*)[a-zA-Z0-9])+)\@((?:(?:(?:[a-zA-Z0-9][\.\-_]?){0,62})[a-zA-Z0-9])+)\.([a-zA-Z0-9]{2,6})$/;*/
var reEmail = /^([a-zA-Z0-9]+[\.\-\+_])*[a-zA-Z0-9]+\@([a-zA-Z0-9]+[\.\-_])*[a-zA-Z0-9]+\.[a-zA-Z0-9]{2,6}$/


function checkText( field ){
	field.value = normalizeSpaces( field.value );
	return field.value.length != 0;
}

function checkTextPattern( field, pattern ){
	field.value = normalizeSpaces( field.value );
	return pattern.test( field.value );
}

function checkNumberPattern( field, pattern ){
	field.value = normalizeHyphens( field.value );
	return pattern.test( field.value );
}

function normalizeSpaces( string ){
	return string.replace( /^\s+|\s+$/g, "" ).replace( /\s+/g, " " );
}

function normalizeHyphens( string ){
	return string.replace( /^\D+|\D+$/g, "" ).replace( /\D+/g, "-" );	
}







function checkedIndex( field ) {
	for ( var i = 0; i < field.length; i++ ) {
		if ( field[ i ].checked ) {
			return i;
		}
	}
	return -1;
}

function isChecked( field ) {
	return checkedIndex( field ) >= 0;
}

function checkedValue( field ) {
	var index = checkedIndex( field );
	if ( index < 0 ) die( "seeking value of unchecked radio buttons" );
	return field[ index ].value;
}

function disableRadio( field ) {
	for ( var i = 0; i < field.length; i++ ) {
		field[ i ].checked = false;
		field[ i ].disabled = true;
	}
}

function enableRadio( field ) {
	for ( var i = 0; i < field.length; i++ ) {
		field[ i ].disabled = false;
	}
}

function trimTextFields( form ) {
	for ( var i = 0; i < form.elements.length; i++ ) {
		if ( form.elements[ i ].type == "text" ) {
			form.elements[ i ].value = form.elements[ i ].value.replace( /^\s+|\s+$/g, "").replace( /\s+/g, " " );
		}
	}
}

function hyphenate( field ) {
	field.value = field.value.replace( /^\D+|\D+$/g, "" ).replace( /\D+/g, "-" );
}

function isFilled( field ) {
	return followsPattern( field, reNonempty );
}

function isZip( field ) {
	return followsPattern( field, reZip );
}

function isPhone( field ) {
	return followsPattern( field, rePhone );
}

function isEmail( field ) {
	return followsPattern( field, reEmail );
}

function followsPattern( field, pattern ) {
	if ( pattern.test( field.value ) ) {
		unhighlightField( field );
		return true;
	}
	highlightField( field );
	return false;
}

function hasBeenSelected( field ) {
	if ( field.selectedIndex == 0 ) {
		highlightField( field );
		return false;
	}
	unhighlightField( field );
	return true;
}

function highlightField( field ){
	field.style.backgroundColor = "#ccc";
	field.style.color = "#4b0082"; // indigo
}

function unhighlightField( field ){
	field.style.backgroundColor = "#fff";
	field.style.color = "#191970"; // midnightblue
}

function unhighlightAll( form ) {
	for ( var i = 0; i < form.elements.length; i++ ) {
		var elt = form.elements[ i ];
		if ( elt.type == "text" || elt.type == "select-one" || elt.type == "select-multiple" ) {
			unhighlightField( elt );
		}
	}
}
