if (typeof (Tody) === "undefined") var Tody = {};
var showAccountTable;
(function($) {
    Tody.BonusTable = new function() {

        var self = this;
        var normalPaidOrderTypeId = "1";

        var dataForPost = {
            showAccount: true
        };

        self.setAccountTableVisibility = function(accountVisibility) {
            showAccountTable = accountVisibility;
        }


        self.init = function() {

            $("#lnkShowHideAccountTable").click(function() {

                if (showAccountTable !== true) {
                    dataForPost.showAccount = true;
                    showHideBonusTable(function() {
                        window.location = window.location.toString().indexOf("#") != -1 ? window.location.replace('#', '') : window.location;
                    });
                } else {
                    $("#multiBonus").hide();
                    self.setAccountTableVisibility(false);
                    dataForPost.showAccount = false;
                    $("#lnkShowHideAccountTable").html('<h3 class="orange">ARATA STARE CONT</h3>');
                    showHideBonusTable(function() { });
                }
            });
        };

        self.refreshTable = function() {

            if (showAccountTable !== true) return;

            var overlayDiv = Tody.Common.showLoading($("#multiBonus"));

            var orderTypeVal = $("#OrderType").val();
            if (!orderTypeVal)
                orderTypeVal = normalPaidOrderTypeId;

            var dataForPost = {
                orderType: orderTypeVal
            };

            $.ajax({
                type: "POST",
                url: actionUrl("/BonusTable/PrivateTable"),
                data: dataForPost,
                dataType: "json",
                success: function(result) {
                    Tody.Common.hideLoading(overlayDiv);

                    self.setTableData(result.BonusTableDto);
                    Tody.Common.recalculateContentPadding();
                },
                error: function(msg) {
                    if (msg.status == '0') return;
                    Boxy.alert(msg.status + " : " + msg.statusText, null, { title: 'Eroare', closeOnButtonClick: true });
                    Tody.Common.hideLoading(overlayDiv);
                }

            });
        };

        self.refreshPartialTable = function() {

            if (showAccountTable !== true) return;

            var elementToOverlay = $("#multiBonus #alerta");

            if (elementToOverlay.length === 0) {
                // it's the state client table
                elementToOverlay = $("#multiBonus .currentOrderValue");
            }

            var overlayDiv = Tody.Common.showLoading(elementToOverlay);

            var orderTypeVal = $("#OrderType").val();
            if (!orderTypeVal)
                orderTypeVal = normalPaidOrderTypeId;

            var dataForPost = {
                orderType: orderTypeVal
            };

            $.ajax({
                type: "POST",
                url: actionUrl("/BonusTable/PartialPrivateTable"),
                data: dataForPost,
                dataType: "json",
                success: function(result) {
                    Tody.Common.hideLoading(overlayDiv);

                    self.setPartialTableData(result.PartialBonusTableDto);

                },
                error: function(msg) {
                    if (msg.status == '0') return;
                    Boxy.alert(msg.status + " : " + msg.statusText, null, { title: 'Eroare', closeOnButtonClick: true });
                    Tody.Common.hideLoading(overlayDiv);
                }

            });
        };

        self.setTableData = function(result) {

            var multibonusTable = $("#multiBonus");

            multibonusTable.find("#mbDeGrup").text(result.GroupText);
            multibonusTable.find("#ownOrderValues").text(result.OwnOrderValuesText);
            multibonusTable.find(".group").text(result.UpperCaseGroup);
            multibonusTable.find("#paymentTermHeader").text(result.PaymentTypeHeaderText);
            multibonusTable.find("#orderHistoryText").html(result.OrderHistoryText);
            multibonusTable.find("#consumedBonusHistoryText").html(result.ConsumedBonusHistoryText);
            multibonusTable.find("#consumedBonusHistoryTCText").html(result.ConsumedBonusHistoryTCText);
            multibonusTable.find("#consumedBonusHistoryTLText").html(result.ConsumedBonusHistoryTLText);
            multibonusTable.find("#givenBonusPercentHistoryText").text(result.GivenBonusPercentHistoryText);
            multibonusTable.find("#PaymentHistoryText").html(result.PaymentHistoryText);
            multibonusTable.find("#ordersTCHistoryText").text(result.OrderTcHistoryText);
            multibonusTable.find("#ordersTLHistoryText").text(result.OrderTlHistoryText);
            multibonusTable.find("#totalAdvanceHistoryText").html(result.AvailableAdvanceHistoryText);
            multibonusTable.find("#advanceTCHystoryText").text(result.ConsumedAdvanceTCHistoryText);
            multibonusTable.find("#advanceTLHistory").text(result.ConsumedAdvanceTLHistoryText);

            if (multibonusTable.find(".group").html != '')
                $(".group").parent().css('font-size', '9px');


            multibonusTable.find(".OrderTotalTL").html(result.OrderTotalTL);
            multibonusTable.find(".OrderTotalTC").text(result.OrderTotalTC);
            multibonusTable.find(".OrderTotal").html(result.OrderTotal);

            multibonusTable.find(".ConsumedBonusTotal").text(result.ConsumedBonusTotal);
            multibonusTable.find(".ConsumedBonusTotalTL").text(result.ConsumedBonusTotalTL);
            multibonusTable.find(".ConsumedBonusTotalTC").text(result.ConsumedBonusTotalTC);

            multibonusTable.find(".TotalAdvanceConsumedBonusTotal").text(result.TotalAdvanceConsumedBonusTotal);
            multibonusTable.find(".TotalAdvanceConsumedBonusTotalTL").text(result.TotalAdvanceConsumedBonusTotalTL);
            multibonusTable.find(".TotalAdvanceConsumedBonusTotalTC").text(result.TotalAdvanceConsumedBonusTotalTC);

            multibonusTable.find(".BonusGivenAverage").text(result.BonusGivenAverage);
            multibonusTable.find(".TLDebtHistoryAverage").text(result.TLDebtHistoryAverage);
            multibonusTable.find(".TCDebtHistoryAverage").text(result.TCDebtHistoryAverage);



            multibonusTable.find(".orderValue2009").text(result.OrderValueAllTime);
            multibonusTable.find(".orderValueCurrentYear").text(result.OrderValueCurrentYear);
            multibonusTable.find(".orderValueCurrentMonth").text(result.OrderValueCurrentMonth);
            multibonusTable.find(".orderValuePastYear").text(result.OrderValuePastYear);
            multibonusTable.find(".orderValuePastMonth").text(result.OrderValuePastMonth);

            multibonusTable.find(".bonusValueFrom2009").text(result.BonusGivenAllTime);
            multibonusTable.find(".bonusPercentFrom2009").text(result.BonusGivenPercentAllTime);
            multibonusTable.find(".bonusValueCurrentYear").text(result.BonusGivenCurrentYear);
            multibonusTable.find(".bonusPercentCurrentYear").text(result.BonusGivenPercentCurrentYear);
            multibonusTable.find(".bonusValueCurrentMonth").text(result.BonusGivenCurrentMonth);
            multibonusTable.find(".bonusPercentCurrenMonth").text(result.BonusGivenPercentCurrentMonth);
            multibonusTable.find(".bonusValuePastYear").text(result.BonusGivenPastYear);
            multibonusTable.find(".bonusPercentPastYear").text(result.BonusGivenPercentPastYear);
            multibonusTable.find(".bonusValuePastMonth").text(result.BonusGivenPastMonth);
            multibonusTable.find(".bonusPercentPastMonth").text(result.BonusGivenPercentPastMonth);

            multibonusTable.find(".canceledBonusFrom2009").text(result.BonusCanceledAllTime);
            multibonusTable.find(".canceledPercentFrom2009").text(result.BonusCanceledPercentAllTime);
            multibonusTable.find(".canceledBonusCurrentYear").text(result.BonusCanceledCurrentYear);
            multibonusTable.find(".canceledPercentCurrentYear").text(result.BonusCanceledPercentCurrentYear);
            multibonusTable.find(".canceledBonusCurrentMonth").text(result.BonusCanceledCurrentMonth);
            multibonusTable.find(".canceledPercentCurrentMonth").text(result.BonusCanceledPercentCurrentMonth);
            multibonusTable.find(".canceledBonusPastYear").text(result.BonusCanceledPastYear);
            multibonusTable.find(".canceledPercentPastYear").text(result.BonusCanceledPercentPastYear);
            multibonusTable.find(".canceledBonusPastMonth").text(result.BonusCanceledPastMonth);
            multibonusTable.find(".canceledPercentPastMonth").text(result.BonusCanceledPercentPastMonth);

            multibonusTable.find(".consumedBonusFrom2009").text(result.BonusConsumedAllTime);
            multibonusTable.find(".consumedPercentFrom2009").text(result.BonusConsumedPercentAllTime);
            multibonusTable.find(".consumedBonusCurrentYear").text(result.BonusConsumedCurrentYear);
            multibonusTable.find(".consumedPercentCurrentYear").text(result.BonusConsumedPercentCurrentYear);
            multibonusTable.find(".consumedBonusCurrentMonth").text(result.BonusConsumedCurrentMonth);
            multibonusTable.find(".consumedPercentCurrentMonth").text(result.BonusConsumedPercentCurrentMonth);
            multibonusTable.find(".consumedBonusPastYear").text(result.BonusConsumedPastYear);
            multibonusTable.find(".consumedPercentPastYear").text(result.BonusConsumedPercentPastYear);
            multibonusTable.find(".consumedBonusPastMonth").text(result.BonusConsumedPastMonth);
            multibonusTable.find(".consumedPercentPastMonth").text(result.BonusConsumedPercentPastMonth);

            self.setPartialTableData(result.PartialBonusTable);

            var historyTable = $("#istoricPlati");

            historyTable.find("tr#period td.months").each(function(index) {
                $(this).text(result.CriteriaHistory[index].Month + "." + result.CriteriaHistory[index].Year);
            });

            historyTable.find("tr#istoricComenzi td:not(.darkblue)").each(function(index) {
                $(this).text(result.TotalOrderValuesPerMonthDTO[index].OrderValue);
            });

            historyTable.find("tr#comenziTC td:not(.darkblue)").each(function(index) {
                $(this).text(result.TotalOrderValuesPerMonthTCDTO[index].OrderValue);
            });

            historyTable.find("tr#comenziTL td:not(.darkblue)").each(function(index) {
                $(this).text(result.TotalOrderValuesPerMonthTLDTO[index].OrderValue);
            });


            historyTable.find("tr#istoricProcentBonusRealizat td:not(.darkblue)").each(function(index) {
                $(this).text(result.GivenBonusesPerMonthDTO[index].OrderValue);
            });

            historyTable.find("tr#istoricBonusConsumat td:not(.darkblue)").each(function(index) {
                $(this).text(result.ConsumedBonusesPerMonthDTO[index].OrderValue);
            });

            historyTable.find("tr#bonusConsumatTC td:not(.darkblue)").each(function(index) {
                $(this).text(result.ConsumedBonusesPerMonthTCDTO[index].OrderValue);
            });

            historyTable.find("tr#bonusConsumatTL td:not(.darkblue)").each(function(index) {
                $(this).text(result.ConsumedBonusesPerMonthTLDTO[index].OrderValue);
            });


            historyTable.find("tr#totalAvans td:not(.darkblue)").each(function(index) {
                $(this).text(result.TotalAdvanceAvailablePerMonthDTO[index].OrderValue);
            });

            historyTable.find("tr#advanceTC td:not(.darkblue)").each(function(index) {
                $(this).text(result.TotalAdvanceConsumedPerMonthTCDTO[index].OrderValue);
            });

            historyTable.find("tr#advanceTL td:not(.darkblue)").each(function(index) {
                $(this).text(result.TotalAdvanceConsumedPerMonthTLDTO[index].OrderValue);
            });


            historyTable.find("tr#debtTL td:not(.darkblue)").each(function(index) {
                $(this).text(result.TLDebtHistoryListDTO[index].OrderValue);
            });

            historyTable.find("tr#debtTC td:not(.darkblue)").each(function(index) {
                $(this).text(result.TCDebtHistoryListDTO[index].OrderValue);
            });



            historyTable.find("tr.istoricPlati td:not(.darkblue)").each(function(index) {
                if (result.CriteriaHistory[index].IsEmpty) {
                    $(this).html("&nbsp;");
                    return;
                }
                $(this).css("background-color", result.CriteriaHistory[index].BgColor);
                $(this).css("color", result.CriteriaHistory[index].ForeColor);
                $(this).text(result.CriteriaHistory[index].Text);
            });

            historyTable.find("td.paymentTypeValue h2").html(result.PaymentTypeText);

            //set the overdue invoices values
            var invoicesTd = historyTable.find("td.overduepayments");
            var html = '';

            for (i = 0; i < result.OverdueInvoices.length; i++) {
                html += "<a href='/" + result.OverdueInvoices[i].InvoicePath + "' style='text-decoration: underline;' TARGET='_blank'>" + result.OverdueInvoices[i].InvoiceNumber + "</a>" + ", ";
            }

            if (html.length > 0)
                html = html.substring(0, html.length - 2);

            invoicesTd.html(html);

            var overdueInvoicesTr = historyTable.find("tr#overdueInvoicesTr");
            if (result.OverdueInvoices.length > 0) {
                overdueInvoicesTr.show();
            }
            else {
                overdueInvoicesTr.hide();
            }

            var assumedPurchasesTable = $("#assumedPurchases");
            assumedPurchasesTable.find("tr#assumedValues td.value").text(result.AssumedPurchasesTable.AssumedPurchasesValue);
            assumedPurchasesTable.find("tr#assumedValues td.year").text(result.AssumedPurchasesTable.Year);
            assumedPurchasesTable.find("tr#assumedValues td.month").text(result.AssumedPurchasesTable.StartMonth);
            assumedPurchasesTable.find("tr#assumedValues td.avg").text(result.AssumedPurchasesTable.MonthlyAssumedAvgFormatted);
            assumedPurchasesTable.find("tr#assumedValues td.realized div.realizedFromAssuming").text(result.AssumedPurchasesTable.TotalRealizedFromAssuming);
            assumedPurchasesTable.find("tr#assumedValues td.realized div.realizedFromAssumingPercent").text(result.AssumedPurchasesTable.TotalRealizedFromAssumingPercent);
            assumedPurchasesTable.find("tr#assumedValues td.debt div.debt").text(result.AssumedPurchasesTable.Debt);
            assumedPurchasesTable.find("tr#assumedValues td.debt div.debtPercent").text(result.AssumedPurchasesTable.DebtPercent);

            if (result.AssumedPurchasesTable.Debt < 0) {
                assumedPurchasesTable.find("tr#assumedValues td.debt div.debtPercent").addClass("red");
            }
        };

        self.setPartialTableData = function(result) {
            var multibonusTable = $("#multiBonus");

            //multibonusTable.find(".availableAdvance").text(result.AdvanceAvailable);
            multibonusTable.find("#availableAdvanceTC").text(result.AdvanceAvailableForTC);
            multibonusTable.find("#availableAdvanceTL").text(result.AdvanceAvailableForTL);
            multibonusTable.find(".availableBonus").text(result.BonusAvailable);
            multibonusTable.find("#lcurenta").text(result.CurrentDate);
            multibonusTable.find("#availableInFreeProducts").text(result.HeaderAvailableInFreeProducts);
            multibonusTable.find("#currentBonusLevel").text(result.HeaderCurrentBonusLevel);
            multibonusTable.find("#nextBonusLevel").html(result.HeaderNextBonusLevel);
            multibonusTable.find("#lastOrder").text(result.HeaderLastOrder);
            multibonusTable.find(".currentOrderValue").text(result.CurrentOrderValue);

            multibonusTable.find(".percentCurrentBonusLevel").text(result.CurrentLevelPercent);

            if (result.IsAtMaxBonusLevel) {
                var parentTr = multibonusTable.find(".sumToNextBonusLevel").parent();
                multibonusTable.find(".sumToNextBonusLevel").remove();
                multibonusTable.find(".percentToNextBonusLevel").remove();

                var newTr = $("<td class='maxMultibonus centered' colspan='2'></td>").html("<span class='multibonus'>BONUS MAXIM</span>");

                parentTr.append(newTr);
            }
            else {

                if (multibonusTable.find(".maxMultibonus").length > 0) {
                    var maxTd = multibonusTable.find(".maxMultibonus");
                    var parentTr = maxTd.parent();

                    maxTd.remove();

                    var percentTd = $("<td class='lightyellow percentToNextBonusLevel'></td>").text(result.BonusPercentForNextLevel);
                    var sumTd = $("<td class='lightyellow sumToNextBonusLevel'></td>").text(result.AmmountToNextLevel);
                    parentTr.append(percentTd).append(sumTd);

                } else {
                    multibonusTable.find(".sumToNextBonusLevel").text(result.AmmountToNextLevel);
                    multibonusTable.find(".percentToNextBonusLevel").text(result.BonusPercentForNextLevel);
                }
            }
        };

        self.hide = function() {
            Tody.Common.recalculateContentPadding();
        };



        var showHideBonusTable = function(callback) {
            $.ajax({
                type: "POST",
                url: actionUrl("/BonusTable/ShowHideAccountTable"),
                data: dataForPost,
                dataType: "json",
                success: function(result) {
                    callback(result);
                },
                error: function(msg) {
                    if (msg.status == '0') return;
                    Boxy.alert(msg.status + " : " + msg.statusText, null, { title: 'Eroare', closeOnButtonClick: true });
                    Tody.Common.hideLoading(overlayDiv);
                }
            });
        };
    };
})(jQuery);


jQuery(document).ready(
    function() {
    Tody.BonusTable.init();
    }
);
