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.indexOf('trimme') != -1)
        {
            var maxwidth = elems[i].parentNode.offsetWidth -10;
            if(maxwidth < 0)
                return;
            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)
                        elems[i].innerHTML = elems[i].innerHTML.substr(0,inex) + '...';
                    else
                      elems[i].innerHTML = elems[i].innerHTML.substr(0,elems[i].innerHTML.length-2) + '...';
                }
            }
        }
    }
}

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() {
  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 openNoticeModal(headline,message)
{
    openModal(headline,'<div class="modalnoticemessage">' + message + '<br/><button onclick="closeModal()">OK</button></div>');
}

function makeWait(elem)
{
    elem.innerHTML = '<span class="ajax-wait"><img src="/paderborn-brandschutz.de/Images/ajax-wait.gif" alt="Bitte warten" /> Bitte Warten...</span>';
}

function openModal(headline,content,ev)
{
    var div = document.getElementById("modal");
    var bgdiv = document.getElementById("bgdiv");
    if(bgdiv == null)
        {
            bgdiv = document.createElement("div");
            bgdiv.setAttribute("id","bgdiv");
            document.getElementsByTagName("body")[0].appendChild(bgdiv);
        }
    if(div == null)
        {
            div = document.createElement("div");
            div.setAttribute("id","modal");
            div.setAttribute("class","content");
            document.getElementsByTagName("body")[0].appendChild(div);
            div.style.display = 'none';
        }
    content = '<h6><div class="closebtn right">' + 
        '<a href="javascript:closeModal()">x</a>' + 
        '</div>' + headline + '<br class="clear-r">' + 
        '</h6><div class="inner"><div id="modalFault"></div>' + content + '</div>';
    div.innerHTML = content;
    bgdiv.style.display = 'block';
    div.style.display = 'block';
    if(ev)
    {
        var curwidth = getStyle(div,'width').replace(/px/g, "");
        var newleft = ev.clientX -(curwidth / 2);
        div.style['left'] = newleft + "px";
        div.style['top'] = ev.clientY + "px";
    }
    else
    {
        if(window.innerHeight)
        {
        //for firefox etc.
                div.style.top = (window.pageYOffset + (window.innerHeight / 2)) - (div.offsetHeight / 2) + "px";
                div.style.left = (window.pageXOffset + (window.innerWidth / 2)) - (div.offsetWidth / 2) + "px";
        }
        else
        {
        //for IE
                div.style.top = (document.body.scrollTop + (document.body.clientHeight / 2)) - (div.offsetHeight /2) + "px";
                div.style.left = (document.body.scrollLeft + (document.body.clientWidth / 2)) - (div.offsetWidth /2) + "px";
        }
    }
    bgdiv.onclick = closeModal;
}

function closeModal()
{
    var div = document.getElementById("modal");
    var bgdiv = document.getElementById("bgdiv");
    if(bgdiv != null)
        bgdiv.style.display = 'none';
    if(div != null)
        div.style.display = 'none';
}

function getStyle(x,styleProp)
{                                
    if (x.currentStyle)
        var y = x.currentStyle[styleProp];
    else if (window.getComputedStyle)
        var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
    return y;
}


function getCheckedValue(radioObj) {
    if(!radioObj)
        return "";
    var radioLength = radioObj.length;
    if(radioLength == undefined)
        if(radioObj.checked)
            return radioObj.value;
        else
            return "";
    for(var i = 0; i < radioLength; i++) {
        if(radioObj[i].checked) {
            return radioObj[i].value;
        }
    }
    return "";
}

function moveToMouseCursor(e,newdiv)
{
      if(!e)
          return;
      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";
      }
}

function replaceClass(id,search,replace)
{
    var elem = document.getElementById(id);
    if(search == "")
        elem.className = replace;
    else
        elem.className = elem.className.replace(search,replace);
}
