// Copyright 1999,2000 Roman Krzyzanowski / intermedien GmbH, Nuernberg/ mise à passerelle en euros le 02/11/2001
//
var isBasketLoaded = false;
var SSL = false;
var backToShopURL = new String("home.html");
var items = new Array();
var nrOfItems = 0;
var versand = 0;
var nachnahme = 0;
var orderitems = new String("");
var orderpaymethod = new String("");
var Kunde = new customer('','','','','','','','','','','','','',0,'',0,'','','','','','','','','','');
var Bestellung = new order('','','','','','','','','');
var orderWindow;
var shipuid_inland = new Array();
var shipuid_ausland = new Array();
var vatitems = new Array();
vatitems[vatitems.length] = new vat(0,'','','aucune','0',0);
vatitems[vatitems.length] = new vat(5,'','','19,6%','19,6',0);
vatitems[vatitems.length] = new vat(6,'','','5,5%','5,5',0);
vatitems[vatitems.length] = new vat(7,'','','Port','19,6',0);

function showBasket(location) {
  var pos = location.pathname.lastIndexOf('/');
  if (pos != -1) {
    backToShopURL = location.pathname.substring(pos+1,location.pathname.length);
  }  
  window.main_frame.location = "basket.html";
}

function getURL(filename) {
  var url = new String(filename);
  if (document.location.protocol == 'https:') {
    window.main_frame.location = url;
  } else {
    window.main_frame.location = url;
  }
}

function browser() {
  var b = new String("unknown");
  if (navigator.appName == "Netscape")
    b = "NN" + navigator.appVersion.charAt(0)
  else if (navigator.appName == "Microsoft Internet Explorer")
         b = "MSIE" + navigator.appVersion.charAt(0);
  return b;         
}

function checknum(str) {
  if (str == "") {
    alert("Veuillez indiquer une valeur comprise entre 0 et 10.")
    return false
  }
  for (var i = 0; i < str.length; i++) {
    var ch = str.substring(i, i + 1)
    if (ch < "0" || ch > "9") {
      alert("Veuillez indiquer une valeur comprise entre 0 et 10.")
      return false
    }
  }
  return true
}

function StringToFloat(str) {
  var s = new String("");
  if (str.indexOf(",") >= 0) {
    s = str.substring(0, str.indexOf(",")) + "." + str.substring(str.indexOf(",")+1, str.length);
  } else s = str;  
  return(parseFloat(s));
}

var eurokurs = StringToFloat('6,55957');

function convdec(str) {
  if (str == 0) {
    return "0,00";
  } else {
    var s = "" + Math.round(str * 100);
    return(s.substring(0, s.length-2) + "," + s.substring(s.length-2, s.length));
  }
}

function position(artnr) {
  var j = -1;
  for (var i = 0; i < items.length; i++) {
    if (items[i].artnr == artnr) {
	    j = i;
    }
  }
  return j;  
}

function posname(name) {
  var j = -1;
  for (var i = 0; i < items.length; i++) {
    if (items[i].name == name) {
	    j = i;
    }
  }
  return j;  
}

function getNrOfItems() {
  var j = 0;
  for (var i = 0; i < items.length; i++) {
    j += items[i].qty;
  }  
  return j;  
}

function vat(vid,vstateshort,vstatelong,vname,vvalue,vtotal) {
  this.vid = vid;
  this.vstateshort = vstateshort;
  this.vstatelong = vstatelong;
  this.vname = vname;
  this.vvalue = StringToFloat(vvalue);
  this.vtotal = vtotal;
}

function item(artnr,name,price,qty,uid,image) {
  this.artnr = artnr;
  this.name = name;
  this.price = price;
  this.qty = qty;
  this.uid = uid;
  this.image = image;      
}

function customer(anrede,vorname,nachname,zusatz,firma,strasse,plz,ort,land,telefon,email,
                  sendemail,shipto,shipcost,shiptext,shipuid,paymethod,cc,ccvalid,ccnr,
				  cccustname,bank,bankktonr,bankblz,bankcustname,bemerkung)
{
  this.anrede = anrede;
  this.vorname = vorname;
  this.nachname = nachname;
  this.zusatz = zusatz;
  this.firma = firma;
  this.strasse = strasse;
  this.plz = plz;
  this.ort = ort;
  this.land = land;
  this.telefon = telefon;
  this.email = email;
  this.sendemail = sendemail;
  this.shipto = shipto;
  this.shipcost = shipcost;
  this.shiptext = shiptext;
  this.shipuid = shipuid;
  this.paymethod = paymethod;
  this.cc = cc;
  this.ccvalid = ccvalid;
  this.ccnr = ccnr;
  this.cccustname = cccustname;
  this.bank = bank;
  this.bankktonr = bankktonr;
  this.bankblz = bankblz;
  this.bankcustname = bankcustname;
  this.bemerkung = bemerkung;
}

function order(paymethod,items,subtotal,delivery,cod,total,euro,vat,paymethodshort) {
  this.paymethod = paymethod;
  this.items = items;
  this.subtotal = subtotal;
  this.delivery = delivery;
  this.cod = cod;
  this.total = total;
  this.euro = euro;      
  this.vat = vat;
  this.paymethodshort = paymethodshort;      
}

