var lastTimeout = null;
var online = false;
var curElem = null;
var curEvent = null;
initCaptureMouse();


function trimLongLines(tagName)
{
    var elems = document.getElementsByTagName(tagName);
    for(i=0; i<elems.length; i++)
    {
        if(elems[i].className == 'trimme')
        {
            var maxwidth = elems[i].parentNode.offsetWidth -10;
            if(elems[i].offsetWidth > maxwidth)
            {
                while(elems[i].offsetWidth > maxwidth)
                {
                    elems[i].innerHTML = elems[i].innerHTML.replace("...","");
                    inex = elems[i].innerHTML.lastIndexOf('&');
                    if(inex > elems[i].innerHTML.length-7)
                    {
                        alert(inex + " - " + elems[i].innerHTML.length);
                        elems[i].innerHTML = elems[i].innerHTML.substr(0,inex) + '...';
                    }
                    else
                    {
                      //alert(inex + " - " + elems[i].innerHTML.length);
                      elems[i].innerHTML = elems[i].innerHTML.substr(0,elems[i].innerHTML.length-2) + '...';
                    }
                }
                //elems[i].innerHTML = elems[i].innerHTML.substr(0,elems[i].innerHTML.length-3) + '...';
            }
            //elems[i].innerHTML += elems[i].offsetWidth + '-' + maxwidth;
        }
    }
}

function tooltip(text)
{
    if(lastTimeout != null)
        window.clearTimeout(lastTimeout);
    lastTimeout = window.setTimeout("tooltipRun('"+text+"')",100);
}

function tooltipRun(text)
{
    lastTimeout = null;
    var elem = document.getElementById("tooltip");
    if(!elem)
    {
        elem = document.createElement("DIV");
        var id = document.createAttribute("id");
        id.nodeValue = "tooltip";
        elem.setAttributeNode(id);
        document.getElementsByTagName("body")[0].appendChild(elem);
        elem.style.display = 'none';
    }
    if(elem.style.display == 'none')
    {
        elem.innerHTML = text;
        elem.style.display = 'block';
    }
    online = true;
    if(!curElem)
    {
        moveToMouseCursor(curEvent,elem);
    }
    curElem = elem;    
}

function tooltipOut()
{
    online = false;
    if(lastTimeout != null)
    {
        window.clearTimeout(lastTimeout)
        lastTimeout = null;
    }
    var elem = document.getElementById("tooltip");
    if(elem)
        elem.style.display = 'none';
}

function initCaptureMouse() {
    /*if (window.event) {
        if (document.captureEvents){
          document.captureEvents(Event.MOUSEMOVE);
        } else {
          window.captureEvents(Event.MOUSEMOVE);
        }
    }*/
  document.onmousemove = getEv;
}

function stopCaptureMouse() {
        /*if (document.releaseEvents){
          document.releaseEvents(Event.MOUSEMOVE);
        } else {
          window.releaseEvents(Event.MOUSEMOVE);
        }*/
}

function getEv(e)
{
    if(!curElem && lastTimeout)
    {
        curEvent = e;
    }
    if((online || lastTimeout) && curElem)
    {
        if(!e)
            e = window.event;
        moveToMouseCursor(e,curElem);
    }
}

function moveToMouseCursor(e,newdiv)
{
      if(e.pageX || e.pageY)
      {
            //alert("page: " + e.pageY + " + " + newdiv.offsetHeight + " > " + window.innerHeight + " + " + window.pageYOffset);
            if(e.pageY + newdiv.offsetHeight > (window.innerHeight + window.pageYOffset - 2))
            {
                newdiv.style.top = (e.pageY - (e.pageY + newdiv.offsetHeight - window.innerHeight - window.pageYOffset) - 2) + "px";
            }
            else
                newdiv.style.top = e.pageY + 2 + "px";
            
            if(e.pageX + newdiv.offsetWidth > (window.innerWidth + window.pageXOffset))
                newdiv.style.left = (e.pageX - newdiv.offsetWidth - 10) + "px";
            else    
                newdiv.style.left = e.pageX + 10 + "px";
      }
      else
      {
            var plus = 2;
            //alert(document.body.offsetHeight - (document.documentElement.clientHeight + document.documentElement.scrollTop));
              /*if((document.body.offsetHeight - (document.documentElement.clientHeight + document.documentElement.scrollTop)) < 20)
               plus = 80;*/
            var clientHeight = document.body.clientHeight;
            var scrollTop = document.body.scrollTop;
            var clientWidth = document.body.clientWidth;
            var scrollLeft = document.body.scrollLeft;
            
            if(!document.body.clientHeight)
                clientHeight = document.documentElement.clientHeight;
            if(!document.body.scrollTop)
                scrollTop = document.documentElement.scrollTop;
            if(!document.body.clientWidth)
                clientWidth = document.documentElement.clientWidth;
            if(!document.body.scrollLeft)
                scrollLeft = document.documentElement.scrollLeft;
                
            //alert("client: " + e.clientY + " + " + newdiv.offsetHeight + " > " + clientHeight + " + " + scrollTop );
            if(e.clientY + newdiv.offsetHeight > (clientHeight - plus))
            {
                    newdiv.style.top = (e.clientY - (e.clientY + newdiv.offsetHeight - clientHeight - scrollTop)) + "px";
            }
            else
            {
                    newdiv.style.top = (scrollTop + e.clientY + 2) + "px";
            }
            
            if(e.clientX + newdiv.offsetWidth > (clientWidth))
                    newdiv.style.left = (e.clientX + scrollLeft - newdiv.offsetWidth - 10) + "px";
            else            
                newdiv.style.left = scrollLeft + e.clientX + 10 + "px";
      }
}