var Productos_inventario_buscar=function(){
	this.baseUrl=null;
	this.windowsId=null;
	this.skuField=null;
	this.simulateEnter=false;
	this.getPrecios=true;
	this.getExistencia=true;
	this.scroll=true;
	/*Inicializar entorno*/
	this.initializeEnviroment=function(url,winId){
		this.baseUrl=url;
		this.windowsId=winId;
		$("#"+this.windowsId+" #buscar-producto-str").focus();
		this.initializeListeners();
		this.cargarproductos(true,0);
	},
	this.setSKUData=function(skuFlied,enter){
		this.skuField=skuFlied;
		this.simulateEnter=enter;
	},
	this.setQueryRequirements=function(precios,existencias){
		this.getPrecios=precios;
		this.getExistencia=existencias;
	},
	/*Eventos*/
	this.initializeListeners=function(){
		var _this=this;
		$("#"+_this.windowsId+" #buscar-producto-str").keyup(function(e){
			if(e.which==38 || e.keyCode==38){
				e.preventDefault();
				_this.goTop();
			}else if(e.which==40 || e.keyCode==40){
				e.preventDefault();
				_this.goBottom();
			}else if(e.which==13 || e.keyCode==13){
				e.preventDefault();
				var currentSel = $("#"+_this.windowsId+" #buscar-productos-wrapper > table > tbody > tr.miracle-selected-table-item");
				if(currentSel.length){
					_this.setSKU(currentSel.attr("data-sku"));
				}
			}else{
				_this.cargarproductos(true,0);
			}
		});
		$("#"+this.windowsId+" #buscar-productos-wrapper").scroll(function(){
		   if($(this).scrollTop() + $(this).height()+50 >= $("#buscar-productos-wrapper > table").height()) {
			   _this.cargarproductos(false,$("#"+_this.windowsId+" #buscar-productos-wrapper > table > tbody > tr").size());
		   }
		});
		$("#"+this.windowsId+" #buscar-productos-wrapper").on("dblclick"," table > tbody > tr",function(){
			_this.setSKU($(this).attr("data-sku"));
		});
		$("#"+this.windowsId+" #buscar-productos-wrapper").on("click"," table > tbody > tr",function(){
			$("#"+_this.windowsId+" #buscar-productos-wrapper > table > tbody > tr.miracle-selected-table-item").removeClass("miracle-selected-table-item");
			$(this).addClass("miracle-selected-table-item");
		});
		$(document).bind('keydown', 'up', function(e){
			if($("#"+_this.windowsId).is(":visible")){
				e.preventDefault();
				_this.goTop();
			}
		});
		$(document).bind('keydown', 'down', function(e){
			if($("#"+_this.windowsId).is(":visible")){
				e.preventDefault();
				_this.goBottom();
			}
		});
		$(document).bind('keydown', 'return', function(e){
			if($("#"+_this.windowsId).is(":visible")){
				e.preventDefault();
				console.log("asd");
				var currentSel = $("#"+_this.windowsId+" #buscar-productos-wrapper > table > tbody > tr.miracle-selected-table-item");
				if(currentSel.length){
					_this.setSKU(currentSel.attr("data-sku"));
				}
			}
		});
	},
	/*Funciones*/
	this.cargarproductos=function(reset,offset){
		if(this.scroll){
			this.scroll=false;
			var _this = this;
			if(reset){
				$("#"+this.windowsId+" #buscar-productos-wrapper > table").empty();
			}
			$.get(this.baseUrl+"productos/buscar_cargar_productos",{search:$("#"+this.windowsId+" #buscar-producto-str").val(),offset:offset,reset:reset,precios:this.getPrecios,existencia:this.getExistencia},function(productos){
				if(productos!=""){
					if(reset){
						var html=$("#"+_this.windowsId+" #buscar-productos-wrapper >  table").html()+productos;
						$("#"+_this.windowsId+" #buscar-productos-wrapper > table").html(html);
						$("#"+_this.windowsId+" #buscar-productos-wrapper > table > tbody > tr:first").addClass("miracle-selected-table-item");
					}else{
						var html=$("#"+_this.windowsId+" #buscar-productos-wrapper >  table > tbody").html()+productos;
						$("#"+_this.windowsId+" #buscar-productos-wrapper > table >tbody").html(html);
					}
					_this.scroll=true;
				}else{
					_this.scroll=true;
				}
			},"html");
		}
	},
	this.setSKU=function(sku){
		if(this.skuField){
			this.skuField.val(sku);
			if(this.simulateEnter){
				var e = jQuery.Event("keypress");
				e.which = 13;
				$(this.skuField).trigger(e);
			}
			Custombox.close();
		}
	},
	this.goTop=function(){
		if($("#"+this.windowsId).is(":visible")){
			var trows=$("#"+this.windowsId+" #buscar-productos-wrapper > table > tbody tr");
			if(trows.size()>1){
				var currentSel = $("#"+this.windowsId+" #buscar-productos-wrapper > table > tbody > tr.miracle-selected-table-item");
				var prevSel=currentSel.prev();
				if(prevSel.length > 0){
					currentSel.removeClass("miracle-selected-table-item");
					prevSel.addClass("miracle-selected-table-item");
					/*AUTO SCROLL*/								
					 if(((prevSel.index()+1)*prevSel.height()) <= $("#"+this.windowsId+" #buscar-productos-wrapper").scrollTop()){
						 $("#"+this.windowsId+" #buscar-productos-wrapper").scrollTop( $("#"+this.windowsId+" #buscar-productos-wrapper").scrollTop()-prevSel.height());
					 }
				}
			}
		}
	},
	this.goBottom=function(){
		if($("#"+this.windowsId).is(":visible")){
			var trows=$("#"+this.windowsId+" #buscar-productos-wrapper > table > tbody tr");
			if(trows.size()>1){
				var currentSel = $("#"+this.windowsId+" #buscar-productos-wrapper > table > tbody > tr.miracle-selected-table-item");
				var nextSel=currentSel.next();
				if(nextSel.length > 0){
					currentSel.removeClass("miracle-selected-table-item");
					nextSel.addClass("miracle-selected-table-item");
					/*AUTO SCROLL*/								
					 if((((nextSel.index()+1)*nextSel.height())+nextSel.height()) >= ($("#"+this.windowsId+" #buscar-productos-wrapper").scrollTop()+$("#"+this.windowsId+" #buscar-productos-wrapper").height())){
						 $("#"+this.windowsId+" #buscar-productos-wrapper").scrollTop( $("#"+this.windowsId+" #buscar-productos-wrapper").scrollTop()+nextSel.height());
					 }
				}
			}
		}
	}
}