var itemsTable = 'itemsTable';
var items = new Array();
var displayArray = new Array();
var searchedProducts = new Array();
var ajax_url = "index.php?module=EcmStockDocCorrects&action=javahelper&to_pdf=1";

//custom Fill Table

function calculateAll() {
    var count = $('#' + itemsTable + '_T tr').length - 1; // -1 - thead row
    for (var index = 0; index != count; index++) {
        calculateRow(index);
    }
}

function calculateRow(index) {
	if (index == -1)
		return;
	items[index].quantity_consignment_id = $('#quantity_consignment_id_'+index).val();
	items[index].quantity_consignment_doc = $('#quantity_consignment_doc_'+index).val();
	if($('#type').val()!='8a6b804b-fac7-5cc2-de19-54c209116b19'){
		getConsignmentsDiv(index);
	} else {
		getInsertConsignmentsDiv(index);
	}
	  
	   
	// liczone według najlepszych zasad księgowości
	var price = UnformatNumber($('#price_' + index).val());
	var price_old = UnformatNumber($('#price_old_' + index).val());
	var quantity = UnformatNumber($('#quantity_' + index).val());


	//alert(palet);
	var total = price * quantity;
var total2 = price_old * quantity;
	// put data
	$('#product_total_' + index).val(FormatNumber(total));

	// put data to items array
	items[index].price = toFixed(price, 2);
	items[index].price_old = toFixed(price_old, 2);

	items[index].product_total = total;
	items[index].quantity = toFixed(quantity, 2);

	items[index].name = $('#name_' + index).val();
	items[index].unit_name = $('#unit_name_' + index).val();
        if($('#type').val()=='6ed5b076-ddd1-9809-b236-54e5b2bcbd97'){
                  $('#onlyRemoveDif_'+index).remove();
         $('#unit_name_'+index).parent().append('<div id="onlyRemoveDif_'+index+'"><p style="text-align:right">(Różnica: '+FormatNumber(total-total2)+')<input type="hidden" id="diff_this_'+index+'" value="'+FormatNumber(total-total2)+'"></p></div>');
				
        }
	// calculate total
	calculateTotal();
}
function calculateTotal() {
    if($('#type').val()=='6ed5b076-ddd1-9809-b236-54e5b2bcbd97'){
        	var count = $('#' + itemsTable + '_T tr').length - 1; // -1 - thead row
	count = items.length;
	var vats = new Array();
	var all_subtotal = 0;
	var all_total = 0;
	var sum_vats = 0;
	var sum_discounts = 0;
	var weight_total=0;
	
	
	for (var index = 0; index != count; index++) {
		subtotal = UnformatNumber($('#diff_this_' + index).val());
		if(!isNaN(subtotal)){
		all_subtotal += subtotal;
		
		}

	}
	all_total = all_subtotal;

	DrawSummary();

	$("#t_netto").val(FormatNumber(all_total));
    } else {
        	var count = $('#' + itemsTable + '_T tr').length - 1; // -1 - thead row
	count = items.length;
	var vats = new Array();
	var all_subtotal = 0;
	var all_total = 0;
	var sum_vats = 0;
	var sum_discounts = 0;
	var weight_total=0;
	
	
	for (var index = 0; index != count; index++) {
		subtotal = UnformatNumber($('#product_total_' + index).val());
		if(!isNaN(subtotal)){
		all_subtotal += subtotal;
		
		}

	}
	all_total = all_subtotal;

	DrawSummary();

	$("#t_netto").val(FormatNumber(all_total));
    }

	
}
function DrawSummary() {
	$("#result_table").html('');
	html = '';
	html += '<tr id="subtotal_tr"> ';
	html += '<td class="positionsLabel" style="border-top:0px;">Suma</td>';
	html += '<td class="positionsField" style="border-top:0px;"><input type="text" style="border:0px;font-weight:900;width:100%;text-align:right;" readonly="readonly" name="t_netto" id="t_netto" value=\'\'></td>';
	html += '</tr>';
	$("#result_table").html(html);
}

