g_objJMouseMove = null;

function JMouseMoveObj()
{
    var self = this;
    this.m_iX = 0;
    this.m_iY = 0;
    this.m_aFn = new Array();
    
    this.AddFn = function(fnMove)
    {
        this.m_aFn.push(fnMove);    
    }
    
    this.addEvent = function(domObj,sEvent,fnEvent)
    {
        if(domObj.addEventListener)
            domObj.addEventListener(sEvent,fnEvent,false);
        else if(domObj.attachEvent)
            domObj.attachEvent('on' + sEvent,fnEvent);
    }
    
    this.MouseMove = function(objEvent)
    {
        if(!objEvent)
            objEvent = window.event;

        if(objEvent.pageX || objEvent.pageY)
        {
            this.m_iX = objEvent.pageX;
            this.m_iY = objEvent.pageY;
        }
        else if (objEvent.clientX || objEvent.clientY)
        {
            this.m_iX = objEvent.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
            this.m_iY = objEvent.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
        }
        
        for(var i=0;i<this.m_aFn.length;i++)
        {
            this.m_aFn[i](this.m_iX,this.m_iY);
        }
    }
    
    if(window.addEventListener)
        this.addEvent(window,'mousemove',function(objEvent){self.MouseMove(objEvent)});
    else
        this.addEvent(document.body,'mousemove',function(objEvent){self.MouseMove(objEvent)}); 
}

function JMouseMove()
{
    if(g_objJMouseMove==null)
        g_objJMouseMove = new JMouseMoveObj();
    return g_objJMouseMove;
}

