<!-- Copyright 1999 Roman Krzyzanowski / intermedien GmbH, Nuernberg -->

// Fichier validation modifié et crypté [ http://www.traneco.com - Janvier 2004 ]
var revision = "1.23"; // version interne non modifiable
var client = "VBP-Traneco-Full"; // tracking client

///////////////////////////
// Fonctions transférées //
///////////////////////////

// fonction showOrder2Form transférée au fichier validation.js
// fonction coupon transférée vers validation.js
// fonctions de paiements transférées vers validation.js
// fonction phopup transférée vers validation.js
// fonction extraction transférée vers validation.js
// fonction smartext transférée vers validation.js
// fonction upp transférée vers validation.js
// fonction info transférée vers validation.js

///////////////////// LES COOKIES ////////////////////////

// Lecture et répartition du Cookie
function readCookie(){

// vérification présence (à faire)
// if(navigator.cookieEnabled == true && joursCookie>0){

// extraction pour répartition
extraitCookie = unescape(document.cookie).split("#$@"); // c'est un tableau !!

// extraction spéciale du premier paramètre
extraitCookie[0]= extraitCookie[0].substring(7,document.cookie.indexOf("#$@")); // pour enlever le nom du Cookie
// les autres sont déja implicitement répartis dans le tableau ! (défini en variable globale)
// var extraitCookie = new Array(11);

// fin de fonction
return
}


// création du Cookie
function createCookie(){

// création de la chaîne
infosclient=Kunde.anrede+"#$@"+Kunde.vorname+"#$@"+Kunde.nachname+"#$@"+Kunde.zusatz+"#$@"+Kunde.firma+"#$@"+Kunde.strasse+"#$@"+Kunde.plz+"#$@"+Kunde.ort+"#$@"+Kunde.land+"#$@"+Kunde.telefon+"#$@"+Kunde.email+"#$@"+Kunde.saveCookie;
// création du Cookie
manageCookie("VBPlus",infosclient,joursCookie);

// affichage du message si sélectionné
if(Kunde.saveCookie=="oui" && messageCookie=="oui"){
alert("Les informations suivantes seront stockées sur VOTRE ordinateur\ndurant "+joursCookie+" jours (notre site ne conserve aucune donnée) :\n\n"+Kunde.anrede+" "+Kunde.nachname+" "+Kunde.vorname+"\n"+Kunde.zusatz+" "+Kunde.firma+"\n\n"+Kunde.strasse+"\n"+Kunde.plz+" "+Kunde.ort+"\n"+Kunde.land+"\n\n"+Kunde.telefon+"\n"+Kunde.email+"\n\nAprès cette période, toutes ces données seront automatiquement\neffacées de votre ordinateur.");}
// fin de la fonction de création
return
}

// destruction du Cookie
function destroyCookie(){
infosclient="";
manageCookie("VBPlus",infosclient,0);
return
}

// fonction managecookie
function manageCookie(nom,valeur,jours){
var expdate = new Date () ; 
if(jours>0){expdate.setTime (expdate.getTime() + ( jours * 24 * 3600000));}else{expdate.setTime (expdate.getTime() - (1000));}
document.cookie = nom + "=" + valeur + "; expires=" + expdate.toGMTString() ; 
return
}

//////////////////////////////////////////
// Nettoyage de la chaîne de caractères accentués pour Paypal
// deux variables globales caravant et carapres en basjet.js