function initBasket(redirect,timeout) {
  var danke = false;
  var ret = false;
  var mailScript = true;
  var msgTxt = new String("Les informations vont être transmises par e-mail grâce au service de traitement automatique mis en place par Micro Application. Ce service ne contrôle ni n\'enregistre aucune donnée contenue dans cet e-mail.\n\nCes informations ne sont ni cryptées ni sécurisées. Elles sont susceptibles d\'être interceptées par un tiers.\n\nVous pouvez poursuivre ou annuler cette opération.");
  var mailscripturl = 'http://microapp.internet-fr.net/mailscript/mws_mail.cgi';
/*  if (navigator.javaEnabled() == true) {
    if (navigator.userAgent.indexOf('Mac') == -1) {
      if (window.main_frame.document.mailer.send()) {
	    danke = true;
      } else {
	    mailScript = true;
  	  }
	} else {
	  mailScript = true;
	}  
  } else {
    mailScript = true;
  }*/
  if (mailScript == true) {
	if (mailscripturl == 'http://microapp.internet-fr.net/mailscript/mws_mail.cgi') {
  	  if (confirm(msgTxt)) { 
        ret = true;
        danke = true;
	  }
	} else {
      ret = true;
  	  danke = true;
	}
  }
  if (ret == true) {
    var orderWin=window.open("", "OrderWindow", "scrollbars=yes,width=300,height=100");
  }	
  for (var i = 0; i < items.length; i++) {
    items[i].qty = 0;
  }
  nrOfItems = 0;
  if (danke == true) {
    if (redirect != '') {
	  window.main_frame.location=redirect;
    }
  }	  
  return ret;
}

function cancelOrder() {
  if (document.location.protocol == 'https:') {
    self.location = 'http://www.elceafrance.com';
  } else {
    for (var i = 0; i < items.length; i++) {
      items[i].qty = 0;
    }
    nrOfItems = 0;
    window.main_frame.location = 'home.html';
  }
  alert("Votre commande est annulée !");  
}

function addToBasket(form) {
//  for (var g = 0; g < form.elements.length-1;  g += 11) {
    var g=0;
    var h=g+1, i=g+2, j=g+3, k=g+4, l=g+5, m=g+6, n=g+7, o=g+8, p=g+9; 
    var p_artnr = form.elements[g].value;
    var p_name = form.elements[h].value;
    if (form.elements[m].type == 'select-one') {
      p_name += ', ' + form.elements[l].value;
      p_name += ': ' + form.elements[m].options[form.elements[m].selectedIndex].value;  
    }
    if (form.elements[o].type == 'select-one') {
      p_name += ', ' + form.elements[n].value;
      p_name += ': ' + form.elements[o].options[form.elements[o].selectedIndex].value;  
    }
    var p_price = StringToFloat(form.elements[i].value);
    var p_uid = form.elements[j].value;
    var p_image = form.elements[k].value;
    var p_qty = parseInt(form.elements[p].options[form.elements[p].selectedIndex].value,10);
    var pos = position(p_artnr);
    if (pos >= 0 ) { // Artikel befindet sich bereits im Warenkorb
      if (items[pos].name == p_name) {
        items[pos].qty += p_qty;
        // if (items[pos].qty > 10) items[pos].qty = 10; // maximale Bestellmenge pro Artikel = 10
      } else {
        items[items.length] = new item(p_artnr,p_name,p_price,p_qty,p_uid,p_image);
      }  
    } else {
      items[items.length] = new item(p_artnr,p_name,p_price,p_qty,p_uid,p_image);
    }  
//  }
  nrOfItems = getNrOfItems();
//  parent.basketviewer_frame.location="../basketviewer.html";
}

function deleteFromBasket(artnr) {
  var pos = position(artnr);
  items[pos].qty = 0;
  nrOfItems = getNrOfItems();
  window.main_frame.location="basket.html";
//  parent.basketviewer_frame.location="basketviewer.html";
}

function updateBasket(form) {
  for (var g = 0; g < form.elements.length-1;  g += 2) {
    var h = g + 1; 
    var p_artnr = form.elements[g].value;
    var p_qty = parseInt(form.elements[h].value,10);
    var pos = position(p_artnr);
    if (pos >= 0 ) { // Artikel befindet sich bereits im Warenkorb
      items[pos].qty = p_qty;
      // if (items[pos].qty > 10) items[pos].qty = 10; // maximale Bestellmenge pro Artikel = 10
    }
  }
  nrOfItems = getNrOfItems();
  window.main_frame.location="basket.html";
//  parent.basketviewer_frame.location="basketviewer.html";
}

