// ============    Cookies     ================

cookieWarenkorb = "WARENKORB";
cookieVersand   = "VERSAND";
cookieHandel    = "HANDEL";
cookieSeite     = "LETZTE_SEITE";
cookieArtNr     = "ART_NR";

function storeCookie (Bezeichner, Wert, Schalter)
{
  if (Schalter)  Tage = 365
  else           Tage = -1
  jetzt = new Date();
  Auszeit = new Date(jetzt.getTime() + Tage * 86400000);
  document.cookie = Bezeichner + "=" + Wert + ";expires="
                  + Auszeit.toGMTString()+";"
}

function getCookieValue (Bezeichner)
{
  v = new String;
  t = document.cookie + ";";
  n = t.toUpperCase()
  s = "_" + Bezeichner.toUpperCase() + "=";
  i = n.indexOf (s);
  if (i >= 0)
  {
    t = t.substring (i + s.length, t.length + 1);
    i = t.indexOf (";");
    if (i >= 0) v = t.substring (0, i);
  }
  return v;
}

function CookieName (Bezeichner)
{
  return "_" + Bezeichner.toUpperCase ();
}

function writeCookie (Bezeichner, Wert)
{
  document.cookie = CookieName (Bezeichner) + "=" + Wert;
}

function clearCookies ()
{
  writeCookie (cookieWarenkorb, "");
  writeCookie (cookieHandel, "");
  writeCookie (cookieSeite, "");
}

function setLastPage (url)
{
  writeCookie (cookieSeite, url);
}

function getLastPage ()
{
  return getCookieValue (cookieSeite);
}

// ============    Routinen    ================

quote = '"';

function quoted (text)
{
  return quote + text + quote;
}

function imgTag (img, width, height, altname)
{
  if (img.length > 0)
  {
    p = "";
    if (width > 0)  p += ' width=' + quoted (width);
    if (height > 0) p += ' height=' + quoted (height);
    if (altname.length > 0) p += ' alt=' + quoted (altname);
    return '<img src=' + quoted (img) + ' border=0' + p + ' valign="middle">';
  }
  else
  {
    return altname;
  }
}

function setFormElementValue (Bezeichner,Wert)
{
  Bezeichner = Bezeichner.toUpperCase()
  mi = document.Formular.elements.length
  found=false
  for (i=0;i<mi;i++)
    with (document.Formular.elements[i])
      if (name.toUpperCase() == Bezeichner)
      {
        found=true
        if (type.toUpperCase() == "SELECT-ONE")
        {
          Wert = Wert.toUpperCase()
          mc = options.length
          for (c=0;c<mc;c++)
            with (options[c])
              selected = (value.toUpperCase() == Wert)
        }
        else value = Wert
      }
  if (!found)
    if (Bezeichner.charAt(0) != "_")
      storeCookie (Bezeichner, Wert, found)
}

function initForm ()
{
  t = document.cookie + ";"
  i = 0
  while ((Wertstart = t.indexOf("=")) > 0)
  {
    Wertende = t.indexOf(";")
    if (Wertende > Wertstart)
    {
      Bezeichner=t.substring(0, Wertstart)
      Wert=t.substring(Wertstart + 1, Wertende)
      setFormElementValue (Bezeichner, Wert)
      i++
    }
    do
    {
      Wertende++
    } while (t.charAt(Wertende) == " ")
    t = t.substring(Wertende, t.length + 1)
  }
}

function getFormElementValue (FormName, i)
{
  wert=""
  with (document.forms [FormName].elements[i])
  {
    if (type.toUpperCase() == "SELECT-ONE")
    {
      mc = options.length
      for (c=0;c<mc;c++)
        with (options[c])
          if (selected) wert = value
    }
    else if (type.toUpperCase() == "CHECKBOX")
        {
          if (checked) wert = value;
        }
    else wert = value;
  }
  return wert;
}

