var request = null;
var timeoutId;

/* 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.
   Jakikolwiek pity parametr przedstawiony jako argument[4] bdzie stanowi
   dane dania POST przeznaczone 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 przekazane 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{
      /* Okrelenie funkcji, ktra bdzie obsugiwaa odpowied HTTP. */
      request.onreadystatechange=respHandle;
      request.open(reqType,url,bool);
      timeoutId = setTimeout(timesUp,10000);
      // 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 tej chwili aplikacja nie moe nawiza "+
         "poczenia z serwerem.. "+
         "Prosz wkrtce sprbowa ponownie.\n"+
         "Informacje o bdzie: "+errv.message);
   }
}
function timesUp(){
// Definicja funkcji znajduje si poniej...
