--- /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<document.links.length;ti++) {
+ var lnk = document.links[ti];
+ if (lnk.title) {
+ lnk.setAttribute("nicetitle",lnk.title);
+ lnk.removeAttribute("title");
+ addEvent(lnk,"mouseover",showNiceTitle);
+ addEvent(lnk,"mouseout",hideNiceTitle);
+ addEvent(lnk,"focus",showNiceTitle);
+ addEvent(lnk,"blur",hideNiceTitle);
+ }
+ }
+ var instags = document.getElementsByTagName("ins");
+ if (instags) {
+ for (var ti=0;ti<instags.length;ti++) {
+ var instag = instags[ti];
+ if (instag.dateTime) {
+ var strDate = instag.dateTime;
+ var dtIns = new Date(strDate.substring(0,4),parseInt(strDate.substring(4,6)-1),strDate.substring(6,8),strDate.substring(9,11),strDate.substring(11,13),strDate.substring(13,15));
+ instag.setAttribute("nicetitle","Added on "+dtIns.toString());
+ addEvent(instag,"mouseover",showNiceTitle);
+ addEvent(instag,"mouseout",hideNiceTitle);
+ addEvent(instag,"focus",showNiceTitle);
+ addEvent(instag,"blur",hideNiceTitle);
+ }
+ }
+ }
+}
+
+function findPosition( oLink ) {
+ if( oLink.offsetParent ) {
+ for( var posX = 0, posY = 0; oLink.offsetParent; oLink = oLink.offsetParent ) {
+ posX += oLink.offsetLeft;
+ posY += oLink.offsetTop;
+ }
+ return [ posX, posY ];
+ } else {
+ return [ oLink.x, oLink.y ];
+ }
+}
+
+function showNiceTitle(e) {
+ if (CURRENT_NICE_TITLE) hideNiceTitle(CURRENT_NICE_TITLE);
+ if (!document.getElementsByTagName) return;
+ if (window.event && window.event.srcElement) {
+ lnk = window.event.srcElement
+ } else if (e && e.target) {
+ lnk = e.target
+ }
+ if (!lnk) return;
+ if (lnk.nodeName.toUpperCase() != 'A') {
+ // lnk is not actually the link -- ascend parents until we hit a link
+ lnk = getParent(lnk,"A");
+ }
+ if (!lnk) return;
+ nicetitle = lnk.getAttribute("nicetitle");
+
+ var d = document.createElementNS(XHTMLNS,"div");
+ d.className = "nicetitle";
+ tnt = document.createTextNode(nicetitle);
+ pat = document.createElementNS(XHTMLNS,"p");
+ pat.className = "titletext";
+ pat.appendChild(tnt);
+ d.appendChild(pat);
+ if (lnk.href) {
+ tnd = document.createTextNode(lnk.href);
+ pad = document.createElementNS(XHTMLNS,"p");
+ pad.className = "destination";
+ pad.appendChild(tnd);
+ d.appendChild(pad);
+ }
+
+ // sam modif START ----------
+ STD_WIDTH = 300;
+ if (lnk.href) {
+ h = lnk.href.length;
+ } else { h = nicetitle.length; }
+ if (nicetitle.length) {
+ t = nicetitle.length;
+ }
+
+ //h_pixels = h*6; t_pixels = t*10;
+ h_pixels = 300;
+ t_pixels = t*10;
+ // sam modif END -------------
+
+ if (h_pixels > 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;
+ }
+}
+