var Productos = function(){
	this.baseUrl=null;
	this.editMode=false;
	this.editItem=null;
	this.setUrl=function(url){
		this.baseUrl=url;
	}
	this.cargar=function(){
		var tableInventario = $('#tableInventario').DataTable();
		tableInventario.ajax.reload();
		setTimeout(function () { $('div.dataTables_filter input').focus(); }, 100);
	}
	this.agregarPresentacion=function(){
		var $sender=$("#nproducto-presentaciones-agregar-presentancion-btn");
		$sender.attr('disabled','disabled');
		var $nPresentacionFields=$("#nueva-presentacion-fields-wrapper");
		var fieldsValid=true; 
		$('.invalid-input-field').removeClass('invalid-input-field');
		$nPresentacionFields.find("input[data-required='required']").each(function(i, el){
			var $input=$(el);
			if($.trim($input.val())==''){
				fieldsValid=false;
				toastr.options={"closeButton": true,"progressBar": true,"positionClass":"toast-top-right"};
				toastr.error('Rellene todos los campos requeridos para poder agregar esta presentaci&oacute;n');
				$input.addClass('invalid-input-field');
				$input.focus();
			}
			return fieldsValid;
		});
		if(fieldsValid){
			var $PresentacionesWrapper=$("#nuevo-producto-presentaciones-wrapper");
			var presentacionHtml="<div class='nproducto-presentacion-tools'>";
			presentacionHtml+="<button type='button' class='btn btn-xs btn-warning'><i class='fa fa-pencil'></i></button>";
			presentacionHtml+=" <button type='button' class='btn btn-xs btn-danger'><i class='fa fa-times'></i></button>";
			presentacionHtml+="</div>";
			presentacionHtml+="<h4 class='nproducto-presentacion-item-nombre''>"+$('#desc_presentacion_producto').val()+"</h4>";
			presentacionHtml+="<label>SKU:</label><span class='nproducto-presentacion-item-sku''>"+$('#sku_presentacion_producto').val()+"</span><br>";
			presentacionHtml+="<label>Equivalente:</label><span class='nproducto-presentacion-item-unidades'><i>"+$('#uquivalentes_presentacion_producto').val()+"</i> "+$('#umedida_producto').val()+"</span><br>";
			presentacionHtml+="<label>Precio 1:</label><span class='nproducto-presentacion-item-precio1'> <i class='data'>"+$('#precio1_presentacion_producto').val()+"</i> % </span>";
			if($.trim($('#precio1_coma_presentacion_producto').val())!='')
				presentacionHtml+=" <label>C. May.:</label> <span class='nproducto-presentacion-item-precio1-coma'><i class='data'>"+$('#precio1_coma_presentacion_producto').val()+"</i> % </span>";
			if($.trim($('#precio1_comi_presentacion_producto').val())!='')
				presentacionHtml+=" <label>C. Min.:</label> <span class='nproducto-presentacion-item-precio1-comi'><i class='data'>"+$('#precio1_comi_presentacion_producto').val()+"</i> % </span>";
			presentacionHtml+="<br>";
			if($.trim($('#precio2_presentacion_producto').val())!=''){
				presentacionHtml+="<label>Precio 2:</label><span class='nproducto-presentacion-item-precio2'> <i class='data'>"+$('#precio2_presentacion_producto').val()+"</i> %";
				if($('#precio2_presentacion_req_producto').is(':checked'))
					presentacionHtml+=" <i class='fa fa-lock'></i>";
				presentacionHtml+="</span>";
				if($.trim($('#precio2_coma_presentacion_producto').val())!='')
					presentacionHtml+=" <label>C. May.:</label> <span class='nproducto-presentacion-item-precio2-coma'><i class='data'>"+$('#precio2_coma_presentacion_producto').val()+"</i> % </span>";
				if($.trim($('#precio2_comi_presentacion_producto').val())!='')
					presentacionHtml+=" <label>C. Min.:</label> <span class='nproducto-presentacion-item-precio2-comi'><i class='data'>"+$('#precio2_comi_presentacion_producto').val()+"</i> % </span>";
				presentacionHtml+="<br>";
			}
			if($.trim($('#precio3_presentacion_producto').val())!=''){
				presentacionHtml+="<label>Precio 3:</label><span class='nproducto-presentacion-item-precio3'> <i class='data'>"+$('#precio3_presentacion_producto').val()+"</i> %";
				if($('#precio3_presentacion_req_producto').is(':checked'))
					presentacionHtml+=" <i class='fa fa-lock'></i>";
				presentacionHtml+="</span>";
				if($.trim($('#precio3_coma_presentacion_producto').val())!='')
					presentacionHtml+=" <label>C. May.:</label> <span class='nproducto-presentacion-item-precio3-coma'><i class='data'>"+$('#precio3_coma_presentacion_producto').val()+"</i> % </span>";
				if($.trim($('#precio3_comi_presentacion_producto').val())!='')
					presentacionHtml+=" <label>C. Min.:</label> <span class='nproducto-presentacion-item-precio3-comi'><i class='data'>"+$('#precio3_comi_presentacion_producto').val()+"</i> % </span>";
				presentacionHtml+="<br>";
			}
			if($.trim($('#precio4_presentacion_producto').val())!=''){
				presentacionHtml+="<label>Precio 4:</label><span class='nproducto-presentacion-item-precio4'> <i class='data'>"+$('#precio4_presentacion_producto').val()+"</i> %";
				if($('#precio4_presentacion_req_producto').is(':checked'))
					presentacionHtml+=" <i class='fa fa-lock'></i>";
				presentacionHtml+="</span>";
				if($.trim($('#precio4_coma_presentacion_producto').val())!='')
					presentacionHtml+=" <label>C. May.:</label> <span class='nproducto-presentacion-item-precio4-coma'><i class='data'>"+$('#precio4_coma_presentacion_producto').val()+"</i> % </span>";
				if($.trim($('#precio4_comi_presentacion_producto').val())!='')
					presentacionHtml+=" <label>C. Min.:</label> <span class='nproducto-presentacion-item-precio4-comi'><i class='data'>"+$('#precio4_comi_presentacion_producto').val()+"</i> % </span>";
				presentacionHtml+="<br>";
			}
			if($.trim($('#precio5_presentacion_producto').val())!=''){
				presentacionHtml+="<label>Precio 5:</label><span class='nproducto-presentacion-item-precio5'> <i class='data'>"+$('#precio5_presentacion_producto').val()+"</i> %";
				if($('#precio5_presentacion_req_producto').is(':checked'))
					presentacionHtml+=" <i class='fa fa-lock'></i>";
				presentacionHtml+="</span>";
				if($.trim($('#precio5_coma_presentacion_producto').val())!='')
					presentacionHtml+=" <label>C. May.:</label> <span class='nproducto-presentacion-item-precio5-coma'><i class='data'>"+$('#precio5_coma_presentacion_producto').val()+"</i> % </span>";
				if($.trim($('#precio5_comi_presentacion_producto').val())!='')
					presentacionHtml+=" <label>C. Min.:</label> <span class='nproducto-presentacion-item-precio5-comi'><i class='data'>"+$('#precio5_comi_presentacion_producto').val()+"</i> % </span>";
				presentacionHtml+="<br>";
			}
			if(this.editMode){
				var $wrapper=this.editItem.find('.contact-box');
				$wrapper.empty();
				$wrapper.append(presentacionHtml);
				this.cancelarEditarPresentacion();
			}else{
				var presentacionWrapperHtml="<div class='col-xs-6 p-h-xs nproducto-presentacion-item-wrapper' data-presentacion=''>";
				presentacionWrapperHtml+="<div class='contact-box' style='padding:10px 20px;'>";
				presentacionWrapperHtml+=presentacionHtml;
				presentacionWrapperHtml+="</div>";
				presentacionWrapperHtml+="</div>"; 
				$PresentacionesWrapper.append(presentacionWrapperHtml);
				/*Limpieza*/
				$nPresentacionFields.find("input[type='text']").each(function(i,input){
					if(i==0)
						$(input).focus();
					$(input).val('');
				});
				$nPresentacionFields.find("input[type='number']").each(function(i,input){$(input).val('');});
				$nPresentacionFields.find("input[type='checkbox']").each(function(i,input){$(input).prop('checked',false);});
				$("#precio4_presentacion_req_producto").prop('checked',true);
				$("#precio5_presentacion_req_producto").prop('checked',true);
			}		
		}
		$sender.removeAttr('disabled');
	}
	this.editarPresentacion=function($item){
		if(!this.editMode){
			this.editMode=true;
			this.editItem=$item;
			$('#nueva-presentacion-edit-alert').find('strong').text($item.find('.nproducto-presentacion-item-nombre').text());
			$('#nueva-presentacion-edit-alert').show();
			$('#id_presentacion_producto_editar').val($item.attr('data-presentacion'));
			var $contactBox=$item.find('.contact-box');
			$('#sku_presentacion_producto').val($item.find('.nproducto-presentacion-item-sku').text());
			$('#desc_presentacion_producto').val($item.find('.nproducto-presentacion-item-nombre').text());
			$('#uquivalentes_presentacion_producto').val($item.find('.nproducto-presentacion-item-unidades i').text());
			$('#precio1_presentacion_producto').val($item.find('.nproducto-presentacion-item-precio1 i.data').text());
			$('#precio1_coma_presentacion_producto').val($item.find('.nproducto-presentacion-item-precio1-coma i.data').text());
			$('#precio1_comi_presentacion_producto').val($item.find('.nproducto-presentacion-item-precio1-comi i.data').text());
			/**/
			$('#precio2_presentacion_producto').val($item.find('.nproducto-presentacion-item-precio2 i.data').text());
			$('#precio2_coma_presentacion_producto').val($item.find('.nproducto-presentacion-item-precio2-coma i.data').text());
			$('#precio2_comi_presentacion_producto').val($item.find('.nproducto-presentacion-item-precio2-comi i.data').text());
			if($item.find('.nproducto-presentacion-item-precio2 i.fa-lock').length)
				$('#precio2_presentacion_req_producto').prop('checked',true);
			$('#precio3_presentacion_producto').val($item.find('.nproducto-presentacion-item-precio3 i.data').text());
			$('#precio3_coma_presentacion_producto').val($item.find('.nproducto-presentacion-item-precio3-coma i.data').text());
			$('#precio3_comi_presentacion_producto').val($item.find('.nproducto-presentacion-item-precio3-comi i.data').text());
			if($item.find('.nproducto-presentacion-item-precio3 i.fa-lock').length)
				$('#precio3_presentacion_req_producto').prop('checked',true);
			$('#precio4_presentacion_producto').val($item.find('.nproducto-presentacion-item-precio4 i.data').text());
			$('#precio4_coma_presentacion_producto').val($item.find('.nproducto-presentacion-item-precio4-coma i.data').text());
			$('#precio4_comi_presentacion_producto').val($item.find('.nproducto-presentacion-item-precio4-comi i.data').text());
			if($item.find('.nproducto-presentacion-item-precio4 i.fa-lock').length)
				$('#precio4_presentacion_req_producto').prop('checked',true);
			$('#precio5_presentacion_producto').val($item.find('.nproducto-presentacion-item-precio5 i.data').text());
			$('#precio5_coma_presentacion_producto').val($item.find('.nproducto-presentacion-item-precio5-coma i.data').text());
			$('#precio5_comi_presentacion_producto').val($item.find('.nproducto-presentacion-item-precio5-comi i.data').text());
			if($item.find('.nproducto-presentacion-item-precio5 i.fa-lock').length)
				$('#precio5_presentacion_req_producto').prop('checked',true);
			$("#nproducto-presentaciones-agregar-presentancion-btn").text('Modificar');
			var editMask="<div class='nproducto-presentacion-item-mask' style='position:absolute;width:"+parseFloat($contactBox.width()+40)+"px;height:"+parseFloat($contactBox.height()+19)+"px;top:0px;left:0px;background-color:rgba(255,255,255,0.8)'>";
			editMask+="<h2 style='display:block;text-align:center;'>Editando</h2><div style='display:block;text-align:center;'><button type='button' class='btn btn-danger btn-sm'>Cancelar</button></div></div>";
			$contactBox.append(editMask);
			$('#sku_presentacion_producto').focus();
		}
	}
	this.cancelarEditarPresentacion=function(){
		if(this.editMode){
			var $nPresentacionFields=$("#nueva-presentacion-fields-wrapper");
			$nPresentacionFields.find("input[type='text']").each(function(i,input){
				if(i==0)
					$(input).focus();
				$(input).val('');
			});
			$('#id_presentacion_producto_editar').val('');
			$nPresentacionFields.find("input[type='number']").each(function(i,input){$(input).val('');});
			$nPresentacionFields.find("input[type='checkbox']").each(function(i,input){$(input).prop('checked',false);});
			$("#precio4_presentacion_req_producto").prop('checked',true);
			$("#precio5_presentacion_req_producto").prop('checked',true);
			$("#nproducto-presentaciones-agregar-presentancion-btn").text('Agregar');
			$('#nueva-presentacion-edit-alert').hide();
			this.editItem.find('.nproducto-presentacion-item-mask').remove();
			this.editMode=false;
			this.editItem=null;
		}
	} 
	this.quitarPresentacion=function($item){
		if(!this.editMode)
			$item.remove();
	}
	this.guardar=function(e,actionform){
		var form = $("#nproducto-form");
		var _this = this;
		$(form).find("button[type='submit']").attr('disabled','disabled');
		 var presentaciones=[];
		 presentaciones.push({sku:$("#sku_producto").val(),pre:$("#id_presentacion").val(),desc:$("#desc_producto").val(),uquiv:1,pp1:$("#precio1_p_producto").val(),p1:$("#precio1_producto").val(),p1cma:$("#precio1_coma_producto").val(),p1cmi:$("#precio1_comi_producto").val(),pp2:$("#precio2_p_producto").val(),p2:$("#precio2_producto").val(),p2au:$('#precio2_req_producto').is(':checked'),p2cma:$("#precio2_coma_producto").val(),p2cmi:$("#precio2_comi_producto").val(),pp3:$("#precio3_p_producto").val(),p3:$("#precio3_producto").val(),p3au:$('#precio3_req_producto').is(':checked'),p3cma:$("#precio3_coma_producto").val(),p3cmi:$("#precio3_comi_producto").val(),pp4:$("#precio4_p_producto").val(),p4:$("#precio4_producto").val(),p4au:$('#precio4_req_producto').is(':checked'),p4cma:$("#precio4_coma_producto").val(),p4cmi:$("#precio4_comi_producto").val(),pp5:$("#precio5_p_producto").val(),p5:$("#precio5_producto").val(),p5au:$('#precio5_req_producto').is(':checked'),p5cma:$("#precio5_coma_producto").val(),p5cmi:$("#precio5_comi_producto").val(),tipo:0});
		$('#nuevo-producto-presentaciones-wrapper > .nproducto-presentacion-item-wrapper').each(function(i,item){
			var $item=$(item);
			presentaciones.push({sku:$item.find('.nproducto-presentacion-item-sku').text(),pre:$item.attr("data-presentacion"),desc:$item.find('.nproducto-presentacion-item-nombre').text(),uquiv:$item.find('.nproducto-presentacion-item-unidades i').text(),pp1:'',p1:$item.find('.nproducto-presentacion-item-precio1 i.data').text(),p1cma:$item.find('.nproducto-presentacion-item-precio1-coma i.data').text(),p1cmi:$item.find('.nproducto-presentacion-item-precio1-comi i.data').text(),pp2:'',p2:$item.find('.nproducto-presentacion-item-precio2 i.data').text(),p2au:$item.find('.nproducto-presentacion-item-precio2 i.fa-lock').length,p2cma:$item.find('.nproducto-presentacion-item-precio2-coma i.data').text(),p2cmi:$item.find('.nproducto-presentacion-item-precio2-comi i.data').text(),pp3:'',p3:$item.find('.nproducto-presentacion-item-precio3 i.data').text(),p3au:$item.find('.nproducto-presentacion-item-precio3 i.fa-lock').length,p3cma:$item.find('.nproducto-presentacion-item-precio3-coma i.data').text(),p3cmi:$item.find('.nproducto-presentacion-item-precio3-comi i.data').text(),pp4:'',p4:$item.find('.nproducto-presentacion-item-precio4 i.data').text(),p4au:$item.find('.nproducto-presentacion-item-precio4 i.fa-lock').length,p4cma:$item.find('.nproducto-presentacion-item-precio4-coma i.data').text(),p4cmi:$item.find('.nproducto-presentacion-item-precio4-comi i.data').text(),pp5:'',p5:$item.find('.nproducto-presentacion-item-precio5 i.data').text(),p5au:$item.find('.nproducto-presentacion-item-precio5 i.fa-lock').length,p5cma:$item.find('.nproducto-presentacion-item-precio5-coma i.data').text(),p5cmi:$item.find('.nproducto-presentacion-item-precio5-comi i.data').text(),tipo:1});
		});
		$("#presentaciones_producto").val(JSON.stringify(presentaciones));
		var options = {
			success:function(responseText){
				toastr.options = {
				  "closeButton": true,
				  "progressBar": true,
				  "positionClass": "toast-top-right"
				}
				toastr.success('El Producto <b>'+responseText.split('‡')[0]+'</b> se ha '+actionform+' en la Base de Datos del Sistema');
				getAlertsMiracle15();
				_this.cargar();
				$('#producto-detalles').html("<div class='overlay'><i class='fa fa-refresh fa-spin' style='font-size:50px;margin-top:50px;'></i></div>");
				$.get(_this.baseUrl+'productos/ver_producto?id='+responseText.split('‡')[1])
				.done(function(data){                
					$('#producto-detalles').html(data);
				});
				Custombox.close();
			}
		};
		
		var valid=true;
		/*Validar inputs*/
		$.each(form.find($("input, select")),function(i,el){
			$el=$(el);
			if($el.attr("data-requiredfield")==="required" && !$el.is(":disabled")){
				switch($el.prop("tagName")){
					case "INPUT":
						switch($el.attr("type")){
							case "text": case "number": case "password": /*textbox*/
								if($el.val()===""){
									valid=false;
									toastr.options = {
									  "closeButton": true,
									  "progressBar": true,
									  "positionClass": "toast-top-right"
									}
									toastr.error('Ingrese un valor v&aacute;lido para el campo');
									$el.focus();
								}
							break;
						}
					break;
				}
			}
			return valid;
		});	
		
		if(valid){form.ajaxSubmit(options);}
		e.preventDefault();
	}
	this.eliminar=function(item,nombre){
		var parent = this;
		swal({
            title: 'Eliminar Producto '+nombre,
            text: '&iquest;Deseas eliminar este Producto?<br> Todas la informaci&oacute;n y transacciones relacionadas con este productos se perderan definitivamente, proceda con precauci&oacute;n',
			html: true,
            type: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#3C8DBC',
            confirmButtonText: 'Si, eliminar Producto',
			cancelButtonText: 'No eliminar nada'
        },
        function(){
			$('#producto-detalles').html("<div class='overlay'><i class='fa fa-refresh fa-spin' style='font-size:50px;margin-top:50px;'></i></div>");
			$.get(parent.baseUrl+'productos/eliminar_producto?id='+item)
			.done(function(){
				toastr.options = {
				  "closeButton": true,
				  "progressBar": true,
				  "positionClass": "toast-top-right"
				}
				toastr.success('El producto <b>'+nombre+'</b> se ha eliminado de la Base de Datos del Sistema');
				parent.cargar();
				$('#producto-detalles').html("");
			});            
        });
	}
	this.stockAction=function(id,nombre,action){
		console.log("id="+id+"; nombre="+nombre+"; action="+action);
		var actionTxt="";
		if(action=="in"){
			actionTxt="Ingresar al ";
		}else if(action="out"){
			actionTxt="Retirar del";
		}
		var parent = this;
		swal({
            title:actionTxt+' stock '+nombre,
            text:'&iquest;Deseas '+actionTxt+' este Producto?',
			html:true,
            type:'warning',
            showCancelButton: true,
            confirmButtonColor: '#3C8DBC',
            confirmButtonText: 'Si, '+actionTxt+' Producto',
			cancelButtonText: 'No'
        },
        function() {
			$.get(parent.baseUrl+'productos/stock_producto?id='+id+'&action='+action)
			.done(function(){
				toastr.options = {
				  "closeButton": true,
				  "progressBar": true,
				  "positionClass": "toast-top-right"
				}
				toastr.success('El producto <b>'+nombre+'</b> se ha '+actionTxt.substring(0,actionTxt.length-5)+'do del inventario');
				parent.cargar();
				$('#producto-detalles').html("");
			});            
        });
		
		
	}
}
var productos = new Productos();