HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/TDijk1/erp-apps.eu/wwwroot/CMSModules/Content/Controls/SplitView/SplitView.js
// Frames variables
var FSP_f1S = null;
var FSP_f1Url = null;
var FSP_f1vS = null;
var FSP_f2S = null;
var FSP_f2Url = null;
var FSP_bUrl = null;
var FSP_sUrl = null;
var FSP_fsS = null;
var FSP_mFramesetS = null;
var FSP_vFramesetS = null;
var FSP_tHeight = 0;
var FSP_synchronize = 0;
var FSP_displaySplitMode = 0;
var FSP_ModeEnum =
{
    // Vertical split view
    Vertical: { value: 0, name: "Vertical" },
    // Horizontal split view
    Horizontal: { value: 1, name: "Horizontal" }
};
var FSP_mode = FSP_ModeEnum.Vertical.value;

// Toolbar variables
var FSP_syncId = null;
var FSP_selectId = null;
var FSP_culture = null;
var FSP_divHorizontalId = null;
var FSP_divVerticalId = null;

// Binding variables for scrolling
var FSP_frameF1 = null;
var FSP_frameF2 = null;
var FSP_scrollHandler1 = null;
var FSP_scrollHandler2 = null;
var FSP_bindElement1 = null;
var FSP_bindElement2 = null;
var FSP_bindEventOnBody = false;
var FSP_lastScrollTopF1 = 0;
var FSP_lastScrollTopF2 = 0;
var FSP_lastScrollLeftF1 = 0;
var FSP_lastScrollLeftF2 = 0;
var FSP_scrollableDiv = null;
var FSP_scrollBound = false;

// Initializes frame elements and binds 'scroll' events.
function InitSyncScroll(frameElement, body, refreshSameCulture, unbind) {
    if (frameElement != null) {
        FSP_bindEventOnBody = body;

        // URL prefix of 'frame2'
        var urlPrefix = FSP_cntPref.substring(0, FSP_cntPref.indexOf('##c##'));
        var url = frameElement.contentWindow.location.href;
        // Indicates if frameElement is 'frame2'
        var isFrame2 = (url.toLowerCase().search(urlPrefix.toLowerCase()) >= 0);

        // Set frame1
        if ((FSP_frameF1 == null) && !isFrame2) {
            FSP_frameF1 = frameElement;
        }
            // Set frame2
        else if ((FSP_frameF2 == null) && isFrame2) {
            FSP_frameF2 = frameElement;
        }
        
        // Bind 'scroll' events
        if ((FSP_frameF1 != null) && (FSP_frameF2 != null)) {
            var frameName = null;
            if (refreshSameCulture) {
                if (!isFrame2) {
                    frameName = 'frame2';
                }
                else {
                    if (FSP_mode == FSP_ModeEnum.Horizontal.value) {
                        frameName = 'frame1';
                    } else if (FSP_mode == FSP_ModeEnum.Vertical.value) {
                        frameName = 'frame1Vertical';
                    }
                }
            }

            if (refreshSameCulture) {
                FSP_RefreshSameCulture(frameName, unbind);
            }
            else {
                FSP_BindScrollElements();
            }
        }
    }
}

