/* Javascript für die Seiten
 * Der Hof-Apotheke Karlsruhe
 * Erstellt und zusammengestellt
 * von Dominique Steppeler
 */
var separator = ";";
var teiler = "/";
var bestellung = new Array();
var eingabeFeld = new Array();
var istPflicht = new Array();
var feldNamen;
var fehler;
var meldung;
var msgComplete = "Bitte ausfüllen";
var bestForm;
var actionElement;
var bestListeDatei = "inh_best01.html";
var bestMaxAnzahl = 15;  // Wieviele Posten dürfen es sein?

var posten = 0;
function hinzufuegen() {
 checkDaten();
 if(fehler == 0) {
  document.getElementById("meldung").style.visibility = "hidden";
  bestellung.push(strPosten);
  posten = bestellung.length;
  bestListeLink();
  getBestellDaten();
  if(!bfenster || bfenster.closed == true) {
   bestFenster('best01',600);
  }
  else if (bfenster && bfenster.location.href.indexOf(bestListeDatei) == -1){
   bfenster.location.href = "info_best01.html";
  }
  else {
   addRow();
  }
  if(explorer > netscape)
   bfenster.focus();
 }
}

function checkDaten () {
 fehler = 0;
 getFelder();
 checkPosten();
 checkEingabe();

 strPosten = "";
 strPosten = eingabeFeld["menge"].value + separator;
 strPosten = strPosten + eingabeFeld["praeparat"].value + separator;
 strPosten = strPosten + eingabeFeld["pzn"].value + separator;
 strPosten = strPosten + eingabeFeld["darForm"] + separator;
 strPosten = strPosten + eingabeFeld["pkGroesse"].value + separator;
 strPosten = strPosten + eingabeFeld["einheit"].value;

 //Bei Fehlern
 if(fehler != 0) {
  document.getElementById("meldung").style.visibility = "visible";
  document.getElementById("meldung").firstChild.data = meldung;
  hinweisBlink();
  elementAction(actionElement);
 }
}

function getBestellDaten() {
 var strKunde = "";
 strKunde = eingabeFeld["vorname"].value + separator;
 strKunde = strKunde + eingabeFeld["nachname"].value + separator;
 strKunde = strKunde + eingabeFeld["telefon"].value + separator;
 strKunde = strKunde + eingabeFeld["email"].value + separator;

 if(eingabeFeld["nachricht"].checked == true)
  strKunde = strKunde + "nachricht senden";
 else
  strKunde = strKunde + "keine nachricht";

 document.bestellung.bestDaten.value = strKunde + teiler + bestellung.join(teiler);
}

function getFelder() {
 darForm();
 var feldNamen = new Array("vorname","nachname","telefon","email","nachricht","menge",
 			  "praeparat","pzn","darForm","pkGroesse","einheit");

 eingabeFeld["vorname"] 	 = document.bestellung.vorname;	   istPflicht["vorname"]   = true;
 eingabeFeld["nachname"]  = document.bestellung.nachname;   istPflicht["nachname"]  = true;
 eingabeFeld["telefon"] 	 = document.bestellung.telefon;    istPflicht["telefon"]   = false;
 eingabeFeld["email"] 	 = document.bestellung.email;      istPflicht["email"] 	   = true;
 eingabeFeld["nachricht"] = document.bestellung.nachricht;  istPflicht["nachricht"] = false;
 eingabeFeld["menge"] 	 = document.bestellung.menge;  	   istPflicht["menge"] 	   = true;
 eingabeFeld["praeparat"] = document.bestellung.praeparat;  istPflicht["praeparat"] = true;
 eingabeFeld["pzn"] 	 = document.bestellung.pzn; 	   istPflicht["pzn"] 	   = true;
 eingabeFeld["darForm"] 	 = bestForm; 			   istPflicht["darForm"]   = true;
 eingabeFeld["pkGroesse"] = document.bestellung.pkgroesse;  istPflicht["pkGroesse"] = true;
 eingabeFeld["einheit"]	 = document.bestellung.einheit;    istPflicht["einheit"]   = true;
}

function darForm() {
 radioForm = document.bestellung.dform;
 for(var i = 0; i < radioForm.length; i++) {
  if (radioForm[i].checked == true) {
   bestForm = radioForm[i].value;
   fehler = 0;
   break;
  }
  else {
   meldung = "Bitte wählen Sie eine Darreichungsform aus";
   actionElement = false;
   fehler++;
  }
 }
}

