/*
offsetX[int]
offsetY[int]
position[tr|tl|br|bl]
className[false|string]
dataElement[element]
dataString[string]
dataStringFunction[function]
dataElementFunction[function]
id[string]
*/

Object.extend(Wizzle,

	{
	
	toolTip: function(obj,para){
		var paraObj = {
			offsetX: 10,
			offsetY: 10,
			position: 'tr',
			className:'toolTip',
			id:false
		}
		
		Object.extend(paraObj,para)
		
		obj = $(obj)
		
		var tip = document.createElement('div')
		if(paraObj.id)tip.id = paraObj.id
		tip.style.position = 'absolute'
		tip.style.zIndex = 10000;
		tip.style.visibility = 'hidden'
		
		var data =document.createElement('div') 
		
		if(paraObj.dataString)data.innerHTML = paraObj.dataString
		if(paraObj.dataElement){
			var ele = $(paraObj.dataElement)
			data.appendChild(ele)
			ele.style.display = "block"
		}
		
		if(paraObj.dataStringFunction)data.innerHTML = paraObj.dataStringFunction()
		
		if(paraObj.dataElementFunction){
			var ele = paraObj.dataElementFunction()
			data.appendChild(ele)
		}
		
		if(paraObj.className)data.className = paraObj.className
		
		tip.appendChild(data)
		document.body.appendChild(tip)
		
		var w = parseInt(tip.offsetWidth)
		var h = parseInt(tip.offsetHeight)
		
		var x = paraObj.offsetX
		var y = paraObj.offsetY
		
		if(paraObj.position.indexOf('l') != -1)x = (-1*(x)) - w 
		if(paraObj.position.indexOf('t') != -1)y = (-1*(y)) - h
			
		Event.observe(obj,'mousemove',pointer,false)
		function pointer(event){
			tip.style.left = Event.pointerX(event)  + x + 'px'
			tip.style.top = Event.pointerY(event)  + y + 'px'
			if(tip.style.visibility != "visible")tip.style.visibility = "visible"
		}
		
		obj.onmouseout = function(){
			if(ele){
				ele.style.display = 'none'
				document.body.appendChild(ele)
			}
			document.body.removeChild(tip)
		}
	}
	
	}
);