var agent = navigator.userAgent.toLowerCase();
var isNS = (!document.all);
var isIE = (document.all);
var isIE6 = (isIE && parseInt(navigator.appVersion) == 4 && agent.indexOf("msie 6.") != -1);
var isIE7 = (isIE && parseInt(navigator.appVersion) == 4 && agent.indexOf("msie 7.") != -1);
var isNS6 = isNS && document.getElementById;

var gMouseX;
var gMouseY;
var gMouseXWin;
var gMouseYWin;
var gWinWidth;
var gWinHeight;
var gScrollTop;
var gScrollLeft;
var gHttp;
var gLastKeyCodePress;

function createHttp() 
{
    if (typeof (XMLHttpRequest) != "undefined")     
        return new XMLHttpRequest();
    else if (window.ActiveXObject) 
    {
      var arrVersions = new Array("MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp","Microsoft.XMLHttp");
      for (var i = 0; i < arrVersions.length; i++) {
        try 
        {
            var oHttp = new ActiveXObject(arrVersions[i]);
            return oHttp;
        } catch (oE) 
        {}
      }
    }
    return false;
}
gHttp = createHttp();

function getEvent(e)
{
    var retval = false;
    if ( !e )    
        retval = (window.event) ? window.event : false;
    
    return retval;
}

function getKeyCode(e)
{
	var retval = false;

	try
	{
		if ( typeof( e.keyCode ) == 'number'  ) 		            
			retval = e.keyCode; 		 
		else if ( typeof( e.which ) == 'number' ) 		        
			retval = e.which;		 
		else if ( typeof( e.charCode ) == 'number'  ) 		        
		    retval = e.charCode;		 
    }
    catch (ex)
    {
    }
    
    return retval;
}

function mouseMovedHandler(e)
{   
    var ev = (!e) ? window.event : e;
    
    if (ev.pageX){        
        gMouseX = ev.pageX;
        gMouseY = ev.pageY;
    }    
    else if(ev.clientX){        
        var sLeft = document.documentElement ? document.documentElement.scrollLeft : document.body.scrollLeft;
        var sTop = document.documentElement ? document.documentElement.scrollTop : document.body.scrollTop;
        gMouseX = ev.clientX + sLeft;
        gMouseY = ev.clientY + sTop;
    }
    
    if (typeof (gScheduleMouseMove) != 'undefined')
        gScheduleMouseMove();
}

function keyPressHandler(e)
{    
    e = getEvent(e);    
    gLastKeyCodePress = getKeyCode(e);    
    
    if (typeof (gKeyPressHandler) != 'undefined')
        return gKeyPressHandler(e);
    
    return true;
}

if (document.captureEvents)
{    
    document.captureEvents(Event.MOUSEMOVE);    
    document.captureEvents(Event.KEYPRESS);    
}

document.onmousemove = mouseMovedHandler;
document.onkeypress = keyPressHandler;

function setVisibleWin()
{           
    if (isIE) {
        gWinWidth = document.documentElement.clientWidth;
        gWinHeight = document.documentElement.clientHeight;
    }
    else
    {
        gWinWidth = window.innerWidth;
        gWinHeight = window.innerHeight;
    }
    
    gScrollTop = document.body.scrollTop;

    if (gScrollTop == 0)
    {
        if (window.pageYOffset)
            gScrollTop = window.pageYOffset;
        else
            gScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
    }

    gMouseYWin = gMouseY - gScrollTop;
    
    gScrollLeft = document.body.scrollLeft;
    if (gScrollLeft == 0)
    {
        if (window.pageXOffset)
            gScrollLeft = window.pageXOffset;
        else
            gScrollLeft = (document.body.parentElement) ? document.body.parentElement.scrollLeft : 0;
    }
    
    gMouseXWin = gMouseX - gScrollLeft;
}

function resizeHandler()
{
    setVisibleWin();
}

function interval()
{
    done = true;
    
    if (document.body)
        document.body.onresize = resizeHandler;
    else
        done = false;
    
    if (!done)
        setTimeout("interval()", 500);
}

interval();