/*
  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 2559 2010-08-03 12:43:59Z 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 displayInfo(pParent, pMessage, pBorderColor, pBackground, pFontSize) {
        if (pMessage.length == 0) return;

        var tInfoB = $(pParent);
        var tInfoW = $('infow');

        if (pBorderColor) {
            tInfoW.style.border = 'solid ' + pBorderColor + ' 1px';
        }

        if (pBackground) {
            tInfoW.style.backgroundColor = pBackground;
        }

        if (pFontSize) {
            tInfoW.style.fontSize = pFontSize + 'pt';
        }

        var tWidth = tInfoB.getWidth();

        var tX = tInfoB.viewportOffset()[0] + tWidth + 1;
        var tY = tInfoB.viewportOffset()[1];

        tInfoW.innerHTML = pMessage;

        tInfoW.style.left = tX + 'px';
        tInfoW.style.top  = tY + 'px';
        tInfoW.show();
    }

    function hideInfo() {
        var tInfoW = $('infow');
        tInfoW.innerHTML = '';
        tInfoW.hide();
        
    }

    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 = $(pTextArea);
        var tCurrentHeight = tTextArea.getHeight() - 2;

        if (tCurrentHeight > pCollapsedHeight) {
            pLabel.innerHTML = pExpandedText;
        } else {
            pLabel.innerHTML = pCollapsedText;
        }
    }

    function expandTextArea(pTextArea, pCollapsedHeight, pExpandedHeight) {
        var tTextArea = $(pTextArea);
        var tCurrentHeight = tTextArea.getHeight() - 2;

        if (tCurrentHeight > pCollapsedHeight) {
            tTextArea.style.height = pCollapsedHeight + 'px';
        } else {
            tTextArea.style.height = pExpandedHeight + 'px';
        }
    }

    function toggleDisp() {
        for (var i = 0; i < arguments.length; i++) {
            var d = $(arguments[i]);
            if (d.style.display == 'none') {
                d.style.display = 'block';
            } else {
                d.style.display = 'none';
            }
        }
    }

    function toggleTab(pNum, pNumelems, pOpennum) {
        if ($('tabContent' + pNum).style.display == 'none') {
            for (var i = 1; i <= pNumelems; i++) {
                if ((pOpennum == null) || (pOpennum != i)) {
                    var tTempH = 'tabHeader' + i;
                    var h = $(tTempH);
                    if (!h) {
                        var h = $('tabHeaderActive');
                        h.id = tTempH;
                    }
                    var tTempH = 'tabContent' + i;
                    var c = $(tTempH);
                    if (c.style.display != 'none') {
                        toggleDisp(tTempH);
                    }
                }
            }

            var h = $('tabHeader' + pNum);
            if (h) {
                h.id = 'tabHeaderActive';
            }
            h.blur();

            var c = $('tabContent' + pNum);
            c.style.marginTop = '2px';

            toggleDisp('tabContent'+pNum);
        }
    }

    function insertT(pDocument, pElement, pSTag, pETag) {
        pElement.focus();

        // IE
        if(typeof pDocument.selection != 'undefined') {
            var tRange = pDocument.selection.createRange();
            var tSelectedText = tRange.text;
    
            tRange.text = pSTag + tSelectedText + pETag;
    
            tRange = pDocument.selection.createRange();
            if (tSelectedText.length == 0) {
                tRange.move('character', -(pETag.length));
            } else {
                tRange.moveStart('character', pSTag.length + tSelectedText.length + pETag.length);      
            }
            tRange.select();
    
        // Gecko based
        } else if(typeof pElement.selectionStart != 'undefined') {
    
            var tStart = pElement.selectionStart;
            var tEnd = pElement.selectionEnd;
            var tSelectedText = pElement.value.substring(tStart, tEnd);
            pElement.value = pElement.value.substr(0, tStart) + pSTag + tSelectedText + pETag + 
              pElement.value.substr(tEnd);
    
            var tPos;
            if (tSelectedText.length == 0) {
                tPos = tStart + pSTag.length;
            } else {
                tPos = tStart + pSTag.length + tSelectedText.length + pETag.length;
            }
            pElement.selectionStart = tPos;
            pElement.selectionEnd = tPos;
        }
    }

    function focusNext(pSize, pCurrent, pNext, pPrev) {
        if (pCurrent.value.length == pSize) {
            pNext.focus();
        }
    }
