var notificationHub;
var trySignal = 0;
var openedMenuId = "";
var profileIsOpen = false;
var cpExportData = null;
var cpDataColumn = "";
var maxWidthTab = 166;
var maxWidthTabLabel = 100;
var timer;
var DEFULTGRID = "پیش فرض";
var oldLast_request = '';
var countAlarm = 0;
var counterSession = 0;
var sizeSideBar = 'calc((100vw / 4 - 2px) * -1)';
var helpFormAddress;
var formIdModal = '';
var redirectToLogin = true;
var isAdmin = $("#hfIsAdmin").val();
var isCloud = $("#hfIsCloud").val();
var isDemo = $("#hfIsDemo").val();
var androidModule = $("#hfAndroidModule").val();
var language = $("#hfLanguage").val();
var userCode = $("#hfUserCode").val();
var demoType = {
    acc: 0,
    com: 1,
    shop: 2
};
var posType = {
    mellat: 3,
    iranKish : 4
}
var systemName = {
    accounting: "THS_SanadWeb",
    saleStore: "TAn_SanadWeb"
};
$(document).ready(function () {
    initial();
    $("#divAlarmContainer").on("click", "[data-alarm='ticket']", function () {
        var code = $(this).find(".img-flag").attr("data-code");
        DeactiveAlarm(code);
    });
    $("#cloudAndroidView").on("hidden.bs.modal", function () {
        if ($("#cloudAndroidView input[type='checkbox']").prop("checked"))
            setCookie("acceptAndroidView", "1");
    });

    if (getCookie("acceptVersionView") !== $("#hfVersion").val() && $(".item-update").length > 0) {
        $("#versionView").modal();
    }

    $("#versionView").on("hidden.bs.modal", function () {
        setCookie("acceptVersionView", $("#hfVersion").val());
    });

    $("#cloudAndroidView button.button-accept").on("click", function () {
        var link = document.createElement("a");
        link.setAttribute("href", "https://play.google.com/store/apps/details?id=com.gheyas.account");
        link.setAttribute("target", "_blank");
        link.click();
    });

    getPollAccess();

    //-------------
    window.onbeforeunload = function () {
        exitWebApplication(false);
        $.connection.hub.stop();
    };
    $(document).click(function () {
        closeLeftSideMenu();
        //hideSidebar();
    });
    $('.div-expand').click(function (e) {
        if ($(this).parent().find('ul').css('display') == 'none') {
            $(this).parent().find('ul').css('display', 'block');
            $(this).find('.ico-expand').css('transform', 'rotate(180deg)');
            $(this).parent().find('li').css('background-color', '#f4f4f4');
            $(this).parent().find('.div-submenu').css('border-left', '4px solid #f4f4f4');
        }
        else {
            $(this).parent().find('ul').css('display', 'none');
            $(this).find('.ico-expand').css('transform', 'unset');
            $(this).parent().find('li').css('background-color', 'unset');
        }
    });
    $('.menu-div').click(function (e) {
        e.stopImmediatePropagation();
    });
    $('.menu-div .desc').click(function (e) {
        e.stopImmediatePropagation();
    });
    $('#imgPerson').click(function (e) {
        if (profileIsOpen == true) {
            if (document.getElementById('stP'))
                document.head.removeChild(document.getElementById('stP'));
            $('#UserProfile').addClass('effectOut');
            $('#UserProfile').removeClass('effectIn');
            profileIsOpen = false;
        }
        else {
            $('.navbar-menu > li .menu-div:after').css('display', 'none');
            var w = $('.lbl-user-profile').width();
            w = (300 - w) / 2;
            $('.lbl-user-profile').css('right', w);

            w = $('.lbl-user-profile-code').width();
            w = (300 - w) / 2;
            $('.lbl-user-profile-code').css('right', w);
            $('.menu-div .desc').addClass('effectOutMenu');
            $('.menu-div .desc').removeClass('effectInMenu');
            openedMenuId = "";
            if (document.getElementById('st'))
                document.head.removeChild(document.getElementById('st'));
            $('#UserProfile').removeClass('effectOut');
            $('#UserProfile').addClass('effectIn');
            setTimeout(function () {
                if (document.getElementById('stP'))
                    document.head.removeChild(document.getElementById('stP'));
                var st = document.createElement("style");
                st.setAttribute('id', 'stP');
                var styleElem = document.head.appendChild(st);
                styleElem.innerHTML = "#UserProfile:before {z-index:1000;}";
            }, 600);
            profileIsOpen = true;
        }
        e.stopImmediatePropagation();
    });
    $('#ProfileClose').click(function (e) {
        if (profileIsOpen == true) {
            if (document.getElementById('stP'))
                document.head.removeChild(document.getElementById('stP'));
            $('#UserProfile').addClass('effectOut');
            $('#UserProfile').removeClass('effectIn');
            profileIsOpen = false;
        }
        e.stopImmediatePropagation();
    });
    $.each($('img.svg'), function () {
        var $img = jQuery(this);
        var imgID = $img.attr('id');
        var imgClass = $img.attr('class');
        var imgURL = $img.attr('src');
        var imgClick = $img.attr('onclick');
        var imgStyle = $img.attr('style');
        jQuery.get(imgURL, function (data) {
            // Get the SVG tag, ignore the rest
            var $svg = jQuery(data).find('svg');

            // Add replaced image's ID to the new SVG
            if (typeof imgID !== 'undefined') {
                $svg = $svg.attr('id', imgID);
            }
            // Add replaced image's classes to the new SVG
            if (typeof imgClass !== 'undefined') {
                $svg = $svg.attr('class', imgClass + ' replaced-svg');
            }

            $svg = $svg.removeAttr('xmlns:a');

            if (typeof imgClick !== 'undefined') {
                $svg = $svg.attr('onclick', imgClick);
            }
            if (typeof imgStyle !== 'undefined') {
                $svg = $svg.attr('style', imgStyle);
            }
            // Replace image with new SVG
            $img.replaceWith($svg);

        }, 'xml');

    });
    $('.level2-menu').hover(
        function () {
            var svg = $(this).find('svg');
            $(this).find('span').css('color', '#037c91');
        },
        function () {
            var svg = $(this).find('svg');
            $(this).find('span').css('color', '#666666');
        }
    );
    clickTabs();
    $('#divContact').empty();
    updateRecentlyForms();

    if (getCookie('last_request') !== '') {
        oldLast_request = getCookie('last_request');
        checkSessionTimeout();
    }
    if ($('#hidShowListChangesBackUp').val().toLowerCase() === "true")
        openInModal('', 'Setting/BackUpChanges?state=1', window.top.databaseChanges, '680');
    countAlarm = $('#lblNotify').text() === '' ? 0 : parseFloat($('#lblNotify').text());
    $('#div-LastForm,#div-Alarms').click(function (e) {
        e.stopPropagation();
    });
    if (getCookie('help') === '') {
        var tour = introJs();
        tour.setOption('tooltipPosition', 'auto');
        tour.setOption('positionPrecedence', ['left', 'right', 'bottom', 'top']);
        tour.setOption('nextLabel', window.top.next);
        tour.setOption('prevLabel', window.top.Before);
        tour.setOption('skipLabel', window.top.exit);
        tour.setOption('doneLabel', window.top.endd);
        tour.setOption('exitOnOverlayClick', false);
        tour.start();
        //tour.oncomplete(function() {
        //    setTimeout(function() {
        //        $('.introjs-showElement,.introjs-showElement [onclick]').attr('onclick', '');
        //    },
        //        100);
        //});
        //tour.onchange(function() {
        //    setTimeout(function() {
        //        $('.introjs-showElement,.introjs-showElement [onclick]').attr('onclick', '');
        //    },
        //        100);
        //});
        setCookie('help', '1');
        //setTimeout(function() {$('.introjs-showElement,.introjs-showElement [onclick]').attr('onclick', '');},100);
    }

    document.onkeydown = function (event) {
        event = event || window.event;
        if (event.keyCode === 112) //f1 
        {
            event.preventDefault();
            showHelpForm();
        }
    };

    //registerChat();
});
function initial() {
    if (window.WebSocket) {
        notificationHub = new window.signalR.HubConnectionBuilder().withUrl(`${window.top.baseUrl}notificationHub?token=${window.top.$("#hfSid").val()}`).build();
        notificationHub.start().then(function () {
            trySignal = 0;
        }).catch(function () { });
        notificationHub.onclose(function () { if (trySignal > 5) return; trySignal++; });
        registerHubClientMethods();
    }
    if (isAdmin === "0")
        $("#divBanner").show();
    else if (isAdmin === "1") {
        $("#divReport4").show();
        $("#divReport1").show();
        getDashBoardData();
    }
    if (language === "fa")
        $("#divShowHelpForm").show();

    $("#divNoElan").attr("data-intro", " <img src='" + baseUrl + "img/info.svg' style='width: 20px;margin-left: 6px;'><span style='margin-bottom: 8px;display:inline-block'><b >" + window.top.bulletin + "</b></span><br>" + window.top.publicAnnouncements);
    getBulletinList(true, null, null, -1);
    getBannerList();
    getUserImage(userCode);
    getAlarmList(userCode);

    if (isCloud === "1" || isDemo === "1")
        //$("#divPorsLine").show();
        $("#divSurvey").show();

    var serverIndex = Number($("#hfServerIndex").val());
    if (serverIndex === demoType.acc)
        $("#hfDemoType").val("acc");
    else if (serverIndex === demoType.com)
        $("#hfDemoType").val("com");
    else if (serverIndex === demoType.shop)
        $("#hfDemoType").val("shop");

    checkAccess(androidModule);
    closeLoading();

    if (isAdmin === "1")
        getChart();

    if ($("#hfWebUser").val() === "")
        getPortalLink();

    updatePoll();
}
function getBulletinList(onlyIsActive, filter, sort, pageNo) {
    ajax({
        url: "GeneralApi/GetBulletinList",
        data: {
            onlyIsActive: onlyIsActive,
            filter: filter,
            sort: sort,
            pageNo: pageNo
        },
        success: function (result) {
            if (result.length > 0) {
                result.forEach(function (item) {
                    var code = item.Code ? item.Code : "";
                    var body = item.Body && item.Body.length > 40 ? item.Body.substring(0, 37) + "..." : "";
                    var $div = $(".template-bulletin-group").clone();
                    $div.removeClass("template-bulletin-group").removeAttr("hidden");
                    $div.addClass("col-xs-12 rptElanMain");
                    $div.find("[id='lblName']").text(item.Name);
                    $div.find("[id='lblRegDate']").text(item.RegDate);
                    $div.find("[id='lblBody']").text(body);
                    $div.find("[id='lblCode']").attr("onclick", "showElanDetails(" + code + ",false)").css("display", code === "0" ? "none" : "inline");
                    if (!item.AttCodes)
                        $div.find("[id='imgAttachment']").hide();
                    $("#divBulletinContainer").append($div);
                });
                $("#divHasElan").show();
            }
            else
                $("#divNoElan").show();
        }
    });
}
function getBannerList() {
    ajax({
        url: "GeneralApi/GetBannerList",
        data: { filter: "", sort: "", pageNo: -1 },
        success: function (result) {
            if (result.length > 0) {
                result.forEach(function (item) {
                    if (item.Picture !== null) {
                        var $div = $(".template-banner-group").clone();
                        $div.removeClass("template-banner-group").removeAttr("hidden");
                        $div.addClass("swiper-slide");
                        if (item.WebLink)
                            $div.find("a").attr("href", item.WebLink).attr("target", "_blank").css("cursor", "cursor");
                        else
                            $div.find("a").css("cursor", "default");
                        $div.find("img").attr("src", "data:image/jpg;base64," + item.FileImage);
                        $("#divBannerContainer").append($div);
                    } else {
                        showNotification(item.Code, item.Name, item.Body, item.WebLink);
                    }
                });
            }
            new Swiper('.swiper-container', {
                pagination: '.swiper-pagination',
                paginationClickable: true,
                autoplay: '3000'
            });
        }
    });
}
function getDashBoardData() {
    ajax({
        url: 'AccountingApi/GetDashBoardData',
        success: function (returnValue) {
            var decimalCount = $("#hfDecimalCount").val();
            $("#lblSellerMonth").text(numberWithCommas(returnValue.ThisMonthSale, decimalCount));
            $("#lblSellerMonthPercent").text(returnValue.LastMonthSalePercent + "%");
            $("#lblBankAccount").text(numberWithCommas(returnValue.BankRemained, decimalCount));
            $("#lblSandoghAccount").text(numberWithCommas(returnValue.CashRemained, decimalCount));
            $("#lblSandoghLastActivity").text(numberWithCommas(returnValue.LastCashValue, decimalCount));
            $("#lblDateBank").text(returnValue.LastBankDateLocal);
            $("#lblDateSandogh").text(returnValue.LastCashDateLocal);
            $("#lblBankLastActivity").text(numberWithCommas(returnValue.LastBankValue, decimalCount));
            $("#imgBank").attr("src", baseUrl + (returnValue.LastBankValue < 0 ? "img/pages/default/down.svg" : "img/pages/default/up.svg"));
            $("#imgSandogh").attr("src", baseUrl + (returnValue.LastCashValue < 0 ? "img/pages/default/down.svg" : "img/pages/default/up.svg"));
            $("#imgMonthSeller").attr("src", baseUrl + (returnValue.LastMonthSalePercent < 0 ? "img/pages/default/down.svg" : "img/pages/default/up.svg"));
        }
    });
}
function updatePoll() {
    ajax({
        url: 'GeneralApi/UpdatePoll',
        success: function (result) {
        },
        error: function () {
        }
    });
}
function getChart() {
    ajax({
        url: "GeneralApi/GetChart",
        success: function (result) {
            if (result) {
                renderChart({
                    reportTitle: '',
                    json: eval(result),
                    renderTo: 'container',
                    chartType: 'column',
                    strColTitles: 'Name_Mah=' + window.top.month + ',Daramad=' + window.top.income + ',Hazineh=' + window.top.cost,
                    strParams: 'Name_Mah',
                    strSeries: '',
                    strValues: 'Daramad,Hazineh',
                    strTypes: '',
                    legendWidth: 30,
                    isTousand: true,
                    sortChartType: '',
                    sortChartDirection: ''
                });
            }
        },
        complete: function () {
            $("#container").removeClass("center-vertical");
        }
    });
}
function checkAccess(code) {
    ajax({
        url: "GeneralApi/CheckSystemAccess",
        data: { code: code },
        success: function (result) {
            var cloudAndroid = (result === true && isCloud === "1" && language === "fa") ? "1" : "0";
            if (cloudAndroid === "1" && !getCookie("acceptAndroidView")) {
                $("#cloudAndroidView").modal();
            }
        }
    });
}
function getPollAccess() {
    ajax({
        url: 'GeneralApi/GetPollAccess',
        data: { lockSerial: + $("#hfLockSerial").val() },
        success: function (returnValue) {
            var value = eval(returnValue);
            if (value.length > 0) {
                var html =
                    "<div class='setting-img' id='divPoll' title='" + window.top.poll + "' onclick='openPoll(\"" + value[0].Name + "\"," + value[0].CodeType + ")' >" +
                    "<img src='/img/survey.png' style='display: block;' />" +
                    "</div>";
                $(".nav-icons").prepend(html);
                showNotification(value[0].CodeType, window.top.dearUser + ": " + $("#lblUserName").text(), window.top.thankingPlease + " " + value[0].Name + " " + window.top.participate, "", "poll", value[0].Name);
                setTimeout(function () { $(".poll").remove(); }, 25000);
            }
        }
    });
}
function getHelpDocumentList(codeList) {
    ajax({
        url: "GeneralApi/GetHelpDocumentList",
        data: { codeList: codeList, platformType: "web" },
        success: function (result) {
            result.forEach(function (item) {
                if (item.HelpType === "help") {
                    fillHelpGuider("#divGuider", "#InsGuider", item.Link, item.Name);
                }
                if (item.HelpType === "faq") {
                    fillHelpGuider("#divQuestion", "#InsQusetion", item.Link, item.Name);
                }
                if (item.HelpType === "knowledge") {
                    fillHelpGuider("#divBankEdu", "#educationBank", item.Link, item.Name);
                }
            });
            if ($('#InsGuider li').length === 0 && $('#InsQusetion li').length === 0 && $('#educationBank li').length === 0)
                $('#no-help-box').show();
            closeLoading();
        }
    });
}
function fillHelpGuider(divId, ulId, link, name) {
    $(ulId).show();
    $(divId).attr("style", "display: block !important;");
    $($(ulId).parent('div')).prev("div").css('border-bottom', 'none');
    $($(ulId).parent('div')).prev("div").find('.help-item-img').css('transform', 'rotate(180deg)');
    $(ulId).append("<li><a href='" + link + "' target='_blank'>" + name + "</a></li>");
}
function getPortalLink() {
    ajax({
        url: "GeneralApi/GetPortalLink",
        success: function (result) {
            $("#hfWebUser").val(result);
        },
        error: function () { }
    });
}
function removeLock(systemName, codeSanad) {
    ajax({
        url: "GeneralApi/RemoveLock",
        data: { systemName: systemName, codeSanad: codeSanad }
    });
}

