
function xTooltipGroup(grpClassOrIdList,tipClass,origin,xOffset,yOffset,hideDelay,sticky,textList)
{this.c=tipClass;this.o=origin;this.x=xOffset;this.y=yOffset;this.s=sticky;this.hd=hideDelay||0;var i,tips;if(xStr(grpClassOrIdList)){tips=xGetElementsByClassName(grpClassOrIdList);for(i=0;i<tips.length;++i){tips[i].xTooltip=this;tips[i].xTooltipText=tips[i].title;tips[i].title='';}}
else{tips=new Array();for(i=0;i<grpClassOrIdList.length;++i){tips[i]=xGetElementById(grpClassOrIdList[i]);if(!tips[i]){alert('Element not found for id = '+grpClassOrIdList[i]);}
else{tips[i].xTooltip=this;tips[i].xTooltipText=textList[i];}}}
if(!xTooltipGroup.tipEle){var te=document.createElement("div");if(te){te.id='xTooltipElement';xTooltipGroup.tipEle=te=document.body.appendChild(te);xAddEventListener(document,'mousemove',xTooltipGroup.docOnMousemove,false);}}}
xTooltipGroup.tmr=null;xTooltipGroup.trgEle=null;xTooltipGroup.tipEle=null;xTooltipGroup.docOnMousemove=function(oEvent)
{var t=null,e=new xEvent(oEvent);if(e.target){t=e.target;while(t&&!t.xTooltip){t=t.offsetParent;}
if(t){t.xTooltip.show(t,e.pageX,e.pageY);}
else if(xTooltipGroup.trgEle){t=xTooltipGroup.trgEle.xTooltip;if(t&&!t.s&&!xTooltipGroup.tmr){xTooltipGroup.tHide();}}}};xTooltipGroup.teOnClick=function()
{xTooltipGroup.hide();};xTooltipGroup.tHide=function()
{xTooltipGroup.tmr=setTimeout("xTooltipGroup.hide()",xTooltipGroup.trgEle.xTooltip.hd);};xTooltipGroup.hide=function()
{xMoveTo(xTooltipGroup.tipEle,-1000,-1000);xTooltipGroup.trgEle=null;};xTooltipGroup.prototype.show=function(trigEle,mx,my)
{if(xTooltipGroup.tmr){clearTimeout(xTooltipGroup.tmr);xTooltipGroup.tmr=null;}
if(xTooltipGroup.trgEle!=trigEle){xTooltipGroup.tipEle.className=trigEle.xTooltip.c;xTooltipGroup.tipEle.innerHTML=trigEle.xTooltipText;xTooltipGroup.trgEle=trigEle;}
if(this.s){xTooltipGroup.tipEle.title='Click To Close';xTooltipGroup.tipEle.onclick=xTooltipGroup.teOnClick;}
var x,y,tipW,trgW,trgX;tipW=xWidth(xTooltipGroup.tipEle);trgW=xWidth(trigEle);trgX=xPageX(trigEle);switch(this.o){case'right':if(trgX+this.x+trgW+tipW<xClientWidth()){x=trgX+this.x+trgW;}
else{x=trgX-tipW-this.x;}
y=xPageY(trigEle)+this.y;break;case'top':x=trgX+this.x;y=xPageY(trigEle)-xHeight(trigEle)+this.y;break;case'mouse':if(mx+this.x+tipW<xClientWidth()){x=mx+this.x;}
else{x=mx-tipW-this.x;}
y=my+this.y;break;}
xMoveTo(xTooltipGroup.tipEle,x,y);xTooltipGroup.tipEle.style.visibility='visible';};
