// Alle Funktionen sollten nur mit größter Vorsicht verändert werden.
// Alle Änderungen sind zu dokumentieren.
// Auch diese Scripts unterliegen den Copyright und Urheberrecht von AGI - Andreas Guder Internetagentur

// Variablen, die immer wieder gebraucht werden, nicht Löschen
var inpelement = null; // beliebiges Element, wird oft für Ajax-Funktionen verwendet
var picspeicher = null; // Speichervariable für plus- und minus-Bilde
var ajaxintv = null; // Variable für einen Intervall
var selfprice = 0; // Zwischengespeicherter Preis
  
// Diese Funktion wandelt Zeilenumbrüche in BR Elemente um und gibt den Text im Aufrufenden Knoten aus
function nl2br(inhalt,aufrufenderKnoten) {
  
  if (inhalt.match(/\n/) ) {
    text = inhalt;
		while(text.match(/\n/))
		{
			var position = text.indexOf("\n");
			var schreibetext = text.substr(0, position);
			var neuerText = document.createTextNode(schreibetext);
			aufrufenderKnoten.appendChild(neuerText);
			var neuerKnoten = document.createElement('BR');
			aufrufenderKnoten.appendChild(neuerKnoten);
			text = text.substr(position+1);
		}
		var neuerText = document.createTextNode(text);
		aufrufenderKnoten.appendChild(neuerText);
    
	}
  else {
    
    neuerText = document.createTextNode(inhalt);
		aufrufenderKnoten.appendChild(neuerText);
    
  }
  
}

// Wiedergabe des Countdowns
function countdown() {
  
  var startzeit = new Date();
  
  if ( startzeit < endzeit )  {
    
    var goon = true;
    
    if ( document.getElementById('cday') ) {
      var tage = Math.floor((endzeit-startzeit)/(24*60*60*1000));
      startzeit.setTime(startzeit.getTime()+(tage*24*60*60*1000));
    }
    
    if ( document.getElementById('chour') ) {
      var stunden = Math.floor((endzeit-startzeit)/(60*60*1000));
      startzeit.setTime(startzeit.getTime()+(stunden*60*60*1000));
    }
    
    if ( document.getElementById('cmin') ) {
      var minuten = Math.floor((endzeit-startzeit)/(60*1000));
      startzeit.setTime(startzeit.getTime()+(minuten*60*1000));
    }
    
    var sekunden = Math.floor((endzeit-startzeit)/(1000));
    startzeit.setTime(startzeit.getTime()+(sekunden*1000));
    
  }
  else {
    
    var goon = false;
    var tage = 0;
    var stunden = 0;
    var minuten = 0;
    var sekunden = 0;
    
  }
  
  // Ausgabe der verbleibenden Tage
  if ( document.getElementById('cday') ) {
    
    while ( document.getElementById('cday').hasChildNodes() ) {
      document.getElementById('cday').removeChild(document.getElementById('cday').firstChild);
    }
    document.getElementById('cday').appendChild(document.createTextNode(tage));
    
  }
  
  // Ausgabe der verbleibenden Stunden
  if ( document.getElementById('chour') ) {
    
    while ( document.getElementById('chour').hasChildNodes() ) {
      document.getElementById('chour').removeChild(document.getElementById('chour').firstChild);
    }
    if ( stunden < 10 )
      stunden = '0'+stunden;
    document.getElementById('chour').appendChild(document.createTextNode(stunden));
    
  }
  
  // Ausgabe der verbleibenden Minuten
  if ( document.getElementById('cmin') ) {
    
    while ( document.getElementById('cmin').hasChildNodes() ) {
      document.getElementById('cmin').removeChild(document.getElementById('cmin').firstChild);
    }
    if ( minuten < 10 )
      minuten = '0'+minuten;
    document.getElementById('cmin').appendChild(document.createTextNode(minuten));
    
  }
  
  // Ausgabe der verbleibenden Sekunden
  if ( document.getElementById('csec') ) {
    
    while ( document.getElementById('csec').hasChildNodes() ) {
      document.getElementById('csec').removeChild(document.getElementById('csec').firstChild);
    }
    if ( sekunden < 10 )
      sekunden = '0'+sekunden;
    document.getElementById('csec').appendChild(document.createTextNode(sekunden));
    
  }
  
  if ( goon )
    setTimeout('countdown()',1000);
  
}

// Lädt die Originalbilder vor
function preloadImages() {
  
  if ( document.images ) { 
    
    // Gibt es schon einen Bilder-Array oder muss dieser erstellt werden
    if ( !document.pics) 
      document.pics = new Array();
    
    var x = document.pics.length;
    for ( var i=0; i < preloadImages.arguments.length; i++) {
      
      if ( preloadImages.arguments[i].indexOf("#") != 0 ) {
        
        document.pics[x] = new Image; 
        document.pics[x++].src = preloadImages.arguments[i];
        
      }
      
    }
    
  }
  
}

// Function zentriert das neue Bild in der Anzeigefläche
function centerbild(id) {
  
  var bild = document.getElementById(id);
  //bild.style.display = 'block'; 
  bild.style.visibility = 'visible';
  /*bild.style.top = '50%';
  var mtop = Math.round(bild.offsetHeight/2);
  bild.style.marginTop = '-'+mtop+'px';
  
  bild.style.left = '50%';
  var mtop = Math.round(bild.offsetWidth/2);
  bild.style.marginLeft = '-'+mtop+'px';*/
  
  
}

// Function zum wechseln der Bilder
// id -> id des Hauptbldes, src -> des neuen Bildes
function wechselbild(id,src,center) {
  
  var bild;
  if ( (bild = document.getElementById(id)) ) {
    
    var vgl = new RegExp(src);
    if ( !vgl.test(bild.src) ) {
      
      if ( center )
        //bild.style.display = 'none';
    	  bild.style.visibility = 'hidden';
      bild.src = src;
      if ( center )
        setTimeout("centerbild('"+id+"')",50); // Pause muss sein, um die neuen Daten des Bildes zu laden.
      
    }
    if (id=='hauptbild')
    {
      clearTimeout(swap_timer);
      for ( var i=0; i<imageStore.length; i++)
      {
        if (imageStore[i] == src)
        {
          swap_shown_image = i;
        }
      }
      swap_timer = setTimeout("swap_image()",swap_image_time);
    }
    
  }
  
}

// Tauscht die Bilder alle X Sekunden aus
function swap_image()
{
  var args = swap_image.arguments;
  if (args[0] == 0)
  {
    swap_timer = setTimeout("swap_image()",swap_image_time);
  }
  else
  {
    // get the next id
    if (imageStore[swap_shown_image+1])
    {
      wechselbild('hauptbild',imageStore[swap_shown_image+1],1);
    }
    else
    {
      wechselbild('hauptbild',imageStore[0],1);
    }
  }
}

// Blendet die entsprechenden Bestellung/Forum/Beschreibung ein und aus
function displaydetails(was) {
  
  if ( was == 3 ) {
    
    var as = inpelement.parentNode.parentNode.getElementsByTagName('A');
    for ( var i = 0; i < as.length; i++ ) {
      
      as[i].className = '';
      
    }
    inpelement.className = 'aktiv';
    if ( document.getElementById('detaildesc') )
      document.getElementById('detaildesc').style.display = 'none';
    if ( document.getElementById('detailforum') )
      document.getElementById('detailforum').style.display = 'none';
    if ( document.getElementById('detailbuy') )
      document.getElementById('detailbuy').style.display = 'block';
    
  }
  else if ( was == 2 ) {
    
    var as = inpelement.parentNode.parentNode.getElementsByTagName('A');
    for ( var i = 0; i < as.length; i++ ) {
      
      as[i].className = '';
      
    }
    inpelement.className = 'aktiv';
    if ( document.getElementById('detaildesc') )
      document.getElementById('detaildesc').style.display = 'none';
    if ( document.getElementById('detailforum') )
      document.getElementById('detailforum').style.display = 'block';
    if ( document.getElementById('detailbuy') )
      document.getElementById('detailbuy').style.display = 'none';
    
  }
  else {
    
    var as = inpelement.parentNode.parentNode.getElementsByTagName('A');
    for ( var i = 0; i < as.length; i++ ) {
      
      as[i].className = '';
      
    }
    inpelement.className = 'aktiv';
    if ( document.getElementById('detaildesc') )
      document.getElementById('detaildesc').style.display = 'block';
    if ( document.getElementById('detailforum') )
      document.getElementById('detailforum').style.display = 'none';
    if ( document.getElementById('detailbuy') )
      document.getElementById('detailbuy').style.display = 'none';
    
  }
  
}

// Blendet einen einzelnen Beitrag aus dem Produktforum ein
function prodListEinblenden() {
  
  if ( document.getElementById('produktlist') ) {
    
    var lis = document.getElementById('produktlist').getElementsByTagName('LI');
    for ( var i = 0; i < lis.length; i++ ) {
      
      if ( inpelement == lis[i].getElementsByTagName('A')[0] ) {
        
        inpelement.parentNode.getElementsByTagName('P')[0].style.display = 'block';
        inpelement.className = 'aktiv';
        
      }
      else {
        
        var ps = lis[i].getElementsByTagName('P')[0].style.display = 'none';
        var ps = lis[i].getElementsByTagName('A')[0].className = '';
        
      }
      
    }
    
  }
  
}

