//speichert eine Instanz von XMLHttpRequest
var xmlHttpBasket = createXmlHttpRequestObject();

//erzeugt eine Instanz von XMLHttpRequest
function createXmlHttpRequestObject()
{
  //speichert die Referenz auf das XmlHttpRequestObject
  var xmlHttp;
  try{
     //versucht, ein XmlHttpRequest-Objekt zu erzeugen
     xmlHttp = new XMLHttpRequest();
     }
     catch(e){
             // für IE6 oder Älter
             var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                             "MSXML2.XMLHTTP.5.0",
                                             "MSXML2.XMLHTTP.4.0",
                                             "MSXML2.XMLHTTP.3.0",
                                             "MSXML2.XMLHTTP",
                                             "Microsoft.XMLHTTP");
             // probiert Prog-IDs durch, bis eine funktioniert
             for(var i=0; i< XmlHttpVersions.length && !xmlHttp; i++){
                try{
                   // versucht ein XMLHttpRequest-Objekt zu erzeugen
                   xmlHttp = new ActiveXObject(XmlHttpVersions[i]);                     
                   }
                   catch(e){}
                }// Ende for
             }// Ende catch(e)
   // gibt das erzeugte Objekt oder eine Fehlermeldung zurück
   if(!xmlHttp){
    alert("Error creating XMLHttpRequest object.");
    }
    else{
        return xmlHttp;
        }
}

function add2basket()
{
  //nur fortfahren, wenn xmlHttp nicht leer ist. 
  if(xmlHttpBasket){
    // Versuch einer Serververbindung
    try{               
       // holt die beiden Werte Artikelnr, Anzahl vom Formular
       var artikelnr = document.getElementById("offerarticleno").value;
       var anz = document.getElementById("offercount").value;
       //erzeugt den Parameterstring
       var params = "artikelnr=" + artikelnr + "&anz=" + anz;
       xmlHttpBasket.open("GET", "ajax_basket.php?" + params, true);
       //xmlHttp.open("GET", "../basket.php?" + params, true);
       xmlHttpBasket.onreadystatechange = handleRequestStateChangeAddBasketOffer;
       xmlHttpBasket.send(null);
       }
       //zeigt einen Fehler an, falls er auftritt
       catch(e){
               setTimeout("add2basket(), 1000");
               //alert("Can`t connect to server: \n" + e.toString());
               }
    }//ende if
}//ende function addbasket

//Funktion zur Behandlung der HTTP-Antwort
function handleRequestStateChangeAddBasketOffer()
{
  //beschafft eine Referenzauf das <div>-Element auf der Seite
  myDiv = document.getElementById("new_elements");
  // zeigt den Status des Requests an
  if (xmlHttpBasket.readyState == 4){
    
    //nur weitermachen, wenn HTTP-Status "OK"
    if(xmlHttpBasket.status == 200){
      try{
         handleServerResponseAddBasketOffer();
         }
         catch(e){
                 //zeigt Fehlermeldungen an               
                 alert("Error reading the response: " + e.toString());
                 }
      }
      else if(xmlHttpBasket.status == 404){ 
             alert("Sehr geehrter Kunde, leider gibt es zur Zeit einige Probleme mit unserem Server! Wir arbeiten derzeit an einer Lösung. Bestellungen können an info@mareva.info geschickt werden.");
             //alert(xmlHttpBasket.status);
             }
      else{
          // zeigt Statusmeldung an
          alert("There was a problem retrieving the data: \n" + xmlHttp.statusText);
          }
    }
}//END function handleRequestStateChangeAddBasket()

function handleServerResponseAddBasketOffer()
{
  //ruft die Server-Antwort als XML-DOM Objekt ab
  var response = xmlHttpBasket.responseText;
  var anz = response.substr(0,2);
  var art = response.substr(2,response.length);
  //zeigt die Nachricht für den Benutzer an
  var new_elements = document.getElementById("new_elements");
  var anz_basket   = document.getElementById("anz_basket");
  /*wenn die Anzahl im Warenkorb (und somit auch in myDiv) == 0, dann iwrd neuer Inhalt hinzugefügt.
    wenn die Anzahl >0 dann wird ein Zeilenumbruch mit eingefügt.*/
  new_elements.innerHTML += "<div class='art_block'><span class='number'>"+anz+"</span><span class='article'>"+art+"</span></div>";
  //gibt Anzahl der Artikel im Warenkorb im Kopfbereich des MiniWarenkorb aus.
  anz_basket.innerHTML = anz;
}
