/*******************************************************************************
********************************************************************************
********************************************************************************
 KLASA AjaxBase(...)
********************************************************************************
********************************************************************************
*******************************************************************************/
function AjaxBase(adres, idNewsa, listaGrup,  liczbaRekordow, opcja, rodzajWysylki, jezyk)
{
//ZMIENNE
  //podstawowy czlon uzywany przy pozniejszej zmianie adresu
  this.obiekt = this;
  this.adres = adres;
  this.idNewsa = idNewsa;
  this.listaGrup = listaGrup;
  this.liczbaRekordow = liczbaRekordow;
  this.opcja = opcja;
  this.rodzajWysylki = rodzajWysylki;
  this.aktualna = -1;
  this.iloscNW = -1;
  this.rozpocznij = -1;
  this.licznik = 0;
  this.licznikBlokad = 0;
  this.lang = jezyk;
  
  //okresla stan obiektu:
  //0 - operacje nie zakonczyly sie bledem;
  //1 - nie utworzono obiektu XMLHttpRequest;
  //5 - poprawnie zaktualizowano wszystkie rekordy;
  this.status = 0;
  
  //obiekt XMLHttpRequest
  this.zapytanieHTTP;
  
//METODY
  //tworzy obiekt XMLHttpReuest i wywoluje metode this.sprawdzStan()
  this.wywolajZapytanie = wywolajZapytanie;
    
  //sprawdza stan wyslanego zapytania
  this.sprawdzStan = sprawdzStan;
  
  //wypisuje wynik
  this.wypiszWynik = wypiszWynik;
  
}//KLASA AjaxBase()

/*******************************************************************************
 AjaxBase::wywolajZapytanie()
*******************************************************************************/
function wywolajZapytanie(obiekt)
{
  var d = new Date();

  obiekt = this;
  if (window.XMLHttpRequest)
  {
      this.zapytanieHTTP = new XMLHttpRequest();
      if (this.zapytanieHTTP.overrideMimeType)
        this.zapytanieHTTP.overrideMimeType('text/xml');
  }
  else if (window.ActiveXObject)
  {
      try {this.zapytanieHTTP = new ActiveXObject("Msxml2.XMLHTTP");}
      catch (e)
      {
          try {this.zapytanieHTTP = new ActiveXObject("Microsoft.XMLHTTP");}
          catch (e){}
      }
  }

  if(this.zapytanieHTTP)
  {//"application/x-www-form-urlencoded"
    var parametry = "?idNewsa="+this.idNewsa+"&listaGrup="+this.listaGrup+"&liczbaRekordow="+this.liczbaRekordow+"&opcja="+this.opcja+"&rodzajWysylki="+this.rodzajWysylki+"&czas="+d.getTime();
    this.zapytanieHTTP.onreadystatechange = function() {obiekt.sprawdzStan();};
    this.zapytanieHTTP.open("GET", this.adres+parametry, true);
    /*this.zapytanieHTTP.setRequestHeader("Content-type", "text/xml");
    this.zapytanieHTTP.setRequestHeader("Content-length", parametry.length);
    this.zapytanieHTTP.setRequestHeader("Connection", "close");*/
    this.zapytanieHTTP.send(null);
    
  }
  else
  {//nie utworzono obiektu konczymy operacje na tej relacji
    this.status = 1;
    alert(Sl.czytaj(this.lang, 5));//Blad nie mozna stworzyc obiektu XML...
  }
}//function AjaxBase::wywolajZapytanie()


/*******************************************************************************
 AjaxBase::sprawdzStan()
*******************************************************************************/
function sprawdzStan()
{ 
  //alert(this.opcja);
  if(this.zapytanieHTTP.readyState==4)
  {
      if ((this.zapytanieHTTP.status == 200))
      {//odczytano poprawnie wynik
        this.wypiszWynik(this.zapytanieHTTP.responseText);
      }
      else
      {
      }
  }
}//function AjaxBase::sprawdzStan(...)


/*******************************************************************************
 AjaxBase::wypiszWynik()
*******************************************************************************/
function wypiszWynik(text)
{
  obiekt = this;
  var a = document.getElementById('wysylanie');
  
  switch(this.opcja)
  {
    case 1:
    break;
    
    case 2:
      this.iloscNW = parseInt(text);
      pozostalo = this.liczbaRekordow - this.iloscNW;
      if((this.iloscNW>0)&&(this.aktualna>0))
      {
        if(pozostalo>0)
          a.innerHTML= '<div>'+Sl.czytaj(this.lang,0)+'.<br />'+Sl.czytaj(this.lang,1)+' '+pozostalo+' '+Sl.czytaj(this.lang,2)+' '+this.liczbaRekordow+' '+Sl.czytaj(this.lang,3)+'.</div>';
        else
          a.innerHTML= '<div>'+Sl.czytaj(this.lang,4)+'</div>';
        this.licznik++;
        if(this.licznik==10)
        {
          this.opcja = 3;
          this.licznik=0;
        }
        obiekt.wywolajZapytanie();                              
        //window.setTimeout("obiekt.wywolajZapytanie()", 100);
      }
      else if(this.iloscNW==0)
      {
        a.innerHTML= '<div>'+Sl.czytaj(this.lang,6)+'</div>';
        return 1;
      }
      else if((this.iloscNW>0)&&(this.aktualna<0))
      {     
        if(this.iloscNW == this.liczbaRekordow)
          a.innerHTML= '<div>'+Sl.czytaj(this.lang,7)+'.</div>';
        else
          a.innerHTML= '<div>'+Sl.czytaj(this.lang,8)+' '+pozostalo+' '+Sl.czytaj(this.lang,2)+' '+this.liczbaRekordow+' '+Sl.czytaj(this.lang,3)+'. '+Sl.czytaj(this.lang,9)+'.</div>';
        return -1;
      }
    break;
    
    case 3:
      this.aktualna = parseInt(text);      
      if((this.aktualna>0)&&(this.rozpocznij<0))
      {
        this.rozpocznij = 1;
        this.opcja = 2;
      }
      else if((this.aktualna>0)&&(this.rozpocznij>0))
      {
        this.opcja = 2;
      }
      else if((this.aktualna<0)&&(this.rozpocznij>0))
      {
        this.opcja = 2;
      }
      else if((this.aktualna<0)&&(this.rozpocznij<0))
      {
        this.licznikBlokad++;
        if(this.licznikBlokad==10)
        {
          this.opcja = 2;
          this.licznikBlokad=0;
        }
      }
      obiekt.wywolajZapytanie();
      //window.setTimeout("obiekt.wywolajZapytanie()", 1000);
    break;
  }
}//function AjaxBase::wypiszWynik()


