$(document).ready(function () {
    $("body").off('click').on("click", '.remove', remove);
//    $(".tbody").on("blur", '.rate', autoAddRows);
    $("body").on("change keyup", '.qty, .rate, .amount, .discperc, .total', itemCal);
    $("body").on("change keyup", '.subtotal, .litemdisc, .cdicsperc, .cdiscamt, .lessoth, .vatperc, .vatamt, .packing, .netamt', mainbCal);
    $("body").on("keyup focus blur change", '.itemcode', GetItemFromCode);
    $("body").on("keyup focus blur change", '.item', showDetail);
    $("body").on("blur", '.rate, .discperc', checkMsp);
    $("body").on("change", '.prodtype', prodSelect);
    $("body").on("focus", '.total', autoAddRows);

    function autoAddRows() {
        if ($(this).closest("tr").is(":last-child")) {
            AddRows();
        }
    }

    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) {

            }
        });

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

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

    function showMsp() {
        var msp = $(document.activeElement.closest("tr")).find('.msp').val();
//        alert("MSP :- " + msp);
        $("#overlay_form").show();
        var myEcho = "<h3>M.S.P = " + msp + "</h3>";
        $("#browdata").html(myEcho);
    }
    $("#close_form").click(function () {
        $("#overlay_form").hide();
    });


    function checkMsp() {
        var tr = $(this).closest("tr"),
                rate = tr.find(".rate").val(),
                msp = tr.find(".msp").val(),
                qty = tr.find(".qty").val(),
                discperc = tr.find(".discperc").val(),
                total = tr.find(".total").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();

                }
            }

        }
//        var tr = $(this).closest("tr"),
//                msp = tr.find(".msp").val(),
//                rate = tr.find(".rate").val();
//        if (rate > 0) {
//            if (parseFloat(rate) < parseFloat(msp)) {
//                alert("Rate Cannot Be Less than MSP");
//                tr.find(".rate").val("0");
//                tr.find(".rate").focus();
//            }
//        }
    }


    function GetItemFromCode() {
        var $row = $(this).closest("tr");
        var itemcode = $row.find(".itemcode").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").focus();
            }
        });
    }

    //getting rate from item
    function showDetail() {
        var tr = $(this).closest("tr");
        var name = tr.find('.item').val();
        $.ajax({
            type: 'GET',
            dataType: 'json',
//                url         : "get_itemrate_dtl.php",
            url: "get_itemrate_dtl.php",
            data: "name=" + name + "",
            success: function (response) {
                var code = response.code;
//                var rate = response.rate;
                var msp = response.msp;
                var mrp = response.mrp;
                $(tr.find('.itemcode')).val(code);
//                $(tr.find('.rate')).val(rate);
                $(tr.find('.msp')).val(msp);
                $(tr.find('.mrp')).val(mrp);
            },
            error: function (request, textStatus, errorThrown) {
                alert(errorThrown);
            }
        });
    }



    $('#addnew').click(function () {
        AddRows();
    });

    function autoAddRows() {
        var ctr = $('#items').val();
        var tr = $(this).closest("tr");
        var srno = tr.find(".srno").val();
        if (srno == ctr) {
            AddRows();

        }
    }

    function remove() {
        $(this).closest("tr").remove();
    }

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


    function itemCal() {
        var tr = $(this).closest("tr"),
                qty = tr.find(".qty").val(),
                mrp = tr.find(".mrp").val(),
                rate = tr.find(".rate").val(),
                amount = parseFloat(qty) * parseFloat(rate),
                discperc = tr.find(".discperc").val(),
                discount = discperc * amount / 100,
                total = 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);
//        mainbCal();
    }


    function mainbCal() {
        var subtot = $(".subtotal").val();
        var litemdisc = $(".litemdisc").val();
        var lessoth = $(".lessoth").val();

        var disc1 = subtot - litemdisc;

        var discperc = $(".cdicsperc").val(),
                cdiscamt = (discperc * disc1) / 100;

        if (isNaN(cdiscamt)) {
            $('.cdiscamt').val("0");
        } else {
            $('.cdiscamt').val(cdiscamt);
        }


        var subtot1 = subtot - litemdisc - cdiscamt - lessoth;

        var vatperc = $(".vatperc").val(),
                vatamt = (vatperc * subtot1) / 100;

        if (isNaN(vatamt)) {
            $('.vatamt').val("0");
        } else {
            $('.vatamt').val(vatamt);
        }


        var pack = $(".packing").val();

        var net = parseFloat(subtot1) + parseFloat(vatamt) + parseFloat(pack);

        if (isNaN(net)) {
            $('.netamt').val("0");
        } else {
            $('.netamt').val(net);
        }

        itemCal();
    }


});