var BonaDialog;

function closeBonaDialogAndChangeLocation(objId, url) {
  var cw = BonaDialog.getObjectById(objId);
  setTimeout('try{location=\'' + url + '\';}catch(e){}', 500);
}

(function() {
    var isIE = (document.all && window.clientInformation) ? parseInt(window.clientInformation.userAgent.substr(window.clientInformation.userAgent.indexOf('MSIE ') + 5, 3)) : 0;
    var uAgent = navigator.userAgent;
    var isMSIE = (navigator.appName == "Microsoft Internet Explorer");
    var isMSIE5 = isMSIE && (uAgent.indexOf('MSIE 5') != -1);
    var isMSIE5_0 = isMSIE && (uAgent.indexOf('MSIE 5.0') != -1);
    var isMSIE7 = isMSIE && (uAgent.indexOf('MSIE 7') != -1);
    var isGecko = uAgent.indexOf('Gecko') != -1;
    var isSafari = uAgent.indexOf('Safari') != -1;
    var isOpera = uAgent.indexOf('Opera') != -1;
    var isMac = uAgent.indexOf('Mac') != -1;
    var isNS7 = uAgent.indexOf('Netscape/7') != -1;
    var isNS71 = uAgent.indexOf('Netscape/7.1') != -1;
    var $addHandler = function(o, e, h) { if (isIE) o.attachEvent('on' + e, h); else o.addEventListener(e, h, false); };
    var $removeHandler = function(o, e, h) { if (isIE) o.detachEvent('on' + e, h); else o.removeEventListener(e, h, false); };
    var $stopEvent = function(e) { if (e.stopPropagation) e.stopPropagation(); else e.cancelBubble = true; if (e.preventDefault) e.preventDefault(); else e.returnValue = false; };
    var $getScrollHeight = function() { return document.body.scrollHeight; }

    if (BonaDialog == null)
        BonaDialog = new Object();

    BonaDialog.pDialog = new Array();

    BonaDialog.createInnerWindow = function(objId, pParameters) {
        var i;
        for (i = 0; i < BonaDialog.pDialog.length; i++)
            if (BonaDialog.pDialog[i].id == objId)
            return BonaDialog.pDialog[i].dialog;

        i = BonaDialog.pDialog.length;
        BonaDialog.pDialog[i] = new Object();
        BonaDialog.pDialog[i].id = objId;
        BonaDialog.pDialog[i].dialog = new InnerWindow(objId, pParameters);

        return BonaDialog.pDialog[i].dialog;
    }

    BonaDialog.getObjectById = function(dialogId) {
        var i;
        for (i = 0; i < BonaDialog.pDialog.length; i++)
            if (BonaDialog.pDialog[i].id == dialogId)
            return BonaDialog.pDialog[i].dialog;

        return null;
    }

    BonaDialog.getFirstObjectId = function() {
        return (BonaDialog.pDialog.length > 0)
      ? BonaDialog.pDialog[0].id
      : '';
    }

    BonaDialog.checkIfAllDialogsReady = function() {
        var i;
        for (i = 0; i < BonaDialog.pDialog.length; i++)
            if (!BonaDialog.pDialog[i].dialog.isObjValid)
            return false;

        return true;
    }

    function InnerWindow(objId, pParameters) {
        this.isObjValid = false;
        this.isDataValid = false;

        this.openWindow = openWindow;
        this.refreshInnerWindow = refreshInnerWindow;
        this.closeWindow = closeWindow;
        this.setWindowHeight = setWindowHeight;
        this.setWindowSize = setWindowSize;
        this.getReturnedParameters = getReturnedParameters;
        this.setReturnedParameters = setReturnedParameters;
        this.getState = getState;
        this.getReloadURL = getReloadURL;
        this.gotoElement = gotoElement;

        var pThis = this;

        var i;
        var dialogId = objId;
        var directURL = pParameters.directURL;
        var reloadURL = (pParameters.reloadURL) ? pParameters.reloadURL : null;
        var isReloadUrlLoad = (pParameters.isReloadUrlLoad) ? pParameters.isReloadUrlLoad : false;
        var isReloadUrlNotReload = (pParameters.isReloadUrlNotReload) ? pParameters.isReloadUrlNotReload : false;
        var waitMessage = (pParameters.waitMessage != null) ? pParameters.waitMessage : 'Loading...';
        var waitMessageImgURL = (pParameters.waitMessageImgURL != null && pParameters.waitMessageImgURL.length > 0) ? pParameters.waitMessageImgURL : '/Images/loadingLow.gif';
        var defWinLeft = (pParameters.left) ? pParameters.left : null;
        var winLeft = defWinLeft;
        var defWinTop = (pParameters.top) ? pParameters.top : null;
        var winTop = defWinTop;
        var defWinWidth = (pParameters.width) ? pParameters.width : null;
        var winWidth = defWinWidth;
        var defWinHeight = (pParameters.height) ? ((!isSafari) ? pParameters.height : pParameters.height + 7) : null;
        var winHeight = defWinHeight;
        var zIx = (pParameters.zIx) ? pParameters.zIx : null;
        var isWinModal = (pParameters.isModal) ? pParameters.isModal : false;
        var isWinMoveable = (pParameters.isMoveable) ? pParameters.isMoveable : false;
        var isWinResizeable = (pParameters.isResizeable) ? pParameters.isResizeable : false;
        var winMinWidth = (pParameters.minWidth) ? pParameters.minWidth : null;
        var winMinHeight = (pParameters.minHeight) ? pParameters.minHeight : null;
        var isReloadWinScrollable = (pParameters.isScrollable) ? pParameters.isScrollable : false;
        var remStateCookie = (pParameters.stateCookie) ? pParameters.stateCookie : null;
        var returnParameters = null;
        var pCallBackParameters = new Object();

        if (pParameters.callBackParameters) {
            for (i in pParameters.callBackParameters) {
                if (typeof (pParameters.callBackParameters[i]) != 'function')
                    pCallBackParameters[i] = pParameters.callBackParameters[i];
            }
        }
        else
            pCallBackParameters == null;

        var strRE = ' ';
        var objShadingBox;
        var enabledElements = false;
        var objMainBoxBg, objMainBox, mainBoxId, parentIFrame, eDataIFrame, dataIFrame, dataIFrameElement, reloadIFrameWaitMsg;
        var eDataIFrameWidth, eDataIFrameHeight, eDataIFrameInnerHtml;
        var saveScrollTopPosition = 0;
        var saveScrollLeftPosition = 0;
        var state = false;
        var loadAttemptsDirectURL, loadProgressAttemptsDirectURL, loadAttemptsReloadURL, loadProgressAttemptsReloadURL;

        var shadingBoxId = 'idShadingBox_' + dialogId;
        var mainBoxBgId = 'idMainBoxBg_' + dialogId;

        var baseIFrameId = 'idBaseIFrame_' + dialogId;
        var baseIFrameName = 'nmBaseIFrame_' + dialogId;
        var eDataIFrameId = 'idWinReloadIFrameContainer_' + dialogId;
        var reloadIFrameId = 'idReloadIFrame_' + dialogId;
        var reloadIFrameName = 'nmReloadIFrame_' + dialogId;
        var reloadIFrameWaitMsgId = 'idReloadIFrameWaitMsg_' + dialogId;

        var winStructure =
    {
        parentTable: null,
        titleRow: null,
        headerRow: null,
        mainRow: null,
        scrollableContainer: null,
        actionRow: null,
        footerRow: null
    }

        var winStructureParts =
    {
        TitleRow: 'titleRow',
        HeaderRow: 'headerRow',
        MainRow: 'mainRow',
        ActionRow: 'actionRow',
        FooterRow: 'footerRow'
    }

        var winTitleStruct =
    {
        objWinTitle: null
    };

        var windowTitleParts =
    {
        TitleEventContainer: ['idWinTitle_', 'objWinTitle']
    };

        var windowResizeableParts =
    {
        TopLeftCorner: [6, 'nw-resize'],
        TopEdge: [4, 'n-resize'],
        TopRightCorner: [7, 'ne-resize'],
        RightEdge: [3, 'e-resize'],
        BottomRightCorner: [9, 'nw-resize'],
        BottomEdge: [5, 'n-resize'],
        BottomLeftCorner: [8, 'ne-resize'],
        LeftEdge: [2, 'e-resize']
    };

        var moveWindowStruct = { pushMouseLeftButton: false, X: 0, Y: 0, st: 0 };

        var tmSetXY = false;
        var tmMoveOut = false;

        var matchCookie;
        var aCookie = null;
        var reCookie = new RegExp('InnerWindows\\s*=\\s*[^;]*' + dialogId + ':([^&;]*)');

        if (remStateCookie)
            getWindowCookie();

        function initDialog() {
            if (document && document.body && ((isIE && document.readyState == 'complete') || !isIE)) {
                if (isWinModal) {
                    objShadingBox = document.createElement('DIV');
                    objShadingBox.id = shadingBoxId;
                    objShadingBox.style.position = 'absolute';
                    objShadingBox.style.top = objShadingBox.style.left = '0px';
                    objShadingBox.style.height = objShadingBox.style.width = '1px';
                    objShadingBox.style.backgroundColor = '#FFFFFF';

                    if (isIE)
                        objShadingBox.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=57)';
                    else
                        objShadingBox.style.MozOpacity = objShadingBox.style.KhtmlOpacity = objShadingBox.style.opacity = 0.57;

                    objShadingBox.style.zIndex = (zIx) ? zIx : 3000 + (BonaDialog.pDialog.length * 2 - 2);
                    objShadingBox.style.visibility = 'hidden';
                    document.body.appendChild(objShadingBox);
                }

                objMainBoxBg = document.createElement('DIV');
                mainBoxBgId = 'idMainBoxBg' + '_' + dialogId;
                objMainBoxBg.id = mainBoxBgId;
                objMainBoxBg.style.position = 'absolute';
                objMainBoxBg.style.left = objMainBoxBg.style.top = '0px';
                objMainBoxBg.style.width = objMainBoxBg.style.height = '1px';
                objMainBoxBg.style.marginLeft = objMainBoxBg.style.marginBottom = objMainBoxBg.style.marginRight = objMainBoxBg.style.marginTop = '0px';
                objMainBoxBg.style.paddingLeft = objMainBoxBg.style.paddingBottom = objMainBoxBg.style.paddingRight = objMainBoxBg.style.paddingTop = '0px';
                objMainBoxBg.style.overflow = 'hidden';
                objMainBoxBg.style.backgroundColor = 'transparent';
                objMainBoxBg.style.zIndex = (zIx) ? zIx : 3000 + (BonaDialog.pDialog.length * 2 - 1);
                objMainBoxBg.style.visibility = 'hidden';
                document.body.appendChild(objMainBoxBg);

                objMainBoxBg.innerHTML = '<iframe id="' + baseIFrameId + '" name="' + baseIFrameName + '" src="' + directURL + '" frameborder="0" scrolling="no" style="position: absolute; left: 0px; top: 0px; width: ' + defWinWidth + 'px; height: ' + defWinHeight + 'px; z-index: ' + (3000 + (BonaDialog.pDialog.length * 2)) + '; background-color: #FFFFFF; border: none; padding: 0px; margin: 0px; visibility: hidden;"></iframe>';
                objMainBox = document.getElementById(baseIFrameId);
                parentIFrame = frames[baseIFrameName];

                $addHandler(window, 'beforeunload', pageUnload);

                loadProgressAttemptsDirectURL = 1;
                loadAttemptsDirectURL = 10;
                setTimeout(initWindow, 100);
            }
            else
                setTimeout(initDialog, 100);
        }

        function initWindow() {
            var i, att, allElements;

            if (parentIFrame.document && parentIFrame.document.getElementById('idEndOfPageDiv')) {
                parentIFrame.parentId = dialogId;
                parentIFrame.innerIFrame = null;

                parentIFrame.stopProp = function(e) {
                    if (!e && parentIFrame.event)
                        e = parentIFrame.event;
                    if (e)
                        $stopEvent(e);
                    return false;
                }

                winStructure.parentTable = new Object();
                winStructure.parentTable.element = parentIFrame.document.body.getElementsByTagName('TABLE')[0];

                allElements = parentIFrame.document.body.getElementsByTagName('*');

                for (i = 0; i < allElements.length; i++) {
                    if (allElements[i].getAttribute('iwtype', 0) != null) {
                        att = allElements[i].getAttribute('iwtype', 0);

                        if (winStructureParts[att]) {
                            winStructure[winStructureParts[att]] = new Object();
                            winStructure[winStructureParts[att]].element = allElements[i];
                            winStructure[winStructureParts[att]].innerTable = winStructure[winStructureParts[att]].element.getElementsByTagName('TABLE')[0];
                        }
                        else if (windowTitleParts[att]) {
                            allElements[i].id = windowTitleParts[att][0] + dialogId;
                            winTitleStruct[windowTitleParts[att][1]] = allElements[i];

                            if (att == 'TitleEventContainer' && isWinMoveable) {
                                allElements[i].iwstate = 1;

                                allElements[i].onmousedown = function(e) {
                                    if (!e && parentIFrame.event)
                                        e = parentIFrame.event;

                                    moveWindow(e, this);
                                };

                                allElements[i].onselectstart = parentIFrame.stopProp;
                                allElements[i].ondragstart = parentIFrame.stopProp;
                            }
                        }
                        else if (windowResizeableParts[att]) {
                            if (isWinResizeable) {
                                allElements[i].iwstate = windowResizeableParts[att][0];
                                allElements[i].style.cursor = windowResizeableParts[att][1];

                                allElements[i].onmousedown = function(e) {
                                    if (!e && parentIFrame.event)
                                        e = parentIFrame.event;

                                    moveWindow(e, this);
                                };

                                allElements[i].onselectstart = parentIFrame.stopProp;
                                allElements[i].ondragstart = parentIFrame.stopProp;
                            }
                        }
                        else if (att == 'CloseButton') {
                            allElements[i].onclick = function() { pThis.closeWindow(); };
                            allElements[i].style.cursor = (isIE) ? 'hand' : 'pointer';
                        }
                        else if (att == 'InnerIFrameContainer') {
                            eDataIFrame = allElements[i];
                            eDataIFrame.id = eDataIFrameId;

                            winStructure.mainRow = new Object();
                            winStructure.mainRow.element = allElements[i];
                            while ((winStructure.mainRow.element = winStructure.mainRow.element.parentNode).nodeName.toUpperCase() != 'TD');
                            winStructure.mainRow.innerTable = winStructure.mainRow.element.getElementsByTagName('TABLE')[0];
                            winStructure.scrollableContainer = new Object();
                            winStructure.scrollableContainer.element = null;
                            eDataIFrameInnerHtml = eDataIFrame.innerHTML;

                            if (reloadURL) {
                                eDataIFrame.innerHTML = '<div id="idHWinScrollableDiv" class="hWinScrollableDiv">&nbsp;</div>';
                                setReloadIFrameWaitMsgXY(null);
                            }
                            else {
                                winStructure.scrollableContainer.element = parentIFrame.document.getElementById('idHWinScrollableDiv');

                                if (isGecko && !isWinResizeable) {
                                    eDataIFrame.innerHTML = (!winStructure.scrollableContainer.element)
                    ? '<div id="idHWinScrollableDiv" class="hWinScrollableDiv"></div>'
                    : null;
                                    setTimeout(initWindowGecko1, 10);
                                }
                                else {
                                    if (!winStructure.scrollableContainer.element)
                                        eDataIFrame.innerHTML = '<div id="idHWinScrollableDiv" class="hWinScrollableDiv">' + eDataIFrameInnerHtml + '</div>';
                                    setTimeout(initWindowIE, 10);
                                }
                            }

                            winStructure.scrollableContainer.element = parentIFrame.document.getElementById('idHWinScrollableDiv');
                            eDataIFrameWidth = eDataIFrame.offsetWidth;
                            eDataIFrameHeight = eDataIFrame.offsetHeight;

                            if (isWinResizeable && reloadURL) {
                                if (!winMinWidth || winMinWidth < defWinWidth - eDataIFrameWidth + 207)
                                    winMinWidth = defWinWidth - eDataIFrameWidth + 207;
                                if (!winMinHeight || winMinHeight < defWinHeight - eDataIFrameHeight + 157)
                                    winMinHeight = defWinHeight - eDataIFrameHeight + 157;
                            }
                        }
                    }
                }

                if (reloadURL && isReloadUrlLoad)
                    createDataWindow();

                pThis.isObjValid = true;
            }
            else {
                if (isSafari && loadAttemptsDirectURL < 0 && parentIFrame.document && parentIFrame.document.body &&
            parentIFrame.document.body.innerHTML.replace(/\s+/g, '') == '') {
                    loadAttemptsDirectURL = 30 * loadProgressAttemptsDirectURL++;
                    parentIFrame.location.replace(directURL);
                }

                loadAttemptsDirectURL--;
                setTimeout(initWindow, 100);
            }
        }

        function initWindowIE() {
            if (winStructure.scrollableContainer.element.scrollHeight > winStructure.scrollableContainer.element.offsetHeight)
                objMainBoxBg.style.width = objMainBox.style.width = (winWidth + getScrollBarWidth()) + 'px';
        }

        function initWindowGecko1() {
            objMainBoxBg.style.left = objMainBoxBg.style.top = '-3333px';
            winStructure.parentTable.element.removeAttribute('height', 0);
            winStructure.mainRow.element.removeAttribute('height', 0);
            winStructure.mainRow.innerTable.removeAttribute('height', 0);
            winStructure.scrollableContainer.element.style.height = '1px';
            objMainBox.style.visibility = 'visible';
            setTimeout(initWindowGecko2, 10);
        }

        function initWindowGecko2() {
            winStructure.parentTable.element.setAttribute('height', '100%', 0);
            winStructure.mainRow.element.setAttribute('height', '100%', 0);
            winStructure.mainRow.innerTable.setAttribute('height', '100%', 0);
            winStructure.scrollableContainer.element.style.height = eDataIFrame.offsetHeight + 'px'; //winStructure.mainRow.innerTable.offsetHeight + 'px';
            eDataIFrameHeight = eDataIFrame.offsetHeight;

            if (eDataIFrameHeight > winStructure.scrollableContainer.element.offsetHeight)
                objMainBoxBg.style.width = objMainBox.style.width = (winWidth + getScrollBarWidth()) + 'px';

            objMainBoxBg.style.visibility = 'hidden';
            objMainBoxBg.style.left = winLeft + 'px';
            objMainBoxBg.style.top = winTop + 'px';

            if (eDataIFrameInnerHtml)
                winStructure.scrollableContainer.element.innerHTML = eDataIFrameInnerHtml;
        }

        function createDataWindow() {
            if (pThis.isObjValid && eDataIFrame) {
                winStructure.scrollableContainer.element.innerHTML = '<iframe id="' + reloadIFrameId + '" name="' + reloadIFrameName + '" src="' + reloadURL + '" width="100%" height="' + ((isWinResizeable) ? '100%' : eDataIFrameHeight) + '" frameborder="0" ' + ((isReloadWinScrollable) ? 'scrolling="auto"' : 'scrolling="no"') + ' style="background-color: #FFFFFF;"></iframe>';
                dataIFrame = parentIFrame.frames[reloadIFrameName];
                parentIFrame.innerIFrame = dataIFrame;
                dataIFrameElement = parentIFrame.document.getElementById(reloadIFrameId);

                loadProgressAttemptsReloadURL = 1;
                loadAttemptsReloadURL = 10;
                setTimeout(initDataWindow, 100);
            }
            else
                setTimeout(createDataWindow, 100);
        }

        function initDataWindow() {
            var docBody, e;
            //      try
            //      {
            docBody = dataIFrame && dataIFrame.document && dataIFrame.document.body;
            //      }
            //      catch (e)
            //      {
            //        history.go(0);
            //        return;
            //      }
            if (docBody && docBody.innerHTML && docBody.innerHTML.match(/\S/)) {
                dataIFrame.parentId = dialogId;
                dataIFrame.outerIFrame = parentIFrame;
                $addHandler(dataIFrame, 'unload', function() { setTimeout(initDataWindow, 100); });
                pThis.isDataValid = true;

                if (aCookie && aCookie[0] == 1) {
                    pThis.openWindow();
                    dataIFrame.scrollTo(((aCookie[5]) ? aCookie[5] : 0), ((aCookie[6]) ? aCookie[6] : 0));
                }
            }
            else {
                if (isSafari && loadAttemptsReloadURL < 0 && docBody && docBody.innerHTML.replace(/\s+/g, '') == '') {
                    loadAttemptsReloadURL = 30 * loadProgressAttemptsReloadURL++;
                    dataIFrame.location.replace(reloadURL);
                }
                loadAttemptsReloadURL--;
                setTimeout(initDataWindow, 100);
                //        if (null == docBody && loadAttemptsReloadURL < 0)
                //          history.go(0);
            }
        }

        function openWindow(newReloadURL, winNewLeft, winNewTop, winNewWidth, winNewHeight, winNewTitle) {
            if (newReloadURL != null && newReloadURL != '')
                reloadURL = newReloadURL;

            pThis.isDataValid = false;

            if (dataIFrame && !isReloadUrlNotReload)
                dataIFrame.isIFrameLoaded = false;

            openWindowStep0();
            openWindowStep1(winNewLeft, winNewTop, winNewWidth, winNewHeight, winNewTitle);
        }

        function openWindowStep0() {
            if (isWinModal) {
                if (objShadingBox)
                    setShadingBoxXY(true);
                else
                    setTimeout(openWindowStep0, 100);
            }
        }

        function openWindowStep1(winNewLeft, winNewTop, winNewWidth, winNewHeight, winNewTitle) {
            if (pThis.isObjValid) {
                if (winNewLeft != null && winNewLeft >= 0)
                    winLeft = Number(winNewLeft);
                if (winNewTop != null && winNewTop >= 0)
                    winTop = Number(winNewTop);
                if (winNewWidth != null && winNewWidth >= 0)
                    winWidth = winNewWidth;
                if (winNewHeight != null && winNewHeight >= 0)
                    winHeight = winNewHeight;
                winTitleStruct.objWinTitle.innerHTML = (winNewTitle) ? winNewTitle : '';

                returnParameters = new Object();
                if (pCallBackParameters) {
                    for (i in pCallBackParameters) {
                        if (typeof (pCallBackParameters[i]) != 'function')
                            returnParameters[i] = pCallBackParameters[i];
                    }

                    parentIFrame.callBackParameters = returnParameters;
                }
                setTimeout(openWindowStep2, 10);
            }
            else
                setTimeout(function() { openWindowStep1(winNewLeft, winNewTop, winNewWidth, winNewHeight, winNewTitle); }, 100);
        }

        function openWindowStep2() {
            var dbWidth = getInnerWidth();
            var dbHeight = getInnerHeight();

            if (!isWinMoveable) {
                winLeft = defWinLeft;
                winRight = defWinRight;
            }
            if (!isWinResizeable) {
                winWidth = defWinWidth;
                winHeight = defWinHeight;
            }

            if (winLeft == null)
                winLeft = Math.round((dbWidth - winWidth) / 2) + getScrollLeft();
            if (winTop == null)
                winTop = Math.round((dbHeight - winHeight) / 2) + getScrollTop();

            objMainBoxBg.style.left = winLeft + 'px';
            objMainBoxBg.style.top = winTop + 'px';
            objMainBoxBg.style.width = objMainBox.style.width = winWidth + 'px';
            objMainBoxBg.style.height = objMainBox.style.height = ((winHeight > dbHeight) ? ((winMinHeight && winMinHeight > dbHeight) ? winMinHeight : dbHeight) : winHeight) + 'px';

            if (reloadURL && dataIFrame && !isReloadUrlNotReload)
                dataIFrame.document.body.innerHTML = '';

            if (!isWinResizeable) {
                if (isGecko) {
                    if (objMainBoxBg.style.visibility != 'visible')
                        openWindowStep2Gecko();
                    else
                        setTimeout(openWindowStep3, 10);
                }
                else
                    setTimeout(openWindowStep2IE, 10);
            }
            else
                setTimeout(openWindowStep3, 10);
        }

        function openWindowStep2IE() {
            if (winStructure.scrollableContainer.element.scrollHeight > winStructure.scrollableContainer.element.offsetHeight)
                objMainBoxBg.style.width = objMainBox.style.width = (winWidth + getScrollBarWidth()) + 'px';

            setTimeout(openWindowStep3, 10);
        }

        function openWindowStep2Gecko() {
            objMainBoxBg.style.left = '-3333px';
            objMainBoxBg.style.top = '-3333px';
            winStructure.parentTable.element.removeAttribute('height', 0);
            winStructure.mainRow.element.removeAttribute('height', 0);
            winStructure.mainRow.innerTable.removeAttribute('height', 0);
            winStructure.scrollableContainer.element.style.height = '1px';
            objMainBoxBg.style.visibility = 'visible';
            setTimeout(openWindowStep3Gecko, 10);
        }

        function openWindowStep3Gecko() {
            winStructure.parentTable.element.setAttribute('height', '100%', 0);
            winStructure.mainRow.element.setAttribute('height', '100%', 0);
            winStructure.mainRow.innerTable.setAttribute('height', '100%', 0);
            winStructure.scrollableContainer.element.style.height = eDataIFrame.offsetHeight + 'px'; //winStructure.mainRow.innerTable.offsetHeight + 'px';

            if (eDataIFrameHeight > winStructure.scrollableContainer.element.offsetHeight)
                objMainBoxBg.style.width = objMainBox.style.width = (winWidth + getScrollBarWidth()) + 'px';

            objMainBoxBg.style.left = winLeft + 'px';
            objMainBoxBg.style.top = winTop + 'px';

            setTimeout(openWindowStep3, 10);
        }

        function openWindowStep3() {
            setWindowXY();

            if (reloadURL && !isReloadUrlNotReload)
                setReloadIFrameWaitMsgXY(true);

            objMainBoxBg.style.visibility = 'visible';
            objMainBox.style.visibility = 'visible';

            if (typeof (parentIFrame.refreshState) == 'function')
                parentIFrame.refreshState();

            $addHandler(window, 'resize', setWindowXY);
            $addHandler(window, 'scroll', setWindowXY);
            $addHandler(((isIE) ? parentIFrame.document.body : parentIFrame), 'keypress', keyPress);

            parentIFrame.focus();
            changeState(1);

            if (reloadURL && !isReloadUrlNotReload)
                setTimeout(openWindowStep4, 10);
        }

        function openWindowStep4() {
            if (dataIFrame) {
                dataIFrame.isIFrameLoaded = false;
                dataIFrame.location.replace(reloadURL);
            }
            else
                createDataWindow();

            setTimeout(openWindowStep5, 100);
        }

        function openWindowStep5() {
            if (reloadURL && !pThis.isDataValid) {
                setTimeout(openWindowStep5, 100);
                return false;
            }

            if (dataIFrame && dataIFrame.document && dataIFrame.document.body)
                $addHandler(((isIE) ? dataIFrame.document.body : dataIFrame), 'keypress', keyPress);

            setReloadIFrameWaitMsgXY(false);
            if (winTitleStruct.objWinTitle.innerHTML.length == 0 && dataIFrame.document.title)
                winTitleStruct.objWinTitle.innerHTML = dataIFrame.document.title;
        }

        function refreshInnerWindow(newReloadURL) {
            if (newReloadURL)
                reloadURL = newReloadURL;

            pThis.isDataValid = false;
            setReloadIFrameWaitMsgXY(true);
            dataIFrame.document.body.innerHTML = '';
            openWindowStep4();
        }

        function setWindowXY() {
            if (!pThis.isObjValid)
                return false;

            if (tmSetXY)
                clearTimeout(tmSetXY);

            var dbWidth = getInnerWidth();
            var dbHeight = getInnerHeight();
            var dbScrollLeft = getScrollLeft();
            var dbScrollTop = getScrollTop();
            var dbScrollWidth = getScrollWidth();
            var dbScrollHeight = getScrollHeight();
            winLeft = objMainBoxBg.offsetLeft;
            winTop = objMainBoxBg.offsetTop;
            var winClientOffsetLeft = winLeft - dbScrollLeft;
            var winClientOffsetTop = winTop - dbScrollTop;

            winWidth = objMainBoxBg.offsetWidth;
            winHeight = objMainBoxBg.offsetHeight;

            if (winClientOffsetLeft < 0)
                winLeft = dbScrollLeft;
            else if (winClientOffsetLeft + winWidth + getScrollBarWidth() > dbWidth)
                winLeft = dbWidth + dbScrollLeft - winWidth - getScrollBarWidth();

            if (winClientOffsetTop < 0)
                winTop = dbScrollTop;
            else if (winClientOffsetTop + winHeight + getScrollBarWidth() > dbHeight)
                winTop = dbHeight + dbScrollTop - winHeight - getScrollBarWidth();

            objMainBoxBg.style.left = winLeft + 'px';
            objMainBoxBg.style.top = winTop + 'px';

            parentIFrame.scroll(0, 0);

            if (isWinModal)
                setShadingBoxXY(true);
        }

        function setWindowHeight(height, maxHeight) {
            if (height < 220) height = 220;
            if (!maxHeight) maxHeight = getWindowHeight(window) - 50;
            if (height > maxHeight) height = maxHeight;
            objMainBoxBg.style.height = objMainBox.style.height = height + 'px';
            setWindowXY();
        }

        function setWindowSize(width, height) {
            objMainBoxBg.style.width = objMainBox.style.width = width + 'px';
            setWindowHeight(height, false);
        }

        function focusToParentIframe() {
            if (parentIFrame) setTimeout(function() { parentIFrame.focus(); }, 10);
        }

        function focusToInnerIframe() {
            if (parentIFrame && parentIFrame.innerIFrame) setTimeout(function() { parentIFrame.innerIFrame.focus(); }, 10);
        }

        function addEnabledElements(tagName) {
            var els, i;
            els = top.document.getElementsByTagName(tagName);
            for (i = 0; i < els.length; i++)
                if (!els[i].disabled) {
                els[i].disabled = true;
                enabledElements.push(els[i]);
            }
        }

        function setShadingBoxXY(state) {
            var dbWidth, dbHeight, dbScrollLeft, dbScrollTop, dbScrollWidth, dbScrollHeight, arraySelects, i;
            dbWidth = getInnerWidth();
            dbHeight = getInnerHeight();
            dbScrollLeft = getScrollLeft();
            dbScrollTop = getScrollTop();
            dbScrollWidth = getScrollWidth();
            dbScrollHeight = getScrollHeight();
            if (state) {
                if (!enabledElements) {
                    enabledElements = new Array();
                    addEnabledElements('SELECT');
                    addEnabledElements('INPUT');
                    addEnabledElements('BUTTON');
                    addEnabledElements('TEXTAREA');
                    addEnabledElements('LABEL');
                    addEnabledElements('A');
                }
                objShadingBox.style.width = (dbScrollWidth > dbWidth) ? dbScrollWidth + 'px' : (dbWidth - (isIE ? 0 : getScrollBarWidth())) + 'px';
                objShadingBox.style.height = (dbScrollHeight > dbHeight) ? dbScrollHeight + 'px' : dbHeight + 'px';
                objShadingBox.style.visibility = 'visible';
            }
            else {
                objShadingBox.style.visibility = 'hidden';
                objShadingBox.style.height = objShadingBox.style.width = '1px';
                if (enabledElements) {
                    for (i = 0; i < enabledElements.length; i++)
                        enabledElements[i].disabled = false;
                    enabledElements = false;
                }
            }
        }

        function setReloadIFrameWaitMsgXY(state) {
            if (!reloadIFrameWaitMsg) {
                reloadIFrameWaitMsg = parentIFrame.document.createElement('DIV');
                reloadIFrameWaitMsg.id = reloadIFrameWaitMsgId;
                reloadIFrameWaitMsg.style.position = 'absolute';
                reloadIFrameWaitMsg.style.left = reloadIFrameWaitMsg.style.top = '0px';
                reloadIFrameWaitMsg.style.width = reloadIFrameWaitMsg.style.height = '1px';
                reloadIFrameWaitMsg.style.zIndex = 23003;
                reloadIFrameWaitMsg.style.overflow = 'hidden';
                reloadIFrameWaitMsg.style.visibility = 'hidden';
                reloadIFrameWaitMsg.innerHTML = '<table width="100%" height="100%" cellspacing="0" cellpadding="0" border="0"><tr><td width="100%" height="100%" align="center" valign="middle" style="background-color: #FFFFFF; ' + ((isIE) ? 'filter: progid:DXImageTransform.Microsoft.Alpha(opacity=77);' : '-moz-opacity: 0.77; -khtml-opacity: 0.77; opacity: 0.77;') + '">' + ((waitMessageImgURL) ? '<img src="' + waitMessageImgURL + '" width="130" height="60" border="0" alt="">' : ('<span style="font-size: 12px; font-weight: bold;">' + ((waitMessage) ? waitMessage : '') + '</span>')) + '</td></tr></table>';
                parentIFrame.document.body.appendChild(reloadIFrameWaitMsg);
            }

            if (state) {
                getXY(eDataIFrame);
                reloadIFrameWaitMsg.style.top = eDataIFrame.Y + 'px';
                reloadIFrameWaitMsg.style.left = eDataIFrame.X + 'px';

                if (isIE) {
                    reloadIFrameWaitMsg.style.width = eDataIFrame.offsetWidth + 'px';
                    reloadIFrameWaitMsg.style.height = eDataIFrame.offsetHeight + 'px';
                    reloadIFrameWaitMsg.style.visibility = 'visible';
                }
                else {
                    setTimeout(function() {
                        if (!pThis.isDataValid) {
                            reloadIFrameWaitMsg.style.width = eDataIFrame.offsetWidth + 'px';
                            reloadIFrameWaitMsg.style.height = eDataIFrame.offsetHeight + 'px';
                            reloadIFrameWaitMsg.style.visibility = 'visible';
                        }
                    }, 3);
                }
            }
            else {
                reloadIFrameWaitMsg.style.visibility = 'hidden';
                reloadIFrameWaitMsg.style.top = reloadIFrameWaitMsg.style.left = '0px';
                reloadIFrameWaitMsg.style.width = reloadIFrameWaitMsg.style.height = '1px';
            }
        }

        function moveWindowSetMouseOver() {
            if (tmMoveOut)
                clearTimeout(tmMoveOut);
        }

        function moveWindowSetMouseOut() {
            if (tmMoveOut)
                clearTimeout(tmMoveOut);
            tmMoveOut = setTimeout(function() { moveWindowDo(null); }, 100);
        }

        function moveWindow(e, currentTarget) {
            var eType, eCurrentTarget, eButton, eX, eY;

            if (tmMoveOut)
                clearTimeout(tmMoveOut);

            if (!e && window.event)
                e = window.event;

            if (e) {
                $stopEvent(e);
                eType = e.type;
                eCurrentTarget = (currentTarget) ? currentTarget : null;
                eButton = e.button;
                eX = e.screenX;
                eY = e.screenY;
                moveWindowDo(eType, eCurrentTarget, eButton, eX, eY);
            }
            else
                moveWindowDo(null);
        }

        function moveWindowDo(eType, eCurrentTarget, eButton, eX, eY) {
            var tmpWidth, tmpHeight, tmpScrollLeft, tmpScrollTop;

            if (tmMoveOut)
                clearTimeout(tmMoveOut);

            if (eType == null) {
                moveWindowStruct.pushMouseLeftButton = false;
                removeWindowMoveHandlers();
                setWindowXY();
            }
            else {
                if (eType == 'mousedown') {
                    if (eButton == 0 || eButton == 1) {
                        moveWindowStruct.X = eX;
                        moveWindowStruct.Y = eY;
                        moveWindowStruct.pushMouseLeftButton = true;
                        moveWindowStruct.st = eCurrentTarget.iwstate;
                        addWindowMoveHandlers();
                    }
                    else {
                        moveWindowStruct.pushMouseLeftButton = false;
                        moveWindowStruct.st = 0;
                        removeWindowMoveHandlers();
                        setWindowXY();
                    }
                }
                else if (eType == 'mouseup' || eType == 'mouseout') {
                    moveWindowStruct.pushMouseLeftButton = false;
                    moveWindowStruct.st = 0;
                    removeWindowMoveHandlers();
                    setWindowXY();
                }
                else if (eType == 'mousemove' && moveWindowStruct.pushMouseLeftButton) {
                    if (moveWindowStruct.st == 1) {
                        objMainBoxBg.style.left = (objMainBoxBg.offsetLeft + (eX - moveWindowStruct.X)) + 'px';
                        objMainBoxBg.style.top = (objMainBoxBg.offsetTop + (eY - moveWindowStruct.Y)) + 'px';
                        moveWindowStruct.X = eX;
                        moveWindowStruct.Y = eY;
                    }
                    else {
                        if (isIE && dataIFrame && dataIFrame.document && dataIFrame.document.body) {
                            tmpScrollLeft = dataIFrame.document.body.scrollLeft;
                            tmpScrollTop = dataIFrame.document.body.scrollTop;
                        }

                        if (moveWindowStruct.st == 2 || moveWindowStruct.st == 6 || moveWindowStruct.st == 8) {
                            tmpWidth = objMainBoxBg.offsetWidth + (moveWindowStruct.X - eX);
                            if (tmpWidth > winMinWidth)
                                objMainBoxBg.style.left = (objMainBoxBg.offsetLeft + (eX - moveWindowStruct.X)) + 'px';
                        }
                        else if (moveWindowStruct.st == 3 || moveWindowStruct.st == 7 || moveWindowStruct.st == 9)
                            tmpWidth = objMainBoxBg.offsetWidth + (eX - moveWindowStruct.X);

                        if (moveWindowStruct.st == 4 || moveWindowStruct.st == 6 || moveWindowStruct.st == 7) {
                            tmpHeight = objMainBoxBg.offsetHeight + (moveWindowStruct.Y - eY);

                            if (tmpHeight > winMinHeight)
                                objMainBoxBg.style.top = (objMainBoxBg.offsetTop + (eY - moveWindowStruct.Y)) + 'px';
                        }
                        else if (moveWindowStruct.st == 5 || moveWindowStruct.st == 8 || moveWindowStruct.st == 9)
                            tmpHeight = objMainBoxBg.offsetHeight + (eY - moveWindowStruct.Y);

                        if (moveWindowStruct.st == 2 || moveWindowStruct.st == 3 || moveWindowStruct.st > 5) {
                            if (tmpWidth > winMinWidth)
                                objMainBoxBg.style.width = objMainBox.style.width = tmpWidth + 'px';
                            moveWindowStruct.X = eX;
                        }

                        if (moveWindowStruct.st > 3) {
                            if (tmpHeight > winMinHeight)
                                objMainBoxBg.style.height = objMainBox.style.height = tmpHeight + 'px';
                            moveWindowStruct.Y = eY;
                        }

                        if (isIE && dataIFrame)
                            dataIFrame.scrollTo(tmpScrollLeft, tmpScrollTop);
                    }
                }
            }
        }

        function addWindowMoveHandlers() {
            $addHandler(document.body, 'mousemove', moveWindow);
            $addHandler(document.body, 'mouseup', moveWindow);
            $addHandler(document.body, 'mouseout', moveWindowSetMouseOut);
            $addHandler(document.body, 'mouseover', moveWindowSetMouseOver);

            $addHandler(parentIFrame.document.body, 'mousemove', moveWindow);
            $addHandler(parentIFrame.document.body, 'mouseup', moveWindow);

            if (dataIFrame && dataIFrame.document && dataIFrame.document.body) {
                $addHandler(dataIFrame.document.body, 'mousemove', moveWindow);
                $addHandler(dataIFrame.document.body, 'mouseup', moveWindow);
            }
        }

        function removeWindowMoveHandlers() {
            $removeHandler(document.body, 'mousemove', moveWindow);
            $removeHandler(document.body, 'mouseup', moveWindow);
            $removeHandler(document.body, 'mouseout', moveWindowSetMouseOut);
            $removeHandler(document.body, 'mouseover', moveWindowSetMouseOver);

            $removeHandler(parentIFrame.document.body, 'mousemove', moveWindow);
            $removeHandler(parentIFrame.document.body, 'mouseup', moveWindow);

            if (dataIFrame && dataIFrame.document && dataIFrame.document.body) {
                $removeHandler(dataIFrame.document.body, 'mousemove', moveWindow);
                $removeHandler(dataIFrame.document.body, 'mouseup', moveWindow);
            }
        }

        function keyPress(ev) {
            if (!ev) ev = window.event;
            if (27 == (ev.keyCode ? ev.keyCode : 0))
                pThis.closeWindow();
        }

        function closeWindow() {
            if (!this.isObjValid)
                return false;

            if (typeof (parentIFrame.beforeCloseWindow) == 'function')
                if (parentIFrame.beforeCloseWindow())
                return false;

            if (typeof (top.beforeCloseWindow) == 'function')
                if (top.beforeCloseWindow())
                return false;

            $removeHandler(window, 'resize', setWindowXY);
            $removeHandler(window, 'scroll', setWindowXY);
            $removeHandler(((isIE) ? parentIFrame.document.body : parentIFrame), 'keypress', keyPress);

            if (dataIFrame && dataIFrame.document && dataIFrame.document.body) {
                $removeHandler(((isIE) ? dataIFrame.document.body : dataIFrame), 'keypress', keyPress);
                setReloadIFrameWaitMsgXY(false);
            }

            objMainBox.style.visibility = 'hidden';
            objMainBoxBg.style.visibility = 'hidden';
            objMainBoxBg.style.left = objMainBoxBg.style.top = '0px';
            objMainBoxBg.style.width = objMainBoxBg.style.height = '1px';

            if (isWinModal)
                setShadingBoxXY(false);

            setTimeout(function() { changeState(0); }, 100);
        }

        function gotoElement(cId, winNewLeft, winNewTop, winNewWidth, winNewHeight, winNewTitle) {
            var nElement;

            if (!this.isObjValid || !dataIFrame)
                return false;

            if (!state)
                this.openWindow(winNewLeft, winNewTop, winNewWidth, winNewHeight, winNewTitle);

            if (cId) {
                nElement = dataIFrame.document.getElementById(cId);
                getXY(nElement);
                dataIFrame.scrollTo(0, nElement.Y);
                parentIFrame.document.body.focus();
            }
        }

        function getReturnedParameters() {
            return returnParameters;
        }

        function setReturnedParameters(param, value) {
            pCallBackParameters[param] = value;
        }

        function changeState(st) {
            state = (st) ? true : false;
        }

        function getState() {
            return state;
        }

        function getReloadURL() {
            return reloadURL;
        }

        function getWindowCookie() {
            matchCookie = reCookie.exec(document.cookie);

            if (matchCookie != null && matchCookie.length > 1)
                aCookie = matchCookie[1].split(/:/);

            if (aCookie && aCookie[1] != null)
                winLeft = Number(aCookie[1]);

            if (aCookie && aCookie[2] != null)
                winTop = Number(aCookie[2]);

            winWidth = (aCookie && aCookie[3] != null)
        ? Number(aCookie[3])
        : (winWidth)
          ? Number(winWidth)
          : 500;

            winHeight = (aCookie && aCookie[4] != null)
        ? Number(aCookie[4])
        : (winHeight)
          ? Number(winHeight)
          : 300;
        }

        function pageUnload() {
            if (this.isObjValid) {

                if (remStateCookie && dataIFrame) {
                    var i;
                    var aAllCookie = new Array();
                    var strCookie = dialogId + ':' + ((state) ? 1 : 0) + ':' + (objMainBox.offsetLeft - getScrollLeft()) + ':' + (objMainBox.offsetTop - getScrollTop()) + ':' + objMainBox.offsetWidth + ':' + objMainBox.offsetHeight + ':' + dataIFrame.document.body.scrollLeft + ':' + dataIFrame.document.body.scrollTop;
                    matchCookie = document.cookie.match(/InnerWindows=([^;]*)/);

                    if (matchCookie && matchCookie.length && matchCookie.length > 1) {
                        aAllCookie = matchCookie[1].split(/&/);

                        for (i = 0; i < aAllCookie.length; i++)
                            if (aAllCookie[i].indexOf(dialogId) != -1) {
                            aAllCookie[i] = strCookie;
                            break;
                        }

                        if (i == aAllCookie.length)
                            aAllCookie.push(strCookie);
                    }
                    else
                        aAllCookie.push(strCookie);

                    document.cookie = 'InnerWindows=' + aAllCookie.join('&') + ';path=/';
                }

                destructor();
            }
        }

        function destructor() {
            if (parentIFrame) {
                if (parentIFrame.parentId)
                    parentIFrame.parentId = null;

                if (parentIFrame.innerIFrame)
                    parentIFrame.innerIFrame = null;

                if (parentIFrame.stopProp)
                    parentIFrame.stopProp = null;
            }

            if (dataIFrame) {
                if (dataIFrame.parentId)
                    dataIFrame.parentId = null;

                if (dataIFrame.outerIFrame)
                    dataIFrame.outerIFrame = null;
            }
        }

        setTimeout(initDialog, 200);
    }
})();

