function inValidCharSet(str,charset)
{
	var result = true;

	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}
	
	return result;
}
function allDigits(str) {
	return inValidCharSet(str,"0123456789");
}
function isDate(formField) {
	var elems = formField.value.split("-");
	result = (elems.length == 3); // should be three components
	
	if (result)	{
		var month = parseInt(elems[1],10);
		var day = parseInt(elems[2],10);
		var year = parseInt(elems[0],10);
		result = allDigits(elems[1]) && (month > 0) && (month < 13) &&
			 	 allDigits(elems[2]) && (day > 0) && (day < 32) &&
			 	 allDigits(elems[0]) && (elems[0].length == 4) && (year > 2000);
	}
	
	return result;
}
function stripCommas(numString) {
	var re = /,/g;
	return numString.replace(re,"");
}
function isNotEmpty(elem) {
	var str = elem.value;
	var re = /.+/;
	if (!str.match(re)) {
		return false;
	}
	else {
		return true;
	}
}
function isNumber(elem) {
	var str = elem.value;
	var re = /^[-]?\d*\.?\d*$/;
	str = str.toString();
	if (!str.match(re)) {
		return false;
	}
	else {
		return true;
	}
}
function isCurrency(elem) {
	var str = elem.value.replace( /\,/g, "");;
	var re = /^[-]?\d*\.?\d*$/; // check if number
	str = str.toString();
	if (!str.match(re)) {
		return false;
	}
	else {
		return true;
	}
}
function isEMailAddr(elem) {
	var str = elem.value;
	var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
	if (!str.match(re)) {
		return false;
	}
	else {
		return true;
	}
}
function isPhoneNum(elem) {
	var str = elem.value;
	var re1 = /[(][0-9]{3}[)][ ]*[0-9]{3}-[0-9]{4}/;
	var re2 = /[0-9]{3}[ -.][0-9]{3}[ -.][0-9]{4}/;
	var re3 = /[0-9]{10}/;
	if ( str.match(re1) || str.match(re2) || str.match(re3) ) {
		return true;
	}
	else {
		return false;
	}
}
function isAreaCode(elem) {
	if (elem.value.length != 3) {
		return false;
	}
	if (!isNumber(elem)) {
		return false;
	}
	return true;
}
function validateZIP(zc) {
	var valid = "0123456789-";
	var hyphencount = 0;
	var elem = zc.value;
	
	if (elem.length != 5 && elem.length != 9 && elem.length != 10) {
		return false;
	}
	for (var i=0; i < elem.length; i++) {
		temp = "" + elem.substring(i, i+1);
		if (temp == "-") {
			hyphencount++;
		}
		if (valid.indexOf(temp) == "-1") {
			return false;
		}
		if ((elem.length == 9) && (hyphencount > 0)) {
			return false;
		}
		if ((elem.length == 10) && (hyphencount != 1) && (elem.charAt(5)!="-")) {
			return false;
		}
	}
	return true;
}