function showBasketItems() {
  var s = new String("");
  var subtotal = 0;
  var total = 0;
  for (var i=0; i<items.length; i++) {
    if (items[i].qty > 0) {
      s += '<TR>';
      s += '<td width="29" valign="middle" align="center" bgcolor="#FFFFFF"><FONT FACE="Arial, Helvetica, sans-serif" SIZE="1">';
      s += '<input type="hidden" name="artnr" value="' + items[i].artnr + '">';
      s += '<INPUT TYPE="text" NAME="quantity" VALUE="' + items[i].qty + '" SIZE="2" maxlength="3" ';
      s += 'onChange="if (!parent.checknum(this.value)) {this.focus(); this.select()}">';
      s += '</FONT></TD>';
      s += '<td valign="middle" bgcolor="#FFFFFF" colspan="3"><FONT FACE="Arial, Helvetica, sans-serif" SIZE="1"><B>' + items[i].name + '</B></FONT></TD>';
      s += '<td width="54" align="center" valign="middle" bgcolor="#FFFFFF">';
      if (items[i].image != '') {
        s += '<img src="' + items[i].image + '" width="30">';
      } else {
	    s += '&nbsp;';
	  }  
      s += '</td>';
      s += '<td width="41" align="right" valign="middle" bgcolor="#FFFFFF"><FONT FACE="Arial, Helvetica, sans-serif" SIZE="1"><B>' + convdec(items[i].price) + '</B></FONT></TD>';
      subtotal = items[i].qty * items[i].price;
      total += subtotal;
      s += '<td width="64" align="right" valign="middle" bgcolor="#FFFFFF"><FONT FACE="Arial, Helvetica, sans-serif" SIZE="1"><B>' + convdec(subtotal) + '</B></FONT></TD>';
      s += '<td width="21" align="center"><a href="javascript:parent.deleteFromBasket(\'' + items[i].artnr + '\')"><img src="images/p_box.gif" width="9" height="10" border="0"></a></td>\n';
      s += '</TR>';
    }
  }
  s += '<tr valign="baseline">'; 
  s += '<td align="left" colspan="6" bgcolor="#000000" valign="top"><img src="images/dot_trans.gif" width="1" height="2"></td>';
  s += '<td width="64" align="left" bgcolor="#000000" valign="top"><img src="images/dot_trans.gif" width="1" height="2"></td></tr>';
  s += '<tr valign="baseline"><td width="29"></td><td width="102"></td><td width="33"></td><td width="53"></td>';
  s += '<td colspan="2" bgcolor="#DDDDDD" align="right"><font face="Arial, Helvetica, sans-serif" size="1"><b>Sous-total&nbsp;:</b></font></td>';
  s += '<td width="64" align="right" bgcolor="#DDDDDD"><font face="Arial, Helvetica, sans-serif" size="1"><b>' + convdec(total) + '</b></font></td>';
  s += '<td width="21" align="center">&nbsp;</td></tr>';
  // Gesamtsumme in Euro
  s += '<tr valign="middle">';
  s += '<td width="312" align="right" colspan="6" valign="top" height="32">';
  s += '<b><font face="Arial, Helvetica, sans-serif" size="1">Si vous avez modifié les quantités, cliquez sur&nbsp;:</font></b></td>';
  s += '<td width="64" align="right" height="32"><b><font face="Arial, Helvetica, sans-serif" size="1">';
  s += '<INPUT TYPE="button" VALUE="Recalculer" onClick="parent.updateBasket(this.form)">';
  s += '</form></font></b></td>';
  s += '<td width="21" align="center">&nbsp;</td></tr>';
  return s;
}

function processOrderStep1(form) {
  for (var i=0; i<form.elements.length; i++) {
    if (form.elements[i].type == 'radio') {
	  if ((form.elements[i].name == 'shipto') && (form.elements[i].checked == true)) {
	    if (form.elements[i].value == 'Inland') { 
          Kunde.shipto = form.elements[i].value;
          Kunde.shipcost = form.shipping1.options[form.shipping1.selectedIndex].value;
          Kunde.shiptext = form.shipping1.options[form.shipping1.selectedIndex].text;
          Kunde.shipuid = shipuid_inland[form.shipping1.selectedIndex];
        } else { // Ausland
          Kunde.shipto = form.elements[i].value;
          Kunde.shipcost = form.shipping2.options[form.shipping2.selectedIndex].value;
          Kunde.shiptext = form.shipping2.options[form.shipping2.selectedIndex].text;
          Kunde.shipuid = shipuid_ausland[form.shipping2.selectedIndex];
		}
	  } else {
	    if ((form.elements[i].name == 'paymethod') && (form.elements[i].checked == true)) {
	      Kunde.paymethod = form.elements[i].value;
		}  
	  }
    }
  }	
//  if (Kunde.paymethod == 'Kreditkarte') {
//    Kunde.cc = form.cc.options[form.cc.selectedIndex].value;
//    Kunde.ccvalid = form.ccvalid.value;
//    Kunde.ccnr = form.ccnr.value;
//    Kunde.cccustname = form.cccustname.value;
//  }
  if (Kunde.paymethod == 'Bankeinzug') {
    Kunde.bank = form.bank.value;
    Kunde.bankktonr = form.bankktonr.value;
    Kunde.bankblz = form.bankblz.value;
    Kunde.bankcustname = form.bankcustname.value;
  }
  if (Kunde.paymethod == 'Nachnahme') {
    nachnahme = StringToFloat('30');
  } else {
    nachnahme = 0;
  }  
  window.main_frame.location = 'order2.html';  
}

function processOrderStep2(form) {
  for (var i=0; i<form.anrede.length; i++) {
    if (form.anrede[i].checked) {Kunde.anrede = form.anrede[i].value;}
  }
  Kunde.vorname = form.vorname.value;
  Kunde.nachname = form.nachname.value;
  Kunde.zusatz = form.zusatz.value;
  Kunde.firma = form.firma.value;
  Kunde.strasse = form.strasse.value;
  Kunde.plz = form.plz.value;
  Kunde.ort = form.ort.value;
  Kunde.land = form.land.value;
  Kunde.telefon = form.telefon.value;
  Kunde.email = form.email.value;
  Kunde.bemerkung = form.bemerkung.value;
  window.main_frame.location = 'order3.html';
}

