var allDone = false;
/* test: IE6, Mozilla 1.5, Opera 7.21 */
var mx = 0, my = 0, dx, dy, meritko = 4, lx = 200, ly = 200, clipstyle, off, elemLeft, elemTop;
var lb = -1, tb, rb, bb; // bounds left, top, right, bottom
var showbb;
var first = 1;
var poziciaTop;
var poziciaLeft;
var smooth = 1;

// BrowserCheck Object
function BrowserCheck() {
  this.n4 =  (document.layers)?1:0;
  this.n6 =  (document.getElementById&&!document.all)?1:0;
  this.o  =  (navigator.userAgent.indexOf("Opera") >= 0)?1:0;
  this.mac = (navigator.userAgent.indexOf("Mac") >= 0)?1:0;

  this.ie =  0;
  this.ie55plus = 0;
  var userAgent = navigator.userAgent;
  var rPattern = /(MSIE)\s(\d+)\.(\d+)((b|p)([^(s|;)]+))?;?(.*(98|95|NT|3.1|32|Mac|X11))?\s*([^\)]*)/;
        if (userAgent.match(rPattern))
        {
                var majorVer = parseInt(RegExp.$2) || 0;
                var minorVer = RegExp.$3.toString() || "0";
    if (majorVer >= 6) { this.ie55plus = 1;}
          if ((majorVer == 5) && (minorVer >= 5)) { this.ie55plus = 1;}
          this.ie = 1;
        }

}
_browser = new BrowserCheck();
if(_browser.ie55plus) showbb = true;

function startLupa()
{
        var tryAgain;
        if(!allDone) { tryAgain = setTimeout("startLupa()", 500); return false}


  if (_browser.n4) return;

  document.getElementById("img_lupa").src = document.getElementById("img_orig").src;

  if (_browser.ie55plus && smooth) {
    document.getElementById("img_lupa").style.visibility = 'hidden';
    document.getElementById("div_lupa").style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+document.getElementById("img_orig").src+'\', sizingMethod=\'scale\')';
  }

        nastavZoom(meritko);

        //alert("L:" + poziciaLeft + "  T:" + poziciaTop);

        var obj = document.getElementById("img_orig");
        obj.onmousemove = onlupamousemove;
  obj.onmouseout = onlupamouseout;

  obj = document.getElementById("lupaminus");
        if (obj!=null) { obj.onmousemove = onlupashow; obj.onmouseout = onlupamouseout; }

  obj = document.getElementById("lupaplus");
        if (obj!=null) { obj.onmousemove = onlupashow; obj.onmouseout = onlupamouseout; }

  obj = document.getElementById("lupatxt");
        if (obj!=null) { obj.onmousemove = onlupashow; obj.onmouseout = onlupamouseout; }

  obj = document.getElementById("luparam");
        if (obj!=null) { obj.onmousemove = onlupashow; obj.onmouseout = onlupamouseout; }

  first = 1;
  onlupamousemove(null);
  first = 0;
  onlupamouseout(null);
}

function GetElemPos(objname)
{
        var obj = document.getElementById(objname);
        var tmpL = obj.offsetLeft;
        var tmpT = obj.offsetTop;
        while (obj.offsetParent) {
                obj = obj.offsetParent;
                tmpL += obj.offsetLeft;
                tmpT += obj.offsetTop;
        }
  elemLeft = tmpL;
  elemTop = tmpT;
}

function onlupamouseout(e)
{
  document.getElementById("div_lupa").style.visibility = 'hidden';
  if (showbb) document.getElementById("showbox").style.visibility = 'hidden';
}

function onlupashow(e)
{
  if (off) return;
  document.getElementById("div_lupa").style.visibility = 'visible';
  if (showbb) document.getElementById("showbox").style.visibility = 'visible';
}

