function CompressNum (obj) {
    num = "";
	
	for (i = 0; i < obj.length; i++) {
		ch = obj.charAt(i);
		if ((ch == ' ') || (ch == '-'))
			continue;
			
		if ((ch < '0') || (ch > '9'))
			return "";
	
		num += ch;			
	}
	
	return num;
}

function CheckMod10 (num) {
	sum = 0;
	len = num.length;
	mul = 0;
	
	for (i = 0; i < num.length; i++) {
		digit = parseInt (num.substring (len - i - 1, len - i));
		if (mul) {
			sum += digit + digit;
			if (digit >= 5) 
				sum -= 9;
			mul = 0;
		} else {
			sum += digit;
			mul = 1;
		}
	}

	return ((sum % 10) == 0);
}

function IsAmEx (obj) {
    num = CompressNum (obj);
    if (num.length == 0) return false;
	
    firstdig  = num.substring(0,1);
    seconddig = num.substring(1,2);
	
    if (num.length != 15) 
		return false;
		
	if ((firstdig != 3) || ((seconddig != 4) && (seconddig != 7)))
		return false;

	return CheckMod10(num);
} 

function IsVisa (obj) {
    num = CompressNum (obj);
    if (num.length == 0) return false;
	
    if ((num.length != 16) && (num.length != 13))
		return false;
		
	if (num.substring(0,1) != 4)
		return false;

	return CheckMod10 (num);
} 

function IsMC (obj) {
    num = CompressNum (obj);
    if (num.length == 0) return false;
	
    firstdig  = num.substring(0,1);
    seconddig = num.substring(1,2);
	
    if (num.length != 16) 
		return false;
		
	if ((firstdig != 5) || (seconddig < 1) || (seconddig > 5))
		return false;
		
	return CheckMod10 (num);
} 

function IsValidCC(obj)
{
	if (!IsMC (obj) && !IsVisa (obj) && !IsAmEx (obj))
		return false;
	return true;
}