function setStatus(form) {
  var s = new String("");
  for (var i=0; i<form.elements.length; i++) {
    if (form.elements[i].type == 'radio') {
      var radiofield = form.elements[i];
      var radiovalue = eval('Kunde.'+radiofield.name);
      if (radiovalue == '' && radiofield.name == 'paymethod') {
	    radiofield.checked = true;
/*	    if (isNaN(form.paymethod.length)) {
		  form.paymethod.checked = true;
		} else {
          form.paymethod[0].checked = true;
		}  */
      } else {
        if (radiofield.value == radiovalue) {radiofield.checked = true;}
      }  
    }
    if (form.elements[i].type == 'select-one') {
      var selectfield = form.elements[i];
      for (var j=0; j<selectfield.length; j++) {
        if (selectfield.name.indexOf('shipping') == 0) {
          var text = Kunde.shiptext;
        } else {
          var text = eval('Kunde.'+selectfield.name);
        }  
        if (selectfield.options[j].text == text) {selectfield.options[j].selected = true;}
      }
    }
    if (form.elements[i].type == 'checkbox') {
      var checkboxfield = form.elements[i];
      if (checkboxfield.value == eval('Kunde.'+checkboxfield.name)) {checkboxfield.checked = true;}
    }  
  }
}

function showOrderItems() {
  Bestellung.items = '';
  var s = new String("");
  var versand = StringToFloat(Kunde.shipcost);
  var subtotal = 0;
  var total = 0;
  for (var i=0; i<vatitems.length; i++) {vatitems[i].vtotal = 0}
  for (var i=0; i<items.length; i++) {
    if (items[i].qty > 0) {
      s += '<tr bgcolor="#EEEEEE">'; 
      s += '<td width="30" valign="middle" align="center">';
      s += '<font face="Arial, Helvetica, sans-serif" size="1"><b>' + items[i].qty + '</b></font></td>';
      s += '<td valign="middle" colspan="3"><font face="Arial, Helvetica, sans-serif" size="1"><b>(' + items[i].artnr + ') ' + items[i].name + '</b></font></td>';
      s += '<td width="57" align="right" valign="middle"><font face="Arial, Helvetica, sans-serif" size="1"><b>' + convdec(items[i].price) + '</b></font></td>';
      subtotal = items[i].qty * items[i].price;
      if (items[i].uid > 0) {
        for (var j=0; j<vatitems.length; j++) {
		  if (vatitems[j].vid == items[i].uid) {
            vatitems[j].vtotal += subtotal - (subtotal / (1+(vatitems[j].vvalue / 100)));
		  }
		}  
      }
      total += subtotal;
      s += '<td width="56" align="right" valign="middle"><font face="Arial, Helvetica, sans-serif" size="1"><b>' + convdec(subtotal) + '</b></font></td>';
      s += '</tr>';
      if (Bestellung.items != '') {Bestellung.items += '#';}
      Bestellung.items += items[i].qty + '__' + items[i].artnr + '__' + items[i].name + '__' + convdec(items[i].price) + '__' + convdec(subtotal);
    }
  }    
  s += '<tr><td valign="top" align="left" colspan="5" bgcolor="#000000"><img src="images/dot_trans.gif" width="1" height="5"></td>';
  s += '<td width="56" align="left" valign="top" bgcolor="#000000"><img src="images/dot_trans.gif" width="1" height="5"></td></tr>';
  // Zwischensumme
  s += '<tr><td width="30"></td><td width="176"></td><td valign="top" colspan="3" bgcolor="#DDDDDD" align="right">';
  s += '<b><font face="Arial, Helvetica, sans-serif" size="1">Sous-total&nbsp;:</font></b></td>';
  s += '<td width="56" align="right" bgcolor="#DDDDDD" valign="top">';
  s += '<b><font face="Arial, Helvetica, sans-serif" size="1">' + convdec(total) + '</font></b></td></tr>';
  Bestellung.subtotal = 'Sous-total__' + convdec(total);
  // Versandkosten
  if (Kunde.shipuid > 0) {
    for (var j=0; j<vatitems.length; j++) {
      if (vatitems[j].vid == Kunde.shipuid) {
        vatitems[j].vtotal += Kunde.shipcost - (Kunde.shipcost / (1+(vatitems[j].vvalue / 100)));
	  }
	}  
  }
  s += '<tr><td width="30"></td><td width="176"></td>';
  s += '<td valign="top" colspan="3" bgcolor="#DDDDDD" align="right">';
  s += '<b><font face="Arial, Helvetica, sans-serif" size="1">+ Port et emballage&nbsp;:</font></b></td>';
  s += '<td width="56" align="right" bgcolor="#DDDDDD" valign="top">';
  s += '<b><font face="Arial, Helvetica, sans-serif" size="1">' + convdec(versand) + '</font></b></td></tr>';
  Bestellung.delivery = '+ Port et emballage__' + convdec(versand);
  // Nachnahme
  // Gesamtbetrag inkl. MwSt.
  s += '<tr><td width="30"></td><td width="176"></td>';
  s += '<td valign="top" colspan="3" bgcolor="#000000" align="right">';
  s += '<b><font face="Arial, Helvetica, sans-serif" size="1" color="#FFFFFF">Total TTC&nbsp;:</font></b></td>';
  s += '<td width="56" align="right" bgcolor="#000000" valign="top">';
  s += '<b><font face="Arial, Helvetica, sans-serif" size="1" color="#FFFFFF">' + convdec(total+versand+nachnahme) + '</font></b></td></tr>';
  Bestellung.total = 'Total TTC__' + convdec(total+versand+nachnahme);
  // Gesamtsumme in Euro
  // enthaltene Mehrwertsteuer
  return s;
}

