/*
Link Thumbnail v2.0.1
(c) Arc90, Inc.
http://www.arc90.com
http://lab.arc90.com
Licensed under : Creative Commons Attribution 2.5 http://creativecommons.org/licenses/by/2.5/
*/

/* Globals */
var kg_navigator = navigator.userAgent.toLowerCase();
var kg_isOpera = kg_navigator.indexOf('opera') >= 0? true: false;
var kg_isIE = kg_navigator.indexOf('msie') >= 0 && !kg_isOpera? true: false;
var kg_isSafari = kg_navigator.indexOf('safari') >= 0 || kg_navigator.indexOf('khtml') >= 0? true: false;
var kg_linkThumbUseClassName = true;
var kg_linksources = [['http://www.iwebtool2.com/img/?r=http://www.kypreosgroup.com.au&domain=', 202, 152], ['http://www.thumbizy.com/go_2.php?url=', 202, 152], ['http://images.websnapr.com/?size=s&url=', 202, 152], ['http://msnsearch.srv.girafa.com/srv/i?s=MSNSEARCH&r=', 160, 120]];
var kg_linksource = 0;

function kg_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.href;
		if ((b == '' || h.indexOf(b) < 0) && h.indexOf('://') > 0 && ((kg_linkThumbUseClassName && a.className.indexOf('linkthumb') >= 0) || !kg_linkThumbUseClassName)) {
			try {
				a.className += ' kg_linkpicLNK';
				if (a.id == '')
					a.id = 'kg_link'+ i;
				var d = kg_newNode('div', 'kg_linkpic'+ i, 'kg_linkpic');
				var m = kg_newNode('img', '', 'kg_linkpicIMG');
				// var n = h.replace(/[^:]*:\/\/([^:\/]*)(:{0,1}\/{1}.*)/, '$1');
				var n = escape(h);
				m.src = kg_linksources[kg_linksource][0] + n;
				m.width = kg_linksources[kg_linksource][1];
				m.height = kg_linksources[kg_linksource][2];
				m.style.width = kg_linksources[kg_linksource][1] +'px';
				m.style.height = kg_linksources[kg_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);

				kg_addEvent(a, 'mouseover',	function () { kg_showThumb(kg_isIE? event.srcElement.id: this.id); } );
				kg_addEvent(a, 'mouseout',	function () { kg_hideThumb(kg_isIE? event.srcElement.id: this.id); } );
			} catch(err) {
				a = null;
			}
		}
	}
}

function kg_showThumb(id) {
	try {
		var k = document.getElementById(id);
		var top = kg_findDimension(k, 'Top');
		var lnh = kg_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 (kg_isNumeric(lnh))
			lnh = parseInt(kg_isIE? lnh * 10: kg_isOpera? lnh/100: lnh); // IE brings back em units
		else
			lnh = default_height;
		var lft = kg_findDimension(k, 'Left');
		var nlf = kg_findMatchingDimensionViaNodes(k, 'Left', lft, 0);
		var pid = id.replace(/kg_link/, 'kg_linkpic');
		var p = document.getElementById(pid);
		p.style.display = 'block';
		p.style.top = (top + (kg_isIE && nlf? lnh + 8: 4) + lnh) + 'px';
		p.style.left = lft + 'px';
	} catch(err) { return; }
}

function kg_hideThumb(id) {
	try {
		var k = document.getElementById(id);
		var pid = id.replace(/kg_link/, 'kg_linkpic');
		var p = document.getElementById(pid);
		p.style.display = 'none';
	} catch(err) { return; }
}

function kg_getStyle(obj, styleIE, styleMoz) {
	if (kg_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 kg_findDimension(obj, pType) {
	if (kg_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 kg_findMatchingDimensionViaNodes(obj, pType, matching, notMatching) {
	var cur = 0, counter = 0;
	notMatching = notMatching == null? -1: notMatching;
	if(obj.parentNode)
		while(obj.parentNode) {
			cur = kg_findDimension(obj, pType);
			if (cur == matching && cur != notMatching)
				counter++;
			if (counter >= 2) return true;
			obj = obj.parentNode;
		}
	return false;
}

/* Events */
function kg_isString(o) { return (typeof(o) == "string"); }

function kg_isNumeric(o) { return (typeof(parseFloat(o).toString() == 'NaN'? 'xxx': parseFloat(o)) == "number" && parseFloat(o) != ''); }

function kg_addEvent(e, meth, func, cap) {
	if (kg_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 kg_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 */
kg_addEvent(window, 'load', kg_linkpic);