function checkPosten() {
 if (bestellung.length >= bestMaxAnzahl) {
  meldung = "Sie können maximal " + bestMaxAnzahl + " Posten in Ihre Bestelliste einfügen."
            + " Falls Sie mehr Medikamente vorbestellen wollen, füllen Sie nach dem Bestellen"
            + " das Formular einfach erneut aus.";
  actionElement = false;
  fehler++;
  if (explorer > netscape)
   bfenster.focus();
 }
}

function checkEingabe() {
 var check = new Array(checkFelder(),checkEinheit(),checkName("vorname"),
 		      checkName("nachname"),checkEmail("email"),checkNummer("telefon")
                       );
 for (var i = 0;i < check.length; i++) {
  if (fehler == 0)
   check[i];
  else
   break;
 }
}

function checkFelder() {
 var pruefFeld = new Array("vorname","nachname","telefon",
 			  "nachricht","pkGroesse","email");

 if (eingabeFeld["praeparat"].value == "" && eingabeFeld["pzn"].value == "") {
   meldung = "Bitte entweder das Präparat oder die PZN angeben"; 
   actionElement = false;
   fehler++;
 }
 else if (eingabeFeld["pzn"].value != "") {
  checkZahl("pzn",7);
 }
 else {
  for (var i = 0; fehler == 0 && i < pruefFeld.length; i++) {
   if (istPflicht[pruefFeld[i]] == true && (eingabeFeld[pruefFeld[i]].value == "" || eingabeFeld[pruefFeld[i]].value == msgComplete)) {
    meldung = "Bitte alle mit * gekennzeichneten Felder ausfüllen";
    eingabeFeld[pruefFeld[i]].value = "Bitte ausfüllen";
    actionElement = pruefFeld[i];
    fehler++;
    break;
   }
  }
 }
}

function checkEinheit() {
 if((eingabeFeld["einheit"].value == "Stück" && (eingabeFeld["darForm"] == "tropfen" || eingabeFeld["darForm"] == "creme" || eingabeFeld["darForm"] == "salbe" || eingabeFeld["darForm"] == "saft"))
     || (eingabeFeld["einheit"].value == "ml" &&(eingabeFeld["darForm"] == "tablette" || eingabeFeld["darForm"] == "zaepfchen" || eingabeFeld["darForm"] == "pulver" || eingabeFeld["darForm"] == "granulat"))
     || (eingabeFeld["einheit"].value == "g" && (eingabeFeld["darForm"] == "tropfen"  || eingabeFeld["darForm"] == "zaepfchen"))
   )
 {
   meldung = "Die Einheit für \"" + eingabeFeld["darForm"] + "\" kann nicht \"" + eingabeFeld["einheit"].value + "\" sein. Bitte wählen Sie eine passende Einheit!";
   actionElement = false;
   fehler++;
 }
}

function checkName(strName){
  for (var i=0;i < eingabeFeld[strName].value.length; i++){
   var cmp = "0123456789/,.;:+&§$!" //Diese Zeichen dürfen nicht enthalten sein
   var tst = eingabeFeld[strName].value.substring(i,i + 1)
   if (cmp.indexOf(tst)!= -1){
    meldung = strName+": "+eingabeFeld[strName].value+"Fehler: Diese Eingabe darf keine Zahlen, Sonderzeichen oder Leerzeichen enthalten.";
    eingabeFeld[strName].value = eingabeFeld[strName].value;
    actionElement = strName;
    fehler++;
    break;
   }
  }
 }