function checkForm (FormName, requiredElementsNames, separator)
{
  missing = "";
  fi = "";
  ren = requiredElementsNames.split (separator);
  mi = document.forms [FormName].elements.length;
  for (i = 0; i < ren.length; i++)
  {
    n = ren [i];
    f = n.toLowerCase ();
    v = getFormElementValue (FormName, f);
    if (v.length <= 0)
    {
      if (missing.length > 0) missing += separator;
      missing += n;
      if (fi.length <= 0) fi = f;
    }
  }
  if (fi.length > 0)
  {
    alert ("Bitte auch folgende Felder ausfüllen: " + missing);
    document.forms [FormName].elements[fi].focus ();
    return false;
  }
  else return true
}

// ===== Betrag / Währung =====

function Betrag (t)
{
  nk = 2;
  // auf nk Stellen runden
  for (c = 1; c <= nk; c++)
  {
    t *= 10;
  }
  t += 0.5;
  s = new String (t);
  t = s.indexOf (".");
  if (t >=0) { s = s.substring (0, t); }
  // Links mit Nullen auffüllen
  while (s.length <= nk)
  {
    s = "0" + s
  }
  // Komma einfügen
  s = s.substring (0, s.length - nk) + "," + s.substr (s.length - nk, nk);
  return s;
}

function Waehrungsbetrag (t)
{
  return Betrag (t) + '&nbsp;' + constWaehrung;
}

function BetragToNumber (betrag)
{
  bs = betrag;
  bs = bs.replace (",", ".");
  return new Number (bs);
}

function ntoi(aNumber)
{
  sNumber = new String (aNumber);
  nPos = sNumber.indexOf ('.');
  if (nPos >= 0) sNumber = sNumber.substring (0, nPos);
  if (sNumber.length == 0) sNumber = '0';
  return new Number (sNumber);
}

// ===== Gewicht =====

function Gewicht (gewicht)
{
  // String in Zahl umwandeln
  gs = gewicht;
  gs = gs.replace (",", ".");
  return new Number (gs);
}
function Gewichtsanzeige (gewicht, faktor, einheit)
{
  // mit Faktor multiplizieren
  gn = gewicht * faktor;
  // String für Anzeige erstellen
  gs = new String (gn);
  gs = gs.replace (".", ",");
  return gs + '&nbsp;' + einheit; 
}

// ======== Händler-Login =============

function isHandel ()
{
  handel = getCookieValue (cookieHandel);
  return handel.length > 0
}

/*
<script language="JavaScript">
<!--
HandelLogin (top.location.href);
//-->
</script>
*/

function HandelLogin (url)
{
  if (!isHandel ())
  {
    document.write ('<form action="' + p_eingabe_pruefen + '" method="POST" target="' + handel_target + '">');
    document.write ('<p align="' + handel_align + '">' + kundennr_text + '<br />');
    document.write ('<input type="Text" name="kundennr" value="" size="' + kundennr_size + '" maxlength=""></p>');
    document.write ('<p align="' + handel_align + '">' + kennwort_text + '<br />');
    document.write ('<input type="Password" name="kennwort" value="" size="' + kennwort_size + '" maxlength=""></p>');
    document.write ('<input type="hidden" name="redirect" value="' + p_redirect + '">');
    document.write ('<input type="hidden" name="url" value="' + url + '">');
    document.write ('<input type="hidden" name="db_error" value="' + p_db_fehler + '">');
    document.write ('<input type="hidden" name="login_fehler" value="' + p_login_fehler + '">');
    document.write ('<input type="hidden" name="kennwort_aendern" value="' + p_kennwort_aendern + '">');
    document.write ('<input type="hidden" name="cookie" value="' + CookieName (cookieHandel) + '">');
    document.write ('<p align="' + handel_align + '">' + handel_schaltflaeche_html + '</p>');
    document.write ('</form>');
  }
}