function addDraggable() {
    $('#bodyMainTabs').sortable({
        handle: '.tabHead'
    }).disableSelection();
}
function removeQuery(name, url) {
    if (!url)
        url = window.location.href;
    var urlparts = url.split('?');
    if (urlparts.length >= 2) {

        var prefix = encodeURIComponent(name) + '=';
        var pars = urlparts[1].split(/[&;]/g);
        for (var i = pars.length; i-- > 0;) {
            if (pars[i].lastIndexOf(prefix, 0) !== -1) {
                pars.splice(i, 1);
            }
        }
        url = urlparts[0] + '?' + pars.join('&');
        return url;
    } else {
        return url;
    }
}

function closeLeftSideMenu() {
    $('.menu-div .desc').addClass('effectOutMenu');
    $('.menu-div .desc').removeClass('effectInMenu');
    if (document.getElementById('st'))
        document.head.removeChild(document.getElementById('st'));
    openedMenuId = "";
    if (profileIsOpen == true) {
        $('#UserProfile').addClass('effectOut');
        $('#UserProfile').removeClass('effectIn');
        if (document.getElementById('stP'))
            document.head.removeChild(document.getElementById('stP'));
        profileIsOpen = false;
    }

    $('.tabContextMenu').hide();
}


//-----------tab & modal & menu
function openSubMenu(id) {
    $('.tabContextMenu').hide();
    if (openedMenuId != id) {
        profileIsOpen = false;
        $('#UserProfile').addClass('effectOut');
        $('#UserProfile').removeClass('effectIn');
        if (document.getElementById('stP'))
            document.head.removeChild(document.getElementById('stP'));

        $('.menu-div .desc').addClass('effectOutMenu');
        $('.menu-div .desc').removeClass('effectInMenu');
        if (document.getElementById('st'))
            document.head.removeChild(document.getElementById('st'));

        $('.menu-div#' + id + ' .desc').addClass('effectInMenu');
        setTimeout(function () {
            if (document.getElementById('st'))
                document.head.removeChild(document.getElementById('st'));
            var st = document.createElement("style");
            st.setAttribute('id', 'st');
            var styleElem = document.head.appendChild(st);
            styleElem.innerHTML = ".navbar-menu > li .menu-div:after {top: " + ((id - 1) * 64 + 22) + "px; display:block;}";
        }, 100);
        openedMenuId = id;
    }
    else {
        $('.menu-div .desc').addClass('effectOutMenu');
        $('.menu-div .desc').removeClass('effectInMenu');
        if (document.getElementById('st'))
            document.head.removeChild(document.getElementById('st'));
        openedMenuId = "";
    }
}
function clickTabs() {
    $('#bodyMainTabs').on('mousedown', 'li', function (e) {
        if ($(this).attr('id') !== 'home' && e.which === 2) {
            $(this).find('.close-svg').click();
        }
        e.stopPropagation();
        e.preventDefault();
        return false;
    });
    $('#bodyMainTabs').on('contextmenu', 'li', function (e) {
        if ($(this).attr('id') !== 'home') {
            $('.tabContextMenu').css({
                display: 'block',
                left: e.pageX,
                top: e.pageY
            });
            $('.tabContextMenu').attr('data-id', $(this).find('a').attr('href'));
        }
        e.stopPropagation();
        e.preventDefault();
        return false;
    });
}
function tabMenuClick(e) {
    switch (e) {
        case 0:
            $('#bodyMainTabs li a[href="' + $('.tabContextMenu').attr('data-id') + '"] .close-svg').click();
            break;
        case 1:
            $('#bodyMainTabs > li a[href!="' + $('.tabContextMenu').attr('data-id') + '"] .close-svg').click();
            break;
        case 2:
            $('#bodyMainTabs > li a .close-svg').click();
            break;
    }
}
function canAddNewTab() {
    if ($('.nav.panel-tabs > li').length > 1 && parseInt($($('.nav.panel-tabs > li')[$('.nav.panel-tabs > li').length - 1]).find('label').css('width')) < 12)
        return false;
    return true;
}
function openInTab(url, title, iconUrl, closeAfterLoading, parameters) {
    var cashDeskAcc = getQuery("cashDeskAcc", url);
    var storeAcc = getQuery("storeAcc", url);
    if (cashDeskAcc && cashDeskAcc === "0") {
        showMsgModal(0, window.top.userNotAccessToCashDesk + " " + window.top.impossibleToRegisterInvoice);
        return;
    }
    if (storeAcc && storeAcc === "0") {
        showMsgModal(0, window.top.userNotAccessToStore + " " + window.top.impossibleToRegisterInvoice);
        return;
    }
    if (closeAfterLoading === undefined)
        closeAfterLoading = true;

    if (canAddNewTab()) {
        hideSidebar();
        var newid = guid();
        if (url.indexOf('?') > 0)
            url = url + '&openInTab=1';
        else
            url = url + '?openInTab=1';
        var newTab = '<li class="active" title="' + title + '"><a class="tabHead ui-sortable-handle" href="#' + newid + '" data-toggle="tab"><img class="svg tab-icon"  src="' + iconUrl + '"  /><label>' + title + '</label><div class="tab-pane-div">' +
            '<svg class="close-svg" style="width: 14px;" onclick="closeCurrentTab(\'' + newid + '\')"  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24" version="1.1">' +
            '<g id="surface1"><path style=" " d="M 5.625 4.21875 L 4.21875 5.625 L 10.59375 12 L 4.21875 18.375 L 5.625 19.78125 L 12 13.40625 L 18.375 19.78125 L 19.78125 18.375 L 13.40625 12 L 19.78125 5.625 L 18.375 4.21875 L 12 10.59375 Z "></path></g></svg>' +
            '</div></a></li>';
        var windowHeight = $(window).height();
        if (!parameters)
            parameters = "";
        parameters = "X-User-Token=" + window.top.$("#hfSid").val() + (parameters.length > 0 ? "|" : "") + parameters;
        var newTabPane = ' <div class="tab-pane active " id="' + newid + '"  style="height:' + (windowHeight - 78) + 'px"> ' +
            '<form action="' + url + '" method="post" target="iframe' + newid + '"><input type="hidden" name="result" value="' + escape(parameters) + '" /></form>' +
            '<iframe name="iframe' + newid + '"  class="ifrm"></iframe>' +
            '</div>';

        $('#bodyMainTabs > li').removeClass('active');
        $('#bodyMainBox .tab-pane').removeClass('active');
        $('#bodyMainTabs').append(newTab);
        $('#bodyMainBox').append(newTabPane);
        if (document.getElementById('st'))
            document.head.removeChild(document.getElementById('st'));
        $('.menu-div .desc').addClass('effectOutMenu');
        $('.menu-div .desc').removeClass('effectInMenu');
        openedMenuId = "";

        reloadTabs();
        showLoading();
        addDraggable();

        $("#" + newid).find("iframe").on("load", function () { $("#" + newid).find("form").remove(); if (closeAfterLoading) closeLoading(); });
        $("#" + newid).find("form").submit();
        if ($("#hfIsDemo").val() === "1")
            insertLog(url);
    }
    else {
        showMsgModal(0, window.top.closeUnusedForms);
    }

}
function insertLog(url) {
    ajax({
        url: "GeneralApi/InsertLog",
        data: { name: url }
    });
}


