﻿var mouseX;
var mouseY;
var mouseUpArr = new Array();
var mouseMoveArr = new Array();
var callers = new Array();
var callerIds = new Array();
var lastFocus = "";

// Event captures
	if(!document.all) {
		document.captureEvents(Event.MOUSEMOVE);
		document.captureEvents(Event.MOUSEUP);
	}
	document.onmousemove = getMouseXY;
	document.onmouseup = mouseUp;

	
function mouseUp() {
    for (i=0; i < mouseUpArr.length; i++) {
        eval(mouseUpArr[i]);
    }
}

/////////////////////////////////////////////////////////////////////////////////////////////
//  various
/////////////////////////////////////////////////////////////////////////////////////////////
	// Misc.
	/////////////////////////////////////////////////////////////////////////////////////
	function getMouseXY(e) {
		if (document.all && document.body) { 
			// grab the x-y mouse pos if browser is IE
			mouseX = event.clientX + document.body.scrollLeft;
			mouseY = event.clientY + document.body.scrollTop;
		} else {  
			if(e) {
				// grab the x-y mouse pos if browser is not IE
				mouseX = e.pageX;
				mouseY = e.pageY;
			}
		}
        for (i=0; i < mouseMoveArr.length; i++) {
            eval(mouseMoveArr[i]);
        }
	}

function handle(delta, from) {
    if(lastFocus != "") {
        eval(lastFocus+".scrolling=true;");
        eval(lastFocus+".scrollIt(" + (- delta * 5) + ")");
        eval(lastFocus+".scrolling=false;");
    } else {
        return;
    }
}

function wheel(event){
    var delta = 0;
    if (!event) /* For IE. */
        event = window.event;
    if (event.wheelDelta) { /* IE/Opera. */
        delta = event.wheelDelta/120;
        if (window.opera)
            delta = -delta;
    } else if (event.detail) { /** Mozilla case. */
        delta = -event.detail/3;
    }
    if (delta)
        handle(delta);
            
    if (lastFocus != "") {
        if (event.preventDefault) {
            event.preventDefault();
        }
    }
    event.returnValue = false;
}

if (window.addEventListener)
        window.addEventListener('DOMMouseScroll', wheel, false);

    window.onmousewheel = document.onmousewheel = wheel;
    
function focusCaller(theId) {
    for(i=0; i < callerIds.length; i++) {
        if(theId == callerIds[i]) {
            lastFocus = callers[i];
        }
    }
}    