﻿AGBB.Filter =
{
    Url: '/DesktopModules/AG.StockGeneralInformation/App/Filter.htm',
    Data: { id: '0', innerCriteriaField: 'innerCriteriaField', innerOperatorField: 'innerOperatorField', innerOperatorField: 'innerOperatorField', innerValue: 'innerValue', innerCompare: 'innerCompare', content: { id: ['ClosePrice', 'SoLuongCoPhieuNiemYet', 'SoLuongCoPhieuLuuHanh', 'VonHoa', 'CoTuc', 'ROE', 'ROA', 'EPS', 'PE', 'GiaTriSoSach', 'PB', 'SoHuuNuocNgoai', 'KeHoachLoiNhuan', 'KLMBR'], text: ['Giá', 'Số lượng cổ phiếu niêm yết', 'Số lượng cổ phiếu lưu hành', 'Vốn hóa thị trương', 'Cổ tức', 'ROE', 'ROA', 'EPS', 'P/E', 'Giá trị sổ sách', 'P/B', 'Sở hữu nước ngoài', '% thực hiện kế hoạch lợi nhuận', 'KL mua-bán ròng NDTNN']} },
    content: 'myDiv',
    innerListValue: 'innerListValue',
    theValue: 'theValue',
    innerCriteriaField: 'innerCriteriaField',
    innerOperatorField: 'innerOperatorField',
    innerValue: 'innerValue',
    innerCompare: 'innerCompare',
    arrCompare: '',
    setFormData: function(data) {
        this.Data = data;
    },
    setIdData: function(id) {
        this.Data.id = id;
    },
    addEvent: function() {
        var ni = $('#' + this.content);
        var num = $('#' + this.theValue).val();
        //parse num thanh so co he co so 10.
        num = parseInt(num, 10) + 1;
        $('#' + this.theValue).val(num);
        this.setIdData(num);
        ni.append(AGBB.template(this.Url, this.Data));
        this.arrCompare = this.arrCompare + ',' + num;
    },
    removeEvent: function(divNum) {
        var d = document.getElementById(this.content);
        var olddiv = document.getElementById(divNum);
        d.removeChild(olddiv);
        this.arrCompare = this.arrCompare.replace(',' + divNum, '');
    },
    doChange: function(currentid, value, id) {
        if (value == "+") {
            //Change value to -
            $('#' + currentid).val("-");
            //Add new element to div
            this.addEvent();
        } else { //case value = -: Remove button
            //Remove exist element.
            this.removeEvent(id);
        }
    },
    filter: function() {
        var arrIndex = this.arrCompare.split(',');
        var strFilter = '';
        $.each(arrIndex, function() {
            if (this != '') {
                var that = AGBB.Filter;
                var criteria = document.getElementById(that.innerCriteriaField + "_" + this);
                var criteriaChoosen = criteria.options[criteria.selectedIndex].value;
                var OperatorField = document.getElementById(that.innerOperatorField + "_" + this);
                var OperatorFieldChoosen = OperatorField.options[OperatorField.selectedIndex].value;
                var innerValue = document.getElementById(that.innerValue + "_" + this);
                var innerValueChoosen = innerValue.value;
                var innerCompare = document.getElementById(that.innerCompare + "_" + this);
                var innerCompareChoosen = innerCompare.options[innerCompare.selectedIndex].value;
                if (criteriaChoosen != '' && criteriaChoosen != '' && OperatorFieldChoosen != '' && innerValueChoosen != '' && innerCompareChoosen != '')
                    strFilter += criteriaChoosen + '*' + OperatorFieldChoosen + '*' + innerValueChoosen + '*' + innerCompareChoosen + '|||';
            }
        }
        );
        return strFilter;
    },
    init: function() {
        this.addEvent();
    }

};
AGBB.AppGeneralInfomation = AGBB.extend
(
    {
        /* tham so tong quat*/
        tdHead: 'tdGeneralInfomationHead_',
        tdBody: 'bodyGeneralInfomationData',
        path: "/DesktopModules/AG.StockGeneralInformation/",
        content: "divGeneralInfomationContent",
        contentPage: 'divGeneralInfomationPage',
        /* ket thuc tham so tong qua*/
        /* tham so cho bang*/
        // Du lieu json chua cac cot
        jsonTableHeader: "",
        // Co cot
        iCountColume: 0,
        // Du lieu text chua content table
        tableData: "",
        // mang chua du lieu cua table
        arrayTableData: "",
        // Tong so phan tu
        iTotalItems: 0,
        // So phan tu trong trang
        iCountItemInPage: 30,
        // So trang
        iNumberPage: 0,
        // iFrom
        iFrom: 0,
        // iTo
        iTo: 19,
        iCurrentPage: 1,
        //Truong xap xep
        iSort: 0,
        //Kieu sap xep
        typeSort: "asc",
        //Chuoi filter
        strFilter: "",
        arrIndex: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
        arrIndexClass: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
        arrIndexFormatNumber: [-1, -1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 0],
        /* ket thuc tham so cho bang*/
        nameClass: "",
        pathData: '/Handler/GetGeneralInfomation.ashx?',
        getPathData: function() {
            return this.pathData;
        },
        // Index gia tri so voi datasource
        loader: $('<div id="loader"><img src="/DesktopModules/AG.StockStatistics/loading.gif" alt="loading..." /></div>').css({ position: "absolute", top: "4em", left: "4em" }),
        loadPage: function() {
            $('#divIncludeJS').append('<div id="loader"><img src="' + this.path + 'loading.gif" alt="loading..." /></div>');
            this.loader = $('#loader');
            this.loader.css({ position: "absolute", top: "40em", left: "60em" });
            this.loader.show();
        },
        /*Xu ly bang*/
        refresh: function() {
            location.reload();
        },
        refreshPage: function() {
        },
        loadDataTable: function(url) {
            AGBB.loadDataJs(this.path + this.getPathData() + url, "AGBB.AppGeneralInfomation.processData();");
        },
        processData: function() {
            try {
                this.iCountColume = this.jsonTableHeader.length;
                this.arrayTableData = this.tableData.split('|');
                // Kiem tra neu khong co du lieu thi de ra thong bao khong co du lieu
                this.iTotalItems = parseInt(this.arrayTableData.length / this.iCountColume);
                this.iNumberPage = parseInt((this.iTotalItems - 1) / this.iCountItemInPage) + 1;
                this.gotoPage(this.iCurrentPage);

            }
            catch (err) {
                //alert('Không tìm thấy dữ liệu');
            }
            this.loader.hide();
            // alert(AGBB.AppStockStatistics.loader);
        },
        writePage: function() {
            if (this.iNumberPage > 1) {
                $('#' + this.contentPage).show();
                var strOutHtml = PagingUtils.DrawPaging(this.iCurrentPage,this.iCountItemInPage,this.iTotalItems, "AGBB.AppGeneralInfomation.gotoPage(");
                $('#' + this.contentPage).html(strOutHtml);            
            }
            else
                $('#' + this.contentPage).hide();
        },
        writeData: function(iFrom, iTo) {
            var strOutHtml = '';
            for (var i = iFrom; i < iTo; i++) {
                var iStart = i * this.iCountColume;
                strOutHtml += "<tr";
                if (i % 2) {
                    strOutHtml += " class='trSeperate'";
                }
                strOutHtml += ">";
                for (var j = 0; j < this.arrIndex.length; j++) {
                    if (this.arrIndex[j] == -1)
                        strOutHtml += "<td style='text-align:center; border:solid 1px red' class='" + this.arrIndexClass[j] + "' >" + (i + 1) + "</td>";
                    else if (j == this.iLink) {
                        strOutHtml += "<td  style='text-align:center;font-weight: bolder;' class='" + this.arrIndexClass[j] + "' onclick=`      LinkToPageBySymbol('" + this.arrayTableData[iStart + this.arrIndex[j]] + "'); ><a href='#' class=                                           'linkSymbol'>" + this.arrayTableData[iStart + this.arrIndex[j]] + "</span></td>";
                    }
                    else {
                        //
                        if (j == 0 || j == 1)
                            if (j == 0)
                            strOutHtml += "<td class='" + this.arrIndexClass[j] + "'>" + this.arrayTableData[iStart + this.arrIndex[j]] + "</td>";
                        else
                            strOutHtml += "<td style=\"font-weight: bolder; text-align:center; \" class='" + this.arrIndexClass[j] + "'>" + this.arrayTableData[iStart + this.arrIndex[j]] + "</td>";
                        else {
                            if (j == 2) {
                                var gia = parseFloat(this.arrayTableData[iStart + this.arrIndex[j]]) / 1000; // gia tinh theo nghin dong
                                if (gia != 0) strOutHtml += "<td class='" + this.arrIndexClass[j] + "'>" + formatNumber_input_decimal_format(gia, 1) + "</td>";
                                else strOutHtml += "<td class='" + this.arrIndexClass[j] + "'>&nbsp;</td>";
                            }
                            else if (j == 5) {
                                var vonhoathitruong = parseFloat(this.arrayTableData[iStart + this.arrIndex[j]]); // gia tinh theo ty dong
                                //  alert(vonhoathitruong);
                                if (vonhoathitruong != 0) strOutHtml += "<td class='" + this.arrIndexClass[j] + "'>" + formatNumber_input_decimal_format(vonhoathitruong, 3) + "</td>";
                                else strOutHtml += "<td class='" + this.arrIndexClass[j] + "'>&nbsp;</td>";
                            }
                            else if (j == 13) {
                                var SohuuNN = parseFloat(this.arrayTableData[iStart + this.arrIndex[j]]); // Tinh theo don vi 1 CP
                                strOutHtml += "<td class='" + this.arrIndexClass[j] + "'>" + formatNumber_input_decimal_format(SohuuNN, 2) + "</td>";

                            } else if (j == 11) {
                                 var GiatrisoSach = parseFloat(this.arrayTableData[iStart + this.arrIndex[j]]);
                                 strOutHtml += "<td class='" + this.arrIndexClass[j] + "'>" + formatNumber_input_decimal_format(GiatrisoSach, 0) + "</td>";
                             }
                             else if (j == 9) {
                                 var EPS = parseFloat(this.arrayTableData[iStart + this.arrIndex[j]]);
                                 strOutHtml += "<td class='" + this.arrIndexClass[j] + "'>" + formatNumber_input_decimal_format(EPS, 0) + "</td>";
                             }
                            else {
                                if (parseFloat(this.arrayTableData[iStart + this.arrIndex[j]]) != 0 && this.arrayTableData[iStart + this.arrIndex[j]] != '') strOutHtml += "<td class='" + this.arrIndexClass[j] + "'>" + formatNumber_input_decimal_format(this.arrayTableData[iStart + this.arrIndex[j]], this.arrIndexFormatNumber[j]) + "</td>";
                                else strOutHtml += "<td class='" + this.arrIndexClass[j] + "'>&nbsp;</td>";
                            }
                        }
                    }
                }

                strOutHtml += "</tr>";
            }
            if (strOutHtml == '')
                strOutHtml = 'No Data Found';
            $('#' + this.tdBody).html(strOutHtml);
        },
        gotoPage: function(i) {
            //alert(i);
            this.iCurrentPage = i;
            this.iFrom = (i - 1) * this.iCountItemInPage;
            this.iTo = i * this.iCountItemInPage;
            if (this.iTo > this.iTotalItems)
                this.iTo = this.iTotalItems;
            this.writeData(this.iFrom, this.iTo);
            this.writePage();
        },
        sort: function(int_field, type_sort) {
            var nameSort = this.jsonTableHeader[this.arrIndex[int_field]];
            var strFilter = AGBB.Filter.filter();
            //alert(that.jsonTableHeader[that.arrIndex[iIndexSort]]);
            this.loadDataTable("&nameSort=" + nameSort + "&typeSort=" + type_sort + "&filter=" + strFilter);
        },
        filter: function() {
            var strFilter = AGBB.Filter.filter();
            if (strFilter != '')
                this.loadDataTable("&filter=" + strFilter);
        },
        /*Ket thuc xu ly bag*/
        /* Xu ly phan trang*/
        // Lay ra phan trang
        getFirstPage: function(iCurentPage, nameFunction) {
            var strOutPage = '';
            strOutPage += '<td style="cursor:pointer;padding:0;border:solid 0px" align="center" onclick="' + nameFunction + '(1);"><img style="padding:0 5 0 5" border="0" src="/DesktopModules/AG.StockStatistics/Css/images/first.gif"/></td>';
            strOutPage += '<td style="cursor:pointer;padding:0;border:solid 0px" align="center" onclick="' + nameFunction + '(' + (iCurentPage - 1) + ');"><img style="padding:0 5 0 5" border="0" src="/DesktopModules/AG.StockStatistics/Css/images/back.gif"/></td>';
            return strOutPage;
        },
        getLastPage: function(iNumberPage, iCurentPage, nameFunction) {
            var strOutPage = '';
            strOutPage += '<td style="cursor:pointer; padding:0; border:solid 0px" align="center" onclick="' + nameFunction + '(' + (iCurentPage + 1) + ');"><img style="padding:0 5 0 5" border="0" src="/DesktopModules/AG.StockStatistics/Css/images/next.gif"/></td>';
            strOutPage += '<td style="cursor:pointer;padding:0;border:solid 0px" align="center" onclick="' + nameFunction + '(' + iNumberPage + ');"><img style="padding:0 5 0 5" border="0" src="/DesktopModules/AG.StockStatistics/Css/images/last.gif"/></td>';
            return strOutPage;
        },
        getDotPage: function(input) {
            var strOutPage = '';
            strOutPage += '<td align="center" >' + input + '</td>';
            return strOutPage;
        },
        getNormalPage: function(input, nameFunction) {
            var strOutPage = '';
            strOutPage += '<td  style="cursor:pointer;" align="center" onclick="' + nameFunction + '(' + input + ');">';
            strOutPage += input;
            strOutPage += '</td>';
            return strOutPage;
        },
        getNotActivePage: function(input) {
            var strOutPage = '';
            strOutPage += '<td align="center" style="background-color:#666;"><span class="pageCurrent" >';
            strOutPage += input;
            strOutPage += '</span></td>';
            return strOutPage;
        },
        GetHtmlPage: function(iNumberPage, iCurentPage, nameFunction) {
            var strOutPage = '';
            var iSelectPage = parseInt(selectPage, 10);
            strPage += PagingUtils.DrawPaging(iSelectPage, AGBB.DanhSachCongTyNiemYet.iItemPage, AGBB.DanhSachCongTyNiemYet.iTotalItem, 'AGBB.DanhSachCongTyNiemYet.displayPage(');
           
            $('#tbListedCompanies tr:even').css('background-color', 'FBFBFB');
            $('#tbListedCompanies tr:odd').css('background-color', 'F2F2F2');
            $('#CTNY_PhanTrang').html(strPage);
            strPage = null;
        },
        GetHtmlPageBB: function(iNumberPage, iCurentPage, nameFunction) {
            if (iNumberPage > 1) {
                var strOutPage = '';
                //strOutPage += '<div class="note">Đơn vị tính: KL niêm yết (CK); KLGD (CK) ; GTGD (Tỷ đồng) ; (*)Giá :Giá bình quân đợt 2 </div>';
                strOutPage += '<div class="divPage" style="padding-left:750px;"><table border="0" cellspacing="0" cellpadding="3" class="tablePaging">';
                strOutPage += '<tr>';
                if (iNumberPage > 11) {

                    /* Thiết lập các trạng thái của paging
                    1: Trạng thái bình thường lệch về bên trái
                    2: Trạng thái giữa
                    3: Trạng thái bên phải 
                    */
                    var bStatusPaging = 1;
                    if (iCurentPage < 7) {

                        bStatusPaging = 1;
                    }
                    else {
                        if (iCurentPage > iNumberPage - 6) {
                            bStatusPaging = 3;
                        }
                        else {
                            bStatusPaging = 2;
                        }
                    }
                    if (bStatusPaging == 1) {
                        if (iCurentPage != 1) {
                            strOutPage += this.getFirstPage(iCurentPage, nameFunction);
                        }
                        for (var i = 0; i < (iCurentPage + 2); i++) {
                            if (iCurentPage == (i + 1)) {
                                strOutPage += this.getNotActivePage('' + iCurentPage + '');
                            }
                            else {
                                var normalPage = '' + (i + 1) + '';
                                strOutPage += this.getNormalPage(normalPage, nameFunction);
                            }
                        }
                        //Dấu 3 chấm
                        strOutPage += this.getDotPage("...");
                        // Đoạn cuối
                        for (var i = iNumberPage - 3; i < iNumberPage; i++) {
                            var normalPage = '' + (i + 1) + '';
                            strOutPage += this.getNormalPage(normalPage, nameFunction);
                        }
                        // Kí tự thêm cuối
                        strOutPage += this.getLastPage(iNumberPage, iCurentPage, nameFunction);
                    }
                    if (bStatusPaging == 2) {
                        strOutPage += this.getFirstPage(iCurentPage, nameFunction);
                        for (var i = 0; i < 3; i++) {
                            var normalPage = '' + (i + 1) + '';
                            strOutPage += this.getNormalPage(normalPage, nameFunction);
                        }
                        //Dấu 3 chấm
                        strOutPage += this.getDotPage("...");
                        for (var i = iCurentPage - 3; i < iCurentPage + 2; i++) {
                            if (iCurentPage == (i + 1)) {
                                strOutPage += this.getNotActivePage('' + iCurentPage + '');
                            }
                            else {
                                var normalPage = '' + (i + 1) + '';
                                strOutPage += this.getNormalPage(normalPage, nameFunction);
                            }
                        }
                        //Dấu 3 chấm
                        strOutPage += this.getDotPage("...");
                        for (var i = iNumberPage - 3; i < iNumberPage; i++) {
                            var normalPage = '' + (i + 1) + '';
                            strOutPage += this.getNormalPage(normalPage, nameFunction);
                        }
                        // Kí tự thêm cuối
                        strOutPage += this.getLastPage(iNumberPage, iCurentPage, nameFunction);
                    }
                    if (bStatusPaging == 3) {
                        strOutPage += this.getFirstPage(iCurentPage, nameFunction);
                        for (var i = 0; i < 3; i++) {
                            var normalPage = '' + (i + 1) + '';
                            strOutPage += this.getNormalPage(normalPage, nameFunction);
                        }
                        //Dấu 3 chấm
                        strOutPage += this.getDotPage("...");

                        for (var i = iCurentPage - 3; i < iNumberPage; i++) {
                            if (iCurentPage == (i + 1)) {
                                strOutPage += this.getNotActivePage('' + iCurentPage + '');
                            }
                            else {
                                var normalPage = '' + (i + 1) + '';
                                strOutPage += this.getNormalPage(normalPage, nameFunction);
                            }
                        }
                        // Kí tự thêm cuối
                        strOutPage += this.getLastPage(iNumberPage, iCurentPage, nameFunction);
                    }
                }
                else {
                    for (var i = 0; i < iNumberPage; i++) {
                        if (iCurentPage == (i + 1)) {
                            strOutPage += this.getNotActivePage('' + iCurentPage + '');
                        }
                        else {
                            var normalPage = '' + (i + 1) + '';
                            strOutPage += this.getNormalPage(normalPage, nameFunction);
                        }
                    }
                }
                strOutPage += '</tr>';
                strOutPage += '</table></div>';
                return strOutPage;
            }
            else {
                return '';
            }
        },
        writeDataAll: function() {
            $('#' + this.contentPage).hide();
            var strOutHtml = '';
            for (var i = 0; i < this.iTotalItems; i++) {
                var iStart = i * this.iCountColume;
                strOutHtml += "<tr";
                if (i % 2) {
                    strOutHtml += " class='trSeperate'";
                }
                strOutHtml += ">";
                for (var j = 0; j < this.arrIndex.length; j++) {
                    if (this.arrIndex[j] == -1)
                        strOutHtml += "<td style='text-align:center;' class=' " + this.arrIndexClass[j] + "' >" + (i + 1) + "</td>";
                    else if (j == this.iLink) {
                        strOutHtml += "<td  style='text-align:center;font-weight:700;' class=' " + this.arrIndexClass[j] + "' onclick=LinkToPageBySymbol('" + this.arrayTableData[iStart + this.arrIndex[j]] + "'); ><a href='#' class='linkSymbol'>" + this.arrayTableData[iStart + this.arrIndex[j]] + "</span></td>";
                    }
                    else {
                        strOutHtml += "<td class=' " + this.arrIndexClass[j] + "'>" + this.arrayTableData[iStart + this.arrIndex[j]] + "</td>";
                    }
                }
                strOutHtml += "</tr>";
            }
            $('#' + this.tdBody).html(strOutHtml);
        },
        download: function(nameFile) {
            var strOutHtml = '<tHead>' + $('#headGeneralInfomation').html() + ' </tHead > ';
            for (var i = 0; i < this.iTotalItems; i++) {
                //for (var i = 0; i < 10; i++) {
                var iStart = i * this.iCountColume;
                strOutHtml += "<tr";
                if (i % 2) {
                    strOutHtml += " class='trSeperate'";
                }
                strOutHtml += ">";
                for (var j = 0; j < this.arrIndex.length; j++) {
                    if (this.arrIndex[j] == -1)
                        strOutHtml += "<td style='text-align:center;' class=' " + this.arrIndexClass[j] + "' >" + (i + 1) + "</td>";
                    else if (j == this.iLink) {
                        strOutHtml += "<td  style='text-align:center;font-weight:700;' class=' " + this.arrIndexClass[j] + "'>" + this.arrayTableData[iStart + this.arrIndex[j]] + "</td>";
                    }
                    else {
                        //
                        if (this.arrIndexFormatNumber[j] == '-1')
                            strOutHtml += "<td class='" + this.arrIndexClass[j] + "'>" + this.arrayTableData[iStart + this.arrIndex[j]] + "</td>";
                        else
                            strOutHtml += "<td class='" + this.arrIndexClass[j] + "'>" + formatNumber_input_decimal_format(this.arrayTableData[iStart + this.arrIndex[j]], this.arrIndexFormatNumber[j]) + "</td>";
                    }
                }
                strOutHtml += "</tr>";
            }
            //strOutHtml=$('#' + this.tdBody).html();
            //alert(strOutHtml);
            var urlCreateCache = '/DesktopModules/AG.StockStatistics/CreateCacheDownload.aspx';
            var urlDownload = '/DesktopModules/AG.StockStatistics/DownLoadStatistics.aspx';
            var nameFile = nameFile;
            //alert(AGBB.encode(strOutHtml));
            $.post(urlCreateCache,
                { data: strOutHtml, name: nameFile },
                function(data) {
                    document.location.href = urlDownload + '? &name=' + nameFile;
                }
        );
            //$.post(url, { data: "d", name: nameFile });
        },
        changeColor: function(value) {
            if (value == "0,00")
                return '#F7FF31';
            else if (value.indexOf("-") >= 0) {
                return '#F0323E';
            }
            else {
                return '#0D9945';
            }
        },

        init: function() {
            this.loadDataTable();
            AGBB.Filter.init();
        }
    }
);