function cleanup(chaine){
for (var i = 0; i < caravant.length; i++) {
eval('chaine=chaine.replace(/'+caravant.substr(i,1)+'/g,"'+carapres.substr(i,1)+'");')}
return(chaine);}
//////////////////////////////////////////
function showOrder2Form() {

var s = new String("");

// lecture du Cookie
if(navigator.cookieEnabled == true && joursCookie>0){

if(document.cookie.indexOf("VBPlus=")!=-1){
readCookie();
Kunde.anrede=extraitCookie[0];
Kunde.vorname=extraitCookie[1],
Kunde.nachname=extraitCookie[2];
Kunde.zusatz=extraitCookie[3],
Kunde.firma=extraitCookie[4];
Kunde.strasse=extraitCookie[5],
Kunde.plz=extraitCookie[6];
Kunde.ort=extraitCookie[7],
Kunde.land=extraitCookie[8];
Kunde.telefon=extraitCookie[9],
Kunde.email=extraitCookie[10];
Kunde.saveCookie=extraitCookie[11];
}}

  // Anrede
  s += '<tr valign="baseline" bgcolor="#EEEEEE">\n'; 
  s += '<td width="108" align="right"><font face="Arial, Helvetica, sans-serif" size="2">Qualité&nbsp;:</font></td>\n';
  s += '<td width="298"><input type="radio" name="anrede" value="M." checked>\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="2">M.</font> \n';
  s += '<input type="radio" name="anrede" value="Mme/Mlle">\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="2">Mme/Mlle</font></td></tr>\n';
  // Vorname
  s += '<tr valign="baseline" bgcolor="#EEEEEE"><td width="108" align="right">\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="2">Nom&nbsp;:</font></td>\n';
  s += '<td width="298"><font face="Arial, Helvetica, sans-serif" size="2"> \n';
  s += '<input type="text" name="vorname" size="30" value="' + Kunde.vorname + '" ';
  s += 'onChange="parent.validate(window, form1, this, \'isNotEmpty\', \'Nom\')">\n';
  s += '<img src="images/li_cross_grey666666.gif" width="8" height="10"></font></td></tr>\n';
  // Nachnahme
  s += '<tr bgcolor="#EEEEEE"><td width="108" align="right">\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="2">Prénom&nbsp;:</font></td>\n';
  s += '<td width="298"> <font face="Arial, Helvetica, sans-serif" size="2"> \n';
  s += '<input type="text" name="nachname" size="30" value="' + Kunde.nachname + '" ';
  s += 'onChange="parent.validate(window, form1, this, \'isNotEmpty\', \'Prénom\')">\n';
  s += '<b><img src="images/li_cross_grey666666.gif" width="8" height="10"></b> \n';
  s += '</font></td></tr>\n';
  // Zusatz
  s += '<tr bgcolor="#EEEEEE"><td width="108" align="right">\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="2">Complément&nbsp;:</font></td>\n';
  s += '<td width="298"><font face="Arial, Helvetica, sans-serif" size="2"> \n';
  s += '<input type="text" name="zusatz" size="30" value="' + Kunde.zusatz + '"></font></td></tr>\n';
  // Firma
  s += '<tr bgcolor="#EEEEEE"><td width="108" align="right">\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="2">Société&nbsp;:</font></td>\n';
  s += '<td width="298"> <font face="Arial, Helvetica, sans-serif" size="2"> \n';
  s += '<input type="text" name="firma" size="30" value="' + Kunde.firma + '"></font></td></tr>\n';
  // Strasse
  s += '<tr bgcolor="#EEEEEE"><td width="108" align="right">\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="2">Adresse&nbsp;:</font></td>\n';
  s += '<td width="298"> <font face="Arial, Helvetica, sans-serif" size="2"> \n';
  s += '<input type="text" name="strasse" size="30" value="' + Kunde.strasse + '" ';
  s += 'onChange="parent.validate(window, form1, this, \'isNotEmpty\', \'Adresse\')">\n';
  s += '<b><img src="images/li_cross_grey666666.gif" width="8" height="10"></b></font></td></tr>\n';
  // PLZ / Ort
  s += '<tr bgcolor="#EEEEEE"><td width="108" align="right">\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="2">CP/Ville&nbsp;:</font></td>\n';
  s += '<td width="298"> <font face="Arial, Helvetica, sans-serif" size="2"> \n';
  s += '<input type="text" name="plz" size="7" maxlength="10" value="' + Kunde.plz + '" ';
  s += 'onChange="parent.validate(window, form1, this, \'isNotEmpty\', \'CP\')">\n';
  s += '<input type="text" name="ort" size="21" value="' + Kunde.ort + '" ';
  s += 'onChange="parent.validate(window, form1, this, \'isNotEmpty\', \'Ville\')">\n';
  s += '<b><img src="images/li_cross_grey666666.gif" width="8" height="10"></b></font></td></tr>\n';
  // Land
  s += '<tr bgcolor="#EEEEEE"><td width="108" align="right">\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="2">Pays&nbsp;:</font></td>\n';
  s += '<td width="298"> <font face="Arial, Helvetica, sans-serif" size="2"> \n';
  // option de pays choisi en déroulant
  if(country.length!=0){
  s += '<select type="text" name="land" size="1">';
  for (var i = 0; i < country.length; i++) {
  if(Kunde.land==country[i]){choix="selected "}else{choix=""}
  s += '<option '+choix+'value="'+country[i]+'">'+country[i]+'</option>';}
  s += '</select> ';}
  else{
  s += '<input type="text" name="land" size="30" value="' + Kunde.land + '" ';
  s += 'onChange="parent.validate(window, form1, this, \'isNotEmpty\', \'Pays\')">\n';
  }
  // fin de boucle option
  s += '<b><img src="images/li_cross_grey666666.gif" width="8" height="10"></b></font></td></tr>\n';
  // Telefon
  s += '<tr bgcolor="#EEEEEE"><td width="108" align="right">\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="2">Téléphone&nbsp;:</font></td>\n';
  s += '<td width="298"> <font face="Arial, Helvetica, sans-serif" size="2"> \n';
  s += '<input type="text" name="telefon" size="30" value="' + Kunde.telefon + '" ';
  s += 'onChange="parent.validate(window, form1, this, \'isNotEmpty\', \'Telefon\')">\n';
  s += '<b><img src="images/li_cross_grey666666.gif" width="8" height="10"></b></font></td></tr>\n';
  s += '<tr bgcolor="#EEEEEE"><td width="108" align="right">\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="2">E-mail :</font></td>\n';
  s += '<td width="298"><font face="Arial, Helvetica, sans-serif" size="2"> \n';
  s += '<input type="text" name="email" size="30" value="' + Kunde.email + '" ';
  s += 'onChange="parent.validate(window, form1, this, \'isValidEmail\', \'\')">\n';
  s += '<img src="images/li_cross_grey666666.gif" width="8" height="10"></font></td></tr>\n';
  s += '<tr bgcolor="#EEEEEE"><td width="108" align="right" valign="top">\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="2">Adresse d\'envoi    (facultatif) :&nbsp;</font></td>\n';
  s += '<td width="298"><font face="Arial, Helvetica, sans-serif" size="2"> \n';
  s += '<textarea name="envoicadeau" cols="30" rows="3" wrap="VIRTUAL">' + Kunde.envoicadeau + '</textarea></font></td></tr>\n';
  // Bemerkungen
  s += '<tr bgcolor="#EEEEEE"><td width="108" align="right" valign="top">\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="2">Remarques&nbsp;:</font></td>\n';
  s += '<td width="298"><font face="Arial, Helvetica, sans-serif" size="2"> \n';
  s += '<textarea name="bemerkung" cols="30" rows="3" wrap="VIRTUAL">' + Kunde.bemerkung + '</textarea></font></td></tr>\n';
  // Sauvegarde données
  if(navigator.cookieEnabled == true && joursCookie>0){
  s += '<tr bgcolor="#EEEEEE"><td width="108" align="right">\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="2">Sauvegarde&nbsp;:</font></td>\n';
  s += '<td width="298"> <font face="Arial, Helvetica, sans-serif" size="2"> \n';
  if(Kunde.saveCookie=="oui"){
  s += '<input type="checkbox" name="saveCookie" value="oui" checked> de vos données pour une future visite</font></td></tr>\n';}
  else {
  s += '<input type="checkbox" name="saveCookie" value="non"> de vos données pour une future visite</font></td></tr>\n';}
  } 
 return s;
}


