$().ready(function() {
	if (!$("#idContrato").val()) {
		var perfilController = new PerfilController();
		switch ($("#tipoContrato").val()) {
		  case '1':
			perfilController.ejecutarPerfil('61');
		    break;
		  case '2':
			perfilController.ejecutarPerfil('104');
			break;
		  case '3':
			perfilController.ejecutarPerfil('118');
		    break;
		  default:
			break;
		}
			
	}
	validaChecksIni();
	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();
	var perfilController = new PerfilController();
	perfilController.ejecutarPerfil(parseInt($("#pmn").val()));
	$('#rechazoForm').attr('action', 'opcionesContrato_noAutoriza'); //se utiliza ese modal para boton re rechazo y el rechaso de autorizacion
});

$('#modalSolicitoMotivo').on('show.bs.modal', function (event) {
	var triggerElement = $(event.relatedTarget);
    if (triggerElement.attr('data-bs-target') === '#modalSolicitoMotivo') {
		var perfilService = new PerfilService();
		var data = perfilService.obtenerPermisos(pmn);
		if(data.permisoSi === 0){
			event.preventDefault();
			showError("No se tienen permisos para realizar esta acci&oacute;n.");
		}
    }
});

$('#modalDocum').on('show.bs.modal', function (event) {
	var triggerElement = $(event.relatedTarget);
    if (triggerElement.attr('data-bs-target') === '#modalDocum') {
		var perfilService = new PerfilService();
		var data = perfilService.obtenerPermisos('72');
		if(data.permisoSi === 0){
			event.preventDefault();
			showError("No se tienen permisos para realizar esta acci&oacute;n.");
		}
    }
});



function validaTitulosContratados() {

	var noTitulosContratados = $("#titContratados").val();
	var patron = /^(\d*)\d$/;//Verifica si la cadena inicia con cero o mas numeros y termina con numeros

	if (patron.test(noTitulosContratados)) {
		if (parseInt(noTitulosContratados) < 1) {
			$("#titContratados").val("0");
		}
	} else {
		$("#titContratados").val("0");
	}

}

function descargaInformacionContrato() {
	var si = false;
	switch ($("#tipoContrato").val()) {
	  case '1':
		si = validaPermisos('87');
	    break;
	  case '2':
		si = validaPermisos('108');
		break;
	  case '3':
		si = validaPermisos('122');
	    break;
	  default:
		break;
	}
	if(si){
		var url = contextPath + '/contrato/generales/infoContrato.action';
		window.open(url);
	}
}

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) {

		}
	});
}

function cambiaAccionModal(pmn) {
	var perfilService = new PerfilService();
	var data = perfilService.obtenerPermisos(pmn);
	if(data.permisoSi === 0){
		showError("No se tienen permisos para realizar esta acci&oacute;n.");
	} else {
		$('#rechazoForm').attr('action', 'opcionesContrato_rechaza');	
	}
}

function validaPermisos(pmn){
	var perfilService = new PerfilService();
	var data = perfilService.obtenerPermisos(pmn);
	if(data.permisoSi === 0){
		showError("No se tienen permisos para realizar esta acci&oacute;n.");
		return false;
	} else {
		return true;
	}
}

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) {

		}
	});

}

function procesaRespuestaEliminaContratoAction(jsonData) {

	var eliminado = jsonData.seElimino;

	if (eliminado) {
		seleccionaTodo();
		$(location).attr('href', '../../contrato/listado/irListado?pmn=' + $("#pmnReturn").val() + '&tipoContrato=' + $("#tipoContrato").val());
	} else {
		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(pmn) {
	var si = false;
			switch ($("#tipoContrato").val()) {
			  case '1':
				si = validaPermisos('63');
			    break;
			  case '2':
				si = validaPermisos('106');
				break;
			  case '3':
				si = validaPermisos('120');
			    break;
			  default:
				break;
			}
	if(si){
		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() + '"}';
			var stringJson = JSON.parse(jsonString);
			callActionAjax("/contrato/generales/eliminaContrato", stringJson, procesaRespuestaEliminaContratoAction);

		};

		confirm(heading, question, cancelButtonTxt, okButtonTxt, callback);	
	} else {
		$('#modalSolicitoMotivo').modal('hide');
	}
}


function procesaRespuestaObtenerPermisos(jsonData) {//*************
	var vpermisos = jsonData.permisos;
	var varea = jsonData.area;
	var vusuario = jsonData.usuario;

	for (var i = 0; i < vpermisos.length; i++) {
		$("#" + vpermisos[i].selector).prop("disabled", false);

		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") {
			if (varea.autorizaContrato == 0) {
				$("#" + vpermisos[i].selector).prop("disabled", true);//ocultaba el boton de finalizar registro 
			}
		}
	}
}												//*************

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