function showOrder1Form() {
  var s = new String("");
  // Shipping Inland
  s += '<tr bgcolor="#EEEEEE"><td width="108" align="left" valign="baseline">\n'; 
  s += '<font face="Arial, Helvetica, sans-serif" size="2"><input type="radio" name="shipto" value="Inland" checked>&nbsp;<b>National&nbsp;:</b></font></td>\n';
  s += '<td width="298" valign="baseline"><font face="Arial, Helvetica, sans-serif" size="1">\n';
  s += '<select name="shipping1">\n';
  var count = 0;
  shipuid_inland[count] = 5;
  s += '<option value="6,10">Colissimo avec accusé de réception</option>\n';
  ++count;
  shipuid_inland[count] = 0;
  s += '<option value="0">Gratuit pour les commandes  supérieures  à 152 Euros</option>\n';
  ++count;
  s += '</select></font></td></tr>\n';
  s += '<tr bgcolor="#EEEEEE">\n';
  s += '<td width="108" align="right">&nbsp;</td>\n';
  s += '<td width="298"><font face="Arial, Helvetica, sans-serif" size="1"><b>Tarifs valables en France métropolitaine uniquement.</b></font></td></tr>\n';
  // Shipping Ausland
  s += '<tr align="left">\n';
  s += '<td width="406" colspan="2" bgcolor="#DDDDDD" valign="top"><img src="images/dot_trans.gif" width="1" height="3"></td></tr>\n';
  s += '<tr><td width="108" align="right">&nbsp;</td><td width="298">&nbsp;</td></tr>\n';
  s += '<tr align="center"><td width="406" valign="top" colspan="2" bgcolor="#DDDDDD">\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="2"><b>Mode de règlement&nbsp;:</b></font></td></tr>\n';
  // Kreditkarte
  s += '<tr bgcolor="#EEEEEE">\n';
  s += '<td width="108" align="right"><font face="Arial, Helvetica, sans-serif" size="2"><b>Carte de crédit&nbsp;:</b></font></td>\n';
  s += '<td width="298"><input type="radio" name="paymethod" value="Kreditkarte"></td></tr>\n';
  //s += '<tr bgcolor="#EEEEEE"><td width="108" align="right">&nbsp;</td>\n';
  //s += '<td width="298"><font face="Arial, Helvetica, sans-serif" size="1">\n'; 
  //s += '<select name="cc">\n';
  //s += '<option value="CARTE AURORE">Carte Aurore</option>\n';
  //s += '<option value="CARTE BLEUE">Carte Bleue</option>\n';
  //s += '<option value="CARTE VISA">Carte Visa</option>\n';
  //s += '<option value="EURO CARD / MASTER CARD">Euro Card / Master Card</option>\n';
  //s += '</select></font></td></tr>\n';
  //s += '<tr bgcolor="#EEEEEE"><td width="108" align="right">\n';
  //s += '<font face="Arial, Helvetica, sans-serif" size="1"><b>Numéro de carte&nbsp;:</b></font></td>\n';
  //s += '<td width="298"><font face="Arial, Helvetica, sans-serif" size="2">\n';
  //s += '<input type="text" name="ccnr" size="30" maxlength="16" value="' + Kunde.ccnr + '" ';
  //s += 'onChange="parent.validate(window, form1, this, \'isNotEmpty\', \'Numéro de carte\')">\n';
  //s += '</font></td></tr>\n';
  //s += '<tr bgcolor="#EEEEEE"><td width="108" align="right">\n';
  //s += '<font face="Arial, Helvetica, sans-serif" size="1"><b>Date d\'expiration&nbsp;:</b></font></td>\n';
  //s += '<td width="298"><font face="Arial, Helvetica, sans-serif" size="1">\n';
  //s += '<input type="text" name="ccvalid" size="6" maxlength="6" value="' + Kunde.ccvalid + '" ';
  //s += 'onChange="parent.validate(window, form1, this, \'isValidCCExpDate\', \'\')">\n';
  //s += '(MMAAAA)</font></td></tr>\n';
  //s += '<tr bgcolor="#EEEEEE"><td width="108" align="right">\n';
  //s += '<font face="Arial, Helvetica, sans-serif" size="1"><b>Titulaire de la carte&nbsp;:</b></font></td>\n';
  //s += '<td width="298"><font face="Arial, Helvetica, sans-serif" size="2">\n';
  //s += '<input type="text" name="cccustname" size="30" value="' + Kunde.cccustname + '" ';
  //s += 'onChange="parent.validate(window, form1, this, \'isNotEmpty\', \'Titulaire de la carte\')">\n';
  //s += '</font></td></tr>\n';
  // Bankeinzug
  // Nachnahme
  // Rechnung
  // Scheck
  s += '<tr bgcolor="#EEEEEE"><td width="108" align="right">\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="2"><b>Chèque à la commande&nbsp;:</b></font></td>\n';
  s += '<td width="298"><input type="radio" name="paymethod" value="Scheck"></td></tr>\n';
  s += '<tr bgcolor="#EEEEEE"><td width="108" align="right">&nbsp;</td>\n';
  s += '<td width="298"><font face="Arial, Helvetica, sans-serif" size="1"><b>Imprimez la commande, joignez-y le chèque et adressez le tout</b></font></td></tr>\n';
  return s;
}

