var tooltip=function(){
 var id = 'tt';
 var top = 3;
 var left = 3;
 var maxw = 300;
 var minh = 22;
 var speed = 10;
 var timer = 20;
 var endalpha = 80;
 var alpha = 0;
 var tt,t,c,b,h;
 var ie = document.all ? true : false;
 return{
  show:function(v,divid,w){
    if (!tt) {
		tt = document.createElement('div');
		tt.setAttribute('id',id);
		t = document.createElement('div');
		t.setAttribute('id',id + 'top');
		c = document.createElement('div');
		c.setAttribute('id',id + 'cont');
		arr = document.createElement('div');
		arr.setAttribute('id',id + 'arrow');
		b = document.createElement('div');
		b.setAttribute('id',id + 'bot');
		t.appendChild(arr);
		
		d = document.createElement('div');
	  
		tt.appendChild(t);
		tt.appendChild(c);
		tt.appendChild(b);
		document.body.appendChild(tt);
		tt.style.opacity = 0;
		tt.style.filter = 'alpha(opacity=0)';
   } else {
     c = document.getElementById(id + 'cont')
   }
   if (typeof $ == 'function') { // fix for using jQuery
     var u = $('#'+divid).offset().top;
     var l = $('#'+divid).offset().left;
   } else {
     var u = document.getElementById(divid).offsetTop;
     var l = document.getElementById(divid).offsetLeft;
   }
   tt.style.top = (u + document.getElementById(divid).offsetHeight-25) + 'px';
   tt.style.left = (l + document.getElementById(divid).offsetWidth+10) + 'px'; 
   tt.style.display = 'block';
   tt.style['z-index'] = 5;
   c.innerHTML = v;

   tt.style.width = w ? w + 'px' : 'auto';
   if(!w && ie){
    t.style.display = 'none';
    b.style.display = 'none';
    d.style.display = 'none';
    tt.style.width = tt.offsetWidth;
    t.style.display = 'block';
    b.style.display = 'block';
    d.style.display = 'block';
   }
  if(tt.offsetWidth > maxw){tt.style.width = maxw + 'px'}
  if(c.offsetHeight < minh){c.style.height = minh + 'px'}
  h = parseInt(tt.offsetHeight) + top;
  clearInterval(tt.timer);
  tt.timer = setInterval(function(){tooltip.fade(1)},timer);
  },
 
  fade:function(d){
   var a = alpha;
   if((a != endalpha && d == 1) || (a != 0 && d == -1)){
    var i = speed;
   if(endalpha - a < speed && d == 1){
    i = endalpha - a;
   }else if(alpha < speed && d == -1){
     i = a;
   }
   alpha = a + (i * d);
   tt.style.opacity = alpha * .01;
   tt.style.filter = 'alpha(opacity=' + alpha + ')';
   tt.style.display = 'block';
  }else{
    clearInterval(tt.timer);
     if(d == -1){tt.style.display = 'none'}
  }
 },
 hide:function(){
  clearInterval(tt.timer);
   tt.timer = setInterval(function(){tooltip.fade(-1)},timer);
  }
 };
}();

