$(document).ready(function () {
    $("body").off('click').on("click", '.remove', remove);
    $("body").on("focus blur change", '.item', getMsp);
    $("body").on("dblclick", '.rate', showMsp);
    $("body").on("blur focus keyup", '.qty, .rate, .amount, .discperc,.discount, .total', detailCal);
    $("body").on("blur focus keyup", '.subtotal, .litemdisc, .cdiscperc, .cdiscamt, .coukg, .courate, .couamt, netamt, .ladvance, .lesother, .balance, .dcperc, .dcbperc, .dcamt', mainCal);
    $("body").on("focus change", '.srno_0, .prodtype', validProdType);
    $("body").on("change", '.prodtype', generatePrint);
    $("body").on("blur", '.rate, .discperc', validMsp);
    $("body").on("blur", '.rate', validMrp);
    $("body").on("change", '.prodtype', prodSelect);
    $("body").on("blur change", '.barcode', GetItemFromCode);
    $("body").on("focus", '.total', autoAddRows);

    function autoAddRows() {
        if ($(this).closest("tr").is(":last-child")) {
            AddRows();
        }
//        var ctr = $('#items').val();
//        var tr = $(this).closest("tr");
//        var srno = tr.find(".srno").val();
//        if (srno == ctr) {
//            AddRows();
//        }
    }


///////////////////////////////////////////////////IMP - START//////////////////////////////////////////////////

    function GetItemFromCode() {
        var $row = $(this).closest("tr");
        var itemcode = $row.find(".barcode").val();
        var prodtype = $(".prodtype").val();
        $.post('show_item_dtl.php', {itemcode: itemcode, prodtype: prodtype}, function (data) {
            if (data != '') {
                $row.find(".item").html(data).trigger("change");
//                $row.find(".item").html(data).trigger("change");

            }
//            $row.find(".itemcode").val(itemcode);
        });
    }

    function prodSelect() {
        var prodtype = $(".prodtype").val(),
                data = {prodtype: prodtype};

        $.ajax({
            type: 'GET',
            dataType: 'html',
            url: "getTypeItem.php",
            data: data,
            success: function (response) {
                var m = response;
                $(".item").html(m);
            },
            error: function (request, textStatus, errorThrown) {

            }
        });

    }

    function validMsp() {
        var tr = $(this).closest("tr"),
                rate = tr.find(".rate").val(),
                msp = tr.find(".msp").val(),
                qty = tr.find(".qty").val(),
                total = tr.find(".total").val(),
                discperc = tr.find(".discperc").val(),
                mspamt = parseFloat(msp) * parseFloat(qty);
        if (rate > 0) {
            if (parseFloat(rate) < parseFloat(msp) && parseFloat(rate) != parseFloat(msp)) {
                alert("Rate Cannot Be Less Than M.S.P");
                tr.find(".rate").val("0");
                tr.find(".rate").focus();

            }
            if (discperc > 0) {
                if (parseFloat(total) < parseFloat(mspamt) && parseFloat(total) != parseFloat(mspamt)) {
                    alert("Total Cannot Be Less Than M.S.P-Total");
                    tr.find(".discperc").val("0");
                    tr.find(".discount").val("0");
                    tr.find(".discperc").focus();

                }
            }
        }
    }

    function validMrp() {
        var tr = $(this).closest("tr"),
                rate = tr.find(".rate").val(),
                mrp = tr.find(".mrp").val();
        if (rate > 0) {
            if (parseFloat(rate) > parseFloat(mrp)) {
                alert("Rate Cannot Be Greater Than M.R.P");
                tr.find(".rate").val("0");
            }
        }
    }

    if ($(".prodtype").val() == "") {
        $(".item").prop("disabled", true);
        $(".myPrint").attr("href", "");
    }

    function generatePrint() {
        var vouch = $(".vouchno").val();
        var prodtype = $(".prodtype").val();


        if (prodtype == "P") {
            $(".myPrint").attr("href", "salep_print.php?vouchno=" + vouch);
            $(".myPrint").attr("target", "_blank");
        } else {
            $(".myPrint").attr("href", "#");
            $(".myPrint").attr("target", "");
        }
    }
    generatePrint();

    $(document).keydown(function (e) {
        if (e.ctrlKey && (String.fromCharCode(e.which).toLowerCase() === 'm')) {
            rajEvent = new Event('CTR+M');
            document.dispatchEvent(rajEvent);
        }
    });

    $(document).keydown(function (e) {
        if (e.ctrlKey && (String.fromCharCode(e.which).toLowerCase() === 'b')) {
            rajEvent = new Event('CTR+B');
            document.dispatchEvent(rajEvent);
        }
    });

    document.addEventListener('CTR+M', showMsp, false);
    document.addEventListener('CTR+B', showPrint, false);

    function showPrint() {
        var vouchno = $(".vouchno").val();
        var prodtype = $(".prodtype").val();
        if (prodtype == "P") {
            window.open("salep_print.php?vouchno=" + vouchno, "_blank");
        }
    }

    function getMsp() {
        var tr = $(this).closest("tr"),
                itemname = tr.find(".item").val(),
                data = {itemname: itemname};

        $.ajax({
            type: 'GET',
            dataType: 'json',
            url: "getItemMsp.php?m=a",
            data: data,
            success: function (response) {
                var m = response;
                tr.find(".barcode").val(itemname);
                tr.find(".mrp").val(m.mrp);
                if (tr.find(".rate").val() == 0) {
                    tr.find(".rate").val(m.rate);
                }
                tr.find(".msp").val(m.msp);
                tr.find(".unit").val(m.unit).trigger("change");
//                $("#overlay_form").show();
                var myEcho = "<h3>M.S.P = " + m.msp + "</h3>";
                $("#browdata").html(myEcho);
            }
        });
    }

    function showMsp() {
//        var tr = $(this).closest("tr"),
//                itemname = tr.find(".item").val(),
//                data = {itemname: itemname};
        var itemname = $(document.activeElement.closest("tr")).find('.item').val(),
                data = {itemname: itemname};

        $.ajax({
            type: 'GET',
            dataType: 'json',
            url: "getItemMsp.php?m=a",
            data: data,
            success: function (response) {
                var m = response;
                $("#overlay_form").show();
                var myEcho = "<h3>M.S.P = " + m.msp + "</h3>";
                $("#browdata").html(myEcho);
            }
        });
    }

    function validProdType() {
        var prodtype = $(".prodtype").val();

        if (prodtype == "") {
            $(".item").prop("disabled", true)
            $(".prodtype").select2("open");
            alert("Please Select The Product Type");
        } else {
            $(".item").prop("disabled", false);
        }
    }

///////////////////////////////////////////////////IMP - END//////////////////////////////////////////////////

///////////////////////////////////////////////////CALCULATION - START//////////////////////////////////////////////////

    function detailCal() {
        var tr = $(this).closest("tr"),
                qty = tr.find(".qty").val(),
                mrp = tr.find(".mrp").val(),
                rate = tr.find(".rate").val(),
                amount = Math.round(parseFloat(qty) * parseFloat(rate)),
                discperc = tr.find(".discperc").val(),
                discount = Math.round(discperc * amount / 100),
                total = Math.round(parseFloat(amount) - parseFloat(discount));

        tr.find(".amount").val(amount);
        tr.find(".discount").val(discount);
        tr.find(".total").val(total);


        var val = 0;
        $(".amount").each(function () {
            if (!isNaN(this.value) && this.value.lenght != 0) {
                val += parseFloat(this.value);
            }
        });
        $(".subtotal").val(val);

        var val2 = 0;
        $(".discount").each(function () {
            if (!isNaN(this.value) && this.value.lenght != 0) {
                val2 += parseFloat(this.value);
            }
        });
        $(".litemdisc").val(val2);
        mainCal();

    }

    function mainCal() {
        var subtotal = $(".subtotal").val(),
                litemdisc = $(".litemdisc").val(),
                cdiscperc = $(".cdiscperc").val(),
                cdiscamt = Math.round(((subtotal - litemdisc) * cdiscperc) / 100),
                coukg = $('.coukg').val(),
                courate = $(".courate").val(),
                lesother = $(".lesother").val(),
                couamt = Math.round(parseFloat(coukg) * parseFloat(courate)),
                netamt = Math.round(parseFloat(subtotal) - parseFloat(litemdisc) - parseFloat(cdiscamt) - parseFloat(lesother) + parseFloat(couamt)),
                ladvance = $(".ladvance").val(),
                balance = Math.round(parseFloat(netamt) - parseFloat(ladvance)),
                dcperc = $(".dcperc").val(),
                dcbperc = $(".dcbperc").val(),
                dcamt = Math.round((netamt * dcbperc / 100) * dcperc / 100);

        $(".cdiscamt").val(cdiscamt);
        $(".couamt").val(couamt);
        $(".netamt").val(netamt);
        $(".balance").val(balance);
        $(".dcamt").val(dcamt);

    }

///////////////////////////////////////////////////CALCULATION - END  //////////////////////////////////////////////////


    $("#close_form").click(function () {
        $("#overlay_form").hide();
    });
    $('#addnew').click(function () {
        AddRows();
    });
    function remove() {
        $(this).closest("tr").remove();
    }

    function AddRows() {
        var ctr = $('#items').val();
        var prodtype = $('.prodtype').val();
        var hide_check = "";
        if ($("#del_all").prop("checked")) {
            hide_check = 0;
        } else {
            hide_check = 1;
        }
        var detail = ".fetchpart_" + ctr;
        $.post('sale_add.php', {ctr: ctr, hide: hide_check, prodtype: prodtype}, function (data) {
            $(data).appendTo('.tbody');
            ctr++;
            $('#items').val(ctr);
            $(detail).select2();
            if (prodtype == "") {
                $(".item").prop("disabled", true);
            }
        });
    }

});