//<script language='javascript' type='text/javascript'>
//alert('this page uses utils.js');

function isNumber(str)
{
	validChars = "0123456789";

	for (i=0;i<str.length;i++)
	{
		badChar = str.charAt(i);
		if (validChars.indexOf(badChar,0) == -1)
			return false;
	}

	return true;
}

function isEmpty(str)
{
	for (i=0;i<str.length;i++)
	{
		if (str.charAt(i) != " ")
			return false;
	}

	return true;
}

function ttrim(str)
{
	var foundChar = -1;

	for (i=0; i<str.length; i++)
	{
		if ((foundChar == -1) && (str.charAt(i) != " "))
		{
			foundChar = i;
			break;
		}
	}
	
	var len = str.length;
	var str2 = str.substring(foundChar,len);

	var foundChar = -1;

	for (i=(str2.length-1); i>=0; i--)
	{
		if ((foundChar == -1) && (str2.charAt(i) != " "))
		{
			foundChar = i;
			break;
		}
	}

	var str3;
	if (foundChar == -1)
	{
		str3 = "";
	}
	else
	{
		str3 = str2.substring(0,(foundChar+1));
	}

	return str3;
}

function CleanNum(string)
	{
	var reDollar
	var reComma

	reDollar = /\$/g
	reComma = /,/g

	string = ttrim(string)
	string = string.replace(reDollar,"")
	string = string.replace(reComma,"")

	return string
	}

function isValidDate(dateStr) 
{
	// Checks for the following valid date formats:
	// MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY
	// Also separates date into month, day, and year variables

	 var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;
	// To require a 4 digit year entry, use this line instead:
	// var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	 
	var matchArray = dateStr.match(datePat); // is the format ok?
	if (matchArray == null) 
	{
		alert("Date is not in a valid format.");
		return false;
	}
	month = matchArray[1]; // parse date into variables
	day = matchArray[3];
	year = matchArray[4];

	if (month < 1 || month > 12) 
	{ // check month range
		alert("Month must be between 1 and 12.");
		return false;
	}
	if (day < 1 || day > 31) 
	{
		alert("Day must be between 1 and 31.");
		return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31) 
	{
		alert("Month "+month+" doesn't have 31 days!"); 
		return false;
	}
	if (month == 2) 
	{ // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) {
		alert("February " + year + " doesn't have " + day + " days!");
		return false;
   }
}

return true;  // date is valid
}

function isPhone(fieldval)
{
	re = /^\d{3}\-\d{3}\-\d{4}$/;
	return re.test(fieldval);
}

function isEmail(fieldval)
{
	re = /^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$/;
	return re.test(fieldval);
}

function NumericVal(strname) {
	string = ttrim(strname.value)
	if (string.search(/^[\d]+$/) != -1) {
        return true;
    } else {
		alert("Invalid entry!  Only numbers accepted!");
		strname.focus();
		strname.select();
		return false;
	}
}

function NumVal(strname) {
	string = ttrim(strname.value)
	if (string.search(/^[0-9,]+(\.[0-9]+)?$/) != -1) {
        return true;
    } else {
		alert("Invalid entry!  Only numbers accepted!");
		strname.focus();
		strname.select();
		return false;
	}
}

function number_format(n) {
	
	var n = n.replace(/(,)+/g, ""); // removes commas from text.
	
	if(n != "" && isNaN(n) == false) {
		
		var arr=new Array('0'), i=0;

		dec = Math.round( ( (n) - Math.floor(n) ) *100);
		if (dec < 10) {
			dec = '.0' + dec
			}
		else {
			dec = '.' + dec
			}

		n = Math.floor(n-0) + ''

		while (n>0)
		{arr[i]=''+n%1000; n=Math.floor(n/1000); i++;}

		arr=arr.reverse();

		for (var i in arr) if (i>0) //padding zeros
		while (arr[i].length<3) arr[i]='0'+arr[i];
		
		return arr.join()+dec;
	} else { 
		return "";
	}
}

/*function NumericVal(strname) {
	var valid = "1234567890"
	var ok = "yes";
	var temp;
	for (var i=0; i<strname.value.length; i++) {
		temp = "" + strname.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") ok = "no";
		}
	if (ok == "no") {
		alert("Invalid entry!  Only numbers accepted!");
		strname.focus();
		strname.select();
		return false;
	}
return true;
}

function NumVal(strname) {
	var valid = "1234567890-. "
	var ok = "yes";
	var temp;
	for (var i=0; i<strname.value.length; i++) {
		temp = "" + strname.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") ok = "no";
	}
	if (ok == "no") {
		alert("Invalid entry!  Only numbers accepted!");
		strname.focus();
		strname.select();
		return false;
	}
	return true;
}*/

function CharVal(strname) {
	var valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ -,."
	var ok = "yes";
	var temp;
	for (var i=0; i<strname.value.length; i++) {
		temp = "" + strname.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") ok = "no";
	}
	if (ok == "no") {
		//alert(strname.name + " " + "Invalid entry!  Only alphabet characters accepted!");
		alert("Invalid entry!  Only alphabet characters accepted!");
		strname.focus();
		strname.select();
		return false;
	}
	return true;
}