// Blendet alle Produktlistenbeiträge aus, sodass nur das Intro stehen bleibt
function prodListAusblenden() {
  
  if ( document.getElementById('produktlist') ) {
    
    var lis = document.getElementById('produktlist').getElementsByTagName('LI');
    for ( var i = 0; i < lis.length; i++ ) {
      
      var ps = lis[i].getElementsByTagName('P')[0].style.display = 'none';
      var ps = lis[i].getElementsByTagName('A')[0].className = '';
      
    }
    
  }
  
}

// Ajax-initialisierung zum Abstimmen
function ajaxvote(formular,pid) {
  
  var count = 5;
  for ( var i = 0; i < formular.bewerten.length; i++ ) {
    
    if ( formular.bewerten[i].selected ) {
      
      count = formular.bewerten[i].value;
      break;
      
    }
    
  }
  
  var pfad = window.location+'';
  
  if(pfad.lastIndexOf("/") != -1)
    var ajaxpfad = pfad.substr(0, pfad.lastIndexOf("/")+1)+'public/ajax.php';
  else if(pfad.lastIndexOf("\\") != -1)
    var ajaxpfad = pfad.substr(0, pfad.lastIndexOf("\\")+1)+'public/ajax.php';
  else 
    return false;
  ajax(1,ajaxpfad, 'ajax=1&val='+count+'&pid='+pid, 1);
  
}

// Ergebnis der bewertung
function ergAjaxvote(rueckgabe) {
  
  if ( rueckgabe != '' ) {
    
    // Splitten der rueckgabe '<'
    var rueck1 = rueckgabe.split('<');
    
    // Wenn der erste Rueckgabewert aus mehr als einem Zeichen besteht, ist ein Fehler aufgetreten, die Ausführung wird abgebrochen
    if ( rueck1[0].length == 1 ) {
      
      // Ist der Rueckgabewert 1, wird ein gültiges Ergebnis zurückgegeben; andernfalls wäre der Rückgabewert nicht 1
      if ( rueck1[0] == 1 ) {
        
        if ( rueck1[1] != '' ) {
          
          // Aufsplitten der Rückgabe [0] => pid; [1] => Bewertung-Punkte; [2] => Anzahl Bewertungen; [3] => Prozentsetz
          var rueck2 = rueck1[1].split('|');
          
          if ( document.getElementById('votepoints') ) {
            
            while ( document.getElementById('votepoints').hasChildNodes() ) {
              
              document.getElementById('votepoints').removeChild(document.getElementById('votepoints').firstChild);
              
            }
            document.getElementById('votepoints').appendChild(document.createTextNode(rueck2[1]));
            
          }
          
          if ( document.getElementById('votevoters') ) {
            
            while ( document.getElementById('votevoters').hasChildNodes() ) {
              
              document.getElementById('votevoters').removeChild(document.getElementById('votevoters').firstChild);
              
            }
            document.getElementById('votevoters').appendChild(document.createTextNode(rueck2[2]+' Wertungen'));
            
          }
          
          if ( document.getElementById('votediv') )
            document.getElementById('votediv').style.width = rueck2[3]+'%';
          
          if ( document.getElementById('voteform') ) {
            
            while ( document.getElementById('voteform').hasChildNodes() ) {
              
              document.getElementById('voteform').removeChild(document.getElementById('voteform').firstChild);
              
            }
            var span = document.createElement('SPAN');
            span.appendChild(document.createTextNode('Vielen Dank'));
            span.style.paddingLeft = '20px';
            document.getElementById('voteform').appendChild(span);
            
          }
          
        }
        
      } 
      else {
        
        // Ist der erste Wert keine 1, so wird eine Fehlermeldung übermittelt
        alert (rueck1[1]);
        
      }
      
    } else
      alert(rueckgabe);
    
  }
  
}

// Ajax-Initialisierung zur Abfrage nach neuen Forenbeiträgen
function checkProdliste(intervall,pid,remove) {
  
  if ( document.getElementById('produktlist') ) {
    
    // Es gibt schon Forenbeiträge. Jetzt muss ich nur die Id des Letzten Beitrags ermitteln
    var lis = document.getElementById('produktlist').getElementsByTagName('LI')[0];
    var ahref = lis.getElementsByTagName('A')[0].href;
    var lid = ahref.substr(ahref.lastIndexOf('#')+1);
    
    if ( lid == '' )
      return;
    
    var pam = '&lid='+lid;
    
  }
  else {
    
    // Es sind noch keine Beiträge vorhanden
    var pam = '';
    
  }
  
  var pfad = window.location+'';
  
  if(pfad.lastIndexOf("/") != -1)
    var ajaxpfad = pfad.substr(0, pfad.lastIndexOf("/")+1)+'public/ajax.php';
  else if(pfad.lastIndexOf("\\") != -1)
    var ajaxpfad = pfad.substr(0, pfad.lastIndexOf("\\")+1)+'public/ajax.php';
  else 
    return false;
  ajax(1,ajaxpfad, 'ajax=2&pid='+pid+'&val='+remove+pam, 2);
  
  setTimeout('checkProdliste('+intervall+','+pid+','+remove+')',intervall);
  
}

// Ergebnis der Produktlistenabfrage, ggf wird ein neuer Eintrag erstellt
function ergCheckProdliste(rueckgabe) {
  
  if ( rueckgabe != '' ) {
    
    // Splitten der rueckgabe '<'
    var rueck1 = rueckgabe.split('<');
    
    // Wenn der erste Rueckgabewert aus mehr als einem Zeichen besteht, ist ein Fehler aufgetreten, die Ausführung wird abgebrochen
    if ( rueck1[0].length == 1 ) {
      
      // Ist der Rueckgabewert 1, wird ein gültiges Ergebnis zurückgegeben; andernfalls wäre der Rückgabewert nicht 1
      if ( rueck1[0] == 1 ) {
        
        if ( rueck1[1] != '' ) {
          
          // Erstes Trennzeichen >@> trennt Pid, Remove, Anzahl der gefundenen Beiträge und einzelne Datensätze
          var rueck2 = rueck1[1].split('>@>');
          
          if ( rueck2[2] == 0 || rueck2[2] == '' ) {
            
            // keine neuen Beiträge, also Abbrechen
            return;
            
          }
          else {
            
            // Es gibt neue Beiträge
            if ( document.getElementById('produktlist') ) {
              
              // Die Produktliste ist schon vorhanden, neue Beiträge werden hinzugefügt, für jeden hinzugefügten wird einer entfernt, wenn gewünscht
              for ( var i = 3; i < rueck2.length; i++ ) {
                
                if ( rueck2[i] == '' )
                  continue;
                
                // Das Letzte Li wird gelöscht
                if ( document.getElementById('produktlist').getElementsByTagName('LI').length >= rueck2[1] ) {
                  
                  var lastli = document.getElementById('produktlist').getElementsByTagName('LI');
                  document.getElementById('produktlist').removeChild(lastli[lastli.length-1]);
                  
                }
                
                // Den neuen Datensatz splitten
                var rueck3 = rueck2[i].split('|'); // ['id'], ['user'], ['datum'], ['intro'], ['text']
                
                // Erzeuge ein neues LI
                var newli = document.createElement('LI');
                // Erzeuge A
                var newa = document.createElement('A');
                newa.href="produktliste.php?p="+rueck2[0]+"#"+rueck3[0];
                newa.title="Beitrag öffnen";
                newa.onclick = new Function('inpelement=this;prodListEinblenden();return false;');
                
                // Span Benutzername
                var newspan = document.createElement('SPAN');
                newspan.className = 'frmusername';
                newspan.appendChild(document.createTextNode(rueck3[1]+' '));
                newa.appendChild(newspan);
                
                // Span Datum
                var newspan = document.createElement('SPAN');
                newspan.className = 'frmdatum';
                newspan.appendChild(document.createTextNode(rueck3[2]+' Uhr:'));
                newa.appendChild(newspan);
                
                // Span Intro
                var newspan = document.createElement('SPAN');
                newspan.className = 'frmintro';
                newspan.appendChild(document.createTextNode(' '+rueck3[3]));
                newa.appendChild(newspan);
                newli.appendChild(newa);
                
                // P
                var newp = document.createElement('P');
                newp.style.display = 'none';
                nl2br(rueck3[4],newp);
                newli.appendChild(newp);
                
                // Das LI Element wurde erzeugt und wird nun am Anfang der Liste eingefügt
                document.getElementById('produktlist').insertBefore(newli, document.getElementById('produktlist').getElementsByTagName('LI')[0]);
                
              }
              
            }
            else {
              
              // Die Produktliste muss erst erstellt werden
              if ( document.getElementById('detailforum') ) {
                
                for ( var i = 3; i < rueck2.length; i++ ) {
                  
                  if ( rueck2[i] == '' )
                    continue;
                  
                  // gibt es einträge, wird die Produktliste erzeugt
                  if ( !document.getElementById('produktlist') ) {
                    
                    var rundum = document.getElementById('detailforum');
                    var newul = document.createElement('UL');
                    newul.id = 'produktlist';
                    rundum.insertBefore(newul, rundum.firstChild);
                    
                    if ( document.getElementById('jsremove') )
                      document.getElementById('jsremove').parentNode.removeChild(document.getElementById('jsremove'));
                    
                  }
                  
                  // Den neuen Datensatz splitten
                  var rueck3 = rueck2[i].split('|'); // ['id'], ['user'], ['datum'], ['intro'], ['text']
                  
                  // Erzeuge ein neues LI
                  var newli = document.createElement('LI');
                  // Erzeuge A
                  var newa = document.createElement('A');
                  newa.href="produktliste.php?p="+rueck2[0]+"#"+rueck3[0];
                  newa.title="Beitrag öffnen";
                  newa.onclick = new Function('inpelement=this;prodListEinblenden();return false;');
                  
                  // Span Benutzername
                  var newspan = document.createElement('SPAN');
                  newspan.className = 'frmusername';
                  newspan.appendChild(document.createTextNode(rueck3[1]+' '));
                  newa.appendChild(newspan);
                  
                  // Span Datum
                  var newspan = document.createElement('SPAN');
                  newspan.className = 'frmdatum';
                  newspan.appendChild(document.createTextNode(rueck3[2]+' Uhr:'));
                  newa.appendChild(newspan);
                  
                  // Span Intro
                  var newspan = document.createElement('SPAN');
                  newspan.className = 'frmintro';
                  newspan.appendChild(document.createTextNode(' '+rueck3[3]));
                  newa.appendChild(newspan);
                  newli.appendChild(newa);
                  
                  // P
                  var newp = document.createElement('P');
                  newp.style.display = 'none';
                  nl2br(rueck3[4],newp);
                  newli.appendChild(newp);
                  
                  // Das LI Element wurde erzeugt und wird nun am Anfang der Liste eingefügt
                  newul.appendChild(newli);
                  
                }
                
              }
              
              return;
                
              
            }
            
            
          }
          
        }
        
      } 
      else {
        
        // Ist der erste Wert keine 1, so wird eine Fehlermeldung übermittelt
        alert (rueck1[1]);
        
      }
      
    } else
      alert(rueckgabe);
    
  }
  
}

