All pastes #193094 Raw Edit

Someone

public javascript v1 · immutable
·published 2006-10-06 15:40 UTC
rendered paste body
// SmartLink v0.2// Grant Harding at fxcm, 2006var baseUrl = "http://fxwords.dev.fxcm.com/"; // base urlvar removeWords = true;          // link word once?var wordUrl = baseUrl+"Smartlink.do?url="; // url for arrayvar wordsShowDef = true;        // show definitionvar wordsDefTooltip = true;     // show as tooltip (otherwise will create custom div tag) [wordsShowDef must be true]var _slE = document.getElementById('article');/* load js from fxwords w/ js array */var _ref = document.location.href.replace(/\&/g,'%26').replace(/\'/g, '%27').replace(/\"/g, '%22'); // 'var script = wordUrl+_ref;document.write('<s'+'cript type="text/javascript" src="'+script+'"></script>');document.write('<style type="text/css">#slBox { background-image: url('+baseUrl+'test/def.gif); }</style>');var _boxactive = 0;//window.onload = function() { loadSmartLinks(); }function loadSmartLinks() {/* load words */  }function _loadWords(req) {  var _ws = req.getElementsByTagName('def');  for (i = 0; i < _ws.length; i++) {    var _w = req.getElementsByTagName('def')[i];    _f['word'] = _w.getElementsByTagName('word')[0];    _f['def'] = _w.getElementsByTagName('defi')[0];    _f['link'] = _w.getElementsByTagName('link')[0];    defs.push(_f);  }  /* traverse through dom and check for nodeType == 3 (text) */  _travEle(document.getElementById('article'));}function startTrav() {    _travEle(document.getElementById('article'));}function _travEle(e) {  var c = e.childNodes;  for (var i = 0; i < c.length; i++) {    if (defs.length == 0) { break; }    if (c[i].nodeType == 3) { if (_parseEle(c[i])) { i++; } }    else if (!(c[i].nodeName == 'A' && c[i].href.length > 0)) {      _travEle(c[i]);    }  }}function _parseEle(e) {    var orig = e.nodeValue;  var i = orig;  if (orig.replace(/\s+/).length == 0) return;  var l = i.toLowerCase();    var firstTermPos = -1;  var firstTerm = null;    for (j = 0; j < defs.length; j++) {    var term = defs[j]['word'];    var url = defs[j]['link'];    var def = defs[j]['def'];        var t = l.indexOf(term);    if (t > -1 && (t < firstTermPos || firstTermPos < 0)) {      firstTermPos = t;      firstTerm = j;    }  }    if (firstTermPos > -1) {    if (firstTermPos > 0 && i.substring(firstTermPos - 1, firstTermPos).match(/[a-zA-Z]/)) {        return false;    }    var first = document.createTextNode(i.substring(0,firstTermPos));    var second = document.createElement('a');    second.appendChild(document.createTextNode(i.substring(firstTermPos, firstTermPos+defs[firstTerm]['word'].length)));    second.setAttribute("href", defs[firstTerm]['link']);    if (wordsShowDef == true) {        if (wordsDefTooltip == true) {            second.setAttribute("title", defs[firstTerm]['def']);        } else {            second.setAttribute("onMouseOver", "showBox(this, event,'"+defs[firstTerm]['def']+"')");            second.setAttribute("onMouseOut", "setTimeout('hideBox()',2000)");        }    }    second.setAttribute("target", "_blank");    var third = document.createTextNode(i.substring(firstTermPos+defs[firstTerm]['word'].length, i.length));        var p = e.parentNode;        p.replaceChild(third,e)    p.insertBefore(second, third);    p.insertBefore(first, second);    if (removeWords == true) {      defs.splice(firstTerm,1);    }    return true;  }    return false;}function _urlencode(plaintext) {	var SAFECHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.!~*'()";	var HEX = "0123456789ABCDEF";	var encoded = "";	for (var i = 0; i < plaintext.length; i++ ) {		var ch = plaintext.charAt(i);	    if (ch == " ") {		    encoded += "+";				// x-www-urlencoded, rather than %20		} else if (SAFECHARS.indexOf(ch) != -1) {		    encoded += ch;		} else {		    var charCode = ch.charCodeAt(0);			if (charCode > 255) {				encoded += "+";			} else {				encoded += "%";				encoded += HEX.charAt((charCode >> 4) & 0xF);				encoded += HEX.charAt(charCode & 0xF);			}		}	} // for	return encoded;}function hideBox() {    _boxactive--;    if (_boxactive < 1) {        document.getElementById('slBox').style.display = 'none';        _boxactive = 0;    }}function showBox(e,event,def) {_boxactive++;var curleft = curtop = 0;	if (e.offsetParent) {		curleft = e.offsetLeft		curtop = e.offsetTop                obj = e;		while (obj = obj.offsetParent) {			curleft += obj.offsetLeft			curtop += obj.offsetTop		}	}var _b = document.getElementById('slBox');if (_b == null) {    _d = document.createElement('div');    _d.setAttribute('id','slBox');    _dh = document.createElement('h5');    _dh.appendChild(document.createTextNode('FXWords'));    _dp = document.createElement('p');    _dp.appendChild(document.createTextNode(''));    _d.appendChild(_dh);    _d.appendChild(_dp);    _d.background = 'http://fxwords.dev.fxcm.com/test/def.gif';    _d.style.width = '194px';    _d.style.height = '93px';    _d.style.display = 'none';    _d.style.position = 'absolute';    _d.setAttribute("onMouseOver", "_boxactive++");    _d.setAttribute("onMouseOut", "setTimeout('hideBox()',2000)");    document.getElementsByTagName('body')[0].appendChild(_d);}var _b = document.getElementById('slBox');_b.getElementsByTagName('p')[0].innerHTML = def;_b.style.left = curleft + 'px';_b.style.top = (curtop + 20) + 'px';_b.style.display = 'block';}