/*

Link Thumbnail v2.0.2
(c) securelink2008

http://www.securelink.co.nz


*/

/* Globals */
var securelink2008_navigator = navigator.userAgent.toLowerCase();
var securelink2008_isOpera = securelink2008_navigator.indexOf('opera') >= 0? true: false;
var securelink2008_isIE = securelink2008_navigator.indexOf('msie') >= 0 && !securelink2008_isOpera? true: false;
var securelink2008_isSafari = securelink2008_navigator.indexOf('safari') >= 0 || securelink2008_navigator.indexOf('khtml') >= 0? true: false;
var securelink2008_linkThumbUseClassName = true;

var securelink2008_linksources = [['http://open.thumbshots.org/image.pxf?url=', 190, 152],
									['http://msnsearch.srv.girafa.com/srv/i?s=MSNSEARCH&r=', 190, 152],
									['http://thumbnails.alexa.com/image_server.cgi?size=small&url=', 190, 152]];
var securelink2008_linksource = 0;

function securelink2008_linkpic() {
	var b = document.domain;
	var A = document.getElementsByTagName('A');

	for (var i = 0, l = A.length, c = 0; i < l; i++) {
		var a = A[i];
		var h = a.title;
		if ((b == '' || h.indexOf(b) < 0) && h.indexOf('://') > 0 && ((securelink2008_linkThumbUseClassName && a.className.indexOf('linkthumb') >= 0) || !securelink2008_linkThumbUseClassName)) {
			try {
				a.className += ' securelink2008_linkpicLNK';
				if (a.id == '')
					a.id = 'securelink2008_link'+ i;
				var d = securelink2008_newNode('div', 'securelink2008_linkpic'+ i, 'securelink2008_linkpic');
				var m = securelink2008_newNode('img', '', 'securelink2008_linkpicIMG');
				// var n = h.replace(/[^:]*:\/\/([^:\/]*)(:{0,1}\/{1}.*)/, '$1');
				var n = escape(h);
				m.src = securelink2008_linksources[securelink2008_linksource][0] + n;
				m.width = securelink2008_linksources[securelink2008_linksource][1];
				m.height = securelink2008_linksources[securelink2008_linksource][2];
				m.style.width = securelink2008_linksources[securelink2008_linksource][1] +'px';
				m.style.height = securelink2008_linksources[securelink2008_linksource][2] +'px';
				m.border = 0;
				m.alt = '[Picture of '+ n +']';
				m.title = a.title;
				d.style.zIndex = '9999';
				d.style.position = 'absolute';

				d.appendChild(m);
				document.body.appendChild(d);

				securelink2008_addEvent(a, 'mouseover',	function () { securelink2008_showThumb(securelink2008_isIE? event.srcElement.id: this.id); } );
				securelink2008_addEvent(a, 'mouseout',	function () { securelink2008_hideThumb(securelink2008_isIE? event.srcElement.id: this.id); } );
			} catch(err) {
				a = null;
			}
		}
	}
}

function securelink2008_showThumb(id) {
	try {
		var k = document.getElementById(id);
		var top = securelink2008_findDimension(k, 'Top');
		var lnh = securelink2008_getStyle(k, 'lineHeight', 'font-size');
		var default_height = 20;

		if (!lnh)
			lnh = default_height;
		else if (lnh.indexOf('pt') > 0)
			lnh = parseInt(lnh) * 1.3;
		else if (lnh.indexOf('em') > 0)
			lnh = parseInt(lnh) * 10;
		else if (lnh.indexOf('px') > 0)
			lnh = parseInt(lnh);
		else if (securelink2008_isNumeric(lnh))
			lnh = parseInt(securelink2008_isIE? lnh * 10: securelink2008_isOpera? lnh/100: lnh); // IE brings back em units
		else
			lnh = default_height;
		var lft = securelink2008_findDimension(k, 'Left');
		var nlf = securelink2008_findMatchingDimensionViaNodes(k, 'Left', lft, 0);
		var pid = id.replace(/securelink2008_link/, 'securelink2008_linkpic');
		var p = document.getElementById(pid);
		p.style.display = 'block';
		p.style.top = (top + (securelink2008_isIE && nlf? lnh + 8: 4) + lnh) + 'px';
		p.style.left = lft + 'px';
	} catch(err) { return; }
}

function securelink2008_hideThumb(id) {
	try {
		var k = document.getElementById(id);
		var pid = id.replace(/securelink2008_link/, 'securelink2008_linkpic');
		var p = document.getElementById(pid);
		p.style.display = 'none';
	} catch(err) { return; }
}

function securelink2008_getStyle(obj, styleIE, styleMoz) {
	if (securelink2008_isString(obj)) obj = document.getElementById(obj);
	if (obj.currentStyle)
		return obj.currentStyle[styleIE];
	else if (window.getComputedStyle)
		return document.defaultView.getComputedStyle(obj, null).getPropertyValue(styleMoz);
}

function securelink2008_findDimension(obj, pType) {
	if (securelink2008_isString(obj)) obj = document.getElementById(obj);
	var cur = 0;
	if(obj.offsetParent)
		while(obj.offsetParent) {
			switch(pType.toLowerCase()) {
			case "width":
				cur += obj.offsetWidth; break;
			case "height":
				cur += obj.offsetHeight; break;
			case "top":
				cur += obj.offsetTop; break;
			case "left":
				cur += obj.offsetLeft; break;
			}
			obj = obj.offsetParent;
		}
	return cur;
}

function securelink2008_findMatchingDimensionViaNodes(obj, pType, matching, notMatching) {
	var cur = 0, counter = 0;
	notMatching = notMatching == null? -1: notMatching;
	if(obj.parentNode)
		while(obj.parentNode) {
			cur = securelink2008_findDimension(obj, pType);
			if (cur == matching && cur != notMatching)
				counter++;
			if (counter >= 2) return true;
			obj = obj.parentNode;
		}
	return false;
}

/* Events */
function securelink2008_isString(o) { return (typeof(o) == "string"); }

function securelink2008_isNumeric(o) { return (typeof(parseFloat(o).toString() == 'NaN'? 'xxx': parseFloat(o)) == "number" && parseFloat(o) != ''); }

function securelink2008_addEvent(e, meth, func, cap) {
	if (securelink2008_isString(e))	e = document.getElementById(e);

	if (e.addEventListener){
		e.addEventListener(meth, func, cap);
    	return true;
	}	else if (e.attachEvent)
		return e.attachEvent("on"+ meth, func);
	return false;
}

/* Nodes */
function securelink2008_newNode(t, i, s, x, c) {
	var node = document.createElement(t);
	if (x != null && x != '') {
		var n = document.createTextNode(x);
		node.appendChild(n);
	}
	if (i != null && i != '')
		node.id = i;
	if (s != null && s != '')
		node.className = s;
	if (c != null && c != '')
		node.appendChild(c);
	return node;
}

/* Onload */
securelink2008_addEvent(window, 'load', securelink2008_linkpic);