// Binds 'scroll' event on elements.
function FSP_BindScrollElements() {

    FSP_ClearLastValues();

    // Browser version
    var browserVersion = $cmsj.browser.version;
    // Indicates if browser is Internet explorer
    var isIE = $cmsj.browser.msie;
    // Indicates if browser is Internet explorer version 8
    var isIE8 = (browserVersion >= 8.0) && (browserVersion < 9.0);

    if (FSP_scrollableDiv != null) {
        if (FSP_bindElement1 == null) {
            FSP_bindElement1 = $cmsj(FSP_frameF1.contentWindow.document.getElementById(FSP_scrollableDiv));
        }
        if (FSP_bindElement2 == null) {
            FSP_bindElement2 = $cmsj(FSP_frameF2.contentWindow.document.getElementById(FSP_scrollableDiv));
        }
    }

    // Internet explorer
    if (isIE && !isIE8 && FSP_bindEventOnBody) {
        if (FSP_bindElement1 == null) {
            FSP_bindElement1 = $cmsj($cmsj(FSP_frameF1).get(0).contentWindow.document.body);
        }
        if (FSP_bindElement2 == null) {
            FSP_bindElement2 = $cmsj($cmsj(FSP_frameF2).get(0).contentWindow.document.body);
        }
    }
        // Others browsers
    else {
        // Get content window of frame1 and frame2
        if (FSP_bindElement1 == null) {
            FSP_bindElement1 = $cmsj($cmsj(FSP_frameF1).get(0).contentWindow);
        }
        if (FSP_bindElement2 == null) {
            FSP_bindElement2 = $cmsj($cmsj(FSP_frameF2).get(0).contentWindow);
        }
    }

    if ($cmsj.browser.mozilla && parseInt($cmsj.browser.version) > 13) {
        // Fix Firefox smooth scrolling
        if (FSP_bindElement1 != null) {
            FSP_bindElement1.mouseenter(function() {
                FSP_BindSyncFrame2();
            });

            FSP_bindElement1.one('scroll', function() {
                if (!FSP_scrollBound) {
                    FSP_scrollBound = true;
                    FSP_BindSyncFrame2();
                }
            });
        }
        
        if (FSP_bindElement2 != null) {
            FSP_bindElement2.mouseenter(function () {
                FSP_BindSyncFrame1();
            });

            FSP_bindElement2.one('scroll', function () {
                if (!FSP_scrollBound) {
                    FSP_scrollBound = true;
                    FSP_BindSyncFrame1();
                }
            });
        }
    }
    else {
        // Bind 'scroll' events
        if (FSP_bindElement1 != null) {
            FSP_bindElement1.scroll(function() {
                FSP_SyncFrame2();
            });
        }

        if (FSP_bindElement2 != null) {
            FSP_bindElement2.scroll(function() {
                FSP_SyncFrame1();
            });
        }
    }
}

function FSP_BindSyncFrame2() {
    if (FSP_scrollHandler2 != null && FSP_bindElement2 != null) {
        FSP_bindElement2.off('scroll', FSP_scrollHandler2);
        FSP_scrollHandler2 = null;
    }

    FSP_scrollHandler1 = FSP_SyncFrame2;

    if (FSP_bindElement1 != null) {
        FSP_bindElement1.on('scroll', FSP_scrollHandler1);
    }
}

function FSP_BindSyncFrame1() {
    if (FSP_scrollHandler1 != null && FSP_bindElement1 != null) {
        FSP_bindElement1.off('scroll', FSP_scrollHandler1);
        FSP_scrollHandler1 = null;
    }
    
    FSP_scrollHandler2 = FSP_SyncFrame1;

    if (FSP_bindElement2 != null) {
        FSP_bindElement2.on('scroll', FSP_scrollHandler2);
    }
}

function FSP_SyncFrame2() {
    try {
        if (FSP_IsSyncEnabled() && FSP_bindElement1 != null && FSP_bindElement2 != null) {
            var scrollTopF1 = FSP_bindElement1.scrollTop();
            var scrollLeftF1 = FSP_bindElement1.scrollLeft();

            if (FSP_lastScrollTopF2 != scrollTopF1) {
                FSP_lastScrollTopF2 = scrollTopF1;
                FSP_bindElement2.scrollTop(scrollTopF1);
            }

            if (FSP_lastScrollLeftF2 != scrollLeftF1) {
                FSP_lastScrollLeftF2 = scrollLeftF1;
                FSP_bindElement2.scrollLeft(scrollLeftF1);
            }
        }
    }
    catch (ex) {
    }
}


function FSP_SyncFrame1() {
    try {
        if (FSP_IsSyncEnabled() && FSP_bindElement1 != null && FSP_bindElement2 != null) {
            var scrollTopF2 = FSP_bindElement2.scrollTop();
            var scrollLeftF2 = FSP_bindElement2.scrollLeft();

            if (FSP_lastScrollTopF1 != scrollTopF2) {
                FSP_lastScrollTopF1 = scrollTopF2;
                FSP_bindElement1.scrollTop(scrollTopF2);
            }

            if (FSP_lastScrollLeftF1 != scrollLeftF2) {
                FSP_lastScrollLeftF1 = scrollLeftF2;
                FSP_bindElement1.scrollLeft(scrollLeftF2);
            }
        }
    }
    catch (ex) {
    }
}


