function lightBox(jazyk, nazevObjektu, userAgentString) { //definice objektu
  
  var own = this; //hodnota this se pry muze menit behem skriptu, takze bezpecnost
  
  //konstanty
  own.VYRAZY_PROHLIZECE = new Array(/opera/, /msie/, /firefox/, /firefox/, /chrome/);
  own.PROHLIZEC = userAgentString.toLowerCase();
  own.PRODLEVA = 10; //milisekund pro animaci - interval mezi kroky animace
  own.VYSKA_OVLADACIHO_PANELU = 60; //px
  own.POCATECNI_SIRKA = 1; //px
  own.POCATECNI_VYSKA = 50; //px
  own.KROK = 20; //px
  own.KROK_VELKY = 100; //px
  own.KROK_PRIRUSTEK = 50; //px
  own.MEZ_ANIMACE = 2; //sekundy, vzdy cela cisla, mez slouzi pro pomalejsi PC, po jejim dosahnuti se krok zvetsuje
  //globalni promenne
  own.nazevObjektu = nazevObjektu;
  own.jazyk = jazyk;
  own.fotografie = "";
  own.vyskaTelaDetailuGalerie = 0;
  own.otevrenoPoprve = true; //systemovejsi nez koukat, jestli se rozmer rovna nule
  own.sirka = own.POCATECNI_SIRKA; //pocatecni nastaveni
  own.vyska = own.POCATECNI_VYSKA; //pocatecni nastaveni
  own.novaSirka = 0;
  own.novaVyska = 0;
  own.startCas = 0;
  own.krok = own.KROK; //px pro animaci
  
  //animacni cast
  own.upravKrok = function() { //v pripade pomaleho pocitace zvetsuje krok, aby urychlila animaci
    var aktualniCas = new Date();
    var rozdil = aktualniCas.getSeconds() - own.startCas.getSeconds();
    if(rozdil >= own.MEZ_ANIMACE)
      if(own.krok == own.KROK)
        own.krok = own.KROK_VELKY;
      else
        own.krok += own.KROK_PRIRUSTEK;
    else
      own.krok = own.KROK;
  } 
  
  own.sbalLightbox = function() { //animace sbalovani
    if(own.vyskaTelaDetailuGalerie < own.krok) {  //koncove hodnoty dosazeny
      document.getElementById("detailGalerie").style.visibility = 'hidden';
      own.sirka = own.POCATECNI_SIRKA;
      own.vyska = own.POCATECNI_VYSKA;
      own.novaSirka = 0;
      own.novaVyska = 0;
      own.otevrenoPoprve = true;
    }
    else {
      own.vyskaTelaDetailuGalerie -= own.krok;
      //divku lze menit velikost pouze pres styl
      document.getElementById("teloDetailuGalerie").style.height = own.vyskaTelaDetailuGalerie+"px";
      own.upravKrok();
      window.setTimeout(own.nazevObjektu+".sbalLightbox()", own.PRODLEVA);  
    }
  }
  
  own.skrytDetailGalerie = function() { //skryje vsechny elementy, krome animacnich prvku a zacne animovat
    own.startCas = new Date();
    own.krok = own.KROK;
    document.getElementById("detailGalerie_fotografie").innerHTML = ""; //zmizeni obrazku
    own.vyskaTelaDetailuGalerie = own.vyska + own.VYSKA_OVLADACIHO_PANELU;
    document.getElementById("detailGalerie_tlacitkoZavrit").style.visibility = 'hidden';
    document.getElementById("detailGalerie_tlacitkaPosunu").style.visibility = 'hidden';
    document.getElementById("detailGalerie_popis").style.visibility = 'hidden';
    if(window.navigator.appName == "Microsoft Internet Explorer")
      {
        document.getElementById("obalTelaDetailuGalerie").style.background = "none";
        document.getElementById("obalTelaDetailuGalerie").style.filter = "none";    
      }
    else
      document.getElementById("obalTelaDetailuGalerie").style.backgroundImage = "none";
    window.setTimeout(own.nazevObjektu+".sbalLightbox()", 1);
  }
  own.zvetsi = function(rozbalenoNaVysku) { //animuje rozbalovani
  //napred rozbali prouzek 1px na vysku a pak do stran celou fotku
    if(rozbalenoNaVysku) {
      if(Math.abs(own.sirka-own.novaSirka) > own.krok) {
        if(own.sirka < own.novaSirka)
          own.sirka += own.krok;
      }
      else
        own.sirka = own.novaSirka;
      document.getElementById("detailGalerie_fotografie").style.width = own.sirka + "px";
    }
    else {
      if(Math.abs(own.vyska-own.novaVyska) > own.krok) {
        if(own.vyska < own.novaVyska)
          own.vyska += own.krok;
      }
      else {
        own.vyska = own.novaVyska;
        rozbalenoNaVysku = true;
      }
      document.getElementById("detailGalerie_fotografie").style.height = own.vyska + "px";
      document.getElementById("teloDetailuGalerie").style.height = (own.vyska + own.VYSKA_OVLADACIHO_PANELU) + "px";
    }  
    if((own.sirka < own.novaSirka) || (own.vyska < own.novaVyska)) { //jeste jsme nedosahli koncovych hodnot
      own.upravKrok();
      window.setTimeout(own.nazevObjektu+".zvetsi("+rozbalenoNaVysku+")", own.PRODLEVA);
    }
    else { //koncove hodnoty dosazeny
      //nastaveni velikosti
      var retezecVysky = document.getElementById("teloDetailuGalerie").style.height;
      var vyskaRamecku = parseInt(retezecVysky.substring(0, retezecVysky.indexOf('px')));
      var vyskaLightboxu = vyskaRamecku + document.documentElement.scrollTop + 10;
      var vyska = document.body.offsetHeight;
      if (vyska < parseInt(screen.availHeight))
        vyska = parseInt(screen.availHeight);
      if (vyska < vyskaLightboxu)
        vyska = vyskaLightboxu;
      document.getElementById("detailGalerie").style.height = vyska + "px";
      document.getElementById("obalTelaDetailuGalerie").style.height = vyska + "px";
      //vlozeni pozadi
      if(window.navigator.appName == "Microsoft Internet Explorer") {
          document.getElementById("obalTelaDetailuGalerie").style.background = "none";
          document.getElementById("obalTelaDetailuGalerie").style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, src='desimg/detailGalerie_pozadi_bile.png', sizingMethod='scale')";    
        }
      else
        document.getElementById("obalTelaDetailuGalerie").style.backgroundImage = "url(desimg/detailGalerie_pozadi_bile.png)";
      //zobrazeni obrazku
      document.getElementById("detailGalerie_fotografie").innerHTML = "<img id='fotografie_detail' src='"+own.fotografie+"' />";
      document.getElementById("fotografie_detail").width = own.sirka;
      document.getElementById("fotografie_detail").height = own.vyska;
      //zobrazeni ostatnich prvku
      document.getElementById("detailGalerie_tlacitkoZavrit").style.visibility = 'visible';
      document.getElementById("detailGalerie_tlacitkaPosunu").style.visibility = 'visible';
      document.getElementById("detailGalerie_popis").style.visibility = 'visible';
      own.otevrenoPoprve = false;
    }
  }
  
  own.upravaRozmeru = function() { //pri prechodu z jedne fotky na druhou
    //pri prechodu fotek plynula zmena velikosti
    if(Math.abs(own.sirka-own.novaSirka) > own.krok) {
      if(own.sirka < own.novaSirka)
        own.sirka += own.krok;
      else 
        own.sirka -= own.krok;
    }
    else
      own.sirka = own.novaSirka;
      
    if(Math.abs(own.vyska-own.novaVyska) > own.krok) {
      if(own.vyska < own.novaVyska)
        own.vyska += own.krok;
      else
        own.vyska -= own.krok;
    }
    else
      own.vyska = own.novaVyska; 
    
    document.getElementById("detailGalerie_fotografie").style.width = own.sirka + "px";
    document.getElementById("detailGalerie_fotografie").style.height = own.vyska + "px";
    document.getElementById("teloDetailuGalerie").style.height = (own.vyska + own.VYSKA_OVLADACIHO_PANELU) + "px";
    
    if((own.sirka != own.novaSirka) || (own.vyska != own.novaVyska)) { // jeste jsme nedosahli koncovych romeru
      own.upravKrok();
      window.setTimeout(own.nazevObjektu+".upravaRozmeru()", own.PRODLEVA);
    }
    else { //po dosazeni koncovych rozmeru 
      //zobrazeni obrazku
      document.getElementById("detailGalerie_fotografie").innerHTML = "<img id='fotografie_detail' src='"+own.fotografie+"' />";
      document.getElementById("fotografie_detail").width = own.sirka;
      document.getElementById("fotografie_detail").height = own.vyska;
    }
  }

  //datova cast
  own.vypisDetailGalerie = function(xmlHttp) { //cte data z XML a zacina animovat
    if (xmlHttp.readyState == 4) { // 4 znamená požadavek dokončen
      //alert(xmlHttp.responseText);
      own.fotografie = unescape(xmlHttp.responseXML.getElementsByTagName('fotografie')[0].firstChild.data);
      var nadpis = xmlHttp.responseXML.getElementsByTagName('nadpis')[0].firstChild.data;
      var idPredchozi = xmlHttp.responseXML.getElementsByTagName('idPredchozi')[0].firstChild.data;
      var idDalsi = xmlHttp.responseXML.getElementsByTagName('idDalsi')[0].firstChild.data;
      own.novaSirka = parseInt(xmlHttp.responseXML.getElementsByTagName('sirkaFotografie')[0].firstChild.data); //musime prevadet na int, aby fungovaly matematicke operace
      own.novaVyska = parseInt(xmlHttp.responseXML.getElementsByTagName('vyskaFotografie')[0].firstChild.data); //musime prevadet na int, aby fungovaly matematicke operace
  
      if (own.otevrenoPoprve) {
        own.startCas = new Date();
        own.krok = own.KROK;
        document.getElementById("detailGalerie_fotografie").style.width = own.sirka + "px";
        document.getElementById("detailGalerie_fotografie").style.height = own.vyska + "px";
        window.setTimeout(own.nazevObjektu+".zvetsi(false)", 1);
      }
      else {
        own.startCas = new Date();
        own.krok = own.KROK;
        document.getElementById("detailGalerie_fotografie").innerHTML = ""; //zmizeni obrazku
        document.getElementById("detailGalerie_fotografie").style.width = own.sirka + "px";
        document.getElementById("detailGalerie_fotografie").style.height = own.vyska + "px";
        window.setTimeout(own.nazevObjektu+".upravaRozmeru()", 1);
      }    
      
      document.getElementById("detailGalerie_popis").innerHTML = "<h1>"+nadpis+"</h1>";
      var hrefPredchozi = "&lt;&lt;";
      var hrefDalsi = "&gt;&gt;";
      if(idPredchozi != 0)
        hrefPredchozi = "<a href='javascript:"+own.nazevObjektu+".zobrazDetailGalerie("+idPredchozi+");'>"+hrefPredchozi+"</a>";
      if(idDalsi != 0)  
        hrefDalsi = "<a href='javascript:"+own.nazevObjektu+".zobrazDetailGalerie("+idDalsi+");'>"+hrefDalsi+"</a>";    
      document.getElementById("detailGalerie_tlacitkaPosunu").innerHTML = hrefPredchozi+"&nbsp;"+hrefDalsi;
      var zavrit;
      if (jazyk == 'cz')
        zavrit = 'Zavřít';
      else
        zavrit = 'Close';
      document.getElementById("detailGalerie_tlacitkoZavrit").innerHTML = '<a href="javascript:'+own.nazevObjektu+'.skrytDetailGalerie()"><img src="./desimg/tlacitkoZavrit.gif" alt="'+zavrit+'" title="'+zavrit+'" height="30" width="28" /></a><br /><a href="javascript:'+own.nazevObjektu+'.skrytDetailGalerie()">'+zavrit+'</a>';
    }
  }

  own.ajax_sendRequest = function(obsluha, metoda, url) { //vytvori spojeni a spusti fci pro cteni XML
    var xmlHttp = (window.XMLHttpRequest ? new XMLHttpRequest : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false)); 
    if (!xmlHttp) {
      return false;
    }  
    xmlHttp.open(metoda, url); //otevře spojení
    xmlHttp.onreadystatechange = function() { 
      obsluha(xmlHttp); 
    };  
    xmlHttp.send(''); //odešle požadavek na server
    return true; 
  }

  own.zobrazDetailGalerie = function(idDetail) { //hlavni fce volana zvenku
    var povolenyProhlizec = false;
    for (i = 0; i < own.VYRAZY_PROHLIZECE.length; i++) {
      if (own.PROHLIZEC.search(own.VYRAZY_PROHLIZECE[i]) != -1) {
        povolenyProhlizec = true;
        break;
      }        
    }
    if (!povolenyProhlizec && own.otevrenoPoprve)
      return true;
    document.getElementById("detailGalerie").style.visibility = 'visible';
    document.getElementById("detailGalerie").style.width = document.documentElement.clientWidth + "px";
    document.getElementById("obalTelaDetailuGalerie").style.width = document.documentElement.clientWidth + "px";
    document.getElementById("teloDetailuGalerie").style.marginTop = (document.documentElement.scrollTop+10)+"px";
  	own.ajax_sendRequest(own.vypisDetailGalerie, 'GET', 'ajax_vratData.php?idDetail='+idDetail+'&jazyk='+own.jazyk+'&zdroj='+own.nazevObjektu+'&rnd='+Math.random());
    if (own.otevrenoPoprve)
  	  return false;
  }
  
}
