var origOptions = null;
var request=null;
/* Ustawienie obsugi zdarze onclick dla listy 
select o nazwie "countries". */
window.onload=function(){
   var sel = document.getElementById("cts");
   var sel2 = document.getElementById("sts");
   if(sel != null){
      sel.onclick=function(){
         addCountries(this)};
   }
   origOptions = new Array();
   // Zachowanie oryginalnej listy select ze stanami, co
   // pozwoli na jej rekonstrukcj z oryginalnymi nazwami stanw 
   // i nowo dodanymi krajami.
   for(var i = 0; i < sel2.options.length; i++){
      origOptions[i]=sel2.options[i];
   }
}

function addCountries(obj){
   if (obj == null ) { return; }
   var url = "";
   var optsArray = obj.options;
   var val = "";
   for(var i=0; i < optsArray.length; i++){
      if(optsArray[i].selected) {
         val=optsArray[i].value; break;
      }

   }
   url = "http://www.parkerriver.com/s/selectl?countryType="+
      encodeURIComponent(val);
   httpRequest("GET",url,true);

}

// Obsuga zdarze dla obiektu XMLHttpRequest.
function handleResponse(){
   try{
      if(request.readyState == 4){
         if(request.status == 200){
            var resp =  request.responseText;
            if(resp != null){
               // Warto zwrotna jest tablic.
               var objt = eval(resp);
               addToSelect(objt);
            }
         } else {
            // Jeeli aplikacja nie jest dostpna, wtedy stan dania wynosi 503,
            // natomiast w przypadku bdu w aplikacji stan dania wynosi 500.
            alert(
               "Wystpi problem z komunikacj midzy obiektem XMLHttpRequest, "+
               "a programem serwera.");
         }
      }// Koniec zewntrznej ptli if.
   } catch (err) {
      alert("Serwer nie jest dostpny "+
         "dla tej aplikacji. Prosz wkrtce sprbowa"+
         " ponownie. \nBd: "+err.message);

   }
}
/* Pobranie tablicy wartoci cigu tekstowego (obj) i dodanie do 
listy select opcji dla kadej z wartoci. */
function addToSelect(obj){
   // Zawiera nazwy stanw USA.
   var _select = document.getElementById("sts");
   var el;
   // W pierwszej kolejnoci usunicie wszystkich opcji, poniewa element select 
   // mg doczy nowo dodane kraje z poprzednich klikni.
   while(_select.hasChildNodes()){
      for(var i = 0; i < _select.childNodes.length; i++){
         _select.removeChild(_select.firstChild);
      }
   }
   // Dodanie po prostu oryginalnych opcji  52 stany USA.
   for(var h=0; h < origOptions.length;h++) {
      _select.appendChild(origOptions[h]);
   }
   // obj jest tablic wartoci nowych opcji.
   for(var i=0; i < obj.length;i++) {
      el = document.createElement("option");
      el.appendChild(document.createTextNode(obj[i]));
      _select.insertBefore(el,_select.firstChild);
   }
}

/* Tworzenie i inicjalizacja obiektu dania, zobacz sposoby 01 i 02... */