function onlupamousemove(e)
{
        poziciaTop = mgGetTopPos("id_luparam");
        poziciaLeft = mgGetLeftPos("id_luparam");
  if (off || _browser.n4) return;

  if (first == 1) {
    mx = 0; my = 0;
  } else {
    if (_browser.ie) {
      mx = event.clientX;
      my = event.clientY;
    } else {
      mx = e.pageX;
      my = e.pageY;
    }
  }


//  GetElemPos("div_orig");
  elemLeft = mgGetLeftPos("img_orig");
  elemTop = mgGetTopPos("img_orig");

//  if (lb < 0) {
  if (true) {
    lb = (elemLeft + (lx/(2*meritko))); // left bound
    rb = (elemLeft - (lx/(2*meritko)) + document.getElementById("img_orig").width); // right bound
    tb = (elemTop + (ly/(2*meritko))); // top bound
    bb = (elemTop - (ly/(2*meritko)) + document.getElementById("img_orig").height); // bottom bound
  }
  if (mx < lb) { mx = lb; }
  if (mx > rb) { mx = rb; }
  if (my < tb) { my = tb; }
  if (my > bb) { my = bb; }

  dx = mx - elemLeft;
  dy = my - elemTop;

  var t = ((dy * meritko) - (ly / 2));
  var r = ((dx * meritko) + (lx / 2));
  var b = ((dy * meritko) + (ly / 2));
  var l = ((dx * meritko) - (ly / 2));

  if (showbb) {
//        document.getElementById("boundbox").style.visibility = 'visible';
//        document.getElementById("boundbox").style.top = tb;//elemLeft;//my;
//        document.getElementById("boundbox").style.left = lb;//elemTop;//mx;
//        document.getElementById("boundbox").style.width = rb-lb;//document.getElementById("img_orig").width;//lx/meritko;
//        document.getElementById("boundbox").style.height = bb-tb;//document.getElementById("img_orig").height;//ly/meritko;
        document.getElementById("showbox").style.top = my - (ly/(2*meritko));//tb;
        document.getElementById("showbox").style.left = mx - (lx/(2*meritko));//lb;
        document.getElementById("showbox").style.width = lx/meritko;//rb-lb;
        document.getElementById("showbox").style.height = ly/meritko;//bb-tb;
  }


  obj = document.getElementById("img_lupa");

        var clipstyle = "rect(" + t + "px, " + r + "px, " + b + "px, " + l + "px)";

  obj = document.getElementById("div_lupa");
        obj.style.width = lx;
        obj.style.height = ly;

  obj.style.clip = clipstyle;

  obj.style.left = poziciaLeft + (lx/2) - (meritko * dx);
  obj.style.top = poziciaTop + 4 - (meritko * dy);
        obj.style.visibility = 'visible';
        if (showbb) document.getElementById("showbox").style.visibility = 'visible';

}

function nastavZoom(kolik)
{
  lb = -1;
  mx = lb;
  my = tb;
  if (kolik >= 2 ) {
          meritko = kolik;
          var obj = document.getElementById("img_lupa");
          var obj2 = document.getElementById("img_orig");

    obj.width = kolik * obj2.width;
          obj.height = kolik * obj2.height;

    if (_browser.ie55plus && smooth) {
      obj = document.getElementById("div_lupa");
      obj.style.width = kolik * obj2.width;
      obj.style.height = kolik * obj2.height;
    }

        }
}

function addZoom(e) {
  nastavZoom( meritko + e );
}

function lupaONOFF() {
off = !off;
document.getElementById("div_lupa").style.visibility = 'hidden';
document.getElementById("showbox").style.visibility = 'hidden';
  if (off) {
          document.getElementById("lupatxt").innerHTML = 'lupa je vypnutá';
        }else{
          document.getElementById("lupatxt").innerHTML = 'lupa je zapnutá';
        }

}


/* LUPA LOGIKA */
function mgGet(name) {        if(document.getElementById) { return document.getElementById(name); } else
{ if (document.all) { return document.all(name); } else { return null; } }        }
function mgGetTopPos(objname)
{ var obj = mgGet(objname);         var tmpT = obj.offsetTop; while (obj.offsetParent)
{ obj = obj.offsetParent; tmpT += obj.offsetTop; } return tmpT; }
function mgGetLeftPos(objname)
{ var obj = mgGet(objname);         var tmpL = obj.offsetLeft; while (obj.offsetParent)
{ obj = obj.offsetParent; tmpL += obj.offsetLeft; } return tmpL; }



document.onLoad = setTimeout("startLupa()", 500);