// ajax.js
//
//
// 16.11.07 rs; formalne upravy indentacia atd.
// xx.xx.07 mi; prva verzia
// ---

var bustcachevar=1;           // bust potential caching of external pages after initial request? (1=yes, 0=no)
var loadedobjects="";
var rootdomain="http://"+window.location.hostname;
var bustcacheparameter="";

// mi; dorobeny http post, ktory tu chybal
//
function ajaxpost(url,containerid,postfunc,formname)
{
    var page_request = false;
    
    if (window.XMLHttpRequest) 
    {
      // if Mozilla, Safari etc
      page_request = new XMLHttpRequest();
    }  
    else if (window.ActiveXObject)
    { 
        // if IE
        try   {  page_request = new ActiveXObject("Msxml2.XMLHTTP");   } 
        catch (e) 
        {
          try { page_request = new ActiveXObject("Microsoft.XMLHTTP"); }
          catch (e) { }
        }
    }
    else
    { return false; }

    var params = "";
    var frm=document.getElementById(formname);

    if (frm)
    {
      // prejdeme inputy a selecty a pozbierame parametre pre post
      var child="";
      var frmobj=frm;
      frm=frmobj.getElementsByTagName("INPUT");
      
      for(i=0; i<frm.length; i++)
      {
        child=frm[i];
        if ((child.tagName=="INPUT") && (child.type!="radio")    && (child.type!="checkbox") && (child.disabled!=true)) { params=params+"&"+child.name+"="+child.value; };
        if ((child.tagName=="INPUT") && (child.type=="radio")    && (child.disabled!=true)) { if (child.checked==true) { params=params+"&"+child.name+"="+child.value; }; };
        if ((child.tagName=="INPUT") && (child.type=="checkbox") && (child.disabled!=true)) { if (child.checked==true) { params=params+"&"+child.name+"="+child.value; }; };
      };

      frm=frmobj.getElementsByTagName("SELECT");
      for(i=0; i<frm.length; i++)
      {
        child=frm[i];
        if ((child.tagName=="SELECT") && (child.disabled!=true)) 
        { 
          for (j=0; j<child.length; j++)
          {
            if (child.options[j].selected)
            {
              params=params+"&"+child.name+"="+child.options[j].value;
            };
          }; 
        };
      };

    };

    params=params+"&calltype=ajax";

    page_request.onreadystatechange=function()
    {
        var mojobjekt=document.getElementById(containerid);
        if ((url!='none')&&(mojobjekt.id!='cqlsyntaxchkbox2')) 
        { mojobjekt.innerHTML='<img src="loading.gif" alt="loading" title="loading" />' }  
        else 
        { mojobjekt.innerHTML='<img src="loading-small.gif" alt="loading" title="loading" />';}
        
        if (url=='none') {mojobjekt.innerHTML='no url'}
        try
        { loadpage(page_request, containerid, postfunc) } 
        catch (e) 
        { 
          // tato chybka nastava pri odchde z profilu tlacitkom cancel, nevadi to, tak ignorujeme 
        }
    }

    page_request.open("POST", url, true);

    // Send the proper header information along with the request
    page_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    page_request.setRequestHeader("Content-length", params.length);
    page_request.setRequestHeader("Connection", "close");
    page_request.send(params);
}


//
// parametre:
//  URL:          url, ktore vrati ajax content
//  containerid:  id "div-u", kam sa to vlozi
//  postfunc:     funkcia, ktora sa zavola 
function ajaxpage(url, containerid)
{
    var postfunc=arguments[2];
    var page_request = false;
    
    if (window.XMLHttpRequest) 
    {
      // if Mozilla, Safari etc
      page_request = new XMLHttpRequest();
    }  
    else if (window.ActiveXObject)
    { 
        // if IE
        try   {  page_request = new ActiveXObject("Msxml2.XMLHTTP");   } 
        catch (e) 
        {
          try { page_request = new ActiveXObject("Microsoft.XMLHTTP"); }
          catch (e) { }
        }
    }
    else
    { return false; }

    page_request.onreadystatechange=function()
    {
        var mojobjekt=document.getElementById(containerid);
        if ((url != 'none') && (mojobjekt.id != 'cqlsyntaxchkbox2')) 
        { mojobjekt.innerHTML='<img src="loading.gif" alt="loading" title="loading" />' } 
        else 
        { mojobjekt.innerHTML='<img src="loading-small.gif" alt="loading" title="loading" />';}
        
        if (url=='none') {mojobjekt.innerHTML='no url'}
        
        try { loadpage(page_request, containerid, postfunc) } 
        // tato chybka nastava pri odchode z profilu tlacitkom cancel, nevadi to, tak ignorujeme
        catch (e) {  }
    }

    // if bust caching of external page
    if (bustcachevar) 
    {
      var t=new Date(),ti=t.getTime();
      bustcacheparameter=(url.indexOf("?")!=-1) ? "&"+ti : "?"+ti;
    }
    
    page_request.open('GET', url+bustcacheparameter, true)
    page_request.send(null)
}

function loadpage(page_request, containerid, postfunc)
{
  if ((page_request.readyState == 4) && ((page_request.status==200) || window.location.href.indexOf("http")==-1))
  {
   //alert(page_request.responseText);
   
   var cont=document.getElementById(containerid);
   //alert(cont.innerHTML);
   
   // toto je vyborne na debug ajax requestov
   //alert(postfunc+' - '+containerid+' - '+page_request.status+' - '+page_request.readyState+' - '+window.location.href.indexOf("http")+" - "+page_request.responseText);
   try { cont.innerHTML=page_request.responseText;   }
   catch (e)
   { 
     // tu nastava tazka chvila exploreru: error: unknown runtime exception .... ???? toto je cesta okolo
     //alert(e.name+": "+e.message);
     var dummydiv = document.createElement('div');
     dummydiv.innerHTML = page_request.responseText;
     cont.appendChild(dummydiv); 
     cont.removeChild(cont.firstChild);     
   };

  
   // cont.innerHTML="data loaded"
   if ((postfunc != '') || (postfunc != null) || (postfunc != 'undefined')) 
   { 
      eval(postfunc);
   };
  };
}

function loadobjs()
{
    if (!document.getElementById) return;
    
    for (i=0; i<arguments.length; i++)
    {
        var file=arguments[i];
        var fileref="";
        
        // Check to see if this object has not already been added to page before proceeding
        if (loadedobjects.indexOf(file) == -1)
        { 
            if (file.indexOf(".js") != -1)
            { 
                // If object is a js file
                fileref=document.createElement('script')
                fileref.setAttribute("type","text/javascript");
                fileref.setAttribute("src", file);
            }
            else if (file.indexOf(".css") != -1)
            { 
                // If object is a css file
                fileref=document.createElement("link")
                fileref.setAttribute("rel", "stylesheet");
                fileref.setAttribute("type", "text/css");
                fileref.setAttribute("href", file);
            }
        }
        
        if (fileref != "")
        {
            document.getElementsByTagName("head").item(0).appendChild(fileref);
            // Remember this object as being already added to page
            loadedobjects+=file+" "; 
        }
    }
}

function ajaxcombo(selectobjID, loadarea)
{
    var selectobj=document.getElementById ? document.getElementById(selectobjID) : "";
    
    if (selectobj!="" && selectobj.options[selectobj.selectedIndex].value!="")
    { 
       ajaxpage(selectobj.options[selectobj.selectedIndex].value, loadarea);  
    }
}