// Ajax-Übermittlung eines Forumbeitrags in die Produktliste. Erforderd die Produktid
function sendfrmprodbeitrag(pid) {
  
  var formular = thisform;
  var text = formular.text.value;
  var testtext = /[\<\>\;\#\|]|(--)|(\*\/)/;
  
  if ( text == '' ) {
    
    alert('Bitte geben Sie den Beitrag ein');
    return false;
    
  }
  else if (testtext.test(text)) {
    
    return false;
    
  }
  
  if ( document.getElementById('produktlist') ) {
    
    // Es gibt schon Forenbeiträge. Jetzt muss ich nur die Id des Letzten Beitrags ermitteln
    var lis = document.getElementById('produktlist').getElementsByTagName('LI')[0];
    var ahref = lis.getElementsByTagName('A')[0].href;
    var lid = ahref.substr(ahref.lastIndexOf('#')+1);
    
    if ( lid == '' )
      return;
    
    var pam = '&lid='+lid;
    
  }
  else {
    
    // Es sind noch keine Beiträge vorhanden
    var pam = '';
    
  }
  
  var pfad = window.location+'';
  
  if(pfad.lastIndexOf("/") != -1)
    var ajaxpfad = pfad.substr(0, pfad.lastIndexOf("/")+1)+'public/ajax.php';
  else if(pfad.lastIndexOf("\\") != -1)
    var ajaxpfad = pfad.substr(0, pfad.lastIndexOf("\\")+1)+'public/ajax.php';
  else 
    return false;
  // Die Rückgabe erfolg in Funktion2, ergCheckProdliste
  ajax(2,ajaxpfad, 'ajax=3&pid='+pid+'&text='+encodeURIComponent(text)+'&val='+max+pam, 2);
  
  if ( document.getElementById('fehlerdiv') ) {
    
    var anzeige = document.getElementById('fehlerdiv');
    if ( anzeige.style.display != 'none' ) {
      
      anzeige.style.top = '0px';
      anzeige.style.left = '-500px';
      anzeige.style.display = 'none';
      fehlerArray = new Array();
      
    }
    
  }
  hideform();
  return false;
  
}

// Ajax-Initialisierung zum senden eines TipAFriend, betreff und text stammen aus der Aufrufenden Funktion
function tipAFriend(betreff,mitteilung) {
  
  var formular = thisform;
  var text = formular.text.value;
  var empf = formular.email.value;
  var mailmuster = /^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-_]|\.)*[a-zA-Z0-9]{1,}\.[a-zA-Z0-9]{2,4}$/;
  var testtext = /[\<\>\;\#\|]|(--)|(\*\/)/;
  
  if ( text == '' ) {
    
    alert('Bitte geben Sie Ihre persönliche Mitteilung ein');
    return false;
    
  }
  else if (testtext.test(text)) {
    
    return false;
    
  }
  
  while ( empf == '' ) {
    
    var eingabe = prompt("Bitte geben Sie den Empfänger ein.");
    if(!eingabe)
      return false;
		formular.email.value = eingabe;
		empf = eingabe;
    
  }
  while (!mailmuster.test(empf)) {
    
		var eingabe = prompt("Bitte geben Sie eine gültige E-Mail-Adresse ein.", empf);
    if(!eingabe)
      return false;
      
		formular.email.value = eingabe;
		empf = eingabe;
    
	}
  // Bis hierhin bin ich gekommen, jetzt wird die Vordefinierte Mitteilung mit der individuellen Kombiniert
  text = decodeURIComponent(mitteilung)+"\n\n"+text;
  
  var pfad = window.location+'';
  
  if(pfad.lastIndexOf("/") != -1)
    var ajaxpfad = pfad.substr(0, pfad.lastIndexOf("/")+1)+'public/ajax.php';
  else if(pfad.lastIndexOf("\\") != -1)
    var ajaxpfad = pfad.substr(0, pfad.lastIndexOf("\\")+1)+'public/ajax.php';
  else 
    return false;
  // Die Rückgabe erfolg in Funktion2, ergCheckProdliste
  ajax(2,ajaxpfad, 'ajax=4&text='+encodeURIComponent(text)+'&empf='+encodeURIComponent(empf)+'&sub='+betreff, 3);
  
  if ( document.getElementById('fehlerdiv') ) {
    
    var anzeige = document.getElementById('fehlerdiv');
    if ( anzeige.style.display != 'none' ) {
      
      anzeige.style.top = '0px';
      anzeige.style.left = '-500px';
      anzeige.style.display = 'none';
      fehlerArray = new Array();
      
    }
    
  }
  
  return false;
  
}

// Ergebnis von TipAFriend
function ergTipAFriend(rueckgabe) {
  
  if ( rueckgabe != '' ) {
    
    // Splitten der rueckgabe '<'
    var rueck1 = rueckgabe.split('<');
    
    // Wenn der erste Rueckgabewert aus mehr als einem Zeichen besteht, ist ein Fehler aufgetreten, die Ausführung wird abgebrochen
    if ( rueck1[0].length == 1 ) {
      
      // Ist der Rueckgabewert 1, wird ein gültiges Ergebnis zurückgegeben; andernfalls wäre der Rückgabewert nicht 1
      if ( rueck1[0] == 1 ) {
        
        alert('Die E-Mail wurde versendet.');
        hideform();
        
      } 
      else {
        
        // Ist der erste Wert keine 1, so wird eine Fehlermeldung übermittelt
        alert (rueck1[1]);
        
      }
      
    } else
      alert(rueckgabe);
    
  }
  
}

// Ajax-Initialisierung, um ein Passwort zu holen
function getPasswort() {
  
  var formular = thisform;
  var bname = formular.uname.value;
  var empf = formular.email.value;
  var mailmuster = /^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-_]|\.)*[a-zA-Z0-9]{1,}\.[a-zA-Z0-9]{2,4}$/;
  var testtext = /[\<\>\;\#\|]|(--)|(\*\/)/;
  
  while ( bname == '' ) {
    
    var eingabe = prompt("Bitte geben Sie Ihren Benutzernamen ein.");
    if(!eingabe)
      return false;
		formular.uname.value = eingabe;
		bname = eingabe;
    
  }
  while (testtext.test(bname)) {
    
		var eingabe = prompt("Der Benutzername enthält ungültige Zeichen.", bname);
    if(!eingabe)
      return false;
      
		formular.uname.value = eingabe;
		bname = eingabe;
    
	}
  
  while ( empf == '' ) {
    
    var eingabe = prompt("Bitte geben Sie den Empfänger ein.");
    if(!eingabe)
      return false;
		formular.email.value = eingabe;
		empf = eingabe;
    
  }
  while (!mailmuster.test(empf)) {
    
		var eingabe = prompt("Bitte geben Sie eine gültige E-Mail-Adresse ein.", empf);
    if(!eingabe)
      return false;
      
		formular.email.value = eingabe;
		empf = eingabe;
    
	}
  
  var pfad = window.location+'';
  
  if(pfad.lastIndexOf("/") != -1)
    var ajaxpfad = pfad.substr(0, pfad.lastIndexOf("/")+1)+'public/ajax.php';
  else if(pfad.lastIndexOf("\\") != -1)
    var ajaxpfad = pfad.substr(0, pfad.lastIndexOf("\\")+1)+'public/ajax.php';
  else 
    return false;
  // Die Rückgabe erfolg in Funktion2, ergCheckProdliste
  ajax(2,ajaxpfad, 'ajax=5&empf='+encodeURIComponent(empf)+'&sub='+encodeURIComponent(bname), 4);
  
  if ( document.getElementById('fehlerdiv') ) {
    
    var anzeige = document.getElementById('fehlerdiv');
    if ( anzeige.style.display != 'none' ) {
      
      anzeige.style.top = '0px';
      anzeige.style.left = '-500px';
      anzeige.style.display = 'none';
      fehlerArray = new Array();
      
    }
    
  }
  return false;
  
}

