$().ready(function() {
	
	validaChecks();
	callExponerApartadosAction();
	$("#forma").validate();
	$("#bAutorizacion").prop( "disabled", true );
	$("#divFechaAutorizacion").hide();
    $("#bSkipWorkflow").hide();
    
    
    var perfil = parseInt($("#perfil").val());
    if(perfil===1){
    	$("#bSkipWorkflow").css("display", "inline");
    	$("#bSkipWorkflow").prop( "disabled", false );
    }
    
	
    
	validaFechasDeTitulos();
	//validaTitulosContratados();
    //debugger;
	var perfilController = new PerfilController();
	perfilController.ejecutarPerfil(parseInt($("#pmn").val()));
	//perfilController.ejecutarPerfil($("#pmn").val());
	//llamaObtenerPermisos();
	$('#rechazoForm').attr('action', 'opcionesContrato_noAutoriza'); //se utiliza ese modal para boton re rechazo y el rechaso de autorizacion
});

function validaTitulosContratados() {
	
	var noTitulosContratados  = $("#titContratados").val();
	//console.log("Valida titulos contratados, no:", noTitulosContratados);
	//var patron = /^(?=.*\d).*$/; //Verifica si la cadena inicia con numero 
	var patron = /^(\d*)\d$/;//Verifica si la cadena inicia con cero o mas numeros y termina con numeros
	
	if(patron.test(noTitulosContratados)){
		//console.log("numerico");
		if(parseInt(noTitulosContratados ) < 1){
			//console.log("cero");
			$("#titContratados").val("0");
		}
	}else{
		//console.log("no numerico");
		 $("#titContratados").val("0");
	}
	
}

function descargaInformacionContrato() {
	var url = contextPath +'/contrato/generales/infoContrato.action';
   	window.open(url);
	console.log("Descarga informacion");
}

function cambiarAddendum(){
	var items = {};
	var jsonString = '{"idContrato" : "' + $("#idContrato").val() + '", "numeroContrato":"'+ $("#campoContrato").val() +'"}';
	var stringJson = JSON.parse(jsonString);
	$.ajax({ 
		url : contextPath +'/contrato/generales/cambiarAddendum',
		type : "POST",
		data : stringJson,
		success : function () { 
			document.location.reload(true);
		},
		error:function(jqXhr, textStatus, errorThrown){
	         console.error("Error: " + textStatus + " ::: " + errorThrown + " ::: " + jqXhr);
	     }
	});
}

function cambiaAccionModal() {
	//console.log('En cambian accion modal');
	$('#rechazoForm').attr('action', 'opcionesContrato_rechaza');	
	//console.log("Action : ", $( '#rechazoForm' ).attr( 'action' ));
}

function callActionAjax(actionRoute, jsonActionParameter, functionProcessor){
	
	 $.ajax({
	     url: contextPath + actionRoute,
	     type: 'POST',
	     data:  jsonActionParameter, 
		 dataType: "json",
	     success:function(response){ 
	    	 functionProcessor(response);    
	     },
	     error:function(jqXhr, textStatus, errorThrown){
	         console.error("Error: " + textStatus + " ::: " + errorThrown + " ::: " + jqXhr);
	     }
	 });
	
}

function procesaRespuestaEliminaContratoAction(jsonData) {
	//console.info(JSON.stringify(jsonData));	 
	var eliminado = jsonData.seElimino;
	
	if(eliminado) {
		seleccionaTodo();
		$(location).attr('href', '../../contrato/listado/irListado?pmn=' + $("#pmnReturn").val() + '&tipoContrato=' + $("#tipoContrato").val());
		//console.info('Se elimino el contrato.');
	}else {
		//console.info('No se pudo eliminar el contrato.');
		showError("No se pudo eliminar el contrato.");
	}
	
}