// Clears last values for scrolling.
function FSP_ClearLastValues() {
    FSP_lastScrollTopF1 = 0;
    FSP_lastScrollTopF2 = 0;
    FSP_lastScrollLeftF1 = 0;
    FSP_lastScrollLeftF2 = 0;
}


// Indicates if synchronization is enabled.
function FSP_IsSyncEnabled() {
    var synchronizeScrollbar = FSP_synchronize;
    try {
        // Get value 'Synchronization' from cookie
        var cookieValue = FSP_GetValueFromCookie(3);
        synchronizeScrollbar = (cookieValue.toLowerCase() == "1");
    }
    catch (ex) {
    }

    return synchronizeScrollbar;
}


// Refresh the second frame in the same culture.
function FSP_RefreshSameCulture(frameName, unbind) {
    if (frames[frameName] != null) {
        if ((frameName == 'frame1') || (frameName == 'frame1Vertical')) {
            FSP_frameF1 = null;
            FSP_bindElement1 = null;
            if (unbind) {
                FSP_frameF2 = null;
                FSP_bindElement2 = null;
            }
        }
        else if (frameName == 'frame2') {
            FSP_frameF2 = null;
            FSP_bindElement2 = null;
            if (unbind) {
                FSP_frameF1 = null;
                FSP_bindElement1 = null;
            }
        }

        // URL of second frame
        var url = frames[frameName].location.href;
        // Remove refresh and saved query parameters
        url = url.replace("?refresh=1", "?").replace("&refresh=1", "").replace("?saved=1", "?").replace("&saved=1", "");
        // Refresh the second frame
        frames[frameName].location.replace(url);
    }
}


// Initialize global variables.
function FSP_Init(frm1Url, frm2Url, emptyUrl, sepUrl, mainFrmId, frm1Id, frm1VId, frm2Id, vFrmId, frmSId, tHeight, mode, synchronize, displaySplitMode) {
    // Init selectors
    FSP_f1S = '#' + frm1Id;
    FSP_f1vS = '#' + frm1VId;
    FSP_f2S = '#' + frm2Id;
    FSP_fsS = '#' + frmSId;
    FSP_mFramesetS = '#' + mainFrmId;
    FSP_vFramesetS = '#' + vFrmId;

    FSP_f1Url = frm1Url;
    FSP_f2Url = frm2Url;
    FSP_bUrl = emptyUrl;
    FSP_sUrl = sepUrl;

    FSP_tHeight = tHeight;
    FSP_synchronize = synchronize;
    FSP_displaySplitMode = displaySplitMode;
    FSP_SetMode(mode);
}


// Show horizontal layout.
function FSP_HorizontalLayout() {
    if (FSP_mode != FSP_ModeEnum.Horizontal.value) {
        var $f1 = $cmsj(FSP_f1S);
        var $fv1 = $cmsj(FSP_f1vS);
        var $fstm = $cmsj(FSP_mFramesetS);
        var $fstv = $cmsj(FSP_vFramesetS);
        var $fsts = $cmsj(FSP_fsS);

        // Set icon 'layout' class
        FSP_SetLayoutClass(false);

        FSP_UnbindSrolling();
        FSP_frameF1 = null;
        FSP_bindElement1 = null;

        $f1.attr('src', FSP_f1Url);
        $fv1.attr('src', FSP_bUrl);
        $fsts.attr('src', FSP_bUrl);
        // Add additional border size
        $fstm.attr('rows', '*,' + FSP_tHeight + ',*');

        if (isRTL) {
            $fstv.attr('cols', '100%,0%,0%');
        }
        else {
            $fstv.attr('cols', '0%,0%,100%');
        }

        // Set split mode
        FSP_SetMode(FSP_ModeEnum.Horizontal.value);

        // Set cookie
        FSP_SetCookie();
    }
}


