// Script Original : http://developer.netscape.com/docs/examples/javascript/formval/FormChek.js
var creditCardDelimiters = " "
var iCreditCardPrefix = "Ceci n'est pas un numéro de carte de crédit "
var iCreditCardSuffix = " valide."
function warnInvalid (theField, s)
{   theField.focus()
    theField.select()
    alert(s)
    return false
}
function stripCharsInBag (s, bag)
{   var indexCarteCredit;
    var returnString = "";

    for (indexCarteCredit = 0; indexCarteCredit < s.length; indexCarteCredit++)
    {   
        var c = s.charAt(indexCarteCredit);
        if (bag.indexOf(c) == -1) returnString += c;
    }

    return returnString;
}
function getRadioButtonValue (radio)
{   for (var indexCarteCredit = 0; indexCarteCredit < radio.length; indexCarteCredit++)
    {   if (radio[indexCarteCredit].checked) { break }
    }
    return radio[indexCarteCredit].value
}
function checkCreditCard (radio, theField)
{   var cardType = getRadioButtonValue (radio)
    var normalizedCCN = stripCharsInBag(theField.value, creditCardDelimiters)
    if (!isCardMatch(cardType, normalizedCCN)) 
       return warnInvalid (theField, iCreditCardPrefix + cardType + iCreditCardSuffix);
    else 
    {  theField.value = normalizedCCN
       return true
    }
}
function isCreditCard(st) {
  if (st.length > 19)
    return (false);
  sum = 0; mul = 1; l = st.length;
  for (indexCarteCredit = 0; indexCarteCredit < l; indexCarteCredit++) {
    digit = st.substring(l-indexCarteCredit-1,l-indexCarteCredit);
    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 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 isCarteBlanche(cc)
{
  return isDinersClub(cc);
}
function isDiscover(cc)
{
  first4digs = cc.substring(0,4);
  if ((cc.length == 16) && (first4digs == "6011"))
    return isCreditCard(cc);
  return false;

}
function isEnRoute(cc)
{
  first4digs = cc.substring(0,4);
  if ((cc.length == 15) &&
      ((first4digs == "2014") ||
       (first4digs == "2149")))
    return isCreditCard(cc);
  return false;
}
function isJCB(cc)
{
  first4digs = cc.substring(0,4);
  if ((cc.length == 16) &&
      ((first4digs == "3088") ||
       (first4digs == "3096") ||
       (first4digs == "3112") ||
       (first4digs == "3158") ||
       (first4digs == "3337") ||
       (first4digs == "3528")))
    return isCreditCard(cc);
  return false;
} 
function isAnyCard(cc)
{
  if (!isCreditCard(cc))
    return false;
  if (!isMasterCard(cc) && !isVisa(cc) && !isAmericanExpress(cc) && !isDinersClub(cc) &&
      !isDiscover(cc) && !isEnRoute(cc) && !isJCB(cc)) {
    return false;
  }
  return true;
}
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 == "AMERICANEXPRESS") || (cardType == "AMEX") )
                && (!isAmericanExpress(cardNumber))) doesMatch = false;
	if ((cardType == "DISCOVER") && (!isDiscover(cardNumber)))
		doesMatch = false;
	if ((cardType == "JCB") && (!isJCB(cardNumber)))
		doesMatch = false;
	if ((cardType == "DINERS") && (!isDinersClub(cardNumber)))
		doesMatch = false;
	if ((cardType == "CARTEBLANCHE") && (!isCarteBlanche(cardNumber)))
		doesMatch = false;
	if ((cardType == "ENROUTE") && (!isEnRoute(cardNumber)))
		doesMatch = false;
	return doesMatch;
}
function IsCC (st) {
    return isCreditCard(st);
}
function IsVisa (cc)  {
  return isVisa(cc);
}
function IsVISA (cc)  {
  return isVisa(cc);
}
function IsMasterCard (cc)  {
  return isMasterCard(cc);
}
function IsMastercard (cc)  {
  return isMasterCard(cc);
}
function IsMC (cc)  {
  return isMasterCard(cc);
}
function IsAmericanExpress (cc)  {
  return isAmericanExpress(cc);
}
function IsAmEx (cc)  {
  return isAmericanExpress(cc);
}
function IsDinersClub (cc)  {
  return isDinersClub(cc);
}
function IsDC (cc)  {
  return isDinersClub(cc);
}
function IsDiners (cc)  {
  return isDinersClub(cc);
}
function IsCarteBlanche (cc)  {
  return isCarteBlanche(cc);
}
function IsCB (cc)  {
  return isCarteBlanche(cc);
}
function IsDiscover (cc)  {
  return isDiscover(cc);
}
function IsEnRoute (cc)  {
  return isEnRoute(cc);
}
function IsenRoute (cc)  {
  return isEnRoute(cc);
}
function IsJCB (cc)  {
  return isJCB(cc);
}
function IsAnyCard(cc)  {
  return isAnyCard(cc);
}
function IsCardMatch (cardType, cardNumber)  {
  return isCardMatch (cardType, cardNumber);
}



//Fonction pour cacher la section "Carte de crédit"
//Ne pas oublier d'ajouter la fonction dans le OnLoad du body
function DivExpander(modeAVerifier, adresseAUtiliser, langue) {
   if (langue == '_ang')
      texteCarteDeCredit = 'credit card'
   else
      texteCarteDeCredit = 'carte de crédit'
	    
	  
   if (navigator.appName != 'Netscape')
      {
      if (modeAVerifier[modeAVerifier.selectedIndex].value.toLowerCase() != texteCarteDeCredit)
         { 
         TableauCarte.style.visibility = 'hidden'; 
         TableauCarte.style.display = 'none'; 
         }
      else
         { 
         TableauCarte.style.visibility = 'visible'; 
         TableauCarte.style.display = 'block';
         }
      }
   }

function PopulerMois()
   {
   var vieuxMoisSelectionne = document.Donnees.moisCarte[document.Donnees.moisCarte.selectedIndex].value;

   Today = new Date;

      if (document.Donnees.moisCarte.length != 12)
         {
         for (indexCarteCredit=1 ; indexCarteCredit <= 12; indexCarteCredit++)
            {
            if (indexCarteCredit < 10)
               document.Donnees.moisCarte.options[indexCarteCredit-1] = new Option('0' + indexCarteCredit, '0' + indexCarteCredit);
            else
               document.Donnees.moisCarte.options[indexCarteCredit-1] = new Option(indexCarteCredit, indexCarteCredit);
            }
         }
   document.Donnees.moisCarte[0].selected = true;

   for (indexCarteCredit = 0; indexCarteCredit < document.Donnees.moisCarte.length; indexCarteCredit++)
      {
      if (vieuxMoisSelectionne == document.Donnees.moisCarte[indexCarteCredit].value)
         {
         document.Donnees.moisCarte[indexCarteCredit].selected = true;
         break;
         }
      }
   }
    
function DivExpanderNew(modeAVerifier, adresseAUtiliser, langue) {
   if (langue == '_ang')
      texteCarteDeCredit = 'credit card'
   else
      texteCarteDeCredit = 'carte de crédit'   
	  
  if (modeAVerifier[modeAVerifier.selectedIndex].value.toLowerCase() != texteCarteDeCredit)
  { 
     TableauCarte.style.visibility = 'hidden'; 
     TableauCarte.style.display = 'none'; 
  }
  else
  { 
    TableauCarte.style.visibility = 'visible'; 
    TableauCarte.style.display = 'block';
  }
}
   