function init_hints() {
  if (document.getElementsByClassName) {
    var el_array = document.getElementsByClassName("tochange");
    for (var i = 0; i < el_array.length; i++) {
      var el = el_array[i];
      initElementHint(el);
    }
  }
  else {
    var el_array = document.getElementsByTagName("p");
    for (var i = 0; i < el_array.length; i++) {
      var el = el_array[i];
      if (el.className == "tochange") 
        initElementHint(el);
    }
  }
}

function init_hints(tagname, classname) {
  if (document.getElementsByClassName) {
    var el_array = document.getElementsByClassName(classname);
    for (var i = 0; i < el_array.length; i++) {
      var el = el_array[i];
      initElementHint(el);
    }
  }
  else {
    var el_array = document.getElementsByTagName(tagname);
    for (var i = 0; i < el_array.length; i++) {
      var el = el_array[i];
      if (el.className == classname) 
        initElementHint(el);
    }
  }
}

function initElementHint(el) {
  el.onmouseover = onenter;
  el.onmouseout = onleave;
  el.onmousemove = onmove;
}

function onenter(e) {
  var hinto = document.getElementById("hintdiv_outer");
  var hinti = document.getElementById("hintdiv_inner");
  var leftsh = document.getElementById("hint_leftshadow");
  if (!e) 
    var e = window.event;
  var el = e.target || e.srcElement;
  hinti.innerHTML = el.title;
  hinti.elementtitle = el.title;
  el.title = "";
  if (!e.pageY) 
    hinto.style.top = (e.y + 10) + "px";
  else 
    hinto.style.top = (e.pageY + 10) + "px";
  if (!e.pageX) 
    hinto.style.left = (e.x + 10) + "px";
  else 
    hinto.style.left = (e.pageX + 10) + "px";
 	hinto.style.display = "block";
	var  h = hinti.offsetHeight - 6;
	if (h<=0) {
	  hinto.style.display = "none";
	} else {
  	leftsh.style.height = (h) + "px";
  }
}

function onleave(e) {
  var hinto = document.getElementById("hintdiv_outer");
  var hinti = document.getElementById("hintdiv_inner");
  if (!e) 
    var e = window.event;
  var el = e.target || e.srcElement;
  el.title = hinti.elementtitle;
  hinto.style.display = "none";
  hinti.innerHTML = "";
}

function onmove(e) {
  var hint = document.getElementById("hintdiv_outer");
  if (!e) 
    var e = window.event;
  if (hint.style.display != "none") {
    if (!e.pageY) 
      hint.style.top = (e.y + 10) + "px";
    else 
      hint.style.top = (e.pageY + 10) + "px";
    if (!e.pageX) 
      hint.style.left = (e.x + 10) + "px";
    else 
      hint.style.left = (e.pageX + 10) + "px";
  }
}