function checkEmail(strName) {
 var tld = new Array(".at",".au",".be",".bg",".biz",".br",".ca",".ch",".cn",".com",
 	            ".cs",".cy",".cz",".de",".dk",".edu",".ee",".eg",".es",".eu",
                     ".fi",".fr",".gov",".gr",".hk",".hr",".hu",".ie",".il",".in",
                     ".info",".int",".jp",".li",".lu",".mc",".net",".nl",".pl",".ru",
                     ".se",".si",".sk",".tn",".tr",".us",".uk");
 var userDomain = eingabeFeld[strName].value.substring(eingabeFeld[strName].value.indexOf("@")+1,eingabeFeld[strName].value.lastIndexOf("."));
 var userTLD = eingabeFeld[strName].value.substring(eingabeFeld[strName].value.lastIndexOf("."),eingabeFeld[strName].value.length);
 var topLD = true;
 var cmp = "/-,.;:+&§$!()=[]{}ß? ";

 if (fehler == 0 && (eingabeFeld[strName].value != "" || eingabeFeld[strName].value != msgComplete)
      && (eingabeFeld[strName].value.indexOf("@") == -1
      || eingabeFeld[strName].value.indexOf("@") < 3
      || eingabeFeld[strName].value.indexOf("@") > (eingabeFeld[strName].value.length - 5))) {
  meldung = "Bitte geben Sie eine korrekte Email-Adresse ein";
  fehler++;
 }
 else if (eingabeFeld[strName].value != "" && userDomain != "" && userDomain.length < 3) {
  meldung = "Die Email-Adresse ist nicht korrekt. Die Domain: \"" + userDomain + "\" muss mindestens aus drei Zeichen bestehen.";
  fehler++;
 }
 else if (eingabeFeld[strName].value != "" && userDomain != "" && cmp.indexOf(userDomain.charAt(0)) != -1) {
  meldung = "Die Email-Adresse ist nicht korrekt. Das erste Zeichen des Domain-Namen \"" + userDomain + "\" darf kein Sonderzeichen oder Leerzeichen sein.";
  fehler++;
 }


 for(var i = 0; eingabeFeld[strName].value != "" && fehler == 0 && i < tld.length; i++) {
  if (userTLD != tld[i]) {
   meldung = "Die Email-Adresse scheint nicht korrekt zu sein. Überprüfen Sie die Toplevel-Domain: \"" + userTLD + "\"";
   topLD = false;
  }
  else {
   topLD = true;
   break;
  }
 }

 if (topLD == false) {
  eingabeFeld[strName].value = eingabeFeld[strName].value;
  actionElement = strName;
  fehler++;
 }
}

/* Prüft, ob eine korrekte Zahl eingegebne wurde */
function checkNummer(strName){
 sonder = 0;
 for (var i = 0; i < eingabeFeld[strName].value.length; i++){
  cmp="0123456789/- "
  tst=eingabeFeld[strName].value.substring(i,i+1)
  if (cmp.indexOf(tst)<0){
   sonder++;
  }
 }
 if (sonder != 0){
  meldung= eingabeFeld[strName].value+" > Diese Eingabe muss eine Zahl sein.";
  eingabeFeld[strName].value = eingabeFeld[strName].value;
  actionElement = strName;
  fehler++;
 }
}

function checkZahl(strName,laenge){
 sonder = 0;
 for (var i = 0; i < eingabeFeld[strName].value.length; i++){
  cmp="0123456789"
  tst=eingabeFeld[strName].value.substring(i,i+1)
  if (cmp.indexOf(tst)<0){
   sonder++;
  }
 }
 if (sonder != 0){
  meldung=  strName + ": \"" + eingabeFeld[strName].value + "\" > Diese Eingabe muss eine Zahl sein.";
  eingabeFeld[strName].value = eingabeFeld[strName].value;
  actionElement = strName;
  fehler++;
 }
 if (sonder == 0 && eingabeFeld[strName].value.length < laenge) {
  meldung = strName + ": \"" + eingabeFeld[strName].value + "\" > Diese Eingabe muss aus " + laenge + " Zahlen bestehen.";
  eingabeFeld[strName].value = eingabeFeld[strName].value;
  actionElement = strName;
  fehler++;
 }
}

function addRow() {
 var infoFenster = bfenster;
 var einzelPosten = new Array(eingabeFeld["menge"].value,eingabeFeld["praeparat"].value,eingabeFeld["pzn"].value,
 		       	     eingabeFeld["darForm"],eingabeFeld["pkGroesse"].value,eingabeFeld["einheit"].value);
 bfenster.document.getElementById("tr" + bestellung.length).style.visibility = "visible";
 bfenster.document.getElementById("tr" + bestellung.length).style.display = bfenster.disTrBlock;
 for (var i = 0; i < einzelPosten.length; i++) {
  if (einzelPosten[i] == "")
   einzelPosten[i] = "---";
  if (i == 0)
   infoFenster.document.getElementById("td" + bestellung.length + "-" + i).style.visibility = "visible";
  infoFenster.document.getElementById("td" + bestellung.length + "-" + (i+1)).firstChild.data = einzelPosten[i];
 }
 bfenster.showSubmit();
}