function showOrder2Form() {
  var s = new String("");
  // 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';
  s += '<input type="text" name="land" size="30" value="' + Kunde.land + '" ';
  s += 'onChange="parent.validate(window, form1, this, \'isNotEmpty\', \'Pays\')">\n';
  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 + '"></font></td></tr>\n';
  // E-Mail
  s += '<tr bgcolor="#EEEEEE"><td width="108" align="right">\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="2">E-mail&nbsp;:</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\', \'\')"></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';
  return s;
}

function showCustomerData() {
  var s = new String("");
  s += '<table width="400" border="0" cellspacing="2" cellpadding="2">';
  s += '<tr valign="baseline"><td align="left" valign="top" colspan="2">&nbsp;</td></tr>';
  // Bestellanschrift
  s += '<tr valign="top" align="left"><td width="101" valign="top">';
  s += '<font size="2" face="Arial, Helvetica, sans-serif">Adresse&nbsp;:</font></td>';
  s += '<td width="319"><p><font face="Arial, Helvetica, sans-serif" size="2">';
  s += Kunde.anrede + '<br>';
  if (Kunde.zusatz != '') {s += Kunde.zusatz + '&nbsp;';}
  s += Kunde.vorname + '&nbsp;' + Kunde.nachname + '<br>';
  if (Kunde.firma != '') {s += Kunde.firma + '<br>';}
  s += Kunde.strasse + '<br>';
  s += Kunde.plz + '&nbsp;' + Kunde.ort;
  s += '</font></p></td></tr>';
  // Land
  s += '<tr><td width="101" align="left">';
  s += '<font size="2" face="Arial, Helvetica, sans-serif">Pays&nbsp;:</font></td>';
  s += '<td width="319"><font face="Arial, Helvetica, sans-serif" size="2">' + Kunde.land + '</font></td></tr>';
  // Telefon
  if (Kunde.telefon != '') {
    s += '<tr><td width="101" align="left">';
    s += '<font size="2" face="Arial, Helvetica, sans-serif">Téléphone&nbsp;:</font></td>';
    s += '<td width="319"> <font face="Arial, Helvetica, sans-serif" size="2">' + Kunde.telefon + '</font></td></tr>';
  }
  // E-Mail
  if (Kunde.email != '') {
    s += '<tr><td width="101" align="left">';
    s += '<font size="2" face="Arial, Helvetica, sans-serif">E-mail&nbsp;:</font></td>';
    s += '<td width="319"><font face="Arial, Helvetica, sans-serif" size="2">' + Kunde.email + '</font></td></tr>';
  }
  s += '<tr><td width="101" align="left">&nbsp;</td><td width="319">&nbsp;</td></tr>';
  // Versandart        
  s += '<tr><td width="101" align="left">';
  s += '<font size="2" face="Arial, Helvetica, sans-serif">Mode d\'expédition&nbsp;:</font></td>';
  s += '<td width="319"><font face="Arial, Helvetica, sans-serif" size="2">' + Kunde.shiptext + '</font></td></tr>';
  s += '<tr><td width="101" align="left">&nbsp;</td><td width="319">&nbsp;</td></tr>';
  // Zahlungsweise
  s += '<tr><td width="101" align="left">';
  s += '<font size="2" face="Arial, Helvetica, sans-serif">Mode de règlement&nbsp;:</font></td>';
  // Kreditkarte
  if (Kunde.paymethod == 'Kreditkarte') {
    //s += '<td width="319"><font size="2" face="Arial, Helvetica, sans-serif">Carte de crédit&nbsp;: ' + Kunde.cc + '</font></td></tr>';
	s += '<td width="319"><font size="2" face="Arial, Helvetica, sans-serif">Carte de crédit</font></td></tr>';
    //s += '<tr><td width="101" align="left">&nbsp;</td>';
    //s += '<td width="319"><font size="2" face="Arial, Helvetica, sans-serif">';
    //s += 'Numéro de carte&nbsp;: ' + Kunde.ccnr + ' Date d\'expiration&nbsp;: ' + Kunde.ccvalid + '</font></td></tr>';
    //s += '<tr><td width="101" align="left">&nbsp;</td>';
    //s += '<td width="319"><font size="2" face="Arial, Helvetica, sans-serif">Titulaire de la carte&nbsp;: ' + Kunde.cccustname + '</font></td></tr>';
    Bestellung.paymethod = 'Carte de crédit#' + Kunde.cc + '#Numéro de carte ' + Kunde.ccnr + '#Date d\'expiration ' + Kunde.ccvalid + '#Titulaire de la carte ' + Kunde.cccustname; 
    Bestellung.paymethodshort = 'Carte de crédit';
  }
  if (Kunde.paymethod == 'Bankeinzug') {          
    s += '<td width="319"><font size="2" face="Arial, Helvetica, sans-serif">Prélèvement ' + Kunde.bankktonr + '</font></td></tr>';
    s += '<tr><td width="101" align="left">&nbsp;</td>';
    s += '<td width="319"><font size="2" face="Arial, Helvetica, sans-serif">Code Banque ' + Kunde.bankblz + ', ' + Kunde.bank + '</font></td></tr>';
    s += '<tr><td width="101" align="left">&nbsp;</td>';
    s += '<td width="319"><font size="2" face="Arial, Helvetica, sans-serif">Détenteur&nbsp;: ' + Kunde.bankcustname + '</font></td></tr>';
    Bestellung.paymethod = 'Prélèvement#Prélèvement ' + Kunde.bankktonr + '#Code Banque ' + Kunde.bankblz + '#Institut ' + Kunde.bank + '#Détenteur ' + Kunde.bankcustname; 
    Bestellung.paymethodshort = 'Prélèvement';
  }
  if (Kunde.paymethod == 'Nachnahme') {  
    s += '<td width="319"><font size="2" face="Arial, Helvetica, sans-serif">Contre remboursement</font></td></tr>';
    Bestellung.paymethod = 'Contre remboursement';
    Bestellung.paymethodshort = 'Contre remboursement';
  }
  if (Kunde.paymethod == 'Rechnung') {  
    s += '<td width="319"><font size="2" face="Arial, Helvetica, sans-serif">A réception de facture</font></td></tr>';
    Bestellung.paymethod = 'A réception de facture';
    Bestellung.paymethodshort = 'A réception de facture';
  }
  if (Kunde.paymethod == 'Scheck') {  
    s += '<td width="319"><font size="2" face="Arial, Helvetica, sans-serif">Chèque à la commande</font></td></tr>';
    Bestellung.paymethod = 'Chèque à la commande';
    Bestellung.paymethodshort = 'Chèque à la commande';
  }
  // Bemerkungen
  if (Kunde.bemerkung != '') {
    s += '<tr><td width="101" align="left" valign="top">';
    s += '<font size="2" face="Arial, Helvetica, sans-serif">Remarques&nbsp;:</font></td>';
    s += '<td width="319"><font face="Arial, Helvetica, sans-serif" size="2">' + Kunde.bemerkung + '</font></td></tr>';
  }
  s += '</table>';  
  return s;
}

