function isCreditCard(st)
  {
  // Encoding only works on cards with less than 19 digits
  if (st.length > 19)
    return (false);
  sum = 0; mul = 1; l = st.length;
  for (i = 0; i < l; i++)
    {
    digit = st.substring(l-i-1,l-i);
    tproduct = parseInt(digit ,10)*mul;
    if (tproduct >= 10)
      sum += (tproduct % 10) + 1;
    else
      sum += tproduct;
    if (mul == 1)
      mul++;
    else
      mul--;
    }
  if ((sum % 10) == 0)
    return (true);
  else
    return (false);
  }

function isVisa(cc)
  {
  if (((cc.length == 16) || (cc.length == 13)) &&
      (cc.substring(0,1) == 4))
    return isCreditCard(cc);
  return false;
  }

function isMasterCard(cc)
  {
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 16) && (firstdig == 5) &&
      ((seconddig >= 1) && (seconddig <= 5)))
    return isCreditCard(cc);
  return false;
  }

function isAmericanExpress(cc)
  {
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 15) && (firstdig == 3) &&
      ((seconddig == 4) || (seconddig == 7)))
    return isCreditCard(cc);
  return false;
}

function isDiscover(cc)
{
  first4digs = cc.substring(0,4);
  if ((cc.length == 16) && (first4digs == "6011"))
    return isCreditCard(cc);
  return false;

}

function validCCSecurityCode(ccSecurityCode, ccType)
{
	//American Express cards have a 4 digit security code; Visa, MC & Discover have a 3 digit security code...
	if ((isInteger(ccSecurityCode) && 
		(((ccType == 'AMEX') && (ccSecurityCode.length == 4)) || 
		 ((ccType != 'AMEX') && (ccSecurityCode.length == 3)))))
	{
		return true;
	}
	else
	{
		return false;
	}
}