var colapsables = [];
var nombres     = [];
var numNodos    = -1;
var tipoContrato;
var up;
var perfil;
var pmn;
var contrato;
var nomEstandar;
var nomUnico;
var idBV;

$(document).ready(function(){
	perfil     = new PerfilController();
	var qd = {};
	location.search.substr(1).split("&").forEach(function(item) {
	    var s = item.split("="),
	        k = s[0],
	        v = s[1] && decodeURIComponent(s[1]);
	    (k in qd) ? qd[k].push(v) : qd[k] = [v]		    
	})						
	tipoContrato = parseInt(qd["tipoContrato"]);
	pmn = parseInt(qd["pmn"]);
	
	
	//rfd
	contrato = $("#contrato").val();
	nomEstandar= $("#nombreEstandar").val();
	nomUnico= $("#nombreUnico").val();
	idBV = $("#idBv").val();
	
	inicializarBotones();
	getEstudios();
	$("#buscar").prop( "disabled", true );
	$("#labelBuscando").show();
	getListaContratos(null);	
});

function inicializarBotones(){
	$("#nuevo").click(function ()  
	{         
		$.post( contextPath + '/contrato/listado/agregarEnmOAden.action', { pmn : $('#pmn').val(), idMovimiento :  parseInt(1),  tipoContrato : tipoContrato } )		
		.done(function( response ) 
		{		
		    if(response.msgError != null)    		
		       showError("Error al procesar la operaci\u00F3n.");    			       
		    else
		    {     			
		    	urlAction = contextPath + '/contrato/generales/index.action?idMovimiento=' + parseInt(1) + '&tipoContrato=' + tipoContrato;    	  													
		    	window.location.href = urlAction;			
		    }				   			       		   
		});    	    	        	    	       	    	   
	 });
	
	$("#buscar").click(function ()  
	{   
		colapsables = [];
		$("#buscar").prop( "disabled", true );
		$("#labelBuscando").show();
		var estudios = [];
		if($("#estudios").val() == "0")
			estudios = null;
		else
			estudios.push(parseInt($("#estudios").val()));		
		getListaContratos(estudios);    	    	        	    	       	    	   
	});
	
	$('#nuevo').prop("disabled", true);
}

function getEstudios(){
	$.ajax({
        url: contextPath + "/contrato/listado/getCatalogos",
        type: 'POST',
        dataType: 'json',           
        success:function(response){        	
           	if(response.msgError != null)        		        		
           		showError(response.msgError);        	
        	else
        	{
        		$('#estudios').append('<option value="0">Todos</option>');
        		for (var i=0; i<response.catalogos.estudios.length; i++){ 	   
        		       var opcion = '<option value="'+ response.catalogos.estudios[i].idEstudio +'">'+ response.catalogos.estudios[i].descripcionEstudio +'</option>';	       
        		       $('#estudios').append(opcion);
        		}    		       		    	    	
        		$("#estudios").val("0");
        	}        		        	        
        }        
	});	
}

function crearModalDocs(idContrato, elemento){	
	 var json  =  {"idContrato" : idContrato};	
	 $.post( contextPath + '/contrato/listado/obtenerDocumentosCto', { request: JSON.stringify(json) } )
	 .done(function( response ) 
	 {
		 if(response.msgError != null)        		        		
  		    showError(response.msgError);     	
  	     else
  	     {  	  	    	
    		var data     = response.listado[0].documentos;
    		var contrato = $(elemento).attr("num");
    		$("#dialogoDocs").find("h3").text("Documentos del Contrato " +contrato);
    		$("#dialogoDocs").find("div.modal-body").empty();    		
    		if(data != null)
    		{
    			  $("#dialogoDocs").find("div.modal-body").append('<div class="row"><div class="col-md-4"><h5>Nombre</h5></div><div class="col-md-4"><h5>Descargar</h5></div></div><hr>');
    			  for (var i=0; i<data.length; i++)
    			  {			  		  
    				  var docto = $('<div class="row">'+
    					                '<div class="col-md-4">'+ data[i].nombre +'</div>'+
    					                '<div class="col-md-4">'+
    					                   '<a href="#" onclick="descargarArchivo('+data[i].idContratoDocto+')">Descargar </a></div>'+
    					                '<div class="col-md-4">'+
    					                   '<a href="#" onclick="mostrarModalRemplazar('+idContrato+','+data[i].idContratoDocto+');">Reemplazar</a></div>'+
    				                 '</div><hr>');
    				  $("#dialogoDocs").find("div.modal-body").append(docto);
    			  }		  
    		}
    		$("#dialogoDocs").find("div.row").find("a:last").hide();
    		perfil.ejecutarPerfil(pmn);
    		$("#dialogoDocs").modal('show');    		
  	     }       	        	 
	 });		
}