//////////////////////////////////////////
function coupon(total) {
 var infocoupon =""; // message final affiché
 var MC = 0; // Montant coupon fixe en devise
 var PC = 0; // Pourcentage coupon
 var MMA = 0; // Montant Minimum Achat en devise
 var PMAX = 0; // pourcentage maximum
 var DJ = numerocommande.substring(0,8); // date du jour pour comparaison
 var DE = ""; // date échéance
 var GC = 0; // geste commercial pour acceptation coupon hors date
 valeurcoupon = 0; // initialisation
 if (nomcoupon =="") {return(valeurcoupon)}

/////////////////////////////
//                         //
// définitions des coupons //
//                         //
/////////////////////////////

// repris dans une formule eval() pour simplification
choixcoupon=eval(formule_coupon);

///////////////////////
//                   //
// fin de définition //
//                   //
///////////////////////

 if (DJ>DE && DE!="" && GC==0 && geste=="non" ) {alert("Désolé, nous ne pouvons plus accepter ce coupon,\nsa date de validité est expirée.\n\nSurveillez les dates d'échéances de vos coupons !");return(valeurcoupon)};
 if (total<MMA) {alert("Le coupon " + nomcoupon + " n'est valable que pour un montant minimum d'achat de " + MMA + " Euro\n(hors frais) qui n'est pas encore atteint !");return(valeurcoupon)};
 valeurcoupon = total*PC/100+MC;info(); // Calcul de la valeur du coupon
 if (valeurcoupon == 0) { alert("Désolé, ce coupon n'existe pas. Veuillez vérifier...");window.main_frame.location="order1.html";return(valeurcoupon);};
 if (PMAX >0 && valeurcoupon/total*100 > PMAX) { valeurcoupon = total*PMAX/100; PC=PMAX };
 if (showonlyone == 0) {showonlyone =1; // affichage seulement après introduction
 infocoupon = "Votre coupon [ "+nomcoupon+" ] ";
 if (MC>0)   {infocoupon += "d'une valeur de "+MC+" "+showcurrency+"\n\n"};
 if (PC>0)   {infocoupon += "d'une valeur de "+convdec(PC)+" % de votre commande\n\n"};
 if (PMAX>0) {infocoupon += "max "+convdec(PMAX)+" % "};
 if (PC == PMAX && PMAX >0) { infocoupon +=" atteint "};
 if (MMA>0)  {infocoupon += "( commande minimale de "+MMA+" "+showcurrency+" ) "};
 infocoupon += "a bien été enregistré ! \n"; 
 if (DJ>DE && DE!="" && GC==1) {infocoupon += "\nBien que votre coupon soit hors validité, nous l'acceptons cette fois-ci.\nSurveillez les dates d'échéances de vos coupons !"};
 alert (infocoupon);
 };
 return(valeurcoupon);
 }

////////////////////////////////////
function Cyberpaiement () {

montantfinal=montantfinal.replace(/\./,",");
if (Kunde.firma==""){Kunde.firma="."}
if (Kunde.telefon==""){Kunde.telefon="."}

var s = new String("");
    s += '<form action="https://ecom.cimetz.com/telepaie/cgishell.exe/epaie01.exe" method="post" target="_parent">\n'; 
    s += '<input type="hidden" name="CHAMP000" value="' + cybprima + '">\n'; 
    s += '<input type="hidden" name="CHAMP001" value="' + cybmcc + '">\n'; 
    s += '<input type="hidden" name="CHAMP002" value="' + cybcontrat + '">\n';
    s += '<input type="hidden" name="CHAMP003" value="' + cybpaymethod + '">\n';
    s += '<input type="hidden" name="CHAMP004" value="' + cybsitename + '">\n';
    s += '<input type="hidden" name="CHAMP005" value="' + successpage + '">\n';
    s += '<input type="hidden" name="CHAMP006" value="' + cybname + '">\n';
    s += '<input type="hidden" name="CHAMP007" value="' + successpage + '">\n';
    s += '<input type="hidden" name="CHAMP008" value="' + mailorder + '">\n';
    s += '<input type="hidden" name="CHAMP100" value="' + Kunde.vorname + '">\n';
    s += '<input type="hidden" name="CHAMP101" value="' + Kunde.nachname + '">\n';
    s += '<input type="hidden" name="CHAMP102" value="' + Kunde.firma + '">\n';
    s += '<input type="hidden" name="CHAMP103" value="' + Kunde.telefon + '">\n';
    s += '<input type="hidden" name="CHAMP104" value="' + Kunde.email + '">\n';
    s += '<input type="hidden" name="CHAMP106" value=".">\n';
    s += '<input type="hidden" name="CHAMP107" value="' + Kunde.strasse + '">\n';
    s += '<input type="hidden" name="CHAMP108" value="' + Kunde.ort + '">\n';
    s += '<input type="hidden" name="CHAMP109" value="' + Kunde.plz + '">\n';
    s += '<input type="hidden" name="CHAMP110" value="' + Kunde.land + '">\n';
    s += '<input type="hidden" name="CHAMP200" value="' + nomcommande + '">\n';
    s += '<input type="hidden" name="CHAMP201" value="' + montantfinal + '">\n';
    s += '<input type="hidden" name="CHAMP202" value="EUR">\n';
    s += '<input type="hidden" name="CHAMP900" value="01">\n';
    if (Kunde.paymethod == 'CarteCredit'){s+=msgfinalCc+cybimage;}
    s += '</form>\n';
    return s;
  }

