/*
  Copyright (C) 2005 CODERESEARCH, All rights reserved.

  Redistribution and modification of this code is strictly prohibited.

  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  DISCLAIMED.  IN NO EVENT SHALL CODERESEARCH OR ITS CONTRIBUTORS BE
  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
  OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
  OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/**
 * @since    2005-02-10
 * @version $Id: main.js 2359 2009-08-16 09:09:28Z ylept $
 * @author     Yves Lepthien
 */

//    var isIE6 = true;
    var isIE6 = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5))==6;

    function getCookieVal(pOffset) {
        var tEndStr = document.cookie.indexOf (";", pOffset);
        if (tEndStr == -1) tEndStr = document.cookie.length;
        return unescape(document.cookie.substring(pOffset, tEndStr));
}

    function getCookie(pName) {
        var tArg = pName + "=";
        var tALen = tArg.length;
        var tCLen = document.cookie.length;
        var i = 0;
        while (i < tCLen) {
            var j = i + tALen;
            if (document.cookie.substring(i, j) == tArg) return getCookieVal(j);
            i = document.cookie.indexOf(" ", i) + 1;
            if (i == 0) break;
        }
        return null;
    }

    function setCookie(pName, pValue) {
        var tArgv = setCookie.arguments;
        var tArgc = setCookie.arguments.length;
        var tExpires = (tArgc > 2) ? tArgv[2] : null;
        var tPath = (tArgc > 3) ? tArgv[3] : null;
        var tDomain = (tArgc > 4) ? tArgv[4] : null;
        var tSecure = (tArgc > 5) ? tArgv[5] : false;
        document.cookie = pName + "=" + escape(pValue) +
        ((tExpires == null) ? "" : ("; expires=" + tExpires.toGMTString())) +
        ((tPath == null) ? "" : ("; path=" + tPath)) +
        ((tDomain == null) ? "" : ("; domain=" + tDomain)) +
        ((tSecure == true) ? "; secure" : "");
    }

    function cookiesEnabled() {
        var tExp = new Date(); 
        tExp.setTime(tExp.getTime() + (60*1000));

        setCookie('wannasomecookie', 1, tExp);
        return getCookie('wannasomecookie');
    }

    function showHelp(pContent, pTitle) {
        var tTooltip = getObject('tooltip');
        var tTitle = getObject('tooltiptitle');
        var tContent = getObject('tooltipcontent');
        tTitle.innerHTML = pTitle;
        tContent.innerHTML = pContent;
        setVisible(tTooltip, true);
    }

    function hideHelp() {
        var tTooltip = getObject('tooltip');
        var tTitle = getObject('tooltiptitle');
        var tContent = getObject('tooltipcontent');
        tTitle.innerText = '';
        tContent.innerText = '';
        setVisible(tTooltip, false);
    }

    function openWindow(pName, pWidth, pHeight, pRef) {
        window.name = "parent";
        var tScreenX = (screen.width - pWidth) / 2;
        var tScreenY = (screen.height - pHeight) / 2;

        var tWindow = open(pRef, pName, "width=" + pWidth + ",height=" + pHeight + ",screenX=" + tScreenX + ",screenY=" + tScreenY + ", resizable=yes");
    }

    function displayLoader(pObject) {
        pObject.style.visibility = "visible";
    }

    function hideLoader(pObject) {
        pObject.style.visibility = "hidden";
    }

    function displayInfo(pParent, pMessage, pBorderColor, pBackground, pFontSize) {
        if (pMessage.length == 0) return;

        var tInfoB = getObject(pParent);
        var tInfoW = getObject('infow');

        if (pBorderColor) {
            tInfoW.style.border = 'solid ' + pBorderColor + ' 1px';
        }

        if (pBackground) {
            tInfoW.style.backgroundColor = pBackground;
        }

        if (pFontSize) {
            tInfoW.style.fontSize = pFontSize;
        }

        var tWidth = getWidth(tInfoB);

        var tX = getPageXOffset(tInfoB) + tWidth + 1;
        var tY = getPageYOffset(tInfoB);

        tInfoW.innerHTML = pMessage;

        translateTo(tInfoW, tX, tY);
        setVisible(tInfoW, true);
        
    }

    function hideInfo() {
        var tInfoW = getObject('infow');
        tInfoW.innerHTML = '';
        setVisible(tInfoW, false);
        
    }

    function displayToolbarHint(pToolItem, pHintDisplay, pMessage) {
        if (pMessage.length == 0) return;

        var tHintDisplay = getObject(pHintDisplay);

        var tX = getPageXOffset(pToolItem) - 0;
        var tY = getPageYOffset(pToolItem) - 21;

        tHintDisplay.innerHTML = pMessage;

        translateTo(tHintDisplay, tX, tY);
        setVisible(tHintDisplay, true);
        
    }

    function hideToolbarHint(pHintDisplay) {
        var tHintDisplay = getObject(pHintDisplay);
        tHintDisplay.innerHTML = '';
        setVisible(tHintDisplay, false);
    }

    function _submit(pForm, pAction, pId) {
        pForm.action.value = pAction;
        if (pId) pForm.id.value = pId;
        pForm.submit();
    }

    function testInput(pInput, pAllowed) {
        var tResult = false;
    
        for (var i = 0; i < pInput.value.length; i++) {
            if (pAllowed.indexOf(pInput.value.charAt(i)) < 0) {
                tResult = true;
                break;
            }
        }
    
        if (tResult == true) {

            for (var i = 0; i < pInput.value.length; i++) {
                if (pAllowed.indexOf(pInput.value.charAt(i)) < 0 ) {
                    pInput.value = pInput.value.substr(0, i);
                    break;
                }
            
                if (i > 0 && pInput.value.charAt(i) == '+') {
                    pInput.value = pInput.value.substr(0, i);
                    break;
                }
            }
        }
    }
 
    function testUniqueName(pInput) {
        var tAllowed = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@_-.";

        return testInput(pInput, tAllowed);
    }

    function testNumber(pInput) {
        var tAllowed = "0123456789";

        return testInput(pInput, tAllowed);
    }

    function highlightRow(pRow, pClass) {
        pRow.className = pClass;
    }

    function changeLabelBySize(pLabel, pTextArea, pCollapsedHeight, pExpandedHeight, pCollapsedText, pExpandedText) {
        var tTextArea = getObject(pTextArea);
        var tCurrentHeight = getHeight(tTextArea);

        if (tCurrentHeight > pCollapsedHeight) {
            pLabel.innerHTML = pExpandedText;
        } else {
            pLabel.innerHTML = pCollapsedText;
        }
    }

    function expandTextArea(pTextArea, pCollapsedHeight, pExpandedHeight) {
        var tTextArea = getObject(pTextArea);
        var tCurrentHeight = getHeight(tTextArea);

        if (tCurrentHeight > pCollapsedHeight) {
            tTextArea.style.height = pCollapsedHeight + 'px';
        } else {
            tTextArea.style.height = pExpandedHeight + 'px';
        }
    }

    // geht noch nicht
    // window.onresize = resizeScrollView(window, getObject('scrollview'), 700);
    function resizeScrollView(pWindow, pObject, pMinInnerWindowHeight) {
        if (!pObject) return;

        var tInnerWindowHeight = getInnerHeight(pWindow)
        if (tInnerWindowHeight > pMinInnerWindowHeight) {
            resizeTo(pObject, getWidth(pObject), 
              getHeight(pObject) + (tInnerWindowHeight - pMinInnerWindowHeight));
        } else {
            resizeTo(pObject, getWidth(pObject), 300);
        }
    }