var regExpLeftWhitespace = /^\s+/g;
var regExpRightWhitespace = /\s+$/g;
var regExpWhitespace = /^\s+$/;
var regExpEmail = /^.+\@.+\..+$/;
var regExpAlphanumeric = /^[a-zA-Z0-9]+$/;
var regExpNumeric = /^[0-9]+$/;

function trimString(str){
	return str.replace(regExpLeftWhitespace,'').replace(regExpRightWhitespace,'');
}
function isWhitespace(str){
    return regExpWhitespace.test(str);
}
function isEmpty(str){
	return (str == null || str.length == 0 || isWhitespace(str));
}
function isEmail(str){
	return (!isEmpty(str) ? regExpEmail.test(str) : false);
}
function isChecked(frmField){
	if(isNaN(frmField.length)){
		if(frmField.checked) return true;
	} else {
		for(i=0,n=frmField.length; i<n; i++){
	   		if(frmField[i].checked) return true;
		}
	}
	return false;
}
function getRadioButtonValue(frmField){
	if(isNaN(frmField.length)){
		if(frmField.checked) return frmField.value;
	} else {
		for(i=0,n=frmField.length; i<n; i++){
	   		if(frmField[i].checked) return frmField[i].value;
		}
	}
	return null;
}
function getSelectFieldValue(frmField){
	return (frmField.length > 0 ? frmField.options[frmField.selectedIndex].value : null);
}
function isAlphanumeric(str){
	return regExpAlphanumeric.test(trimString(str));
}
function isNumeric(str){
	return regExpNumeric.test(trimString(str));
}
function selectAll(field){
	if(isNaN(field.length)) field.checked = true;
	else {
		for(i=0,n=field.length; i<n; i++)
			field[i].checked = true;
	}
}
function checkNumber(str){
	if(str.length == 0) return true;

	var white_space = " ";
	var number_string = "";

	// squish out the white space
	for(var i=0; i < str.length; i++){
		var check_char = white_space.indexOf(str.charAt(i));
		if(check_char < 0) number_string += str.substring(i,(i + 1));
	}

	return isNumeric(number_string);
}
function checkCreditCard(str){
	var white_space = " -";
	var creditcard_string = "";

	// squish out the white space
	for(var i=0; i < str.length; i++){
		var check_char = white_space.indexOf(str.charAt(i));
		if(check_char < 0) creditcard_string += str.substring(i,(i + 1));
	}	

	// if all white space return error
	if(creditcard_string.length == 0) return false;

	if(!isNumeric(creditcard_string)) return false;

	// now check mod10
	var doubledigit = creditcard_string.length % 2 == 1 ? false : true;
	var checkdigit = 0;
	
	for(var i=0; i < creditcard_string.length; i++){
		var tempdigit = eval(creditcard_string.charAt(i));
		if(doubledigit){
			tempdigit *= 2;
			checkdigit += (tempdigit % 10);
			if((tempdigit / 10) >= 1.0) checkdigit++;
			doubledigit = false;
		} else {
			checkdigit += tempdigit;
			doubledigit = true;
		}
	}	

	return (checkdigit % 10) == 0 ? true : false;
}
