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

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

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

function readCookie(){
extraitCookie = unescape(document.cookie).split("#$@");
extraitCookie[0]= extraitCookie[0].substring(7,document.cookie.indexOf("#$@"));
return
}

function createCookie(){
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;
manageCookie("VBPlus",infosclient,joursCookie);
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.");}
return
}

function destroyCookie(){
infosclient="";
manageCookie("VBPlus",infosclient,0);
return
}

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
}

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("");
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 DD = ""; // date de début 
 var RC = 0; // retour coupon en cas d'erreur (menu coupon ou continuation)
 var DE = ""; // date échéance
 var GC = 0; // geste commercial pour acceptation coupon hors date
 valeurcoupon = 0; // initialisation
 if (nomcoupon =="") {return(valeurcoupon)}

choixcoupon=eval(formule_coupon);

 if (DJ<DD && DD!="") {alert("Désolé, nous ne pouvons pas encore accepter ce coupon,\ncelui-ci n\'est pas encore valable.\n\nSurveillez les dates d'introduction de vos coupons !");
 if (RC!=0){window.main_frame.location="order1.html"};
 return(valeurcoupon)};

 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éance de vos coupons !");
 if (RC!=0){window.main_frame.location="order1.html"};
 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 cyberpaie() {

var s = new String("");
 s += '<form method=post action="https://www.cyberpaie.com/xdata//tpe.htm" target="_parent">\n';
 s += '<input type=hidden name="member" value="' + cybermembre +'">\n';

 nomcommande="Votre commande "+nomcommande;
 s += '<input type=hidden name="product" value="' + nomcommande +'">\n';
 s += '<input type=hidden name="action" value="payment">\n';
 s += '<input type=hidden name="quantity" value="1">\n';
 s += '<input type=hidden name="shipping" value="0">\n';
 s += '<input type=hidden name="price" value="' + montantfinal +'">\n';
 s += '<input type=hidden name="ureturn" value="' + successpage +'">\n';
 s += '<input type=hidden name="ucancel" value="' + failurepage +'">\n';
 s += '<input type=hidden name="reference" value="' + nomcommande +'">\n'; 
 s += '<input type=hidden name="dmail" value="' + Kunde.email + '">\n';
 s += '<input type=hidden name="dnom" value="' + Kunde.vorname + '">\n';
 s += '<input type=hidden name="dpnom" value="' + Kunde.nachname + '">\n';

 if(Kunde.telefon==""){Kunde.telefon="non communiqué"}
 s += '<input type=hidden name="dtel" value="' + Kunde.telefon + '">\n';
 s += '<input type=hidden name="dpays" value="' + Kunde.land + '">\n';
 s += '<input type=hidden name="dcp" value="' + Kunde.plz + '">\n';
 s += '<input type=hidden name="dville" value="' + Kunde.ort + '">\n';
 s += '<input type=hidden name="dadresse1" value="' + Kunde.strasse + '">\n';
 s += '<input type=hidden name="dadresse2" value="">\n';
 s += '<input type=hidden name="dmode" value="' + cybertest + '">\n';
 s += '<input type=hidden name="dfonc" value="' + cyberfonc + '">\n';
 s += '<input type=hidden name="ddif" value="' + cyberdif + '">\n';
 s += '<input type=hidden name="site" value="' + cybersite + '">\n';

 if(Kunde.bemerkung==""){Kunde.bemerkung="néant"}
 s += '<input type=hidden name="data1" value="' + Kunde.bemerkung + '">\n';
 s += '<input type=hidden name="data2" value="">\n';
 s += '<input type=hidden name="data3" value="">\n';
 s += '<input type=hidden name="logo" value="' + cyberban + '">\n';
 if(Kunde.paymethod == 'CarteCredit'){s+=msgfinalCc+cyberimage;}
 s += '</form>';
return s;
  }

////////////////////////////////////
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/fr/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="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'; 
    s += '<input type="hidden" name="txtBTitle" value="' + Kunde.anrede + '">\n';
    s += '<input type="hidden" name="txtBLastName" value="' + Kunde.vorname + '">\n';
    s += '<input type="hidden" name="txtBFirstName" value="' + Kunde.nachname + '">\n';
    s += '<input type="hidden" name="txtBAddr1" value="' + Kunde.strasse + '">\n';
    s += '<input type="hidden" name="txtBZipCode" value="' + Kunde.ort + '">\n';
    s += '<input type="hidden" name="txtBCity" value="' + Kunde.plz + '">\n';
    if(Kunde.telefon==""){Kunde.telefon="non communiqué"}
    s += '<input type="hidden" name="txtBTel" value="' + Kunde.telefon + '">\n';
    s += '<input type="hidden" name="txtBEmail" value="' + Kunde.email + '">\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 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);}}
}

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.");
}

//
// isNotLuhn
//
function isNotLuhn() {
  var inputStr = gField.value.toString();
  if (inputStr == "" ) return showMessage("Le champ '" + gFieldName + "' doit être rempli.");
  if (inputStr.length > 16) return showMessage("Le champ '" + gFieldName + "' ne doit contenir que maximum 16 chiffres.");
  sum=0;mul=1;l=inputStr.length; for(i=0;i<l;i++)
  {digit = inputStr.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 showMessage("Le champ '" + gFieldName + "' n\'est pas valide.");
  }

//
// 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);
dispatchLookup["isNotLuhn"] = new dispatcher(isNotLuhn);

// 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;
