var request = null;
/* Funkcja opakowujca do skonstruowania obiektu dania.
Parametry:
   reqType: typ dania HTTP, na przykad GET lub POST.
   url: adres URL programu serwerowego.
   asynch: czy danie bdzie wysane asynchronicznie, czy te nie.
   respHandle: nazwa funkcji, ktra bdzie obsugiwaa odpowied.
   Kade pi parametrw przedstawione przez arguments[4] stanowi dane
   dania POST przeznaczonego do wysania. */
function httpRequest(reqType,url,asynch,respHandle){
   // Przegldarki na bazie Mozilli.
   if(window.XMLHttpRequest){
      request = new XMLHttpRequest();
   } else if (window.ActiveXObject){
      request=new ActiveXObject("Msxml2.XMLHTTP");
         if (! request){
            request=new ActiveXObject("Microsoft.XMLHTTP");
         }
   }
   // Bardzo mao prawdopodobne, ale sprawdzamy, czy wystpuj dania null,
   // jeli take obiekt ActiveXObject nie zosta zainicjalizowany.
   if(request) {
      // Jeeli parametr reqType jest typu POST, wwczas
      // pity argument funkcji stanowi dane przesyane metod POST.
      if(reqType.toLowerCase() != "post") {
         initReq(reqType,url,asynch,respHandle);
      } else {
         // Dane przekazywane metod POST.
         var args = arguments[4];
         if(args != null && args.length > 0){
            initReq(reqType,url,asynch,respHandle,args);
         }
      }
   } else {
      alert("Uywana przegldarka nie pozwala na wykorzystanie "+
         "wszystkich funkcji tej aplikacji!");
   }
}

/* Inicjalizacja obiektu dania, ktry zosta ju skonstruowany. */
function initReq(reqType,url,bool,respHandle){
   try{
      /* Okrelamy funkcj, ktra bdzie obsugiwaa odpowied HTTP */
      request.onreadystatechange=respHandle;
      request.open(reqType,url,bool);
      // Jeeli parametr reqType jest typu POST, wwczas
      // pity argument funkcji stanowi dane przesyane metod POST.
      if(reqType.toLowerCase() == "post") {
         request.setRequestHeader("Content-Type",
            "application/x-www-form-urlencoded; charset=iso-8859-2");
         request.send(arguments[4]);
      } else {
         request.send(null);
      }
} catch (errv) {
   alert(
      "W tym momemcie aplikacja "+
      "nie moe poczy si z serwerem. "+
      "Prosz sprbowa ponownie w cigu kilku sekund.\n"+
      "Szczegowe informacje o bdzie: "+errv.message);
   }
}
