function lightBox(jazyk, nazevObjektu, userAgentString, root_webu) { //definice objektu
  
  var own = this; //hodnota this se pry muze menit behem skriptu, takze bezpecnost
  
  //konstanty
  own.VYRAZY_PROHLIZECE = new Array(/opera/, /msie/, /firefox/, /chrome/);
  own.PROHLIZEC = userAgentString.toLowerCase();
  own.PRODLEVA = 20; //milisekund pro animaci - interval mezi kroky animace
  own.VYSKA_BOXU = 550; //px
  own.ODSAZENI_SHORA = 20; //px
  own.MEZ_ANIMACE = 500; //milisekundy - delka animacniho efektu
  own.ROOT_WEBU = root_webu; //kvuli novym adresam
  //globalni promenne
  own.nazevObjektu = nazevObjektu;
  own.jazyk = jazyk;
  own.idFotografie = 0;
  own.fotografie = "";
  own.vyska = 0; //pocatecni nastaveni
  own.startCas = 0;
  own.otevrenoPoprve = true; //systemovejsi nez koukat, jestli se rozmer rovna nule
  //lupa
  own.pocatecniPoziceFotky = new Array(0, 0);
  own.pocatecniPoziceCursoru = new Array(0, 0);
  own.posunOriginalu = false; //zakazeme lupu
  own.puvodniFotografie = "";
  own.souborFotografie = "";
  own.sirkaHlavniFotografie = "";
  own.vyskaHlavniFotografie = "";
  own.sirkaObaluFotky = 685;
  own.vyskaObaluFotky = 451;
/* -------------------------------------------------------------------------------------------------------- */
  own.vratPozici = function (zvetsovat) {
    var aktualniCas = new Date();
    var rozdil = aktualniCas.getTime() - own.startCas.getTime();
    var procenta = Math.round(rozdil / (own.MEZ_ANIMACE / 100));
    if (zvetsovat)
      return (procenta > 100 ? 100 : procenta);
    else
      return ((100 - procenta) < 0 ? 0 : (100 - procenta));
  }
/* -------------------------------------------------------------------------------------------------------- */
  own.prolnoutPrvek = function (rozsvecet, prvek, pokracovani) {
    var viditelnost = own.vratPozici(rozsvecet);
    if (rozsvecet)
      document.getElementById(prvek).style.visibility = 'visible';
    else
      if(viditelnost == 0)
        document.getElementById(prvek).style.visibility = 'hidden';
    if(window.navigator.appName == "Microsoft Internet Explorer") 
      document.getElementById(prvek).style.filter = "alpha(opacity="+viditelnost+")";
    else
      document.getElementById(prvek).style.opacity = (viditelnost / 100);
    if((rozsvecet && viditelnost < 100) || (!rozsvecet && viditelnost > 0))
      window.setTimeout(own.nazevObjektu+".prolnoutPrvek("+rozsvecet+", '"+prvek+"' "+", '"+pokracovani+"')", own.PRODLEVA);
    else //dosazeno koncovych hodnot
      window.setTimeout(own.nazevObjektu+"."+pokracovani, 1);
  }
/* -------------------------------------------------------------------------------------------------------- */
  own.animujSbaleni = function() { //animace sbalovani
    var procenta = own.vratPozici(false);
    own.vyska = (own.VYSKA_BOXU / 100) * procenta;
    document.getElementById("obalTelaDetailuGalerie").style.height = own.vyska + "px";
    if(procenta > 0) //jeste jsme nedosahli koncovych hodnot
      window.setTimeout(own.nazevObjektu+".animujSbaleni()", own.PRODLEVA);
    else //dosazeno koncovych hodnot
      window.setTimeout(own.nazevObjektu+".skrytDetailGalerie('C')", 1);
  }
/* -------------------------------------------------------------------------------------------------------- */
  own.animujRozbaleni = function() {
    var procenta = own.vratPozici(true);
    own.vyska = (own.VYSKA_BOXU / 100) * procenta;
    document.getElementById("obalTelaDetailuGalerie").style.height = own.vyska + "px";
    if(procenta < 100) //jeste jsme nedosahli koncovych hodnot
      window.setTimeout(own.nazevObjektu+".animujRozbaleni()", own.PRODLEVA);
    else //dosazeno koncovych hodnot
      own.rozbalLightBox("B");
  }
/* -------------------------------------------------------------------------------------------------------- */
  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.rozsvitFotku = function(prvek, sekce) {
    if (sekce == 'A') {
      own.startCas = new Date();
      own.prolnoutPrvek(true, prvek, "rozsvitFotku(\""+prvek+"\", \"B\")");
    }
    if (sekce == 'B') {
      return true;
    }
  }
/* -------------------------------------------------------------------------------------------------------- */
  own.zhasniFotku = function(prvek, sekce) {
    if (sekce == 'A') {
      own.startCas = new Date();
      own.prolnoutPrvek(false, prvek, "zhasniFotku(\""+prvek+"\", \"B\")");
    }
    if (sekce == 'B') {
      own.zobrazDetail(null);
    }
  }
/* -------------------------------------------------------------------------------------------------------- */
  own.zobrazDetail = function(xmlHttp) { //nacte data a zobrazi je vcetne fotky
    var aktualniStrankaHtml = document.getElementById("detailGalerie_aktualniStranka").innerHTML;
    if (xmlHttp == null) {
      own.ajax_sendRequest(own.zobrazDetail, 'GET', own.ROOT_WEBU+'ajax_vratData_galerista.php?idFotografie='+own.idFotografie+'&jazyk='+own.jazyk+'&zdroj='+own.nazevObjektu+'&stranka='+aktualniStrankaHtml+'&rnd='+Math.random());
    }
    else
    if (xmlHttp.readyState == 4) { // 4 znamená požadavek dokončen
      //alert(xmlHttp.responseText);
      own.fotografie = unescape(xmlHttp.responseXML.getElementsByTagName('fotografie')[0].firstChild.data);
      own.souborFotografie = unescape(xmlHttp.responseXML.getElementsByTagName('souborFotografie')[0].firstChild.data);
      own.sirkaHlavniFotografie = xmlHttp.responseXML.getElementsByTagName('sirkaHlavniFotografie')[0].firstChild.data;
      own.vyskaHlavniFotografie = xmlHttp.responseXML.getElementsByTagName('vyskaHlavniFotografie')[0].firstChild.data;
      var popis = 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;
      var dataMiniatur = unescape(xmlHttp.responseXML.getElementsByTagName('dataMiniatur')[0].firstChild.data);
      var aktualniStranka = xmlHttp.responseXML.getElementsByTagName('aktualniStranka')[0].firstChild.data;
      var aktivniFoto = xmlHttp.responseXML.getElementsByTagName('aktivniFoto')[0].firstChild.data;
      var vypsanyPocetMiniatur = xmlHttp.responseXML.getElementsByTagName('vypsanyPocetMiniatur')[0].firstChild.data;
      document.getElementById("detailGalerie_popisOdstavec").innerHTML = popis;
      if(idPredchozi == 0)
        document.getElementById("detailGalerie_tlacitkoLeve").innerHTML = "";
      else
        document.getElementById("detailGalerie_tlacitkoLeve").innerHTML = "<a href='.' onclick='return "+own.nazevObjektu+".zobrazDetailGalerie("+idPredchozi+");'><img src='"+own.ROOT_WEBU+"desimg/tlacitko_leve.gif' width='8' height='8' title='Doleva' alt='Doleva'/></a>";
      if(idDalsi == 0)
        document.getElementById("detailGalerie_tlacitkoPrave").innerHTML = "";
      else
        document.getElementById("detailGalerie_tlacitkoPrave").innerHTML = "<a href='.' onclick='return "+own.nazevObjektu+".zobrazDetailGalerie("+idDalsi+");'><img src='"+own.ROOT_WEBU+"desimg/tlacitko_prave.gif' width='8' height='8' title='Doprave' alt='Doprava'/></a>";

      if (aktualniStrankaHtml != aktualniStranka) {
        document.getElementById("detailGalerie_miniatury").innerHTML = dataMiniatur;
        document.getElementById("detailGalerie_aktualniStrankaVypis").innerHTML = 'Str. '+aktualniStranka;
        document.getElementById("detailGalerie_aktualniStranka").innerHTML = aktualniStranka;
      }
      
      for (i = 1; i <= vypsanyPocetMiniatur; i++)
        document.getElementById("lb_miniatura_"+i).style.borderColor = '#E5E5E5';
      document.getElementById("lb_miniatura_"+aktivniFoto).style.borderColor = '#D1420C';
      
      document.getElementById("fotografie_detail").src = own.fotografie;
      document.getElementById("fotografie_detail").alt = popis.replace(/&nbsp;/, '');
      document.getElementById("fotografie_detail").title = popis.replace(/&nbsp;/, '');
      document.getElementById("fotografie_detail").onload = function() {own.rozsvitFotku('fotografie_detail', 'A')};
      document.getElementById("fotografie_detail").onclick = function() {own.zapnoutLupu()};
    }
  }
/* -------------------------------------------------------------------------------------------------------- */
/* --- ovladani lupy --- */
/* -------------------------------------------------------------------------------------------------------- */
  own.zapnoutLupu = function() {
    var bunka = document.getElementById("detailGalerie_fotografie");
    own.puvodniFotografie = bunka.innerHTML;
    bunka.innerHTML = '<div id="obalOriginalFotografie"><img id="originalFotografie" src="'+own.ROOT_WEBU+own.souborFotografie+'" width="'+own.sirkaHlavniFotografie+'" height="'+own.vyskaHlavniFotografie+'" /></div>';
    bunka.style.backgroundImage = "url()";
    var fotka = document.getElementById("originalFotografie");
    if (window.navigator.appName == "Microsoft Internet Explorer") {
      fotka.onclick = function() {own.lupaClick()};
      fotka.onmousemove = function() {own.lupaMouseMove()};
    }
    else {
      fotka.addEventListener("click", own.lupaClick, false);
      fotka.addEventListener("mousemove", own.lupaMouseMove, false);
    }
    fotka.style.left = Math.floor((own.sirkaObaluFotky - parseInt(own.sirkaHlavniFotografie))/2)+'px';
    fotka.style.top = Math.floor((own.vyskaObaluFotky - parseInt(own.vyskaHlavniFotografie))/2)+'px';
    document.getElementById("detailGalerie_ovladaniLupy").innerHTML = '<a href="." title="Stop zoom" onclick="'+own.nazevObjektu+'.vypnoutLupu(); return false;">Původní velikost</a><br />';
    document.getElementById("detailGalerie_ovladaniLupy").innerHTML += '<p class="napoveda">Nápověda: pro posun fotografií klikněte jednou pro aktivaci posunu, podruhé pro deaktivaci posunu.</p>';
  }
/* -------------------------------------------------------------------------------------------------------- */
own.vratPoziciObjektu = function(obj) { //scita pozici X a Y
  var curleft = 0;
  var curtop = 0;
  if (obj.offsetParent)
    while(1) {
      curleft += obj.offsetLeft;
      curtop += obj.offsetTop;
      if(!obj.offsetParent)
        break;
      obj = obj.offsetParent;
    }
  else if(obj.x) {
    curleft += obj.x;
    curtop += obj.y;
  }
  return new Array(curleft, curtop);
}
/* -------------------------------------------------------------------------------------------------------- */
  own.vratPoziciCursoru = function(event) {
    var x,y;
    //zjisteni objektu udalosti
    if (!event) //IE
      var event = window.event;
    //spocitani souradnic
    if (event.pageX || event.pageY) {
      x = event.pageX;
      y = event.pageY;
    }
    else if (event.clientX || event.clientY) { //IE
      x = event.x;
      y = event.y;
    }
    return new Array(x,y);
  }
/* -------------------------------------------------------------------------------------------------------- */
  own.lupaClick = function(event) {
    var fotka = document.getElementById("originalFotografie");
    if (own.posunOriginalu) {
      own.posunOriginalu = false;
      fotka.style.cursor = "pointer";
    }
    else {
      own.posunOriginalu = true;
      own.pocatecniPoziceFotky = own.vratPoziciObjektu(fotka);
      var obalFotky = document.getElementById("obalOriginalFotografie");
      var poziceObaluFotky = own.vratPoziciObjektu(obalFotky);
      own.pocatecniPoziceFotky[0] = own.pocatecniPoziceFotky[0] - poziceObaluFotky[0];
      own.pocatecniPoziceFotky[1] = own.pocatecniPoziceFotky[1] - poziceObaluFotky[1];
      own.pocatecniPoziceCursoru = own.vratPoziciCursoru(event);
      fotka.style.cursor = "move";
    }
  }
/* -------------------------------------------------------------------------------------------------------- */
  own.lupaMouseMove = function(event) {
    if (own.posunOriginalu) {
      var aktualniCursor = own.vratPoziciCursoru(event);
      var fotka = document.getElementById("originalFotografie");
      var rozdilCursoru = new Array((own.pocatecniPoziceCursoru[0] - aktualniCursor[0]), (own.pocatecniPoziceCursoru[1] - aktualniCursor[1]));
      var novaPoziceFotky = new Array((own.pocatecniPoziceFotky[0] - rozdilCursoru[0]), (own.pocatecniPoziceFotky[1] - rozdilCursoru[1]));

      if (   (novaPoziceFotky[0] <= 0)
          && ((novaPoziceFotky[0] + parseInt(own.sirkaHlavniFotografie)) >= own.sirkaObaluFotky)
         )
        fotka.style.left = novaPoziceFotky[0]+'px';
      if (   (novaPoziceFotky[1] <= 0)
          && ((novaPoziceFotky[1] + parseInt(own.vyskaHlavniFotografie)) >= own.vyskaObaluFotky)
         )
        fotka.style.top = novaPoziceFotky[1]+'px';
    }
  }
/* -------------------------------------------------------------------------------------------------------- */
  own.vypnoutLupu = function() { //vraceni do puvodniho stavu po lupe
    if (own.puvodniFotografie != '') {
      var fotka = document.getElementById("originalFotografie");
      own.posunOriginalu = false;
      fotka.style.cursor = "pointer";
      var bunka = document.getElementById("detailGalerie_fotografie");
      bunka.innerHTML = own.puvodniFotografie;
      own.puvodniFotografie = '';
      bunka.style.backgroundImage = "url("+own.ROOT_WEBU+"desimg/loader.gif)";
      document.getElementById("fotografie_detail").onclick = function() {own.zapnoutLupu()};
      document.getElementById("detailGalerie_ovladaniLupy").innerHTML = '<a href="." title="Start zoom" onclick="'+own.nazevObjektu+'.zapnoutLupu(); return false;">Zapnout lupu</a>';
    }
  }
/* -------------------------------------------------------------------------------------------------------- */
/* --- eof ovladani lupy --- */
/* -------------------------------------------------------------------------------------------------------- */
  own.rozbalLightBox = function(sekce) {
    if (sekce == 'A') {
      document.getElementById("detailGalerie").style.visibility = 'visible';
      document.getElementById("detailGalerie").style.width = document.body.clientWidth + "px";
      document.getElementById("detailGalerie").style.height = "10000px";
      document.getElementById("obalTelaDetailuGalerie").style.height = "0px";
      document.getElementById("obalTelaDetailuGalerie").style.visibility = 'visible';
      document.getElementById("obalTelaDetailuGalerie").style.marginTop = (document.documentElement.scrollTop+own.ODSAZENI_SHORA)+"px";
      document.getElementById("detailGalerie_tlacitkoZavrit").innerHTML = '<div><a href="javascript:'+own.nazevObjektu+'.skrytDetailGalerie(\'A\')"><img src="'+own.ROOT_WEBU+'desimg/tlacitko_zavrit.gif" alt="Zavřít" title="Zavřít" width="13" height="9" /></a></div>';
      document.getElementById("detailGalerie_miniatury").innerHTML = '';
      own.startCas = new Date();
      own.otevrenoPoprve = false;
      own.animujRozbaleni();
    }
    if (sekce == 'B') {
      //vlozeni pozadi
      if (!((window.navigator.appName == "Microsoft Internet Explorer") && (window.navigator.appVersion.search(/MSIE 6/) != -1))) //identifikace IE 6
        document.getElementById("detailGalerie").style.backgroundImage = "url("+own.ROOT_WEBU+"desimg/detailGalerie_pozadi.png)";
      //zobrazeni prvku
      document.getElementById("detailGalerie_tabulka").style.visibility = 'visible';
      document.getElementById("detailGalerie_tlacitkoLeve").style.visibility = 'visible';
      document.getElementById("detailGalerie_tlacitkoPrave").style.visibility = 'visible';
      document.getElementById("detailGalerie_popisOdstavec").style.visibility = 'visible';
      document.getElementById("detailGalerie_aktualniStrankaVypis").style.visibility = 'visible';
      own.zobrazDetail(null);
    }
  }
/* -------------------------------------------------------------------------------------------------------- */
  own.skrytDetailGalerie = function(sekce) {
    if (sekce == 'A') {
      own.startCas = new Date();
      own.skrytDetailGalerie("B");
      //own.prolnoutPrvek(false, 'detailGalerie_ovladaciPanel', 'skrytDetailGalerie(\"B\")'); //ponechat - nekde neni panel
    }
    if (sekce == 'B') {
      //skryti prvku
      document.getElementById("detailGalerie_tabulka").style.visibility = 'hidden';
      own.vypnoutLupu();
      document.getElementById("fotografie_detail").src = "";
      document.getElementById("fotografie_detail").style.visibility = 'hidden';
      document.getElementById("detailGalerie_tlacitkoLeve").style.visibility = 'hidden';
      document.getElementById("detailGalerie_tlacitkoPrave").style.visibility = 'hidden';
      document.getElementById("detailGalerie_popisOdstavec").style.visibility = 'hidden';
      document.getElementById("detailGalerie_aktualniStrankaVypis").style.visibility = 'hidden';
      //odstraneni pozadi
      document.getElementById("detailGalerie").style.backgroundImage = "none";
      //spusteni animace sbaleni
      own.animujSbaleni();
    }
    if (sekce == 'C') {
      //skryti animacnich prvku
      document.getElementById("detailGalerie").style.height = "0px";
      document.getElementById("detailGalerie").style.visibility = 'hidden';
      document.getElementById("obalTelaDetailuGalerie").style.visibility = 'hidden';
      own.otevrenoPoprve = true;
      document.getElementById("detailGalerie_miniatury").innerHTML = '';
      document.getElementById("detailGalerie_aktualniStrankaVypis").innerHTML = '';
      document.getElementById("detailGalerie_aktualniStranka").innerHTML = '0';
    }
  }
/* -------------------------------------------------------------------------------------------------------- */
  own.zobrazDetailGalerie = function(idFotografie) { //hlavni fce volana zvenku
    own.idFotografie = idFotografie;
    own.vypnoutLupu(); //pri prichodu z jine miniatury ci stranky
    //kontrola kompatibility prohlizece
    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)
      return true;
    if (own.otevrenoPoprve) {
      own.rozbalLightBox('A');
      return false;
    }
    else {
      own.zhasniFotku('fotografie_detail', 'A');
    }
    return false; //uspesne provedena animace, zakazeme href
  }
/* -------------------------------------------------------------------------------------------------------- */
}
