YAHOO.namespace("fxc.container.tooltips");

T = YAHOO.fxc.container.tooltips;
T.baseURL = "./?tooltipid=";
T.namePref = "tooltip-";
T.className = "tooltip";
T.rootNodeName = "main";
T.key = null;
T.data = {};
T.items = {};
T.itemsRE = new RegExp(encodeRE(T.namePref) + '([\\w\\-]+)', 'i');

T.handleSuccess = function(o)
{
    if (o.responseText !== undefined) {
        T.data[T.key] = o.responseText;
        T.setTooltip(T.key);
    }
}

T.callback =
{
    success:T.handleSuccess,
    failure:null
};

T.getTooltip = function(o)
{
    if (typeof T.tooltip == "undefined") return;

    var key = this.getAttribute("ttKey");
    if (key) {
        if (!T.data[key]) {
            T.key = key;
            T.tooltip.setBody("...");
            var request = YAHOO.util.Connect.asyncRequest('GET', T.baseURL + key, T.callback);
        } else {
            T.setTooltip(key);
        }
    }
}

T.setTooltip = function(key)
{
    T.tooltip.setBody(T.data[key]);
}

T.getItems = function(el) {
    var className = el.className.toLowerCase();
    if (-1 != className.indexOf(T.namePref.toLowerCase())) {
        var match = className.match(T.itemsRE);
        if (match && match[1]) {
            el.setAttribute("ttKey", match[1]);
            return true;
        }
    }
    return false;
}

T.initToolip = function()
{
    T.items = YAHOO.util.Dom.getElementsBy(T.getItems, "", T.rootNodeName);

    YAHOO.util.Dom.addClass(T.items, T.className);
    T.tooltip = new YAHOO.widget.Tooltip("tt", {context: T.items, text: ""});
    YAHOO.util.Event.addListener(T.items, "mouseover", T.getTooltip);
}

YAHOO.util.Event.addListener(window, "load", T.initToolip);