function ChkEmpty(strname) {
	var valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ -.1234567890,"
	var ok = "yes";
	var temp;
	for (var i=0; i<strname.value.length; i++) {
		temp = "" + strname.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") ok = "no";
	}
	if (ok == "no") {
		alert("Invalid entry!  Only alphabet characters or nummeric characters accepted!");
		strname.focus();
		strname.select();
		return false;
	}
return true;
}

function JustChar(strname) {
	var valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
	var ok = "yes";
	var temp;
	for (var i=0; i<strname.value.length; i++) {
		temp = "" + strname.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") ok = "no";
	}
	if (ok == "no") {
		alert("Invalid entry!  Only alphabet characters accepted!");
		strname.focus();
		strname.select();
		return false;
	}
	return true;
}

function JustCharNum(strname) {
	var valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
	var cvalid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var nvalid = "1234567890";
	var ccount = 0;
	var ncount = 0;
	var ok = "yes";
	var temp;
	for (var i=0; i<strname.value.length; i++) {
		temp = "" + strname.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") ok = "no";
	}
	if (ok == "no") {
		alert("Invalid entry!  Only alphabet characters or nummeric characters accepted!");
		strname.focus();
		strname.select();
		return false;
	}
	else {
    for (var i=0; i<strname.value.length; i++) {
	    temp = "" + strname.value.substring(i, i+1);
	    if (cvalid.indexOf(temp) >= 0 ) ccount = ccount + 1;
	    if (nvalid.indexOf(temp) >= 0 ) ncount = ncount + 1;
    }
    if (ncount <=0 || ccount <=0){
		  alert("Invalid entry!  At least one alphabet character and one numberic character is required!");
		  strname.focus();
		  strname.select();
		  return false;
    }
	}
return true;
}

function IsBoolean(strname)	{
	if( (strname.value.toUpperCase() != "Y") && (strname.value.toUpperCase() != "N"))	{
		alert("Enter Y or N");
		strname.focus();
		strname.select()	
		return false;
	}
	return true;
}

function isEmail(fieldval)
{
	re = /^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$/;
	return re.test(fieldval);
}

function validateCC(CardNumber, CardType, CardExpY, CardExpM)
{
	/* test card, remove in production */
	//if (CardNumber == "1234567890")
	//{
	//	return true;
	//}

	today = new Date();
	expire = new Date(CardExpY, CardExpM);
	errorMsg1 = "You have entered an invalid Card Number!";
	errorMsg2 = "Your Credit Card is expired!";
	errorMsg3 = "No such Card Type!";
	
	if (today.getTime() > expire.getTime())
	{
		alert(errorMsg2);
		return false;
	}

	CardNumber = removeSpaces(CardNumber);

	if (CardType == "MC")
	{
		if (CardNumber.length != 16)
		{
			alert(errorMsg1);
			return false;
		}

		startCard = (CardNumber.substring(0,2));
		if (startCard < 51 || startCard > 55)
		{
			alert(errorMsg1);
			return false;
		}
	}
	else if (CardType == "AE")
	{
		if (CardNumber.length != 15)
		{
			alert(errorMsg1);
			return false;
		}

		startCard = (CardNumber.substring(0,2));
		if (startCard != 34 && startCard != 37)
		{
			alert(errorMsg1);
			return false;
		}
	}
	else if (CardType == "VS")
	{
		if (CardNumber.length != 13 && CardNumber.length != 16)
		{
			alert(errorMsg1);
			return false;
		}

		startCard = (CardNumber.substring(0,1));
		if (startCard != 4)
		{
			alert(errorMsg1);
			return false;
		}
	}
	else if (CardType == "DS")
	{
		if (CardNumber.length != 16)
		{
			alert(errorMsg1);
			return false;
		}

		startCard = (CardNumber.substring(0,4));
		if (startCard != 6011)
		{
			alert(errorMsg1);
			return false;
		}
	}
	else
	{
		alert(errorMsg3);
		return false;
	}


	if (!mod10(CardNumber))
	{
		alert(errorMsg1);
		return false;
	}

	return true;
}

// LUHN Formula for validation of credit card numbers.
function mod10(cardNumber) 
{ 
	var ar = new Array(cardNumber.length);
	var i = 0,sum = 0;

   	for (i = 0; i < cardNumber.length; ++i) 
   	{
    	ar[i] = parseInt(cardNumber.charAt(i));
    }
    
    for (i = ar.length -2; i >= 0; i-=2) 
    { // you have to start from the right, and work back.
    	ar[i] *= 2;							 // every second digit starting with the right most (check digit)
    	if( ar[i] > 9 ) ar[i]-=9;			 // will be doubled, and summed with the skipped digits.
    }										 // if the double digit is > 9, ADD those individual digits together 

	for (i = 0; i < ar.length; ++i) 
	{
    	sum += ar[i];						 // if the sum is divisible by 10 mod10 succeeds
    }

    return (((sum%10)==0)?true:false);	 	
}


function removeSpaces(str) 
{
	var temp = "";
	str = '' + str;
	splitstring = str.split(" ");

	for(i = 0; i < splitstring.length; i++)
		temp += splitstring[i];

	return temp;
}
//</script>