// draw table
function DrawHeaders() {
	var html = '<link rel="stylesheet" type="text/css" href="modules/EcmQuotes/MyTable.css" />';
	html += '<div style="width:100%;border: 1px solid rgb(48,192,255);background-color:white;overflow:auto;" id="'
			+ itemsTable + 'DIV">';
	html += '<table class="positions" style="width:100%;" id="' + itemsTable
			+ '_T">';
	html += '<thead id="head">';
	html += '<tr id="tr">';
	// draw columns headers
	$.each(columns, function(index, column) {
		if(column.hide=='yes'){
			hide='display:none;'
		} else {
			hide='';
		}
		html += '<td width="' + column.width + '%" style="'+hide+'">' + column.label + '</td>';
	});
	html += '</tr></thead><tbody></tbody></table>';
	html += '</div><br>';
	// totals table
	html += '<table width="100%"" cellpadding="0" cellspacing="0" border="0">';
	html += '<tr>';
	html += '<td width="55%" class="dataLabel" valign="top">';
	html += '&nbsp;';
	html += '</td>                                                                               <!--color:#b3b9cf;-->';
	html += '<td width="40%" class="dataField" style="text-align: left;">';
	html += '<br>';
	html += '<table  id="result_table" cellpadding="0" cellspacing="0" style="width:100%; height:100%; border: 1px solid rgb(48,192,255);">';
	html += '</table>';
	html += '</td>';
	html += '<td width="5%" class="dataField" style="text-align: left;">&nbsp;</td>';
	html += '</tr>';
	html += '</table>';
	// sort? why not!
	/*
	 * html += 'Sortowanie:&nbsp;'; html += '<select id="sort_field"
	 * onChange="sortTable();"'; html += '<option value=""></option>'; html += '<option
	 * value="name">Nazwa</option>'; html += '<option value="code">Kod</option>';
	 * html += '<option value="category">Kategoria</option>'; html += '<option
	 * value="category">Kategoria</option>'; html += '<option
	 * value="price">Cena po<br>upuście</option>'; html += '<option
	 * value="total">Wartość</option>'; html += '</select>';
	 */
	$('#' + itemsTable).html(html);
}
/*
function searchProducts() {
	var searchKey = $('#searchProductsInput').val();
	if (searchKey.length < 2 && searchKey != '%') {
		return;
	}
	$("#searchResultDiv").html(
			'<img src="modules/EcmQuotes/images/loading.gif"/>');
	setTimeout(function() {
		if (searchKey == $('#searchProductsInput').val()) {
			var params = {
				job : 'searchProducts',
				searchKey : searchKey,
				searchCategory : $("#productSearchCategory :selected").val(),
				searchStock : $("#productSearchStock :selected").val(),
				searchSort : $("#productSearchSort :selected").val(),
				searchStockId : $("#stock :selected").val(),
			};

			$.ajax({
				type : "POST",
				url : ajax_url,
				dataType : "json",
				success : function(data) {
					if (data != '-1')
						if (data.length == 0)
							$('#searchResultDiv').html(
									'MOD.LBL_SEARCH_NO_RESULT');
						else
							createSearchResult(data);
				},
				data : params
			});
		}
	}, 1000);
}

function createSearchResult(data) {
	var html = '<table style="text-align: center;" cellpadding="0" cellspacing="0" width="100%" border="0" class="list view">';
	html += '<theader><tr>';
	html += '<th  style=" width: 15pt; margin: auto auto;"><input type="checkbox" name="selectall" id="selectall"></th>';
	html += '<th style=" width: 100pt; text-align: center;">Kod</th>';
	html += '<th style=" width: 300pt; text-align: center;">Nazwa</th>';
	if ($("#productSearchStock :selected").val() != '1')
		html += '<th  style=" width: 30pt; text-align: center;">Stan</th>';

	html += '</tr></thead>';
	var counter;
	$
			.each(
					data,
					function(index, value) {
						if(counter%2==0){
							html += '<tr style="height: 15pt;" class="oddListRowS1">';
						} else {
							html += '<tr style="height: 15pt;" class="evenListRowS1">';
						}
						html += '<td style=""><input id="prod_'
								+ value.id + '"  name="prod_s" type="checkbox"/></td>';
						html += '<td style="" onClick="$(\'#prod_'
								+ value.id
								+ '\').prop(\'checked\', true);">'
								+ value.code + '</td>';
						html += '<td style="" onClick="unsetAllCheckboxes(); $(\'#prod_'
								+ value.id
								+ '\').prop(\'checked\', true); return addProducts();">'
								+ value.name + '</td>';
						if ($("#productSearchStock :selected").val() != '1')
							html += '<td style="">'
									+ value.stock_state + '</td>';
						html += '</tr>';
						searchedProducts.push(value.id);
						counter++;
					});
	// add button
	html += '</table><br>';
	html += 'Ilość:&nbsp<input type="text" id="searchInputQty" value=""/>';
	html += '<br><br><input type="button" value="Dodaj wiele" onClick="return addProducts();"/>';
	$('#searchResultDiv').html(html);
	
}

function unsetAllCheckboxes() {
	$("#searchResultDiv input[type=checkbox]").each(function() {
		$(this).prop("checked", false);
	});
}
*/
function addProducts() {
	$(".loading_panel").css("display", "block");
	clearEmpty();
	var products = new Array();
	$.each(searchedProducts, function(index, value) {
		if ($('#prod_' + value).is(':checked'))
			products[value] = true;
	});
	var stockId=$("#stock_id").val();
	for ( var key in products) {
		var params = {
			job : 'getProduct',
			id : key,
			stockId : stockId,
		};
		$.ajax({
			type : "POST",
			url : ajax_url,
			dataType : "json",
			async : false,
			success : function(data) {
				if (data != '-1') {
					var p = new Object();
					p.product_id = data.id;
					p.name = data.name;
					p.product_code = data.code;
					p.price = data.price;
					p.unit_name = data.unit_name;
					p.unit_id = data.unit_id;
					p.ecmvat_id = data.ecmvat_id;
					p.ecmvat_value = data.ecmvat_value;
					p.ecmvat_name = data.ecmvat_name;
					p.stock_state = data.stock_state;
					p.product_category_id = data.product_category_id;
					p.product_precision = data.unit_precision; 
					p.unit_precision = data.unit_precision; 
					p.product_is_consignment = data.is_consignment;
					if ($("#searchInputQty").val() != ''
							&& !isNaN(parseFloat(UnformatNumber($(
									"#searchInputQty").val()))))
						p.quantity = $("#searchInputQty").val();
					items.push(p);
					console.log(p);
				}
			},
			data : params
		});
	}
	AddSearchRecord();
	FillTable(items);
	calculateAll();
	// clear results
	$('#searchResultDiv').html('');
	searchedProducts = new Array();
	$('#searchProductsInput').val('');

	$(".loading_panel").css("display", "none");
}