function mostrarModalRemplazar(idContrato, idDoc){
	up = new UploaderL("multipleupload");
	up.limpiaForma("modalDocum");
	$("#idContrato").val(idContrato);
	$("#idDoc").val(idDoc);
	$('#modalDocum').modal('show');
}

function descargarArchivo(id){		
	$.ajax({
		url : contextPath + "/contrato/listado/verificarArchivo.action?idArchivo="+id,
		type : 'post',	
		async : false,
		dataType  : 'html',
		success : function(ret) {
			if(ret.msgError != null)
			   showError('Error al descargar el Archivo.');			
			window.location = contextPath + "/contrato/listado/descargarArchivo.action?idArchivo="+id;			
		},
		'error' : function(jqXHR, textStatus, errorThrown) {
			showError('Error al descargar el Archivo.');	
		}
	});	
}


function enviarOperacion(operacion, idContrato, tipoContrato){	

	$.post( contextPath + '/contrato/listado/agregarEnmOAden.action', { pmn : $('#pmn').val(), idMovimiento : operacion,  idContrato: idContrato , tipoContrato : tipoContrato } )		
	.done(function( response ) 
	{		
		if(response.msgError != null)
		{
			showError("Error al procesar la operaci\u00F3n.");
		}	       
		else
		{
			urlAction = contextPath + '/contrato/listado/verContrato.action?pmn=' + $('#pmn').val() +
                                                                          '&tipoContrato='+tipoContrato +
                                                                          '&idMovimiento=' + operacion  + '&idContrato='   + response.msgExito + '&tipoContrato=' + tipoContrato;    	  													
			window.location.href = urlAction;			
		}				   			       		   
	});	
}

//jun-17 creado para uso exclusivo para elegir tipo enmienda...
function enviarOperacionEnmienda(idContrato, tipoContrato){	
	
	var operacion="";
	var oper=document.getElementsByName('operacion'); 
	
	for(var i=0;i<oper.length;i++)
    {
        if(oper[i].checked)
            operacion=oper[i].value;
    }
	idContrato= document.getElementById('idContratoE').innerHTML;
	$.post( contextPath + '/contrato/listado/agregarEnmOAden.action', { pmn : $('#pmn').val(), idMovimiento : operacion,  idContrato: idContrato , tipoContrato : tipoContrato } )		
	.done(function( response ) 
	{		
		if(response.msgError != null)
		{
			showError("Error al procesar la operaci\u00F3n.");
		}	       
		else
		{
			urlAction = contextPath + '/contrato/listado/verContrato.action?pmn=' + $('#pmn').val() +
                                                                          '&tipoContrato='+tipoContrato +
                                                                          '&idMovimiento=' + operacion  + '&idContrato='   + response.msgExito + '&tipoContrato=' + tipoContrato;    	  													
			window.location.href = urlAction;			
		}				   			       		   
	});	
}


function defineTipoEnmienda(idContrato, tipoContrato){
	showAdv("M\u00F3dulo deshabilitado temporalmente, favor de contactar al administrador.");
}

