/* Minification failed. Returning unminified contents.
(435,15-16): run-time error JS1005: Expected '(': ;
(435,15-16): run-time error JS1008: Expected '{': ;
(443,18): run-time error JS1004: Expected ';'
(485,27-45): run-time error JS1010: Expected identifier: 'DOMContentLoaded'
(485,27-45): run-time error JS1326: Expected binding syntax: 'DOMContentLoaded'
(485,27-45): run-time error JS1193: Expected ',' or ')': 'DOMContentLoaded'
(485,27-45): run-time error JS1006: Expected ')': 'DOMContentLoaded'
(485,27-45): run-time error JS1008: Expected '{': 'DOMContentLoaded'
(485,45-46): run-time error JS1195: Expected expression: ,
(488,2): run-time error JS1004: Expected ';'
(488,2-3): run-time error JS1195: Expected expression: )
(485,1-27): run-time error JS1301: End of file encountered before function is properly closed: document.addEventListener(
(490,1): run-time error JS1107: Expecting more source characters
(490,1): run-time error JS1009: Expected '}'
(475,5-11): run-time error JS1300: Strict-mode does not allow assignment to undefined variables: render
(469,5-18): run-time error JS1300: Strict-mode does not allow assignment to undefined variables: _setDismissed
(463,5-18): run-time error JS1300: Strict-mode does not allow assignment to undefined variables: _createEvents
(454,5-12): run-time error JS1300: Strict-mode does not allow assignment to undefined variables: _remove
(441,5-15): run-time error JS1300: Strict-mode does not allow assignment to undefined variables: _bannerKey
(439,5-8): run-time error JS1300: Strict-mode does not allow assignment to undefined variables: _id
 */
var Site = Site || {};

Site.config = {
    subMenuItems: {
        empty: {
            id: "empty",
            name: "empty",
            logo: "empty"
        },

        blog: {
            id: "Blogs",
            name: "Blogs",
            logo: "blog",
            href: "Blogs"
        },

        overview: {
            id: "Overview",
            name: "Overview",
            href: "Overview",
            logo: "overview"
        },

        docs: {
            id: "Documentation",
            name: "Documentation",
            href: "Documentation/Overview",
            logo: "documentation",
            noActiveText: "Documentation Menu"
        },

        demos: {
            id: "Demos",
            logo: "demos",
            name: "Demos",
            menuText: "Filter:",
            menuClass: "new"
        },

        whatsNew: {
            id: "New",
            logo: "new",
            name: "What's New"
        },

        roadmap: {
            id: "Roadmap",
            logo: "roadmap",
            name: "Roadmap"
        },

        buy: {
            id: "Buy",
            logo: "buy",
            name: "Buy"
        },

        licensing: {
            id: "Licensing",
            name: "Licensing",
            logo: "licensing"
        },

        support: {
            id: "Support",
            name: "Support",
            logo: "support"
        },

        playground: {
            id: "Playground",
            logo: "playground",
            name: "Playground"
        }
    }
};
var Site = Site || {};
Site.Polls = function() {
    var self = this;
    var pageCountKey = "pagecount",
        timeKey = "pagecounttime",
        lastQuestionKey = "lastquestion",
        pageCountLimit = 15,
        timeLimit = 1000 * 60 * 60 * 6,
        lastQuestion = localStorage.getItem(lastQuestionKey) || "",
        question,
        poll,
        endAnswer,

        closeButtonSelector = "#poll .close",
        questionSelector = ".question",
        textAreaSelector = ".question textarea[name=answer]",
        inputsSelector = ".question input[name=answer]",
        checkedInputsSelector = ".question input[name=answer]:checked",
        answerButtonSelector = "#poll .button-group > .button";

    var select = function(selectorString) {
        return document.documentElement.querySelector(selectorString);
    };

    var selectAll = function(selectorString) {
        return document.documentElement.querySelectorAll(selectorString);
    };

    var each = function(context, handler) {
        Array.prototype.forEach.call(context, handler);
    };

    function showPoll() {
        poll.style.display = "block";
        setTimeout(function() {
            poll.classList.add("active");
        });
        
    }

    function ajax(url, params) {
        var queryParts = [];
        for(var param in params) {
            if(params.hasOwnProperty(param)) {
                queryParts.push(param + "=" + encodeURIComponent(params[param]));
            }
        }

        var queryString = "?" + queryParts.join("&");
        var xhr = new XMLHttpRequest();
        xhr.open("GET", url + queryString);
        xhr.send();
    }

    function questionComplete() {
        localStorage.removeItem(pageCountKey);
        localStorage.removeItem(timeKey);
        localStorage.setItem(lastQuestionKey, question);
        lastQuestion = question;

        var closeButton = select(closeButtonSelector);
        var newCloseButton = closeButton.cloneNode(true);

        closeButton.parentNode.replaceChild(newCloseButton, closeButton);
        newCloseButton.addEventListener("click", function() {
            poll.classList.remove("active");
        });
    }

    self.init = function() {
        var questionContainer = select(questionSelector);
        if(questionContainer === null) return;

        question = questionContainer.getAttribute("data-question-id");
        poll = document.getElementById("poll");
        endAnswer = select(textAreaSelector);

        select(closeButtonSelector).addEventListener("click", function() {
            ajax("/Poll/NoAnswer/", { question: question });
            questionComplete();
            poll.classList.remove("active");
        });

        if(endAnswer !== null) {
            each(selectAll(inputsSelector), function(input) {
                input.addEventListener("change", function(e) {
                    var readonly =
                        this.type == "radio" && this.value !== "__other" ||
                        this.type == "checkbox" && selectAll(checkedInputsSelector).length > 0;

                    if(readonly)
                        endAnswer.setAttribute("readonly", true);
                    else
                        endAnswer.removeAttribute("readonly");
                });
            });
        }

        select(answerButtonSelector).addEventListener("click", function() {
            var checkedAnswers = selectAll(checkedInputsSelector),
                otherAnswer = endAnswer && endAnswer.value;

            if(checkedAnswers.length === 0 || checkedAnswers[0].value === "__other") {
                if(otherAnswer.trim())
                    ajax("/Poll/CustomAnswer/", { question: question, answer: otherAnswer });
            } else {
                each(checkedAnswers, function(input) {
                    ajax("/Poll/AnswerVote/", { answer: input.value });
                });
            }

            poll.classList.add("thanks");
            questionComplete();
            setTimeout(function() {
                poll.classList.remove("active");
            }, 2000);
        });

        //IE8
        if(window.addEventListener) {
            window.addEventListener('storage', function(event) {
                if((event.key == lastQuestionKey)
                    && (event.newValue == question)) {
                    poll.hide(function() {
                        questionComplete();
                        poll.removeClass("active");
                    });
                }
            });
        }

        self.trackPageView();
    }

    self.trackPageView = function() {
        if(question && question != lastQuestion) {
            var pageCount = parseInt(localStorage.getItem(pageCountKey)) || 0,
                pageCountTime = new Date(localStorage.getItem(timeKey)),
                now = new Date();
            if(!isFinite(pageCountTime))
                pageCountTime = now;

            if(now - pageCountTime > timeLimit) {
                pageCount = 0;
                pageCountTime = now;
            }

            lastQuestion && localStorage.removeItem(lastQuestionKey);
            if(pageCount < pageCountLimit) {
                localStorage.setItem(pageCountKey, pageCount + 1);
                localStorage.setItem(timeKey, pageCountTime);
            } else {
                showPoll();
            }
        }
    }
};;
var Site = Site || {};