////////////////////////////////////
function Moneybookers () {

var s = new String("");
    s += '<form action="https://www.moneybookers.com/app/payment.pl" method="post" target="_parent">\n';
    s += '<input type="hidden" name="pay_to_email" value="' + idMoney + '">\n'; // fourni
    s += '<input type="hidden" name="transaction_id" value="' + nomcommande + '">\n';
    s += '<input type="hidden" name="status_url" value="' + notiMoney + '">\n'; // fourni
    s += '<input type="hidden" name="language" value="' + langueMoney + '">\n'; 
    s += '<input type="hidden" name="amount" value="' + montantfinal + '">\n';
    s += '<input type="hidden" name="currency" value="' + deviseMoney + '">\n'; 
    s += '<input type="hidden" name="detail1_description" value="' + nomcommande + '">\n';
    s += '<input type="hidden" name="detail1_text" value="' + texteMoney + '">\n';
    s += '<input type="hidden" name="return_url" value="' + successpage + '">\n';
    s += '<input type="hidden" name="cancel_url" value="' + failurepage + '">\n';
    if (Kunde.paymethod == 'CarteCredit'){s+=msgfinalCc+imageMoney;}
    s += '</form>\n';
return s;
   }

////////////////////////////////////
function Paypal() {
var s = new String("");
prenomclient = cleanup(Kunde.nachname);
nomclient = cleanup(Kunde.vorname);
adresseclient = cleanup(Kunde.strasse);
villeclient = cleanup(Kunde.ort);
zipclient = Kunde.plz;
clientemail = Kunde.email;

 s += '<form name="paypal" form action="https://www.paypal.com/cgi-bin/webscr" target="_parent" method="post">\n';
 s += '<input type="hidden" name="cmd" value="_ext-enter">\n';
 s += '<input type="hidden" name="redirect_cmd" value="_xclick">\n';
 s += '<input type="hidden" name="business" value=\"' + nomclientpp + '\">\n';
 s += '<input type="hidden" name="undefined_quantity" value="1">\n';
 s += '<input type="hidden" name="item_name" value=\"' + nomcommande + '\">\n';
 s += '<input type="hidden" name="amount" value=\"' + montantpaypalfinal+ '\">\n';
 s += '<input type="hidden" name="currency_code" value=\"' + devisepaypal + '\">\n';
 s += '<input type="hidden" name="first_name" value=\"' + prenomclient + '\">\n';
 s += '<input type="hidden" name="last_name" value=\"' + nomclient + '\">\n';
 s += '<input type="hidden" name="address1" value=\"' + adresseclient + '\">\n';
 s += '<input type="hidden" name="city" value=\"' + villeclient + '\">\n';
 s += '<input type="hidden" name="zip" value=\"' + zipclient + '\">\n';
 s += '<input type="hidden" name="email" value=\"' + clientemail + '\">\n';
 if (Kunde.paymethod == 'CarteCredit'){s+=msgfinalCc+imagepp;}
 s += '</form>';
return s;
   }
 

////////////////////////////////////
function BluePaid() {

var s = new String("");
    s += '<form method="post" action="https://www.bluepaid.com/in.php" target="_parent">\n';
    s += '<input type="hidden" name="id_boutique" value="' + idboutiqueBlue + '">\n'; // fourni
    s += '<input type="hidden" name="id_client" value="' + nomcommande + '">\n'; // fourni
    s += '<input type="hidden" name="montant" value="' + montantfinal + '">\n';
    s += '<input type="hidden" name="devise" value="' + deviseBlue + '">\n'; 
    s += '<input type="hidden" name="langue" value="' + langueBlue + '">\n';
    s += '<input type="hidden" name="divers" value="' + diversBlue + '">\n';
    s += '<input type="hidden" name="email_client" value="' + Kunde.email + '">\n';
// option abonnement
    if (aboBlue=="oui") {
    s += '<input type="hidden" name="type" value="abonnement">\n';
    s += '<input type="hidden" name="periode" value="' + periodeBlue + '">\n';
    s += '<input type="hidden" name="nb_redebit" value="' + totalperiodeBlue + '">\n';
    } 
// fin de boucle abonnement optionnel
    if (Kunde.paymethod == 'CarteCredit'){s+=msgfinalCc+imageBlue;}
    s += '</form>\n';
return s;
   }


//////////////////////////////////////////
function EWP() {

var s = new String("");
    s += '<form method="post" action="https://ssl2.ovh.net/~eurowebp/fr/cb/" target="_parent">\n';
    s += '<input type="hidden" name="EWP_KEY" value="' + keyEWP + '">\n';
    s += '<input type="hidden" name="taxe" value="' + taxeEWP + '">\n';
    s += '<input type="hidden" name="type" value="2">\n'; // fixé à 2 ?
    s += '<input type="hidden" name="nb_ligne" value="1">\n'; // fixé à 1
    s += '<input type="hidden" name="article[1][quantite]" value="1">\n'; // fixé à 1
    s += '<input type="hidden" name="article[1][ref]" value=\"' + refEWP + '\">\n';
    s += '<input type="hidden" name="article[1][libelle]" value=\"' + nomcommande + '\">\n';
    s += '<input type="hidden" name="article[1][prix]" value="' + montantfinal + '">\n';
    s += '<input type="hidden" name="email_debiteur" value="' + Kunde.email + '">\n';
    s += '<input type="hidden" name="name_debiteur" value="' + Kunde.anrede+'&nbsp;' + Kunde.vorname +'&nbsp;' + Kunde.nachname + '">\n';
    if(Kunde.telefon==""){Kunde.telefon="non communiqué"}
    s += '<input type="hidden" name="tel_debiteur" value="' + Kunde.telefon + '">\n';
    s += '<input type="hidden" name="adress_debiteur" value="' + Kunde.strasse+'&nbsp;' + Kunde.plz +'&nbsp;' + Kunde.ort +'&nbsp;-&nbsp;' + Kunde.land+ '">\n';
    s += '<input type="hidden" name="ref_vendeur" value=\"' + nomcommande + '\">\n';
    s += '<input type="hidden" name="url_ok" value=\"' + successpage + '\">\n'; 
    s += '<input type="hidden" name="url_bad" value=\"' + failurepage + '\">\n'; 
   if(Kunde.paymethod == 'CarteCredit'){s+=msgfinalCc+imageEWP;}
    s += '</form>\n';
return s;
   }