function confirm(heading, question, cancelButtonTxt, okButtonTxt, callback) {

    var confirmModal = 
        $(
      '<div class="modal fade" id="myModal" role="dialog">'+
      '<div class="modal-dialog modal-sm">'+
        '<div class="modal-content">'+
          '<div class="modal-header">'+
            '<button type="button" class="close" data-dismiss="modal">&times;</button>'+
            '<h4 class="modal-title">' + heading +'</h4>'+
          '</div>'+
          '<div class="modal-body">'+
            '<p>' + question + '</p>'+
          '</div>'+
          '<div class="modal-footer">'+
            '<a href="#" id="okButton" class="btn btn-success">' + 
              okButtonTxt + 
            '</a>' +
            '<a href="#" data-dismiss="modal" class="btn btn-primary">' + 
              cancelButtonTxt + 
            '</a>' +

           '</div>'+
        '</div>'+
      '</div>'+
    '</div>');
 
    confirmModal.find('#okButton').click(function(event) {
        callback();
        confirmModal.modal('hide');
      });

      confirmModal.modal('show');  
      
      confirmModal.on('hidden.bs.modal', function () {
          $(this).remove();
      });
      
};  



function llamaEliminaContrato() {
	
	 var heading = 'Eliminar contrato';
     var question = '&#191;Esta seguro que desea eliminar el contrato?';
     var cancelButtonTxt = 'Cancelar';
     var okButtonTxt = 'Eliminar';

     var callback = function() {
    	 	var jsonString = '{"idContratoP" : "'+ $("#idContrato").val() +'"}';
 			//console.info(jsonString);
 			var stringJson = JSON.parse(jsonString);
 			callActionAjax( "/contrato/generales/eliminaContrato", stringJson, procesaRespuestaEliminaContratoAction);
	        
	     };

     confirm(heading, question, cancelButtonTxt, okButtonTxt, callback);

	
	/*
		var jsonString = '{"idContratoP" : "'+ $("#idContrato").val() +'"}';
		//console.info(jsonString);
		var stringJson = JSON.parse(jsonString);
		callActionAjax( "/contrato/generales/eliminaContrato", stringJson, procesaRespuestaEliminaContratoAction);
*/
	
}


function procesaRespuestaObtenerPermisos(jsonData){//*************
	//console.info(JSON.stringify(jsonData));
	var vpermisos = jsonData.permisos;
	var varea = jsonData.area;
	var vusuario = jsonData.usuario;
	
	console.log(JSON.stringify(varea));
	
	console.log(JSON.stringify(vusuario));
	
	console.log("idArea : ", varea.idArea);
	
	console.log("idPerfil: ", vusuario.perfil.idPerfil);
	
	console.log("autorizacontrato : ", varea.autorizaContrato);
	
	for(var i = 0; i < vpermisos.length; i++){
		 $( "#" + vpermisos[i].selector ).prop( "disabled", false ); 
		console.log("id : " + vpermisos[i].idMenu + " -- selector : " +  vpermisos[i].selector);
		//console.log("Permiso : [" + JSON.stringify(vpermisos[i]) + "]");
		console.log("value of the boton:", $( "#" + vpermisos[i].selector ).val());
		
		if(vpermisos[i].selector == "bCancelar"){
			
			if(varea.idArea == 5){
				$( "#" + vpermisos[i].selector ).prop( "disabled", false ); 
			}else {
				$( "#" + vpermisos[i].selector ).prop( "disabled", true ); 
			}
		}
		
		if(vpermisos[i].selector == "bFinalizar" && varea.autorizaContrato == 0){
			 $( "#" + vpermisos[i].selector ).prop( "disabled", true);//ocultaba el boton de finalizar registro 
			console.log("Es el boton Finalizar Registro.");
		}
	}
}												//*************

function llamaObtenerPermisos() {
	var jsonString = '{"idContrato" : "'+ 1 +'"}';
	var stringJson = JSON.parse(jsonString);
	callActionAjax( "/contrato/generales/obtenerPermisos", stringJson, procesaRespuestaObtenerPermisos);
}