var changeColumn = [];

function openInModal(iconUrl, url, title, width, height, closeAfterLoading, parameters) {
    if (closeAfterLoading === undefined)
        closeAfterLoading = true;

    hideSidebar();
    var screenWidth = $(window).width();
    if (screenWidth < 768) {
        width = screenWidth - 50;
        height = $(window).height() - 140;
    }
    else {
        if (!(parseInt(width) > 0)) {
            if (screenWidth > 992)
                width = screenWidth - 280;
            else
                width = screenWidth - 50;
        }
        if (!(parseInt(height) > 0))
            height = $(window).height() - 70;
    }
    var parentFrameId = "";
    if ($('.ifrm').last().length > 0) {
        if ($('.ifrm').last().parent().hasClass('modal-body')) {
            parentFrameId = $('.ifrm').last().parent().parent().parent().attr('id');
        }
        else {
            parentFrameId = $('.ifrm').parent('.active').attr('id');
        }
    }

    openHighlightScreen();
    var lastModal = $('.gheyas-modal').last();
    var zIndex = 1000;
    var newZIndex = 1001;
    if ($(lastModal).length > 0) {
        zIndex = $(lastModal).css('z-index');
        newZIndex = parseInt(zIndex) + 2;
    }
    else {
        zIndex = $('#masterHighlightScreen').css('z-index');
        newZIndex = parseInt(zIndex) + 1;
    }
    if (parseInt(width) > screenWidth)
        width = screenWidth;
    var leftMargin = (screenWidth - parseInt(width)) / 2;
    var newModalId = guid();
    if (url.indexOf('?') > 0)
        url = url + '&openInTab=0';
    else
        url = url + '?openInTab=0';
    if (!parameters)
        parameters = "";
    parameters = "X-User-Token=" + window.top.$("#hfSid").val() + (parameters.length > 0 ? "|" : "") + parameters;
    var modal = '';
    if (title.length > 0) {
        modal = '<div id="' + newModalId + '" parent-frame="' + parentFrameId + '" class="gheyas-modal"  style="display:block; overflow:visible;width:' + (parseInt(width) + 2) + 'px;height:' + (parseInt(height) + 44) + 'px;left:' + leftMargin + 'px; z-index:' + newZIndex + ';">' +
            '<div class="modal-content" style="width:100%;height:100%;">';
        modal += '<div class="modal-header">';
        if (iconUrl.length > 0)
            modal += '<img class="svg modal-icon float-right" src="' + iconUrl + '" />';
        modal += '<label class="modal-title">' + title + '</label>' +

            '<svg class="close-svg modal-header-style" onclick="closeCurrentModal(\'' + newModalId + '\')"  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24" version="1.1">' +
            '<g id="surface1"><path style=" " d="M 5.625 4.21875 L 4.21875 5.625 L 10.59375 12 L 4.21875 18.375 L 5.625 19.78125 L 12 13.40625 L 18.375 19.78125 L 19.78125 18.375 L 13.40625 12 L 19.78125 5.625 L 18.375 4.21875 L 12 10.59375 Z "></path></g></svg>' +
            '<div class="float-left" style="margin: 1px 6px 0;cursor: pointer;width: 20px;height: 20px;" title="' + window.top.help + ' (F1)" onclick="showHelpForm(event);">' +
            //'<label class="notice-help"></label>' +
            '<img src="' + baseUrl + 'img/pages/header/help.svg" />' +
            '</div>' +
            '</div>';
    }
    else {
        modal = '<div id="' + newModalId + '" parent-frame="' + parentFrameId + '" class="gheyas-modal"  style="display:block; overflow:visible;width:' + (parseInt(width) + 2) + 'px;height:' + (parseInt(height)) + 'px;left:' + leftMargin + 'px; z-index:' + newZIndex + ';">' +
            '<div class="modal-content" style="width:100%;height:100%;">';
        url = url + '&modalId=' + newModalId;
    }
    modal += '<div class="modal-body" style="width:' + width + 'px;height:' + height + 'px">' +
        '<form action="' + url + '" method="post" target="iframe' + newModalId + '"><input type="hidden" name="result" value="' + escape(parameters) + '" /></form>' +
        '<iframe name="iframe' + newModalId + '" class="ifrm"></iframe></div>' +
        '</div></div>';


    $('#masterBody').append(modal);
    $('.menu-div .desc').addClass('effectOutMenu');
    $('.menu-div .desc').removeClass('effectInMenu');
    openedMenuId = "";
    if (document.getElementById('st'))
        document.head.removeChild(document.getElementById('st'));
    setTimeout(function () {
        $('#masterBody .gheyas-modal').draggable({
            containment: 'parent',
            stop: function (event, ui) {
                if (parseInt($(this).css('top')) < 0)
                    $(this).css('top', '0px');
            }
        });
    }, 500);
    if (title.length > 0)
        addMasterScreenLoading(parseInt(width) + 2, parseInt(height) + 53, 5, leftMargin);
    else
        addMasterScreenLoading(parseInt(width) + 2, parseInt(height), 5, leftMargin);

    formIdModal = url.split('?')[0];

    $("#" + newModalId).find("iframe").on("load", function () { $("#" + newModalId).find("form").remove(); if (closeAfterLoading) closeLoading(); });
    $("#" + newModalId).find("form").submit();
    if ($("#hfIsDemo").val() === "1")
        insertLog(url);
}
function closeTopModal() {
    $('.gheyas-modal').last().remove();
    formIdModal = '';
    closeHighlightScreen();
}
function closeCurrentModal(id) {
    $('.gheyas-modal[id="' + id + '"]').remove();
    formIdModal = '';
    closeHighlightScreen();
}
function onCloseTab(url) {
    if (url.toLowerCase().indexOf("factorsave") > -1 || url.toLowerCase().indexOf("inoutsave") > -1) {
        var factorCode = getQuery('CodeSanad', url) || getQuery('Code', url);
        removeLock(systemName.saleStore, factorCode);
    }
    else if (url.toLowerCase().indexOf("invoicesave") > -1) {
        var codeSanad = getQuery('CodeSanad', url);
        if (!codeSanad)
            codeSanad = getQuery("CodeSanadCopy", url);
        removeLock(systemName.accounting, codeSanad);
    }

}
function closeCurrentTab(id) {

    if (!id)
        id = $('#bodyMainTabs > li.active a').attr('href').replace('#', '');

    var url = $('#' + id).find("iframe")[0].contentWindow.location.href;

    onCloseTab(url);


    $('#bodyMainTabs > li a[href="#' + id + '"]').parent().remove();
    $('#bodyMainBox .tab-pane[id="' + id + '"]').remove();
    $('#bodyMainTabs > li').last().addClass('active');
    $('#bodyMainBox .tab-pane').last().addClass('active');
    reloadTabs();
    addDraggable();
}
function reloadTabs() {
    var allW = $('.navbar-fixed-right').width() + 16 + $('#home').width() + $('.nav-icons').width() + 16 + 10;
    var tabs = 0;
    $.each($(".nav.panel-tabs > li:not([id='home'])"), function () {
        tabs += parseInt($(this).css('width'));
    });
    if ($(window).width() - (allW + tabs) <= 0 || ($('.nav.panel-tabs > li').length > 1 && parseInt($($('.nav.panel-tabs > li')[$('.nav.panel-tabs > li').length - 1]).find('label').css('width')) < maxWidthTabLabel)) {
        var sizeFree = $(window).width() - allW;
        var sizeWidth = sizeFree / ($(".nav.panel-tabs > li").length - 1);
        $(".nav.panel-tabs > li:not([id='home'])").css('width', sizeWidth + 'px');
        $(".nav.panel-tabs > li:not([id='home'])").find('label').css('max-width', (sizeWidth - 58) + 'px');
    }
    else {
        $(".nav.panel-tabs > li:not([id='home'])").css('width', maxWidthTab + 'px');
        $(".nav.panel-tabs > li:not([id='home'])").find('label').css('max-width', maxWidthTabLabel + 'px');
    }
}
function refreshParent(method) {
    var parentId = $('.ifrm').last().parent().parent().parent().attr('parent-frame');
    var result = null;
    try {
        result = $('#' + parentId).find('iframe')[0].contentWindow.eval(method);
        return result;
    }
    catch (ex) {
        //ignore
    }
    var frameCount = $('#' + parentId).find('iframe')[0].contentWindow.frames.length;
    for (var i = 0; i < frameCount; i++) {
        try {
            result = $('#' + parentId).find('iframe')[0].contentWindow.frames[i].eval(method);
            return result;
        }
        catch (ex) {
            //ignore
        }
    }
    return result;
}
function refreshParentList(method) {
    var parentId = $('.ifrm').last().parent().parent().parent().attr('parent-frame');
    var result = $($('#' + parentId).find('iframe')[0].contentWindow.document).find('.iframe-list')[0].contentWindow.eval(method);
    return result;
}
function refreshParentDetail(method) {
    var parentId = $('.ifrm').last().parent().parent().parent().attr('parent-frame');
    var result = $($('#' + parentId).find('iframe')[0].contentWindow.document).find('.iframe-detail')[0].contentWindow.eval(method);
    return result;
}
function openPoll(title, codeType) {
    $(".poll").remove();
    openInModal("", "Define/Poll?codeType=" + codeType, title, "", 550);
}