// Ajax-Antwort der Passwort-Funktion
function ergGetPasswort(rueckgabe) {

  if ( rueckgabe != '' ) {
    
    // Splitten der rueckgabe '<'
    var rueck1 = rueckgabe.split('<');
    
    // Wenn der erste Rueckgabewert aus mehr als einem Zeichen besteht, ist ein Fehler aufgetreten, die Ausführung wird abgebrochen
    if ( rueck1[0].length == 1 ) {
      
      // Ist der Rueckgabewert 1, wird ein gültiges Ergebnis zurückgegeben; andernfalls wäre der Rückgabewert nicht 1
      if ( rueck1[0] == 1 ) {
        
        alert("Eine E-Mail mit dem neuen Passwort wurde Ihnen zugesendet.\n(Kontrollieren Sie ggf. Ihren Spam-Ordner.)");
        hideform();
        
      } 
      else {
        
        // Ist der erste Wert keine 1, so wird eine Fehlermeldung übermittelt
        alert (rueck1[1]);
        
      }
      
    } else
      alert(rueckgabe);
    
  }

}

// Die Submit-Button zum ergänzen vorn Variationsmöglichkeiten werden ausgeblenden, statdessen werden Bilder eingefügt
function changeVariationsubmit(plusbild,minusbild) {
  
  preloadImages(plusbild,minusbild);
  picspeicher = plusbild+';'+minusbild;
  
  // erzeuge das Plus-Bild in jedem Div
  if ( document.getElementById('artikelauswahl') ) {
    
    var div = document.getElementById('artikelauswahl');
    
    if ( document.getElementById('varplus') ) {
      
      var merk = document.getElementById('varplus');
      thisform = merk.form;
      
      // Nur wenn das input "fields" existiert, können die Inputs entfernt werden
      if ( thisform.fields ) {
        
        var anzinp = thisform.fields.value;
        
        document.getElementById('varplus').parentNode.removeChild(document.getElementById('varplus'));
        if ( document.getElementById('varminus') )
          document.getElementById('varminus').parentNode.removeChild(document.getElementById('varminus'));
        
        var vardivs = div.getElementsByTagName('DIV');
        // Nur das Letzte Element bekommt die Plus-Minus-Bilder
        // Imageobjekte erstellen
        var plus = new Image(12,12);
        plus.src = plusbild;
        plus.alt = 'hinzufügen';
        plus.title = "weitere Möglichkeit hinzufügen";
        plus.style.marginLeft = '10px';
        plus.style.cursor = 'pointer';
        plus.onclick = new Function ( "addVariation()");
        vardivs[vardivs.length-1].appendChild(plus);
        
        if ( vardivs.length > 1 ) {
          
          var kreuz = new Image(12,12);
          kreuz.src = minusbild;
          kreuz.alt = 'entfernen';
          kreuz.title = "Möglichkeit entfernen";
          kreuz.style.cursor = 'pointer';
          kreuz.id = 'kreuzbild';
          kreuz.style.marginLeft = '10px';
          kreuz.onclick = new Function ( "removeVariation()");
          vardivs[vardivs.length-1].appendChild(kreuz);
          
        }
        
      }
      
    }
    
  }
  
}

// Ajax-Initialisierung zum ergänzen einer Variationsmöglichkeit im Bestellformular
function addVariation() {
  
  // Ich muss wieder das Formular ermitteln
  if ( document.getElementById('konffields') ) {
    
    var hform = document.getElementById('konffields').form;
    
    if ( hform ) {
      
      var anzinp = hform.fields.value;
      // Jetzt muss ich die die gesamte bisherige Anzahl auslesen
      var counter = 0;
      for ( var i = 1; i <= anzinp; i++ ) {
        
        counter += hform.elements['anzahl'+i].value*1;
        
      }
      var p = hform.elements['pid'].value;
      
      // Übergebe den ermittelten Wert an Ajax, um zu prüfen, ob weitere Felder hinzugefügt werden können
      var pfad = window.location+'';
      
      if(pfad.lastIndexOf("/") != -1)
        var ajaxpfad = pfad.substr(0, pfad.lastIndexOf("/")+1)+'public/ajax.php';
      else if(pfad.lastIndexOf("\\") != -1)
        var ajaxpfad = pfad.substr(0, pfad.lastIndexOf("\\")+1)+'public/ajax.php';
      else 
        return false;
      
      ajax(1,ajaxpfad, 'ajax=6&val='+counter+'&pid='+p, 5);
      return false;
      
      
    }
    else
      alert('AJAX-Fehler');
    
  }
  
}

// Ergebnis von addVariation, das Formular wird ggf. Erweitert
function ergAddVariation(rueckgabe) {
  
  if ( rueckgabe != '' ) {
    
    // Splitten der rueckgabe '<'
    var rueck1 = rueckgabe.split('<');
    
    // Wenn der erste Rueckgabewert aus mehr als einem Zeichen besteht, ist ein Fehler aufgetreten, die Ausführung wird abgebrochen
    if ( rueck1[0].length == 1 ) {
      
      // Ist der Rueckgabewert 1, wird ein gültiges Ergebnis zurückgegeben; andernfalls wäre der Rückgabewert nicht 1
      if ( rueck1[0] == 1 ) {
        
        var rueck2 = rueck1[1].split('|'); // [0] gezählte Anzahl, [1] maximale Abgabemenge
        // Ich muss wieder das Formular ermitteln
        if ( document.getElementById('konffields') ) {
          
          var hform = document.getElementById('konffields').form;
          
          if ( hform ) {
            
            var anzinp = hform.fields.value;
            var nanzinp = anzinp;
            // Jetzt muss ich die die gesamte bisherige Anzahl auslesen
            var counter = 0;
            var removeit = false;
            var div = document.getElementById('artikelauswahl');
            
            for ( var i = 1; i <= anzinp; i++ ) {
              
              counter += hform.elements['anzahl'+i].value*1;
              if ( counter > rueck2[1] ) {
                
                if ( removeit ) {
                  
                  nanzinp--;
                  var parent = hform.elements['anzahl'+i].parentNode;
                  while ( parent.hasChildNodes() ) {
                    
                    parent.removeChild(parent.firstChild);
                    
                  }
                  div.removeChild(parent);
                  
                }
                else {
                  
                  // Jetzt ist die Anzahl zu groß, der Wert wird zurückgesetzt, bis der Maximalwert erreicht ist
                  var hcount = counter - hform.elements['anzahl'+i].value*1;
                  
                  hform.elements['anzahl'+i].value = rueck2[1]-hcount;
                  counter += rueck2[1]-hcount;
                  // Weitere Elemente müssen entfernt werden
                  removeit = true;
                  
                  if ( hform.elements['anzahl'+i].value == 0 ) {
                    
                    // Dieser Wert ist schon Null, also muss auch dieses Element entfernt werden
                    var parent = hform.elements['anzahl'+i].parentNode;
                    while ( parent.hasChildNodes() ) {
                      
                      parent.removeChild(parent.firstChild);
                      
                    }
                    div.removeChild(parent);
                    
                    // Fields wird um 1 verringert
                    nanzinp--;
                    
                  }
                  
                }
                
              }
              
            }
            
            if ( !removeit && counter < rueck2[1] ) {
              
              nanzinp++;
              
              // Wurde nichts entfernt, und der counter ist !gleich der maximalen Abgabe, so kann ein neues Feld hinzugefügt werden
              var mdiv = document.createElement('DIV');
              div.appendChild(mdiv);
              
              // Zuerst das Label
              var label = document.createElement('LABEL');
              label.htmlFor = "anzahl"+nanzinp;
              label.appendChild(document.createTextNode('Anzahl:'));
              mdiv.appendChild(label);
              
              // Input-Element erzeugen
              if ( document.all && !window.opera ) {
                // IE-eigene Notation um ein input mit Typ zu erstellen
                var inp = document.createElement('<input type="text" name="anzahl'+nanzinp+'">');
                
              } else {
                var inp = document.createElement("INPUT");
                inp.type = "text";
                inp.name = 'anzahl'+nanzinp;
              }
              inp.id = 'anzahl'+nanzinp; 
              inp.maxlength = '3';
              inp.size = 5;
              inp.value = 1;
              inp.onblur = new Function("eingabe = this; check_it(3,0);");
              mdiv.appendChild(inp);
              
              // Auswahlmöglichkeit 1
              if ( document.getElementById('var11') ) {
                
                // Labeltext auslesen
                var labeltext = div.getElementsByTagName('DIV')[0].getElementsByTagName('LABEL')[1].firstChild.nodeValue;
                
                var label = document.createElement('LABEL');
                label.htmlFor = "var1"+nanzinp;
                label.className = 'inline';
                label.appendChild(document.createTextNode(labeltext));
                mdiv.appendChild(label);
                
                // Jetzt muss ein Select erzeugt werden, dass alle Möglichkeiten enthält
                var varsel = document.createElement('SELECT');
                varsel.id = 'var1'+nanzinp;
                varsel.name = 'var1'+nanzinp;
                mdiv.appendChild(varsel);
                
                for ( var x = 0; x < hform.var11.options.length; x++ ) {
                  
                  var varopt = document.createElement('OPTION');
                  varopt.value = hform.var11.options[x].value;
                  varopt.appendChild(document.createTextNode(hform.var11.options[x].firstChild.nodeValue));
                  varsel.appendChild(varopt);
                  
                }
                
              }
              
              // Auswahlmöglichkeit 2
              if ( document.getElementById('var21') ) {
                
                // Labeltext auslesen
                var labeltext = div.getElementsByTagName('DIV')[0].getElementsByTagName('LABEL')[2].firstChild.nodeValue;
                
                var label = document.createElement('LABEL');
                label.htmlFor = "var2"+nanzinp;
                label.className = 'inline';
                label.appendChild(document.createTextNode(labeltext));
                mdiv.appendChild(label);
                
                // Jetzt muss ein Select erzeugt werden, dass alle Möglichkeiten enthält
                var varsel = document.createElement('SELECT');
                varsel.id = 'var2'+nanzinp;
                varsel.name = 'var2'+nanzinp;
                mdiv.appendChild(varsel);
                
                for ( var x = 0; x < hform.var21.options.length; x++ ) {
                  
                  var varopt = document.createElement('OPTION');
                  varopt.value = hform.var21.options[x].value;
                  varopt.appendChild(document.createTextNode(hform.var21.options[x].firstChild.nodeValue));
                  varsel.appendChild(varopt);
                  
                }
                
              }
             
            }
            
            // Erhöhen der Anzahl an Feldern
            hform.fields.value = nanzinp;
            
            var bilder = picspeicher.split(';');
            
            // Plus und Minusbild aus allen Divs entfernen
            var vardivs = div.getElementsByTagName('DIV');
            for ( var i = 0; i < vardivs.length; i++ ) {
              
              var imgs = vardivs[i].getElementsByTagName('IMG');
              var c = imgs.length;
              for ( var k = 0; k < c; k++ ) {
                
                vardivs[i].removeChild(imgs[0]);
                
              }
              
            }
            
            // Jetzt die Bilder zum hinzufügen und entfernen
            // Imageobjekte erstellen
            var plus = new Image(12,12);
            plus.src = bilder[0];
            plus.alt = 'hinzufügen';
            plus.title = "weitere Möglichkeit hinzufügen";
            plus.style.marginLeft = '10px';
            plus.style.cursor = 'pointer';
            plus.onclick = new Function ( "addVariation()");
            vardivs[vardivs.length-1].appendChild(plus);
            
            if ( vardivs.length > 1 ) {
              
              var kreuz = new Image(12,12);
              kreuz.src = bilder[1];
              kreuz.alt = 'entfernen';
              kreuz.title = "Möglichkeit entfernen";
              kreuz.style.cursor = 'pointer';
              kreuz.id = 'kreuzbild';
              kreuz.style.marginLeft = '10px';
              kreuz.onclick = new Function ( "removeVariation()");
              vardivs[vardivs.length-1].appendChild(kreuz);
              
            }
            
          }
          else
            alert('AJAX-Fehler');
          
        }
  
        
      } 
      else {
        
        // Ist der erste Wert keine 1, so wird eine Fehlermeldung übermittelt
        alert (rueck1[1]);
        
      }
      
    } else
      alert(rueckgabe);
    
  }  
  
}

