﻿Type.registerNamespace('AjaxControlToolkit');
Type.registerNamespace('FrieslandBank.Portal.Controls');

FrieslandBank.Portal.Controls.ModalPopupRepositionMode = function() {
    throw Error.invalidOperation();
}
FrieslandBank.Portal.Controls.ModalPopupRepositionMode.prototype = {
    None: 0,
    RepositionOnWindowResize: 1,
    RepositionOnWindowScroll: 2,
    RepositionOnWindowResizeAndScroll: 3
}
FrieslandBank.Portal.Controls.ModalPopupRepositionMode.registerEnum('FrieslandBank.Portal.Controls.ModalPopupRepositionMode');
FrieslandBank.Portal.Controls.ModalPopupBehavior = function(element) {
    FrieslandBank.Portal.Controls.ModalPopupBehavior.initializeBase(this, [element]);
    this._PopupControlID = null;
    this._PopupDragHandleControlID = null;
    this._BackgroundCssClass = null;
    this._DropShadow = false;
    this._Drag = false;
    this._OkControlID = null;
    this._CancelControlID = null;
    this._OnOkScript = null;
    this._OnCancelScript = null;
    this._xCoordinate = -1;
    this._yCoordinate = -1;
    this._repositionMode = FrieslandBank.Portal.Controls.ModalPopupRepositionMode.RepositionOnWindowResizeAndScroll;
    this._backgroundElement = null;
    this._foregroundElement = null;
    this._relativeOrAbsoluteParentElement = null;
    this._popupElement = null;
    this._dragHandleElement = null;
    this._showHandler = null;
    this._okHandler = null;
    this._cancelHandler = null;
    // Added backgroundClickHandler
    this._backgroundClickHandler = null;
    // End added
    this._scrollHandler = null;
    this._resizeHandler = null;
    this._windowHandlersAttached = false;
    this._dropShadowBehavior = null;
    this._dragBehavior = null;
    this._isIE6 = false;
    this._saveTabIndexes = new Array();
    this._saveDesableSelect = new Array();
    this._tagWithTabIndex = new Array('A', 'AREA', 'BUTTON', 'INPUT', 'OBJECT', 'SELECT', 'TEXTAREA', 'IFRAME');
}
FrieslandBank.Portal.Controls.ModalPopupBehavior.prototype = {
    initialize: function() {
        FrieslandBank.Portal.Controls.ModalPopupBehavior.callBaseMethod(this, 'initialize');
        this._isIE6 = (Sys.Browser.agent == Sys.Browser.InternetExplorer && Sys.Browser.version < 7);
        if (this._PopupDragHandleControlID)
            this._dragHandleElement = $get(this._PopupDragHandleControlID);
        this._popupElement = $get(this._PopupControlID);
        if (this._DropShadow) {
            this._foregroundElement = document.createElement('div');
            this._foregroundElement.id = this.get_id() + '_foregroundElement';
            this._popupElement.parentNode.appendChild(this._foregroundElement);
            this._foregroundElement.appendChild(this._popupElement);
        }
        else {
            this._foregroundElement = this._popupElement;
        }
        this._backgroundElement = document.createElement('div');
        this._backgroundElement.id = this.get_id() + '_backgroundElement';
        this._backgroundElement.style.display = 'none';
        this._backgroundElement.style.position = 'fixed';
        this._backgroundElement.style.left = '0px';
        this._backgroundElement.style.top = '0px';
        this._backgroundElement.style.zIndex = 10000;
        if (this._BackgroundCssClass) {
            this._backgroundElement.className = this._BackgroundCssClass;
        }
        this._foregroundElement.parentNode.appendChild(this._backgroundElement);
        this._foregroundElement.style.display = 'none';
        this._foregroundElement.style.position = 'fixed';
        this._foregroundElement.style.zIndex = $common.getCurrentStyle(this._backgroundElement, 'zIndex', this._backgroundElement.style.zIndex) + 1;
        this._showHandler = Function.createDelegate(this, this._onShow);
        $addHandler(this.get_element(), 'click', this._showHandler);
        if (this._OkControlID) {
            this._okHandler = Function.createDelegate(this, this._onOk);
            $addHandler($get(this._OkControlID), 'click', this._okHandler);
        }

        if (this._CancelControlID && !this._PostbackOnCancelEnabled) {
            this._cancelHandler = Function.createDelegate(this, this._onCancel);
            $addHandler($get(this._CancelControlID), 'click', this._cancelHandler);
        }

        // Handler added for cathing background click to close popup
        if (this._backgroundElement.id) {
            this._backgroundClickHandler = Function.createDelegate(this, this._onBackgroundClick);
            $addHandler($get(this._backgroundElement.id), 'click', this._backgroundClickHandler);
        }
        // End added section

        this._scrollHandler = Function.createDelegate(this, this._onLayout);
        this._resizeHandler = Function.createDelegate(this, this._onLayout);
        this.registerPartialUpdateEvents();
    },
    dispose: function() {
        this._hideImplementation();
        if (this._foregroundElement && this._foregroundElement.parentNode) {
            this._foregroundElement.parentNode.removeChild(this._backgroundElement);
            if (this._DropShadow) {
                this._foregroundElement.parentNode.appendChild(this._popupElement);
                this._foregroundElement.parentNode.removeChild(this._foregroundElement);
            }
        }
        this._scrollHandler = null;
        this._resizeHandler = null;
        if (this._cancelHandler && $get(this._CancelControlID)) {
            $removeHandler($get(this._CancelControlID), 'click', this._cancelHandler);
            this._cancelHandler = null;
        }
        if (this._okHandler && $get(this._OkControlID)) {
            $removeHandler($get(this._OkControlID), 'click', this._okHandler);
            this._okHandler = null;
        }
        if (this._showHandler) {
            $removeHandler(this.get_element(), 'click', this._showHandler);
            this._showHandler = null;
        }
        FrieslandBank.Portal.Controls.ModalPopupBehavior.callBaseMethod(this, 'dispose');
    },
    _attachPopup: function() {
        if (this._DropShadow && !this._dropShadowBehavior) {
            this._dropShadowBehavior = $create(AjaxControlToolkit.DropShadowBehavior, {}, null, null, this._popupElement);
        }
        if (this._dragHandleElement && !this._dragBehavior) {
            this._dragBehavior = $create(AjaxControlToolkit.FloatingBehavior, { "handle": this._dragHandleElement }, null, null, this._foregroundElement);
        }
        $addHandler(window, 'resize', this._resizeHandler);
        $addHandler(window, 'scroll', this._scrollHandler);
        this._windowHandlersAttached = true;
    },
    _detachPopup: function() {
        if (this._windowHandlersAttached) {
            if (this._scrollHandler) {
                $removeHandler(window, 'scroll', this._scrollHandler);
            }
            if (this._resizeHandler) {
                $removeHandler(window, 'resize', this._resizeHandler);
            }
            this._windowHandlersAttached = false;
        }
        if (this._dragBehavior) {
            this._dragBehavior.dispose();
            this._dragBehavior = null;
        }
        if (this._dropShadowBehavior) {
            this._dropShadowBehavior.dispose();
            this._dropShadowBehavior = null;
        }
    },
    _onShow: function(e) {
        if (!this.get_element().disabled) {
            this.show();
            e.preventDefault();
            return false;
        }
    },
    _onOk: function(e) {
        var element = $get(this._OkControlID);
        if (element && !element.disabled) {
            if (this.hide() && this._OnOkScript) {
                window.setTimeout(this._OnOkScript, 0);
            }
            e.preventDefault();
            return false;
        }
    },
    _onCancel: function(e) {
        var element = $get(this._CancelControlID);
        if (element && !element.disabled) {
            if (this.hide() && this._OnCancelScript) {
                window.setTimeout(this._OnCancelScript, 0);
            }
            e.preventDefault();
            return false;
        }
    },
    _onBackgroundClick: function(e) {
        var element = $get(this._CancelControlID);
        if (element) {
            element.click();
        }

        return false;
        //        var element = $get(this._backgroundElement.id);
        //        if (element && !element.disabled) {
        //            if (this.hide() && this._OnCancelScript) {
        //                window.setTimeout(this._OnCancelScript, 0);
        //            }
        //            e.preventDefault();

        //            return false;
        //        }
    },
    _onLayout: function(e) {
        var positioning = this.get_repositionMode();
        if (((positioning === FrieslandBank.Portal.Controls.ModalPopupRepositionMode.RepositionOnWindowScroll) ||
(positioning === FrieslandBank.Portal.Controls.ModalPopupRepositionMode.RepositionOnWindowResizeAndScroll)) && (e.type === 'scroll')) {
            this._layout();
        } else if (((positioning === FrieslandBank.Portal.Controls.ModalPopupRepositionMode.RepositionOnWindowResize) ||
(positioning === FrieslandBank.Portal.Controls.ModalPopupRepositionMode.RepositionOnWindowResizeAndScroll)) && (e.type === 'resize')) {
            this._layout();
        } else {
            this._layoutBackgroundElement();
        }
    },
    show: function() {
        var eventArgs = new Sys.CancelEventArgs();
        this.raiseShowing(eventArgs);
        if (eventArgs.get_cancel()) {
            return;
        }
        this.populate();
        this._attachPopup();
        this._backgroundElement.style.display = '';
        this._foregroundElement.style.display = '';
        this._popupElement.style.display = '';
        if (this._isIE6) {
            this._foregroundElement.style.position = 'absolute';
            this._backgroundElement.style.position = 'absolute';
            var tempRelativeOrAbsoluteParent = this._foregroundElement.parentNode;
            while (tempRelativeOrAbsoluteParent && (tempRelativeOrAbsoluteParent != document.documentElement)) {
                if ((tempRelativeOrAbsoluteParent.style.position != 'relative') && (tempRelativeOrAbsoluteParent.style.position != 'absolute')) {
                    tempRelativeOrAbsoluteParent = tempRelativeOrAbsoluteParent.parentNode;
                } else {
                    this._relativeOrAbsoluteParentElement = tempRelativeOrAbsoluteParent;
                    break;
                }
            }
        }
        this.disableTab();
        this._layout();
        this._layout();
        this.raiseShown(Sys.EventArgs.Empty);
    },
    disableTab: function() {
        var i = 0;
        var tagElements;
        var tagElementsInPopUp = new Array();
        Array.clear(this._saveTabIndexes);
        for (var j = 0; j < this._tagWithTabIndex.length; j++) {
            tagElements = this._foregroundElement.getElementsByTagName(this._tagWithTabIndex[j]); for (var k = 0; k < tagElements.length; k++) {
                tagElementsInPopUp[i] = tagElements[k]; i++;
            }
        }
        i = 0; for (var j = 0; j < this._tagWithTabIndex.length; j++) {
            tagElements = document.getElementsByTagName(this._tagWithTabIndex[j]); for (var k = 0; k < tagElements.length; k++) {
                if (Array.indexOf(tagElementsInPopUp, tagElements[k]) == -1) {
                    this._saveTabIndexes[i] = { tag: tagElements[k], index: tagElements[k].tabIndex }; tagElements[k].tabIndex = "-1"; i++;
                }
            }
        }
        i = 0; if ((Sys.Browser.agent === Sys.Browser.InternetExplorer) && (Sys.Browser.version < 7)) {
            var tagSelectInPopUp = new Array(); for (var j = 0; j < this._tagWithTabIndex.length; j++) {
                tagElements = this._foregroundElement.getElementsByTagName('SELECT'); for (var k = 0; k < tagElements.length; k++) {
                    tagSelectInPopUp[i] = tagElements[k]; i++;
                }
            }
            i = 0; Array.clear(this._saveDesableSelect); tagElements = document.getElementsByTagName('SELECT'); for (var k = 0; k < tagElements.length; k++) {
                if (Array.indexOf(tagSelectInPopUp, tagElements[k]) == -1) {
                    this._saveDesableSelect[i] = { tag: tagElements[k], visib: $common.getCurrentStyle(tagElements[k], 'visibility') }; tagElements[k].style.visibility = 'hidden'; i++;
                }
            }
        }
    },
    restoreTab: function() {
        for (var i = 0; i < this._saveTabIndexes.length; i++) {
            this._saveTabIndexes[i].tag.tabIndex = this._saveTabIndexes[i].index;
        }
        Array.clear(this._saveTabIndexes); if ((Sys.Browser.agent === Sys.Browser.InternetExplorer) && (Sys.Browser.version < 7)) {
            for (var k = 0; k < this._saveDesableSelect.length; k++) {
                this._saveDesableSelect[k].tag.style.visibility = this._saveDesableSelect[k].visib;
            }
            Array.clear(this._saveDesableSelect);
        }
    },
    hide: function() {
        var eventArgs = new Sys.CancelEventArgs(); this.raiseHiding(eventArgs); if (eventArgs.get_cancel()) {
            return false;
        }
        this._hideImplementation(); this.raiseHidden(Sys.EventArgs.Empty); return true;
    },
    _hideImplementation: function() {
        this._backgroundElement.style.display = 'none'; this._foregroundElement.style.display = 'none'; this.restoreTab(); this._detachPopup();
    },
    _layout: function() {
        var scrollLeft = (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); var scrollTop = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); var clientBounds = $common.getClientBounds(); var clientWidth = clientBounds.width; var clientHeight = clientBounds.height; this._layoutBackgroundElement(); var xCoord = 0; var yCoord = 0; if (this._xCoordinate < 0) {
            var foregroundelementwidth = this._foregroundElement.offsetWidth ? this._foregroundElement.offsetWidth : this._foregroundElement.scrollWidth; xCoord = ((clientWidth - foregroundelementwidth) / 2); if (this._foregroundElement.style.position == 'absolute') {
                xCoord += scrollLeft;
            }
            this._foregroundElement.style.left = xCoord + 'px';
        } else {
            if (this._isIE6) {
                this._foregroundElement.style.left = (this._xCoordinate + scrollLeft) + 'px'; xCoord = this._xCoordinate + scrollLeft;
            }
            else {
                this._foregroundElement.style.left = this._xCoordinate + 'px'; xCoord = this._xCoordinate;
            }
        }
        if (this._yCoordinate < 0) {
            var foregroundelementheight = this._foregroundElement.offsetHeight ? this._foregroundElement.offsetHeight : this._foregroundElement.scrollHeight; yCoord = ((clientHeight - foregroundelementheight) / 2); if (this._foregroundElement.style.position == 'absolute') {
                yCoord += scrollTop;
            }
            this._foregroundElement.style.top = yCoord + 'px';
        } else {
            if (this._isIE6) {
                this._foregroundElement.style.top = (this._yCoordinate + scrollTop) + 'px'; yCoord = this._yCoordinate + scrollTop;
            }
            else {
                this._foregroundElement.style.top = this._yCoordinate + 'px'; yCoord = this._yCoordinate;
            }
        }
        this._layoutForegroundElement(xCoord, yCoord); if (this._dropShadowBehavior) {
            this._dropShadowBehavior.setShadow(); window.setTimeout(Function.createDelegate(this, this._fixupDropShadowBehavior), 0);
        }
        this._layoutBackgroundElement();
    },
    _layoutForegroundElement: function(xCoord, yCoord) {
        if (this._isIE6 && this._relativeOrAbsoluteParentElement) {
            var foregroundLocation = $common.getLocation(this._foregroundElement); var relativeParentLocation = $common.getLocation(this._relativeOrAbsoluteParentElement); var getLocationXCoord = foregroundLocation.x; if (getLocationXCoord != xCoord) {
                this._foregroundElement.style.left = (xCoord - relativeParentLocation.x) + 'px';
            }
            var getLocationYCoord = foregroundLocation.y; if (getLocationYCoord != yCoord) {
                this._foregroundElement.style.top = (yCoord - relativeParentLocation.y) + 'px';
            }
        }
    },
    _layoutBackgroundElement: function() {
        if (this._isIE6) {
            var backgroundLocation = $common.getLocation(this._backgroundElement); var backgroundXCoord = backgroundLocation.x; if (backgroundXCoord != 0) {
                this._backgroundElement.style.left = (-backgroundXCoord) + 'px';
            }
            var backgroundYCoord = backgroundLocation.y; if (backgroundYCoord != 0) {
                this._backgroundElement.style.top = (-backgroundYCoord) + 'px';
            }
        }
        var clientBounds = $common.getClientBounds(); var clientWidth = clientBounds.width; var clientHeight = clientBounds.height; this._backgroundElement.style.width = Math.max(Math.max(document.documentElement.scrollWidth, document.body.scrollWidth), clientWidth) + 'px'; this._backgroundElement.style.height = Math.max(Math.max(document.documentElement.scrollHeight, document.body.scrollHeight), clientHeight) + 'px';
    },
    _fixupDropShadowBehavior: function() {
        if (this._dropShadowBehavior) {
            this._dropShadowBehavior.setShadow();
        }
    },
    _partialUpdateEndRequest: function(sender, endRequestEventArgs) {
        FrieslandBank.Portal.Controls.ModalPopupBehavior.callBaseMethod(this, '_partialUpdateEndRequest', [sender, endRequestEventArgs]); if (this.get_element()) {
            var action = endRequestEventArgs.get_dataItems()[this.get_element().id]; if ("show" == action) {
                this.show();
            } else if ("hide" == action) {
                this.hide();
            }
        }
        this._layout();
    },
    _onPopulated: function(sender, eventArgs) {
        FrieslandBank.Portal.Controls.ModalPopupBehavior.callBaseMethod(this, '_onPopulated', [sender, eventArgs]); this._layout();
    },
    get_PopupControlID: function() {
        return this._PopupControlID;
    },
    set_PopupControlID: function(value) {
        if (this._PopupControlID != value) {
            this._PopupControlID = value; this.raisePropertyChanged('PopupControlID');
        }
    },
    get_X: function() {
        return this._xCoordinate;
    },
    set_X: function(value) {
        if (this._xCoordinate != value) {
            this._xCoordinate = value; this.raisePropertyChanged('X');
        }
    },
    get_Y: function() {
        return this._yCoordinate;
    },
    set_Y: function(value) {
        if (this._yCoordinate != value) {
            this._yCoordinate = value; this.raisePropertyChanged('Y');
        }
    },
    get_PopupDragHandleControlID: function() {
        return this._PopupDragHandleControlID;
    },
    set_PopupDragHandleControlID: function(value) {
        if (this._PopupDragHandleControlID != value) {
            this._PopupDragHandleControlID = value; this.raisePropertyChanged('PopupDragHandleControlID');
        }
    },
    get_BackgroundCssClass: function() {
        return this._BackgroundCssClass;
    },
    set_BackgroundCssClass: function(value) {
        if (this._BackgroundCssClass != value) {
            this._BackgroundCssClass = value; this.raisePropertyChanged('BackgroundCssClass');
        }
    },
    get_DropShadow: function() {
        return this._DropShadow;
    },
    set_DropShadow: function(value) {
        if (this._DropShadow != value) {
            this._DropShadow = value; this.raisePropertyChanged('DropShadow');
        }
    },
    get_Drag: function() {
        return this._Drag;
    },
    set_Drag: function(value) {
        if (this._Drag != value) {
            this._Drag = value; this.raisePropertyChanged('Drag');
        }
    },
    get_OkControlID: function() {
        return this._OkControlID;
    },
    set_OkControlID: function(value) {
        if (this._OkControlID != value) {
            this._OkControlID = value; this.raisePropertyChanged('OkControlID');
        }
    },
    get_CancelControlID: function() {
        return this._CancelControlID;
    },
    set_CancelControlID: function(value) {
        if (this._CancelControlID != value) {
            this._CancelControlID = value;
            this.raisePropertyChanged('CancelControlID');
        }
    },
    get_PostbackOnCancelEnabled: function() {
        return this._PostbackOnCancelEnabled;
    },
    set_PostbackOnCancelEnabled: function(value) {
        if (this._PostbackOnCancelEnabled != value) {
            this._PostbackOnCancelEnabled = value; 
            this.raisePropertyChanged('PostbackOnCancelEnabled');
        }
    },
    get_OnOkScript: function() {
        return this._OnOkScript;
    },
    set_OnOkScript: function(value) {
        if (this._OnOkScript != value) {
            this._OnOkScript = value; this.raisePropertyChanged('OnOkScript');
        }
    },
    get_OnCancelScript: function() {
        return this._OnCancelScript;
    },
    set_OnCancelScript: function(value) {
        if (this._OnCancelScript != value) {
            this._OnCancelScript = value; this.raisePropertyChanged('OnCancelScript');
        }
    },
    get_repositionMode: function() {
        return this._repositionMode;
    },
    set_repositionMode: function(value) {
        if (this._repositionMode !== value) {
            this._repositionMode = value; this.raisePropertyChanged('RepositionMode');
        }
    },
    add_showing: function(handler) {
        this.get_events().addHandler('showing', handler);
    },
    remove_showing: function(handler) {
        this.get_events().removeHandler('showing', handler);
    },
    raiseShowing: function(eventArgs) {
        var handler = this.get_events().getHandler('showing'); if (handler) {
            handler(this, eventArgs);
        }
    },
    add_shown: function(handler) {
        this.get_events().addHandler('shown', handler);
    },
    remove_shown: function(handler) {
        this.get_events().removeHandler('shown', handler);
    },
    raiseShown: function(eventArgs) {
        var handler = this.get_events().getHandler('shown'); if (handler) {
            handler(this, eventArgs);
        }
    },
    add_hiding: function(handler) {
        this.get_events().addHandler('hiding', handler);
    },
    remove_hiding: function(handler) {
        this.get_events().removeHandler('hiding', handler);
    },
    raiseHiding: function(eventArgs) {
        var handler = this.get_events().getHandler('hiding'); if (handler) {
            handler(this, eventArgs);
        }
    },
    add_hidden: function(handler) {
        this.get_events().addHandler('hidden', handler);
    },
    remove_hidden: function(handler) {
        this.get_events().removeHandler('hidden', handler);
    },
    raiseHidden: function(eventArgs) {
        var handler = this.get_events().getHandler('hidden'); if (handler) {
            handler(this, eventArgs);
        }
    }
}
FrieslandBank.Portal.Controls.ModalPopupBehavior.registerClass('FrieslandBank.Portal.Controls.ModalPopupBehavior', AjaxControlToolkit.DynamicPopulateBehaviorBase); FrieslandBank.Portal.Controls.ModalPopupBehavior.invokeViaServer = function(behaviorID, show) {
    var behavior = $find(behaviorID); if (behavior) {
        if (show) {
            behavior.show();
        } else {
            behavior.hide();
        }
    }
}

if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();