function showNotification(code, subject, message, link, type, modalTitle) {
    hideSidebar();
    var url = "Define/Poll";
    var html =
        ' <div class="elan-balloon ' + type + ' ">' +
        ' <div class="col-xs-12" style = "background: #fafafa; padding:15px;" >' +
        ' <div class="col-xs-12 no-padding" style="margin-bottom: 8px;">' +
        ' <div class="elan-balloon-img" onclick="$(this).parents(\'.elan-balloon\').remove();">' +
        ' <img src="' + baseUrl + 'img/pages/notification/closeBlack.svg" style="width: 16px;">' +
        ' </div>' +
        ' </div>' +
        ' <div class="col-xs-2 no-padding" style="height: 100%; display: flex!important; justify-content: center; flex-direction: column;">' +
        ' <img src ="' + baseUrl + 'img/' + (type === "poll" ? "survey.svg" : "pages/notification/messageIn.svg") + '" style = "width: 70px;" > ' +
        ' </div>' +
        ' <div class="col-xs-10">' +
        ' <div class="col-xs-12 no-padding text-ellipsis">' +
        ' <span style="font-weight: 700; font-size: 14px;">' + subject + '</span>' +
        ' </div>' +
        ' <div class="col-xs-12 no-padding text-ellipsis">' +
        ' <span style="font-size: 14px;">' + message + '</span>' +
        ' </div>' +
        ' <div class="col-xs-12 no-padding text-ellipsis" dir="ltr" style="line-height: 60px;">' +
        (type === "poll" ? '<button class="elan-balloon-button float-right" onclick="openPoll(\'' + modalTitle + '\',' + code + ');return false;">' + window.top.startPoll + '</button>' : ' <button class="elan-balloon-button float-right" onclick="readNotification(this,' + code + ');return false;">' + window.top.iSee + '</button><a class="float-left" style="cursor:pointer;" onclick="showElanDetails(' + code + ',true)">' + window.top._more + '</a>') +
        ' </div>' +
        ' </div>' +
        ' </div>' +
        ' </div>';
    $('#notifications').append(html);
}


//-----------notify balloon

function readNotification(sender, code) {
    ajax({
        url: "GeneralApi/SetNotificationRead",
        data: { code: code },
        success: function () {
            $(sender).parents(".elan-balloon").remove();
        }
    });
}
//-----------loading
function addMasterScreenLoading(width, height, top, left) {
    $('.masterScreenLoading').fadeIn();
    $('.masterScreenLoading').css('width', width);
    $('.masterScreenLoading').css('height', height);
    $('.masterScreenLoading').css('top', top);
    $('.masterScreenLoading').css('left', left);
}
function openHighlightScreen() {
    $('#masterHighlightScreen').css('display', 'block');
    var lastModal = $('.gheyas-modal').last();
    var zIndex = 1001;
    if ($(lastModal).length > 0) {
        zIndex = $(lastModal).css('z-index');
        $('#masterHighlightScreen').css('z-index', (parseInt(zIndex) + 1));
    }
    else {
        $('#masterHighlightScreen').css('z-index', zIndex);
    }
}
function closeHighlightScreen() {

    var lastModal = $('.gheyas-modal').last();
    var zIndex = 1001;
    if ($(lastModal).length > 0) {
        zIndex = $(lastModal).css('z-index');
        $('#masterHighlightScreen').css('z-index', (parseInt(zIndex) - 1));
    }
    else {
        $('#masterHighlightScreen').css('z-index', zIndex);
        $('#masterHighlightScreen').css('display', 'none');
    }
}
//-----------event page
function updateRecentlyForms() {
    w = parseInt($(window).width());
    $('#AllForm > ul').empty();
    if (getCookie('lastViewdForms').length > 0) {
        var allforms = getCookie('lastViewdForms').split('#');
        if (allforms.length > 0) {
            for (var i = 0; (i < allforms.length && i < 5); i++) {
                var form = allforms[i].split('*');
                if (form[3] == "1") {
                    var li = '<li onclick="openInModal(\'' + form[1] + '\',\'' + form[2] + '\',\'' + form[0] + '\',\'\',\'\')"> <img src="' + form[1] + '" class="img-last-form" />' +
                        '<label class="lbl-last-form">' + form[0] + '</label></li>';
                    $('#AllForm  >ul').append(li);
                }
                else {
                    var li = '<li onclick="openInTab(\'' + form[2] + '\',\'' + form[0] + '\',\'' + form[1] + '\')"> <img src="' + form[1] + '" class="img-last-form" />' +
                        '<label class="lbl-last-form">' + form[0] + '</label></li>';
                    $('#AllForm >ul').append(li);
                }
            }
            $('#AllForm').css('display', 'flex');
            $('#NoForm').css('display', 'none');
        }
        else {
            $('#AllForm').css('display', 'none');
            $('#NoForm').css('display', 'flex');
        }
    }
    else {
        $('#AllForm').css('display', 'none');
        $('#NoForm').css('display', 'flex');
    }

}
function lockScreenPage() {
    $('body').append('<iframe name="iframeLockScreen" style="position: absolute;top:0;left:0;width:100%;height:100%;z-index: 5000;border: 0;"></iframe>');
    redirectUrl(baseUrl + "Define/LockScreen", "iframeLockScreen");
}
function addToCookieLastForm(url, title, iconUrl, isModal) {

    var cValue = title + "*" + iconUrl + "*" + url + "*" + isModal;
    var cName = 'lastViewdForms';
    var cHours = 720;

    var forms = new Array();
    var date = new Date();
    date.setHours(date.getHours() + cHours);
    var expires = "expires=" + date.toUTCString();
    if (getCookie('lastViewdForms').length > 0) {
        forms = getCookie('lastViewdForms').split('#');
        var formsTemp = new Array();
        for (var ii = 0; ii < forms.length; ii++) {
            formsTemp.push(removeQuery('session', forms[ii]));
        }
        var index = $.inArray(removeQuery('session', cValue), formsTemp);
        if (index > -1)
            forms.splice(index, 1);
        //insert item index 0
        forms.splice(0, 0, cValue);
        //delete more 5 item
        forms.splice(5, forms.length - 5);
    }
    else
        forms.push(cValue);
    document.cookie = cName + "=" + forms.join('#') + "; " + expires + ";path=/";
}
function openCompanyInfo() {
    var title = "";
    var url = "Define/CompanyInfo";
    openInModal("", url, title, '', 550);
}