// Ajax-Initialisierung zum entfernen einer Variationsmöglichkeit im Bestellformular
function removeVariation() {
  
  // Ich muss wieder das Formular ermitteln
  if ( document.getElementById('konffields') ) {
    
    var hform = document.getElementById('konffields').form;
    
    if ( hform ) {
      
      var anzinp = hform.fields.value;
      // Jetzt muss ich die die gesamte bisherige Anzahl auslesen
      var counter = 0;
      for ( var i = 1; i <= anzinp; i++ ) {
        
        counter += hform.elements['anzahl'+i].value*1;
        
      }
      var p = hform.elements['pid'].value;
      
      // Übergebe den ermittelten Wert an Ajax, um zu prüfen, ob weitere Felder hinzugefügt werden können
      var pfad = window.location+'';
      
      if(pfad.lastIndexOf("/") != -1)
        var ajaxpfad = pfad.substr(0, pfad.lastIndexOf("/")+1)+'public/ajax.php';
      else if(pfad.lastIndexOf("\\") != -1)
        var ajaxpfad = pfad.substr(0, pfad.lastIndexOf("\\")+1)+'public/ajax.php';
      else 
        return false;
      
      ajax(1,ajaxpfad, 'ajax=7&val='+counter+'&pid='+p, 6);
      return false;
      
      
    }
    else
      alert('AJAX-Fehler');
    
  }
  
  
}

// Ergebnis von removeVariation, das Formular wird ggf. verkürzt
function ergRemoveVariation(rueckgabe) {
  
  if ( rueckgabe != '' ) {
    
    // Splitten der rueckgabe '<'
    var rueck1 = rueckgabe.split('<');
    
    // Wenn der erste Rueckgabewert aus mehr als einem Zeichen besteht, ist ein Fehler aufgetreten, die Ausführung wird abgebrochen
    if ( rueck1[0].length == 1 ) {
      
      // Ist der Rueckgabewert 1, wird ein gültiges Ergebnis zurückgegeben; andernfalls wäre der Rückgabewert nicht 1
      if ( rueck1[0] == 1 ) {
        
        var rueck2 = rueck1[1].split('|'); // [0] gezählte Anzahl, [1] maximale Abgabemenge
        // Ich muss wieder das Formular ermitteln
        if ( document.getElementById('konffields') ) {
          
          var hform = document.getElementById('konffields').form;
          
          if ( hform ) {
            
            var anzinp = hform.fields.value;
            var nanzinp = anzinp;
            // Jetzt muss ich die die gesamte bisherige Anzahl auslesen
            var counter = 0;
            var removeit = false;
            var div = document.getElementById('artikelauswahl');
            
            for ( var i = 1; i <= anzinp; i++ ) {
              
              counter += hform.elements['anzahl'+i].value*1;
              if ( counter > rueck2[1] ) {
                
                if ( removeit ) {
                  
                  nanzinp--;
                  var parent = hform.elements['anzahl'+i].parentNode;
                  while ( parent.hasChildNodes() ) {
                    
                    parent.removeChild(parent.firstChild);
                    
                  }
                  div.removeChild(parent);
                  
                }
                else {
                  
                  // Jetzt ist die Anzahl zu groß, der Wert wird zurückgesetzt, bis der Maximalwert erreicht ist
                  var hcount = counter - hform.elements['anzahl'+i].value*1;
                  
                  hform.elements['anzahl'+i].value = rueck2[1]-hcount;
                  counter += rueck2[1]-hcount;
                  // Weitere Elemente müssen entfernt werden
                  removeit = true;
                  
                  if ( hform.elements['anzahl'+i].value == 0 ) {
                    
                    // Dieser Wert ist schon Null, also muss auch dieses Element entfernt werden
                    var parent = hform.elements['anzahl'+i].parentNode;
                    while ( parent.hasChildNodes() ) {
                      
                      parent.removeChild(parent.firstChild);
                      
                    }
                    div.removeChild(parent);
                    
                    // Fields wird um 1 verringert
                    nanzinp--;
                    
                  }
                  
                }
                
              }
              
            }
            
            if ( !removeit ) {
              
              nanzinp--;
              var vardivs = div.getElementsByTagName('DIV');
              
              while ( vardivs[vardivs.length-1].hasChildNodes() ) {
                
                vardivs[vardivs.length-1].removeChild(vardivs[vardivs.length-1].firstChild);
                
              }
              div.removeChild(vardivs[vardivs.length-1]);
             
            }
            
            // Verändern der Anzahl an Feldern
            hform.fields.value = nanzinp;
            
            var bilder = picspeicher.split(';');
            
            // Plus und Minusbild aus allen Divs entfernen
            var vardivs = div.getElementsByTagName('DIV');
            for ( var i = 0; i < vardivs.length; i++ ) {
              
              var imgs = vardivs[i].getElementsByTagName('IMG');
              var c = imgs.length;
              for ( var k = 0; k < c; k++ ) {
                
                vardivs[i].removeChild(imgs[0]);
                
              }
              
            }
            
            // Jetzt die Bilder zum hinzufügen und entfernen
            // Imageobjekte erstellen
            var plus = new Image(12,12);
            plus.src = bilder[0];
            plus.alt = 'hinzufügen';
            plus.title = "weitere Möglichkeit hinzufügen";
            plus.style.marginLeft = '10px';
            plus.style.cursor = 'pointer';
            plus.onclick = new Function ( "addVariation()");
            vardivs[vardivs.length-1].appendChild(plus);
            
            if ( vardivs.length > 1 ) {
              
              var kreuz = new Image(12,12);
              kreuz.src = bilder[1];
              kreuz.alt = 'entfernen';
              kreuz.title = "Möglichkeit entfernen";
              kreuz.style.cursor = 'pointer';
              kreuz.id = 'kreuzbild';
              kreuz.style.marginLeft = '10px';
              kreuz.onclick = new Function ( "removeVariation()");
              vardivs[vardivs.length-1].appendChild(kreuz);
              
            }
            
            
          }
          else
            alert('AJAX-Fehler');
          
        }
  
        
      } 
      else {
        
        // Ist der erste Wert keine 1, so wird eine Fehlermeldung übermittelt
        alert (rueck1[1]);
        
      }
      
    } else
      alert(rueckgabe);
    
  }  
  
}

