var uploaderEst = new UploaderEX("cargaFeesDivEst"); //Se crear el objeto para cargar archivos
var datosSubirEst = null;
var perfil;

var estController = function($scope, $filter, estService, tablaService, feesValidateService) {
		  	 	 	 	 	
	 $scope.tablaMinGarEst    = null;
	 $scope.tablaMinAnioEst   = null;	 	
	 $scope.tablaImpuestosEst = null;					 													
	 $scope.tablaDtoMovies    = null;
	 $scope.tablaDtoSeries    = null;		 
	 $scope.tablaRevenueMovies= null;
	 $scope.tablaRevenueSeries= null;
	 $scope.tipoMinE          = null;
	 $scope.idsCat            = [0];
	 $scope.idCatEli          = [];
	 
	 estService.inicializarTablas().then(function(data){
		 $scope.inicializar(data);		 		 		
	 });    	 	 

	 
	 perfil = new PerfilController();	 
	 perfil.ejecutarPerfil(26);
	 
	 $scope.inicializar = function(data){	 
		 
		 if(data.datosMin != null && data.datosMinAnio == null)		 
		 {
			 var dataTem = [];			 
			 var filaTem = [];
			 for(var i=0; i<data.aniosMin.length;i++)
				 filaTem.push(null);
			 dataTem.push(filaTem);
			 $scope.tablaMinGarEst  = estService.crearTablaMinimosGaranzatidosCategEst(data.datosMin,null, data);
			 $scope.tablaMinAnioEst = estService.crearTablaMinimosGaranzatidosAnioEst(dataTem,null, data);;
			 $scope.tipoMinE = "categoria";
			 this.inicializarDivMinimos();
		 }			 
		 else if(data.datosMinAnio != null && data.datosMin == null)
		 {			 
			 var dataTem = [];
			 var filaTem = [null,null,"MFTV/MFV"];
			 for(var i=0; i<data.aniosMin.length;i++)
				 filaTem.push(null);
			 dataTem.push(filaTem);
			 $scope.tablaMinAnioEst  = estService.crearTablaMinimosGaranzatidosAnioEst(data.datosMinAnio,null, data);
			 $scope.tablaMinGarEst   = estService.crearTablaMinimosGaranzatidosCategEst(dataTem,null, data);
			 $scope.tipoMinE = "anio";
			 this.inicializarDivMinimos();
		 }
		 else if(data.datosMinAnio != null && data.datosMin != null)
		 {
			 $scope.tablaMinAnioEst  = estService.crearTablaMinimosGaranzatidosAnioEst(data.datosMinAnio,null, data);
			 $scope.tablaMinGarEst   = estService.crearTablaMinimosGaranzatidosCategEst(data.datosMin,null, data);
			 $scope.tipoMinE = null;
			 $scope.idsCat   = [0];
			 this.inicializarDivMinimos();
		 }
		 		 				 		 		 		 
		 $scope.tablaImpuestosEst  = estService.crearTablaImpuestos(data.datosImpuestos, data.paises, null);		 
		 $scope.tablaDtoMovies     = estService.crearTablaDtoMovies(data.datosDTOMovies, data.paises, null);		 
		 $scope.tablaRevenueMovies = estService.crearTablaRevenueMovies(data.datosRevenueMovies, [], null);
		 $scope.tablaDtoSeries     = estService.crearTablaDtoSeries(data.datosDTOSeries, data.paises, null);		 
		 $scope.tablaRevenueSeries = estService.crearTablaRevenueSeries(data.datosRevenueSeries, [], null);		 
	 };
 
	 $scope.inicializarDivMinimos = function() {				
			if($scope.tipoMinE == "categoria")
			{
				$("#divMinCateEst").show();
				$("#divMinAnioEst").hide();			
			}
			else if($scope.tipoMinE == "anio")
			{
				$("#divMinAnioEst").show();
				$("#divMinCateEst").hide();
			}
			else		
			{
				$("#divMinAnioEst").hide();
				$("#divMinCateEst").hide();
			}
		};
		
	 $scope.editarTablaMinGarantizados = function(operacion, index, encabezado){
		 var tablaN;		 
		 var modificado = false;
		 switch (operacion) 
		 {	         		 
	         case 'removeRow':
	        	 
	        	 $scope.idsCat.splice( index, 1);
	        	 
	        	 estService.verificarCategMin($scope.idsCat[index]).then(function(data) {
	 				
	 				if(data.fees.valido)
	 				{
	 					tablaN = tablaService.removeRow($scope.tablaMinGarEst.datos, index);

	 					if ($scope.idsCat[index] != 0)
	 						$scope.idCatEli.push($scope.idsCat[index]);

	 					$scope.idsCat.splice(index, 1);
	 					modificado = true;
	 				}
	 				else
	 					showError("La categor\u00EDa no se puede eliminar.");				
	 			});

	             break;
	         case 'addRow':
	        	 tablaN  = tablaService.addRow($scope.tablaMinGarEst.datos);
	        	 $scope.idsCat.push(0);
	        	 modificado = true;
	             break;
	         case 'addColumn':			
		 		 tablaN = tablaService.addColumn($scope.tablaMinGarEst.datos, $scope.tablaMinGarEst.encabezados, null, encabezado);
		 		 modificado = true;
		 		break;
	         default:
		 }		 
		 
		 if(modificado)
		 {			
			 $scope.tablaMinGarEst.datos            = tablaN.datos            != null ? tablaN.datos            : $scope.tablaMinGarEst.datos;		 		
			 $scope.tablaMinGarEst.encabezados      = tablaN.encabezados      != null ? tablaN.encabezados      : $scope.tablaMinGarEst.encabezados ;
		 }		 		 		 		 
	 };	 	 	 	 	 	 		 	 
	 
	 $scope.editarTablaMinGarantizadosAnio = function(operacion, index, encabezado){
		 var tablaN;
		 var numAnio = $scope.tablaMinAnioEst.datos[0].length+1;
		 switch (operacion) 
		 {
	         case 'addColumn':
	        	 tablaN = tablaService.addColumn($scope.tablaMinAnioEst.datos, $scope.tablaMinAnioEst.encabezados, $scope.tablaMinAnioEst.columnasEliminar, encabezado);
	             break;
	         case 'removeColumn':
	        	 tablaN = tablaService.removeColumn($scope.tablaMinAnioEst.datos, $scope.tablaMinAnioEst.encabezados, $scope.tablaMinAnioEst.columnasEliminar, index);
	             break;	         
	         default:
		 }		 
		 $scope.tablaMinAnioEst.datos            = tablaN.datos            != null ? tablaN.datos            : $scope.tablaMinAnioEst.datos;				
		 $scope.tablaMinAnioEst.encabezados      = tablaN.encabezados      != null ? tablaN.encabezados      : $scope.tablaMinAnioEst.encabezados ; 		 		 
	 };
	 
     $scope.actualizarMinCelda = function(fila, columna, valor, metadatos){			
    	  var valClean =  $filter('numDigNormal')(valor.srcElement.value);
   	  	  var valNum;
	   	  if(!isNaN(valClean) && parseFloat(valClean) > 0 && valClean != "")
	   	  {
	   		  if($scope.tipoMinE == "anio")
	       	  {
	       		  if(valClean == "")    			
	   				 $scope.tablaMinAnioEst.datos[fila][columna].valor = null;    			    			  
	       		  else
	       		     valor.srcElement.value = $filter('numDigMoneda')(valClean,2); 
	       	  }    	      		    		     	  
	       	  else
	       	  {    		
	       		  if(columna != 2)
	       		  {
	       			 if(valClean == "")        			  
	        		    $scope.tablaMinGarEst.datos[fila][columna].valor = null;    			        			      				
	        		 else
	        		 {
	        			 valor.srcElement.value = $filter('numDigMoneda')(valClean,2);
	        			 valNum = $filter('numDigMoneda')(valClean,2);
	        		 }	        			 
	       		  }    		    			               	      		      			          	           		    		  
	       	  }
	   	  }
	   	  else
	   	  {
	   		  if($scope.tipoMinE == "categoria" && columna == 2)    			  
	   		     valor.srcElement.value = valor.srcElement.value;
	   		  else
	   			valor.srcElement.value = null;
	   	  }    		      	         		  	   	  	   	  	   	  	   	      	     	     	 
	  };

	  $scope.actualizarImpCelda = function(fila, columna, valor){		  
    	  if(valor.srcElement.checked)
    		 $scope.tablaImpuestosEst.datos[fila][columna].valor = 'true';
    	  else
    		 $scope.tablaImpuestosEst.datos[fila][columna].valor = 'false';
	  };
	  
	  $scope.actualizarDtoCelda = function(fila, columna, valor, tipo){		  
		  var tabla    = tipo == "movies" ? $scope.tablaDtoMovies : $scope.tablaDtoSeries;
		  var valClean =  $filter('numDigNormal')(valor.srcElement.value);
		  		  
    	  if(!isNaN(valClean) && parseFloat(valClean) > 0)
    	  {
    		  if(valClean == "")			  
    			  tabla.datos[fila][columna].valor = null;    		  
    		  else if(columna % 2 == 0)
        	  {        		      			
    			  tabla.datos[fila][columna].valor = $filter('numDigMoneda')(valor.srcElement.value,4); 
    			  tabla.datos[fila][columna+1].valor = null;        		        			 
        	  }    		    	
    		  else
    		  {
    			  tabla.datos[fila][columna].valor = $filter('numDigMoneda')(valor.srcElement.value,4); 
    			  tabla.datos[fila][columna-1].valor = null;
    		  }
    	  }
    	  else    	      		        	  
    		valor.srcElement.value = null;
    	  
    	  if(tipo == "movies")
			  $scope.tablaDtoMovies = tabla;
		  else
			  $scope.tablaDtoSeries = tabla;    	  
	  };
	  	  	  	  
	  $scope.actualizarRevenueCelda = function(fila, columna, valor, tipo){		      
		  var tabla    = tipo == "movies" ? $scope.tablaRevenueMovies : $scope.tablaRevenueSeries;
		  var valClean =  $filter('numDigNormal')(valor.srcElement.value, 2);
   	      var resto    = 0;
   	     	      
	   	  if(!isNaN(valClean) && valClean != "")
	   	  {
	   		  if(valClean > 100 || valClean < 0)
	   	    	valClean = 0;
	   	      else
	   	    	resto = 100 - valClean;  
	   		  
	   		  valor.srcElement.value = $filter('numDigMoneda')(String(valClean),2);
	   		  tabla.datos[fila][columna+1].valor = $filter('numDigMoneda')(String(resto),2);
	   	  }	   	     	      	      		      
	   	  
	   	  if(tipo == "movies")
			  $scope.tablaRevenueMovies = tabla;
		  else
			  $scope.tablaRevenueSeries = tabla;
	  };	  	  
	  	  	  
	  $scope.guardarEst = function(){		  		     
		     var continuar = true;	     		  	 	     	     
		     //Se validan campos vacios
		     if($scope.tipoMinE == "categoria")
		     {
		    	 $scope.tablaMinGarEst.datos[0][0].valor = 1;
		    	 $scope.tablaMinGarEst.datos[0][1].valor = 1;	    	 
		    	 $scope.tablaMinGarEst = feesValidateService.validarCeldasVacias($scope.tablaMinGarEst, $scope.tablaMinGarEst.datos[0].length, true);
		    	 continuar = feesValidateService.mensajeValidacion($scope.tablaMinGarEst.valida, $scope.tablaMinGarEst.nombre, "");	    	 
		    	 $scope.tablaMinGarEst.datos[0][0].valor = null;
		    	 $scope.tablaMinGarEst.datos[0][1].valor = null;
		     }
		     else
		     {
		    	 $scope.tablaMinAnioEst = feesValidateService.validarCeldasVacias($scope.tablaMinAnioEst, $scope.tablaMinAnioEst.datos[0].length, true);
		    	 continuar = feesValidateService.mensajeValidacion($scope.tablaMinAnioEst.valida, $scope.tablaMinAnioEst.nombre, "");
		     }
		     	     		     		     		     	     	     		  	
		     //Se valida longitud categorias		      
		     if(continuar)
		     {
		    	 if($scope.tipoMinE == "categoria")
			     {
			    	 $scope.tablaMinGarEst = feesValidateService.validarLongitudCeldas($scope.tablaMinGarEst, null, null, [2]);
			    	 continuar = feesValidateService.mensajeValidacion($scope.tablaMinGarEst.valida, $scope.tablaMinGarEst.nombre, "");
			     }
		     }
		     		     		     
		     //Se validan categorias repetidas
		     if(continuar)
		     {
		    	 if($scope.tipoMinE == "categoria")
			     {
			    	 $scope.tablaMinGarEst = feesValidateService.validarCategoriasRepetidas($scope.tablaMinGarEst, 2);
			    	 continuar = feesValidateService.mensajeValidacion($scope.tablaMinGarEst.valida, $scope.tablaMinGarEst.nombre, ", existen categorias repetidas");
			     }
		     }
		     		     
		     //Se validan rangos		     
		     if(continuar)
		     {
		    	 if($scope.tipoMinE == "categoria")
			     {
			    	 $scope.tablaMinGarEst = feesValidateService.validarRangosTablas($scope.tablaMinGarEst, 0 ,1, 1);
			    	 continuar = feesValidateService.mensajeValidacion($scope.tablaMinGarEst.valida, $scope.tablaMinGarEst.nombre, "");
			     }	
		     }
		     		     		     
		     //Se validan valores moneda		     
		     if(continuar)
		     {
		    	  var formato     =	$scope.tablaDtoMovies.datos[0][1].valor;	
				  var numFormatos = 1;
				  for(var i=1; i<$scope.tablaDtoMovies.datos.length;i++)
				  {
					  if($scope.tablaDtoMovies.datos[i][1].valor == formato)
						  numFormatos++;
				  }
				  var numFormatos2 = $scope.tablaDtoMovies.datos.length / numFormatos;		  
				  var fila = numFormatos2 - 1;		  
				  var indicePais = 0;
				  
				  for(var j=2; j<$scope.tablaDtoMovies.datos[0].length; j+=2)
				  {			  		
					  if(!continuar) break;
					  fila = numFormatos2 - 1;
					  for(var i=0; i< $scope.tablaDtoMovies.datos.length; i+= numFormatos2)
					  {			
						  $scope.tablaDtoMovies = feesValidateService.validarValoresMonedaTablas($scope.tablaDtoMovies, i , fila, j, numFormatos2);
						  
						  var pais    = $scope.tablaDtoMovies.encabezados[indicePais].valor;
						  var mensaje = ". Falta regsitrar campos en el pa\u00EDs "+pais + " en la categoria "+$scope.tablaDtoMovies.datos[fila][0].valor;
						  continuar = feesValidateService.mensajeValidacion($scope.tablaDtoMovies.valida, $scope.tablaDtoMovies.nombre, mensaje);				  				  
						  fila = fila + numFormatos2;
						  if(!continuar) break;
					  }	
					  indicePais++;
				  }		  	  		   				  		    	 	 
		     }
		     
		     if(continuar)
		     {
		    	  var formato     =	$scope.tablaDtoSeries.datos[0][1].valor;	
				  var numFormatos = 1;
				  for(var i=1; i<$scope.tablaDtoSeries.datos.length;i++)
				  {
					  if($scope.tablaDtoSeries.datos[i][1].valor == formato)
						  numFormatos++;
				  }
				  var numFormatos2 = $scope.tablaDtoSeries.datos.length / numFormatos;		  
				  var fila = numFormatos2 - 1;		  
				  var indicePais = 0;
				  
				  for(var j=2; j<$scope.tablaDtoSeries.datos[0].length; j+=2)
				  {			  		
					  if(!continuar) break;
					  fila = numFormatos2 - 1;
					  for(var i=0; i< $scope.tablaDtoSeries.datos.length; i+= numFormatos2)
					  {			
						  $scope.tablaDtoSeries = feesValidateService.validarValoresMonedaTablas($scope.tablaDtoSeries, i , fila, j, numFormatos2);
						  
						  var pais    = $scope.tablaDtoSeries.encabezados[indicePais].valor;
						  var mensaje = ". Falta regsitrar campos en el pa\u00EDs "+pais + " en la categor\u00EDa "+$scope.tablaDtoSeries.datos[fila][0].valor;
						  continuar = feesValidateService.mensajeValidacion($scope.tablaDtoSeries.valida, $scope.tablaDtoSeries.nombre, mensaje);				  				  
						  fila = fila + numFormatos2;
						  if(!continuar) break;
					  }	
					  indicePais++;
				  }			    	 	 
		     }

		     //Se validan porcentajes en tablas
		     if(continuar)
		     {
		    	 $scope.tablaRevenueMovies = feesValidateService.validarTablasPorcentaje($scope.tablaRevenueMovies, 1);
				 continuar = feesValidateService.mensajeValidacion($scope.tablaRevenueMovies.valida, $scope.tablaRevenueMovies.nombre, ", no se ha registrado campos porcentaje.");		    	 	    	 	 
		     }
		     
		     if(continuar)
		     {
		    	 $scope.tablaRevenueSeries = feesValidateService.validarTablasPorcentaje($scope.tablaRevenueSeries, 1);
				 continuar = feesValidateService.mensajeValidacion($scope.tablaRevenueSeries.valida, $scope.tablaRevenueSeries.nombre, ", no se ha registrado campos porcentaje.");		    	 	    	 	 
		     }
		     
		     if (continuar)
			 {	    	 
				var periodos = [];
				if ($scope.tipoMinE == "categoria") 
				{				
						$("#tabMinCatEst thead tr th").each(function(index) {
							if(index > 1)
							{
								var fechas = $(this).text().split("-");
								if(fechas.length == 2)
								   periodos.push({fechaInicio: fechas[0], fechaFin: fechas[1]})						
							}					   
						});										
				}
				else 
				{				
						$("#tabAnioMinEst thead tr th").each(function() {
							var fechas = $(this).text().split("-");
							if(fechas.length == 2)
							   periodos.push({fechaInicio: fechas[0], fechaFin: fechas[1]})
						});						
				}

				var valido = estService.validarFechasPeriodos(periodos);
				continuar  = valido.validacion;
				if(!valido.validacion)
				   showError(valido.mensaje);
				
				if(continuar)
				{
				   if( ($.datepicker.parseDate( 'mm/dd/yy',  $("#fechaInicioCto").val()).getTime() > $.datepicker.parseDate( 'mm/dd/yy',  periodos[0].fechaInicio).getTime()) ||  	    
					   ($.datepicker.parseDate( 'mm/dd/yy',  $("#fechaFinCto").val()).getTime()    < $.datepicker.parseDate( 'mm/dd/yy',  periodos[periodos.length-1].fechaFin).getTime()) )
				   {
					   continuar = false;
					   showError("El rango de fecha del periodo no est\u00E1 en el rango de tiempo del contrato.");
				   }			      		 
				}
			}
		     
		    if (continuar)
			{
				if($("#tipoCambio").val() == "0")
				{
					showError("Se debe seleccionar un valor para Tipo de Cambio.");
			    	continuar = false;
				}
			}
		     
		     if(continuar)
		     {		    		    	 		    	 
		    	 var fees = { 		    		  					    
					  "minimos"       : null,
					  "minimosAnio"   : null,
					  "aniosMin"      : null,
					  "idCatMin"      : null,					  
					  "impuestos"     : null,
					  "movies"        : null,
					  "series"        : null,
					  "revenueSeries" : null,
					  "revenueMovies" : null
	             }
		    	 
			     if($scope.tipoMinE == "categoria")
			     {
			    	 fees.minimos   = estService.crearMatriz($scope.tablaMinGarEst);
			    	 fees.idCatMin  = $scope.idsCat;
			    	 fees.aniosMin  = [];
					 $("#tabMinCatEst thead tr th").each(function(index) {
					   	 if(index > 1)
						 {
							fees.aniosMin.push($(this).text())						
						}						  
					  });			    	 
			     }
			     else
			     {
			    	 fees.minimosAnio = estService.crearMatriz($scope.tablaMinAnioEst);
			    	 fees.aniosMin    = [ ];
					 $("#tabAnioMinEst thead tr th").each(function() {
					  	fees.aniosMin.push($(this).text())
					 });
			     }
		    	 		   		    	 
		    	 fees.impuestos     = estService.crearMatriz($scope.tablaImpuestosEst);
		    	 fees.movies        = estService.crearMatriz($scope.tablaDtoMovies);
		    	 fees.series        = estService.crearMatriz($scope.tablaDtoSeries);
		    	 fees.revenueSeries = estService.crearMatriz($scope.tablaRevenueSeries);
		    	 fees.revenueMovies = estService.crearMatriz($scope.tablaRevenueMovies);		    	 
				 
		    	 var idCto        = $("#idCto").val();
				 var idTipoCambio = $("#tipoCambio").val();
				 
		    	 estService.guardarEst(fees, idCto, idTipoCambio).then(function(data){
					   
			    	    if(data.error != null)
						   showError(data.error);
			    	    else
			    	    {
			    	    	showMessage("Se han guardado los datos de la seccion EST (VENTA).");
			    	    	estService.inicializarTablas().then(function(data){		 			    	   		   
			    	   		   $scope.inicializar(data);
			    	   	 	});
			    	    }			    	    	
				  });
		     }
	  };

	  $scope.abrirModalFechas = function(tipo, columna, operacion) {
		  if(operacion == "periodo")
			{	
				$("#aceptarPerEst").hide();
				$("#addPerEst").show();
				$("#fechaPerInicioEst").val("");
				$("#fechaPerFinEst")   .val("");
				$("#modificarPeriodoEst").modal("show");
			}
			else
			{
				tipo = parseInt(tipo);
				$("#aceptarPerEst").show();
				$("#addPerEst").hide();
				if (tipo == 1) 
				{
					if (parseInt(columna) > 1) 
					{
						var fechas = $("#tabMinCatEst").find("thead tr th:nth-child(" + (columna + 1) + ")").text().split("-");
						$("#fechaPerInicioEst").val(fechas[0]);
						$("#fechaPerFinEst").val(fechas[1]);
						$("#modificarPeriodoEst").modal("show");
					}
				}
				if (tipo == 2) 
				{
					var fechas = $("#tabAnioMinEst").find("thead tr th:nth-child(" + (columna + 1) + ")").text().split("-");
					$("#fechaPerInicioEst").val(fechas[0]);
					$("#fechaPerFinEst").val(fechas[1]);
					$("#modificarPeriodoEst").modal("show");
				}
				$("#modificarPeriodoEst").find("input[id='tipo']").val(tipo);
				$("#modificarPeriodoEst").find("input[id='columna']").val(columna);

			}	
	  };

	  $scope.agregarNuevoPeriodo = function() {
			
			if($("#fechaPerInicioEst").val() == "" || $("#fechaPerFinEst").val() == "")		
			   $("#labErroPer").text("No se han ingresado las fechas del periodo").show();
			else
			{
				var encabezado = $("#fechaPerInicioEst").val() +"-" +$("#fechaPerFinEst").val();
					
				if($scope.tipoMinE == "categoria")			
				   this.editarTablaMinGarantizados("addColumn",null, encabezado);	
				
				else if($scope.tipoMinE == "anio")
					this.editarTablaMinGarantizadosAnio("addColumn",null, encabezado) ;
							
				$("#modificarPeriodoEst").modal("hide");	
			}			
	  };
		
	  $scope.actualizarPorFechas = function() {
			var tipo = parseInt($("#modificarPeriodoEst").find("input[id='tipo']").val());
			var col  = parseInt($("#modificarPeriodoEst").find("input[id='columna']").val());
			var id   = tipo == 1 ? "tabMinCatEst" : "tabAnioMinEst";

			var fecha = $("#fechaPerInicioEst").val() + "-" + $("#fechaPerFinEst").val();
			$("#" + id).find("thead tr th:nth-child(" + (col + 1) + ")").text(fecha);
			$("#modificarPeriodoEst").modal("hide");
	  };
				
	  $scope.abrirModalMinimos = function(){		  		   
		  uploaderEst = new UploaderEX("cargaFeesDivEst");
		  uploaderEst.tipoFees  = "est";
		  uploaderEst.operacion = "m\u00EDnimos";	
		  this.abrirModalCarga();
	  };
	  
	  $scope.importarMinimos = function(data) {		
			data.splice(0, 1);
			
			for(var i=0; i<data.length; i++)
			{
				if(!this.verifcarFilaVacia(data[i]))
				{
					var encontrado = false;
					for(var j=0; j<$scope.tablaMinGarEst.datos.length; j++)
					{										
						if($scope.tablaMinGarEst.datos[j][2].valor == data[i].fila[2])
						{
							$scope.tablaMinGarEst.datos[j][0].valor = data[i].fila[0];
							$scope.tablaMinGarEst.datos[j][1].valor = data[i].fila[1];
							
							var numCol = data[i].fila.length < $scope.tablaMinGarEst.datos[j].length ? data[i].fila.length :  $scope.tablaMinGarEst.datos[j].length;
							
							for(var k= 3; k< numCol; k++)
								$scope.tablaMinGarEst.datos[j][k].valor = data[i].fila[k];
							encontrado = true;
						}					 
					}
					
					if(!encontrado)
					{
						this.editarTablaMinGarantizados("addRow",null,null);
						var numCol = data[i].fila.length < $scope.tablaMinGarEst.datos[0].length ? data[i].fila.length :  $scope.tablaMinGarEst.datos[0].length;
											
						$scope.tablaMinGarEst.datos[$scope.tablaMinGarEst.datos.length-1][0].valor = data[i].fila[0];
						$scope.tablaMinGarEst.datos[$scope.tablaMinGarEst.datos.length-1][1].valor = data[i].fila[1];
						$scope.tablaMinGarEst.datos[$scope.tablaMinGarEst.datos.length-1][2].valor = data[i].fila[2];
																			
						for(var k= 3; k< numCol; k++)
							$scope.tablaMinGarEst.datos[$scope.tablaMinGarEst.datos.length-1][k].valor = data[i].fila[k];																	 					
					}
				}
			}
	  };
		  		  
	  $scope.abrirModalPrecioMovies = function(){		  		   
		  uploaderEst = new UploaderEX("cargaFeesDivEst");
		  uploaderEst.tipoFees  = "est";
		  uploaderEst.operacion = "precio movies";	
		  this.abrirModalCarga();
	  };
	  
	  $scope.importarPrecioMovies = function(data) {		
			data.splice(0, 2);		
			for(var i=0; i<$scope.tablaDtoMovies.datos.length; i++)		
				for(var j=0; j<$scope.tablaDtoMovies.datos[0].length; j++)				
					$scope.tablaDtoMovies.datos[i][j].valor = data[i].fila[j];		
	  };
		
	  $scope.abrirModalPrecioSeries = function(){		  		   
		  uploaderEst = new UploaderEX("cargaFeesDivEst");
		  uploaderEst.tipoFees  = "est";
		  uploaderEst.operacion = "precio series";	
		  this.abrirModalCarga();      
	  };
	  
	  $scope.importarPrecioSeries = function(data) {		
			data.splice(0, 2);		
			for(var i=0; i<$scope.tablaDtoSeries.datos.length; i++)		
				for(var j=0; j<$scope.tablaDtoSeries.datos[0].length; j++)				
					$scope.tablaDtoSeries.datos[i][j].valor = data[i].fila[j];		
		};
		  
	  $scope.cargarDatos = function(){
		  uploaderEst.startUpload("cargaFeesDivEst");		   
	  };
		
	  $scope.abrirModalCarga = function(){
		  uploaderEst.limpiaForma("idFormCargaAlgoEst");
		  $("#esperaDivEst").html("");
		  $("#modalImportarArchivoEst").modal("show");		   
	  };
	  
	  $scope.verificarDatos = function(){
		  $('#modalImportarArchivoEst').modal('hide');		  	
		  if (datosSubirEst != null && datosSubirEst.datosMatriz != null) 
		  {			
			  if(datosSubirEst.tipoFees == "est" && datosSubirEst.operacion == "minimos")			
				 this.importarMinimos(datosSubirEst.datosMatriz);
			  if(datosSubirEst.tipoFees == "est" && datosSubirEst.operacion == "precio movies")
				 this.importarPrecioMovies(datosSubirEst.datosMatriz);
			  if(datosSubirEst.tipoFees == "est" && datosSubirEst.operacion == "precio series")
				 this.importarPrecioSeries(datosSubirEst.datosMatriz);						
		  }
	  };	  	  
	  
	  $scope.verifcarFilaVacia = function(data) {		
			var cont = 0;
			
			for(var i=0; i<data.fila.length; i++)
			{
				if(data.fila[i] === "" || data.fila[i] == null)
				   cont++
			}
			
			if(cont == data.fila.length)
				return true;
			else
				return false;
		};
      //funcion para exportar excel
	  $scope.exportarExcel = function(seccion, operacion, datos, encabezados) {
						
			datos   = estService.crearMatriz(datos);		
			var enc = [];
			
			if(operacion == "min_cat")
			{
			   enc[0] = encabezados[0].valor;
			   enc[1] = "";
			   for(var i=1; i<encabezados.length;i++)
				   enc[i+1] = encabezados[i].valor;	
			}
			else if(operacion == "min_anio")
			{				
				$( "#tabAnioMinEst thead tr" ).find("th").each(function() {
					  enc.push($(this).text());
				});		   	
				enc.splice(enc.length-1,1);				
			}
			else if(operacion == "precio movies")
			{
				var temp = datos;
								
				var valor = "";				
				for(var i=0; i< temp.length;i++)
				{
				   if(valor != temp[i][0])
					   valor = temp[i][0];
				   else
					  temp[i][0] = ""; 
				}
				
				var fila = [];
				fila.push("Categoria");
				fila.push("Formato");
				
				for(var i=0; i<(datos[0].length-2)/2;i++)
				{
					fila.push("ML");
				    fila.push("Dolares");
				}
				
				var datos1 = [];
				datos1.push(fila);
				
				for(var i=0; i<temp.length;i++)
					datos1.push(temp[i]);
				datos = datos1;	
				
				enc[0] = "Precio por Evento DTO Movies";
				enc[1] = "";
				for(var i=0; i<encabezados.length;i++)
				{
					enc.push(encabezados[i].valor);
					enc.push("");
				}		   	
			}
			else if(operacion == "precio series")
			{
				var temp = datos;
				
				var valor = "";				
				for(var i=0; i< temp.length;i++)
				{
				   if(valor != temp[i][0])
					   valor = temp[i][0];
				   else
					  temp[i][0] = ""; 
				}
				
				var fila = [];
								
				fila.push("Categoria");
				fila.push("Formato");
				
				for(var i=0; i<(datos[0].length-2)/2;i++)
				{
					fila.push("ML");
				    fila.push("Dolares");
				}
				
				var datos1 = [];
				datos1.push(fila);
				
				for(var i=0; i<temp.length;i++)
					datos1.push(temp[i]);
				datos = datos1;	
				
				enc[0] = "Precio por Evento DTO Series";
				enc[1] = "";
				for(var i=0; i<encabezados.length;i++)
				{
					enc.push(encabezados[i].valor);
					enc.push("");
				}
				    
			}
			
			estService.descargarArchivo(seccion, operacion, $("#idCto").val(), datos, enc).then(function(data) { console.log(data) });				
	  };		  	  

	  $scope.setColspan = function(x){
		   return x.colspan;    		
	  };
	  
};

registraController("estController", estController);