function verificarTitulos() {
	
}


function validaFechaSap() {

	var fechaInicio, fechaSAP;
	var dFechaInicio, dFechaSAP;
	fechaInicio = $("#campoFechaInicio").val();
	fechaSAP = $("#fechaSAP").val();

	if (fechaInicio != "" && fechaSAP != "") {

		dFechaInicio = new Date(fechaInicio);
		dFechaSAP = new Date(fechaSAP);

		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) {
			$("#annios").val(0);
			$("#meses").val(meses);
		} else {
			annios = Math.floor(meses / 12);
			meses = meses % 12;

			$("#annios").val(annios);
			$("#meses").val(meses);

		}

	}
}

function validaFechaOriginal() {
	var fechaInicioOriginal = $("#fechaInicioPadre").val();
	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) {
	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

	if (fechaMin != "" && fechaMax != "" && fechaInicio != "" && fechaFin != "") {

		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());
		}

	}

}

//------------------------------------------------------------- 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;
	} else {
		$("#bAutorizacion").prop("disabled", true);
		$("#bNoAutoriza").prop("disabled", false);
		pulsoCheck = 0;
	}

}

function validaChecks(pmn) {
	var si = false;
		switch ($("#tipoContrato").val()) {
		  case '1':
			si = validaPermisos('65');
		    break;
		  case '2':
			si = validaPermisos('110');
			break;
		  case '3':
			si = validaPermisos('124');
		    break;
		  default:
			break;
		}
	if(si){
		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 (desabilitados == n) {
				$("#bAutorizacion").hide();
				$("#bNoAutoriza").hide();
			}
		}
	}
}

function validaChecksIni(){
	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 (desabilitados == n) {
			$("#bAutorizacion").hide();
			$("#bNoAutoriza").hide();
		}
	}
}


//------------------------------------------------------------- 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(pmn) {
	var si = false;
	
	switch (pmn) {
	  case '62':
		si = seleccionandoTodo('62','105','119');
	    break;
	  case '64':
		si = seleccionandoTodo('64','109','123');
		break;
	  case '61':
		si = seleccionandoTodo('61','104','118');
	    break;
	  case '68':
		si = validaTipoContrato('68','112','126');
	    break;
	  case '69':
		si = validaTipoContrato('69','113','127');
		  break;
	  case '70':
		si = validaTipoContrato('70','114','128');
		break;
	  case '67':
		si = validaTipoContrato('67','67','67');
		break;
	  case '66':
		si = validaTipoContrato('66','111','125');
		break;
	  case '71':
		si = validaTipoContrato('71','115','129');
	break;
	  default:
		break;
	}
	return si;
}

function validaTipoContrato(per1, per2, per3) {
	var si = false;
	switch ($("#tipoContrato").val()) {
	  case '1':
		si = validaPermisos(per1);
	    break;
	  case '2':
		si = validaPermisos(per2);
		break;
	  case '3':
		si = validaPermisos(per3);
	    break;
	  default:
		break;
	}
	return si;
}

function seleccionandoTodo(per1, per2, per3) {
	var si = false;
	switch ($("#tipoContrato").val()) {
	  case '1':
		si = validaPermisos(per1);
	    break;
	  case '2':
		si = validaPermisos(per2);
		break;
	  case '3':
		si = validaPermisos(per3);
	    break;
	  default:
		break;
	}
	if(si){
		$("#apartado").prop("disabled", false);
		$("#indicador").prop("disabled", false);
		fSeleccionarOpcionesCombo("lbIDCategoriasSeleccionadas");
		fSeleccionarOpcionesCombo("lbIDServiciosSeleccionados");
		fSeleccionarOpcionesCombo("lbIDTerritoriosSeleccionados");
		fSeleccionarOpcionesCombo("lbIDAtributosSeleccionados");
		fSeleccionarOpcionesCombo("lbIDFilialesSeleccionados");
		fSeleccionarOpcionesCombo("lbIDTypesSeleccionados");
	}
}

function desactivar() {
	$("#bNotificar").prop("disabled", true);
}

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() {

		$("#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
				},
				"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
				}
			}
		});

	});