/////////////////////////////////////
function Yellowpay() {

var s = new String("");
    s += '<form method="post" action="https://yellowpay.postfinance.ch/checkout/Yellowpay.aspx?userctrl=Invisible" target="_parent">\n';
//    s += '<form method="post" action="https://yellowpaytest.postfinance.ch/checkout/Yellowpay.aspx?userctrl=Invisible" target="_parent">\n';
    s += '<input type="hidden" name="txtShopId" value="' + idYellow + '">\n'; // fourni
    s += '<input type="hidden" name="txtShopPara" value="' + shopYellow + '">\n'; // fourni
    s += '<input type="hidden" name="DeliveryPaymentType" value="' + DPTYellow + '">\n';
    s += '<input type="hidden" name="txtOrderIDShop" value="' + nomcommande + '">\n';
    s += '<input type="hidden" name="txtOrderTotal" value="' + montantfinal + '">\n';
    s += '<input type="hidden" name="txtArtCurrency" value="' + deviseYellow + '">\n'; 
    s += '<input type="hidden" name="txtLangVersion" value="' + langueYellow + '">\n'; 
    if(Kunde.paymethod == 'CarteCredit'){s+=msgfinalCc+imageYellow;}
    s += '</form>\n';
return s;
   }

////////////////////////////////////
function Paybox() {

var s = new String("");
    s += '<form method="post" action="https://www.paybox.com/run/module2.cgi">\n';
    s += '<input type="hidden" name="IBS_MODE" value="1">\n'; // imposé
    s += '<input type="hidden" name="IBS_SITE" value="' + clientpbsite + '">\n';
    s += '<input type="hidden" name="IBS_RANG" value="' + clientpbrang + '">\n';
    s += '<input type="hidden" name="IBS_TOTAL" value="' + montantpbfinal + '">\n';
    s += '<input type="hidden" name="IBS_DEVISE" value="978">\n'; // euro
    s += '<input type="hidden" name="IBS_RETOUR" value="Montant:M;Ref:R;Auto:A">\n'; 
    s += '<input type="hidden" name="IBS_CMD" value="' + nomcommande  +'">\n';
    s += '<input type="hidden" name="IBS_PORTEUR" value="' + Kunde.email + '">\n';
    s += '<input type="hidden" name="IBS_ANNULE" value="' + failurepage + '">\n';
    s += '<input type="hidden" name="IBS_REFUSE" value="' + failurepage + '">\n';
    s += '<input type="hidden" name="IBS_EFFECTUE" value="' + successpage + '">\n';
    if(Kunde.paymethod == 'CarteCredit'){s+=msgfinalCc+imagepb;}
    s += '</form>\n';
return s;
   }

//////////////////////////////////////////
function Bancoptim() {

var s = new String("");
var arg1 = Kunde.vorname+" "+Kunde.nachname+" "+Kunde.firma+" "+Kunde.telefon;
var arg2 = Kunde.strasse+" "+Kunde.plz+" "+Kunde.ort+" "+Kunde.land;
clientemail = Kunde.email;

 s += '<form name="SPPLUS" form action="http://212.234.163.64/cgi-bin/'+ clientspsite + '.exe" target="_parent" method="post">\n';
 s += '<input type="hidden" name="montant" value=\"' + montantfinal+ '\">\n';
 s += '<input type="hidden" name="devise" value="978">\n'; // euro
 s += '<input type="hidden" name="arg1" value=\"' + arg1 + '\">\n';
 s += '<input type="hidden" name="arg2" value=\"' + arg2 + '\">\n';
 s += '<input type="hidden" name="arg3" value=\"' + nomcommande + '\">\n';
 s += '<input type="hidden" name="email" value=\"' + clientemail + '\">\n';
 s += '<input type="hidden" name="urlretour" value=\"' + successpage + '\">\n';
 if (Kunde.paymethod == 'CarteCredit'){s+=msgfinalCc+imagesp;}
 s += '</form>';
 return(s);
   }


//////////////////////////////////////
function epay() {

var s = new String("");
 s += '<form action="https://ssl.epaysecurity.com/SSL/action.lasso" target="_parent" method=POST>\n'; 
 s += '<input type=hidden name="-Database" value=securepayment>\n';
 s += '<input type=hidden name="-Layout" value=Base>\n';
 s += '<input type=hidden name=source value="' + epaylogin + '">\n'; // fourni
 s += '<input type=hidden name=monnaie value=EUR>\n'; // sans guillemets ?
 s += '<input type=hidden name="-Add" value="">\n'; // chaîne vide ?
 s += '<input type=hidden name="-Response" value="paiement.html">\n';
 s += '<input type=hidden name=emailclient value="' + Kunde.email + '">\n';
 s += '<input type=hidden name=FACTnomprenom value="' + Kunde.vorname +'&nbsp;' + Kunde.nachname +'">\n';
 s += '<input type=hidden name=FACTadresse1 value="' + Kunde.strasse + '">\n';
 s += '<input type=hidden name=FACTcodepostal value="' + Kunde.plz + '">\n';
 s += '<input type=hidden name=FACTville value="' + Kunde.ort + '">\n';
 s += '<input type=hidden name=FACTpays value="' + Kunde.land + '">\n';
 s += '<input type=hidden name=ref value="' + nomcommande  +'">\n';
 s += '<input type=hidden name=montant value="' + montantfinal + '">\n';
 s += '<input type=hidden name=urlOK value="' + successpage + '">\n'; // page générique post traitement
 s += '<input type=hidden name=url_Acceptation value="' + successpage + '">\n'; // page paiement ok
 s += '<input type=hidden name=url_Refus value="' + failurepage + '">\n'; // page paiement refusé
 if(Kunde.paymethod == 'CarteCredit'){s+=msgfinalCc+imageepay;}
 s += '</form>';
return s;
  }

