function setimage(iid) {
  curimgid = iid;
  var img = document.getElementById("picmain");
  var w = jswidth[iid], h = jsheight[iid];
  img.style.visibility = "hidden";
  img.width = w;
  img.height = h;
  img.src = jsimages[iid];
  img.onload = function(){this.style.visibility = "visible";};
  document.getElementById("fmarrowleft").href = "javascript:setimage("+(curimgid-1)+")";
  document.getElementById("fmarrowright").href = "javascript:setimage("+(curimgid+1)+")";
  setarrows();
  if (document.getElementById("moirdiv")) { ;  } else {
    var d = document.createElement("div");
    d.id = "moirdiv";
    d.style.position = "absolute";
    d.style.top = 0;
    d.style.left = 0;
    d.style.width = "100%";
    d.style.height = Math.max(document.body.offsetHeight, document.documentElement.offsetHeight, parseInt(document.documentElement.clientHeight)) + "px";
    d.style.filter = "alpha(opacity=30)";
    d.style.zIndex = "15000";
    d.style.mozOpacity = "0.3";
    d.style.khtmlOpacity = "0.3";
    d.style.opacity = "0.3";
    d.style.backgroundColor = "#000000";
    d.onclick = unshowmap;
    var st = document.documentElement.scrollTop;
    document.getElementById("fmcont").style.top = "50%";
    document.getElementById("fmcont").style.left = "50%";
  }
  document.getElementById("fmcont").style.width = w;
  document.getElementById("fmcont").style.height = h;
  if (d) {
    document.getElementById("fmcont").style.marginLeft = -Math.round(w/2) + "px";
    document.getElementById("fmcont").style.marginTop = -Math.round(h/2 - document.documentElement.scrollTop) + "px";
    document.body.appendChild(d);
    document.body.appendChild(document.getElementById("fmcont"));
    document.getElementById("fmcont").style.display = "block";
    window.scrollTo(0, st);
  }
}

function unshowmap() {
  if (nounshow) {
    nounshow = nounshow-1;
    return false;
  }
  var st = document.documentElement.scrollTop;
  if (document.getElementById("moirdiv")) document.body.removeChild(document.getElementById("moirdiv"));
  if (document.getElementById("moirdiv")) document.body.removeChild(document.getElementById("moirdiv")); // Магия! Не трогать!
  document.getElementById("fmcont").style.display = "none";
  window.scrollTo(0, st);
}

function setarrows() {
  document.getElementById("fmarrowleft").style.display = ((curimgid <= 1) ? "none" : "block");
  document.getElementById("fmarrowright").style.display = ((curimgid >= jsimages.length-1) ? "none" : "block");
}
function hidearrows() {
  document.getElementById("fmarrowleft").style.display = "none";
  document.getElementById("fmarrowright").style.display = "none";
}

function drag(elementToDrag, event) {
    if (event.which == null) {
        button = (event.button < 2) ? "LEFT" : ((event.button == 4) ? "MIDDLE" : "RIGHT");
    } else {
        button = (event.which < 2) ? "LEFT" : ((event.which == 2) ? "MIDDLE" : "RIGHT");
    }
    if (button != "LEFT") return false;

    var startX = event.clientX+parseInt(elementToDrag.style.marginLeft), startY = event.clientY+parseInt(elementToDrag.style.marginTop);
    var origX = elementToDrag.offsetLeft, origY = elementToDrag.offsetTop;
    var deltaX = startX - origX, deltaY = startY - origY;

    if (document.addEventListener) {
        document.addEventListener("mousemove", moveHandler, true);
        document.addEventListener("mouseup", upHandler, true);
    }
    else if (document.attachEvent) {
        elementToDrag.setCapture( );
        elementToDrag.attachEvent("onmousemove", moveHandler);
        elementToDrag.attachEvent("onmouseup", upHandler);
        elementToDrag.attachEvent("onlosecapture", upHandler);
    }
    else {
        var oldmovehandler = document.onmousemove;
        var olduphandler = document.onmouseup;
        document.onmousemove = moveHandler;
        document.onmouseup = upHandler;
    }

    if (event.stopPropagation) event.stopPropagation( );
    else event.cancelBubble = true;

    if (event.preventDefault) event.preventDefault( );
    else event.returnValue = false;

    function moveHandler(e) {
        if (!e) e = window.event;

        elementToDrag.style.left = (e.clientX - deltaX) + "px";
        elementToDrag.style.top = (e.clientY - deltaY) + "px";

        if (e.stopPropagation) e.stopPropagation( );
        else e.cancelBubble = true;

        nounshow=3;
    }

    function upHandler(e) {
        if (!e) e = window.event;

        if (document.removeEventListener) {
            document.removeEventListener("mouseup", upHandler, true);
            document.removeEventListener("mousemove", moveHandler, true);
        }
        else if (document.detachEvent) {
            elementToDrag.detachEvent("onlosecapture", upHandler);
            elementToDrag.detachEvent("onmouseup", upHandler);
            elementToDrag.detachEvent("onmousemove", moveHandler);
            elementToDrag.releaseCapture( );
        }
        else {
            document.onmouseup = olduphandler;
            document.onmousemove = oldmovehandler;
        }
        if (e.stopPropagation) e.stopPropagation( );
        else e.cancelBubble = true;
    }
}
