/*------------------------------------------------------------------------------
  New window link script
  by Marko Dugonjic <http://www.maratz.com/>
  Edited and fixed by Oleg Stepura <http://oleg.stepura.com/>
------------------------------------------------------------------------------*/

// Config:
var path_to_icon 		= '/img/new-window.gif',
	link_alt_text 		= '(Open this link in a new window?)',
	link_title_text 	= 'Open this link in a new window!';

// detect if the element is multiline	
function isMultilne (elm) {
	var h = elm.offsetHeight;
	var c = elm.innerHTML;
	elm.innerText = 'a';
	nh = elm.offsetHeight;
	elm.innerHTML = c;
	return nh < h;
}

// get the style property of the element
function getStyleVal (elem, IEStyleName, CSSStyleName) {
	var target = '';
	
	if (elem.currentStyle) {
		target = elem.currentStyle[IEStyleName];
	} else if (window.getComputedStyle) {
		target = window.getComputedStyle(elem, '').getPropertyValue(CSSStyleName);
	} else {
		target = '';
	}
	return target;
}

function new_window_link() {
	var d 	= document,
		dn 	= d.domain;
		
	if (!d.getElementById || !d.createTextNode || !dn) return;
	
	var content = d.getElementById('content');
	
	if (content) {
		var l = content.getElementsByTagName('a'),
			lnk,
			i = l.length;
		
		while (i--) {
			
			lnk = l[i];
			
			// skip mailto links
			if (lnk.href.match(/^mailto:/)) continue;
			
			var hasImage = false;
			
			// since we are here: fix all links with backgrounds in IE 7
			if (getStyleVal(lnk, 'backgroundImage', 'background-image').indexOf("gif") + 1) {
					var h  = lnk.parentNode.offsetHeight;
					var bi = getStyleVal(lnk, 'backgroundImage', 'background-image').replace(/url\(\"?/i, '').replace(/\"?\)/gi, '');
					var pr = getStyleVal(lnk, 'paddingRight', 'padding-right');
					var ns = d.createElement('img');
					ns.setAttribute('src', bi);
					ns.setAttribute('alt', '');
					ns.style.backgroundColor = 'transparent';
					ns.style.border = '0';
					ns.style.margin = 0;
					ns.style.padding = 0;
					ns.style.verticalAlign = 'baseline';
					ns.className = 'link-decorator';
					lnk.style.backgroundImage = 'none';
					lnk.style.paddingRight = '.2em';
					lnk.parentNode.insertBefore(ns, lnk.nextSibling);
					if (Math.abs(lnk.parentNode.offsetHeight - h) > 10) { /* difference of height is more than 5px: don`t add a fixing img */
						ns.style.display = "none";
					}
					else {
						hasImage = true;
					}
			}
	
			// just for off-site links and links without target attribute
			if (lnk.href.length > 1 && lnk.href.split('/')[2].replace(/www\./, '') != dn.replace(/www\./, '')
				&& !lnk.getAttribute('target')) {
	
				// create new elements
				var nwl 		= d.createElement('a');
				var nwi 		= d.createElement('img');
				var spc 		= d.createTextNode(' ');
				var spc2 		= d.createTextNode(' ');
	
				// setup image attributes
				nwi.setAttribute('src', 	path_to_icon);
				nwi.setAttribute('alt', 	link_alt_text);
				nwi.setAttribute('title', 	link_title_text);
	
				// set link attributes
				nwl.setAttribute('href', 	lnk.getAttribute('href'));
				nwl.setAttribute('target', 	'_blank');
				nwl.setAttribute('title', 	link_title_text);
				nwl.className = 'new-window-link';
				nwl.style.padding = 0;
	
				// append new elements
				nwl.appendChild(nwi);
				
				if (hasImage) {
					lnk.parentNode.insertBefore(spc,  lnk.nextSibling.nextSibling);
					lnk.parentNode.insertBefore(nwl,  lnk.nextSibling.nextSibling.nextSibling);
					lnk.parentNode.insertBefore(spc2, lnk.nextSibling.nextSibling.nextSibling.nextSibling);
				}
				else {
					lnk.parentNode.insertBefore(spc,  lnk.nextSibling);
					lnk.parentNode.insertBefore(nwl,  lnk.nextSibling.nextSibling);
					lnk.parentNode.insertBefore(spc2, lnk.nextSibling.nextSibling.nextSibling);
				}
					
			}
			
		}
	}
}
onload = new_window_link;