async function exitWebApplication(exit) {
    if (redirectToLogin) {
        redirectToLogin = false;
        await ajax({
            loading: true,
            url: "Home/Logout",
            data: { isExit: exit },
            success: function (url) {
                if (exit) {
                    var type = $("#hfDemoType").val();
                    redirectUrl(baseUrl + "login" + (type.length > 1 ? "?type=" + type : ""));
                }
            }
        });
    } else
        redirectToLogin = true;
}
function openAbout() {
    var title = "";
    var url = "Define/About";
    openInModal("", url, title, 900, 550);
}
function choiceShobe() {
    var title = window.top.selectBranch;
    var height = "300";
    var width = "600";
    var src = "Define/Branch";
    openInModal('', src, title, width, height);
}
function choiceYear() {
    var title = window.top.selectFinanceCourse;
    var height = "350";
    var width = "480";
    var src = "General/FinancialYearChange";
    openInModal('', src, title, width, height);
}
function openPortal() {
    openPortalPage();
}
function openPortalPage() {
    var link = $('#hfWebUser').val();
    if (link !== "" && link !== "-1") {
        var link = document.createElement("a");
        link.setAttribute("href", $('#hfWebUser').val());
        link.setAttribute("target", "_blank");
        link.click();
    }
    else if (link === "-1")
        showMsgModal(0, window.top.impossibleInternetConnection);
    else {
        var title = window.top.portalRegistration;
        var url = "Define/PortalLogin";
        openInModal(baseUrl + "img/pages/default/portal.svg", url, title, 700, 531);
    }
}
function showElanDetails(code, isNotify) {
    openInModal('', 'General/NotificationDetail?code=' + code + '&notify=' + (isNotify ? "1" : "0"), window.top.notificationDetails, '620', '410');
}
function smallBox() {
    if ($('#MainChat').css('width') == "480px") {
        $('#frmChat')[0].contentWindow.$('#divMessages').hide();
        $('#frmChat')[0].contentWindow.$('#divPeople').removeClass("col-xs-5").addClass("col-xs-12");
        $('#MainChat').css('width', '200px');
    }
    else {
        $('#frmChat')[0].contentWindow.$('#divMessages').show();
        $('#frmChat')[0].contentWindow.$('#divPeople').removeClass("col-xs-12").addClass("col-xs-5");
        $('#MainChat').css('width', '480px');
    }
}
function minimizeBox() {

    if ($('#MainChat').css('bottom') == "0px") {

        $('#MainChat').css('bottom', '-460px');
        $('#divMinMax').css('border', '1px solid white');
        $('#divMinMax').css('margin-top', '16px');

    }
    else {

        $('#MainChat').css('bottom', '0');
        $('#divMinMax').css('border-bottom', '0');
        $('#divMinMax').css('border-left', '0');
        $('#divMinMax').css('border-right', '0');
        $('#divMinMax').css('border-top', '2px solid white');
        $('#divMinMax').css('margin-top', '27px');
    }
}
function changeFlag(sender) {
    var state = false;
    var code = $(sender).attr("data-code");
    if ($(sender).parent().hasClass('pined')) {
        countAlarm = countAlarm > 0 ? countAlarm - 1 : 0;
        $(sender).parent().removeClass('pined');
    }
    else {
        state = true;
        countAlarm++;
        $(sender).parent().addClass('pined');
    }
    changeStateNotify();
    ajax({
        url: "GeneralApi/ChangeStateAlarm",
        data: { code: code, isPinned: state },
        error: function () {
            if (state)
                countAlarm--;
            else
                countAlarm++;
            changeStateNotify();
        }
    });
}
function changeStateNotify() {
    if (countAlarm <= 0) {
        $('#lblNotify').text('');
        $('#lblNotify').removeClass('notice-fill');
    }
    else {
        $('#lblNotify').text(countAlarm);
        $('#lblNotify').addClass('notice-fill');
    }
}

function getIframe() {
    var tabActive = $(".tab-pane.active").find("iframe");
    if (tabActive.length === 1)
        return tabActive;
    return "";
}
function getHelpFormAddress() {
    var lastModal = $(".gheyas-modal").last().find(".ifrm");
    var tabActive = $(".tab-pane.active").find(".ifrm");
    var formAddress;
    if (lastModal.length === 1)
        formAddress = lastModal[0].contentWindow.location.pathname.substring(1);//lastModal.attr("action").split(".")[0];
    else if (tabActive.length === 1)
        formAddress = tabActive[0].contentWindow.location.pathname.substring(1);
    else
        formAddress = "Default";
    return formAddress;
}

function openSetting() {
    openInTab("Setting/Default", window.top.setting, baseUrl + "img/pages/header/setting.svg", true);
}


function showHelpForm(event) {
    hideSidebar();
    $("#hfGuider").val("");
    helpFormAddress = getHelpFormAddress();
    if ($('#hfIsLeftToRight').val() === "true") {
        if ($("#div-Help").css("right") === "0px") {
            $("#div-Help").css("right", sizeSideBar);
            $("#div-Help").css('left', "unset");
            isOpenTab = false;
        }
        else {
            $("#div-Help").css("right", "0px");
            $("#div-Help").css("left", "unset");
            isOpenTab = true;
        }
    }
    else {
        if ($("#div-Help").css("left") === "0px") {
            $("#div-Help").css("left", sizeSideBar);
            isOpenTab = false;
        }
        else {
            isOpenTab = true;
            $('#div-Help').css('left', '0px');
        }
    }

    if (isOpenTab)
        setDataToPanelGuider(helpFormAddress);

    if (event && event.altKey && event.ctrlKey && event.shiftKey) {
        $("#div-Help").css("left", sizeSideBar);
        var title = window.top.helpManagement;
        var src = "Setting/GuiderManager?formId=" + helpFormAddress;
        openInModal('', src, title, '1000', "", false);
    }

}

function setDataToPanelGuider(formId) {
    $('#no-help-box').hide();

    $('#InsGuider').hide();
    $('#InsQusetion').hide();
    $('#educationBank').hide();

    $('#InsGuider').empty();
    $('#InsQusetion').empty();
    $('#educationBank').empty();

    $($('#InsGuider').parent('div')).prev("div").css('border-bottom', '1px solid #ccc');
    $($('#InsGuider').parent('div')).prev("div").find('.help-item-img').css('transform', 'rotate(0deg)');

    $($('#InsQusetion').parent('div')).prev("div").css('border-bottom', '1px solid #ccc');
    $($('#InsQusetion').parent('div')).prev("div").find('.help-item-img').css('transform', 'rotate(0deg)');

    $($('#educationBank').parent('div')).prev("div").css('border-bottom', '1px solid #ccc');
    $($('#educationBank').parent('div')).prev("div").find('.help-item-img').css('transform', 'rotate(0deg)');

    $('#divGuider').attr("style", "display: none !important;");
    $('#divQuestion').attr("style", "display: none !important;");
    $('#divBankEdu').attr("style", "display: none !important;");

    ajax({
        loading: true,
        url: "GeneralApi/GetGheyasHelpList",
        data: { formUrl: helpFormAddress, platformType: "web"},
        success: function (result) {
            if (!result) {
                $('#no-help-box').show();
                closeLoading();
                return;
            }
            getHelpDocumentList(result.map(x => x.DocumentCode));
        },
        complete: function () { }
    });

}

function showLastForm() {
    hideSidebar();
    if ($('#hfIsLeftToRight').val() === "true") {
        if ($('#div-LastForm').css('right') === '0px') {
            $('#div-LastForm').css('right', sizeSideBar);
            $('#div-LastForm').css('left', 'unset');
        }

        else {
            $('#div-LastForm').css('right', '0px');
            $('#div-LastForm').css('left', 'unset');
        }

    }
    else {
        if ($('#div-LastForm').css('left') === '0px')
            $('#div-LastForm').css('left', sizeSideBar);
        else
            $('#div-LastForm').css('left', '0px');
    }
}
function showChatBox() {
    hideSidebar();
    if ($('#hfIsLeftToRight').val() === "true") {
        if ($('#div-ChatBox').css('right') === '0px') {
            $('#div-ChatBox').css('right', sizeSideBar);
            $('#div-ChatBox').css('left', 'unset');
        }

        else {
            $('#div-ChatBox').css('right', '0px');
            $('#div-ChatBox').css('left', 'unset');
        }

    }
    else {
        if ($('#div-ChatBox').css('left') === '0px')
            $('#div-ChatBox').css('left', sizeSideBar);
        else
            $('#div-ChatBox').css('left', '0px');
    }
}
function hideSidebar() {
    if ($('#hfIsLeftToRight').val() === "true") {
        if ($('#div-Help').css('right') === '0px')
            $('#div-Help').css('right', sizeSideBar);
        if ($('#div-LastForm').css('right') === '0px')
            $('#div-LastForm').css('right', sizeSideBar);
        if ($('#div-Alarms').css('right') === '0px')
            $('#div-Alarms').css('right', sizeSideBar);
        if ($('#div-ChatBox').css('right') === '0px')
            $('#div-ChatBox').css('right', sizeSideBar);
    }
    else {
        if ($('#div-Help').css('left') === '0px')
            $('#div-Help').css('left', sizeSideBar);
        if ($('#div-LastForm').css('left') === '0px')
            $('#div-LastForm').css('left', sizeSideBar);
        if ($('#div-Alarms').css('left') === '0px')
            $('#div-Alarms').css('left', sizeSideBar);
        if ($('#div-ChatBox').css('left') === '0px')
            $('#div-ChatBox').css('left', sizeSideBar);
    }
}
function showAlarms() {
    hideSidebar();
    if ($('#hfIsLeftToRight').val() === "true") {
        if ($('#div-Alarms').css('right') === '0px') {
            $('#div-Alarms').css('right', sizeSideBar);
            $('#div-Alarms').css('left', 'unset');
        } else {
            $('#div-Alarms').css('right', '0px');
            $('#div-Alarms').css('left', 'unset');
            changeCounterNotice();
        }
    }
    else {
        if ($('#div-Alarms').css('left') === '0px')
            $('#div-Alarms').css('left', sizeSideBar);
        else {
            $('#div-Alarms').css('left', '0px');
            changeCounterNotice();
        }
    }
}
function changeCounterNotice() {
    if ($('#lblNotify').attr("data-id") === '')
        return;
    var codes = $('#lblNotify').attr("data-id").split(',');
    ajax({
        url: "GeneralApi/NotifySeen",
        data: { codes: codes },
        success: function () {
            countAlarm -= codes.length;
            changeStateNotify();
        },
        error: function () {
        }
    });
}
function DeactiveAlarm(code) {
    ajax({
        url: "GeneralApi/DeactiveAlarm",
        data: { Code: code },
        success: function () {
            openPortalPage();
        },
        error: function () {
        }
    });
}
function checkSessionTimeout() {
    timer = setInterval(function () {
        if (oldLast_request == getCookie('last_request')) {
            if (counterSession >= (config - 180)) {
                $('#session').fadeIn();
                redirectUrl(baseUrl + "SessionTimeout", "iframeSession");
                clearInterval(timer);
            }
            else {
                counterSession++;
            }
        }
        else {
            oldLast_request = getCookie('last_request');
            counterSession = 0;
        }
    }
        , 1000);
}
function openSurvey() {
    openInModal('', 'Define/Survey', '', 900, 449);
}
function chatNewWindow() {
    window.open('Chat/chat?v=chat', 'winname', 'directories=0,titlebar=0,toolbar=0,location=0,status=0,menubar=0,scrollbars=no,resizable=no,width=870,height=600');
}

