// przechowuje odwołanie do obiektu XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject(); 

// zwraca obiekt XMLHttpRequest
function createXmlHttpRequestObject() 
{
  // przechowa odwołanie do obiektu XMLHttpRequest
  var xmlHttp;
  // jeśli uruchomiony jest Internet Explorer
  if(window.ActiveXObject)
  {
    try
    {
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e) 
    {
      xmlHttp = false;
    }
  }
  // jeśli uruchomiona jest Mozilla lub inne przeglądarki
  else
  {
    try 
    {
      xmlHttp = new XMLHttpRequest();
    }
    catch (e) 
    {
      xmlHttp = false;
    }
  }
  // zwraca utworzony obiekt lub wyświetla komunikat o błędzie
  if (!xmlHttp)
    alert("Błąd podczas tworzenia obiektu XMLHttpRequest.");
  else 
    return xmlHttp;
}

// wysyła asynchroniczne żądanie protokołem HTTP korzystając z obiektu XMLHttpRequest
function modul_newsletter(co,gdzie,sciezka)
{
  // kontynuuje jedynie jeśli obiekt xmlHttp nie jest zajęty
  if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
  {
    // pobiera maila wpisanego przez użytkownika w formularzu
    //name = encodeURIComponent(document.getElementById("modul_newsletter_" + gdzie + "_input").value);
    name = document.getElementById("modul_newsletter_" + gdzie + "_input").value;
    // wykonuje skrypt newslettera
    xmlHttp.open("GET", sciezka + "newsletter_act.php?co=" + co + "&gdzie=" + gdzie + "&wartosc=" + name, true);  
    // definiuje metodę obsługi odpowiedzi serwera
    xmlHttp.onreadystatechange = handleServerResponse;
    // wysyła żądanie do serwera
    xmlHttp.send(null);
    // komunikat loading
    document.getElementById("modul_newsletter_" + gdzie + "_przyciski1").style.display = "none";
    document.getElementById("modul_newsletter_" + gdzie + "_przyciski2").style.display = "block";
    document.getElementById("modul_newsletter_" + gdzie + "_loading").innerHTML = '<img alt="" src="' + sciezka + 'template/loading.gif" />';
  }
}

// wykonywana automatycznie po otrzymaniu odpowiedzi z serwera
function handleServerResponse() 
{
  // kontynuuje jedynie jeśli transakcja została zakończona
  if (xmlHttp.readyState == 4) 
  {
    // status 200 oznacza pomyślne ukończenie transakcji
    if (xmlHttp.status == 200) 
    {
      // wyodrębnia wiadomość XML wysłaną z serwera
      xmlResponse = xmlHttp.responseXML;
      //alert(xmlResponse);
      // pobiera element nadrzędny ze struktury pliku XML
      xmlDocumentElement = xmlResponse.documentElement;
      // pobiera wiadomość tekstową pierwszego potomka elementu document
      //helloMessage = xmlDocumentElement.firstChild.data;
      var gdzie = xmlDocumentElement.getElementsByTagName ("gdzie")[0].firstChild.data; 
      var komunikat = xmlDocumentElement.getElementsByTagName ("komunikat")[0].firstChild.data;
      var przyciski = xmlDocumentElement.getElementsByTagName ("przyciski")[0].firstChild.data;
      var blad = xmlDocumentElement.getElementsByTagName ("blad")[0].firstChild.data;
      
      document.getElementById("modul_newsletter_" + gdzie + "_loading").innerHTML = '';
      
      // blad
      if(blad == "tak") {
      komunikat = '<span style="color:red">' + komunikat + '</span>';
      }
      
      // aktualizuje dane wyświetlane klientowi informacjami otrzymanymi z serwera
      document.getElementById("modul_newsletter_" + gdzie + "_komunikat").innerHTML = komunikat;
      
      //przyciski
      if(przyciski == "tak") {
      document.getElementById("modul_newsletter_" + gdzie + "_przyciski1").style.display = "block";
      document.getElementById("modul_newsletter_" + gdzie + "_przyciski2").style.display = "none";
      } else {
      document.getElementById("modul_newsletter_" + gdzie + "_przyciski2").style.display = "block";
      document.getElementById("modul_newsletter_" + gdzie + "_przyciski1").style.display = "none";
      }
    } 
    // dla statusu protokołu HTTP innego niż 200 zgłasza błąd
    else 
    {
      alert("Wystąpił błąd podczas uzyskiwania dostępu do serwera: " + xmlHttp.statusText);
    }
  }
}