function AddProduct(index,record){
	$(".loading_panel").css("display", "block");
	var record;
	var pricebook = $("#pricebook_id :selected").val();

		var params = {
				job : 'getProduct',
				id : record,
				stockId : $("#stock_id").val(),
			};
			$.ajax({
				type : "POST",
				url : ajax_url,
				dataType : "json",
				async : false,
				success : function(data) {
					if (data != '-1') {
						
						items[index].product_id = data.id;
						items[index].name = data.name;
						items[index].product_code = data.code;
						items[index].product_id = data.id;
						items[index].ecmvat_id = data.ecmvat_id;
						items[index].ecmvat_value = data.ecmvat_value;
						items[index].ecmvat_name = data.ecmvat_name;
						items[index].product_ean = data.ean;
						items[index].discount = data.discount;
						items[index].product_ean2 = data.ean2;
						items[index].unit_name = data.unit_name;
						items[index].unit_id = data.unit_id;
						items[index].price_start = data.price_start;
						items[index].recipient_code = data.recipient_code;
						items[index].stock_state = data.stock_state;
						items[index].product_precision = data.unit_precision; 
						items[index].unit_precision = data.unit_precision; 
						items[index].product_is_consignment = data.is_consignment;
						if ($("#searchInputPrice").val() != ''
								&& !isNaN(parseFloat(UnformatNumber($(
										"#searchInputPrice").val()))))
							items[index].price_start = $("#searchInputPrice").val();
						if ($("#searchInputQty").val() != ''
								&& !isNaN(parseFloat(UnformatNumber($(
										"#searchInputQty").val()))))
							items[index].quantity = $("#searchInputQty").val();
						
					}
				},
				data : params
			});
	AddSearchRecord();
	FillTable(items);
	calculateAll();
	$('#searchResultDiv').html('');
	$(".loading_panel").css("display", "none");
    $("#quantity_"+index).focus().select();
}

function getItems(editview) {
	var record = '';
	if ($("#duplicate").val() == true)
		record = $("input[name='return_id']").val();
	else
		record = $("input[name='record']").val();
	if (isNaN(editview))
		editview = true;
	var params = {
		job : 'getItems',
		record : record,
	};
	$.ajax({
		type : "POST",
		url : ajax_url,
		dataType : "json",
		success : function(data) {
			items = data;
			if (editview)
				FillTable(items, false);
			else {
				FillTable(items, true);
					var count = $('#' + itemsTable + '_T tr').length - 1; // -1 - thead row
				for (var index = 0; index != count; index++) {
					if (items[index].product_consignment_doc) {
						$('#product_code_'+index).parent().append($( "<p>"+items[index].product_consignment_doc+"</p>" ));
					}
				}
			}
			$(".loading_panel").css("display", "none");
		},
		data : params
	});
}

function DrawDetailSummary() {
	$("#result_table").html('');
	html = '';
	html += '<tr id="subtotal_tr"> ';
	html += '<td class="positionsLabel" style="border-top:0px;">Suma dokumentu</td>';
	html += '<td class="positionsField" style="border-top:0px;"><input type="text" style="border:0px;font-weight:900;width:100%;text-align:right;" readonly="readonly" name="t_netto" id="t_netto" value=\''
			+ $("#doc_total").val() + '\'></td>';
	html += '</tr>';
	$("#result_table").html(html);
}

