var VIDITELNOST = 50; //%
var miniatura;
var lupa;
var foto;
var okno;
var sirkaOkna = 400; //px - nelze zjistit pres JS
var vyskaOkna = 200; //px - nelze zjistit pres JS
var xMiniatura;
var yMiniatura;
var xLupa_zaklad;
var yLupa_zaklad;
var pomerSirek;
var pomerVysek;
var odsazeniX;
var odsazeniY;

var global_soubor;
var global_nazev;
var global_sirka;
var global_vyska;

function startZoom() { //pocatecni inicializace
  miniatura = document.getElementById('shop_hlavniMiniatura');
  lupa = document.getElementById('shop_lupa');
  foto = document.getElementById('shop_foto');
  okno = document.getElementById('shop_detailFotografie');
  
  var pomerSirekDetail = foto.width / sirkaOkna;
  var pomerVysekDetail = foto.height / vyskaOkna;
  
  //osetreni velikosti lupy
  var sirkaLupy = Math.ceil(miniatura.width / pomerSirekDetail);
  if (sirkaLupy > miniatura.width)
    sirkaLupy = miniatura.width;
  var vyskaLupy = Math.ceil(miniatura.height / pomerVysekDetail);
  if (vyskaLupy > miniatura.height)
    vyskaLupy = miniatura.height;
  
  lupa.style.width = sirkaLupy + 'px';
  lupa.style.height = vyskaLupy + 'px';
  lupa.width = sirkaLupy;
  lupa.height = vyskaLupy;

  //pri mensich rozmerech nez je okno jsou pomery -Infinity, nevadi, v tu chvili se nepouzije
  pomerSirek = (foto.width - sirkaOkna) / (miniatura.width - lupa.width);
  pomerVysek = (foto.height - vyskaOkna) / (miniatura.height - lupa.height);

  xMiniatura = findPosX(miniatura);
  yMiniatura = findPosY(miniatura);

  xLupa_zaklad = xMiniatura - Math.ceil(lupa.width / 2); //usetreni vypoctu pri kazdem kroku
  yLupa_zaklad = yMiniatura - Math.ceil(lupa.height / 2); //usetreni vypoctu pri kazdem kroku

  lupa.onmousemove = getMousePosition;
  lupa.onmouseout = stopZoom;
  miniatura.onmousemove = getMousePosition;
  if (window.navigator.appName == "Microsoft Internet Explorer") 
    lupa.style.filter = "alpha(opacity="+VIDITELNOST+")";
  else
    lupa.style.opacity = (VIDITELNOST / 100);
  centrovani();
}
function findPosX(obj) { //scita pozici X
  var curleft = 0;
  if (obj.offsetParent)
    while(1) {
      curleft += obj.offsetLeft;
      if(!obj.offsetParent)
        break;
      obj = obj.offsetParent;
    }
  else if(obj.x)
    curleft += obj.x;
  return curleft;
}
function findPosY(obj) { //scita pozici Y
  var curtop = 0;
  if (obj.offsetParent)
    while(1) {
      curtop += obj.offsetTop;
      if(!obj.offsetParent)
        break;
      obj = obj.offsetParent;
    }
  else if(obj.y)
    curtop += obj.y;
  return curtop;
}
function getMousePosition(event) { //fce pro event
  var x,y;
  //zjisteni objektu udalosti
  if (!event) //IE
    var event = window.event;
  //spocitani souradnic
  if (event.pageX || event.pageY) {
    x = event.pageX - xMiniatura;
    y = event.pageY - yMiniatura;
  }
  else if (event.clientX || event.clientY) { //IE
    x = event.x;
    y = event.y;
    if (event.srcElement.tagName == "DIV") { //v IE zalezi kde vznikne event
      x = x - xMiniatura;
      y = y - yMiniatura;
    }
  }
  //presne umisteni
  xLupa = xLupa_zaklad + x;
  yLupa = yLupa_zaklad + y;
  //vymezeni prostoru lupy
  if (xLupa < xMiniatura)
    xLupa = xMiniatura;
  if (yLupa < yMiniatura)
    yLupa = yMiniatura;
  if ((xLupa + lupa.width) > (xMiniatura + miniatura.width))
    xLupa = (xMiniatura + miniatura.width) - lupa.width;
  if ((yLupa + lupa.height) > (yMiniatura + miniatura.height))
    yLupa = (yMiniatura + miniatura.height) - lupa.height;
  //posunuti
  if (odsazeniX == 0)
    foto.style.left = Math.ceil((xLupa - xMiniatura) * pomerSirek * -1) + 'px';
  if (odsazeniY == 0)
    foto.style.top = Math.ceil((yLupa - yMiniatura) * pomerVysek * -1) + 'px';
  lupa.style.top = yLupa + 'px';
  lupa.style.left = xLupa + 'px';
  lupa.style.visibility = 'visible';
}
function stopZoom() { //vratime do puvodniho stavu a skryjeme lupu
  xMiniatura = null;
  yMiniatura = null;
  xLupa_zaklad = null;
  yLupa_zaklad = null;

  lupa.style.visibility = 'hidden';

  lupa.onmousemove = null;
  miniatura.onmousemove = null;

  lupa = null;
  miniatura = null;
  foto = null;
  okno = null;
}
function centrovani() {
  //pokud je fotka mensi, doladime na stred
  if (foto.width < sirkaOkna)
    odsazeniX = Math.ceil((sirkaOkna - foto.width) / 2);
  else
    odsazeniX = 0;
  if (foto.height < vyskaOkna)
    odsazeniY = Math.ceil((vyskaOkna - foto.height) / 2);
  else
    odsazeniY = 0;
}
function onclickDetailu(event) {
  openNewWindow(global_soubor, global_nazev, global_sirka, global_vyska);
  return false;
}
function zmenaMiniatury(src, soubor, nazev, sirka, vyska) {
  global_soubor = soubor;
  global_nazev = nazev;
  global_sirka = sirka;
  global_vyska = vyska;

  miniatura = document.getElementById('shop_hlavniMiniatura');
  foto = document.getElementById('shop_foto');
  
  miniatura.src = src;
  foto.src = soubor;
  foto.width = sirka;
  foto.height = vyska;
  foto.onclick = onclickDetailu;
  centrovani();
  foto.style.left = odsazeniX + 'px';
  foto.style.top = odsazeniY + 'px';
  miniatura = null;
  foto = null;
  return false;
}

