jQuery(document).ready(function() {
    FormValidator.init();
    //hide error box
    $('.alert-danger').hide();
});

jQuery(document).ready(function() {
    //conirm
    $("#conirm").click(function() {
        var sel_id = $('#sel_id').val();
        var popup_type = $('#popup_type').val();
        var page = $('#page').val();
        var row_id = sel_id;
        if (page == 'sale_add') {
            if (popup_type == 'delete') {
                var tmp = '#row_' + row_id;
                $(tmp).remove();
                displayNotice('page', 'Product item has been deleted successfully!');
                calculateTotal();
            }
        } //end page check
    });
});

function deleteSalesItem(row_id) {
    $("#myModal4").modal();
    $('#sel_id').val(row_id);
    $('#popup_type').val('delete');
    $('#page').val('sale_add');
    $("#label").text("Are you sure you want to delete this product item?");
}

function clearForm() {
    $('#qtyTotal').text(convertToAmount(0));
    //('#sale_datetime').text('');
    $('#sale_datetime').css("borderColor", "#d5d5d5");
    $('#warehouse_id').css("borderColor", "#d5d5d5");
    $('#customer_id').css("borderColor", "#d5d5d5");
    $('#balance_dis').text(convertToAmount(0));
    $('#Subtotal').text(convertToAmount(0));
    //set ref no
    //getNextRefNo();
}

function addProductToListByID(rowcount, product_id, product_name, product_code, product_price, product_part_no, product_oem_part_number, item_cost, item_qty, item_ex_val, item_dis) {
    if (item_qty > 0) {
        var on_hand_qty = 0;
        var item_qty = item_qty;
        var item_ex_val = item_ex_val;
        var item_dis = item_dis;
        if (item_qty == null) {
            item_qty = 1;
        }
        if (item_ex_val == null) {
            item_ex_val = 0;
        }
        item_x_val = parseInt(item_ex_val);
        if (item_dis == null) {
            item_dis = 0;
        }
        item_dis = parseInt(item_dis);
        var customer_id = $('#customer_id').val();
        error = false;
        if (customer_id == '') {
            error = true;
        }
        if (error) {
            bootbox.alert('Please select Customer before adding any product', function() {
                $('#add_item').focus();
            });
        } else {
            var rowCount = $('#rowCount').val();
            var nxtCount = parseInt(rowCount) + 1;
            $('#rowCount').val(nxtCount);
            //alert(product_price);
            var rwcount = rowcount;
            var product_price = product_price;
            var product_price_dis = convertToAmount(product_price);
            var sub_total_item = convertToAmount(product_price * 1); //when add qty=1
            var discount_val = 0;
            var discount_val_tot = 0;
            var product_part_no_txt = '';
            var product_oem_part_number_txt = '';
            if (product_part_no) product_part_no_txt = ', SAP Code.:' + product_part_no;
			
			var qty = prompt("Enter Quantity:", "1");
            if (qty == null || qty == "") {
				return "error";
				}
            if (isNaN(qty)) {
				alert("Invalid Quantity");
				return false;
				}
			
            $('#soTable tbody').prepend('<tr class="child" id="row_' + nxtCount + '">'
+'<td class="center">' + rwcount + '</td>'
+'<td>' + product_name + ' (' + product_code + ')' + product_part_no_txt + product_oem_part_number_txt + '<input type="hidden" class="form-control text-center rquantity" name="row[' + nxtCount + '][product_id][]" value="' + product_id + '" id="product_id_' + nxtCount + '"></td>'
+'<td class="text-right"><input type="hidden" name="row[' + nxtCount + '][unit_price][]" id="product_price_' + nxtCount + '" value="' + product_price + '"><input type="hidden" name="row[' + nxtCount + '][item_cost][]" id="item_cost_' + nxtCount + '" value="' + item_cost + '"><input type="number" style="width:50px;" name="row[' + nxtCount + '][item_price_p][]" id="item_price_p_' + nxtCount + '" value="' + item_ex_val + '"  onchange="addextraprice();">+' + product_price_dis + '</td>'
+'<td><input type="text" class="form-control text-center rquantity" name="row[' + nxtCount + '][qty][]" value="' + qty + '" id="quantity_' + nxtCount + '" onclick="this.select(); setTmpVal(this.value);" onchange="changeQtyByProductID(this.value,' + nxtCount + ');"></td>'
+'<td class="text-right"><span class="text-right sdiscount text-danger" id="sdiscount_1446800197032"><input type="text" name="row[' + nxtCount + '][discount][]" value="' + item_dis + '" id="discount_' + nxtCount + '" onclick="this.select(); setTmpVal(this.value);" onchange="changeDiscountByProductID(this.value,' + nxtCount + ');" style="width:50px;"> </span><input type="hidden" name="row[' + nxtCount + '][discount_val][]" value="' + discount_val + '" id="discount_val_' + nxtCount + '"><input type="hidden" name="row[' + nxtCount + '][discount_val_tot][]" value="' + discount_val_tot + '" id="discount_val_tot_' + nxtCount + '"></td>'
+'<td class="text-right"><span class="text-right ssubtotal" id="subtotal_' + nxtCount + '">' + sub_total_item + '</span><input type="hidden" name="row[' + nxtCount + '][gross_total][]" value="0" id="gross_total_' + nxtCount + '">&nbsp;</td>'
+'<td><a onclick="deleteSalesItem(' + nxtCount + ')"><i class="fa fa-times tip podel" id="1446800197032" title="Remove" style="cursor:pointer;"></i></a><input type="hidden"  id="stock_qty' + nxtCount + '" value="' + item_qty + '" ></td></tr>');
            calculateTotal();
        } //end error check
    } else {
        bootbox.alert("Not enough quntity in stock!");
    }
}