//===================================================================

function initContextWindows(objId, cwParameters)
{
  if(typeof(top.BonaDialog) == 'undefined' || !top.BonaDialog)
  {
    setTimeout(function() { initContextWindows(objId, cwParameters); }, 100);
    return;
  }
  top.BonaDialog.createInnerWindow(objId, cwParameters);
}

function openContextWindow(objId, reloadURL, elememtId, width, height, title, aboveElement)
{
  var cw, elememt, x, y;
  if(!typeof(top.BonaDialog) == 'undefined' || !top.BonaDialog) return;
  cw = top.BonaDialog.getObjectById(objId);
  if(!cw) return;
  elememt = (elememtId) ? document.getElementById(elememtId) : false;
  if(elememt)
  {
    getXY(elememt);
    x = elememt.X + (aboveElement ? 0 : elememt.offsetWidth - width);
    y = (elememt.Y - getScrollTop() + height > getInnerHeight())
      ? elememt.Y - height + (aboveElement ? elememt.offsetHeight + 15 : 0)
      : elememt.Y + (aboveElement ? 0 : elememt.offsetHeight);
  }
  else
  {
    x = (getInnerWidth() - width) / 2 + getScrollLeft();
    y = (getInnerHeight() - height) / 2 + getScrollTop();
  }
  cw.openWindow(reloadURL, x, y, width, height, title);
}