function openForExtend() {
    var form = document.createElement("form");
    form.setAttribute("method", "POST");
    form.setAttribute("action", 'https://www.gheyas.com/cloud/extendsetting');
    form.setAttribute("target", "_blank");
    var hiddenField = document.createElement("input");
    hiddenField.setAttribute("name", "LockSerial");
    hiddenField.setAttribute("value", $('#hfLockSerial').val());
    form.appendChild(hiddenField);
    document.body.appendChild(form);
    form.submit();
    document.body.removeChild(form);
}
function openAddOnlineUser() {
    var form = document.createElement("form");
    form.setAttribute("method", "POST");
    form.setAttribute("action", 'https://www.gheyas.com/cloud/addonlineuser');
    form.setAttribute("target", "_blank");
    var hiddenField = document.createElement("input");
    hiddenField.setAttribute("name", "LockSerial");
    hiddenField.setAttribute("value", $('#hfLockSerial').val());
    form.appendChild(hiddenField);
    document.body.appendChild(form);
    form.submit();
    document.body.removeChild(form);
}
//-----------chart
function renderChart({ reportTitle, json, renderTo, chartType, strColTitles, strParams, strSeries, strValues, strTypes, legendWidth, isTousand, sortChartType, sortChartDirection }) {
    if (!json || json == '')
        return;
    function arraySort(array, sort) {
        return array.sort(function (a, b) {
            if (sort == 'asc')
                return a.localeCompare(b);
            else
                return b.localeCompare(a);
        });
    }
    function jsonSortByInt(json, field, sort) {
        return json.sort(function (a, b) {
            if (sort == 'asc')
                return a[field] - b[field];
            else
                return b[field] - a[field];
        });
    }
    function jsonSortByValue(groubedX, indexfield, json, categories, values, sort) {
        var arrayValueSum = [];
        $.each(groubedX, function (index, item) {
            var name = item;
            var sum = 0;
            $.grep(json, function (item, index) { if (item[categories[indexfield]] == name) sum += item[values[0]]; });
            arrayValueSum.push({ name: name, value: sum });
        });
        arrayValueSum = jsonSortByInt(arrayValueSum, 'value', sort);
        return arrayValueSum.map(function (d) { return d.name; });
    }
    function categoriesGroyupBy(groubedX, indexfield, json) {
        for (var ii = 0; ii < groubedX.length; ii++) {
            resultCategories += '{name:"' + (groubedX[ii] == '' ? '---' : groubedX[ii]) + '"';
            if (indexfield == categories.length - 1) {
                categoryGroupCount++;
                resultCategories += '},';
                var filtered = json.filter(function (item) { return (item[categories[indexfield]] == groubedX[ii]); });
                if (series.length > 0) {
                    seriesGroupBy(groubedSeries, 0, filtered);
                }
                else {
                    valuesGroupBy(filtered);
                }
            }
            else {
                resultCategories += ',categories:[';
                var filtered = json.filter(function (item) { return (item[categories[indexfield]] == groubedX[ii]); });
                var array = filtered.map(function (d) { return d[categories[indexfield + 1]]; });
                var pack = $.grep(array, function (item, index) {
                    return index == $.inArray(item, array);
                });
                ////////sort
                if (sortChartType == 1)
                    pack = arraySort(pack, sortChartDirection);
                else if (sortChartType == 2)
                    pack = jsonSortByValue(pack, indexfield + 1, filtered, categories, values, sortChartDirection);
                //////////
                categoriesGroyupBy(pack, indexfield + 1, filtered);
                resultCategories = resultCategories.substr(0, resultCategories.length - 1) + ']},';
            }
        }
    }
    function seriesGroupBy(grouping, indexfield, json) {
        for (var ii = 0; ii < grouping.length; ii++) {
            legendList.push(grouping[ii]);
            if (indexfield == series.length - 1) {
                var filtered = json.filter(function (item) { return (item[series[indexfield]] == grouping[ii]); });
                for (var kk = 0; kk < values.length; kk++) {
                    var totalPrice = filtered.reduce(function (sum, item) {
                        return sum + item[values[kk]];
                    }, 0);
                    legendList.push(values[kk] == '' ? window.top.unknown : values[kk]);
                    arrayValue.push({ name: legendList.join('©'), y: totalPrice });
                    legendList.pop();
                }
                legendList.pop();
            }
            else {
                var filtered = json.filter(function (item) { return (item[series[indexfield]] == grouping[ii]); });
                var array = filtered.map(function (d) { return d[series[indexfield + 1]]; });
                var pack = $.grep(array, function (item, index) {
                    return index == $.inArray(item, array);
                });
                //pack = arraySort(pack, seriesSort[indexfield + 1]);
                seriesGroupBy(pack, indexfield + 1, filtered);
                legendList.pop();
            }
        }
    }
    function valuesGroupBy(json) {
        for (var kk = 0; kk < values.length; kk++) {
            var totalPrice = json.reduce(function (sum, item) {
                return sum + item[values[kk]];
            }, 0);
            arrayValue.push({ name: (values[kk] == '' ? window.top.unknown : values[kk]), y: totalPrice });
        }
    }
    var categories = [];
    if (strParams && strParams != '') {
        var array = strParams.split(',');
        for (var ii = 0; ii < array.length; ii++) {
            if (array[ii] != '') {
                categories.push(strColTitles.split(',').filter(function (item) { return (item.split('=')[0] == array[ii]); }).join(',').split('=')[1]);
            }
        }
    }
    var series = [];
    if (strSeries && strSeries != '') {
        var array = strSeries.split(',');
        for (var ii = 0; ii < array.length; ii++) {
            if (array[ii] != '') {
                series.push(strColTitles.split(',').filter(function (item) { return (item.split('=')[0] == array[ii]); }).join(',').split('=')[1]);
            }
        }
    }
    var values = [];
    if (strValues && strValues != '') {
        var array = strValues.split(',');
        for (var ii = 0; ii < array.length; ii++) {
            if (array[ii] != '') {
                values.push(strColTitles.split(',').filter(function (item) { return (item.split('=')[0] == array[ii]); }).join(',').split('=')[1]);
            }
        }
    }
    var types = strTypes.split(',').filter(function (item) { return (item != ''); });
    var groubedX;
    if (categories.length > 0) {
        var array = json.map(function (d) { return d[categories[0]]; });
        groubedX = $.grep(array, function (item, index) {
            return index == $.inArray(item, array);
        });
    }
    else {
        groubedX = [];
    }
    var groubedSeries;
    if (series.length > 0) {
        var array = json.map(function (d) { return d[series[0]]; });
        groubedSeries = $.grep(array, function (item, index) {
            return index == $.inArray(item, array);
        });
    }
    else {
        groubedSeries = [];
    }
    var legendList = new Array();
    var arrayValue = new Array();
    var categoryGroupCount = 0;
    var resultCategories = '';
    if (groubedX.length > 0) {
        ////////sorts
        if (sortChartType == 1)
            groubedX = arraySort(groubedX, sortChartDirection);
        else if (sortChartType == 2)
            groubedX = jsonSortByValue(groubedX, 0, json, categories, values, sortChartDirection);
        //////////
        categoriesGroyupBy(groubedX, 0, json);
    }
    if (resultCategories != '')
        resultCategories = 'categories:[' + resultCategories.substr(0, resultCategories.length - 1) + ']';
    else
        resultCategories = 'categories:[]';
    var options = {
        title: {
            text: reportTitle,
            useHTML: true
            , style: {
                fontSize: '14pt',
                fontFamily: 'seyagh',
                direction: 'rtl'
            },
        }, xAxis: {
            min: 0,
            max: 0,
            scrollbar: {
                enabled: false
            },
            labels: {
                //autoRotation: [0, 90],
                //rotation: 90,
                useHTML: true,
                style: {
                    fontSize: '9pt',
                    fontFamily: 'seyagh',
                    direction: 'rtl',
                },
                formatter: function () {
                    return this.value.toString().length > 25 ? this.value.toString().substring(0, 23) + '...' : this.value.toString();
                }
            }

        }
        , yAxis: {
            title: {
                text: window.top.amounts + ' (' + window.top.million + ')'
            },
            labels: {
                useHTML: true,
                formatter: function () {
                    return numberWithCommas(this.value, 2);
                }
            },
            minorTickInterval: 'auto',
            minorTickWidth: 1,
            minorTickLength: 10,
            minorTickPosition: 'inside',
            minorTickColor: '#666',

            tickPixelInterval: 30,
            tickWidth: 2,
            tickPosition: 'inside',
            tickLength: 10,
            tickColor: '#666'
        },
        plotOptions: {
            column: {
            },
            bar: {
            },
            pie: {
                allowPointSelect: true,
                cursor: 'pointer',
                dataLabels: {
                    enabled: true,
                    useHTML: true,
                    rtl: true,
                    format: '<div style="direction: rtl;"><b>{point.name}</b>: <span style="display:inline-block;direction: ltr;"> {point.percentage:.1f} % </span>',
                },
                showInLegend: true
            }
        },
        tooltip: {
            useHTML: true,
            style: {
                fontSize: '8pt',
                fontFamily: 'seyagh',
                direction: 'rtl'
            }
        }, legend: {
            layout: 'vertical',
            align: 'right',
            verticalAlign: 'top',
            itemMarginTop: 10,
            floating: false,
            useHTML: true,
            rtl: true,
            labelFormatter:
                function () {
                    return '<span style="display:inline-block;direction:rtl;font-weight: 100;text-align:right;width:' + legendWidth + 'px;overflow:hidden;text-overflow:ellipsis;" title="' + this.name.toString() + '">' + this.name.toString() + '</span>';
                },
            backgroundColor: '#FFFFFF'
        },
        pane: {
            startAngle: -150,
            endAngle: 150,
            background: [{
                backgroundColor: {
                    linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
                    stops: [
                        [0, '#FFF'],
                        [1, '#333']
                    ]
                },
                borderWidth: 0,
                outerRadius: '109%'
            }, {
                backgroundColor: {
                    linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
                    stops: [
                        [0, '#333'],
                        [1, '#FFF']
                    ]
                },
                borderWidth: 1,
                outerRadius: '107%'
            }, {
                // default background
            }, {
                backgroundColor: '#DDD',
                borderWidth: 0,
                outerRadius: '105%',
                innerRadius: '103%'
            }]
        }
    };
    Highcharts.setOptions({
        lang: {
            decimalPoint: ',',
            thousandsSep: ','
        },
        chart: {
            style: {
                fontFamily: 'seyagh',
                fontSize: '8pt'
            }
        },
        colors: ['#1f6fa1', '#e53935', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4']
    });
    if (chartType.split('|').length == 2 && chartType.split('|')[1] == 'stack') {
        if (chartType.split('|')[0] == 'column')
            options.plotOptions.column.stacking = 'normal';
        else if (chartType.split('|')[0] == 'bar')
            options.plotOptions.bar.stacking = 'normal';
    }
    options.chart = new Object();
    options.chart.renderTo = renderTo;
    options.chart.description = 'gheyas';
    options.chart.zoomType = 'none';
    options.chart.panning = true;
    options.chart.panKey = 'shift';
    options.chart.type = chartType.split('|')[0];
    if (options.chart.type == 'pie') {
        options.tooltip.pointFormat = '<b>{point.percentage:.1f}%</b>';
    }
    else {
        if (options.chart.type == 'gauge') {
            options.chart.plotBackgroundColor = null;
            options.chart.plotBackgroundImage = null;
            options.chart.plotBorderWidth = 0;
            options.chart.plotShadow = false;

            options.yAxis.labels.step = 2;
            options.yAxis.labels.rotation = 'auto';

            options.yAxis.min = 0;
            options.yAxis.max = 400;

            options.yAxis.plotBands = [{
                from: 0,
                to: 120,
                color: '#55BF3B' // green
            }, {
                from: 120,
                to: 160,
                color: '#DDDF0D' // yellow
            }, {
                from: 160,
                to: 200,
                color: '#DF5353' // red
            }];

        }
        else {
            options.tooltip.formatter = function () {
                return '<span>' + this.series.name + '</span><br/><br/><b>' + this.x +
                    ': ' + numberWithCommas(this.y, 2) + ' (' + window.top.million + ')' + '</b>';
            }
        }
    }
    options.xAxis.categories = JSON.parse(JSON.stringify(eval(resultCategories)));
    options.xAxis.min = 0;
    options.xAxis.max = categoryGroupCount - 1;
    options.xAxis.scrollbar.enabled = (categoryGroupCount > 12 ? true : false);
    options.series = new Array();
    var names = arrayValue.map(function (d) { return d['name']; });
    names = $.grep(names, function (item, index) {
        return index == $.inArray(item, names);
    });

    if (options.chart.type != 'pie' && options.chart.type != 'gauge') {
        for (var ii = 0; ii < names.length; ii++) {
            var filtered = arrayValue.filter(function (item) { return (item['name'] == names[ii]); });
            var data = filtered.map(function (d) { return d['y']; });
            var arr = names[ii].split('©');
            for (var jj = 0; jj < values.length; jj++)
                arr.pop();
            if (series.length > 0)
                arr.pop();
            var stack = '';
            if (arr.length > 0)
                stack = arr.join('©');
            names[ii] = names[ii].replace(/©/g, ",");
            options.series.push({
                name: names[ii],
                data: data,
                stack: stack
            });
        }
    }
    else {
        if (options.chart.type == 'pie') {
            options.series.push({
                data: json
            });
        }
        else {
            options.series.push({
                data: [parseFloat(json[0][strValues])],
                dataLabels: {
                    enabled: true,
                    useHTML: true,
                    borderWidth: 0,
                    style: {
                        fontWeight: 'bold',
                        fontSize: '22px'
                    },
                    format: '<span style="display:inline-block;margin-top:10px;"> {point.y} </span>'
                }
            });
        }
    }
    var chart = Highcharts.chart(options);
    var parameters = '';
    if (strParams && strParams != '')
        parameters += strParams.split(',').filter(function (item) { return (item != ''); }).join(',');
    parameters += "©";
    if (strSeries && strSeries != '')
        parameters += strSeries.split(',').filter(function (item) { return (item != ''); }).join(',');
    parameters += "©";
    if (strValues && strValues != '')
        parameters += strValues.split(',').filter(function (item) { return (item != ''); }).join(',');

    parameters += "©";
    parameters += types.join(',');
    parameters += "©";
    parameters += chartType;
    parameters += "©";
    parameters += sortChartType + "|" + sortChartDirection;
    return { chart: chart, result: parameters };
}
function getUserImage(userCode) {
    ajax({
        url: "GeneralApi/GetUserImage",
        data: { code: userCode },
        success: function (result) {
            if (result) {
                $("#UserImg").attr("src", "data:image/jpg;base64," + result);
                $("#imgPerson").attr("src", "data:image/jpg;base64," + result);
            }
        }
    });
}
function getAlarmList(userCode) {
    ajax({
        url: "GeneralApi/GetAlarmList",
        data: { code: userCode },
        success: function (result) {
            if (result.length > 0)
                $("#NoAlarm").hide();
            var pinnedList = result.filter(x => !x.IsSaw || x.IsPinned);
            if (pinnedList.length > 0) {
                $("#lblNotify").addClass("notice notice-fill").text(pinnedList.length);
            }
            var sawList = result.filter(x => !x.IsSaw);
            if (sawList.length > 0) {
                $("#lblNotify").attr("data-id", sawList.map(x => x.Code).join(","));
            }
            result.forEach(function (item) {
                var div = $(".alarm-container").clone().removeAttr("hidden").removeClass("alarm-container");
                div.find("[data-id='DateSarResid']").text(item.DateSarResid);
                div.find("[data-id='Name']").text(item.Name);
                div.find("[data-id='Color']").attr("style", "width: 20px; height: 21px; fill:#" + item.Color);
                div.find(".img-flag").attr("data-code", item.Code);

                if (item.AlarmType === 3) {
                    var info = item.KeyValues.split("|");
                    div.attr("data-alarm", "ticket");
                    div.find("[data-id='Title']").css({ "cursor": "pointer" }).text(item.Name);
                    div.find("[data-id='DateSarResid']").text(info[2]);
                    div.find("[data-id='Name']").text(window.top.ticketReply + " : " + info[1]).css({ "font-weight": "700" });
                    div.find("[data-id='Img']>img").attr("src", baseUrl + "img/ticket.svg");
                }
                if (item.IsPinned)
                    div.find(".img-flag").parent().addClass("pined");
                $("#divAlarmContainer").append(div);
            });
        }
    });
}
function sendToAllMessage(message) {
    if (message && message.trim())
        notificationHub.invoke("SendToAllMessage", message).catch(err => console.error(err.toString()));
}
function sendToPos(price, posKey, modalId,bankCode,posType) {
    if (price && posKey)
        notificationHub.invoke("SendToPos", price, posKey, modalId, bankCode, posType).catch(err => console.error(err.toString()));
}
function registerHubClientMethods() {
    notificationHub.on("ReceiveMessage", function (message) {
        openInModal('', 'Home/ListenAnnouncement?msg='+message, '',500,268);
    });
    notificationHub.on("ReceivePosResult", function (result) {
        if (result) {
            var errorText = "";
            switch (Number(result["posType"])) {
                case posType.mellat:
                    errorText = ErrorCodeTextMellat(Number(result.returnCode));
                    break;
                case posType.iranKish:
                    errorText = ErrorCodeTextIranKish(Number(result.returnCode));
                    break;
                default:
                    errorText = "";
                    break;
            }
            result["returnText"] = errorText;
            if (result["approve"].toLowerCase() == "ok") {
                $("#" + result.modalId + " iframe").contents().find("#txtCodePeygiriPos").val(result.traceNumber);
                $("#" + result.modalId + " iframe").contents().find("#lblErrorPos").css("color", "green").text(" عملیات با موفقیت انجام شد " + result.serialTransaction);
                $("#" + result.modalId + " iframe")[0].contentWindow.savePos();
            }
            else {
                $("#" + result.modalId + " iframe").contents().find("#txtCodePeygiriPos").text("");
                $("#" + result.modalId + " iframe").contents().find("#lblErrorPos").css("color", "red").text(" خطا در ثبت تراکنش بانکی : " + result["returnText"]);
            }
            $("#" + result.modalId + " iframe").contents().find("#btnSendToPos").prop("disabled", false);
            ajax({
                url: "SaleApi/SaveLogPos",
                data: result
            });
        }
        else {
            $("#" + result.modalId + " iframe").contents().find("#lblErrorPos").text("");
            $("#" + result.modalId + " iframe").contents().find("#btnSendToPos").prop("disabled", false);
        }
    });
    notificationHub.on("PosDisconnected", function (modalId) {
        $("#" + modalId + " iframe").contents().find("#btnSendToPos").prop("disabled", false);
        $("#" + modalId + " iframe").contents().find("#lblErrorPos").text(window.top.runPosService);
    });
}
function ErrorCodeTextMellat(errcode) {
    switch (errcode) {
        case 101: return 'سایز پیام دریافتی از پوز نامعتبر است ';
        case 102: return 'پیام دریافتی از پی سی نامعتبر است)سایز پیام، نوع تراکنش(';
        case 103: return ' نوع تراکنش دریافتی از پوز در پاسخ نامعتبر است ';
        case 104: return ' مبلغ وارد شده یا مبلغ دریافتی از پوز در پاسخ نامعتبر است ';
        case 105: return 'است نامعتبر شده وارد پرداخت شناسه ';
        case 106: return 'Timeout انتظار برای دریافت پاسخ ار پوز در پورت سریال نامعتبر است  timeoutباید بین 2000ms و 600000ms باشد ';
        case 107: return 'زمان انتظار برای دریافت داده ها از پوز در پورت سریال به پایان رسید ';
        case 108: return 'تراکنش ناموفق: پاسخی از سرور دریافت نشد)زمان انتظار به پایان رسیده است یا اتصال ناموفق بوده( ';
        case 109: return 'تراکنش ناموفق: موجودی کافی نیست';
        case 110: return 'تراکنش ناموفق: خطای پرینتر ';
        case 111: return 'ارتباط خطای: ناموفق تراکنش ';
        case 112: return 'تراکنش ناموفق: خطا در ارسال تسویه، ریورسال یا ایجاد تراکنش';
        case 113: return 'نام پورت سریال وارد شده نامعتبر است ';
        case 114: return 'تراکنش ناموفق: توسط کاربر کنسل شد ';
        case 115: return 'است نامعتبر شده وارد قبض شناسه ';
        case 116: return ' شناسه پرداخت وارد شده نامعتبر است ';
        case 117: return 'سریال پورت بازکردن در خطا ';
        case 118: return 'خطای امنیتی: خطا در ارسال اطالعات Failed روی پورت سریال ';
        case 119: return 'پورت انتخاب شده، پورت سریال نمیباشد';
        case 120: return 'یک یا چند مشخصه پورت سریال نامعتبر است';
        case 121: return 'آرگومان های متد نامعتبر است: نام پورت سریال نامعتبر است';
        case 122: return ' خطا در ارسال اطالعات روی پوز: ورودیاست Null ';
        case 123: return 'خطای پایان زمان در ارسال اطالعاتروی پورت سریال';
        case 124: return 'است نشده کشیده پوز روی کارت ';
        case 125: return 'است نامعتبر حساب شناسه ';
        case 126: return 'شناسه حساب دریافتی از pc برای تراکنش پرداخت نامعتبر است ';
        case 127: return 'شناسه حساب دریافتی از پوز برای تراکنش پرداخت نامعتبر است ';
        case 128: return 'است نامعتبر pc از دریافتی مبلغ ';
        case 129: return 'شماره پیگیری دریافتی از پوز نامعتبراست ';
        case 130: return 'است نامعتبر pc از دریافتی قبض شناسه ';
        case 131: return 'نامعتبر pc از دریافتی پرداخت شناسه ';
        case 132: return 'داده های اضافی دریافتی از pc نامعتبر  است ';
        case 133: return ' مبلغ کل دریافتی از پی سی در تراکنش پرداخت چندوجهی نامعتبر است ';
        case 134: return 'نشد تایید pc از دریافتی های داده ';
        case 161: return 'داده های پرداخت چندوجهی نامعتبر است)حداکثر 01 رکورد(';
        case 162: return 'مبلغ وارد شده در پرداخت چندحسابی نامعتبر است ';
        case 163: return ' شماره پیگیری وارد شده نامعتبر است';
        case 164: return 'داده های رسیده به پوز یا پی سینامعتبر است.)خطای CRC) ';
        case 165: return 'نوع اتصال وارد شده نامعتبر است.) tcp/ip یا Serial (';
        case 166: return 'پورت بستر ip/tcp وارد شده نامعتبر';
        case 167: return ' timeout وارد شده برای دریافت اطالعات از پوز روی بستر ip/tcp نامعتبر است ) Min = 2000 ms Max = 600000 ms )';
        case 168: return ' خطا در ساخت سوکت روی بستر tcp/ip';
        case 169: return 'خطا در ارسال اطالعات از پوز روی بستر tcp/ip ';
        case 170: return 'خطا در دریافت اطالعات از پوز روی tcp/ip بستر';
        case 171: return ' خطا در فرمت پیام پذیرنده SSAGE ';
        case 172: return 'ارسال برای اطالعات سازی آماده در خطا ';
        case 173: return 'پوز از اطالعات دریافت در خطا ';
        case 174: return 'خطا در دریافت اطالعات از پوز)دریافت)NULL';
        case 175: return 'CRC محاسبه در خطا';
        case 176: return 'داده های اضافی پذیرنده نامعتبر است';
    }
    return '';
}
function ErrorCodeTextIranKish(errcode) {
    switch (errcode) {
        case 1: return 'صادر کننده تراکنش را مردود اعالم کرد ';
        case 2: return 'تراکنش قبلا REVERSE شده است(در پاسخ به REVERSE )';
        case 3: return 'پذیرنده کارت شناخته شده نیست.باید عمل بازکردن فروشگاه را انجام دهید';
        case 5: return 'برای سیستم کارت اعتباری یعنی حساب متعلق به کارت معوق می باشد و برای سایر سیستم ها به معنای خطای داخلی سیستم کارت می باشد';
        case 6: return 'اشکال در سیستم مرکز';
        case 9: return 'ترافیک Queue داخلی سیستم کارت';
        case 12: return 'پیام نادرست است';
        case 13: return 'مبلغ تراکنش صحیح نیست';
        case 14: return 'شماره کارت شناخته شده نیست';
        case 15: return 'در پاسخ به تراکنش باز کردن فروشگاه :قبلا باز شده است';
        case 16: return 'در پاسخ به تراکنش بستن فروشگاه :قبلا بسته شده است';
        case 19: return 'در پاسخ به تراکنش تراز تجاری پایانه:مجموع تراکنشهای پایانه با مجموع  تراکنشهای مرکز برابر نیست';
        case 24: return 'در پاسخ به تراکنش پایان روز: عملیات انجام نشد. باید تراکنش دوباره تکرار گردد';
        case 25: return 'داده ارسالی غلط است واین داده در مرکز پیدا نشد';
        case 29: return 'در پاسخ به تراکنش پایان روز: عملیات پایان روز انجام نشده. الزم است پیگیری شود';
        case 30: return 'فرمت اشتباه است';
        case 31: return 'کد موسسه پذیرنده کارت نامعتبر است';
        case 33: return 'تاریخ انقضای کارت سپری شده است';
        case 34: return 'تراکنش مالی تایید نشده است(در پاسخ به SERVER )';
        case 38: return 'تعداد رمز غلط وارد شده از حد مجاز گذشته است';
        case 41: return 'مسدود شدن کارت';
        case 43: return 'کارت به علت دزدیده شدن دائماًمسدود است';
        case 51: return 'کمبود وجه کارت فاقد موجودی کافی جهت انجام تراکنش مالی است';
        case 52: return 'کارت حساب جاری ندارد ( در شتاب) - ولی به بانک صادر کننده کارت هم بستگی دارد';
        case 53: return 'امنیت شعبه نقض شده است';
        case 55: return 'رمز نامعتبر';
        case 56: return 'کارت نامعتبر(کارت تعریف نشده یا داده کارت غلط است)';
        case 57: return 'تراکنش غیر مجاز';
        case 58: return 'امنیت تراکنش نقض شده است';
        case 60: return 'در پاسخ به تراکنش لیست سیاه یا پایان روز: لیست در مرکز حاضر نیست';
        case 61: return 'مبلغ تراکنشهای مربوط به این کارت از حد مجاز گذشته است';
        case 62: return 'مبلغ تراکنشهای روز مربوط به به این کارت از حد مجاز گذشته است';
        case 63: return ' MAC صحیح نمی باشد';
        case 64: return 'در پاسخ به تراکنش پایان روز: تراکنش ارسال شده صحیح نیست';
        case 65: return 'تعداد تراکنش های مربوط به این کارت از حد مجاز گذشته است';
        case 66: return 'حساب مسدود است';
        case 68: return 'مانده کارت صحیح نیست (مقدار مبلغ کارت هوشمند با مقدار آن در مرکز مغایر است)';
        case 70: return 'در پاسخ به تراکنش پایان روز:تراز صحیح نیست و لیست سیاه در مرکز حاضر نیست';
        case 71: return 'در پاسخ به تراکنش پایان روز: تراکنش ارسال شده صحیح نیست ولیست سیاه در  مرکز حاضر نیست';
        case 75: return 'تعدادرمز نامعتبر از حد مجاز گذشته است';
        case 76: return 'مبلغ مبادله شده نامعتبر است';
        case 77: return 'روز مالی صحیح نیست(در تراکنش شتابی)';
        case 78: return 'کارت فعال نیست';
        case 79: return 'حساب تعریف نشده است';
        case 80: return 'به دلیل اشکال در حساب تراکنش پذیرفته نیست';
        case 81: return 'کارت قبلا باطل شده است';
        case 83: return 'سیستم مرکزی آماده نیست';
        case 84: return 'سیستم مرکزی فعال نیست';
        case 85: return 'خطای درونی سیستم مرکزی';
        case 86: return 'تراکنش روی این دستگاه مجاز نیست';
        case 87: return 'کد رمز صحیح Sync نشده است';
        case 88: return 'خطای درونی سیستم مرکزی';
        case 89: return 'خطای درونی سیستم مرکزی';
        case 90: return 'سیستم مرکزی در عملیات پایان روز است';
        case 91: return 'عدم دریافت پاسخ به علت وقوع TIMEOUTدر مرکزو اعالم آن توسط مرکز به دستگاه';
        case 92: return 'صارد کننده نامعتبر است';
        case 93: return 'به علت تراکنش ها صف تراکنشها در سیستم پر شده است';
        case 94: return 'شماره تراکنش تکراری است';
        case 96: return 'اشکال در سیستم مرکز';
        case 204: return 'انصراف عملیات';
        case 202: return 'کدپذیرنده نامعتبر می باشد.';
        case -998: return 'خطا در ارتباط با دستگاه.';
    }
    return '';
}

