/*
 * Pluralink - easy multilinking. 
 * http://pluralink.com/
*/

var pluralink = {
	pluralinkOptions : {
		pluralinkOver		: false,
		pluralinkOldTitle 	: "",
		hideInterval 		: 500,
		is_chrome 			: navigator.userAgent.toLowerCase().indexOf('chrome') > -1,
		is_safari 			: navigator.userAgent.toLowerCase().indexOf('safari') > -1,
		is_firefox 			: navigator.userAgent.toLowerCase().indexOf('firefox') > -1,
		is_opera 			: navigator.userAgent.toLowerCase().indexOf('opera') > -1,
		is_ie 				: navigator.userAgent.toLowerCase().indexOf('msie') > -1,
		a					: document.createElement('form'),
		pattern_normal		: /\|\|/,
		pattern_entity		: /\%7C\%7C/,
		interval			: 0
	},
	
	pluralink_open : function(link) {
		pluralink.pluralinkOptions.a.setAttribute('action',link);
		pluralink.pluralinkOptions.a.submit();
	},
	
	pluralink : function(obj) {
		return false;
	},
	
	pluralink_findPos : function(obj)
	{
		var curleft = 0;
		var curtop = 0;
		var w = obj.offsetWidth;
		var h = obj.offsetHeight;

		  if( typeof( obj.offsetParent ) != 'undefined' ) {
		    for( var posX = 0, posY = 0; obj; obj = obj.offsetParent ) {
		      posX += obj.offsetLeft;
		      posY += obj.offsetTop;
		    }
		    curleft = posX;
			curtop = posY;
		  } else {
			curleft = obj.x;
			curtop = obj.y;
		  }
		
		return {left:curleft,top:curtop, height:h, width:w};
	}, 
	
	pluralink_over : function(obj) {
		var href = obj.href.split(pluralink.pluralinkOptions.pattern_normal);
		if (href.length < 2) {
			href = obj.href.split(pluralink.pluralinkOptions.pattern_entity);
		}
		pluralink.pluralinkOptions.pluralinkOldTitle = obj.getAttribute("title");
		
		obj.setAttribute("title","");
		if (pluralink.pluralinkOptions.pluralinkOldTitle != null) {
			var titles = pluralink.pluralinkOptions.pluralinkOldTitle.split(/\|\|/);
		}
		var pos = pluralink.pluralink_findPos(obj);
		var div = document.getElementById("pluralink-overlay");
		var content = document.getElementById("pluralink-bg");
		content.innerHTML = "";
		var first = true;
		for(c = 0;c<href.length;c++) {
			if (pluralink.pluralinkOptions.pluralinkOldTitle) {
				var text = "<a href='"+href[c]+"'>"+titles[c]+"</a>";
			} else {
				var text = "<a href='"+href[c]+"'>"+href[c]+"</a>";
			}
			
			if (first) {
				content.innerHTML = text;
				first = false;
			} else {
				content.innerHTML = content.innerHTML+"<br />"+text;
			}
		}
		if (pluralink.pluralinkOptions.is_ie) {
			if (document.body.style.marginTop) {
				var marg = document.body.style.marginTop;
			} else {
				var marg = 15;
			}
			var styletop = pos.top+pos.height+marg;
			div.style.display = "block";
			div.style.position = "absolute";
			div.style.left = (pos.left+parseInt(pos.width/2))+'px';
			div.style.top = styletop+'px';
			div.className = 'pluralink-overlay';
		} else {
			div.setAttribute('style','display: block; position: absolute; left: '+(pos.left+parseInt(pos.width/2))+'px; top: '+(pos.top+pos.height)+'px;');
			div.setAttribute('class','pluralink-overlay');
		}

		pluralink.pluralinkOptions.pluralinkOver = true;
	},
		
	pluralink_out : function(obj) {
		pluralink.pluralinkOptions.pluralinkOver = false;
		if (pluralink.pluralinkOptions.pluralinkOldTitle != null) {
			obj.setAttribute("title",pluralink.pluralinkOptions.pluralinkOldTitle);
		} else {
			obj.setAttribute("title","");
		}
	},
	
	pluralink_hideDiv : function() {
		if (!pluralink.pluralinkOptions.pluralinkOver) {
			var div = document.getElementById("pluralink-overlay");
			if (pluralink.pluralinkOptions.is_ie) {
				div.style.display = "none";
			} else {
				if (div) {
					div.setAttribute('style','display: none;');
				}
			}
		}
	},
	
	init : function() {	
		pluralink.pluralinkOptions.interval = window.setInterval(pluralink.pluralink_hideDiv, pluralink.pluralinkOptions.hideInterval);
		
		var div = document.createElement('div');
		div.setAttribute('id','pluralink-overlay');
		div.setAttribute('style','display: none;');
		if (pluralink.pluralinkOptions.is_ie) {
			div.attachEvent('onmouseover',function() {pluralink.pluralinkOptions.pluralinkOver = true;});
			div.attachEvent('onmouseout',function() {pluralink.pluralinkOptions.pluralinkOver = false;});
		} else {
			div.setAttribute('onMouseOver','pluralink.pluralinkOptions.pluralinkOver = true;');
			div.setAttribute('onMouseOut','pluralink.pluralinkOptions.pluralinkOver = false;');
		}
		
		var divtop = document.createElement('div');
		divtop.setAttribute('id','pluralink-top');
		
		var divbg = document.createElement('div');
		divbg.setAttribute('id','pluralink-bg');
		
		var divbottom = document.createElement('div');
		divbottom.setAttribute('id','pluralink-bottom');
		
		div.appendChild(divtop);
		div.appendChild(divbg);
		div.appendChild(divbottom);
		
		document.body.appendChild(div);
		var elements = document.getElementsByTagName("a");
		
		for(var c=0;c<elements.length;c++) {
			
			var el = elements[c];
			
			var hr = el.href.split(pluralink.pluralinkOptions.pattern_normal);
			if (hr. length < 2) {
				hr = el.href.split(pluralink.pluralinkOptions.pattern_entity);
			}
			if (hr.length > 1) {
				el.href = el.href.replace(pluralink.pluralinkOptions.pattern_entity,'||');
				var innertext = el.innerHTML;
				el.innerHTML = innertext+"<sup style='font-size: 0.7em;'>["+hr.length+"]</sup>";
				if (pluralink.pluralinkOptions.is_ie) {
					el.onclick     = function() { pluralink.pluralink(this); return false;};
					el.onmouseover = function() { pluralink.pluralink_over(this);};
					el.onmouseout  = function() { pluralink.pluralink_out(this); };
					
				} else {
					el.setAttribute('onClick','pluralink.pluralink(this); return false;');
					el.setAttribute('onMouseOver','pluralink.pluralink_over(this);');
					el.setAttribute('onMouseOut','pluralink.pluralink_out(this);');
				}
			}						
			
		}

	}
};

function pluralink_init() {
	if (jQuery == undefined) {
		if ( document.addEventListener ) {
			document.addEventListener( "DOMContentLoaded", pluralink.init, false);
		} else if ( document.attachEvent ) {
			pluralink.pluralinkOptions.is_ie = true;
			document.attachEvent("onreadystatechange", function(){
				if ( document.readyState === "complete" ) {
					pluralink.init();
				}
			});
		}
	} else {
		jQuery(document).ready(function() {pluralink.init();});
	}
}

pluralink_init();
