var Tooltip = {
    container: "Background",
    onLoad: function() {
        var content = document.getElementById(Tooltip.container);
        var params = content.getElementsByTagName("p");
        var nodes;
        for (var i = 0; i < params.length; i++) {
            nodes = params[i].childNodes;
            for (var j = 0; j < nodes.length; j++) {
                if (nodes[j].nodeType == 3) 
                    Tooltip.injectAnchor(nodes[j], words);
            }
        }
    },
    injectAnchor: function(content) {
        var text, exp, pos, anc;
        for (word in words) {
            with ({word: word}) {
                text = content.nodeValue;
                pos = text.toLowerCase().indexOf(word.toLowerCase());
                if (pos < 1) continue;
                anc = document.createElement("a");
                anc.className = "tip";
                anc.href = "javascript:void(0);";
                if (anc.addEventListener) {
                    anc.addEventListener("mouseover", function(event){ Tooltip.showTip(word, event); }, false);
                    anc.addEventListener("mouseout", function(){ Tooltip.hideTip(); }, false);
                } else {
                    anc.attachEvent("onmouseover", function(event){ Tooltip.showTip(word, event); });
                    anc.attachEvent("onmouseout", function(){ Tooltip.hideTip(); });
                }
                anc.appendChild(document.createTextNode(text.substr(pos, word.length)));
                content.parentNode.insertBefore(anc, content.parentNode.insertBefore(
                            document.createTextNode(text.substr(pos + word.length)), content.nextSibling));
                content.nodeValue = text.substr(0, pos);
            }
        }
    },
    showTip: function(w, ev) {
        var tip = document.createElement("div");
        var header = document.createElement("h6");
        var note = document.createElement("p");
        tip.className = "tip";
        tip.id = "tip";
        header.innerHTML = "memo";
        note.innerHTML = words[w];
        tip.appendChild(header);
        tip.appendChild(note);
        var left = (ev.pageX || ev.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)) + 10;
        var top = (ev.pageY || ev.clientY + (document.documentElement.scrollTop || document.body.scrollTop)) + 15;
        tip.style.left = left + "px";
        tip.style.top = top + "px";
        document.getElementById(Tooltip.container).appendChild(tip);
    },
    hideTip: function() {
        var tip = document.getElementById("tip");
        if (tip != undefined) 
            document.getElementById(Tooltip.container).removeChild(tip);
    }
}

window.onload = function(){ Tooltip.onLoad(); };
