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 = 545; //px
  own.ODSAZENI_SHORA = 15; //px
  own.MEZ_ANIMACE = 500; //milisekundy - delka animacniho efektu
  own.ROOT_WEBU = root_webu; //kvuli novym adresam
  own.DOBA_SNIMKU_SLIDESHOW = 4 * 1000; //ms
  //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
  own.pustenoSlideshow = false;
  own.timerSlideshow = null;
  
/* -------------------------------------------------------------------------------------------------------- */
  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.playSlideshow = function(idFoto) {
    if (own.timerSlideshow == null) {
      own.pustenoSlideshow = true;
      document.getElementById("detailGalerie_slideshow").innerHTML = "<a href='.' onclick='return "+own.nazevObjektu+".stopSlideshow("+idFoto+");'>stop slideshow</a>";
      own.timerSlideshow = window.setTimeout(own.nazevObjektu+".zobrazDetailGalerie("+idFoto+", true)", 1);
    }
    return false;
  }
/* -------------------------------------------------------------------------------------------------------- */
  own.stopSlideshow = function(idFoto) {
    own.pustenoSlideshow = false;
    document.getElementById("detailGalerie_slideshow").innerHTML = "<a href='.' onclick='return "+own.nazevObjektu+".playSlideshow("+idFoto+");'>play slideshow</a>";
    clearTimeout(own.timerSlideshow);
    own.timerSlideshow = null;
    return false;
  }
/* -------------------------------------------------------------------------------------------------------- */
  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.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);
      var popis = xmlHttp.responseXML.getElementsByTagName('nadpis')[0].firstChild.data;
      var idPredchoziStranka = xmlHttp.responseXML.getElementsByTagName('idPredchoziStranka')[0].firstChild.data;
      var idDalsiStranka = xmlHttp.responseXML.getElementsByTagName('idDalsiStranka')[0].firstChild.data;
      var idPredchoziFoto = xmlHttp.responseXML.getElementsByTagName('idPredchoziFoto')[0].firstChild.data;
      var idDalsiFoto = xmlHttp.responseXML.getElementsByTagName('idDalsiFoto')[0].firstChild.data;
      var idPrvniFoto = xmlHttp.responseXML.getElementsByTagName('idPrvniFoto')[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;
      var pocetStranekCelkem = xmlHttp.responseXML.getElementsByTagName('pocetStranekCelkem')[0].firstChild.data;
      document.getElementById("detailGalerie_popisOdstavec").innerHTML = popis;
      //stranka
      if(idPredchoziStranka == 0)
        document.getElementById("detailGalerie_tlacitkoPredchoziStranka").innerHTML = "&nbsp;";
      else
        document.getElementById("detailGalerie_tlacitkoPredchoziStranka").innerHTML = "<a href='.' onclick='return "+own.nazevObjektu+".zobrazDetailGalerie("+idPredchoziStranka+");'><img src='"+own.ROOT_WEBU+"desimg/prazdny_gif.gif' alt='Předchozí stránka' title='Předchozí stránka' width='17' height='16' /></a>";
      if(idDalsiStranka == 0)
        document.getElementById("detailGalerie_tlacitkoDalsiStranka").innerHTML = "&nbsp;";
      else
        document.getElementById("detailGalerie_tlacitkoDalsiStranka").innerHTML = "<a href='.' onclick='return "+own.nazevObjektu+".zobrazDetailGalerie("+idDalsiStranka+");'><img src='"+own.ROOT_WEBU+"desimg/prazdny_gif.gif' alt='Další stránka' title='Další stránka' width='17' height='16' /></a>";
      //foto
      if(idPredchoziFoto == 0)
        document.getElementById("detailGalerie_tlacitkoPredchoziFoto").innerHTML = "&nbsp;";
      else
        document.getElementById("detailGalerie_tlacitkoPredchoziFoto").innerHTML = "<a href='.' onclick='return "+own.nazevObjektu+".zobrazDetailGalerie("+idPredchoziFoto+");'><img src='"+own.ROOT_WEBU+"desimg/prazdny_gif.gif' alt='Předchozí foto' title='Předchozí foto' width='21' height='22' /></a>";
      if(idDalsiFoto == 0)
        document.getElementById("detailGalerie_tlacitkoDalsiFoto").innerHTML = "&nbsp;";
      else
        document.getElementById("detailGalerie_tlacitkoDalsiFoto").innerHTML = "<a href='.' onclick='return "+own.nazevObjektu+".zobrazDetailGalerie("+idDalsiFoto+");'><img src='"+own.ROOT_WEBU+"desimg/prazdny_gif.gif' alt='Další foto' title='Další foto' width='21' height='22' /></a>";

      if (aktualniStrankaHtml != aktualniStranka) {
        document.getElementById("detailGalerie_miniatury").innerHTML = dataMiniatur;
        document.getElementById("detailGalerie_aktualniStranka").innerHTML = aktualniStranka;
      }
      
      var idFotoSlideshow = idDalsiFoto;
      if (idFotoSlideshow == 0)
        idFotoSlideshow = idPrvniFoto;
      if (own.pustenoSlideshow)
        document.getElementById("detailGalerie_slideshow").innerHTML = "<a href='.' onclick='return "+own.nazevObjektu+".stopSlideshow("+idFotoSlideshow+");'>stop slideshow</a>";
      else
        document.getElementById("detailGalerie_slideshow").innerHTML = "<a href='.' onclick='return "+own.nazevObjektu+".playSlideshow("+idFotoSlideshow+");'>play slideshow</a>";

      for (i = 1; i <= vypsanyPocetMiniatur; i++)
        document.getElementById("lb_miniatura_"+i).className = '';
      document.getElementById("lb_miniatura_"+aktivniFoto).className = 'aktivni';

      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')
        if (own.pustenoSlideshow)
          own.timerSlideshow = window.setTimeout(own.nazevObjektu+".zobrazDetailGalerie("+idFotoSlideshow+", true)", own.DOBA_SNIMKU_SLIDESHOW);
      };
    }
  }
