/*Funciones de manipulación de cadenas*/
/*
Función que elimina el caracter pasado a través de la variable car a la izquierda de una cadena
*/
function lTrim(sStr, car){
	if(sStr != "" && sStr != null){
		while (sStr.charAt(0) == car)
		sStr = sStr.substr(1, sStr.length - 1);
	}
	return sStr;
}

/*
Función que elimina el caracter pasado a través de la variable car a la derecha de una cadena
*/	
function rTrim(sStr, car){
	if(sStr != "" && sStr != null){
		while (sStr.charAt(sStr.length - 1) == car)
		sStr = sStr.substr(0, sStr.length - 1);
	}
	return sStr;
}

/*
Función que elimina el caracter pasado a través de la variable car a la izquierda y a la derecha de una cadena
*/
function allTrim(sStr, car){
	return rTrim(lTrim(sStr, car), car);
}
/*Fin Funciones de manipulación de cadenas*/

/*Funciones de Validación de datos de Entrada*/
/*
	Códigos de Teclas
	- = 45
	. = 46
	, = 44
	0 = 48
	9 = 57
	A = 65
	Z = 90
	a = 97
	z = 122
	enter = 13
	backspace = 8
	' ' = 32 (Espacio en blanco)
*/
function validarEntero(evt){
	var key = (document.all) ? evt.keyCode : evt.which;
	return (key <= 13 || (key >= 48 && key <= 57));
}

function validarEnteroGion(evt){
	var key = (document.all) ? evt.keyCode : evt.which;
	return (key <= 13 || (key >= 48 && key <= 57) || key == 45);
}

function validarDecimal(evt){
	var key = (document.all) ? evt.keyCode : evt.which;
	return (key <= 13 || (key >= 48 && key <= 57 || key == 46 || key == 44));
}

function validarDecimalPunto(evt){
	var key = (document.all) ? evt.keyCode : evt.which;
	return (key <= 13 || (key >= 48 && key <= 57 || key == 46));
}

function validarDecimalComa(evt){
	var key = (document.all) ? evt.keyCode : evt.which;
	return (key <= 13 || (key >= 48 && key <= 57 || key == 44));
}

function validarLetras(evt){
	var key = (document.all) ? evt.keyCode : evt.which;
	return (key <= 13 || key == 32 || (key >= 65 && key <= 90) || (key >= 97 && key <= 122));
}

function validarEmail(id) {
	var correo = document.getElementById(id);
	if(allTrim(correo.value,' ')){
		if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(correo.value)){
			return true;
		}
		else{
			aviso('El email que introdujo no es válido.', 'Aviso', 'document.getElementById("'+id+'").focus();');
			//alert('El email que introdujo no es válido');
			//correo.focus();
			return false;
		}
	}
}

function validarVacio(id){
	var elemento = document.getElementById(id);
	//var cadena = allTrim(elemento.value,' ');
	var cadena = elemento.value;
	cadena = cadena.replace(/\r\n/g, "");	
	cadena = cadena.replace(/\n/g, "");
	cadena = allTrim(cadena,' ');
	if(cadena == ''){
		return false;
	}
	else{
		return true;
	}
}

function validarVacioMensaje(id, mensError){
	if(!validarVacio(id)){
		aviso(mensError, 'Aviso', 'document.getElementById("'+id+'").focus();');
		//alert(mensError);
		//document.getElementById(id).focus();
		return false;
	}
	else{
		return true;
	}
}

/*Fin de las funciones de validación de datos de entrada*/

function abrirPag(pagina, par){
	if(!pagina==""){
		window.open(pagina, 'pop', 'Menubar=YES, Titlebar=YES, Toolbar =YES, Resizable=YES, Scrollbars=YES, location=0');
	}
}

function abrirPop(pagina, titulo, ancho, alto){
	if(!pagina==""){
		window.open(pagina, titulo, 'Menubar=NO, Titlebar=NO, Toolbar=NO, Resizable=YES, Scrollbars=YES, location=0, width='+ancho+', height='+alto);
	}
}

function redireccionar(pagina){
	window.location = pagina;
}

function rellenarCampo(id, texto){
	var elemento = document.getElementById(id);
	var contenido = allTrim(elemento.value);
	if(contenido == ''){
		elemento.value = texto;
	}
}

