function gEI(i){return document.getElementById(i)}
function gPC(el,name){while(el !=null && el.parentNode != null && !CN(el,name)){el=el.parentNode;}if(el !=null && el.parentNode != null)return el;else return false;}
function gEC(el,class_name,tag_name){var all_obj,ret_obj=new Array(),j=0;if(tag_name==null||tag_name=="")tag_name="div";all_obj=el.getElementsByTagName(tag_name);for(i=0;i<all_obj.length;i++){  if(CN(all_obj[i],class_name)){   ret_obj[j]=all_obj[i];   j++;}}if(ret_obj.length>0)return ret_obj; else return false;}
function CN(el,name){var i,list;if(el.className){list=el.className.split(" ");for(i=0;i<list.length;i++)if(list[i]==name)return true}return false}
function rCN(el,name,c){var i,j,curList,newList;if(el.className=="")return;newList=new Array();curList=el.className.split(" ");j=0;for(i=0; i < curList.length;i++)if(curList[i]!=name)newList[i-j]=curList[i];else j++;if(c!=1)el.className=newList.join(" ");else return newList.join(" ")}
function aCN(el,name){if((el.className=="")||(el.className==" "))el.className=name;else el.className += " "+name}

function aV(el, type, fce){if(el.addEventListener){el.addEventListener(type, fce, false);return true;}else if(el.attachEvent){var r=el.attachEvent('on'+type, fce);return r;}else return false;}
function rV(el, type, fce) {if (el.removeEventListener){el.removeEventListener(type, fce, false);return true;}else if(el.detachEvent){var r = el.detachEvent('on'+type, fce);return r;}else return false;}
function gE(e){return(window.event && window.event.srcElement)?window.event.srcElement:(e && e.target)?e.target:false}
function gM(e){var e=e||window.event;var d=(document.documentElement&&document.documentElement.scrollTop!=null)?document.documentElement:document.body;return {x:(e.pageX||e.clientX+d.scrollLeft),y:(e.pageY||e.clientY+d.scrollTop)}}
function gS(o,prop){if(self.getComputedStyle)return eval('self.getComputedStyle(o,null).'+prop);if(o.currentStyle)return eval('o.currentStyle.'+prop)}

var tooltips={
	className:'tooltip',
	showDelay:200,
	timer:null,
	amimateTimer:null,
	lastTooltip:null,
	border:'1px solid #FDDB8C',
  backgroundColor:'#FFFFCA',
  bubbleClassName:'tooltipBubble',
	textColor:'#333',
	padding:'4px 10px 6px 25px',
	maxWidth:400,
	
	init:function(){
		var a=gEC(document,tooltips.className,'*');
		for(var i=0;a[i];i++){
			if(a[i].title!=''){
				//a[i].onmouseover=function(){tooltips.show(this)};
				aV(a[i],'mouseover',tooltips.delayShow);
				aV(a[i],'mousemove',tooltips.delayShow);
				aV(a[i],'mouseout',tooltips.hide);

				a[i].tooltip=a[i].title;
				a[i].title='';
			}
		}
	},
	delayShow:function(e){
		if(tooltips.lastTooltip!=null)return true;
		var el=gPC(gE(e),tooltips.className);
		var mousePosition=gM(e);
		tooltips.clearTimer();
		var f=function(){tooltips.show(el,mousePosition);}
		tooltips.timer=window.setTimeout(f,tooltips.showDelay);
	},
	clearTimer:function(){
		if(tooltips.timer!=null){
			window.clearTimeout(tooltips.timer);
			tooltips.timer=null;
		}
	},
	show:function(el,mousePosition){
		//alert(el.tooltip+' '+mousePosition.x+','+mousePosition.y);
		var a=document.createElement('div');
		var b=document.createElement('div');
		var t=document.createTextNode(el.tooltip);
		a.appendChild(b);
		b.appendChild(t);
		document.body.appendChild(a);
		tooltips.lastTooltip=a;
		a.style.opacity='0';
		a.style.filter='alpha(opacity=0)';
		b.className=tooltips.bubbleClassName;
		b.style.border=''+tooltips.border;
		b.style.backgroundColor=tooltips.backgroundColor;
		b.style.color=tooltips.textColor;
		b.style.padding=tooltips.padding;
		var dart=document.createElement('div');
		dart.style.cssText='position:absolute;margin-left:20px';
		for(var i=6,j=0;i>-1;i--,j++){
			var line=document.createElement('div');
			line.style.cssText='positon:absolute;overflow:hidden;height:1px;width:'+(i*2)+'px;margin-left:'+j+'px;top:'+j+'px;border-left:'+tooltips.border+';border-right:'+tooltips.border+';background:'+tooltips.backgroundColor;
			dart.appendChild(line);
		}
		a.appendChild(dart);
		a.style.position='absolute';
		a.style.zIndex=100;
		a.style.paddingBottom='6px';
		a.style.left=mousePosition.x-25+'px';
		if(a.offsetWidth>tooltips.maxWidth)a.style.width=tooltips.maxWidth+'px';

		a.style.top=mousePosition.y-a.offsetHeight-7+'px';
		dart.style.top=a.offsetHeight-7+'px';
		tooltips.animate();
	},
	animate:function(){
		var f=function(){
			var a=tooltips.lastTooltip;
			if(a==null){tooltips.clearAnimateTimer();return true;}
			var b=parseFloat(gS(a,'opacity'));
			
			if(b<1){
				b=b+0.1;
				a.style.opacity=b;
				a.style.filter='alpha(opacity='+(b*100)+')';
			}else tooltips.clearAnimateTimer();
		};
	
		tooltips.animateTimer=window.setInterval(f,50);
	},
	clearAnimateTimer:function(){
		if(tooltips.animateTimer!=null){
			window.clearInterval(tooltips.animateTimer);
			tooltips.animateTimer=null;
		}
	},
	hide:function(){
		tooltips.clearTimer();
		//tooltips.clearAnimateTimer();
		if(tooltips.lastTooltip!=null){
			document.body.removeChild(tooltips.lastTooltip);
			tooltips.lastTooltip=null;
		}
	}

}

aV(window,'load',tooltips.init);