$(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 click", '.qty, .rate, .amount, .discperc,.discount, .total, .remove', detailCal);
    $("body").on("blur focus keyup click", '.subtotal, .litemdisc, .cdiscperc, .cdiscamt, .coukg, .courate, .couamt, netamt, .ladvance, .lesother, .balance, .dcperc, .dcbperc, .dcamt, .remove', 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", '.amount', autoAddRows);
    $("body").on("focus blur", '.amount', storOtpSucs);
    $("body").on("blur", '.qty', noZeroAcptQty);
    $("body").on("blur", '.rate', noZeroAcptRate);
    $("body").on("blur", '.dcperc', checkDcPerc);

    $("body").on("blur", '.cdiscperc, .lesother ', checkMspTotal);

    var usertype = $(".usertype").val();
    if (usertype > 1) {
        $("#hdelete").hide();
//        $("#sdelotp").hide();
    }

    $("#delotp").click(function () {
        $("#overlay2_form").show();
        $("#close2_form").show();

        $(".delclass").show();
    });

    function checkDcPerc() {
        var dcperc = $(".dcperc").val();
//                getdcPerc = 0;

        $.post('getDcPerc.php', {dcperc: dcperc}, function (data) {
//            getdcPerc.val(data.commperc);
//            alert(data.commperc);
            var getdcPerc = data.commperc;
//            alert(getdcPerc);

            if (parseFloat(dcperc) > parseFloat(getdcPerc)) {
                alert('Driver Commision Cannot Be Greater Than Fixed Commission');
                $(".dcperc").val("0");

            }
        }, 'json');
        mainCal();
    }

    $("#submit").hide();

    $("#finishTab").click(function () {
        var ccamt = $('.ccamt').val(),
                cashamt = $('.cashamt').val(),
                credamt = $('.credamt').val(),
                netamt = $('.netamt').val(),
                totcamt = parseFloat(ccamt) + parseFloat(cashamt) + parseFloat(credamt),
                valid = true;

        if (netamt != totcamt) {
            $('.ccamt').val('0');
            $('.cashamt').val('0');
            $('.credamt').val('0');
            $('.cashamt').focus();
            alert('Cash, CC , Credit Total Amount Should Be Same As Netamt');
            return false;
            valid = false;
        }

//        $(".myTable").find('tr').each(function () {
//            var row = $(this);
//            var rate = row.find('.rate').val();
//            var item = row.find('.item').val();
//            if (rate == 0) {
//                alert('Rate Cannot Be Zero For...  ' + item);
////                return false;
//                valid = false;
//                row.find('.rate').focus();
//            }
//            
//        });



        if (valid) {
            var isValid = true;

            if (isValid) {
                $("#submit").show();
                $("#submit").click();

            }
        }
    });
//    $('body').on('click', '.itflag', getacc);

//    function getacc() {
//        var itflag = $(".itflag").val();

//    $(".itcompto").hide();
//    var itflg = $(".itflag").val();
//    if (itflg == "1") {
//        $(".itcompto").show();
//    } else {
//        $(".itcompto").hide();
//    }
//
//    $('.itflag').click(function () {
//        if ($(this).prop("checked") == true) {
////            $.post('get_acc.php', {itflag: "1"}, function (data) {
////                $('.party').html(data).trigger("change");
////            });
//            $(".itcompto").show();
//        }
//        else {
////            $.post('get_acc.php', {itflag: "2"}, function (data) {
////                $('.party').html(data).trigger("change");
////            });
//            $(".itcompto").hide();
//        }
//    });
//    }

    function noZeroAcptQty() {
        var $row = $(this).closest("tr"),
                mqty = $row.find(".qty").val();
        if (mqty > 0) {
        } else {
            alert('Qty Cannot be Zero');
            $row.find(".item").focus();
        }
    }
    function noZeroAcptRate() {
        var $row = $(this).closest("tr"),
                mrate = $row.find(".rate").val();

        if (mrate > 0) {
        } else {
            alert('Rate Cannot be Zero');
            $row.find(".mrp").focus();
        }
    }

    function storOtpSucs() {
        var $row = $(this).closest("tr"),
                mrate = $row.find(".rate").val(),
                motp = $(".otprecv").val(),
                mmsp = $row.find(".msp").val();
        if (motp != '') {
            if (mrate < mmsp) {
                $row.find(".otprowsucs").val("1");
                $row.find(".otpvalue").val(motp);
            } else {
                $row.find(".otprowsucs").val("");
                $row.find(".otpvalue").val("");
            }
        }
    }

//    var lesother = $(".lesother").val(),
//            cdiscperc = $(".cdiscperc").val();
//
//    if (cdiscperc <= 0) {
//        $(".cdiscperc").attr("readonly", true);
//    }
//    if (lesother <= 0) {
//        $(".lesother").attr("readonly", true);
//    }

    $(".gendsotp").click(function () {
        var party = $(".party").val(),
                subtotal = $(".subtotal").val(),
                vouchno  = $(".vouchno").val(),
                salesman = $(".salesman").val(),
                msptotal = $(".msptotal").val(),
                cdiscamt = $(".cdiscamt").val(),
                lesother = $(".lesother").val(),
                totdisc  = parseFloat(lesother) + parseFloat(cdiscamt), 
                data = {party: party, subtotal: subtotal, vouchno: vouchno, salesman: salesman, msptotal: msptotal,totdisc: totdisc };

        $.ajax({
            type: 'GET',
            dataType: 'json',
            url: "getGenDiscOtp.php",
            data: data,
            success: function (response) {

                $("#overlay_form").show();

                $(".normotp").hide();
                $(".lesdsotp").show();
                var m = response;
                $(".otpdssend").val(m.otpdssend);


//                $("#overlay_form").show();
//                var myEcho = "<h3>M.S.P = " + m.msp + "</h3>";
//                $(".genotp").hide();
//                $("#otp").val(m.msp);
                alert("OTP Send to Registered Mobile No.");
                $(".otpdssend").focus();
            }
        });
    });


    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();
//        }
    }

    $(".subdsotp").click(function () {
        var otpdsrecv = $(".otpdsrecv").val(),
                otpdssend = $(".otpdssend").val();
        if (otpdsrecv != '') {
            if (otpdsrecv == otpdssend) {
                $(".otpdssucs").val("1");
                $(".disctotp").val(otpdsrecv);
                $("#overlay_form").hide();
                $(".cdiscperc").attr("readonly", true);
                $(".cdiscamt").attr("readonly", true);
                $(".lesother").attr("readonly", true);
                $(".cdiscperc").focus();
//                $("#ssubmit").show();
                $("#finishTab").show();

            } else {
                alert("OTP Does Not Match");
                $(".otpdsrecv").val("");
                $(".otpdssucs").val("");
                $(".disctotp").val("");
            }
        }
    });

    $(".subotp").click(function () {
        var otprecv = $(".otprecv").val(),
                otpsend = $(".otpsend").val();
        if (otprecv != '') {
            if (otprecv == otpsend) {
                $(".otpsucs").val("1");
                $("#overlay_form").hide();
                $("#finishTab").show();
//                $("#ssubmit").show();
//                $(".rate").focus();
                var trimidge = $("#idget").val();
                $("#rate" + trimidge).focus();

            } else {
                alert("OTP Does Not Match");
                $(".otprecv").val("");
                $(".otpsucs").val("");
            }
        }
    });

    $(".subdelotp").click(function () {
        var otpdelrecv = $(".otpdelrecv").val(),
                otpdelsend = $(".otpdelsend").val();
        if (otpdelrecv != '') {
            if (otpdelrecv == otpdelsend) {
                $(".otpdelsucs").val("1");
                $("#overlay2_form").hide();
            } else {
                alert("OTP Does Not Match");
                $(".otpdelrecv").val("");
                $(".otpdelsucs").val("");
            }
            var otpdelsucs = $(".otpdelsucs").val();
            if (otpdelsucs == "1") {
                $("#delotp").hide();

                $("#hdelete").show();
                alert('Delete the Record Now');
            }
        }
    });


///////////////////////////////////////////////////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 usertype = $("#usertype").val();
        if (usertype < 2) {
        } else {

            $(".ratemspless").show();
            var tr = $(this).closest("tr"),
                    otpsucs = $(".otpsucs").val(),
                    otprowsucs = tr.find(".otprowsucs").val(),
                    itemname = tr.find(".item").val(),
                    rate = tr.find(".rate").val(),
                    msp = tr.find(".msp").val(),
                    mrp = tr.find(".mrp").val(),
                    qty = tr.find(".qty").val(),
                    srno = tr.find(".srno").val(),
                    total = tr.find(".total").val(),
                    discperc = tr.find(".discperc").val(),
                    idget = $(this).attr('id'),
                    mspamt = parseFloat(msp) * parseFloat(qty);
            if (otpsucs == "1" || otprowsucs == "1") {

            } else {
                if (rate > 0) {
                    if (parseFloat(rate) < parseFloat(msp) && parseFloat(rate) != parseFloat(msp)) {
//                alert("Rate Cannot Be Less Than M.S.P");
                        $("#overlay_form").show();
                        $("#close_form1").hide();
                        $("#close_form").show();

                        $(".normotp").show();
                        $(".lesdsotp").hide();
//                var myEcho = "<h3>M.S.P = " + msp + "</h3>";
                        $(".genotp").show();
                        $("#browdata").val(msp);
                        $("#rowitm").val(itemname);
                        $("#rowsrno").val(srno);
                        $("#rowqty").val(qty);
                        $("#rowrate").val(rate);
                        $("#rowmsp").val(msp);
                        $("#rowmrp").val(mrp);

                        var newidget = idget.substring(4, 10),
                                trimidget = newidget;
                        $("#idget").val(trimidget);
//                    tr.find(".rate").val("0");
                        tr.find(".rate").attr("readonly", true);
                        $("#finishTab").hide();
//                    $("#ssubmit").hide();
//                    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);
        $(".barcode").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 && e.altKey && (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");
        }
    }

    $(".delgenotp").click(function () {
        var vouchno = $(".vouchno").val(),
                vouchdt = $(".vouchdt").val(),
                data = {vouchdt: vouchdt, vouchno: vouchno};

        $.ajax({
            type: 'GET',
            dataType: 'json',
            url: "getGenDelOtp.php",
            data: data,
            success: function (response) {
                var m = response;
                $(".otpdelsend").val(m.otpdelsend);

                alert("OTP Send to Registered Mobile No.");
                $(".otpdelrecv").focus();
            }
        });
    });

    $(".genotp").click(function () {
        var rowitem = $(".rowitm").val(),
                rowqty = $(".rowqty").val(),
                rowrate = $(".rowrate").val(),
                rowmsp  = $(".rowmsp").val(),
                rowmrp  = $(".rowmrp").val(),
                vouchno = $(".vouchno").val(),
                salesman = $(".salesman").val(),
                data = {rowitem: rowitem, rowqty: rowqty, rowrate: rowrate, vouchno: vouchno, salesman: salesman, rowmsp:rowmsp, rowmrp:rowmrp};

        $.ajax({
            type: 'GET',
            dataType: 'json',
            url: "getGenratedOtp.php",
            data: data,
            success: function (response) {
                var m = response;
                $(".otpsend").val(m.otpsend);


//                $("#overlay_form").show();
//                var myEcho = "<h3>M.S.P = " + m.msp + "</h3>";
//                $(".genotp").hide();
                $("#browdata").val(m.msp);
                alert("OTP Send to Registered Mobile No.");
                $(".otpsend").focus();
            }
        });
    });

    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>";
                $(".genotp").hide();
                $("#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;
                var str = "MSP  = " + m.msp;
                var result = str;


                alert(result);
//                $("#overlay_form").show();
//                var myEcho = "<h3>M.S.P = " + m.msp + "</h3>";
//                $("#browdata").html(myEcho);
//                $(".ratemspless").hide();
//                $(".lesdsotp").hide();
////                $(".normotp").show();
//                $(".close_form1").hide();
//                $(".genotp").hide();
            }
        });
    }

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

        if (prodtype == "") {
            $(".barcode").prop("disabled", true)
            $(".item").prop("disabled", true)
            $(".prodtype").select2("open");
            alert("Please Select The Product Type");
        } else {
            $(".barcode").prop("disabled", false);
            $(".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(),
                msp = tr.find(".msp").val(),
                rate = tr.find(".rate").val(),
                otprowsucs = tr.find(".otprowsucs").val(),
                amount = (parseFloat(qty) * parseFloat(rate)).toFixed(2),
                mspamount = (parseFloat(qty) * parseFloat(msp)).toFixed(2),
                discperc = tr.find(".discperc").val(),
                discount = (discperc * amount / 100).toFixed(2),
                total = (parseFloat(amount) - parseFloat(discount)).toFixed(2);

        tr.find(".amount").val(amount);
        if (otprowsucs == "1") {
            tr.find(".mspamount").val(amount);
        } else {
            tr.find(".mspamount").val(mspamount);
        }
        tr.find(".discount").val(discount);
        tr.find(".total").val(total);


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

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

        var val3 = 0;
        $(".mspamount").each(function () {
            if (!isNaN(this.value) && this.value.length != 0) {
                val3 += parseFloat(this.value);
            }
        });
        $(".msptotal").val(val3);
        mainCal();

    }

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

        if (dcamt > 0) {
            if (dcamt > netamt) {
                $(".dcbperc").val("0");
//                $(".dcamt").val("0");
                alert('Driver Amount Cannot Be Greater than Net Amount');
                $(".dcperc").focus();
            }
        }

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

    }


    function checkMspTotal() {
        var subtotal = $(".subtotal").val(),
                cdiscamt = $(".cdiscamt").val(),
//                cdiscamt = (((subtotal - litemdisc) * cdiscperc) / 100).toFixed(2),
                lesother = $(".lesother").val(),
                msptotal = $(".msptotal").val(),
//                msptotal = $(".msptotal").val(),
                otpdssucs = $(".otpdssucs").val(),
                newtotal = subtotal - cdiscamt - lesother;
        if (otpdssucs == "1") {
            $("#finishTab").show();
//            $("#ssubmit").show();

        } else {
            if (msptotal > newtotal) {
                $("#overlay_form").show();
                $("#finishTab").hide();
//                $("#ssubmit").hide();
                $(".normotp").hide();
                $(".lesdsotp").show();
                $("#close_form1").show();
                $("#close_form").hide();

            } else {
                $("#overlay_form").hide();
                $("#finishTab").show();
//                $("#ssubmit").show();

            }
        }


    }
///////////////////////////////////////////////////CALCULATION - END  //////////////////////////////////////////////////
    $("#close2_form").click(function () {

        $("#overlay2_form").hide();
        $(".otpdelrecv").val("");
        $(".otpdelsucs").val("");
        $("#finishTab").show();

    });

    $("#close_form").click(function () {
        var trimidge = $("#idget").val();

        $("#rate" + trimidge).removeAttr("readonly", true);
//        $(".rate").removeAttr("readonly", true);
//        alert("rate" + trimidge);
        $("#rate" + trimidge).focus();
        $("#rate" + trimidge).val("0");
        $("#overlay_form").hide();

//        $(".rate").val("0");
        $("#finishTab").show();
//        $("#ssubmit").show();


    });
    $("#close_form1").click(function () {
        $("#overlay_form").hide();
//        $(".les").removeAttr("readonly", true);
        $(".cdiscperc").val("0");
        $(".cdiscamt").val("0");
        $(".lesother").val("0");
        $(".cdiscperc").focus();
        $("#finishTab").show();
//        $("#ssubmit").show();


    });
    $('#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;
        }
        $(".otpsend").val("");
        $(".otprecv").val("");
        $(".otpsucs").val("");
//        $(".otprowsucs").val("");
//        $(".otpvalue").val("");
//        $(".idget").val("");
        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 == "") {
                $(".barcode").prop("disabled", true);
                $(".item").prop("disabled", true);
            }
        });
//        $(".barcode").focus();
    }

});