// Blendet Hinweise zur Zahlungsart ein, bzw. aus
function showzaText(id) {
  
  if ( document.getElementById('zatexte') ) {
    
    var ps = document.getElementById('zatexte').getElementsByTagName('P');
    for ( var i = 0; i < ps.length; i++ ) {
      
      ps[i].style.display = "none";
      
    }
    
  }
  
  if ( document.getElementById('tza'+id) )
    document.getElementById('tza'+id).style.display = "block";
  
}

// Prüft per Javascript, ob die AGB'S beim Auslösen einer Bestellung akzeptiert wurden
function ischeckedAGB(feld) {
  
  if ( thisform.elements[feld].checked == false ) {
    
    alert('Sie können keine Bestellung auslösen, ohne unsere AGB\'s zu akzeptieren.');
    return false;
    
  }
  else
    return true;
  
}

// Versteck ein Ajax-Formular
function hideform() {
  
  if ( document.getElementById('ajaxformdiv') ) {
    
    while ( document.getElementById('ajaxformdiv').hasChildNodes() ) {
      
      document.getElementById('ajaxformdiv').removeChild(document.getElementById('ajaxformdiv').firstChild);
      
    }
    var parent = document.getElementById('ajaxformdiv').parentNode;
    parent.removeChild(document.getElementById('ajaxformdiv'));
    
  }
  unsetwarten();
  
}
  
// Erzeugt ein Formular, zum Absenden von Beiträgen (Ajax)
function doform(art) {
  
  if ( document.getElementById('ajaxformdiv') )
    hideform();
  
  // Alle Parameter übrgeben?
  var a = doform.arguments;
  if ( art == 'prodform' && (!a[1] || a[1] == '') ) {
    
    alert('fehlende Parameter');
    return false;
    
  }
  else if ( art == 'jslogin' && (!a[1] || a[1] == '') ) {
    
    alert('fehlende Parameter');
    return false;
    
  }
  
  // Wir brauchen ein formdiv im Schleier
  if ( document.getElementById('schleier') ) {
    
    setwarten();
    var schleier = document.getElementById('schleier');
    var formdiv = document.createElement('DIV');
    formdiv.id = "ajaxformdiv";
    
    // ajaxformdiv wird am schleier ausgerichtet
    var forcewidth = schleier.offsetWidth;
    var halfwidth = Math.round(forcewidth*0.8);
    var posleft = schleier.offsetLeft
    var padding = 25;
    posleft = posleft+(forcewidth-halfwidth)/2;
    
    formdiv.style.left = Math.round(posleft-padding)+'px';
    formdiv.style.top = schleier.offsetTop+100+'px';
    formdiv.style.width = halfwidth+'px';
    formdiv.style.padding = padding+'px';
    
    schleier.parentNode.appendChild(formdiv);
    
    // Formular erzeugen
    var formform = document.createElement('FORM');
    formform.action = window.location;
    formform.method = "post";
    
    formdiv.appendChild(formform);
    
    if ( art == 'prodform' ) {
      
      var span = document.createElement('SPAN');
      span.className = 'strong';
      span.appendChild(document.createTextNode('Ihr Kommentar'));
      formform.appendChild(span);
      formform.appendChild(document.createElement('BR'));
      
      var inpArray = new Array(0);
      
    }
    else if ( art == 'tipafriend' ) {
      
      // Betreff und Text auslesen
      var txt = decodeURIComponent(inpelement.href);
      
      // Versuche Betreff und Text zu ermitteln
      var betreff = txt.match(/\?subject=.*?&body/);
      var mitteilung = txt.match(/&body=.*?$/);
      
      if ( betreff && mitteilung ) {
        
        betreff+='';
        mitteilung+='';
        betreff = betreff.substring(9,betreff.length-5);
        mitteilung = mitteilung.substr(6);
        
        var span = document.createElement('SPAN');
        span.className = 'strong';
        span.appendChild(document.createTextNode('Betreff:'));
        formform.appendChild(span);
        var span = document.createElement('SPAN');
        span.style.marginLeft = '15px';
        span.style.fontStyle = 'italic';
        span.appendChild(document.createTextNode(betreff));
        formform.appendChild(span);
        formform.appendChild(document.createElement('BR'));
        var span = document.createElement('SPAN');
        span.className = 'strong';
        span.appendChild(document.createTextNode('Nachricht:'));
        formform.appendChild(span);
        var span = document.createElement('SPAN');
        span.style.marginLeft = '15px';
        span.style.fontStyle = 'italic';
        span.appendChild(document.createTextNode(mitteilung));
        formform.appendChild(span);
        formform.appendChild(document.createElement('BR'));
        formform.appendChild(document.createElement('BR'));
        
        var span = document.createElement('SPAN');
        span.className = 'strong';
        span.appendChild(document.createTextNode('persönliche Mitteilung:'));
        formform.appendChild(span);
        
      } 
      else {
        
        betreff = '';
        mitteilung = '';
        
      }
      
      // Array mit den Formularfeldern
      //array[x] = array('label' (string),'type' (string),'name' (string),'maxlength' (int >= 0),'size' (integer),'checkit' (int siehe kontrollfunktion.js),'pflicht' (0/1))
      
      var inpArray = new Array(1);
      inpArray[0] = new Array('Empfänger','text','email',50,30,7,1);
      
    }
    else if ( art == 'passwort' ) {
      
      var span = document.createElement('SPAN');
      var stxt = 'Du hast dein Passwort vergessen? Kein Problem!\nGib deinen Benutzernamen und die E-Mail mit der du dich registriert hast ein.\nWir senden dir umgehend ein neues Passwort zu.';
      nl2br(stxt,span);
      formform.appendChild(span);
      formform.appendChild(document.createElement('BR'));
      formform.appendChild(document.createElement('BR'));
      
      // Formular zum Passwort zurückholen
      var inpArray = new Array(2);
      inpArray[0] = new Array('Ihr Benutzername','text','uname',50,30,6,1);
      inpArray[1] = new Array('Ihre E-Mail','text','email',50,30,7,1);
      
    }
    else if ( art == 'jslogin' ) {
      
      // Neue Action
      formform.action = a[1];
      
      var span = document.createElement('SPAN');
      span.className = 'strong';
      var stxt = 'Login';
      nl2br(stxt,span);
      formform.appendChild(span);
      formform.appendChild(document.createElement('BR'));
      formform.appendChild(document.createElement('BR'));
      
      // Formular zum Passwort zurückholen
      var inpArray = new Array(2);
      inpArray[0] = new Array('Ihr Benutzername','text','uname',50,30,6,1);
      inpArray[1] = new Array('Ihr Passwort','password','upasswort',50,30,6,1);
      
    }
    
    // Jedes Formular, außer die Passwort-einholung hat ein Textarea
    if ( art != 'passwort' && art != 'jslogin' ) {
      
      if ( document.all && !window.opera ) {
        // IE-eigene Notation um ein input mit Typ zu erstellen
        var formtextarea = document.createElement('<textarea name="text">');
        
      } else {
        var formtextarea = document.createElement('TEXTAREA');
        formtextarea.name = 'text';
      }
      formtextarea.rows = "7";
      formtextarea.cols = "70";
      formtextarea.style.border = '2px solid #000000';
      formtextarea.onblur = new Function('eingabe=this;check_it(6,1);');
      
      formform.appendChild(formtextarea);
      formform.appendChild(document.createElement('BR'));
      formform.appendChild(document.createElement('BR'));
      
    }
    
    if ( inpArray.length > 0 ) {
      
      for ( var i = 0; i < inpArray.length; i++ ) {
        
        var label = document.createElement('LABEL');
        label.className = 'jsformlabel';
        var lbfor = document.createAttribute("for");
        lbfor.nodeValue = 'jsform'+i;
        label.setAttributeNode(lbfor);
        label.appendChild(document.createTextNode(inpArray[i][0]+':'));
        formform.appendChild(label);
        
        if ( document.all && !window.opera ) {
          // IE-eigene Notation um ein input mit Typ zu erstellen
          var forminput = document.createElement('<input type="'+inpArray[i][1]+'" name="'+inpArray[i][2]+'">');
          
        } else {
          
          var forminput = document.createElement('INPUT');
          forminput.type = inpArray[i][1];
          forminput.name = inpArray[i][2];
          
        }
        
        forminput.maxlength = inpArray[i][3];
        forminput.size = inpArray[i][4];
        forminput.style.marginLeft = '15px';
        forminput.id = 'jsform'+i;
        
        if ( inpArray[i][5] > 0 ) {
          
          if ( inpArray[i][6] == 1 )
            forminput.onblur = new Function('eingabe=this;check_it('+inpArray[i][5]+',1);');
          else
            forminput.onblur = new Function('eingabe=this;check_it('+inpArray[i][5]+',0);');
          
        }
        
        formform.appendChild(forminput);
        formform.appendChild(document.createElement('BR'));
        formform.appendChild(document.createElement('BR'));
        
      }
      
    }
    
    if( art == 'jslogin' )
      var subname = 'loginsubmit';
    else
      var subname = 'submit';
    
    // und noch das Absenden-Feld
    if ( document.all && !window.opera ) {
      // IE-eigene Notation um ein input mit Typ zu erstellen
      var formsubmit = document.createElement('<input type="submit" name="'+subname+'">');
      
    } else {
      var formsubmit = document.createElement('INPUT');
      formsubmit.name = subname;
      formsubmit.type = 'submit';
    }
    formsubmit.value = 'Absenden';
    formsubmit.className = 'button';
    
    // Formularaktion in Abhängigkeit des Formulars
    if ( art == 'prodform' )
      formsubmit.onclick = new Function('thisform=this.form;geaendert=false;submit_ok();sendfrmprodbeitrag('+a[1]+'); return false');
    else if ( art == 'tipafriend' )
      formsubmit.onclick = new Function('thisform=this.form;geaendert=false;submit_ok();tipAFriend("'+encodeURIComponent(betreff)+'","'+encodeURIComponent(mitteilung)+'"); return false');
    else if ( art == 'passwort' )
      formsubmit.onclick = new Function('thisform=this.form;geaendert=false;getPasswort(); return false');
    else if ( art == 'jslogin' ) {
      
      formsubmit.value = 'Login';
    }
    else
      formsubmit.onclick = new Function('return false');
    
    var formp = document.createElement('P');
    formp.style.textAlign = 'center';
    formp.appendChild(formsubmit);
    formform.appendChild(formp);
    
    if ( art == 'jslogin' ) {
      
      // Im Login-Formular gibt es noch einen Link zu Registrieren
      var formp = document.createElement('BR');
      formform.appendChild(formp);
      var formp = document.createElement('P');
      formp.style.textAlign = 'center';
      formform.appendChild(formp);
      
      var txt = "Du bist noch nicht registriert? ";
      formp.appendChild(document.createTextNode(txt));
      var reglink = document.createElement('A');
      reglink.href = "login.php";
      reglink.appendChild(document.createTextNode('Hier kannst du dich registrieren.'));
      formp.appendChild(reglink);
      
    }
    
    var formp = document.createElement('P');
    formp.style.textAlign = 'center';
    formform.appendChild(formp);
    // Der Link zum schließen
    var closelink = document.createElement('A');
    closelink.href ='#';
    closelink.onclick = new Function('hideform();return false;');
    closelink.appendChild(document.createTextNode('schließen'));
    formp.appendChild(closelink);
    
    // Fenster richtig Scrollen
    window.scrollTo(0,formdiv.offsetTop-50);
    
  }
  else
    alert('Das Schleier-Div im Footer fehlt');
  
}

