/*javascript for Bubble Tooltips by Alessandro Fulciniti
- http://pro.html.it - http://web-graphics.com */

function enableTooltips(id){
  var links,i,h;
  if(!document.getElementById || !document.getElementsByTagName) return;
  //AddCss();
  if (!document.getElementById('btc')) {
    h=document.createElement("span");
    h.id="btc";
    h.setAttribute("id","btc");
    h.style.position="absolute";
    h.style.zIndex="9999999";
    document.getElementsByTagName("body")[0].appendChild(h);
  }
  if(id==null) links=document.getElementsByTagName("a");
  else links=document.getElementById(id).getElementsByTagName("a");
  for(i=0;i<links.length;i++){
    Prepare(links[i]);
  }
}

function Prepare(el){
  var tooltip,t,b,s,l,nt,d;
  t=el.getAttribute("tooltipid");
  el.removeAttribute("title");
  el.removeAttribute("tooltipid");
  if (t) {
    d=el.getAttribute("t");
    if (!d) { 
      d = '_br'; 
    } else { 
      if (d == 'ru') { d= '_r'; } else  
      if (d == 'lu') { d= '_l'; } else { 
      d = '_'+d; } 
    }
    //if (window.console) console.log(t);
    nt = document.getElementById(t);
    //if (!nt) { if (window.console) console.log(t,' not found'); }
    //document.getElementById('btc_text').innerHTML = nt.innerHTML;
    tooltip=CreateEl("div","tooltip_cont");
    
    if (el.getAttribute('w')) {
      //console.log(el.getAttribute('w'));
      tooltip.style.width = el.getAttribute('w')+'px';
    }
    
    var tt=CreateEl("div","tooltip_top_all"+d);
    ttc = CreateEl("div","tooltip_top_center"+d);  
    
    if (el.getAttribute('w')) { ttc.style.width = (parseInt(el.getAttribute('w'))-20)+'px'; }
    
    tt.appendChild(ttc);
    tt.appendChild(CreateEl("div","tooltip_top_right"+d));
    tt.appendChild(CreateEl("div","tooltip_top_left"+d));
    
   
    var tc  = CreateEl("div","tooltip_center_all");  
    var tcr = CreateEl("div","tooltip_center_right");
    var tcl = CreateEl("div","tooltip_center_left");
    var tcc = CreateEl("div","tooltip_center_center");
    tcc.innerHTML = nt.innerHTML;   
    tcl.appendChild(tcc);
    tcr.appendChild(tcl);
    tc.appendChild(tcr);
    var tb=CreateEl("div","tooltip_bottom_all"+d);
    tbc = CreateEl("div","tooltip_bottom_center"+d);
    if (el.getAttribute('w')) { tbc.style.width = (parseInt(el.getAttribute('w'))-20)+'px'; }
    tb.appendChild(tbc);
    tb.appendChild(CreateEl("div","tooltip_bottom_right"+d));
    tb.appendChild(CreateEl("div","tooltip_bottom_left"+d));
    
    tooltip.appendChild(tt);
    tooltip.appendChild(tc);
    tooltip.appendChild(tb);

//    var tc=CreateEl("table","tooltip_center_all");
//    tc.setAttribute('cellspacing','0');
//    tc.setAttribute('cellpadding','0');
//    tc.innerHTML = '<tr><td class="tooltip_center_left">&nbsp;</td><td class="tooltip_text" id="btc_text">'+nt.innerHTML+'</td><td class="tooltip_center_right">&nbsp;</td></tr>';
//tc.appendChild(CreateEl("div","tooltip_center_left"));
//<div class="tooltip_cont" id="btc_master">
//  <div class="tooltip_top_all"><div class="tooltip_top_right"></div><div class="tooltip_top_left"></div><div class="tooltip_top_center"></div></div>
//  <table class="tooltip_center_all" cellspacing="0" cellpadding="0"><tr><td class="tooltip_center_left">&nbsp;</td><td class="tooltip_text" id="btc_text"></td><td class="tooltip_center_right">&nbsp;</td></tr></table>
//  <div class="tooltip_bottom_all"><div class="tooltip_bottom_right"></div><div class="tooltip_bottom_left"></div><div class="tooltip_bottom_center"></div></div>
//</div>
    
    
    
    setOpacity(tooltip);
    el.tooltip=tooltip;
    el.onmouseover=showTooltip;
    el.onmouseout=hideTooltip;
    el.onmousemove=Locate;
  }
}

function showTooltip(e){
  document.getElementById("btc").appendChild(this.tooltip);
  //document.getElementById("btc").innerHTML=this.tooltip;
  
  Locate(e);
}

function hideTooltip(e){
  var d=document.getElementById("btc");
  if(d.childNodes.length>0) d.removeChild(d.firstChild);
}

function setOpacity(el){
  el.style.filter="alpha(opacity:95)";
  el.style.KHTMLOpacity="0.95";
  el.style.MozOpacity="0.95";
  el.style.opacity="0.95";
}

function CreateEl(t,c){
  var x=document.createElement(t);
  x.className=c;
  //x.style.display="block";
  return(x);
}

function AddCss(){
  var l=CreateEl("link");
  l.setAttribute("type","text/css");
  l.setAttribute("rel","stylesheet");
  l.setAttribute("href","bt.css");
  l.setAttribute("media","screen");
  document.getElementsByTagName("head")[0].appendChild(l);
}

function Locate(e){
 var targ;
	if (!e) var e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;
		
  var posx=0,posy=0,t='br';
  if(e==null) e=window.event;
  if (targ.getAttribute('t')) t = targ.getAttribute('t');
  if(e.pageX || e.pageY){ posx=e.pageX; posy=e.pageY; }
  else if(e.clientX || e.clientY){
    if(document.documentElement.scrollTop){
      posx=e.clientX+document.documentElement.scrollLeft;
      posy=e.clientY+document.documentElement.scrollTop;
    }
    else{
      posx=e.clientX+document.body.scrollLeft;
      posy=e.clientY+document.body.scrollTop;
    }
  }
  
  var btc = document.getElementById("btc");
  
  var nh = 0;
  var nw = 0;
  try {
   nh = parseInt(btc.firstChild.clientHeight);
   nw = parseInt(btc.firstChild.clientWidth)
  }catch(e) {}
  
  var yoffset = ( t=="tl" || t=="tr" ) ? nh+5:-10;
  var yoffset = ( t=="l"  || t=="r"  ) ? parseInt(nh*0.5)+5:yoffset;
  var yoffset = ( t=="lu" || t=="ru" ) ? parseInt(nh*0.76)+5:yoffset;
  var yoffset = ( t=="ld" || t=="rd" ) ? parseInt(nh*0.33)+5:yoffset;
  
  var xoffset = ( t=="bl" || t=="tl" ) ? nw-20:20;
  var xoffset = ( t=="l" || t=="lu" || t=="ld" ) ? nw+40:xoffset;
  var xoffset = ( t=="r" || t=="ru" || t=="rd" ) ? -20:xoffset;
  
  //console.log(btc,posy,yoffset,(posy-yoffset)+"px",posx,xoffset,(posx-xoffset)+"px");
  btc.style.top=(posy-yoffset)+"px";
  btc.style.left=(posx-xoffset)+"px";
}