function changeQtyByProductID(qty, nxtCount) {
    calculateTotal();
}

function changeDiscountByProductID(discount, nxtCount, product_id) {
    calculateTotal();
}

function changePaidValue(paid) {
    if (isNaN(paid)) {
        displayNotice('page', 'Invalid Paid Amount');
        var oldVal = $('#tmpVal').val();
        $('#paid').val(oldVal); //set last val
    } else {
        calculateTotal();
        $('#paid').val(convertToAmount(paid));
    }
}

function setTmpVal(val) {
    $('#tmpVal').val(val);
}

function convertToAmount(val) {
    var disval = val; //+'.00'; //.toFixed(val);
    return accounting.formatMoney(disval, "", 2, ",", "."); // €4.999,99 
}

function changeMainDiscount(val) {
    calculateTotal();
}
/* check is added produtct */
function isAddedProduct(pid) {
    var rowCount = parseInt($('#rowCount').val());
    for (i = 1; i <= rowCount; i++) {
        var product_fld = '#product_id_' + i;
        var product_id = parseInt($(product_fld).val());
        if (product_id == pid) {
            var quantity_fld = '#quantity_' + i;
            var quantity_val = parseFloat($(quantity_fld).val());
            var add_qty = 0;
            var qty = prompt("Enter Quantity:", "1");
            var txt = "";
            if (qty == null || qty == "") {
                return "error";
            } else {}
            if (!isNaN(qty)) $(quantity_fld).val(parseFloat(quantity_val) + parseFloat(qty));
            else return "error";
            var tmpFld = "#quantity_" + i;
            $(tmpFld).focus();
            $(tmpFld).select();
            return 1;
        } else {
			
        }
    }
}
/* end check is added produtct */
function calculateTotal() {
    //get row
    var rowCount = parseInt($('#rowCount').val());
    var quantity_tot = 0;
    var product_price_tot = 0;
    var subtotal = 0;
    var subtotal_item = 0;
    var balance = 0;
    var paid = 0;
    var cost_total = 0;
    var cr_interests = 0;
    for (i = 1; i <= rowCount; i++) {
        var quantity_fld = '';
        var cost_fld = '';
        var quantity_fld = '#quantity_' + i;
        var item_cost_fld = '#item_cost_' + i;
        var subtotal_fld = '#subtotal_' + i;
        var discount_fld = '#discount_' + i;
        var discount_val_fld = '#discount_val_' + i;
        var product_price_fld = '#product_price_' + i;
        var item_price_p_fld = '#item_price_p_' + i;
        var gross_total_fld = '#gross_total_' + i;
        var stock_qty_fld = '#stock_qty' + i;
        var quantity_val = parseFloat($(quantity_fld).val());
        var item_cost_val = parseFloat($(item_cost_fld).val());
        var discount_val = parseFloat($(discount_fld).val());
        var product_price_val = parseFloat($(product_price_fld).val());
        var item_price_p_val = parseFloat($(item_price_p_fld).val());
        var stock_qty_val = parseFloat($(stock_qty_fld).val());       
        var paid = parseFloat($('#paid').val());
        var sale_inv_discount = ($('#sale_inv_discount').val());
		
		//feald checking befor calculation start
		
		//check whether stock available
		if(quantity_val>stock_qty_val){			
			bootbox.alert("Not enough quntity in stock!");
			quantity_val=1;
			$(quantity_fld).val(quantity_val);			
		}
		//validate qty
		if(quantity_val<=0){			
			bootbox.alert("Worng Entry! Check again, You can not add negative values");
			quantity_val=1;
			$(quantity_fld).val(quantity_val);			
		}
		//if qty field not a number
		if(isNaN(quantity_val)){			
			//cannotLeaveEmpty();
			quantity_val=1;
			$(quantity_fld).val(quantity_val);			
		}
		//if discount not a number
		if(isNaN(discount_val)){			
			//cannotLeaveEmpty();
			discount_val=0;
			$(discount_fld).val(discount_val);			
		}
		//if not added price not a number
		if(isNaN(item_price_p_val)){			
			//cannotLeaveEmpty();
			item_price_p_val=0;
			$(item_price_p_fld).val(item_price_p_val);			
		}		
		//feald checking befor calculation end		
		
		product_price_val = product_price_val + item_price_p_val;	
        quantity_tot = quantity_tot + quantity_val;
		
        if (item_cost_val) {
            cost_total = cost_total + (item_cost_val * quantity_val);
            //set item total
            var price = 0; 
			var afterDiscount = 0;
			
            price = product_price_val * quantity_val;
            //text box exist check, for when delete item
            if ($(discount_fld).length) {
                ds = $(discount_fld).val();
            } else {
                ds = '';
            }
            //set temp val
            //$('#tmpVal').val(ds);
            var error = false;
            tmpDisVal = 0;
            if (ds.indexOf("%") !== -1) {
                var pds = ds.split("%");
                if (!isNaN(pds[0])) {
                    afterDiscount = price - (price * pds[0] / 100);
                    tmpDisVal = price * pds[0] / 100;
                } else {
                    error = true;
                }
            } else {
                if (!isNaN(ds)) {
                    afterDiscount = price - (ds*quantity_val);
                    tmpDisVal = (ds*quantity_val);
                    //alert('ds:'+ds);
                } else {
                    error = true;
                }
            }
            if (error) {
                $(discount_fld).val($('#tmpVal').val());
                bootbox.alert('Error! Invalid Discount', function() {});
                //set old value
                ds = $('#tmpVal').val();
                if (ds.indexOf("%") !== -1) {
                    var pds = ds.split("%");
                    if (!isNaN(pds[0])) {
                        afterDiscount = price - (price * pds[0] / 100);
                        tmpDisVal = price * pds[0] / 100;
                    } else {
                        error = true;
                    }
                } else {
                    if (!isNaN(ds)) {
                        afterDiscount = price - ds;
                        tmpDisVal = ds;
                    } else {
                        error = true;
                    }
                }
            }
            //alert(afterDiscount);
            //Set discount fld value
            $(discount_val_fld).val(tmpDisVal);
            $('#cost_total').val((cost_total));
            //alert(afterDiscount);
            $(gross_total_fld).val((afterDiscount));
            $(subtotal_fld).text(convertToAmount(afterDiscount));
            //alert(afterDiscount);
            /* end calculate discount*/
        }
        var product_price_fld = '';
        product_price_fld = '#product_price_' + i;
        var product_price_val = parseFloat($(product_price_fld).val());
        if (isNaN(product_price_val)) {} else {
            subtotal = subtotal + (afterDiscount);
        }
    }
    //discount calculation
    var inv_discount = 0;
    //if(isNaN(sale_inv_discount)) 
    {}
    //else
    {
        //var tds=sale_inv_discount;
        //inv_discount=sale_inv_discount;
        //subtotal=subtotal-inv_discount;
        var item_discount = 0,
            discount = sale_inv_discount;
        //alert(discount);
        ds = discount ? discount : '0';
        //var str = "Hello world, % to the universe.";
        var n = ds.indexOf("%");
        //alert(n);
        //if (ds.indexOf("%") !== -1) 
        {}
        //alert(ds);	
        if (ds.indexOf("%") !== -1) {
            var pds = ds.split("%");
            //alert(pds[0]);
            if (!isNaN(pds[0])) {
                //alert(pds[0]);
                if (pds[0] == '') {
                    alert('invalid discount');
                    $('#sale_inv_discount').val();
                } else if (pds[0] == '%') {
                    alert('invalid discount');
                    $('#sale_inv_discount').val();
                } else {
                    inv_discount = parseFloat(((subtotal) * parseFloat(pds[0])) / 100);
                }
            } else {
                alert('invalid discount');
                $('#sale_inv_discount').val();
            }
        } else {
            if (isNaN(ds)) {
                alert('invalid discount');
                $('#sale_inv_discount').val();
            } else {
                inv_discount = ds;
            }
            // inv_discount = parseFloat(ds);
        }
        //alert(item_discount);
    }
    var gross_total = subtotal; //set grand total
    subtotal = subtotal - inv_discount;
    //display val
    $('#qtyTotal').text(convertToAmount(quantity_tot));
    $('#Subtotal').text(convertToAmount(gross_total));
    //if(balance>0)
    {
        $('#balance_dis').text(convertToAmount(balance));
    }
    $('#sale_total').val(subtotal);
    $('#sale_paid').val(paid);
    $('#sale_balance').val(balance);
    $('#sale_inv_discount_amount').val(inv_discount);
    //alert(sale_inv_discount);
    //footer amount bar
    $('#titems').text(quantity_tot);
    $('#gtotal').text(convertToAmount(subtotal));
    $('#tds').text(convertToAmount(inv_discount));
    $('#f_total').text(convertToAmount(gross_total));
    //set cursser to update qty
    var tmp = $("#rowCount").val();
    var tmpFld = "#quantity_" + tmp;
    $(tmpFld).focus();
    $(tmpFld).select();
}
for (var key in localStorage) {
    //console.log(key + ':' + localStorage[key]);
}
$('#comment').keypress(function(event) {
    if (event.keyCode == 10 || event.keyCode == 13) event.preventDefault();
});
//************** reset function *******
$('#reset').click(function(e) {
    bootbox.confirm("Are you sure?", function(result) {
        if (result) {
            $('body').modalmanager('loading');
            location.reload();
        }
    });
});
//************** end reset function ***

function cannotLeaveEmpty(){
bootbox.alert("Worng Entry! Check again, You can not leave empty");	
}





