  var activeLetter = 'a';

  addDOMLoadEvent = (function(){
    var load_events = [],
        load_timer,
        script,
        done,
        exec,
        old_onload,
        init = function () {
            done = true;
            clearInterval(load_timer);
            while (exec = load_events.shift())
                exec();

            if (script) script.onreadystatechange = '';
        };

    return function (func) {
        if (done) return func();

        if (!load_events[0]) {
            if (document.addEventListener)
                document.addEventListener("DOMContentLoaded", init, false);

            // for Internet Explorer
            /*@cc_on @*/
            /*@if (@_win32)
                document.write("<script id=__ie_onload defer src=//0><\/scr"+"ipt>");
                script = document.getElementById("__ie_onload");
                script.onreadystatechange = function() {
                    if (this.readyState == "complete")
                        init(); // call the onload handler
                };
            /*@end @*/

            // for Safari
            if (/WebKit/i.test(navigator.userAgent)) { // sniff
                load_timer = setInterval(function() {
                    if (/loaded|complete/.test(document.readyState))
                        init(); // call the onload handler
                }, 10);
            }

            old_onload = window.onload;
            window.onload = function() {
                init();
                if (old_onload) old_onload();
            };
        }

        load_events.push(func);
    }
  })();

 function sendRequest (url,callback,postData)
  {
	  var req = createXMLHTTPObject ();
	  if (!req) return;
	  var method = (postData) ? "POST" : "GET";
	  req.open(method,url,true);
	  req.setRequestHeader ('User-Agent','XMLHTTP/1.0');
	  if (postData)
	   {
		   req.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded; charset=utf-8;");
    }
  	req.onreadystatechange = function ()
    {
	   	if (req.readyState != 4) return;
		   if (req.statusText != "OK")	return;
		   callback(req);
  	 }
  	if (req.readyState == 4) return;
	   req.send(postData);
  }

 function XMLHttpFactories ()
  {
	  return [function () {return new XMLHttpRequest()},
		         function () {return new ActiveXObject("Msxml2.XMLHTTP")},
		         function () {return new ActiveXObject("Msxml3.XMLHTTP")},
		         function () {return new ActiveXObject("Microsoft.XMLHTTP")}
	         ];
  }

 function createXMLHTTPObject ()
  {
	  var xmlhttp = false;
	  var factories = XMLHttpFactories();
	  for (var i=0;i<factories.length;i++)
    {
		   try { xmlhttp = factories[i](); }
		   catch (e) { continue; }
		   break;
	   }
	  return xmlhttp;
  }

 function get_list_byletter (letter)
  {
   if (!letter) return;

   var url = "/index.php";
   document.getElementById ('waiting').style.display = "inline";
   var letters_arr = document.getElementById ('lettersbox').getElementsByTagName ('span');
   for (i = 0; i < letters_arr.length; i++)
    if (letters_arr [i].id.indexOf ("item_") != -1)
  	  letters_arr [i].className = (letters_arr [i].id == "item_" + letter)?"item active":"item";

   listregen_companies (letter);
   listregen_towns (letter);
   activeLetter = letter;

   sendRequest (url, function (xmlHttp) {
                                         if (xmlHttp.responseText)
                                          document.getElementById ('list_partners').innerHTML = xmlHttp.responseText;

                                         document.getElementById ('waiting').style.display = "none";
                                        },
                "ajax=1&letter=" + letter + "&time=" + new Date ().getTime ()
               );
  }

 function get_filtered_list (company, town)
  {
   var url = "/index.php";
   document.getElementById ('waiting').style.display = "inline";

   sendRequest (url, function (xmlHttp) {
                                         if (xmlHttp.responseText)
                                          document.getElementById ('list_partners').innerHTML = xmlHttp.responseText;

                                         document.getElementById ('waiting').style.display = "none";
                                        },
                "ajax=1&filter=1&letter=" + activeLetter + "&company=" + company + "&town=" + town + "&time=" + new Date ().getTime ()
               );
  }

 function listregen_companies (letter)
  {
   if (!letter) return;

   var url = "/index.php";
   sendRequest (url, function (xmlHttp) {
                                         var input = document.getElementById ('filter_companies');
                                         var xml = xmlHttp.responseXML;
  		                                     var results = xml.getElementsByTagName('results')[0].childNodes;
                                         if (results && results.length)
                                          {
                                           while (input.childNodes.length)
                                            for (var c = 0; c < input.childNodes.length; c++)
                                             input.removeChild (input.childNodes [c]);

                                           var item       = document.createElement ('option');
                                           item.value     = 0;
                                           item.text      = "- Názov partnerskej spoločnosti -";
                                           item.innerText = "- Názov partnerskej spoločnosti -";
                                           input.appendChild (item);

                                           for (var i = 0; i < results.length; i++)
                                            {
                                             var item   = document.createElement ('option');
                                             item.value = results[i].getAttribute('id');
                                             item.text  = results[i].childNodes[0].nodeValue;
                                             item.innerText  = results[i].childNodes[0].nodeValue;
                                             input.appendChild (item);
                                            }
                                          }

                                        },
                "ajax=1&companies=1&letter=" + letter + "&time=" + new Date ().getTime ()
               );
  }

 function listregen_towns (letter)
  {
   if (!letter) return;

   var url = "/index.php";
   sendRequest (url, function (xmlHttp) {
                                         var input = document.getElementById ('filter_towns');
                                         var xml = xmlHttp.responseXML;
  		                                     var results = xml.getElementsByTagName('results')[0].childNodes;
                                         if (results && results.length)
                                          {
                                           while (input.childNodes.length)
                                            for (var c = 0; c < input.childNodes.length; c++)
                                             input.removeChild (input.childNodes [c]);

                                           var item       = document.createElement ('option');
                                           item.value     = 0;
                                           item.text      = "- Mesto -";
                                           item.innerText = "- Mesto -";
                                           input.appendChild (item);

                                           for (var i = 0; i < results.length; i++)
                                            {
                                             var item   = document.createElement ('option');
                                             item.value = results[i].getAttribute('id');
                                             item.text  = results[i].childNodes[0].nodeValue;
                                             item.innerText  = results[i].childNodes[0].nodeValue;
                                             input.appendChild (item);
                                            }
                                          }

                                        },
                "ajax=1&towns=1&letter=" + letter + "&time=" + new Date ().getTime ()
               );
  }

 function onPageLoaded ()
  {
   listregen_companies ("a");
   listregen_towns ("a");
  }

