var Productos_inventario_nuevo_producto=function(){
	this.baseUrl=null;
	this.windowId=null;
	this.initializeEnviroment=function(url,winId){
		this.baseUrl=url;
		this.windowId=winId;
		this.initializeGUIComponets();
		this.initializeListeners();
	},
	this.test=function(){
		console.log("La clase Productos_inventario_nuevo_producto se ha instanseado desde: "+this.baseUrl, " en la ventana: "+this.windowId);
	},
	/*Inicializar componentes de la interfaz*/
	this.initializeGUIComponets=function(){
		var _this=this;
		/*Scroll contenedor de presentaciones*/
		$("#"+this.windowId+" #nuevo-producto-presentaciones-wrapper").slimScroll({height: '244px'});
		/*Chosen grupos*/
		$("#"+this.windowId+" #id_grupo").chosen({
			no_results_text: "No se encontro ningun resultado",
			allow_single_deselect: true
		}).change(function(){
			_this.cargarSubGrupos($(this).val(),null);
		});
		/*Chosen subgrupos*/
		$("#"+this.windowId+" #id_sub_grupo").chosen({
			no_results_text: "No se encontro ningun resultado",
			allow_single_deselect: true
		});
		/*Desabilitar ajuste de inventario para nuevos productos*/
		if($("#"+this.windowId+" #nuevo-producto-existencias-sistema").val()==""){
			$("#"+this.windowId+" #nuevo-producto-existencias-transaccion-ajuste").removeAttr("checked");
			$("#"+this.windowId+" #nuevo-producto-existencias-transaccion-ajuste").prop("disabled","disabled");
			$("#"+this.windowId+" #nuevo-producto-existencias-transaccion-inicial").prop("checked","checked");
		}
	},
	/*EVENTOS*/
	this.initializeListeners=function(){
		var _this=this;
		/*TEXTBOX Verificar si el SKU ha sido asignado (KEYUP)*/
		$("#"+this.windowId+" #sku_producto").on('keyup',function(event){
			var keycode=(event.keyCode?event.keyCode:event.which);
			if(keycode!='13'){
				var veriSKU=_this.verificarSKU($.trim($(this).val()));
				if(veriSKU!=null){
					if(parseInt(veriSKU.used)){
						$("#"+_this.windowId+" .productExist").css('color','#FF0000').html('SKU Repetido, ingrese otro - El SKU ingresado pertenece a <b>'+ veriSKU.prod+'</b>');
					}else{
						$("#"+_this.windowId+" .productExist").empty();
					}
				}
				else{
					$("#"+_this.windowId+" .productExist").empty();
				}
			}
		});
		/*BOTON Asignar un sku automatico (CLICK)*/
		$("#"+this.windowId+" #colocar-sku-auto").on('click',function(event){
			var func=$(this).attr("data-func");
			/*Colocar SKU Automatico*/
			if(func=="set"){
				var autoSKU="";
				/*Consultar correlativo de SKU automaticos*/
				jQuery.ajaxSetup({async:false});
				$.get(_this.baseUrl+"productos/autosku",{},function(sku){
					if(sku!=0){
						autoSKU=_this.zeroFill(sku,4);
					}else{
						alert("Ha ocurrido un problema al colocar el SKU, contacte a soporte tecnico");
					}
				},"text");
				jQuery.ajaxSetup({async:true});
				if(autoSKU!=""){
					/*Verificar duplicidad de SKU automatico obtenido*/
					/* do{
						var usedSKU=_this.verificarSKU(autoSKU);
						if(usedSKU.used){
							autoSKU=parseInt(autoSKU)+1;
							autoSKU=_this.zeroFill(autoSKU,4);
						}
					}
					while(usedSKU.used); */
					/*Colocar SKU*/
					$("#"+_this.windowId+" #sku_producto").val(autoSKU);
					$("#"+_this.windowId+" #sku_auto").val(1);
					$("#"+_this.windowId+" #sku_producto").prop("readonly","true");
					$(this).attr("data-func","unset");
					$(this).text("Quitar");
					$(this).removeClass("btn-info");
					$(this).addClass("btn-danger");
				}
			}
			/*Quitar SKU Automatico*/
			else{
				$("#"+_this.windowId+" #sku_producto").val("");
				$("#"+_this.windowId+" #sku_auto").val(0);
				$("#"+_this.windowId+" #sku_producto").removeAttr("readonly");
				$(this).attr("data-func","set");
				$(this).text("Asignar");
				$(this).removeClass("btn-danger");
				$(this).addClass("btn-info");
				$(this).focus();
			}
		});
		/*DIV Click en mascara para agregar imagen a producto*/
		$("#"+this.windowId+" #nuevo-producto-img-change-mask").click(function(){
			$("#"+_this.windowId+" #nuevo-producto-img-file").trigger("click");
		});
		/*FILE abrir explorador de archivos (CLICK)*/
		$("#"+this.windowId+" #nuevo-producto-img-file").change(function(){
			if (window.FileReader) {
				var fileReader = new FileReader(),files=this.files,file;
				if(!files.length){
					return;
				}
				file=files[0];
				if(/^image\/\w+$/.test(file.type)){
					fileReader.readAsDataURL(file);
					fileReader.onload=function(e){
						$("#"+_this.windowId+" #nuevo-producto-img").attr("src",fileReader.result);
					}
				}
				else{
					_this.showMsg("error","Debe seleccionar una imagen con formato v&aacute;lido");
				}
			}
		});
		/*TEXTBOX existencias fisicas (KEYUP)*/
		$("#"+this.windowId+" #nuevo-producto-existencias-fisica").keyup(function(e){
			if($.trim($(this).val())!=""){
				if($("#"+_this.windowId+" #nuevo-producto-existencias-transaccion-ajuste").is(":checked")){
					_this.transAjusteInventario("set");
				}
			}else{
				console.log("unset");
				 _this.transAjusteInventario("unset");
			}
		});
		/*RADIO seleccionar inventario inicial(CHANGE)*/
		$("#"+this.windowId+" #nuevo-producto-existencias-transaccion-inicial").change(function(){
			if($(this).is(":checked"))
				_this.transAjusteInventario("unset");
		});
		/*RADIO seleccionar ajuste de inventario (CHANGE)*/
		$("#"+this.windowId+" #nuevo-producto-existencias-transaccion-ajuste").change(function(){
			if($(this).is(":checked"))
				_this.transAjusteInventario("set");
		});
	},
	/*FUNCIONES*/
	/*Verificar si un SKU esta en uso o no*/
	this.verificarSKU=function(sku){
		if(sku!=""){
			var _this=this;
			var data=null;
			jQuery.ajaxSetup({async:false});
			$.get(_this.baseUrl+"productos/searchProductSKU",{sku:sku},function(response){
				data=response;
			},"json");
		}
		jQuery.ajaxSetup({async:true});
		return data;
	},
	/*Completar con ceros adelante hasta alcanzar la longitud dada*/
	this.zeroFill=function(str,maxLength){
		var zeroFillStr="";
		str=str.toString();
		if(str.length<maxLength){
			for(var i=0;i<maxLength-str.length;i++){
				zeroFillStr+="0";
			}
			zeroFillStr+=str;
		}else{
			zeroFillStr=str;
		}
		return zeroFillStr;
	},
	/*Cargar Subgrupos*/
	this.cargarSubGrupos=function(grupo,selectedSubGroup){
		var _this=this;
		$("#"+this.windowId+' #id_sub_grupo').find('option').remove().end().append('<option value=""></option>').val(0);
		if(grupo!=0 || grupo!=""){
			jQuery.ajaxSetup({async:false});
			$.getJSON(this.baseUrl+"productos/getSubgrupos",{id:grupo},function(subgrupos){
				if(subgrupos!=null){
					$.each(subgrupos,function(i,subgrupo){
						var selected="";
						if(selectedSubGroup!=null && subgrupo.id==selectedSubGroup){
							selected="selected";
						}
						$("#"+_this.windowId+" #id_sub_grupo").append("<option value='"+subgrupo.id+"' "+selected+">"+subgrupo.nombre+"</option>");
					});
				}
			});
			jQuery.ajaxSetup({async:true});
		}
		$("#"+this.windowId+" #id_sub_grupo").trigger("chosen:updated");
		if(selectedSubGroup==null){
			setTimeout(function(){$("#"+_this.windowId+" #id_sub_grupo").trigger('chosen:open');},100);   
		}
	},
	/*Calcular transaccion de ajuste de inventario*/
	this.transAjusteInventario=function(action){
		if(action=="set"){
			var existenciaFisica=$("#"+this.windowId+" #nuevo-producto-existencias-fisica").val();
			if(existenciaFisica!=""){
				var existenciaSistema=$("#"+this.windowId+" #nuevo-producto-existencias-sistema").val();
				if(existenciaSistema=="")
					existenciaSistema=0;
				/*calculo*/
				diferencia=parseFloat(existenciaFisica)-parseFloat(existenciaSistema);
				var msg="";
				switch(true){
					case diferencia<0:{
						diferencia=Math.abs(diferencia);
						msg="<b>Salida de "+diferencia+" unidades</b> en concepto de 'Ajuste de inventario' para alcanzar "+existenciaFisica+" unidades.";
					}break;
					case diferencia>0:{
						msg="<b>Entrada de "+diferencia+" unidades</b> en concepto de 'Ajuste de inventario' para alcanzar "+existenciaFisica+" unidades.";
					}break;
					case diferencia==0:{
						msg="No se realizará ninguna transaccion, las existencias coinciden";
					}break;
				}
				if(msg!=""){
					$("#"+this.windowId+" #nuevo-producto-existencias-trans-info-wrapper").html(msg);
					$("#"+this.windowId+" #nuevo-producto-existencias-trans-info-wrapper").show();
				}
			}
		}
		else{
			$("#"+this.windowId+" #nuevo-producto-existencias-trans-info-wrapper").html("");
			$("#"+this.windowId+" #nuevo-producto-existencias-trans-info-wrapper").hide();
		}
	},
	/*Mostrar mensaje*/
	this.showMsg=function(tipo,mensaje){
		toastr.options = {
			"closeButton":true,
			"progressBar":true,
			"positionClass":"toast-top-right"
		}
		toastr[tipo](mensaje);
	}
}