/*javascript for Bubble Tooltips by Alessandro Fulciniti
  - http://pro.html.it - http://web-graphics.com */

function BubbleTooltips (element) {
   var Container = {
       init : function (element) {
            if(!document.getElementById || !document.getElementsByTagName) {
                return;
            }

            Container._addCssFile("BubbleTooltips.css");

            var h = document.createElement("span");
                h.id = "btc";
                h.setAttribute("id", "btc");
                h.style.position = "absolute";
                document.getElementsByTagName("body")[0].appendChild(h);

            if(typeof element == 'string') {
                var links = document.getElementById(element).getElementsByTagName("a");
            }

            var links_length = links.length;
            for(var i = 0; i < links_length; i++){
                Container._prepare(links[i]);
            }
       },

       _prepare: function (oNode) {
            var tooltip, t, b, s, l;
            t = oNode.getAttribute("title");
            if(t == null || t.length == 0) {
                t = oNode.innerHTML;
            }
            oNode.removeAttribute("title");

            s = Container._createEl("span", "top");
            s.appendChild(document.createTextNode(t));

            b = Container._createEl("b", "bottom");

            l = oNode.getAttribute("href");
            if(l.length > 30) {
                l = l.substr(0,27) + "...";
            }

            b.appendChild(document.createTextNode(l));

            tooltip = Container._createEl("span","tooltip");
            tooltip.appendChild(s);
            tooltip.appendChild(b);

            Container._setOpacity(tooltip);
            oNode.tooltip = tooltip;
            oNode.onmouseover = Container.showTooltip;
            oNode.onmouseout  = Container.hideTooltip;
            oNode.onmousemove = Container._locate;
       },

        showTooltip: function(e) {
            document.getElementById("btc").appendChild(this.tooltip);
            Container._locate(e);
        },


        hideTooltip: function (e) {
            var d = document.getElementById("btc");
            if(d.childNodes.length > 0) {
                d.removeChild(d.firstChild);
            }
        },

        _locate : function (e) {
            var posx = 0, posy = 0;
            if(e == null) {
                e = window.event;
            }

            if(e.pageX || e.pageY) {
                posx=e.pageX; posy=e.pageY;
            } else if(e.clientX || e.clientY) {
                if(document.documentElement.scrollTop){
                    posx = e.clientX + document.documentElement.scrollLeft;
                    posy = e.clientY + document.documentElement.scrollTop;
                } else {
                    posx = e.clientX+document.body.scrollLeft;
                    posy = e.clientY+document.body.scrollTop;
                }
            }


            document.getElementById("btc").style.top  = (posy + 25) + "px";
            document.getElementById("btc").style.left = (posx) + "px";
        },

        _setOpacity: function (oNode) {
            oNode.style.filter       = "alpha(opacity:85)";
            oNode.style.KHTMLOpacity = "0.85";
            oNode.style.MozOpacity   = "0.85";
            oNode.style.opacity      = "0.85";
        },

       _addCssFile : function (css_file) {
            var l = Container._createEl("link");
            l.setAttribute("type",  "text/css");
            l.setAttribute("rel",   "stylesheet");
            l.setAttribute("href",  css_file);
            l.setAttribute("media", "screen");
            document.getElementsByTagName("head")[0].appendChild(l);
       },

       _createEl: function (type, className){
            var x = document.createElement(type);
            x.className = className;
            return x;
       }
   };

   Container.init(element);
   return Container;
};
