//  ***********************
//  MEMBER TOOL TIPS
//  ***********************
//  JAVASCRIPT CLASS    
//  Author: Alex Bustin
//  Company: Sparkart  
//  =======================
//  MemberTooltip.js v[1]
//  Date: 27th Nov 2006
//  =======================


var com; if (!com) com = {};
if (!com.lpunderground) com.lpunderground = {};

com.lpunderground.MemberTooltip = function() {}

com.lpunderground.MemberTooltip.ITEM_TAG = "*";
com.lpunderground.MemberTooltip.ITEM_CLASS = "(member|friend)";
com.lpunderground.MemberTooltip.TOOL_TAG = "dl";
com.lpunderground.MemberTooltip.TOOL_CLASS = null;
com.lpunderground.MemberTooltip.DELAY = 250;

com.lpunderground.MemberTooltip.currentItem = null;
com.lpunderground.MemberTooltip.timer = null;

com.lpunderground.MemberTooltip.addLoadEvent = function () { // void
	if (window.addEventListener){ 
		window.addEventListener("load", com.lpunderground.MemberTooltip.initialize, false);
		return;
	} else if (window.attachEvent){ 
		if (window.attachEvent("onload", com.lpunderground.MemberTooltip.initialize)) {
			return;
		}
	}
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = com.lpunderground.MemberTooltip.initialize;
	} else {
		window.onload = function() {
			oldonload();
			com.lpunderground.MemberTooltip.initialize();
		};
	} 
};

com.lpunderground.MemberTooltip.initialize = function() {
	com.lpunderground.MemberTooltip.setBehavior();
}

com.lpunderground.MemberTooltip.setBehavior =  function() {
	var items = com.lpunderground.MemberTooltip.getItemNodes();
	var itemsLength = items.length;
	for (var i=0; i<itemsLength; i++) {
		var item = items[i];
		item.onmouseover = function() {
			if (com.lpunderground.MemberTooltip.currentItem == this) {
				//return;
			} else {
				com.lpunderground.MemberTooltip.onOutItem(com.lpunderground.MemberTooltip.currentItem)
			}
			clearInterval(com.lpunderground.MemberTooltip.timer)
			com.lpunderground.MemberTooltip.currentItem = this;
			com.lpunderground.MemberTooltip.timer = setInterval(function() {
				clearInterval(com.lpunderground.MemberTooltip.timer)
				com.lpunderground.MemberTooltip.onOverItem(com.lpunderground.MemberTooltip.currentItem)
			},  com.lpunderground.MemberTooltip.DELAY)
		}
	}
}

com.lpunderground.MemberTooltip.getItemNodes =  function() {
	var matchingItemNodes;
	var possibleItemNodes = document.getElementsByTagName(com.lpunderground.MemberTooltip.ITEM_TAG);
	if (com.lpunderground.MemberTooltip.ITEM_CLASS == null || com.lpunderground.MemberTooltip.ITEM_CLASS == "") {
		matchingItemNodes = possibleItemNodes;
	} else {
		var pattern = new RegExp("(^|\\s)"+com.lpunderground.MemberTooltip.ITEM_CLASS+"(\\s|$)");
		matchingItemNodes = new Array();
		var possibleItemNodesLength = possibleItemNodes.length;
		for (var i=0; i<possibleItemNodesLength; i++) {
			if (pattern.test(possibleItemNodes[i].className)) {
				matchingItemNodes.push(possibleItemNodes[i])
			}
		}
	}
	return matchingItemNodes;
}


com.lpunderground.MemberTooltip.getToolNode = function(item) {
	var matchingToolNodes;
	var possibleToolNodes = item.getElementsByTagName(com.lpunderground.MemberTooltip.TOOL_TAG);
	if (com.lpunderground.MemberTooltip.TAGCLASS == null || com.lpunderground.MemberTooltip.TAG_CLASS == "") {
		matchingToolNodes = possibleToolNodes;
	} else {
		var pattern = new RegExp("(^|\\s)"+com.lpunderground.MemberTooltip.TAG_CLASS+"(\\s|$)");
		matchingToolNodes = new Array();
		var possibleToolNodesLength = possibleToolNodes.length;
		for (var i=0; i<possibleToolNodesLength; i++) {
			if (pattern.test(possibleToolNodes[i].className)) {
				matchingToolNodes.push(possibleToolNodes[i])
			}
		}
	}
	return matchingToolNodes[0];
}

com.lpunderground.MemberTooltip.onOverItem = function(item) {
	var tooltip = com.lpunderground.MemberTooltip.getToolNode(item)
	tooltip.style.display = "block"	
	document.onmousemove = com.lpunderground.MemberTooltip.checkForMouseOut;
}

com.lpunderground.MemberTooltip.onOutItem = function(item) {
	if (item == null) {
		return;
	}
	clearInterval(com.lpunderground.MemberTooltip.timer)
	document.onmousemove = null;
	
	var tooltip = com.lpunderground.MemberTooltip.getToolNode(item)
	tooltip.style.display = "none"	
	com.lpunderground.MemberTooltip.currentItem =  null;
}

com.lpunderground.MemberTooltip.checkForMouseOut = function(e) {
	
	e = e || window.event;
	
	var x = com.lpunderground.MemberTooltip.findPosX(com.lpunderground.MemberTooltip.currentItem);
	var y = com.lpunderground.MemberTooltip.findPosY(com.lpunderground.MemberTooltip.currentItem);
	
	var width  = com.lpunderground.MemberTooltip.currentItem.offsetWidth;
	var height = com.lpunderground.MemberTooltip.currentItem.offsetHeight

	var mousex;
	var mousey;

	if (e.pageX || e.pageY) {
		mousex = e.pageX
		mousey = e.pageY
	} else {
		mousex = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft
		mousey = e.clientY + (document.documentElement.scrollTop) - document.documentElement.clientTop
	}

	
	if (!(mousex > x && mousex < x+width && mousey > y && mousey < y+height)) {
		com.lpunderground.MemberTooltip.onOutItem(com.lpunderground.MemberTooltip.currentItem)
	}
}
com.lpunderground.MemberTooltip.findPosX = function(obj) {
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

com.lpunderground.MemberTooltip.findPosY = function(obj) {
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}



com.lpunderground.MemberTooltip.addLoadEvent();