Site.Breadcrumbs = function () {
    this.recalculate = function() {

        var breadcrumbsContainer = $(".breadcrumbs"),
            timeoutId = null,
            DELAY = 400;

        $(".hint", breadcrumbsContainer).remove();
        $(".crumb.hidden", breadcrumbsContainer).removeClass("hidden");

        var breadcrumbsWrapper = $(".breadcrumbs-wrapper"),
            breadcrumbsDropDownWrapper = $(".breadcrumbs-dropdown"),
            hintItem = $("<li class='hint'><span>...</span></li>");

        var showBreadcrumbsDropDown = function() {
            hintItem.addClass("active");
            breadcrumbsDropDownWrapper.addClass("active");
        };

        var hideBreadcrumbsDropDown = function() {
            hintItem.removeClass("active");
            breadcrumbsDropDownWrapper.removeClass("active");
        };

        hintItem.hover(function() {
            clearTimeout(timeoutId);
            showBreadcrumbsDropDown();
        }, function() {
            clearTimeout(timeoutId);
            timeoutId = setTimeout(hideBreadcrumbsDropDown, DELAY);
        })

        breadcrumbsDropDownWrapper.hover(function() {
            clearTimeout(timeoutId);
            showBreadcrumbsDropDown();
        }, function() {
            clearTimeout(timeoutId);
            timeoutId = setTimeout(hideBreadcrumbsDropDown, DELAY);
        });

        var containerWidth = breadcrumbsContainer.width(),
            wrapperWidth = breadcrumbsWrapper.width(),
            deletedItemsWidth = 0;

        if(containerWidth < wrapperWidth) {
            $("li.crumb:first", breadcrumbsWrapper).after(hintItem);
            wrapperWidth = wrapperWidth + 40;//width of ellipsis

            var index = 1;

            while(containerWidth < wrapperWidth - deletedItemsWidth) {
                var deletedItem = $("li.crumb", breadcrumbsWrapper).eq(index++);
                deletedItemsWidth += deletedItem.width();
                deletedItem.addClass("hidden");
            }
        }

        $(".crumb").addClass("no-hide");

    };

    const breadcrumbsElement = document.getElementsByClassName('breadcrumbs')[0];
    if (breadcrumbsElement) {
        const resizeObserver = new ResizeObserver(this.recalculate);
        resizeObserver.observe(breadcrumbsElement);
    }
};
;
var Site = Site || {};

