is_ie = ((/msie/i.test(window.navigator.userAgent) && !/opera/i.test(window.navigator.userAgent) && !/Mozilla/i.test(window.navigator.userAgent))); 
var mouseX = 0, mouseY = 0, contentCount = 0;
var content_ids = [];
function GID(id){ return (is_ie) ? document.all[id] : document.getElementById(id);}
var tooltipContent = '';
var tooltipTextLoading = 'Загрузка...';
var globals = [];
globals['tooltip_pos_updated'] = false;
globals['tooltip_timer_hide'] = -1;

function showTooltip(text, action, header)
{
  tooltipContent = text;
  tooltipHeader = header;
  if(q = GID('divTooltip'))
  {
    if(q.style != undefined)
    {
      q.style.left = mouseX;
      q.style.top = mouseY;
      q.style.display = 'block';
    }
    GID('divTooltipContent').innerHTML = "<div onMouseOver=\"clearTimeout(globals['tooltip_timer_hide']);\">"+tooltipContent+'</div>';
    $(divTooltip).pngFix();
    globals['tooltip_pos_updated'] = false;
  }
  if(action != undefined)
    if(action.length)
      eval(action);
}
function hideTooltip()
{
  if(q = GID('divTooltip'))
  {
    if(q.style != undefined)
      q.style.display = 'none';
  }
  globals['tooltip_timer_hide'] = -1;
}
function createRequestObject()
{
  if (window.XMLHttpRequest) {
    try {
      return new XMLHttpRequest();
    } catch (e){}
  } else if (window.ActiveXObject) {
    try {
      return new ActiveXObject('Microsoft.XMLHTTP');
    } catch (e){}
    try {
      return new ActiveXObject('Msxml2.XMLHTTP');
    } catch (e){}
  }
  return null;
}
function loadTooltipFromLink(tooltipId, link, divider /* ='?' */, prefix /* = ''*/, outputId)
{
  if(prefix == undefined)
    prefix = '';
  if(outputId == undefined)
    outputId = '';
  if(!eval(prefix+"tooltipRequest"+tooltipId+" = createRequestObject();"))
    return;
  eval(prefix+"tooltipRequest"+tooltipId+".onreadystatechange = function()\
  {\
    if(!"+prefix+"tooltipRequest"+tooltipId+") return;\
    res = '';\
    try {\
      if ("+prefix+"tooltipRequest"+tooltipId+".readyState == 4){\
        if ("+prefix+"tooltipRequest"+tooltipId+".status == 200){\
          res = ''+"+prefix+"tooltipRequest"+tooltipId+".responseText;}\
        else res = 'Ошибка';}\
    } catch(e) { res = 'Ошибка'; }\
    if(res.length) {\
      tooltipContent = res;\
      if(outputId.length && (q = GID(outputId)))\
        q.innerHTML = tooltipContent;\
      else if(q = GID('divTooltip'))\
        q.innerHTML = tooltipContent;\
      globals['"+prefix+"tooltipContent"+tooltipId+"'] = tooltipContent;\
      globals['"+prefix+"tooltipLoad"+tooltipId+"'] = 1;\
      eval(globals['"+prefix+"tooltipAction"+tooltipId+"']);\
      } };");
  eval(prefix+"tooltipRequest"+tooltipId+".open('GET', link+divider+'random='+Math.random(), true);");
  eval(prefix+"tooltipRequest"+tooltipId+".send(null);");
  globals[prefix+'tooltipLoad'+tooltipId] = 2;
}//loadTooltipFromLink

function execLink(link, id /* ='' */, onLoadAction /* ='' */)
{
  if(id == undefined || !id.length)
    id = Math.random();
  if(!eval("tooltipRequest"+id+" = createRequestObject();"))
    return;
  eval("tooltipRequest"+id+".onreadystatechange = function()\
  {\
    if(!tooltipRequest"+id+") return;\
    res = '';\
    try {\
      if (tooltipRequest"+id+".readyState == 4){\
        if (tooltipRequest"+id+".status == 200){\
          res = ''+tooltipRequest"+id+".responseText;}\
        else res = '';}\
    } catch(e) { res = 'Ошибка'; }\
    if(res.length) {\
      tooltipContent = res;\
      globals['tooltipLoad"+id+"'] = 1;\
      eval(globals['tooltipAction"+id+"']);\
      } };");
  eval("tooltipRequest"+id+".open('GET', link+'"+(/\?/i.test(link) ? '&' : '?')+"'+'random='+Math.random(), true);");
  eval("tooltipRequest"+id+".send(null);");
  globals['tooltipLoad'+id] = 2;
  globals['tooltipAction'+id] = (onLoadAction == undefined ? '' : onLoadAction);
}//execLink

//id - в id.innerHTML будет загружен контент (присвоен content или же загружен из link)
function showContent(id, content, link, action)
{
  if(!(q = GID(id)))
    return;
  if(content.length)  //set static content
  {
    q.innerHTML = content;
    return;
  }
  loadTooltipFromLink(contentCount, link, (/\?/i.test(link) ? '&' : '?'), 'c', id);
  globals["ctooltipContent"+contentCount] = tooltipTextLoading;
  globals["ctooltipAction"+contentCount] = action;
}//showContent

function tooltipShow(num, link, linkadd/* = '?'*/, action/* = ''*/)
{
  if(globals["tooltipLoad"+num] == undefined)
    globals["tooltipLoad"+num] = 0;
  if(globals["tooltipContent"+num] == undefined)
    globals["tooltipContent"+num] = "";
  if(globals["tooltipHeader"+num] == undefined)
    globals["tooltipHeader"+num] = "";
  if(globals["tooltipLoad"+num] != 0)
    showTooltip(globals["tooltipContent"+num], '', globals["tooltipHeader"+num]);
  else
  {
    showTooltip(tooltipTextLoading);
    loadTooltipFromLink(num, link, linkadd);
    globals["tooltipContent"+num] = tooltipTextLoading;
    globals["tooltipAction"+num] = action;
  }
}//tooltipShow

function tooltipUpdatePos()
{
  if(!(q = GID('divTooltip')))
    return;
  if(q.style != undefined && q.style.display != 'block')
  {
    if(!globals['tooltip_pos_updated'])
    {
      q.style.left = mouseX;
      q.style.top = mouseY;
      globals['tooltip_pos_updated'] = true;
    }
  }
} //tooltipUpdatePos
setInterval("tooltipUpdatePos()", 1);
function onMouseMoveHandler(e)
{
  mouseX = (e == undefined ? document.body.scrollLeft + window.event.clientX : e.pageX);
  mouseY = (e == undefined ? document.body.scrollTop + window.event.clientY : e.pageY);
} //onMouseMoveHandler
document.onmousemove = onMouseMoveHandler;