function validaFechaSap() {
	
	var fechaInicio, fechaSAP;
	var dFechaInicio, dFechaSAP;
	fechaInicio = $("#campoFechaInicio").val();
	fechaSAP = $("#fechaSAP").val();
	
	//console.log("fechaInicio : " + fechaInicio + " fechaSAP : " + fechaSAP);
	
	if(fechaInicio != "" && fechaSAP != "") {
		
		dFechaInicio = new Date(fechaInicio);
		dFechaSAP = new Date(fechaSAP);
		
		//console.log("dFechaInicio : " + dFechaInicio + " dFechaSAP : " + dFechaSAP);
		
		if(dFechaInicio < dFechaSAP) {
			$("#campoFechaAutorizacion").show();
			$("#toCampoFechaAutorizacion").show();
		}else {
			$("#campoFechaAutorizacion").hide();
			$("#toCampoFechaAutorizacion").hide();
			$("#campoFechaAutorizacion").val("");
		}
		
	}

}

function obtenMeses(fechaIni, fechaFin) {
	
	var diferenciaTiempo = (fechaFin.getTime() - fechaIni.getTime());
	var diferenciaDias = (diferenciaTiempo / (1000 * 60 * 60 * 24));
	var diferenciaMeses = Math.floor(diferenciaDias / 30);
	if(diferenciaMeses < 3) {
		showWarn("Lo meses deben de ser m\u00EDnimo 3.");
		$("#campoFechaFin").val($("#fechaFinOrg").val());
	}
	return diferenciaMeses <= 0 ? 0 : diferenciaMeses;
}

function calculateDiferenceMonts() {
	
	var meses = 0;
	var annios = 0;
	
	if ($("#campoFechaInicio").val() != '' && $("#campoFechaFin").val() != '') {
		
		meses = obtenMeses($("#campoFechaInicio").datepicker("getDate"), $("#campoFechaFin").datepicker("getDate"));	
		
		if(meses < 12){
			//console.log("annios : 0 " + " * meses : " + meses);
			$("#annios").val(0);
			$("#meses").val(meses);
		}else {
			annios = Math.floor(meses / 12);
			meses = meses % 12;
			
			$("#annios").val(annios);
			$("#meses").val(meses);
			
			//console.log("annios : " + annios + " * meses : " + meses);
		}
		
	}
}

function validaFechaOriginal(){
	var fechaInicioOriginal = $("#fechaInicioPadre").val();
//	alert(fechaInicioOriginal);
//	alert($("#campoFechaInicio").val());
//	alert();
	verificaFechas(new Date(fechaInicioOriginal), $("#campoFechaInicio").datepicker("getDate"));
}

function verificaFechas(fechaInicioOriginal, fechaInicio){
	
	var respuesta = false;
	
	if(fechaInicioOriginal != null && fechaInicio != null) {
		if(fechaInicio < fechaInicioOriginal){
			respuesta = true;
			showError("La fecha que seleccion\u00F3 es incorrecta.");
		}	
	}
	
	return respuesta;
}


function revisaAnnioFecha(dfecha) {
	var fechaActual = new Date();
	var respuesta = false;
	
	if(dfecha.getFullYear() < (fechaActual.getFullYear() - 100) || dfecha.getFullYear() > (fechaActual.getFullYear() + 100)) {
		showError("La fecha que seleccion\u00F3 es incorrecta.");
		respuesta = true;
	}
	
	return respuesta;
}

function validacionInicialFechas(fechaInicio, fechaFin) {
	//console.log("validaLimiteAnnios(fechaInicio : " + fechaInicio + ", fechaFin :" + fechaFin + "");
	var dFechaInicio = null, dFechaFin = null;

	
	if (fechaInicio != "") {
		dFechaInicio = new Date(fechaInicio);
		
		if(revisaAnnioFecha(dFechaInicio)){
			$("#campoFechaInicio").val($("#fechaInicioOrg").val());
		}
		
	}
	
	if (fechaFin != "") {
		dFechaFin = new Date(fechaFin);
		
		if(revisaAnnioFecha(dFechaFin)){
			$("#campoFechaFin").val($("#fechaFinOrg").val());
		}
		
	}
	
	if(dFechaInicio != null && dFechaFin != null) {
		if(dFechaFin <  dFechaInicio) {
			showError("La fecha que seleccion\u00F3 es incorrecta.");
			$("#campoFechaFin").val($("#fechaFinOrg").val());
		}
	}
	
	
}