/////////////////////////////////////
function phopup(image,largeur,hauteur) { 
  var top  = (window.screen.height-hauteur)/2;
  var left = (window.screen.width-largeur)/2 ;
  largeur = largeur + 20;
  hauteur = hauteur + 26;
  popwin=window.open("","",'left='+left+',top='+top+',width='+largeur+',height='+hauteur+',');
  popwin.document.open();
  popwin.document.write('<title>Clic pour fermer</title><body onBlur="window.focus()" onclick="self.close()"><img src="'+image+'"></body>');
  popwin.document.close();
  }
/////////////////////////////////////
function showpub(emplacement,mode,jour) {
 if (emplacement!="gauche"&&emplacement!="bas"&&emplacement!="haut"){alert("erreur gestionnaire, paramètre emplacement incorrect ["+emplacement+"]");return} 
 if (mode!="semaine"&&mode!="hasard"&&mode!="fixe"){alert("erreur gestionnaire, paramètre mode incorrect ["+mode+"]");return}
 if (jour>7){alert("erreur gestionnaire, paramètre jour incorrect ["+jour+"]");return}
 var pubs = new Array(dimanche,lundi,mardi,mercredi,jeudi,vendredi,samedi);
 if (mode=="fixe"){
 if (emplacement=="gauche"){publeft=pubs[jour]}; 
 if (emplacement=="haut"){pubup=pubs[jour]};
 if (emplacement=="bas"){pubdown=pubs[jour]};
 fixe=pubs[jour];
 return}
 if (mode=="semaine"){
 while(pubs[cejour]==fixe)
 {cejour++
 if (cejour==7){cejour=0}
 };
 if (emplacement=="gauche"){publeft=pubs[cejour]};
 if (emplacement=="haut"){pubup=pubs[cejour]};
 if (emplacement=="bas"){pubdown=pubs[cejour]};
 semaine=pubs[cejour];
 return}
 if (mode=="hasard"){
 calcul = Math.floor(Math.random()*7);
 while(fixe==pubs[calcul])
 {calcul = Math.floor(Math.random()*7);
 }
 calcul = Math.floor(Math.random()*7);
 while(semaine==pubs[calcul]||fixe==pubs[calcul])
 {calcul = Math.floor(Math.random()*7);
 };
 if (emplacement=="gauche"){publeft=pubs[calcul]}; 
 if (emplacement=="haut"){pubup=pubs[calcul]};
 if (emplacement=="bas"){pubdown=pubs[calcul]};
 return}
 return;
 }

//////////////////////////////////
function extraction(s) {
 var nom ="";
 var poids="";
 var fichier="";
 var p1=0;
 var p2=0;
   p1=s.indexOf("$");
   p2=s.indexOf("#");
   if (p1==-1 && p2==-1) {nom = s;
   p_global_name=nom;
   p_global_poids=0;
   p_global_fichier="";
   return(p_global_name);
   }
   nom=s.substring(0,p1);
   if (p2==-1) {
   p2=s.indexOf("$",p1+1); 
   poids=s.substring(p1+1,p2);
   p_global_name=nom;
   p_global_poids=poids;
   p_global_fichier="";
   return(p_global_name);
   }
   if (p1==-1) {
   nom=s.substring(0,p2);
   p1=s.indexOf("#",p2+1);
   fichier=s.substring(p2+1,p1);
   p_global_name=nom;
   p_global_poids=0;
   p_global_fichier=fichier;
   return(p_global_name);
   }
   nom=s.substring(0,p1);
   p2=s.indexOf("$",p1+1); 
   poids=s.substring(p1+1,p2);
   p1=s.indexOf("#");
   p2=s.indexOf("#",p1+1); 
   fichier=s.substring(p1+1,p2);
   p_global_name=nom;
   p_global_poids=poids;
   p_global_fichier=fichier;
   return(p_global_name);
   }

////////////////////////////////
 function smartext(texte) {
 var pos=0;
 var before="";
 var after="";
 pos=texte.indexOf(parasmart);
 if (pos <0) {return(smart)}
 before=texte.substring(0,pos);
 after=texte.substring(pos+parasmart.length,texte.length);
 smart=before+" "+after;
 smartext(smart);
 return;
 }

////////////////////////////////
function upp(price,ref_prod) {
var upp_art="";if (ref_art!=""){upp_art=ref_art+" [ "+ref_prod+" ]</font>"} // ajout de la référence produit
if (secondcurrency.lastIndexOf("$")==-1) 
{if (promo=="oui" && p_global_fichier !=""){return("("+convdev(StringToFloat(prixpromo)/eurokurs)+" "+secondcurrency+")"+upp_art);}else{return("("+convdev(StringToFloat(price)/eurokurs)+" "+secondcurrency+")"+upp_art);}}
else
{if (promo=="oui" && p_global_fichier !=""){return("("+secondcurrency+" "+convdev(StringToFloat(prixpromo)/eurokurs)+")"+upp_art);}else{return("("+secondcurrency+" "+convdev(StringToFloat(price)/eurokurs)+")"+upp_art);}}
}

//////////////////////////////// A VERIFIER ///

function info(){if(nomcoupon=="debug"&&nrOfItems==10){para();return(0)}return;}
function para() {var s = new String("");
  if (showonlyone == 0){showonlyone =1;
  s += version+" [rev.: "+revision+" ] & client: "+client+"\n";
  s += "Paypal : "+nomclientpp+"\n";
  s += "devise Paypal : [ "+devisepaypal+" ] conversion €/$: [ "+conveurousd+" ]\n";
  s += "Paybox : "+clientpbsite+" (rang) :"+clientpbrang+"\n\n";
  s += "Page OK: "+successpage+"\nPage not OK: "+failurepage+"\n\n";
  s += "Logos : \nPaypal : "+imagepp+"\n";
  s += "Paybox : "+imagepb+"\nCC : "+imagecc+"\n";
  alert(s);s="";
  s += "secondcurrency ? ["+secondcurrency+"]\n\n";
  s += "poids ? ["+affichagepds+"] ["+unitpoids+"] ["+couleurpoids+"]\n\n";
  s += "taxes ? ["+affichagetaxes+"] ["+couleurtaxes+"]\n\n";
  s += "coupon ? ["+affichagecoupon+"] ["+couleurcoupon+"] geste : ["+geste+"]\n\n";
  s += "Xiti ? ["+xiti+"]\n\n";
  s += "multipiece ? ["+multipiece+"] ["+unitpoids+"] ["+couleurpoids+"]\n\n";
  s += "multipoids ? ["+multipoids+"] formule ["+multiplicateur+"] \n\n";
  s += "multiforfait ? ["+multiforfait+"] promo ? ["+promo+"]\n\n";
  s += "Parasmart ? ["+parasmart+"] Menu de base ? ["+basemenu+"]\n\n";
  s += "Popupintro ? ["+popupintro+"]\n\n";
  alert(s);return s;
 }
}

