// Simple follow the mouse script

var divName = 'spread_loading'; // div that is to follow the mouse
                       // (must be position:absolute)
var offX = 15;          // X offset from mouse position
var offY = 15;          // Y offset from mouse position

function mouseX(evt) {if (!evt) evt = window.event; if (evt.pageX) return evt.pageX; else if (evt.clientX)return evt.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft); else return 0;}
function mouseY(evt) {if (!evt) evt = window.event; if (evt.pageY) return evt.pageY; else if (evt.clientY)return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); else return 0;}

function follow(evt) {if (document.getElementById) {var obj = document.getElementById(divName).style; obj.visibility = 'visible';
obj.left = (parseInt(mouseX(evt))+offX) + 'px';
obj.top = (parseInt(mouseY(evt))+offY) + 'px';}}
document.onmousemove = follow;

//keep around the old call function
xajax.realCall = xajax.call;
//override the call function to bend to our wicked ways
xajax.call = function(sFunction, aArgs, sRequestType)
{
    //show the spinner
    this.$('spread_loading').style.display = 'block';
    //call the old call function
    return this.realCall(sFunction, aArgs, sRequestType);
}

//save the old processResponse function for later
xajax.realProcessResponse = xajax.processResponse;
//override the processResponse function
xajax.processResponse = function(xml)
{
    //hide the spinner
    this.$('spread_loading').style.display = 'none';
    //call the real processResponse function
    return this.realProcessResponse(xml);
}
