
function createXmlHttpRequestObject()   {
    
  // zde bude reference na objekt XMLHttpRequest
  var xmlHttp;
  
  // toto by melo fungovat pro vsechny prihlizece mimo IE6 a starsi
  try   {
  
    // pokusi se vytvorit XMLHttpRequest objekt
    xmlHttp = new XMLHttpRequest();
  
  }
  catch(e)  {
  
    // predpoklada IE6 nebo starsi
    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                    "MSXML2.XMLHTTP.5.0",
                                    "MSXML2.XMLHTTP.4.0",
                                    "MSXML2.XMLHTTP.3.0",
                                    "MSXML2.XMLHTTP",
                                    "Microsoft.XMLHTTP");
                                    
    // vyzkousej vsechna prog id, dokud nektere nebude funkcni
    for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)    {
      
      try   { 
        
        // pokusi se vytvorit objekt XMLHttpRequest
        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
        
      } 
      catch (e) {} // ignoruj mozne chyby
      
    }
    
  }
  
  // vrati vytvoreny objekt nebo vrati chybu
  if (!xmlHttp)
    window.alert("Error creating the XMLHttpRequest object.");
  else 
    return xmlHttp;
    
}
    
    
    
    var xmlHttpCalendar = createXmlHttpRequestObject();
    

    

function vypisVysledek(string, elementDokumentu)   {
    
    // ziskani reference na levy sloupec
    var oElementDokumentu = document.getElementById(elementDokumentu);
    
    if(oElementDokumentu.style.visibility == "hidden")
        oElementDokumentu.style.visibility = "visible";
    
    if(oElementDokumentu.style.display == "none")
        oElementDokumentu.style.display = "block";
    
    // vystup zformatovaneho vysledku od serveru do leveho sloupce
    oElementDokumentu.innerHTML = string;
    
}
    

function skryjDiv(elementDokumentu)    {
    
    // ziskani reference na element
    var oElementDokumentu = document.getElementById(elementDokumentu);
    
    if(oElementDokumentu.style.visibility == "visible")
        oElementDokumentu.style.visibility = "hidden";
    
    if(oElementDokumentu.style.display == "block")
        oElementDokumentu.style.display = "none";
    
    
}

function nacitani()  {
   
   var loading = '<div style="width: 272px; height: 214px; #height: 213px; background-color: white; text-align: center;"><img src="/design/loading.gif" style="width: 200px; height: 200px; background-color: white;" /></div>';
   
   vypisVysledek(loading, 'calendar');
   
}


function checkCalendar(accomId, language, mesic, rok)   {
    
    nacitani();
    
    // pokracuje pouze tehdy, neni-li xmlHttpCalendar prazdne
    if (xmlHttpCalendar)    {      
        
        var pozadavek = "accommodation_id=" + accomId + "&language=" + language + "&mesic=" + mesic + "&rok=" + rok;
        
        // pokusi se o spojeni na server
        try {
        
            // pokracuje pouze, neni-li objekt XmlHttpRequest zaneprazdnen
            if (xmlHttpCalendar.readyState == 4 || xmlHttpCalendar.readyState == 0) {
                
                // odesle pozadavek na server pro zobrazeni obsahu sekce
                xmlHttpCalendar.open("POST", "/include/ajax/calendar.php", true);
                xmlHttpCalendar.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                xmlHttpCalendar.onreadystatechange = getCalendar;
                xmlHttpCalendar.send(pozadavek);
                
            }

        }
        catch (e)   {
        
            // pokud pripojeni na server selze, zobrazi chybu
            alert(e.toString());
        
        }
        
    }

}

function getCalendar()   {
    
    // je-li readyState 4, muzeme precist odpoved serveru
    if (xmlHttpCalendar.readyState == 4)    {
    
        // pokracuj pouze, je-li stav HTTP "OK"
        if (xmlHttpCalendar.status == 200)  {
       
            try {
            
                // read the response from the server
                vypisCalendar();
                
            }
            catch(e)    {
            
                // zobraz chybovou zpravu
                alert(e.toString());
                
            }
        }
        else    {
        
            // zobraz chybovou zpravu
            alert(xmlHttpCalendar.statusText);
            
        }
    
    }

    
}

function vypisCalendar() {

    // ziska odpoved serveru
    var odpoved = xmlHttpCalendar.responseText;
    //alert(odpoved);
    
    // chyba serveru ?
    if (odpoved.indexOf("ERRNO") >= 0 || odpoved.indexOf("error:") >= 0 || odpoved.length == 0)
        throw(odpoved.length == 0 ? "Server error." : odpoved);
        
    vypisVysledek(odpoved, 'calendar');
    
}