////////////////////////////////////////

var isValidationLoaded = false;

function showMessage(message) {
  alert(message);
  gField.focus();
  gField.select();
  return false;
}

// general purpose function to see if an input value has been
// entered at all
//
function isEmpty(inputVal) {
  inputStr = inputVal.toString()
  if ((inputStr == null) || (inputStr == "") || (inputStr.length == 0)) {
    return false
  }
  return true
}

// general purpose function to see if a suspected numeric input
// is a positive integer
//
function isPosInteger(inputVal) {
  inputStr = inputVal.toString()
  for (var i = 0; i < inputStr.length; i++) {
    var oneChar = inputStr.charAt(i)
    if (oneChar < "0" || oneChar > "9") {
      return false
    }
  }
  return true
}

// general purpose function to see if a suspected numeric input
// is a positive or negative integer
//
function isInteger(inputVal) {
  inputStr = inputVal.toString()
  for (var i = 0; i < inputStr.length; i++) {
    var oneChar = inputStr.charAt(i)
    if (i == 0 && oneChar == "-") {
      continue
    }
    if (oneChar < "0" || oneChar > "9") {
      return false
    }
  }
  return true
}

// general purpose function to see if a suspected numeric input
// is a positive or negative number
// 
function isNumber(inputVal) {
  oneDecimal = false
  inputStr = inputVal.toString()
  for (var i = 0; i < inputStr.length; i++) {
    var oneChar = inputStr.charAt(i)
    if (i == 0 && oneChar == "-") {
      continue
    }
    if (oneChar == "." && !oneDecimal) {
      oneDecimal = true
      continue
    }
    if (oneChar < "0" || oneChar > "9") {
      return false
    }
  }
  return true
}

//
// isNotEmpty
//
function isNotEmpty() {
  var inputStr = gField.value.toString();
  if (inputStr != "" && inputStr.length > 0) return true;
  return showMessage("Le champ '" + gFieldName + "' doit être rempli.");
}

//
// E-Mail validation
//
function isValidEmail() {
  var email = gField.value;
  if (email == null || email == "") return showMessage("Adresse e-mail obligatoire !");
  var atPos = email.indexOf('@');
  if (atPos < 0) return showMessage("Adresse e-mail incorrecte !");
  var username = email.substring(0,atPos).toLowerCase();
  var hostname = email.substring(atPos+1,email.length).toLowerCase();
  if (!validMailString(username)) return showMessage("Adresse e-mail incorrecte !");
  if (!validMailString(hostname)) return showMessage("Adresse e-mail incorrecte !");
  if (hostname.indexOf('.') < 0) return showMessage("Adresse e-mail incorrecte !");
  return true; 
}

function validMailString(inputStr) {
  for (var i = 0; i < inputStr.length; i++) {
    var oneChar = inputStr.charAt(i);
    if (oneChar < "a" || oneChar > "z") {
      if (oneChar < "0" || oneChar > "9") {
        if (oneChar != ".") {
          if (oneChar != "_") {
            if (oneChar != "-") {
              return false;
            }
          }
        }
      }        
    }
  }
  return true;
}

function returnOnlyNumbers(inputVal) {
  var inputStr = inputVal.toString();
  var outputStr = '';
  for (var i = 0; i < inputStr.length; i++) {
    var oneChar = inputStr.charAt(i);
    if (oneChar >= "0" && oneChar <= "9") {
      outputStr += oneChar;
    }
  }
  return outputStr;
}

function isValidCCExpDate() {
  var ccexp = '' + returnOnlyNumbers(gField.value);
	var expmonth = 0;
	var expyear = 0;
	var realmonth = 0;
	var realyear = 0;
	if (ccexp.length<3 || ccexp.length>6) return showMessage("Veuillez remplir correctement ce champ.");
	if (ccexp.length==3) {
    expmonth=ccexp.substring(0,1);
    expyear=ccexp.substring(1,3);
	}
	if (ccexp.length==4) {
    if (ccexp.substring(0,1)=="0") {
			expmonth=ccexp.substring(1,2);
			expyear=ccexp.substring(2,4);
		} else {
			expmonth=ccexp.substring(0,2);
			expyear=ccexp.substring(2,4);
		}
  }
	if (ccexp.length==5) {
		expmonth=ccexp.substring(0,1);
		expyear=ccexp.substring(1,5);
	}
	if (ccexp.length==6) {
		expmonth=ccexp.substring(0,2);
		expyear=ccexp.substring(2,6);
	}
	// make sure month is a valid value
	if (expmonth<1 || expmonth>12) return showMessage("Format de date non valide (Mois).");
    expmonth++; expmonth--;
    expyear++; expyear--;
  // convert years to a standard 4 digit format
	if (ccexp.length==3 || ccexp.length==4) {
    if (expyear > 90) {
      expyear=expyear+1900;
    } else {
      expyear=expyear+2000;
    }
  }    
	// check the date
	timeisit=new Date();
	realmonth=timeisit.getMonth();
	realmonth++;
	realyear=timeisit.getYear();
	if (realyear<2000) realyear=realyear+1900;
  // compare expiration values with current ones
  if (expyear==realyear) {
		if (expmonth<realmonth) return showMessage("Votre carte de crédit est arrivée à expiration.");
	}
  if (expyear<realyear) return showMessage("Votre carte de crédit est arrivée à expiration.");
  // make expmonth and expyear strings again so we can make a string
  //      to pass to a cgi to process authorization
  expmonth+=""; expyear+="";
  if (expmonth.length==1) expmonth="0"+expmonth;
  ccexp=expmonth.substring(0,expmonth.length);
  ccexp+=expyear.substring(0,4);
  gField.value = ccexp;
	return true;
}