// Show vertical layout.
function FSP_VerticalLayout() {
    if (FSP_mode != FSP_ModeEnum.Vertical.value) {
        var $f1 = $cmsj(FSP_f1S);
        var $fv1 = $cmsj(FSP_f1vS);
        var $fstm = $cmsj(FSP_mFramesetS);
        var $fstv = $cmsj(FSP_vFramesetS);
        var $fsts = $cmsj(FSP_fsS);

        // Set icon 'layout' class
        FSP_SetLayoutClass(true);

        FSP_UnbindSrolling();
        FSP_frameF1 = null;
        FSP_bindElement1 = null;

        $fv1.attr('src', FSP_f1Url);
        $f1.attr('src', FSP_bUrl);
        $fsts.attr('src', FSP_sUrl);

        $fstm.attr('rows', '0,' + FSP_tHeight + ',*');
        $fstv.attr('cols', '*,8,*');

        // Set split mode
        FSP_SetMode(FSP_ModeEnum.Vertical.value);

        // Set cookie
        FSP_SetCookie();
    }
}


// Set class for icon 'layout' (horizontal, vertical).
function FSP_SetLayoutClass(vertical) {
    // Get toolbar frame
    var frameToolbar = frames['toolbarframe'];
    if (frameToolbar != null) {
        // Set class
        var btnH = $cmsj('.js-split-horizontal', frameToolbar.document).parent();
        var btnV = $cmsj('.js-split-vertical', frameToolbar.document).parent();
        if ((btnH != null) && (btnV != null)) {
            if (vertical) {
                btnH.removeClass('active');
                btnV.addClass('active');
            }
            else {
                btnV.removeClass('active');
                btnH.addClass('active');
            }
        }
    }
}


// Unbind 'scroll' events.
function FSP_UnbindSrolling() {
    try {
        if (FSP_bindElement1 != null) {
            $cmsj(FSP_bindElement1).unbind('scroll');
        }

        if (FSP_bindElement2 != null) {
            $cmsj(FSP_bindElement2).unbind('scroll');
        }
    }
    catch (ex) {
    }
}


// Synchronizes scrollbars
function FSP_SynchronizeToolbar() {
    if (FSP_synchronize == 1) {
        FSP_synchronize = 0;
    }
    else {
        FSP_synchronize = 1;
    }

    // Get toolbar frame
    var frameToolbar = frames['toolbarframe'];
    if (frameToolbar != null) {
        // Set image src
        var imageSync = $cmsj('#' + FSP_syncId, frameToolbar.document);
        if (imageSync != null) {
            imageSync.prop('checked', FSP_synchronize);
        }
    }

    // Synchronize scroolbars
    if ((FSP_bindElement1 != null) && (FSP_bindElement2 != null)) {
        FSP_bindElement2.scrollTop(FSP_bindElement1.scrollTop());
        FSP_bindElement2.scrollLeft(FSP_bindElement1.scrollLeft());
    }

    FSP_SetCookie();
}


// Sets split mode.
function FSP_SetMode(mode) {
    FSP_mode = Number(mode);
}


// Initializes variables for toolbar.
function FSP_ToolbarInit(selectorId, syncId) {
    FSP_selectId = selectorId;
    FSP_syncId = syncId;
}


// Change culture when window loaded.
function FSP_ChangeCultureTimeout(control) {
    var f1;

    if (FSP_mode == FSP_ModeEnum.Horizontal.value) {
        f1 = window.frames['frame1'];
    }
    if (FSP_mode == FSP_ModeEnum.Vertical.value) {
        f1 = window.frames['frame1Vertical'];
    }

    if (f1.location.toString().toLowerCase().indexOf("about:blank") == -1) {
        if (f1 != null) {

            if (control != null) {
                FSP_culture = control.value;
            }
            else {
                FSP_SetCulture(true);
            }

            var urlF1 = f1.location.pathname + f1.location.search;
            PerformSplitViewRedirect(urlF1, FSP_culture, SetSplitViewFrameUrlCallback);
        }
    } else {
        setTimeout(function () {
            FSP_ChangeCultureTimeout(control);
        }, 250);
    }
}


