/*************************************************************************\
boolean luhnCheck([String CardNumber])
return true if CardNumber pass the luhn check else return false.
Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl
\*************************************************************************/
function luhnCheck(CardNumber) {

	if (! isNum(CardNumber)) 
		{
	 	return false;
		}
		
	var no_digit = CardNumber.length;
	var oddoeven = no_digit & 1;
	var sum = 0;
	
	for (var count = 0; count < no_digit; count++) 
		{
		var digit = parseInt(CardNumber.charAt(count));
		if (!((count & 1) ^ oddoeven)) 
			{
			digit *= 2;
			if (digit > 9)
			digit -= 9;
			}
		sum += digit;
		}
	if (sum % 10 == 0)
		return true;
	else
		return false;

return true;
}

/*************************************************************************\
boolean isValidExpiryDate([int year, int month])
return true if the date is a valid expiry date,
else return false.
\*************************************************************************/
function isValidExpiryDate(year, month) {
	if (!isNum(year+""))
		return false;
	if (!isNum(month+""))
		return false;
	today = new Date();
	expiry = new Date(year, month);
	if (today.getTime() > expiry.getTime())
		return false;
	else
		return true;
}


/*************************************************************************\
boolean isNum(String argvalue)
return true if argvalue contains only numeric characters,
else return false.
\*************************************************************************/
function isNum(argvalue) {
	argvalue = argvalue.toString();
	
	if (argvalue.length == 0)
		return false;
	
	for (var n = 0; n < argvalue.length; n++)
		if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9")
			return false;
	
	return true;
}

/*************************************************************************\
boolean isValidEmail(String argvalue)
return true if str contains an @ after the first character, and a . after 
the third character, else return false.
\*************************************************************************/
function isValidEmail(str) {
	var domainStr = str.substring(str.indexOf("@")+1,str.length);
	return (str.indexOf("@") > 0) && (domainStr.indexOf(".") > 0); 
}

function hide(targetId){
  target = document.getElementById(targetId);
  target.style.display="none";
}
function show(targetId){
  target = document.getElementById(targetId);
  target.style.display="";
}

function CurrencyFormatted(amount)
{
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	return s;
}

//-------------------------------------------------------------------
// isBlank(value)
//   Returns true if value only contains spaces
//-------------------------------------------------------------------
function isBlank(val){
	if(val==null){return true;}
	for(var i=0;i<val.length;i++) {
		if ((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}
		}
	return true;
	}

//----------------------------------------------------------------------
// pureNumeric(textBox)
// 	removes all non-numeric data from a text input field
//----------------------------------------------------------------------
function pureNumeric(textInput) {
	textInput.value = textInput.value.replace(/\D/,"");
}