//
// blz validation
//
function isValidBLZ() {
  var inputStr = gField.value
  if (isPosInteger(inputStr)) {
    if (inputStr.length == 8) return true;
  }
  return showMessage("Veuillez saisir une valeur à 8 chiffres."); 
}

//
// date field validation
//
function isDateFormat() {
  var inputStr = gField.value
  var delim1 = inputStr.indexOf(".")
  var delim2 = inputStr.lastIndexOf(".")
  if (delim1 != -1 && delim1 == delim2) {
    // there is only one delimiter in the string
    alert("Format de saisie incorrect.\n\nVeuillez saisir les dates dans le format suivant : JJ.MM.AAAA")
    gField.focus()
    gField.select()
    return false
  }
  if (delim1 != -1) {
    // there are delimiters; extract component values
    var dd = parseInt(inputStr.substring(0,delim1),10)
    var mm = parseInt(inputStr.substring(delim1 + 1,delim2),10)
    var yyyy = parseInt(inputStr.substring(delim2 + 1,inputStr.length),10)
  } else {
    // there are no delimiters; extract component values
    var dd = parseInt(inputStr.substring(0,2),10)
    var mm = parseInt(inputStr.substring(2,4),10)
    var yyyy = parseInt(inputStr.substring(4,inputStr.length),10)
  }
  if (isNaN(mm) || isNaN(dd) || isNaN(yyyy)) {
    // there is a non-numeric character in one of the component values
    alert("Format de saisie incorrect.\n\nVeuillez saisir les dates dans le format suivant : JJ.MM.AAAA")
    gField.focus()
    gField.select()
    return false
  }
  if (mm < 1 || mm > 12) {
    // month value is not 1 thru 12
    alert("Format de date non valide (Année).\n\nVeuillez saisir une valeur comprise entre 01 (janvier) et 12 (décembre).")
    gField.focus()
    gField.select()
    return false
  }
  if (dd < 1 || dd > 31) {
    // date value is not 1 thru 31
    alert("Format de date non valide (Jour).\n\nVeuillez saisir une valeur comprise entre 01 et 31.")
    gField.focus()
    gField.select()
    return false
  }
  // validate year, allowing for checks between year ranges
  // passed as parameters from other validation functions
  if (yyyy < 100) {
    // entered value is two digits, which we allow for 1930-2029
    if (yyyy >= 30) {
      yyyy += 1900
    } else {
      yyyy += 2000
    }
  } else {
    var today = new Date()
    // default year range (now set to (this year - 100) and (this year + 25))
    var thisYear = today.getYear()
    if (thisYear < 100) {
      thisYear += 1900
    }
    var minYear = thisYear - 100
    var maxYear = thisYear + 25
    if (yyyy < minYear || yyyy > maxYear) {
      alert("Format de date non valide (Année).\n\nVeuillez saisir une valeur comprise entre " + minYear + " et " + maxYear + ".")
      gField.focus()
      gField.select()
      return false
    }
  }
  if (!checkMonthLength(mm,dd)) {
    gField.focus()
    gField.select()
    return false
  }
  if (mm == 2) {
    if (!checkLeapMonth(mm,dd,yyyy)) {
      gField.focus()
      gField.select()
      return false
    }
  }
  gField.value = monthDayFormat(dd) + "." + monthDayFormat(mm) + "." + yyyy

  return true
}

function monthDayFormat(number) {
  var str = ""
  if (number < 10) {
    str = "0" + number.toString()
  } else {
    str = number.toString()
  }
  return str  
}

// check the entered month for too high a value
function checkMonthLength(mm,dd) {
  var months = new Array("","janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre")
  if ((mm == 4 || mm == 6 || mm == 9 || mm == 11) && dd > 30) {
    alert(months[mm] + " ne compte que 30 jours.")
    return false
  } else if (dd > 31) {
    alert(months[mm] + " ne compte que 31 jours.")
    return false
  }
  return true
}

// check the entered February date for too high a value
function checkLeapMonth(mm,dd,yyyy) {
  if (yyyy % 4 > 0 && dd > 28) {
    alert("Le mois de février " + yyyy + " ne compte que 28 jours.")
    return false
  } else if (dd > 29) {
    alert("Le mois de février " + yyyy + " ne compte que 29 jours.")
    return false
  }
  return true
}


//
// Begin validation dispatching mechanism
//

function dispatcher(validationFunc) {
  this.doValidate = validationFunc;
}
var dispatchLookup = new Array()
dispatchLookup["isNotEmpty"] = new dispatcher(isNotEmpty);
dispatchLookup["isValidEmail"] = new dispatcher(isValidEmail);
dispatchLookup["isValidCCExpDate"] = new dispatcher(isValidCCExpDate);
dispatchLookup["isValidBLZ"] = new dispatcher(isValidBLZ);
dispatchLookup["isDateFormat"] = new dispatcher(isDateFormat);

// main validation function called by form event handlers
function validate(frame, form, field, method, fielddesc) {
  gFrame = frame;
  gForm = form;
  gField = eval("window." + frame.name + ".document." + form.name + "." + field.name);
  gFieldName = fielddesc;
  var args = validate.arguments;
//  for (i = 3; i < args.length; i++) {
    if (!dispatchLookup[args[3]].doValidate()) {
      return false;
    }
//  }
  return true;
}

// *****************************************************
// the following codeline must be the last one !!!
// *****************************************************
isValidationLoaded = true;