// Ajax-Initialisierung zum prüfen des Preisvorschlags
function checkvorschlag(element,startpreis,pid) {
  
  var formular = element.form;
  var musterpreis = /^[0-9]{1,4}[,\.]{0,1}[0-9]{0,2}$/;
  var vorschlag = formular.pvorschlag.value;
  //wurde ein Preis eingegeben, und stimmt das Format?
  if ( musterpreis.test(vorschlag) ) {
    
    vorschlag = vorschlag.replace(/,/g, '.');
    vorschlag *= 1;
    
    if ( vorschlag <= 0 ) {
      
      alert("Wir möchten doch bitten....\nVerschenken können wir auch nichts");
      return false;
      
    }
    
    if ( vorschlag >= startpreis ) {
      
      alert("Hey, es geht darum einen günstigeren Preis zu finden.");
      return false;
      
    }
    
    // OK, der Preis ist formell gültig
    // Eine Blende wird über das Formular gelegt
    var rootblenddiv = document.getElementById('rootblende');
    var blenddiv = document.createElement('DIV');
    if ( rootblenddiv.offsetTop )
      var totop = rootblenddiv.offsetTop;
    else
      var totop = 145;
    
    if ( rootblenddiv.offsetLeft )
      var toleft = rootblenddiv.offsetLeft;
    else
      var toleft = 232;
    
    var toheight = rootblenddiv.offsetHeight;
    var towidth = rootblenddiv.offsetWidth;
    
    blenddiv.id = 'ajaxblende';
    blenddiv.style.top = totop+'px';
    blenddiv.style.left = toleft+'px';
    blenddiv.style.height = toheight+'px';
    blenddiv.style.width = towidth+'px';
    rootblenddiv.appendChild(blenddiv);
    
    setOpacity('ajaxblende',10);
    var ref = setTimeout('fade("ajaxblende",0)',30);
    
    // Nun fehlt noch ein weißes div, in dem der Counter gezeigt wird
    var counterdiv = document.createElement('DIV');
    counterdiv.id = 'countdowndiv';
    counterdiv.style.top = Math.floor(totop+toheight-450)+'px';
    counterdiv.style.left = (Math.floor(toleft+(towidth/2)-200))+'px';
    counterdiv.style.height = '300px';
    counterdiv.style.width = '400px';
    rootblenddiv.appendChild(counterdiv);
    
    // Nun den Startpreis einblenden
    var countpricediv = document.createElement('DIV');
    countpricediv.id = 'countpricediv';
    countpricediv.style.marginTop = '50px';
    countpricediv.style.color = '#7fff00';
    countpricediv.appendChild(document.createTextNode(startpreis.replace(/\./,',')+' €'));
    counterdiv.appendChild(countpricediv);
    
    // Erzeuge einen Intervall, in dem der Preis reduziert wird
    selfprice = parseFloat(startpreis);
    ajaxintv = setTimeout("downprice(0,1000)", 1000);
    
    // Ajax-Aufruf zur Überprüfung des Preises
    var pfad = window.location+'';
    
    if(pfad.lastIndexOf("/") != -1)
      var ajaxpfad = pfad.substr(0, pfad.lastIndexOf("/")+1)+'public/ajax.php';
    else if(pfad.lastIndexOf("\\") != -1)
      var ajaxpfad = pfad.substr(0, pfad.lastIndexOf("\\")+1)+'public/ajax.php';
    else 
      return false;
    
    ajax(1,ajaxpfad, 'ajax=8&pv='+vorschlag+'&pid='+pid, 8);
    return false;
    
  }
  else {
    
    alert('Uppsss, das ist kein gültiger Preis.');
    return false;
    
  }
  
}

// Ergebnis der Vorschlagsprüfung
function ergCheckvorschlag(rueckgabe) {
  
  if ( rueckgabe != '' ) {
    
    // Splitten der rueckgabe '<'
    var rueck1 = rueckgabe.split('<');
    
    // Wenn der erste Rueckgabewert aus mehr als einem Zeichen besteht, ist ein Fehler aufgetreten, die Ausführung wird abgebrochen
    if ( rueck1[0].length == 1 ) {
      
      // Ist der Rueckgabewert 1, wird ein gültiges Ergebnis zurückgegeben; andernfalls wäre der Rückgabewert nicht 1
      if ( rueck1[0] == 1 ) {
        
        var rueck2 = rueck1[1].split('|'); // [0] SessionPreis; [1] Preisvorschlag; [2] Akzeptiert->1/zu niedrig->0, [3] verbleibende Vorschläge
        
        // Zuerst wird das Timeout gestoppt
        clearTimeout(ajaxintv);
        var zwpreis = selfprice; // gestoppten Preis zwischenspeichern
        
        // Nun wird das Timeout mit verkürztem Intervall neu gestartet
        if ( zwpreis > rueck2[1] ) {
          
          ajaxintv = setTimeout("downprice("+rueck2[1]+",5)", 5);
          
        }
        else {
          
          // Ist der Timeout-Preis schon kleiner als der Rückgabepreis, wird der Rückgabepreis eingesetzt
          if ( document.getElementById('countpricediv') ) {
            
            while ( document.getElementById('countpricediv').hasChildNodes() ) {
              
              document.getElementById('countpricediv').removeChild(document.getElementById('countpricediv').firstChild);
              
            }
            document.getElementById('countpricediv').appendChild(document.createTextNode(rueck2[1].replace(/\./,',')+' €'));
            
          }
          
          setTimeout("clearvorschlagblende()",1000);
          
        }
        
        // Der Übergeben Session-Preis wird gesetzt
        if ( document.getElementById('vorschpreis') ) {
          
          while ( document.getElementById('vorschpreis').hasChildNodes() ) {
            
            document.getElementById('vorschpreis').removeChild(document.getElementById('vorschpreis').firstChild);
            
          }
          document.getElementById('vorschpreis').appendChild(document.createTextNode(rueck2[0].replace(/\./,',')));
          
        }
        
        // Meldung über den Erfolg setzen
        if ( rueck2[2] == 1 ) {
          
          if ( document.getElementById('vorschmeldung') ) {
            
            var meld = document.getElementById('vorschmeldung');
            while ( meld.hasChildNodes() ) {
              
              meld.removeChild(meld.firstChild);
              
            }
            
            var melp = document.createElement('P');
            melp.className = 'strong green';
            melp.appendChild(document.createTextNode('Super, diesen Vorschlag können wir akzeptieren.'));
            meld.appendChild(melp);
            
          }
          
        }
        else {
          
          if ( document.getElementById('vorschmeldung') ) {
            
            var meld = document.getElementById('vorschmeldung');
            while ( meld.hasChildNodes() ) {
              
              meld.removeChild(meld.firstChild);
              
            }
            
            var melp = document.createElement('P');
            melp.className = 'strong red';
            melp.appendChild(document.createTextNode('Deine Preisvorstellung ist einfach zu niedrig.'));
            meld.appendChild(melp);
            
          }
          
        }
        
        // Anzahl der verbleibenden Vorschläge setzen
        if ( rueck2[3] > 0 ) {
          
          if ( document.getElementById('versuchszaehler') ) {
            
            var meld = document.getElementById('versuchszaehler');
            while ( meld.hasChildNodes() ) {
              
              meld.removeChild(meld.firstChild);
              
            }
            if ( rueck2[3] > 1 ) {
              
              meld.className = 'strong green';
              meld.appendChild(document.createTextNode('Dir bleiben noch '+rueck2[3]+' Versuche'));
              
            }
            else {
              
              meld.className = 'strong orange';
              meld.appendChild(document.createTextNode('Dir bleibt nur noch 1 Versuch'));
              
            }
            
          }
          
        }
        else {
          
          // Keine Versuche mehr übrig, das Formular wird geleert
          if ( document.getElementById('vorschaktion') ) {
            
            while ( document.getElementById('vorschaktion').hasChildNodes() ) {
              
              document.getElementById('vorschaktion').removeChild(document.getElementById('vorschaktion').firstChild);
              
            }
            
          }
          
          if ( document.getElementById('versuchszaehler') ) {
            
            var meld = document.getElementById('versuchszaehler');
            while ( meld.hasChildNodes() ) {
              
              meld.removeChild(meld.firstChild);
              
            }
            meld.className = 'strong red';
            meld.appendChild(document.createTextNode('Sorry, du hast alle deine Versuche verbraucht.'));
            
          }
          
        }
        
      } 
      else if ( rueck1[0] == 2 ) {
        
        // Die Ajaxfunktion ist soweit in Ordnung, nur wird eine Meldung ausgegeben, und der benutzer muss die Seite neu laden
        if ( rueck1[1] != '' )
          alert(rueck1[1]);
        
        clearvorschlagblende();
        location.reload();
        
      }
      else {
        
        // Ist der erste Wert keine 1, so wird eine Fehlermeldung übermittelt
        alert (rueck1[1]);
        clearvorschlagblende();
        
      }
      
    } else {
      alert(rueckgabe);
      clearvorschlagblende();
    }
    
  }
  else
    clearvorschlagblende();
  
}

