
    var jbcRolloverIds = [];
    var jbcRolloverTracker = [];

    function jbcTranslateId(id) { return 'x'+id; }
    function jbcEnterArea() {
        var id = jbcTranslateId(this.id);
        var e = xGetElementById(id);
        if (e) {
            jbcRolloverTracker[id] = e;
            xShow(id);   
        }
    }
    function jbcLeaveArea() {
        var id = jbcTranslateId(this.id);
        var e = xGetElementById(id);
        if (e) {
            xHide(id);   
            delete jbcRolloverTracker[id];
        }
    }
    
    function jbcRolloverMouseMoveListener(e) {
        var e = new xEvent(e);   
        
        for (var idx in jbcRolloverTracker) {
            var layer = jbcRolloverTracker[idx];   
            xMoveTo(layer, xScrollLeft(), xScrollTop());
        }
    }

    // register rollovers
    window.addOnload(function() {
        for(var idx in jbcRolloverIds) {
            var e = xGetElementById(jbcRolloverIds[idx]);
            if (e) {
                e.onmouseover = jbcEnterArea;
                e.onmouseout  = jbcLeaveArea;
            }
        }
        xAddEventListener(document, 'mousemove', jbcRolloverMouseMoveListener, false);
    });
    