function limpiarCampo(id, texto){
	var elemento = document.getElementById(id);
	var contenido = allTrim(elemento.value);
	if(contenido == texto){
		elemento.value = '';
	}
}

function mensaje(mens){
	$(document).ready(function(){
		alert(mens);
	})
}

function buscarValor(tabla, campo, valor, camrel, valrel){
	var resp = $.ajax({
					data:{'tabla':tabla , 'campo':campo , 'valor':valor, 'camrel':camrel, 'valrel':valrel},
					datatype:'text',
					async:false,
					type:'post',
					url:'prg/buscarCampo.php'
				}).responseText;
	if (resp == '1'){
		return true;
	}
	else{
		return false;
	}
}

//Funciones de validación de fechas
//Valida que una fecha sea válida, si el parámetro hoy viene con un valor tipo fecha entonces se validará que 
//la fecha no se mayor que ese valor. ES IMPORTANTE QUE TODAS LOS VALORES TIPO FECHA TENGAN EL FORMATA DD-MM-YYYY
function validarFormatoFecha(id, fecha, hoy){
	if(fecha != ""){
		var elemento = document.getElementById(id);
		var fecha = fecha.split("-");
		var dia = parseInt(fecha[0],10);
		var mes = parseInt(fecha[1],10);
		var ano = parseInt(fecha[2],10);
		if(hoy != ""){
			var hoy = hoy.split("-");
			var diaHoy = parseInt(hoy[0],10);
			var mesHoy = parseInt(hoy[1],10);
			var anoHoy = parseInt(hoy[2],10);
			var fecha = new Date (ano, (mes-1), dia, 0, 0, 0);
			var fechaHoy = new Date (anoHoy, (mesHoy-1), diaHoy, 0, 0, 0);
			var ok = true;
			var mens = "";
			mens = validarFechaMayorHoy(dia, mes, ano, fecha, fechaHoy);
			if (mens != ""){
				ok = false;
				aviso(mens);
				//alert(mens);
				elemento.value = '';
			}
			return ok;
		}
		else{
			var fecha = new Date (ano, (mes-1), dia, 0, 0, 0);
			var ok = true;
			var mens = "";
			mens = validarFecha(dia, mes, ano, fecha);
			if (mens != ""){
				ok = false;
				aviso(mens);
				//alert(mens);
				elemento.value = '';
			}
			return ok;
		}
	}
	return true;
}

/*Función que determina si un año es bisiesto o no
*/
function esBisiesto(ano){
	if ((ano % 4 == 0) && (( ano % 100 != 0) || (ano % 400 == 0)))
		return true;
	else
		return false;
}

/*
Función que valida si una fecha es válida
*/
function validarFecha(dia, mes, ano) {
	var mens = "";
	if(dia <= 0 || dia > 31){
		//El día es menor a 0 o mayor a 31
		mens = "El día que introdujo no es válido";
	}
	else{
		if(dia >= 30){
			if(mes == 2){
				//El dia es 30 o 31 y el mes es Febrero
				mens = "El día que introdujo no es válido para el mes de Febrero";
			}
			else{
				if (dia > 30 && (mes == 4 || mes == 6 || mes == 9 || mes == 11)){
					//El dia es 31 y el mes es Abril, Junio, Septiembre o Noviembre
					mens = "El día que introdujo no es válido para ese mes";
				}
			}
		}
		else{
			if(mes <= 0 || mes > 12){
				//El mes es 0 o mayor que 12
				mens = "El mes que introdujo no es válido";
			}
			else{
				if(dia == 29 && mes == 2 && !esBisiesto(ano)){
					//El día es 29, el mes es Febrero y el año no es bisiesto
					mens = "El año que introdujo no es bisiesto";
				}
			}
		}
	}
	return mens;
}

/*
Función que valida si una fecha es válida y si es mayor que hoy
*/
function validarFechaMayorHoy(dia, mes, ano, fecha, hoy) {
	var mens = "";
	mens = validarFecha(dia, mes, ano);
	if(mens == ""){
		if(fecha > hoy){
			//La fecha que se introdujo es mayor que la fecha de hoy
			mens = "La fecha que introdujo es mayor que la fecha de hoy";
		}
	}
	
	return mens;
}