function generateNumber() {
	var params = {
		job : 'generateNumber',
		stock: $("#stock_id").val(),
		date : 	$("#register_date").val(),
	};
	$.ajax({
		type : "POST",
		url : ajax_url,
		dataType : "json",
		success : function(data) {
			if (data == '-1') {
				// try loading again
				generateNumber();
			} else {
				$("#document_no").val(data.document_no);
				$("#number").val(data.number);
				$(".loading_panel").css("display", "none");
			}
		},
		data : params
	});
}
function getCategoriesList() {
	var params = {
		job : 'getCategoriesList'
	};

	$.ajax({
		type : "POST",
		url : ajax_url,
		dataType : "json",
		success : function(data) {
			var html = '<option value=""></option>';
			$.each(data, function(index, value) {
				html += '<option value="' + value.id + '">' + value.name
						+ '</option>';
				$("#productSearchCategory").html(html);
			});
		},
		data : params
	});
}

function refreshStock(index) {
	var params = {
		job : 'getStockState',
		id : $("#product_id_" + index).val(),
		stockId : $("#stock_id").val(),
	};

	$.ajax({
		type : "POST",
		url : ajax_url,
		dataType : "json",
		async : false,
		success : function(data) {
			$("#stock_state_" + index).val(FormatNumber(data));
		},
		data : params
	});
}

function checkProducts() {
	//var count = $('#' + itemsTable + '_T tr').length - 1; // -1 - thead row
	var count = items.length;
	var error = false; // hope :)
	for (var index = 0; index != count; index++) {
		if($("#product_id_" + index).val()!=''){
			refreshStock(index);
			var qty = UnformatNumber($("#quantity_" + index).val());
			var cat_id = $("#product_category_id_" + index).val();
			var con_qty = $("#product_consignment_qty_" + index).val();
			var stock = UnformatNumber($("#stock_state_" + index).val());
			var price_new = UnformatNumber($("#price_" + index).val());
			var price_old = UnformatNumber($("#price_old_" + index).val());
			// refresh items array
			items[index].quantity = qty;
			if ($('#product_is_consignment_' + index).val() != '1' && $('#product_consignment_id_' + index).val()=='' ) {	
				con_qty=stock;
			}
			items[index].price = UnformatNumber($("#price_" + index).val());
			// przecena
			if ($('#type').val() == '6ed5b076-ddd1-9809-b236-54e5b2bcbd97') {
				if($('#product_consignment_id_' + index).val()==''){
					error=true;
					alert("Można przecenić tylko konkretną pozycje!");
				}
				if(qty<=0 || qty<con_qty || price_new==price_old || price_new<=0){ 
					error = true;
					$("#quantity_" + index).css("color", "red");

				} else {
					$("#quantity_" + index).css("color", "black");
				}
			}
			// korekta minus
			console.log(qty+' '+con_qty+' '+Math.abs(qty));
			if ($('#type').val() == '7bb903d0-c296-7d1b-6e50-54c209e30850') {
				if(qty>=0 || Math.abs(qty)>con_qty){ 
	
					error = true;
					$("#quantity_" + index).css("color", "red");

				} else {
					$("#quantity_" + index).css("color", "black");
				}
			}
			// korekta plus
			if ($('#type').val() == '8a6b804b-fac7-5cc2-de19-54c209116b19') {
				if(qty<=0 || price_new<=0){
					error = true;
					$("#quantity_" + index).css("color", "red");

				} else {
					$("#quantity_" + index).css("color", "black");
				}
			}
		}

	}
	if (error)
		return false;
	else
		return true;
}

function getComponents(index) {
	$(".loading_panel").css("display", "block");
	var product_id = items[index].product_id;
	var qty = items[index].quantity;
	//var price = items[index].price;

	var params = {
		job : 'getComponents',
		product_id : product_id,
	};
	$.ajax({
		type : "POST",
		url : ajax_url,
		dataType : "json",
		async : false,
		success : function(data) {
			if (data.length > 0) {
				items.splice(index, 1);
				$.each(data, function(index, value) {
					var p = new Object();
					p.product_id = value.id;
					p.name = value.name;
					p.product_code = value.code;
					p.price = value.price;
					p.unit_name = value.unit_name;
					p.unit_id = value.unit_id;
					p.quantity = qty * parseInt(value.quantity);
					p.product_category_id = value.product_category_id;
					
					if (p.product_category_id=='d7f876b0-1a3d-43a1-7c9b-511ba40df3d1')
						return;
					items.push(p);
				});
			};
		},
		data : params
	});
	FillTable(items);
	 //getConsignmentsDiv(index);
	$(".loading_panel").css("display", "none");
}

// sortable rows in main table
$("#" + itemsTable + " tbody").sortable();