var lastTimeout = null;
var lastInterval = null;
var online = false;
var curElem = null;
curEvent = null;
sizeOfPkt = navigator.appVersion.indexOf("MSIE 6.0") != -1 ? 20 : 0;
//initCaptureMouse();

function fitText(elem)
{           
    var keep = 0;
    if(elem.className.indexOf("keep") != -1)
    {
        keep = elem.className.replace(/^.*keep\(([^\)]*)\).*$/g,"$1");
    }
    var parent = elem.parentNode;
    var padding = 0;
    while(parent && (!getStyle(parent,'width') || isNaN(getStyle(parent,'width').toInt())))
    {
        padding += getLRPadding(parent);
        parent = parent.parentNode;
    }
    if(!parent)
        return;
    padding += getLRPadding(parent);
    var maxwidth = getStyle(parent,'width').toInt() - sizeOfPkt;
    if(navigator.appVersion.indexOf("MSIE") != -1)
        maxwidth -= padding;
    if(maxwidth < 0)
        return;
    var size = elem.getSize().x;
    while(size > maxwidth)
    {
        var str = elem.innerHTML.replace("...","");
        var keepstr = str.substr(str.length-keep);
        str = str.substr(0,str.length-keep);
        inex = str.lastIndexOf('&');
        if(inex > str.length-7)
            elem.innerHTML = str.substr(0,inex) + '...' + keepstr;
        else
          elem.innerHTML = str.substr(0,str.length-1) + '...' + keepstr;
        size = elem.getSize().x;
    }
}

function trimLongLines(tagName)
{
    var sizeOfPkt = navigator.appVersion.indexOf("MSIE 6.0") != -1 ? 20 : 0;
    var elems = $$('.trimme');
    for(i=0;i<elems.length;i++)
    {
        fitText(elems[i]);
    }
}

function getLRPadding(elem)
{
    var padding = 0;
    padding += !getStyle(elem,"padding-left") ? 0 : parseInt(getStyle(elem,"padding-left").replace("px",""));
    padding += !getStyle(elem,"padding-right") ? 0 : parseInt(getStyle(elem,"padding-right").replace("px",""));
    if(getStyle(elem,"padding"))
    {
        var pup = getStyle(elem,"padding").replace("px","").split(" ");
        switch(pup.length)
        {
            case 1: padding += parseInt(pup[0]);
                    break;
            case 2:
            case 3:
                    padding += parseInt(pup[1]);
                    break;
            case 4: padding += parseInt(pup[1]);
                    padding += parseInt(pup[3]);
                    break;
        }
    }
    return padding;
}

function tooltip(text,ev)
{
    if(lastTimeout != null)
        window.clearTimeout(lastTimeout);
    if(window.event)
        curEvent = new Event(window.event);
    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;
    
    curElem = elem;
    moveToMouseCursor(curEvent,elem);
    initCaptureMouse();
}

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

function initCaptureMouse() {
        document.onmousemove = getEv;
}

function stopCaptureMouse() {
        document.onmousemove = null;
}

function getEv(e)
{
    if(!curElem && lastTimeout)
    {
        curEvent = new Event(e);
    }
    if((online || lastTimeout) && curElem)
    {
        if(!e)
            e = new Event(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 id="ajax-wait" class="ajax-wait"><img src="/leverkusen-anwaelte.de/Images/ajax-wait.gif" alt="Bitte warten" /> Bitte Warten...</span>';
}

function stopWait()
{
    elem = document.getElementById('ajax-wait');
    elem.parentNode.removeChild(elem);
}

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.className = "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.documentElement.scrollTop + (document.documentElement.clientHeight / 2)) - (div.offsetHeight /2) + "px";
                div.style.left = (document.documentElement.scrollLeft + (document.documentElement.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)
    {
        if(x.getStyle)
            return x.getStyle(styleProp);

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


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.page)
        e=new Event(e);
      
        if(e.page.y + newdiv.offsetHeight > (window.innerHeight + window.pageYOffset - 2))
        {
            newdiv.style.top = (e.page.y - (e.page.y + newdiv.offsetHeight - window.innerHeight - window.pageYOffset) - 2) + "px";
        }
        else
            newdiv.style.top = e.page.y + 2 + "px";
        
        if(e.page.x + newdiv.offsetWidth > (window.innerWidth + window.pageXOffset))
            newdiv.style.left = (e.page.x - newdiv.offsetWidth - 10) + "px";
        else    
            newdiv.style.left = e.page.x + 10 + "px";
      /*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));
            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);
}

function changePic(name,search,replace)
{
    var pics = document.getElementsByName(name);
    if(pics && pics.length>0)
    {
        pics[0].src = pics[0].src.replace(search,replace);
    }
}
