function checkAlphaNum(string)
{
	var good="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	for (var i = 0; i < string.length; i++) {
		if (good.indexOf(string.charAt(i)) == -1) return false;
	}
	return true;
} 

function checkRange(string)
{
	var good="$/From0123456789. ";
	for (var i = 0; i < string.length; i++) {
		if (good.indexOf(string.charAt(i)) == -1) return false;
	}
	return true;
} 


// Check for a valid email address
function checkEmail(string)
{
	string				= trim(string);
	var pos_at			= string.indexOf("@");
	var pos_last_at		= string.lastIndexOf("@");
	var pos_last_dot	= string.lastIndexOf(".");
	var pos_space		= string.indexOf(" ");
	var str_len			= string.length;

	// Make sure all characters are valid
	var good="'.@-+_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	for (var i = 0; i < string.length; i++)
	{
		if (good.indexOf(string.charAt(i)) == -1) return false;
	}

	// At least one @ must be present and not at start of string
	if ( pos_at < 1 ) return false;

	// Make sure there is only one @
	if ( pos_at != pos_last_at ) return false;

	// At least one "." afer the @ is required
	if ( pos_last_dot < pos_at ) return false;

	// At least two characters must occur after the last dot
	if ( str_len - pos_last_dot <= 2 ) return false;

	return true;
}


// Check for a valid link (ie http://www.domain.com)
function checkLink(string)
{
	var good="~/:.-_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&?=[]";
	for (var i = 0; i < string.length; i++) {
		if (good.indexOf(string.charAt(i)) == -1) return false;
	}
	return true;
} 


// Check for valid characters in a number
function checkNumber(string)
{
	var good = "-0123456789+";
	for (var i = 0; i < string.length; i++) {
		if (good.indexOf(string.charAt(i)) == -1) return false;
	}
	return true;
}

// Check for valid characters in a decimal number
function checkDecimal(string)
{
	var good = "-0123456789.";
	for (var i = 0; i < string.length; i++) {
		if (good.indexOf(string.charAt(i)) == -1) return false;
	}
	return true;
}


// Ensures all the characters in string are in good.
function checkTheseChars(string, good)
{
	for (var i = 0; i < string.length; i++) {
		if (good.indexOf(string.charAt(i)) == -1) return false;
	}
	return true;
}


// Checks a date in the form "mm/dd/yyyy".  Fills in the year's beginning "20" if missing.
// The date's input field itself must be passed to the function
function checkDate(oInput, deliminator)
{
	var str_date = getInputValue(oInput);
	if ( deliminator === undefined ) deliminator = "/";
	if ( !checkTheseChars(str_date, "0123456789-/"+deliminator) ) return false;

	// Switch deliminators, if needed
	if ( deliminator == "/" ) str_date = str_date.replace(/-/g, "/");
	else if ( deliminator == "-" ) str_date = str_date.replace(/\//g, "-");

	var parts = str_date.split(deliminator);
	if ( parts.length != 3 ) return false;
	var m = parseInt(parts[0],10);
	var d = parseInt(parts[1],10);
	var y = parseInt(parts[2],10);
	if ( m < 1 || m > 12 ) return false;
	if ( d < 1 || d > 31 ) return false;
	if ( y < 10 ) y = "200"+y;
	else if ( y < 100 ) y = "20"+y;
	else if ( y < 1000 ) return false;

	// The date is good, recombine it in case of missing 0's or bad deliminator
	setInputValue(oInput, m+deliminator+d+deliminator+y);

	return true;
}


// Checks a date and returns true if after today.  False if today or earlier.
function afterToday(oInput)
{
	var today = new Date()
	var date_str = getInputValue(oInput);
	if ( date_str == "" || date_str == "mm/dd/yyyy" ) return true;

	var date1 = new Date(Date.parse(getInputValue(oInput)));
	var date2 = new Date(today.getFullYear(), today.getMonth(), today.getDate());
	var diff  = date1 - date2;
	if ( diff > 0 ) return true
	else return false;
}

function compareDate(date1, date2)
{
	var d1 = new Date(date1.getFullYear(),date1.getMonth(),date1.getDate());
	var d2 = new Date(date2.getFullYear(),date2.getMonth(),date2.getDate());
	var diff = d1 - d2;
	if ( diff < 0) return false
	else return true;
}


// Clears an input's field if set as the example date "mm/dd/yyyy".  Usually used
// on an input like so: onfocus="clearDate(this)"
function clearDate(oInput)
{
	if ( getInputValue(oInput) == "mm/dd/yyyy" ) setInputValue(oInput, "");
}


// Determine is a variable contains a number or not
function isNum(i)
{
	if ( i == parseInt(i,10) ) return true;
	else return false;
}