/* -------------------------------------------------------------------------------------------------------- */
  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/lightbox_zavrit.gif" alt="Zavřít" title="Zavřít" width="16" height="16" /></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_tlacitkoPredchoziStranka").style.visibility = 'visible';
      document.getElementById("detailGalerie_tlacitkoDalsiStranka").style.visibility = 'visible';
      document.getElementById("detailGalerie_tlacitkoPredchoziFoto").style.visibility = 'visible';
      document.getElementById("detailGalerie_tlacitkoDalsiFoto").style.visibility = 'visible';
      document.getElementById("detailGalerie_popisOdstavec").style.visibility = 'visible';
      own.zobrazDetail(null);
    }
  }
/* -------------------------------------------------------------------------------------------------------- */
  own.skrytDetailGalerie = function(sekce) {
    if (sekce == 'A') {
      own.stopSlideshow(0);
      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';
      document.getElementById("fotografie_detail").src = "";
      document.getElementById("fotografie_detail").style.visibility = 'hidden';
      document.getElementById("detailGalerie_tlacitkoPredchoziStranka").style.visibility = 'hidden';
      document.getElementById("detailGalerie_tlacitkoDalsiStranka").style.visibility = 'hidden';
      document.getElementById("detailGalerie_tlacitkoPredchoziFoto").style.visibility = 'hidden';
      document.getElementById("detailGalerie_tlacitkoDalsiFoto").style.visibility = 'hidden';
      document.getElementById("detailGalerie_popisOdstavec").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_aktualniStranka").innerHTML = '0';
    }
  }
/* -------------------------------------------------------------------------------------------------------- */
  own.zobrazDetailGalerie = function(idFotografie) { //hlavni fce volana zvenku
    //parametry: idFotografie[, zachovatBehSlideshow]
    own.idFotografie = arguments[0];
    var zachovatBehSlideshow = false;
    if (arguments.length > 1)
      zachovatBehSlideshow = arguments[1];
    if (!zachovatBehSlideshow)
      own.stopSlideshow(0);
    //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
  }
/* -------------------------------------------------------------------------------------------------------- */
}