function getListaContratos(estudios){	
	 var rechazado = $( "#cbRechazado" ).prop( "checked");
	 
	 	if($("#contrato").val())
	 		contrato = $("#contrato").val();
		else
			contrato = "Todos";
	 	
	 	if($("#nombreEstandar").val())
	 		nomEstandar = $("#nombreEstandar").val();
	 	else
	 		nomEstandar = "Todos";
	 	
	 	if($("#nombreUnico").val())
	 		nomUnico = $("#nombreUnico").val();
		else
			nomUnico = "Todos";
	 	
	 	if($("#idBv").val())
	 		idBV = $("#idBv").val();
	 	else
	 		idBV = "Todos";
	 
	 var json  =  {"tipoContrato" : tipoContrato, estudios : estudios, rechazado:rechazado,	 contrato:contrato,	 nombreEstandar:nomEstandar,	 nombreUnico:nomUnico, idBv:idBV};
	 
	 
	 $.post( contextPath + '/contrato/listado/getListado', { request: JSON.stringify(json), pmnReturn : "15" } )
	 .done(function( response ) 
	 {
		 if(response.msgError != null)        		        		
  		    showError(response.msgError);     	
  	     else
  	     {  	    	   	    	  	    	  	    	  		    
  	    	$("#listadoContratos").remove();  	    	  		      		  
  		    crearTabla(response.listado);  		     		    
  	     }       	        	 
	 });
}

function crearTabla(datos){
	
	if(datos.length == 0)
	{
		$("#labelBuscando").hide();
		$("#buscar").prop( "disabled", false );
		showWarn("No se encontraron resultados para los criterios de b\u00fasqueda seleccionados");
	}		
	else
	{		
			var tabla = $("<table id='listadoContratos' class='table'/>");	
			var encabezado = $("<thead/>");
			var cuerpo     = $("<tbody/>");
			var fila = $("<tr class='encabezado'/>").append($("<th/>").text("Estudio")).append($("<th/>").text("Contrato")).append($("<th/>").text("Inicio"))
			                                        .append($("<th/>").text("Fin")).append($("<th/>").text("Estatus")).append($("<th/>").text("Doctos")).append($("<th/>").text("Acciones"));	
			tabla.append(encabezado.append(fila)).append(cuerpo);	
			$("#divTabla").append(tabla);	
				
			nombres = []; 
			agregarFila(datos, 1, null);	
						
			$("#listadoContratos").treetable({ expandable: true });	
				
			jQuery('#listadoContratos').treetable('expandAll'); 
						
			var i =0;	
				
			$("#listadoContratos tbody tr").each(function(){		
				
				   var id = $(this).attr("data-tt-id"); 
				   if (typeof id !== typeof undefined)
					    $("#listadoContratos").treetable("collapseNode", id);
			
				   if($(this).find("td:first span a").length > 0)
					  $(this).find("td:first span a").text(nombres[i]).addClass("alignleft");
				   else if($(this).find("td:first span a").length == 0)
					  $(this).find("td:first span").text(nombres[i]);		   
				   i++;		   
			});
				
			for(var i=0; i<colapsables.length; i++)	
				$("#listadoContratos").treetable("expandNode", colapsables[i]);
					
			$("#buscar").prop( "disabled", false );
			$("#labelBuscando").hide();
	}
	
	perfil.ejecutarPerfil(pmn);
	
}

function agregarFila(contratos, nivel, idPadre){		
	if(contratos != null)
	{
	   if(Array.isArray(contratos))
	   {
		   for(var i=0; i <contratos.length; i++)
		   {
			   nombres.push(contratos[i].descripcion);
			   var fila = $("<tr/>").append(validarString(null)).append(validaNumCto(contratos[i].numeroContrato, contratos[i].idContrato))
			                        .append(validarString(contratos[i].fechaInicio)).append(validarString(contratos[i].fechaFin))
			                        .append(validarString(contratos[i].estatus)).append(validarDocumentos(contratos[i].documentos, contratos[i].idContrato, contratos[i].numeroContrato))
			                        .append(validaAcciones(contratos[i].adendum, contratos[i].enmienda, contratos[i].idContrato));			         
			   fila.attr("id",contratos[i].idContrato);			   			   
               fila = asignarPadreFila(fila, nivel, contratos[i].idContrato, idPadre, contratos[i].colapsable);
               $("#listadoContratos tbody").append(fila);
			   
               if(contratos[i].hijos != null)			   
				  agregarFila(contratos[i].hijos, nivel+1, contratos[i].idContrato);		   			    
		   }
	   }
	   else
	   {  
		   nombres.push(contratos.descripcion);
		   var fila = $("<tr/>").append(validarString(null)).append(validaNumCto(contratos.numeroContrato, contratos.idContrato))
		                        .append(validarString(contratos.fechaInicio)).append(validarString(contratos.fechaFin))
		                        .append(validarString(contratos.estatus)).append(validarDocumentos(contratos.documentos, contratos.idContrato, contratos.numeroContrato))
		                        .append(validaAcciones(contratos.adendum, contratos.enmienda, contratos.idContrato));
		   
		   fila.attr("id",contratos[i].idContrato);
		   fila = asignarPadreFila(fila, nivel, contratos[i].idContrato, idPadre);
		   
		   $("#listadoContratos tbody").append(fila);
	   }
	}
}

