function hov_pause(ms_pause) {
    date_now = new Date();
    ms_now = date_now.getTime();
    do {
        date_cur = new Date();
        ms_cur = date_cur.getTime();
        ms_diff = ms_cur - ms_now;
    } while(ms_diff < ms_pause);
}
function hov_xy_scroll() {
   if (document.body.scrollTop != undefined && navigator.appName.indexOf('Explorer') != -1 ) {
      var res = (document.compatMode != 'CSS1Compat') ? document.body : document.documentElement;
      return {x : res.scrollLeft, y : res.scrollTop};
   }
   else {
      return {x : window.pageXOffset, y : window.pageYOffset};
   }
}
function hov_xy_client(e) {
   if (e.clientX) return {x : e.clientX, y : e.clientY};
   else           return {x : e.pageX,   y : e.pageY};
}
function hov_show_xy(id, e, dx_id, dy_id) {
    var scr = hov_xy_scroll();
    var cli = hov_xy_client(e);
    var cordX = scr.x + cli.x;
    var cordY = scr.y + cli.y;
    document.getElementById(id).style.position = 'absolute';
    document.getElementById(id).style.left = ( cordX + dx_id ) + 'px';
    document.getElementById(id).style.top  = ( cordY + dy_id ) + 'px';
    hov_show(id, 0);
}
function hov_show(id, ms_pause) {
    hov_pause(ms_pause);
    document.getElementById(id).style.visibility = 'visible';
}
function hov_hide(id, ms_pause) {
    hov_pause(ms_pause);
    document.getElementById(id).style.visibility = 'hidden';
}