﻿var MouseButton = 0;
var StartX = 0;
var EndX = 0;
var StartY = 0;
var EndY = 0;
var ImgX = 0;
var ImgY = 0;
var Box = null;

function Map_OnMouseDown(thisEvent, thisControl){
    var thisForm = document.forms[0];
    var basename = thisForm.Basename.value;
    var activeTool = document.getElementById(basename + "TxtActiveTool").value;
    Box = document.getElementById("Box");   
    if(thisEvent.which) MouseButton = thisEvent.which; 
    else MouseButton = thisEvent.button;    
    if(MouseButton == 1){                 
        StartX = ImgX;
        StartY = ImgY;        
        if(activeTool.indexOf("Zoom") > -1 || activeTool.indexOf("Select") > -1){
            var boxLeft = ImgX;
            var boxTop = ImgY;
            if(thisEvent.which){ //mozilla
                boxLeft = eval(boxLeft) - 2;
                boxTop = eval(boxTop) - 2;
            }
            Box.style.left = boxLeft + "px";
            Box.style.top = boxTop + "px";
            Box.style.width = "0px";
            Box.style.height = "0px";
            Box.style.borderColor = "red";    
        }
        
        document.getElementById(basename + "TxtStartX").value = StartX; 
        document.getElementById(basename + "TxtStartY").value = StartY;      
    }
    return false;
}
function Map_OnMouseUp(thisEvent, thisControl){
    var thisForm = document.forms[0];     
    if(MouseButton == 1){
        EndX = ImgX;
        EndY = ImgY;     
        var basename = thisForm.Basename.value;
        SetMapBusy();
        DisableMap();
        document.getElementById(basename + "TxtEndX").value = EndX; 
        document.getElementById(basename + "TxtEndY").value = EndY;    
        thisForm.EventName.value = "MouseUpEvent";  
        document.getElementById(basename + "BtnMouseUp").click(); //this works
        MouseButton = 0;
    }
    return false;   
}
function Map_OnMouseMove(thisEvent, thisControl)
{
    var thisForm = document.forms[0];    
    var basename = thisForm.Basename.value;
    var activeTool = document.getElementById(basename + "TxtActiveTool").value;
    if(Box == null) Box = document.getElementById("Box");;
    if(navigator.appName == "Microsoft Internet Explorer"){ //IE
        ImgX = thisEvent.offsetX;
        ImgY = thisEvent.offsetY;
    }else{ //Mozilla
        ImgX = thisEvent.layerX;
        ImgY = thisEvent.layerY;
    }        
    if(activeTool.indexOf("Pan") > -1) thisControl.style.cursor = "move";
    else thisControl.style.cursor = "crosshair";
    
    var minx = Evaluate(thisForm.MinX.value);
    var miny = Evaluate(thisForm.MinY.value);
    var maxx = Evaluate(thisForm.MaxX.value); 
    var maxy = Evaluate(thisForm.MaxY.value);
    
    var mapWidth = maxx - minx;
    var imgWidth = Evaluate(thisControl.width);
    var cursorXElt = document.getElementById("CursorX");
    if(cursorXElt != null) cursorXElt.innerHTML = "x = " + (minx + (mapWidth * (ImgX / imgWidth))).toString().substr(0,8);
    var mapHeight = maxy - miny;
    var imgHeight = Evaluate(thisControl.height);
    var cursorYElt = document.getElementById("CursorY");
    if(cursorYElt != null) cursorYElt.innerHTML = "y = " + (maxy - (mapHeight * (ImgY / imgHeight))).toString().substr(0,8);
       
    if(MouseButton == 1){
        if(activeTool.indexOf("Zoom") > -1 || activeTool.indexOf("Select") > -1){             
            if(ImgX < StartX){
                if(thisEvent.layerX) Box.style.left = (ImgX - 2) + "px"; //mozilla               
                else Box.style.left = ImgX + "px";
                Box.style.width = (StartX - ImgX) + "px";
            }else if(ImgX > StartX){            
                var width = ImgX - Evaluate(Box.style.left) - 2;
                if(width < 0) width = 0;
                Box.style.width = width  + "px";           
            }
            if(ImgY < StartY){
                if(thisEvent.layerY) Box.style.top = (ImgY - 2) + "px"; //mozilla               
                else Box.style.top = ImgY + "px";
                Box.style.height = StartY - ImgY + "px";
            }else if(ImgY > StartY){                
                var height = ImgY - Evaluate(Box.style.top) - 2;
                if(height < 0) height = 0;
                Box.style.height = height + "px";
            }
        }else if(activeTool.indexOf("Pan") > -1){
            var img = thisForm.MapImage;
            img.style.left = (ImgX - StartX) + "px";
            img.style.top = (ImgY - StartY) + "px";
        }        
    } 
    return false;      
}
function Evaluate(inStr){			
	inStr = inStr.toString().replace("px","").replace("pt","");
	if(inStr.length==0){
		return 0;
	}else{
		return eval(inStr);
	}		
	
}
function DisableMap(){
    var thisForm = document.forms[0]; 
    var txtBasename = thisForm.Basename;
    if(txtBasename != null){
        var basename = txtBasename.value;
        var cover = document.getElementById(basename + "Cover");
        if(cover != null){
            cover.width = Evaluate(thisForm.ImageCover.width) + 20;
            cover.height = Evaluate(thisForm.ImageCover.height) + 60;
        }
    }
}
function SetMapBusy(){
    var thisForm = document.forms[0]; 
    var basename = thisForm.Basename.value;
    var busyText = document.getElementById("BusyText");
    if(busyText != null) busyText.style.display = "block";        
}

