﻿var IE = document.all?true:false;
if (!IE) document.captureEvents(Event.MOUSEMOVE);

function Drag(divId,iframeId,unselectspan)
{
    this.divId = divId;
    this.iframeId=iframeId;
    this.unselectspan=unselectspan;
    var initMouseX=0, initMouseY=0;
    var initTop=0, initLeft=0;
    var isDrag=false;  
    var target;
    
    this.initialize = function()
    {
       document.onmousedown=initDrag;
       document.onmouseup=stopDrag;
    }
    
    function initDrag(e)
    {
        var caption = $(unselectspan);
        disableSelection(caption); 
        if (!e) e = window.event;
	    target = e.srcElement || e.target;
	    if(target.id == caption.id) {target=$(divId);}
	    if(target.id != divId) return;
        isDrag=true;  
        
        if (isNaN(parseInt(target.style.left))) 
        {
            target.style.left=0;
            if($(iframeId)) $(iframeId).style.left=0;
        }
        if (isNaN(parseInt(target.style.top))) 
        {
            target.style.top=0;
            if($(iframeId)) $(iframeId).style.top=0;
        }
        initLeft=parseInt(target.style.left);
        initTop=parseInt(target.style.top);
        
        var mouseXY=getMouseXY(e);
        initMouseX=mouseXY[0];
        initMouseY=mouseXY[1];
        if (e.preventDefault)
            e.preventDefault();
        document.onmousemove=continueDrag;
    }

    function continueDrag(e)
    {
        if (!isDrag) return;
        if (!e) e = window.event;
        if(IE && e.button==0) 
        {
            isDrag=false;
            return;
        }
        var mouseXY=getMouseXY(e);
        mouseX=mouseXY[0];
        mouseY=mouseXY[1];
        var left, top;
        left=initLeft+mouseX-initMouseX;
        top=initTop+mouseY-initMouseY;
        if(left<0)left=0;
        if(top<0)top=0;
        target.style.left=left+"px";
        target.style.top=top+"px";
        if($(iframeId)) $(iframeId).style.left=left+"px";
        if($(iframeId)) $(iframeId).style.top=top+"px";
        return false;
    }

    function stopDrag(e)
    {
        isDrag=false;
        if(target)
        {
            target.onmousemove=null;
            target.onmouseup=null;
        }
    }
    
    function disableSelection(element) 
    {
        if(element==null) return;
        element.onselectstart = function() {
            return false;
        };
        element.unselectable = "on";
        element.style.MozUserSelect = "none";
        element.style.cursor = "move";
    }
}

function getMouseXY(e) 
{
    var mouseX=0, mouseY=0;
    if(!e) e=window.event;
    if(e.pageX || e.pageY)
    {
        mouseX = e.pageX;
        mouseY = e.pageY;
    } 
    else if (e.clientX || e.clientY) 
    {
        mouseX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
        mouseY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
    }

    if (mouseX < 0){mouseX = 0;}
    if (mouseY < 0){mouseY = 0;}
    return [mouseX,mouseY];
}

var drag=new Drag('eventsMapdiv','eventsMapIFrame','mapCaption');
drag.initialize();