/******************************************************/
/*                                                    */
/*  "Shoutbox als AJAX-Anwendung"                     */
/*                                                    */
/*  Basierend auf der Grundlage von www.devblog.de    */
/*  Optimiert und Fehlerbereinigt durch               */
/*  www.schmalenberger.info/blog/eintrag_324.html     */
/*                                                    */
/*  Code darf frei verwendet werden                   */
/*                                                    */
/******************************************************/


/******************************************************/
/* Erklärung - ReadyState                             */
/* 0 = Nicht initalisiert                             */
/* 1 = Lädt                                           */
/* 2 = Geladen                                        */
/* 3 = Interagiere                                    */
/* 4 = komplett                                       */
/******************************************************/

var PATH = "../opensource/wettermelder/";
var last_request=0;


// Lade Einträge der Shoutbox
loadData();

// Setzen der Vaiable damit der Chat nicht zum DOS wird
var dosProtect = 0;

// Lade Einträge alle x Sekunden
var aktiv = setInterval("loadData()",50000);


// Funktion zum Laden der Einträge
function loadData()
{
 var xmlHttp = false;

 // XML HttpRequest-Instanz für IE < Version 6 erstellen
 try 
 {
  xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
 } 
 catch(e) 
 {
  try 
  {
   xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
  } 
  catch(e) 
  {
   xmlHttp  = false;
  }
 }
 // XML HttpRequest-Instanz für für Mozilla, Opera, Safari usw. erstellen
 if (!xmlHttp  && typeof XMLHttpRequest != 'undefined') 
 {
  xmlHttp = new XMLHttpRequest();
 }

 // Wenn Status entsprechend führe Aktion durch
 if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
 {

  // Führe Aktion aus
  xmlHttp.open('GET', PATH + 'getdata.php?last_request='+last_request, true);
  // Sobald sich der Zustand ändert führe Aktion aus.
  xmlHttp.onreadystatechange = function () 
  {
   if (xmlHttp.readyState == 4) 
   {
    // Dos Variable erhöhen
    dosProtect = dosProtect + 1;

    var response=xmlHttp.responseText;
//alert(response.length);

	if (response.length>0)
	{
	    // in erster Zeile steht der Timestamp -> extrahieren
	    zeilen=response.split("<br />");
	    last_request=zeilen[0];  
	    var anzahl_zeilen=zeilen.length;
	    for (i=1;i<anzahl_zeilen;i++)
	    {
		    document.getElementById("asb_content").innerHTML+=zeilen[i];
		    //if (i<anzahl_zeilen-1) document.getElementById("asb_content").innerHTML+='<br />';
	    }
	}
   }
   // nach unten zur neuen Nachricht scrollen
   if (document.getElementById('autoscroll'))
   {
	   if (document.getElementById('autoscroll').checked)
	   {
		   var cdiv=document.getElementById('asb_contentwrap');
		   cdiv.scrollTop=cdiv.scrollHeight;
	}
   }      
   
  }
  // Leere
  xmlHttp.send(null);
 }
 else
 {
  // Prüfmeldung 
  // alert(xmlHttp.readyState);
 }
 // Nach einer bestimmten Anzahl von Aufrufen wird der automatische
 // Aufruf beendet

}




// Funktion zum Speichern der Einträge
function sendComment()
{
 var xmlHttp2 = false;

 // XML HttpRequest-Instanz für IE < Version 6 erstellen
 try 
 {
  xmlHttp2  = new ActiveXObject("Msxml2.XMLHTTP");
 } 
 catch(e) 
 {
  try 
  {
   xmlHttp2  = new ActiveXObject("Microsoft.XMLHTTP");
  } 
  catch(e) 
  {
   xmlHttp2  = false;
  }
 }
 // XML HttpRequest-Instanz für für Mozilla, Opera, Safari usw. erstellen
 if (!xmlHttp2  && typeof XMLHttpRequest != 'undefined') 
 {
  xmlHttp2 = new XMLHttpRequest();
 }




 if (xmlHttp2) 
 {
  // Prüfmeldung 
  // alert("xmlhttp ok");
  var txtMessage = document.frmshoutbox.txtmessage.value;
  var txtName    = document.frmshoutbox.txtname.value;  
  var pincode    = document.frmshoutbox.pincode.value;  
  // Prüfmeldung der bereinigten Nachricht
  // alert (txtmessage);
  if (txtMessage == '' || txtName == '' || txtMessage == 'Wettermeldung' || txtName == 'Ort' || pincode == 'xxxx')
  {
   alert("Bitte Ort, Wettermeldung und Pincode eingeben!");
  }
  else
  {
   if (xmlHttp2.readyState == 4 || xmlHttp2.readyState == 0)
   {
    xmlHttp2.open('POST', PATH + 'setdata.php');
    xmlHttp2.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    // xmlHttp2.onreadystatechange = loadData;
    xmlHttp2.send('message='+txtMessage+"&name="+txtName+"&last_request="+last_request+"&pincode="+pincode);
    // Prüfmeldung 
    // alert("Eintrag");
   }
   else
   {
    // Prüfmeldung    
    // alert("Verzögerter Aufruf");
    setTimeout('sendComment();',1000);
   }

   if (xmlHttp2.readyState == 4 || xmlHttp2.readyState == 0)
   {
    // Gebe Meldung aus und lade Einträge zeitversetzt
    //document.getElementById("asb_content").innerHTML = "Eintrag wurde gespeichert..."   
    dosProtect = 0;
    setTimeout('loadData();',1000);
   }
   else
   {
    // Gebe Meldung aus und lade Einträge zeitversetzt
    //document.getElementById("asb_content").innerHTML = "Eintrag wurde gespeichert..."
    dosProtect = 0;
    setTimeout('loadData();',1000);
   }   
  }
 }
 // Leere das Eingabefeld
 document.frmshoutbox.txtmessage.value = '';
 document.frmshoutbox.txtmessage.focus(); // Cursor in das Textfeld setzen
}