function HandelLogout ()
{
  if (isHandel ())
  {
    document.write ('<a href="javascript: Logout ();">' + logout_text + '</a>');
  }
}

function HandelKennwort ()
{
  if (isHandel ())
  {
    document.write ('<form action="' + p_kennwort_aendern_php + '" method="POST" target="' + handel_target + '">');
    document.write ('<table>');
    document.write ('<tr>');
    document.write ('<td>' + kennwort_text + '</td>');
    document.write ('<td><input type="Password" name="kennwort" value="" size="' + kennwort_size + '" maxlength=""></td>');
    document.write ('</tr>');
    document.write ('<tr>');
    document.write ('<td>' + kennwort_text1 + '</td>');
    document.write ('<td><input type="Password" name="kennwort1" value="" size="' + kennwort_size + '" maxlength=""></td>');
    document.write ('</tr>');
    document.write ('<tr>');
    document.write ('<td>' + kennwort_text2 + '</td>');
    document.write ('<td><input type="Password" name="kennwort2" value="" size="' + kennwort_size + '" maxlength=""></td>');
    document.write ('</tr>');
    document.write ('<tr>');
    document.write ('<td colspan="2" align="right">' + kennwort_schaltflaeche_html + '</td>');
    document.write ('</tr>');
    document.write ('</table>');
    document.write ('<input type="hidden" name="redirect" value="' + p_redirect + '">');
    document.write ('<input type="hidden" name="url" value="' + getLastPage () + '">');
    document.write ('<input type="hidden" name="db_error" value="' + p_db_fehler + '">');
    document.write ('<input type="hidden" name="falsches_kennwort" value="' + p_kennwort_falsch + '">');
    document.write ('<input type="hidden" name="verschiedene_kennwoerter" value="' + p_kennwoerter_verschieden+ '">');
    document.write ('<input type="hidden" name="cookie" value="' + CookieName (cookieHandel) + '">');
    document.write ('</form>');
  }
}

function Logout ()
{
  writeCookie (cookieHandel, "");
  top.location = top.location;
}

function HandelSeite (dateiname)
{
  if (isHandel ()) location = dateiname;
}

function HandelHtml (endkunde_html, handel_html)
{
  if (isHandel ()) endkunde_html = handel_html;
  document.write (endkunde_html);
}

// ======== Preisinfo =============
/*
<script language="JavaScript">
<!--
Preis ("ArtNr")
//-->
</script>
*/

function Preis (ArtNr)
{
  pe = "???";
  handel = isHandel ();
  for (p = 0; p < Produkte.length; p++)
  {
    if (Produkte[p][ipArtNr] == ArtNr)
    {
      if (handel)         pe = Produkte[p][ipPreisHandel];
      else                pe = "";
      if (pe.length <= 0) pe = Produkte[p][ipPreisKunde];
      break;
    }
  }
  document.write (pe);
}

// ======== Bestellen / Warenkorb =============

function bestellen(wk, ArtNr, Menge, Zusatz)
{
  Menge = new Number (Menge);
  if ((ArtNr.length > 0) && (Menge > 0))
  {
    a = "0";
    m = 0;
    z = "";
    f = 1;
    for (m = 0; m < lpMenge; m++) f *= 10;
    if (wk.length > 0)
    {
      wk = wk.split ("#");
      for (i = 0; i < wk.length; i++)
      {
        p = wk [i];
        m = new Number (p.substr (0, lpMenge));
        az = p.substring (lpMenge, p.length);
        if (az == ArtNr + Zusatz)
        {
          m += Menge;
          if (m >= f) m = f - 1;
          m += f;
          ms = new String (m)
          wk [i] = ms.substr (1, lpMenge) + ArtNr + Zusatz;
          Menge = 0;
          break;
        }
      }
    }
    else wk = new Array ();
    if (Menge > 0) // Artikel neu in Warenkorb aufnehmen
    {
      ms = new String (f + Menge)
      wk.push (ms.substr (1, lpMenge) + ArtNr + Zusatz);
    }
  }
  return wk.join ("#");
}

