var request;
var queryString; // Zmienna bdzie przechowywaa dane wysane metod POST.

function sendData(){
   setQueryString();
   url="http://localhost:8080/parkerriver/s/json";
   httpRequest("POST",url,true);
}

// Obsuga zdarze dla obiektu XMLHttpRequest.
function handleJson(){
   if(request.readyState == 4){
      if(request.status == 200){
         var resp = request.responseText;
         var func = new Function("return "+resp);
         var objt = func();
         var div = document.getElementById("json");
         stylizeDiv(resp,div);
         div = document.getElementById("props");
         div.innerHTML="<h4>W obiekcie formularza...</h4>"+
            "<h5>Waciwoci</h5>firstname= "+
            objt.firstname +"<br />lastname="+
            objt.lastname+ "<br />gender="+
            objt.gender+ "<br />country="+
            objt.country;
      } else {
         alert("Wystpi problem z komunikacj midzy obiektem XMLHttpRequest, "+
            "a programem serwera.");
      }
   }// Koniec zewntrznej ptli if.
}

/* Inicjalizacja obiektu dania, ktry zosta ju skonstruowany. */
function initReq(reqType,url,bool){
   /* Okrelamy funkcj, ktra bdzie obsugiwaa odpowied HTTP. */
   request.onreadystatechange=handleJson;
   request.open(reqType,url,bool);
   request.setRequestHeader("Content-Type",
      "application/x-www-form-urlencoded; charset=iso-8859-2");
   request.send(queryString);
}

/* 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. */

function httpRequest(reqType,url,asynch){
   // Skrcono... Zobacz [Sposb 01] lub [Sposb 02].
}

function setQueryString(){
   queryString="";
   var frm = document.forms[0];
   var numberElements = frm.elements.length;
   for(var i = 0; i < numberElements; i++) {
      if(i < numberElements-1) {
         queryString += frm.elements[i].name+"="+
            encodeURIComponent(frm.elements[i].value)+"&";
      } else {
         queryString += frm.elements[i].name+"="+
            encodeURIComponent(frm.elements[i].value);
      }
   }
}

function stylizeDiv(bdyTxt,div){
   // Sprowadzamy do stanu wyjciowego zawarto DIV.
   div.innerHTML=" ";
   div.style.fontSize="1.2em";
   div.style.backgroundColor="yellow";
   div.appendChild(document.createTextNode(bdyTxt));
}
