function formatState(element) {
	var objRegExp = /^[A-Za-z]{2}$/;
	if (objRegExp.test(element.value)) {
		upperCase(element);
	} else if (element.value != '') {
		element.focus();
		element.select();
	}
}

function formatPostalCode(element) {
	var objRegExp = /^(\d{5})-?(\d{4})?$/;
	if (objRegExp.test(element.value) && element.value.length > 5) {
		element.value = element.value.replace(objRegExp, "$1-$2");
	} else if (!objRegExp.test(element.value) && element.value != '') {
		element.focus();
		element.select();
	}
}

function formatPhoneNumber(element) {
	var objRegExp = /^.*(\d{3}).*(\d{3}).*(\d{4})$/;
	if (objRegExp.test(element.value)) {
		element.value = element.value.replace(objRegExp, "($1) $2-$3");
	} else if (element.value != '') {
		element.focus();
		element.select();
	}
}

function formatExtension(element) {
	var objRegExp = /^.*(\d{4})$/;
	if (objRegExp.test(element.value)) {
		element.value = element.value.replace(objRegExp, "$1");
	} else if (element.value != '') {
		element.focus();
		element.select();
	}
}

function formatTollFree(element) {
	var objRegExp = /^(1)?.*(\d{3}).*(\d{3}).*(\d{4})$/;
	if (objRegExp.test(element.value)) {
		element.value = element.value.replace(objRegExp, "$2-$3-$4");
	} else if (element.value != '') {
		element.focus();
		element.select();
	}
}

function formatEmail(element) {
	var objRegExp = /^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/;
	if (objRegExp.test(element.value)) {
		lowerCase(element);
	} else if (element.value != '') {
		element.focus();
		element.select();
	}
}

function formatURL(element) {
	var objRegExpProtocol = /^((http[s]?|ftp)\:\/\/)/;
	var objRegExp = /^((http[s]?|ftp)\:\/\/)?(.*)$/
	if (objRegExp.test(element.value)) {
		element.value = element.value.replace(objRegExp, "$1$3");
		if (!objRegExpProtocol.test(element.value) && element.value != '') {
			element.value = "http://" + element.value;
		}
	} else if (element.value != '') {
		element.focus();
		element.select();
	}
}

function formatDate(element) {
	var objRegExp = /^(\d{1,2})([-\/]|\. ?)(\d{1,2})\2((\d{4})|(\d{2}))$/;
	m = element.value.match(objRegExp)
	if (m != null) {
		day = m[3];
		month = m[1];
		year = (m[5].length == 4) ? m[5] : 20 + m[6]
		var date = new Date(year, month-1, day);
		element.value = formatDateTime(date, 'M/d/yyyy');
	} else if (element.value != '') {
		element.focus();
		element.select();
	}
}

function upperCase(element) {
	element.value = element.value.toUpperCase();
}

function lowerCase(element) {
	element.value = element.value.toLowerCase();
}

function limitCharacters(element, numberOfCharacters) {
	element.value = element.value.substring(0, numberOfCharacters);
}

function filterNonNumeric(element) {
	var result = new String();
	var numbers = "0123456789";
	var chars = element.value.split("");
	for (i = 0; i < chars.length; i++) {
		if (numbers.indexOf(chars[i]) != -1) result += chars[i];
	}
	if (element.value != result) element.value = result;
}