function bestellformular (form_name, zusatz_suffix)
{
  wk = getCookieValue (cookieWarenkorb);
  ok = true;
  with (document.forms [form_name])
  {
    for (ei = 0; ei < elements.length; ei++)
    {
      with (elements [ei])
      {
        if ((name.length == lpArtNr) && ((type == "text") || ((type == "checkbox") && checked)))
        {
          v = value;
          if (v.length > 0)
          {
            ok = v.search (/\D/) < 0;
            if (!ok)
            {
              alert ('Nur Ziffern zugelassen');
              elements [ei].focus ();
              break;
            }
          }
          Menge = new Number (v);
          if (Menge > 0)
          {
            Zusatz = "";
            if (zusatz_suffix.length > 0)
            {
              if (elements [name + zusatz_suffix])
              {
                Zusatz = elements [name + zusatz_suffix].value;
                ok = Zusatz.search (/["#\\]/) < 0;
                if (!ok)
                {
                  alert ('Folgende Zeichen dürfen nicht verwendet werden: " # \\');
                  elements [name + zusatz_suffix].focus ();
                  break;
                }
              }
            }
            wk = bestellen (wk, name, Menge, Zusatz);
          }
        }
      }
    }
  }
  if (ok)
  {
    writeCookie (cookieWarenkorb, wk);
    top.location = p_warenkorb;
  }
}

nameVersandziel = 'Versandziel';
nameVersandart = 'Versandart';

function WarenkorbPruefen (form_name)
{
  // Versand speichern
  vz = document.forms [form_name].elements [nameVersandziel].value;
  va = document.forms [form_name].elements [nameVersandart].value;
  if (Versandkosten [vz][1].length <= va) { va = 0; }
  v = new Array (vz, va);
  writeCookie (cookieVersand, v.join ("#"));
  // Warenkorb speichern
  wk = getCookieValue (cookieWarenkorb);
  wk = wk.split ("#");
  f = 1;
  m = 0;
  az = "";
  for (i = 0; i < lpMenge; i++) f *= 10;
  // Menge prüfen
  wkn = new Array ();
  for (i = 0; i < wk.length; i++)
  {
    p = wk [i];
    m = new Number (p.substr (0, lpMenge));
    az = p.substring (lpMenge, p.length);
    var v = document.forms [form_name].elements [az].value;
    if (v.toUpperCase() != v)
    {
      alert ("Bitte eine Zahl (0-" + (f-1) + ") eingeben!");
      focus();
      return -1;
    }
    m = new Number (v);
    if (m > 0)
    {
      ms = new String (f + m)
      wkn.push (ms.substr (1, lpMenge) + az);
    }
  }
  writeCookie (cookieWarenkorb, wkn.join ("#"));
  return wk.length;
}

function Warenkorb (mwst_satz)
// erstellt Array aus Cookie
{
  result = new Array ();
  wk = getCookieValue (cookieWarenkorb);
  if (wk.length > 0)
  {
    wk = wk.split ("#");
    summe = new Number (0);
    gsumme = new Number (0);
    handel = isHandel ();
    positionen = new Array ();
    for (i = 0; i < wk.length; i++)
    {
      menge = wk [i].substr (0, lpMenge);
      artnr = wk [i].substr (lpMenge, lpArtNr);
      zusatz = wk [i].substring (lpMenge + lpArtNr, wk [i].length);
      // Daten zum Artikel abrufen
      b = "";
      for (p = 0; p < Produkte.length; p++)
      {
        if (Produkte[p][ipArtNr] == artnr)
        {
          b = Produkte[p][ipBezeichnung];
          if (handel) pe = Produkte[p][ipPreisHandel];
          else        pe = "";
          if (pe.length <= 0) pe = Produkte[p][ipPreisKunde];
          pe = BetragToNumber (pe);
          pg = menge * pe;
          summe += pg;
          ge = Gewicht (Produkte[p][ipGewicht]);
          gg = menge * ge;
          gsumme += gg;
          pos = new Array (artnr, menge, b, zusatz, pe, pg, ge, Math.ceil (gg));
          positionen.push (pos);
          break;
        }
      }
    }
    // Verpackung zu Gesamtgewicht hinzurechnen
    gsumme += Gewicht (gewichtVerpackungPauschale) + (gsumme * gewichtVerpackungFaktor / 100);
    gsumme = Math.ceil (gsumme); // keine Nachkommastellen
    /*
    // Versandkosten berechnen
    vk = BetragToNumber (vVersandkosten);
    for (i = 0; i < Versandkosten.length; i++)
    {
      if (summe < BetragToNumber (Versandkosten[i][ivLimit]))
      {
        vk = BetragToNumber (Versandkosten[i][ivVersandkosten]);
        break;
      }
    }
    */
    // Versandkosten berechnen
    versand = getCookieValue (cookieVersand);
    if (versand.length > 0)
    {
      versand = versand.split ("#");
      vz = versand [0];
      va = versand [1];
    }
    else
    {
      vz = 0;
      va = 0;
    }
    if (handel)
       vk = BetragToNumber (Versandkosten [vz][1][va][2]);
    else
       vk = BetragToNumber (Versandkosten [vz][1][va][1]);
    result [0] = positionen;
    result [1] = summe;
    result [2] = gsumme;    // Gesamtgewicht
    result [3] = new Array (vz, va, vk);
    netto = summe + vk;
    if (handel)
    {
      mwst = netto * mwst_satz / 100;
      brutto = netto + mwst;
    }
    else
    {
      brutto = netto;
      netto = brutto / (1 + mwst_satz / 100);
      mwst = brutto - netto;
    }
    result [4] = new Array (netto, mwst_satz, mwst, brutto)
  }
  return result;
}

function VersandzielAuswahlfeld (warenkorb_daten, onchange)
// erstellt ein Auswahlfeld mit möglichen Versandzielen
// warenkorb_daten: siehe Warenkorb () result
{
  vz = warenkorb_daten [3][0]
  optionen = ""
  for (i = 0; i < Versandkosten.length; i++)
  {
    if (i == vz) { s = " selected" }
    else         { s = "" }
    optionen = optionen + '<option' + s + ' value="' + i + '">' + Versandkosten [i][0] + '</option>';
  }
  return '<select name="' + nameVersandziel + '" onchange="' + onchange + '">'
         + optionen + '</select>';
}

function VersandartAuswahlfeld (warenkorb_daten, onchange)
// erstellt ein Auswahlfeld mit möglichen Versandarten zum gewählten Versandziel
// warenkorb_daten: siehe Warenkorb () result
{
  vz = warenkorb_daten [3][0]
  va = warenkorb_daten [3][1]
  optionen = ""
  for (i = 0; i < Versandkosten [vz][1].length; i++)
  {
    if (i == va) { s = " selected" }
    else         { s = "" }
    optionen = optionen + '<option' + s + ' value="' + i + '">' + Versandkosten [vz][1][i][0] + '</option>';
  }
  return '<select name="' + nameVersandart + '" onchange="' + onchange + '">'
         + optionen + '</select>';
}

function Versandziel (warenkorb_daten)
// gibt das Versandziel
// warenkorb_daten: siehe Warenkorb () result
{
  return Versandkosten [warenkorb_daten [3][0]][0];
}

function Versandart (warenkorb_daten)
// erstellt ein Auswahlfeld mit möglichen Versandarten zum gewählten Versandziel
// warenkorb_daten: siehe Warenkorb () result
{
  return Versandkosten [warenkorb_daten [3][0]][1][warenkorb_daten [3][1]][0];
}

// ============      Ende      ================
