var request = null;
/* Inicjalizacja obiektu żądania, który został już skonstruowany. */
function initReq(reqType,url,bool,respHandle){
    try{
        /* Określenie funkcji, która będzie obsługiwała odpowiedź HTTP. */
        request.onreadystatechange=respHandle;
        request.open(reqType,url,bool);
        // Jeżeli parametr reqType jest typu POST, wówczas
        // piąty argument funkcji stanowią dane przesyłane 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(
                "Aplikacja nie może w tej chwili nawiązać połączenia z serwerem. "+
                "Proszę wkrótce spróbować ponownie.\n"+
                "Szczegółowe informacje dotyczące błędu: "+errv.message);
    }
}
/* Funkcja opakowująca do skonstruowania obiektu żądania.
Parametry:
   reqType: typ żądania HTTP, na przykład GET lub POST.
   url: adres URL programu serwerowego.
   asynch: czy żądanie będzie wysłane asynchronicznie, czy też nie.
   respHandle: nazwa funkcji, która będzie obsługiwała odpowiedź.
   Każde pięć parametrów przedstawione przez arguments[4] stanowią dane
   żądania POST przeznaczonego do wysłania. */
function httpRequest(reqType,url,asynch,respHandle){
    // Przeglądarki 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 mało prawdopodobne, ale sprawdzamy, czy występują żądania null,
    // jeśli także obiekt ActiveXObject nie został zainicjalizowany.
    if(request)  {
        // Jeżeli parametr reqType jest typu POST, wówczas
        // piąty argument funkcji stanowią dane przesyłane 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("Używana przeglądarka nie pozwala na wykorzystanie "+
         "wszystkich funkcji tej aplikacji!");}
}