function stringf(str,width,align) {
  var s = new String("");
  var i = width - str.length;
  if (i > 0) {
    for (var j=0; j<i; ++j) {
      s += " ";
    }
  } else {
    str = str.substring(0, width);
  }  
  if (align == "left") s = str + s
  else s += str;
  return s;
}

function printMessage(DateStr) {
  var versand = StringToFloat(Kunde.shipcost);
  var s = new String("");
  s += 'SERVICE DE COMMANDE ELCEA FRANCE#';
  s += DateStr + '#';
  s += Kunde.anrede + '#';
  if (Kunde.zusatz != '') {s += Kunde.zusatz + ' ';}
  s += Kunde.vorname + ' ' + Kunde.nachname + '#';
  if (Kunde.firma != '') {s += Kunde.firma + '#';}
  s += Kunde.strasse + '#';
  s += Kunde.plz + ' ' + Kunde.ort + '#';
  s += Kunde.land + '#';
  s += Kunde.telefon + '#';
  s += Kunde.email + '#';
  s += 'Mode d\'expédition#';
  s += Kunde.shiptext + '; ' + convdec(versand) + '#';
  s += 'Mode de règlement#';
  s += Bestellung.paymethod + '#';
  s += '--------------------------------------------------------------------------------#';
  s += Bestellung.items + '#';
  s += '--------------------------------------------------------------------------------#';
  s += Bestellung.subtotal + '#';
  s += Bestellung.delivery + '#';
  s += Bestellung.cod + '#';
  s += '--------------------------------------------------------------------------------#';
  s += Bestellung.total + '#';
  s += Bestellung.euro + '#';
  s += Bestellung.vat + '#';
  s += '--------------------------------------------------------------------------------#';
  s += '#Remarques#';
  if (Kunde.bemerkung == '') s+= 'aucune'
  else s += convertLF(Kunde.bemerkung);
  s += '#';
  return s;
}

function printAttachment(DateStr) {
  var s = new String("");
  s += 'shopname=SERVICE DE COMMANDE ELCEA FRANCE&';
  s += 'date=' + DateStr + '&';
  s += 'salutation=' + Kunde.anrede + '&';
  s += 'firstname=' + Kunde.vorname + '&';
  s += 'lastname=' + Kunde.nachname + '&';
  s += 'addition=' + Kunde.zusatz + '&';
  s += 'company=' + Kunde.firma + '&';
  s += 'street=' + Kunde.strasse + '&';
  s += 'zip=' + Kunde.plz + '&';
  s += 'city=' + Kunde.ort + '&';
  s += 'country=' + Kunde.land + '&';
  s += 'phone=' + Kunde.telefon + '&';
  s += 'email=' + Kunde.email + '&';
  if (Kunde.shipto == 'Inland') {
    s += 'shipto=National&';
  } else {
    s += 'shipto=International&';
  }
  s += 'shipcost=' + Kunde.shipcost + '&';
  s += 'shiptext=' + Kunde.shiptext + '&';
  s += 'paymethod=' + Bestellung.paymethodshort + '&';
  s += 'cc=' + Kunde.cc + '&';
  s += 'ccvalid=' + Kunde.ccvalid + '&';
  s += 'ccnr=' + Kunde.ccnr + '&';
  s += 'cccustname=' + Kunde.cccustname + '&';
  s += 'bank=' + Kunde.bank + '&';
  s += 'bankktonr=' + Kunde.bankktonr + '&';
  s += 'bankblz=' + Kunde.bankblz + '&';
  s += 'bankcustname=' + Kunde.bankcustname + '&';
  s += 'orderpaymethod=' + Bestellung.paymethod + '&';
  s += 'orderitems=' + Bestellung.items + '&';
  s += 'ordersubtotal=' + Bestellung.subtotal + '&';
  s += 'orderdelivery=' + Bestellung.delivery + '&';
  s += 'ordercod=' + Bestellung.cod + '&';
  s += 'ordertotal=' + Bestellung.total + '&';
  s += 'ordereuro=' + Bestellung.euro + '&';
  s += 'ordervat=' + Bestellung.vat;
  return escape(s);
}

