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 isEmail (s)
{   
    if (isEmpty(s)) {
	//alert('Please specify your email address');
	return false;
    }

    // is s whitespace?
    if (isWhitespace(s)) return false;

    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;

    // alert('Before look for @');
    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;
    //	alert('after check for @');
    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }


    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}


function isWhitespace (s)

{   var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);

        if (c != ' ') return false;
    }
    return true;
}


function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

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 isAmex(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 isDinersClub(cc)
{
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 14) && (firstdig == 3) &&
      ((seconddig == 0) || (seconddig == 6) || (seconddig == 8)))
    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 isCardMatch (cardType, cardNumber)
{
        cardType = cardType.toUpperCase();
        var doesMatch = true;

        if ((cardType == "VISA") && (!isVisa(cardNumber)))
                doesMatch = false;
        if ((cardType == "MASTERCARD") && (!isMasterCard(cardNumber)))
                doesMatch = false;
        if ((cardType == "AMEX") && (!isAmex(cardNumber)))
				doesMatch = false;
        if ((cardType == "DISCOVER") && (!isDiscover(cardNumber)))
                doesMatch = false;
        if ((cardType == "DINERS") && (!isDinersClub(cardNumber)))
                doesMatch = false;
        return doesMatch;

}  