function bestListe() {
 if(!bfenster || bfenster.closed == true) {
  bestFenster('best01',600);
 }
 else if (bfenster && bfenster.location.href.indexOf(bestListeDatei) == -1){
  bfenster.location.href = "info_best01.html";
  bfenster.focus();
 }
 else {
  bfenster.focus();
 }
}

var bfenster;
/* Bild in einem kleinen Fenster öffnen */
function bestFenster(bname,bhoehe){
 if (!bhoehe || bhoehe == "" || bhoehe == 0)
  bhoehe = 550;
 var urL = "info_" + bname + ".html";
 bfenster = window.open(urL,"info","width=450,height=" + bhoehe + ",left=5,top=160,resizeable=no,scrollbars=no,dependent=yes");
 bfenster.focus();
}

function besDelAll() {
 document.bestellung.bestDaten.value = "";
 bestellung.length = 0;
 bestListeLink();
 resetBestellung();
}

function resetBestellung() {
 var vorname = eingabeFeld["vorname"].value;
 var nachname = eingabeFeld["nachname"].value;
 var telefon = eingabeFeld["telefon"].value;
 var email = eingabeFeld["email"].value;
 document.bestellung.reset();
 eingabeFeld["vorname"].value = vorname;
 eingabeFeld["nachname"].value = nachname;
 eingabeFeld["telefon"].value = telefon;
 eingabeFeld["email"].value = email;
}

function besDelRow(row) {
 var bestNeu = new Array();
 var j = 0;
 for (var i = 0; i < bestellung.length; i++) {
  if (i != row)
   bestNeu[j++] = bestellung[i];
 }
 bestellung = bestNeu;
 getBestellDaten();
 document.getElementById("meldung").style.visibility = "hidden";
 bestListeLink();
 hideSubmit();
}

function besSubmit() {
 var bestaetigen = confirm("Wollen Sie Ihre Bestellung jetzt Abschicken?");
 if (bestaetigen == true) {
  checkDaten();
  if (fehler == 0) {
   getBestellDaten();
   if(bfenster.closed == false)
    bfenster.close();
   document.bestellung.submit(); // Funktioniert nur mit <form method="get"> und nicht mit <form method="post">
   //alert(document.bestellung.bestDaten.value);
  }
 }
}

function hideSubmit() {
 if (bfenster && bfenster.document.getElementById("submit") && bestellung.length == 0) {
  bfenster.document.getElementById("delAll").style.display = "none";
  bfenster.document.getElementById("reload").style.display = "none";
  bfenster.document.getElementById("submit").style.display = "none";
 }
}

var aussenMarginL;
var datumMarginL;
function dfloat() {
aussenMarginL = document.getElementById("aussen").style.marginLeft;
datumMarginL = document.getElementById("datum").style.marginLeft;
 if (netscape > explorer && document.getElementById("aussen")) {
  document.getElementById("aussen").style.marginLeft = "5em";
  document.getElementById("datum").style.marginLeft = "5em";
 }
}

function dfloatBack() {
 if (netscape > explorer && document.getElementById("aussen")) {
  document.getElementById("aussen").style.marginLeft = aussenMarginL;
  document.getElementById("datum").style.marginLeft = datumMarginL;
 }
}

function hinweisBlink() {
 elementColors("meldung","#800000","#FFE");
 setTimeout("elementColors('meldung','#FFE','#800000')",500);
}

function elementColors(element,bgColor,color) {
 document.getElementById(element).style.backgroundColor = bgColor;
 document.getElementById(element).style.color = color;
}

function bestListeLink () {
 document.getElementById("bestListe").firstChild.data = "Bestelliste [" + bestellung.length + "]";
 if (bfenster && !bfenster.closed && bfenster.location.href.indexOf(bestListeDatei) != -1)
  bfenster.document.getElementById("header").firstChild.data = "Übersicht: Ihre Bestellung [" + bestellung.length + " Posten]";
}

function elementAction(actionElement) {
 if (actionElement != false) {
  actionSelect = eingabeFeld[actionElement].select();
  actionFocus = eingabeFeld[actionElement].focus();
 }
}