var mInfoTipWrap = undefined;
var mInfoTipArrow = undefined;
var mInfoTipContent = undefined;
var mInfoTipShadow = undefined;
var mInfoTipContentShadow = undefined; 
var mInfoTipShadowMargin = 4;
function initInfoTip(){
	mInfoTipArrow = _newElement2Body(
			"div",
			{"opacity": "1"},
			"infoTipArrow", 
			"mInfoTipArrow");
	
	mInfoTipWrap = _newElement2Body(
			"div",
			{"opacity": "1"},
			"infoTipWrap", 
			"mInfoTipWrap");	
	mInfoTipWrap.innerHTML = '<div class="infoTipContent" id="mInfoTipContent"></div><div class="infoTipBottom"></div>';
	mInfoTipContent = _("mInfoTipContent");
	
	
	mInfoTipShadow = _newElement2Body(
			"div",
			{"opacity": "0.6", "display":"none"},
			"infoTipWrapShadow", 
			"mInfoTipShadow");	
	mInfoTipShadow.innerHTML = '<div class="infoTipContentShadow" id="mInfoTipContentShadow"></div><div class="infoTipBottomShadow"></div>';
	
	mInfoTipContentShadow = _("mInfoTipContentShadow");
	parseInfoTips();
}

dojo.addOnLoad(initInfoTip);

function infoOnMouseOver(){
	if(!this.infoTip) return false;
	var w = _WindowSize();
	
	mInfoTipContent.innerHTML = this.infoTip;
	var contentDim =  _Dimensions(mInfoTipContent);
	var infoTipDim = _Dimensions(mInfoTipWrap);
	var myBounds = _ViewportOffset(this,false);
	
	var as = mInfoTipArrow.style;
	var ws = mInfoTipWrap.style;
	var ss = mInfoTipShadow.style;
	
	var middle = Math.round(myBounds.h/2)+myBounds.t;
	
	var tipLeft = myBounds.l + myBounds.w + 19;
	var arrowLeft;
	if ((tipLeft+infoTipDim.width)>w.width){
		tipLeft = myBounds.l - 19 - infoTipDim.width;
		arrowLeft = myBounds.l - 20;
		as.backgroundPosition = "0 0";
	}else{
		arrowLeft = myBounds.l + myBounds.w;
		as.backgroundPosition = "0 -17px";
	}
	tipTop = middle- (contentDim.height/2);
	
	mInfoTipContentShadow.style.height =  contentDim.height +"px";
	ss.top = (tipTop+mInfoTipShadowMargin) +"px";
	ss.left = (tipLeft +mInfoTipShadowMargin) +"px";
	ss.display="block";
	
	
	as.top = (middle - 8 ) +"px";
	as.left = arrowLeft +"px";
	
	ws.top = tipTop +"px";
	ws.left = tipLeft +"px";

	return false;

}

function infoOnMouseOut(){
	if(!this.infoTip) return false;
	mInfoTipShadow.style.display="none";
	mInfoTipArrow.style.left ="-9999em";
	mInfoTipWrap.style.left ="-9999em";
	return false;
}

function mSetInfo(node,info){
	node.infoTip = info;
}
function mClearInfo(node){
	node.infoTip = undefined;
}




function parseInfoTips(startNode){
	startNode = startNode?startNode:document.body;
	var children = startNode.getElementsByTagName('*');
	for(t=0;t<children.length;t++){
		var info = children[t].getAttribute("info");
		if(info!= undefined){
			children[t].onmouseover = infoOnMouseOver;
			children[t].onmouseout = infoOnMouseOut;
			if(info.trim != ""){
				children[t].infoTip = info;
			}
		}
	}	
}