function convertMessage(msg) {
  var s = new String("");
  var startpos = 0;
  var i = msg.indexOf('#',startpos);
  while (i != -1) {
    s += msg.substring(startpos,i) + '\n';
    startpos = i + 1;
    i = msg.indexOf('#',startpos);
  }
  s += msg.substring(startpos,msg.length);
  return s;
}

function convertLF(msg) {
  var s = new String("");
  var startpos = 0;
  var i = msg.indexOf('\n',startpos);
  while (i != -1) {
    s += msg.substring(startpos,i) + '#';
    startpos = i + 1;
    i = msg.indexOf('\n',startpos);
  }
  s += msg.substring(startpos,msg.length);
  return s;
}

function printEMail() {
  var versand = StringToFloat(Kunde.shipcost);
  var s = new String("");
  var msg = new String("");
  var mailfrom = new String("");
  var Now = new Date();
  var DateStr = Now.getDate() + '.';
  var year = Now.getYear();
  var stotal = 0;	
  var total2 = 0;
  for (var i = 0; i < items.length; i++) {
    stotal = items[i].qty * items[i].price;
	total2 += stotal;
  } 
  if (year < 2000) year += 1900;
  if ((Now.getMonth()+1) < 10) DateStr += '0' + (Now.getMonth()+1) + '.' + year
  else DateStr += (Now.getMonth()+1) + '.' + year;
  msg = printMessage(DateStr);
  if (Kunde.email != "") {mailfrom = Kunde.email;} else {mailfrom = "commandes@elceafrance.com";}
  if (Kunde.paymethod == "Scheck") {
    s += '<form method="post">\n';
    s += '<font face="Arial, Helvetica, sans-serif" size="1"><input type="button" value="Imprimer la commande" onClick="print()"></font></form>\n';
  } 
  else if (Kunde.paymethod == 'Kreditkarte') {
  versand = versand * 100;
	total2 = total2 * 100;
	total2 = total2 + versand;
	s += '<Form Action="http://www.elceafrance.com/cgi-bin/sslorder.cgi" TARGET="_top" Method="POST">';
	s += '<input type="hidden" name="To" value="' + mailfrom + '">\n';
	s += '<input type="hidden" name="From" value="commandes@elceafrance.com">\n';
	s += '<input type="hidden" name="Subject" value="Commande ELCEA FRANCE">\n';
	s += '<input type="hidden" name="Message" value="' + convertMessage(msg) + '">\n';
	s += '<input type="hidden" name="Attachment" value="' + printAttachment(DateStr) + '">\n';
	s += '<INPUT TYPE="hidden" NAME="online" VALUE="yes">\n';
	s += '<input type="hidden" name="IBS_MODE"       value="1">';
	s += '<input type="hidden" name="IBS_PORTEUR"    value="commandes@elceafrance.com">';
	s += '<input type="hidden" name="IBS_SITE"       value="4914559">';
	s += '<input type="hidden" name="IBS_RANG"       value="01">';
	s += '<input type="hidden" name="IBS_DATE"       value="' + Now.getDate() + '">';
	s += '<input type="hidden" name="IBS_TOTAL"      value="' + total2 + '">';
	s += '<input type="hidden" name="IBS_DEVISE"     value="978">';
	s += '<input type="hidden" name="IBS_CMD"        value="' + Now.getTime() + '">';
	s += '<input type="hidden" name="IBS_LANGUE"     value="FRA">';
	s += '<input type="hidden" name="IBS_ANNULE"     value="http://www.elceafrance.com">';
	s += '<input type="hidden" name="IBS_EFFECTUE"   value="http://www.elceafrance.com">';
	s += '<input type="hidden" name="IBS_REFUSE"     value="http://www.elceafrance.com">';
	s += '<input type="hidden" name="IBS_PAYBOX"     value="https://www.paybox.com/run/paiement2.cgi">';
	s += '<font face="Arial, Helvetica, sans-serif" size="1"><input type="submit" value="Paiement en ligne"></form>\n';
  }
  return s;
}

function printAnrede() {
  var s = new String("");
  s = Kunde.anrede +'&nbsp;' + Kunde.vorname +'&nbsp;' + Kunde.nachname + ',\n';
  return s;
}

function printOrderButton() {
  var s = new String("");
  s += '<form name="form2" method="post">\n';
  s += '<font face="Arial, Helvetica, sans-serif" size="1">\n';   
  s += '<input type="button" value="Parcourir les articles" onClick="history.back()">\n';
  s += '<input type="button" value="Poursuivre la commande" onClick="self.location=\'order1.html\';">\n';
  s += '</font></form>\n';
  return s;          
}

<!-- Copyright 1999 Roman Krzyzanowski / intermedien GmbH, Nuernberg -->
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 true;
  var atPos = email.indexOf('@');
  if (atPos < 0) return showMessage("Adresse e-mail non valide !");
  var username = email.substring(0,atPos).toLowerCase();
  var hostname = email.substring(atPos+1,email.length).toLowerCase();
  if (!validMailString(username)) return showMessage("Adresse e-mail non valide !");
  if (!validMailString(hostname)) return showMessage("Adresse e-mail non valide !");
  if (hostname.indexOf('.') < 0) return showMessage("Adresse e-mail non valide !");
  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;


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