Site.LeftMenu = function() {

    var that = this,
        leftMenu,
        footerHeight = document.getElementsByClassName("footer")[0].scrollHeight;


    that.calculateBottomPosition = function() {
        window.requestAnimationFrame(function () {
            function updateScrollView() {
                var scrollViewContainer = leftMenu.querySelectorAll(".dx-scrollview");
                if (scrollViewContainer.length === 0) {
                    return;
                }

                var scrollView = DevExpress.ui.dxScrollView.getInstance(scrollViewContainer[0]);
                scrollView.update();
            }

            if (!leftMenu) {
                return;
            }

            var padding;
            if (window.getComputedStyle(leftMenu).position !== "fixed") {
                padding = footerHeight;
            } else {
                padding = footerHeight + window.pageYOffset + window.innerHeight - document.documentElement.scrollHeight;
            }

            if(padding > 0) {
                leftMenu.style.paddingBottom = padding + "px";
                updateScrollView();
            } else if(window.getComputedStyle(leftMenu).paddingBottom !== "0px") {
                leftMenu.style.paddingBottom = "";
                updateScrollView();
            }
        });
    };

    that.init = function() {
        var leftMenuCollection = document.getElementsByClassName("left-menu");
        if(leftMenuCollection.length) {
            leftMenu = leftMenuCollection[0];
            window.onscroll = that.calculateBottomPosition;
            that.calculateBottomPosition();
        }
    };
};

document.addEventListener("DOMContentLoaded", function() {
    Site.layoutLeftMenu = new Site.LeftMenu();
    Site.layoutLeftMenu.init();
});
;
var Site = Site || {};
Site.CookiesDAL = function() {
    var self = this;
    self.get = function (name) {
        var cookieName = name + "=",
            cookieLength = document.cookie.length,
            cookieBegin = 0,
            valueBegin;

        while (cookieBegin < cookieLength) {
            valueBegin = cookieBegin + cookieName.length;

            if (document.cookie.substring(cookieBegin, valueBegin) === cookieName) {
                var valueEnd = document.cookie.indexOf(";", valueBegin);
                if (valueEnd == -1) {
                    valueEnd = cookieLength;
                }
                return unescape(document.cookie.substring(valueBegin, valueEnd));
            }

            cookieBegin = document.cookie.indexOf(" ", cookieBegin) + 1;
            if (cookieBegin == 0) {
                break;
            }
        }
        return null;
    };

    self.set = function (name, value, expires) {
        var cookieValue = name + "=" + escape(value) + ";SameSite=Lax;";
        if (expires) {
            cookieValue += "expires=" + expires.toGMTString() + ";";
        } else {
            var currentDate = new Date(),
                cookiesFinishDate = new Date(currentDate.getFullYear(), currentDate.getMonth() + 6, currentDate.getDate());
            cookieValue += "expires=" + cookiesFinishDate.toGMTString() + ";";
        }
        cookieValue += "path=/";

        this.delete(name);
        document.cookie = cookieValue;
    };

    self.setSession = function(name, value) {
        var cookieValue = name + "=" + escape(value) + ";";
        cookieValue += "path=/";

        this.delete(name);
        document.cookie = cookieValue;
    };

    self.delete = function (name) {
        document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
    };
};

Site.cookiesDAL = new Site.CookiesDAL();;

Site.polls = new Site.Polls();

Site.initializeDocs = function(responseStatus) {
    Site.initializeDoc && Site.initializeDoc();
    Site.leftArticleMenu = Site.leftArticleMenu || new Site.LeftArticleMenu();
    Site.leftArticleMenu.init();
}


Site.initialize = function(responseStatus) {
    Site.polls.init();
    Site.responseStatus = responseStatus;
}
;
class SurveyBanner {
    _component;

    _isHidden;

    _id = 'survey-banner';

    _bannerKey = 'devextreme-survey-23.2';

    constructor() {
        this._component = document.getElementById(this._id);
        this._isHidden = window.localStorage.getItem(this._bannerKey) === 'true';
        if (!this._component) {
            this._isHidden = true;
            return;
        }

        this._createEvents();
    }

    _remove = () => {
        if (!this._component) {
            return;
        }

        this._component.remove();
        this._component = null;
    }

    _createEvents = () => {
        this._component.querySelectorAll('.survey--button-close, a').forEach(node => {
            node.addEventListener('click', this._setDismissed);
        });
    }

    _setDismissed = () => {
        window.localStorage.setItem(this._bannerKey, 'true');

        this._remove();
    }

    render = () => {
        if (this._isHidden) {
            this._remove();
        } else {
            this._component.classList.remove('survey-hidden');
            this._component.classList.add('survey--indent');
        }
    }
}

document.addEventListener('DOMContentLoaded', () => {
    const banner = new SurveyBanner();
    banner.render();
});
;