function validaFechasDeTitulos() {
	
	var fechaMin, fechaMax, fechaInicio, fechaFin;
	var dFechaMin, dFechaMax, dFechaInicio, dFechaFin;
	
	fechaMin = $("#fechaTitulosMin").val(); //"01/25/2014";
	fechaMax = $("#fechaTitulosMax").val(); //"03/25/2016";
	fechaInicio = $("#campoFechaInicio").val(); //"01/25/2015";
	fechaFin = $("#campoFechaFin").val(); //"02/25/2016";
	
	validacionInicialFechas(fechaInicio, fechaFin);
	calculateDiferenceMonts();
	validaFechaSap();
	validaFechaOriginal();//revisar para que se validaba esto
	
	//console.log("Contrato (Inicio : " + fechaInicio + " * Fin : " + fechaFin + ") | Titulos ( Min : " + fechaMin + " * Max :" +fechaMax +")");
	
	if(fechaMin != "" && fechaMax != "" && fechaInicio != "" && fechaFin != ""){
		
		//console.log("Verificar Fechas.");
		
		dFechaMin = new Date(fechaMin);
		dFechaMax = new Date(fechaMax); 
		dFechaInicio = new Date(fechaInicio); 
		dFechaFin = new Date(fechaFin);
		
		if((dFechaMin < dFechaInicio) || (dFechaMax > dFechaFin)) {
			showError("Las fechas seleccionadas son incorrectas respecto a las fechas de los t\u00EDtulos asociados.");
			$("#campoFechaInicio").val($("#fechaInicioOrg").val());
			$("#campoFechaFin").val($("#fechaFinOrg").val());
		}
		
	}else {
		//console.log("No verificar fechas.");
	}
	
}








//------------------------------------------------------------- validacion para revisa si el check de autorización fue hecho

var pulsoCheck = 0;

function validaSiPulsaronCheck() {
	
	if(pulsoCheck == 0) {
		$("#bAutorizacion").prop( "disabled", false );
		$("#bNoAutoriza").prop( "disabled", true );
		pulsoCheck = 1;
		//console.log("Activo check");
	}else {
		$("#bAutorizacion").prop( "disabled", true );
		$("#bNoAutoriza").prop( "disabled", false );
		pulsoCheck = 0;
		//console.log("Desactivo check");
	}
	
}

function validaChecks(){ 
	
	var elementos = document.getElementsByName("campoAutorizan");
	var n = elementos.length;
	var desabilitados = 0;
	var marcados = 0;
	
	if(n > 0){
	
		for (var i=0; i < n; i++){
			
			if (elementos[i].disabled) {
				desabilitados++;
			 }
			
			if(elementos[i].checked) {
				marcados++;
			}
		}
		
		if(marcados != n) {
			//$("#bNotificar").hide();
		}
		if(desabilitados == n){
			$("#bAutorizacion").hide();
			$("#bNoAutoriza").hide();
		}
		
		//alert('n: ' + n + ' d: ' + desabilitados + " m: " + marcados);
	}
}


//------------------------------------------------------------- configuracion para usar el combobox sos
var comboCategorias = document.getElementById("lbCategorias");
var comboCategoriasSelecc = document.getElementById("lbIDCategoriasSeleccionadas");
var comboServicios = document.getElementById("lbServicios");
var comboServiciosSelecc = document.getElementById("lbIDServiciosSeleccionados");
var comboTerritorios = document.getElementById("lbTerritorios");
var comboTerritoriosSelecc = document.getElementById("lbIDTerritoriosSeleccionados");
var comboAtributos = document.getElementById("lbAtributos");
var comboAtributosSelecc = document.getElementById("lbIDAtributosSeleccionados");
var comboFiliales = document.getElementById("lbFiliales");
var comboFilialesSelecc = document.getElementById("lbIDFilialesSeleccionados");
var comboTypes = document.getElementById("lbTypes");
var comboTypesSelecc = document.getElementById("lbIDTypesSeleccionados");
/**/
Combobox();
Combobox.setCombosAlterna(comboCategorias, comboCategoriasSelecc, "categorias");