// Change culture
function FSP_ChangeCulture(control) {
    setTimeout(function () {
        FSP_ChangeCultureTimeout(control);
    }, 250);
}


function SetSplitViewFrameUrl(data) {
    if (data != null && data !== '') {
        // Get frame2 window
        var f2 = window.frames['frame2'];
        // Reload frame
        var urls = data.split('##SEP##');
        FSP_RefreshFrame(f2.name, urls[0]);
    }
}


function PerformSplitViewRedirect(originalUrl, newCulture, successCallback, errorCallback) {
    // Get mode from query string
    var results = new RegExp('[\\?&]mode=([^&#]*)').exec(window.location.href);
    var mode = (results != null) ? results[1] : '';

    parent.PerformSplitViewRedirect(originalUrl, newCulture, successCallback, errorCallback, mode);
}


function SetSplitViewFrameUrlCallback(data, textStatus, jqXHR) {
    SetSplitViewFrameUrl(data);
}


// Refreshes frame.
function FSP_RefreshFrame(frameName, newUrl) {
    FSP_UnbindSrolling();
    FSP_frameF2 = null;
    FSP_bindElement2 = null;

    if (frames[frameName] != null) {
        frames[frameName].location.replace(newUrl);
    }
}


function FSP_SplitModeRefreshFrame() {
    FSP_ChangeCulture(null);
}


// Set culture to variable 'FSP_culture'.
function FSP_SetCulture(changeText) {
    var frameToolbar = frames['toolbarframe'];
    if (frameToolbar != null) {
        var selector = frameToolbar.document.getElementById(FSP_selectId);
        if (selector != null) {
            FSP_culture = selector.value;
            if (changeText) {
                try {
                    var $sel = $cmsj(selector);
                    // Get culture name with suffix
                    var text = $sel.find('option').filter(':selected').text();
                    // Remove suffix
                    text = text.replace(/\([^(]*\)$/, '');
                    // Set only culture name
                    $sel.find('option').filter(':selected').text(text);
                } catch (ex) {
                }
            }
        }
        else {
            return;
        }
    }
}


// Set values to cookies.
function FSP_SetCookie() {
    FSP_SetCulture(false);

    var layoutMode = FSP_ModeEnum.None;

    switch (FSP_mode) {
        case FSP_ModeEnum.Horizontal.value:
            layoutMode = FSP_ModeEnum.Horizontal.name;
            break;

        case FSP_ModeEnum.Vertical.value:
            layoutMode = FSP_ModeEnum.Vertical.name;
            break;
    }

    // New cookie value
    var newCookieValue = FSP_displaySplitMode + "|" + FSP_culture + "|" + layoutMode + "|" + FSP_synchronize;
    // Set new values to cookies
    $cmsj.cookie("CMSSplitMode", newCookieValue.toString(), { expires: 365, path: '/' });
}


// Gets value from cookie.
function FSP_GetValueFromCookie(index) {
    var cookieValue = $cmsj.cookie('CMSSplitMode');
    var values = cookieValue.split('|');
    return values[index];
}


// Close split mode.
function FSP_CloseSplitMode() {
    // Save cookie
    FSP_SetCookie();

    // Close split mode
    parent.CloseSplitMode();
}


// Check changes.
function CheckChanges(frameName) {
    var toReturn = true;
    if (frameName == null) {
        if (window.frames['frame1'].CheckChanges) {
            toReturn = window.frames['frame1'].CheckChanges();
        }
        if (window.frames['frame1Vertical'].CheckChanges) {
            toReturn = window.frames['frame1Vertical'].CheckChanges();
        }
        if (window.frames['frame2'].CheckChanges) {
            toReturn &= window.frames['frame2'].CheckChanges();
        }
    }
    else {
        if ((window.frames[frameName] != null) && window.frames[frameName].CheckChanges) {
            toReturn = window.frames[frameName].CheckChanges();
        }
    }

    return toReturn;
}

// If synchronized scrollbars are not attached to frames but to divs, set divs IDs.
function InitScrollDivs(id) {
    FSP_scrollableDiv = id;
}