if (typeof DIRENQ == "undefined" || !DIRENQ) {
    var DIRENQ = {};
}

var DELENQ_myOverlay;
var DELENQ_curElem;

DIRENQ.init = function() {
    DELENQ_myOverlay = new YAHOO.widget.Overlay("DIRENQOverlay", { visible: false });
    DELENQ_myOverlay.render();
    DIRENQ.hidetooltip();
}

DIRENQ.callAjax = function(sUrl) {
    var callback = {
        success: function(o) {
            document.getElementById('DIRENQHover').innerHTML = o.responseText;
        },
        failure: function(o) {
            return false; //FAILURE
        }
    }

    var transaction = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback, null);

    return false;
}

DIRENQ.showtooltip = function(e, elem) {
    if (!DELENQ_myOverlay) return;
    if (DELENQ_curElem != elem) {
        if (!elem.URL) return;
        DIRENQ.callAjax(elem.URL);
        DELENQ_curElem = elem;
    }
    DELENQ_myOverlay.show();

    var p = YAHOO.util.Event.getXY(e);
    var newPos = [p[0] + 15, p[1] + 15];

    var screenPos = { x: YAHOO.util.Dom.getDocumentScrollLeft(), y: YAHOO.util.Dom.getDocumentScrollTop() };
    var tt_view_w = YAHOO.util.Dom.getViewportWidth();
    var tt_view_h = YAHOO.util.Dom.getViewportHeight();

    var r = YAHOO.util.Dom.getRegion('DIRENQOverlay');
    var tt_size = { w: r.right - r.left, h: r.bottom - r.top };

    var bs = screenPos.y + tt_view_h;   // Bottom of Screen

    if (newPos[1] + tt_size.h > bs) {
        newPos[1] = bs - tt_size.h;
    }

    var rs = screenPos.x + tt_view_w;  // Right Edge if Screen
    if (newPos[0] + tt_size.w > rs) {
        newPos[0] -= tt_size.w + 30;
    }


    DELENQ_myOverlay.cfg.setProperty('xy', newPos);
}


DIRENQ.showtooltipfocus = function(e, elem) {
    if (!DELENQ_myOverlay) return;
    if (DELENQ_curElem != elem) {
        if (!elem.URL) return;
        DIRENQ.callAjax(elem.URL);
        DELENQ_curElem = elem;
    }
    DELENQ_myOverlay.show();

    var coords = elem.getAttribute("coords");
    var arcoords = coords.split(",");
    var x = parseInt(arcoords[0], 10) + 30;
    var y = parseInt(arcoords[1], 10) + 30;

    var p = YAHOO.util.Dom.getRegion("DIRENQ_"+elem.floorid);
    var newPos = [x + p.left, y + p.top];

    var screenPos = { x: YAHOO.util.Dom.getDocumentScrollLeft(), y: YAHOO.util.Dom.getDocumentScrollTop() };
    var tt_view_w = YAHOO.util.Dom.getViewportWidth();
    var tt_view_h = YAHOO.util.Dom.getViewportHeight();

    var r = YAHOO.util.Dom.getRegion('DIRENQOverlay');
    var tt_size = { w: r.right - r.left, h: r.bottom - r.top };

    var bs = screenPos.y + tt_view_h;   // Bottom of Screen

    if (newPos[1] + tt_size.h > bs) {
        newPos[1] = bs - tt_size.h;
    }

    var rs = screenPos.x + tt_view_w;  // Right Edge if Screen
    if (newPos[0] + tt_size.w > rs) {
        newPos[0] -= tt_size.w + 30;
    }


    DELENQ_myOverlay.cfg.setProperty('xy', newPos);
}



DIRENQ.hidetooltip = function() {
    if (!DELENQ_myOverlay) return;
    DELENQ_myOverlay.hide();
}

DIRENQ.createTip = function(elem, sURL, floorid) {
    if (!elem) return; // not yet initialized
    var listeners = YAHOO.util.Event.getListeners(elem);
    if (listeners) return;
    elem.URL = sURL;
    elem.floorid = floorid;
    YAHOO.util.Event.addListener(elem, 'mouseover', DIRENQ.showtooltip, elem);
    YAHOO.util.Event.addListener(elem, 'mouseout', DIRENQ.hidetooltip);
    YAHOO.util.Event.addListener(elem, 'mousemove', DIRENQ.showtooltip, elem);
    YAHOO.util.Event.addListener(elem, 'blur', DIRENQ.hidetooltip, elem);
    YAHOO.util.Event.addListener(elem, 'focus', DIRENQ.showtooltipfocus, elem);
}


YAHOO.util.Event.addListener(window, "load", DIRENQ.init);