Combobox();
Combobox.setCombosAlterna(comboServicios, comboServiciosSelecc, "servicios");

Combobox();
Combobox.setCombos(comboTerritorios, comboTerritoriosSelecc);

Combobox();
Combobox.setCombos(comboAtributos, comboAtributosSelecc);

Combobox();
Combobox.setCombosAlternaDos(comboFiliales, comboFilialesSelecc, 1);

Combobox();
Combobox.setCombos(comboTypes, comboTypesSelecc);

function seleccionaTodo() {

	$("#apartado").prop( "disabled", false );
	$("#indicador").prop( "disabled", false );
	fSeleccionarOpcionesCombo("lbIDCategoriasSeleccionadas");
	fSeleccionarOpcionesCombo("lbIDServiciosSeleccionados");
	fSeleccionarOpcionesCombo("lbIDTerritoriosSeleccionados");
	fSeleccionarOpcionesCombo("lbIDAtributosSeleccionados");
	fSeleccionarOpcionesCombo("lbIDFilialesSeleccionados");
	fSeleccionarOpcionesCombo("lbIDTypesSeleccionados");

}

function fSeleccionarOpcionesCombo( pstIDCombo ) {
	
    var lobCombo = document.getElementById( pstIDCombo );
    var lnuTotal = lobCombo.options.length;
    
    for( var xI = 0; xI < lnuTotal; xI++ )
        lobCombo[ xI ].selected = true;
    
}
//-------------------------------------------------------------

//-------------------------------------------

function monthDiff(d1, d2) {
	var months;
	months = (d2.getFullYear() - d1.getFullYear()) * 12;
	months = months - d1.getMonth();
	months = months + d2.getMonth();
	return months <= 0 ? 0 : months;
}

function fValidarForma() {
	$("#forma").valid();
}

$().ready(
		function() {
			// $("#fecha").datepicker({});

			$("#campoFechaInicio").datepicker({});
			$("#campoFechaFin").datepicker({});

			$("#campoFechaInicio").datepicker(
					{
						onClose : function(selectedDate) {
							$("#campoFechaFin").datepicker("option", "minDate",
									selectedDate);
						}
					});
			$("#campoFechaFin").datepicker(
					{
						onClose : function(selectedDate) {
							$("#campoFechaInicio").datepicker("option",
									"maxDate", selectedDate);
						}
					});

			// -- Validaciones lbPlanes_seleccionados[]apartado
			$("#forma").validate({
				rules : {
					"campoContrato" : {
						required : false,
						maxlength : 50
					// email : true
					},
					"apartado" : {
						required : true,
					},
					"justificacion" : {
						required : false,
						maxlength : 100
					},
					"porcentaje" : {
						required : true,
						maxlength : 30,
						range : [ 1, 100 ]
					},
					"campoFechaInicio" : {
						required : true,
						maxlength : 30,
						date : true
					},
					"lbIDCategoriasSeleccionadas" : {
						required : true, 
					},
					"campoFechaFin" : {
						required : function() {

							if ($("#campoFechaInicio").val() != "")
								return true;
							return false;
						},
						maxlength : 30,
						date : true
					}
				}
			});

		});

//------------------------------------------------------------- valida los checks de autorizacion


/* function validaFechaOriginal(){
	var fechaInicioOriginal = $("#fechaInicioPadre").val();
	alert(fechaInicioOriginal);
	alert($("#campoFechaInicio").val());
	alert(verificaFechas(new Date(fechaInicioOriginal), $("#campoFechaInicio").datepicker("getDate")));
}

function verificaFechas(fechaInicioOriginal, fechaInicio){
	
	var respuesta = false;
	
	if(fechaInicioOriginal != null && fechaInicio != null) {
		if(fechaInicio < fechaInicioOriginal){
			respuesta = true;
			showError("La fecha que seleccionó es incorrecta.");
		}	
	}
	
	return respuesta;
}  */
