var tooltipState = 0;

function el(e) {
	return document.getElementById(e);
}

function addEvent(obj, evType, fn){
	if (obj.addEventListener){
		obj.addEventListener(evType, fn, true);
		return true;
	} else if (obj.attachEvent){
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	} else {
		alert("Handler could not be attached");
	}
} 

function addLoadEvent(func) { 
	addEvent(window, 'load', func);
} 

function getParameter(k) {
	var query = window.location.search.substring(1);
	var parms = query.split('&');
	for (var i=0; i<parms.length; i++) {
		var pos = parms[i].indexOf('=');
		if (pos > 0) {
			var key = parms[i].substring(0,pos);
			if (key != k)
				continue;
			var val = parms[i].substring(pos+1);
			return val;
		}
	}
}

function moveTooltip(e) {
	if (!tooltipState)
		return;
	
	if (typeof event != "undefined" && event.clientX) {
		x = event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
		y = event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
	}
	else if (typeof e != "undefined" && e.pageX) {
		x = e.pageX;
		y = e.pageY;
	}
	else if (typeof e != "undefined" && e.clientX) {
		x = e.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
		y = e.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
	}
	else 
		return;
		
	el = document.getElementById('fumbbl_tooltip');
	
	el.style.top = (y + 10) + 'px';
	if (x < window.innerWidth/2) {
        el.style.left = (x + 10) + 'px';
        el.style.right='auto';
	}
	else {
		el.style.left = (x - 10 - el.clientWidth) + 'px';
	}
}

function showTooltip($text) {
	el = document.getElementById('fumbbl_tooltip');
	if (el) {
		document.onmousemove = moveTooltip;
		el.innerHTML = $text;
		el.style.display='block';
		tooltipState = 1;
	}
}

function hideTooltip() {
	tooltipState = 0;
	el = document.getElementById('fumbbl_tooltip');
	
	if (el) {
		el.style.display='none';
	}
}

function getElementWidth(obj) {
   if (typeof obj.clip !== "undefined") {
      return obj.clip.width;
   } else {
      if (obj.offsetWidth !== "undefined") {
          return obj.offsetWidth;
      } else {
          return obj.style.pixelWidth;
      }
   }
}

function getElementHeight(obj) {
   if (typeof obj.clip !== "undefined") {
      return obj.clip.height;
   } else {
      if (obj.style.pixelHeight) {
         return obj.style.pixelHeight;
      } else {
         return obj.offsetHeight;
      }
   }
}

function getAbsoluteLeft(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft;
		}
	}
	return curleft;
}

function getAbsoluteTop(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) {
			curtop += obj.offsetTop;
			if (obj.style.position == 'absolute')
				break;
		}
	}
	return curtop;
}

function findPos(obj) {
	 var obj2 = obj;
	 var curtop = 0;
	 var curleft = 0;
	 if (document.getElementById || document.all) {
	  do  {
	   curleft += obj.offsetLeft-obj.scrollLeft;
	   curtop += obj.offsetTop-obj.scrollTop;
	   obj = obj.offsetParent;
	   obj2 = obj2.parentNode;
	   while (obj2!=obj) {
	    curleft -= obj2.scrollLeft;
	    curtop -= obj2.scrollTop;
	    obj2 = obj2.parentNode;
	   }
	  } while (obj.offsetParent)
	 } else if (document.layers) {
	  curtop += obj.y;
	  curleft += obj.x;
	 }
	 return [curtop, curleft];
	}   // end of findPos()

function findTop(obj) {
	return findPos(obj)[0];
}