function asignarPadreFila(fila, nivel, idFila, idPadre, colapsable){		
	if(nivel == 0)
		fila.attr("data-tt-id", 0);
	else
		fila.attr("data-tt-id", idFila).attr("data-tt-parent-id", idPadre);
	
	if(idFila == null)//if para verificar los contratos que estan en grupos de estudios.
	{
		numNodos--;
		fila.attr("data-tt-id", numNodos).attr("colapsable",colapsable);
		if(!colapsable)
		   colapsables.push(numNodos);
	}
	else
	{
		if(nivel == 1)
			fila.attr("data-tt-parent-id", numNodos).attr("colapsable",colapsable);
	}
	return fila;
}

function asignarEstudios(){
	var id = -2;	
	var colapsable = [];
	$("#listadoContratos tbody tr").each(function(){
		var attr = $(this).attr("id");
		if (typeof attr === typeof undefined) 
		{
			id++; 
			$(this).attr("data-tt-id", id);

			if($(this).attr("colapsable") == "false")
			   colapsable.push(id);
		}
		else
		{
			var idPadre = $(this).attr("data-tt-parent-id"); 
			if (typeof idPadre === typeof undefined)
			    $(this).attr("data-tt-parent-id", id);
		}							        			
	});				
	return colapsable;
}

function validarString(string){
	if(string == null)
	   return $("<td/>").text("");
	else return $("<td/>").text(string);
}

function validarDocumentos(docs, idCto, numCto){
	if(docs == null)
	   return $("<td/>").text("");
	else
	   return $("<td/>").append("<a href='#' num='"+numCto+"'onclick='crearModalDocs("+idCto+", this)'> Ver </a>");
}

function validaNumCto(numeroContrato, idCto){
	var html = contextPath + "/contrato/listado/verContrato.action?pmn="+$('#pmn').val()+"&tipoContrato="+tipoContrato+"&idContrato="+idCto;
	if(numeroContrato == null)
	   return $("<td/>").text("");
	else
	   return $("<td/>").append("<a href='"+html+"'>"+numeroContrato+"</a>");
}

function validaAcciones(aden, enm, idCto){
	if(aden == null || enm == null)
	   return $("<td/>").text("");
	else if(aden == false && enm == false)
		   return $("<td/>").text("");
	else if(aden == true && enm == true)
	   return $("<td/>").append("<a href='#' onclick='enviarOperacion(2, "+idCto+", "+tipoContrato+")'>Addendum</a>" 
	   + "   " + "<a href='#'  onclick='defineTipoEnmienda("+idCto+", "+tipoContrato+")'>Enmienda</a>"
	   + "   " + "<a href='#'  onclick='enviarOperacion(5, "+idCto+", "+tipoContrato+")'>Virtual</a>");
	else if(aden == true && enm == false)
		   return $("<td/>").append("<a href='#' onclick='enviarOperacion(2, "+idCto+", "+tipoContrato+")'>Addendum</a>");
	else if(aden == false && enm == true)
		   return $("<td/>").append("<a href='#' onclick='defineTipoEnmienda("+idCto+", "+tipoContrato+")'>Enmienda</a>");
		   
}