diff -r 53cff4b4a802 -r bde1974c263b web/wp-content/plugins/nice-titles/nicetitle.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/wp-content/plugins/nice-titles/nicetitle.js Wed Feb 03 15:37:20 2010 +0000 @@ -0,0 +1,222 @@ +addEvent(window, "load", makeNiceTitles); + +var XHTMLNS = "http://www.w3.org/1999/xhtml"; +var CURRENT_NICE_TITLE; +var browser = new Browser(); + +function makeNiceTitles() { + if (!document.createElement || !document.getElementsByTagName) return; + // add namespace methods to HTML DOM; this makes the script work in both + // HTML and XML contexts. + if(!document.createElementNS) + { + document.createElementNS = function(ns,elt) { + return document.createElement(elt); + } + } + + if( !document.links ) + { + document.links = document.getElementsByTagName("a"); + } + for (var ti=0;ti STD_WIDTH) { + w = h_pixels; + } else if ((STD_WIDTH>t_pixels) && (t_pixels>h_pixels)) { + w = t_pixels; + } else if ((STD_WIDTH>t_pixels) && (h_pixels>t_pixels)) { + w = h_pixels; + } else { + w = STD_WIDTH; + } + + d.style.width = w + 'px'; + + /* + mx = lnk.offsetLeft; + my = lnk.offsetTop; + */ + mpos = findPosition(lnk); + mx = mpos[0]; + my = mpos[1]; + //xy = getMousePosition(e); + //mx = xy[0]; my = xy[1]; + + d.style.left = (mx+15) + 'px'; + d.style.top = (my+35) + 'px'; + if (window.innerWidth && ((mx+w) > window.innerWidth)) { + d.style.left = (window.innerWidth - w - 25) + "px"; + } + if (document.body.scrollWidth && ((mx+w) > document.body.scrollWidth)) { + d.style.left = (document.body.scrollWidth - w - 25) + "px"; + } + + document.getElementsByTagName("body")[0].appendChild(d); + + CURRENT_NICE_TITLE = d; +} + +function hideNiceTitle(e) { + if (!document.getElementsByTagName) return; + if (CURRENT_NICE_TITLE) { + document.getElementsByTagName("body")[0].removeChild(CURRENT_NICE_TITLE); + CURRENT_NICE_TITLE = null; + } +} + +// Add an eventListener to browsers that can do it somehow. +// Originally by the amazing Scott Andrew. +function addEvent(obj, evType, fn){ + if (obj.addEventListener){ + obj.addEventListener(evType, fn, false); + return true; + } else if (obj.attachEvent){ + var r = obj.attachEvent("on"+evType, fn); + return r; + } else { + return false; + } +} + +function getParent(el, pTagName) { + if (el == null) return null; + else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase()) // Gecko bug, supposed to be uppercase + return el; + else + return getParent(el.parentNode, pTagName); +} + +function getMousePosition(event) { + if (browser.isIE) { + x = window.event.clientX + document.documentElement.scrollLeft + + document.body.scrollLeft; + y = window.event.clientY + document.documentElement.scrollTop + + document.body.scrollTop; + } + if (browser.isNS) { + x = event.clientX + window.scrollX; + y = event.clientY + window.scrollY; + } + return [x,y]; +} + +// Determine browser and version. + +function Browser() { +// blah, browser detect, but mouse-position stuff doesn't work any other way + var ua, s, i; + + this.isIE = false; + this.isNS = false; + this.version = null; + + ua = navigator.userAgent; + + s = "MSIE"; + if ((i = ua.indexOf(s)) >= 0) { + this.isIE = true; + this.version = parseFloat(ua.substr(i + s.length)); + return; + } + + s = "Netscape6/"; + if ((i = ua.indexOf(s)) >= 0) { + this.isNS = true; + this.version = parseFloat(ua.substr(i + s.length)); + return; + } + + // Treat any other "Gecko" browser as NS 6.1. + + s = "Gecko"; + if ((i = ua.indexOf(s)) >= 0) { + this.isNS = true; + this.version = 6.1; + return; + } +} +