var bH = {//Bubble Hover
	addEvent: function(elm, evType, fn, useCapture)
	{
		if(elm.addEventListener){
			elm.addEventListener(evType, fn, useCapture);
			return true;
		}else if(elm.attachEvent){
			var r = elm.attachEvent('on' + evType, fn);
			return r;
		}else{
			elm['on' + evType] = fn;
		}
	},
	
	init: function()
	{
		var bubble = document.getElementById('bubble_wrapper');
		if (!bubble) return;
		bH.addEvent(document, 'mousemove', bH.moveBubble, false);
		var lis = document.getElementsByTagName('li');

		for (var i = 0; i < lis.length; i++)
		{
			for (var j = 0; j < lis[i].childNodes.length; j++)
			{
				if (lis[i].childNodes[j].nodeName.toLowerCase() == "a") {
					
					var a = lis[i].childNodes[j];
					
					if (a.getAttribute('rel') == "bubble") {
						bH.addEvent(a, 'mouseover', bH.bOver, false);
						bH.addEvent(a, 'mouseout', bH.bOut, false);
					}
				}	
			}
		}
	},
	
	getBubble: function()
	{
		var bubble = document.getElementById('bubble_wrapper');
		return bubble;
	},
	
	bOver: function(e)
	{

		var target = window.event ? window.event.srcElement : e ? e.target : null;
		
		var bubble = bH.getBubble();
		//document.write('hello');
		if (!bubble) retun;
		
		var holder = document.getElementById('bubble_body');
		while (target.tagName.toLowerCase() != 'li') {
			target = target.parentNode;
		}
		for (var i = 0; i < target.childNodes.length; i++)
		{
			if (target.childNodes[i].nodeName.toLowerCase() == 'p') {
				var content = target.childNodes[i].innerHTML;
			}
		}
		holder.innerHTML = "<p>"+content+"</p>";
		bubble.style.visibility = "visible";
		
	},
	
	bOut: function(e)
	{
		var target = window.event ? window.event.srcElement : e ? e.target : null;
		
		if (!target) return;
		
		var bubble = bH.getBubble();
		
		if (!bubble) retun;
		
		bubble.style.visibility = "hidden";
	},
	
	moveBubble: function(e)
	{
		
		if (!e) return;
		var bubble = bH.getBubble();
		//document.write('hello');
		if (!bubble) retun;
		
		var posx = 0;
		var posy = 0;
		
		if (e.pageX || e.pageY) 	{
			posx = e.pageX;
			posy = e.pageY;
		}
		else if (e.clientX || e.clientY) 	{
			posx = e.clientX + document.body.scrollLeft
				+ document.documentElement.scrollLeft;
			posy = e.clientY + document.body.scrollTop
				+ document.documentElement.scrollTop;
		}
		
		//alert(posx);
		
		bubble.style.top = (posy-112)+"px";
		bubble.style.left = (posx+2)+"px";
	}
}

bH.addEvent(window, 'load', bH.init, false);