// Reduzieren des Preises
function downprice(stop,zeit) {
  
  if ( document.getElementById('countpricediv') && selfprice > 0 ) {
    
    var thisdiv = document.getElementById('countpricediv');
    while ( thisdiv.hasChildNodes() ) {
      
      thisdiv.removeChild(thisdiv.firstChild);
      
    }
    selfprice = (selfprice-0.02).toFixed(2);
    var showprice = selfprice+'';
    thisdiv.style.color = '#7fff00';
    if ( zeit > 50 )
      zeit -= 50;
    
    if ( stop < selfprice ) {
      ajaxintv = setTimeout("downprice("+stop+","+zeit+")", zeit);
      thisdiv.appendChild(document.createTextNode(showprice+' €'));
    }
    else {
      
      var showprice = stop+'';
      thisdiv.appendChild(document.createTextNode(showprice+' €'));
      setTimeout("clearvorschlagblende()",1000);
      thisdiv.appendChild(document.createElement('BR'));
      thisdiv.appendChild(document.createTextNode('und...'));
      
    }
    
  }
  else {
    
    setTimeout("clearvorschlagblende()",1000);
  }
  
}

// Vorschlagblende entfernen
function clearvorschlagblende() {
  
  clearTimeout(ajaxintv);
  if ( document.getElementById('ajaxblende') ) {
    
    while ( document.getElementById('ajaxblende').hasChildNodes() ) {
      
      document.getElementById('ajaxblende').removeChild(document.getElementById('ajaxblende').firstChild);
      
    }
    var parnode = document.getElementById('ajaxblende').parentNode;
    parnode.removeChild(document.getElementById('ajaxblende'));
    
  }
  if ( document.getElementById('countdowndiv') ) { 
    
    while ( document.getElementById('countdowndiv').hasChildNodes() ) {
      
      document.getElementById('countdowndiv').removeChild(document.getElementById('countdowndiv').firstChild);
      
    }
    var parnode = document.getElementById('countdowndiv').parentNode;
    parnode.removeChild(document.getElementById('countdowndiv'));
    
  }
  
  
}

// Leitet die Serverantwort an die richtige Funktion weiter
function funktionAuswaehlen(funktionID) {
  
	if (refernzObjekt.readyState == 4) {	

		if (refernzObjekt.status == 200) {
      
			switch (funktionID) {
        case 1: 
					ergAjaxvote(refernzObjekt.responseText);
					break;
        case 2: 
					ergCheckProdliste(refernzObjekt.responseText);
					break;
        case 3: 
					ergTipAFriend(refernzObjekt.responseText);
					break;
        case 4: 
					ergGetPasswort(refernzObjekt.responseText);
					break;
        case 5: 
					ergAddVariation(refernzObjekt.responseText);
					break;
        case 6: 
					ergRemoveVariation(refernzObjekt.responseText);
					break;
        case 8: 
					ergCheckvorschlag(refernzObjekt.responseText);
					break;
				default:
					alert(refernzObjekt.responseText);
					break;
			}
		}
/*		else
		{
			alert( "FEHLER:\n HTTP status = " + refernzObjekt.status + "\n" + refernzObjekt.statusText );
		}
*/

	}
}
  
//Funktion zum Erzeugen eines XMLHttpRequest-Objekts in abhängigkeit des Browsers
function erzeugeXMLHttpRequestObjekt() {
  
	try {
    
		if (window.ActiveXObject) {
      
			try {
        
				refernzObjekt = new ActiveXObject("Microsoft.XMLHTTP");  
        
			} catch(Error) {
        
				try {
          
					refernzObjekt = new ActiveXObject("Msxml2.XMLHTTP.");
          
				} catch(Error) {
          
					refernzObjekt = false;
          
				}
			}
      
		} else if (window.XMLHttpRequest) {
      
			refernzObjekt = new XMLHttpRequest();
      
		}
    
	} catch(Error) {
		refernzObjekt = false;
	}
	return refernzObjekt;
}

// Führt die Serveranfrage aus
function ajax(methode, pfad, code, funktionID) {
  
	if (!methode)
		var methode = 1;
	if (!code)
		var code = '';
  
	if (refernzObjekt && refernzObjekt.readyState) {
    
		refernzObjekt.abort();
		refernzObjekt = false;
	}
  
	var refernzObjekt = erzeugeXMLHttpRequestObjekt();
  
	if (refernzObjekt) {
    
		switch(methode) {
      
			case 1: //Request per GET
				var pfadcode = pfad+'?'+code;
				refernzObjekt.open( "GET", pfadcode, true );
				code = null;
				break;
			case 2: //Request per POST
				refernzObjekt.open( "POST", pfad, true );
				refernzObjekt.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
				refernzObjekt.setRequestHeader( 'Content-length', code.length );
				break;
		}
    refernzObjekt.setRequestHeader("Pragma", "no-cache");
    refernzObjekt.setRequestHeader("Cache-Control", "must-revalidate");
    refernzObjekt.setRequestHeader("If-Modified-Since", document.lastModified);
		refernzObjekt.onreadystatechange = new Function("funktionAuswaehlen("+funktionID+")");
		refernzObjekt.send(code);
	}
}

// Rückgeben des Transparentz-Wertes
function getOpacity(id) {
  
  var opacity = null; 
  if ( opacity = document.getElementById(id).style.opacity ) {
    opacity = parseFloat(opacity)*100;
    
    return opacity;
  }
  return 100;
  
}

// Setzen des neuen Transparenz-Wertes
function setOpacity(id,wert) {
  
  id = document.getElementById(id);
  if ( wert == 100 ) {
    id.style.opacity = 1;  
    if ( /MSIE/.test(navigator.userAgent) )  
      id.style.filter.replace(/alpha\([^\)]*\)/gi,'');  
  } else {  
    id.style.opacity = wert/100; 
    if ( /MSIE/.test(navigator.userAgent) ) {
      id.style.filter = "alpha(opacity="+wert+")"; 
    }
  } 
  
  return;
  
}

// Fader blendet Elemente ein
function fade(id,wert) {
  
  if ( getOpacity(id) < 90) {
    wert++;
    setOpacity(id,wert);
    var ref = setTimeout('fade("'+id+'","'+wert+'")',30);
  } else {
    clearTimeout(ref);
    return true;
  }
  
}

// Blendet die Bitten-Warten-Meldung ein
function setwarten() {
  
  var id = 'schleier';
  var div = document.getElementById(id);
  var mainspace = document.getElementById('page');
  
  setOpacity(id,10);
    div.style.left = '250px';
  div.style.top = (mainspace.offsetTop)+'px';
  div.style.width = mainspace.offsetWidth-220+'px';
  div.style.height = (mainspace.offsetHeight)+'px';
  
  var ref = setTimeout('fade("'+id+'",0)',30);
 
}

// Blendet die Wartenmeldung aus
function unsetwarten() {
  
  var id = 'schleier';
  var div = document.getElementById(id);
  div.style.left = '-300px';
  div.style.width = '1px';
  
}

