//// Scripts de validación de datos.
//// Desarrollado por ayp digital(R)
//// Córdoba - República Argentina
//// www.ayp-digital.com - info@ayp-digital.com
//// Última revisión: 19/02/08

//// Verifica el texto del campo enviado:
//// Ultima revisión: 24/08/07
//// mensaje: en el caso de ser de longitud 0
//// Caracteres especiales = 1: sólo caracteres alfanuméricos (para nombre de usuario y contraseñas)
//// Caracteres especiales = 2: caracteres para cuentas de mail (alfanuméricos y -_@.)
//// Caracteres especiales = 3: todo tipo de caracteres.
function checkTexto(nombre_campo, dato, obligatorio, longitud, blancos, caracteres_especiales, mensaje)
	{
	var campo_dato = document.getElementById(dato);
	if (campo_dato != null) var dato_recibido = new String(campo_dato.value);
	else{
		var dato_recibido = new String(dato.value);
		campo_dato = dato;
		}
	var dato_valido = true;
	if(dato_valido == true && obligatorio == true && dato_recibido.length == 0){
		alert(mensaje);
		dato_valido = false;
		}
	if(dato_valido == true && dato_recibido.length > 0 && dato_recibido.length < longitud){
		alert(nombre_campo + " debe tener por lo menos "+ longitud +" caracteres.");
		dato_valido = false;
		}
	if (dato_valido == true && blancos == false && dato_recibido.indexOf(" ") != -1){
		alert(nombre_campo + " no debe tener caracteres en blanco.");
		dato_valido = false;
		}
	if (dato_valido == true){
		if (caracteres_especiales < 3){
			//// Caracteres alfanuméricos, solo para nombres de usuario y contraseñas.
			var caracteres = new String("abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
			//// Caracteres extendidos, para cuentas de mail en nombres de usuario.
			if (caracteres_especiales == 2) caracteres+= "-_@.";
			for(var i = 0; i < dato_recibido.length; i++){
				if (caracteres.indexOf(dato_recibido.charAt(i)) == -1){
					if (caracteres_especiales == 1) alert(nombre_campo + " solo puede contener caracteres alfanuméricos.");
					if (caracteres_especiales == 2) alert(nombre_campo + " solo puede contener caracteres alfanuméricos y - _ . @.");
					dato_valido = false;
					}
				}
			}
		else{
			//// Caracteres para texto en general.
			var caracteres = new String("");
			//var caracteres = new String(" abcdefghijklmnñopqrstuvwxyz0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZáéíóúÁÉÍÓÚ-_ªº\!|@#$%/()=?¿¡[]^*{}¨;:,.\n<>");
			for(var i = 0; i < dato_recibido.length && caracteres.length > 0; i++){
				if (caracteres.indexOf(dato_recibido.charAt(i)) != -1){
					alert(nombre_campo + " contiene caracteres no permitidos.");
					dato_valido = false;
					}
				}
			}
		}
	//// Se verifica si se produjo un error:
	if (dato_valido == true) return true;
	else{
		if (campo_dato.style.display != "none"){
			campo_dato.focus();
			}
		return false;
		}
	}


//// Verifica el valor numérico del campo enviado:
//// Ultima revisión: 24/08/07
//// mensaje: en el caso de ser de longitud 0
function checkNumero(nombre_campo, dato, obligatorio, valor_minimo, valor_maximo, decimal, mensaje)
	{
	var campo_dato = document.getElementById(dato);
	if (campo_dato != null) var dato_recibido = new String(campo_dato.value);
	else{
		var dato_recibido = new String(dato.value);
		campo_dato = dato;
		}
	var dato_valido = true;
	if(dato_recibido.length == 0){
		if (obligatorio == true){
			alert(mensaje);
			dato_valido = false;
			}
		else return true;
		}
	var caracteres = new String("0123456789-,.");
	var puntos = 0;
	for(var i = 0; dato_valido == true && i < dato_recibido.length; i++){
		if (caracteres.indexOf(dato_recibido.charAt(i)) == -1)
			{
			alert(nombre_campo + " solo puede contener caracteres numéricos.");
			dato_valido = false;
			}
		else{
			if (dato_recibido.charAt(i) == "." || dato_recibido.charAt(i) == ","){
				puntos++;
				if (dato_valido == true && decimal == false) {
					alert(nombre_campo +" debe ser un valor entero.");
					dato_valido = false;
					}
				
				if (dato_valido == true && decimal == true && (i == 0 || i == dato_recibido.length || puntos > 1)){
					alert(nombre_campo +" no es una dato válido. Verifique el punto decimal.");
					dato_valido = false;
					}
				}
			if (dato_valido == true && dato_recibido.charAt(i) == "-"){
				if (i != 0){
					alert(nombre_campo +" no es un dato válido. Verifique el signo.");
					dato_valido = false;
					}
				}
			}
		}
	if (dato_valido == true && dato_recibido.indexOf(",") != -1) dato.value = dato_recibido.replace(",", ".");
	if (dato_valido == true && (dato_recibido < valor_minimo || dato_recibido > valor_maximo)){
		alert(nombre_campo +" debe ser un valor entre "+ valor_minimo +" y "+ valor_maximo +".");
		dato_valido = false;
		}
	//// Se verifica si se produjo un error:
	if (dato_valido == true) return true;
	else{
		if (campo_dato.style.display != "none"){
			campo_dato.focus();
			}
		return false;
		}
	}


//// Verifica que el dato del campo enviado sea un e-mail:
//// Ultima revisión: 19/02/08
//// mensaje: en el caso de ser de longitud 0
function checkEmail(nombre_campo, dato, obligatorio, mensaje)
	{
	var campo_dato = document.getElementById(dato);
	if (campo_dato != null) var dato_recibido = new String(campo_dato.value);
	else{
		var dato_recibido = new String(dato.value);
		campo_dato = dato;
		}
	var dato_valido = true;
	var caracteres = new String("abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-_@.");
	var punto = 0;
	var arroba = 0;
	if(obligatorio == true && dato_recibido.length == 0){
		dato_valido = false;
		}
	for(var i = 0; dato_valido == true && i < dato_recibido.length; i++){
		if (caracteres.indexOf(dato_recibido.charAt(i)) == -1){
			alert(nombre_campo + " solo puede contener caracteres alfanuméricos y - _ @.");
			return false;
			}
		if (dato_valido == true && dato_recibido.charAt(i) == "."){
			punto++;
			if (i == 0 || i == dato_recibido.length - 1) dato_valido = false;
			}
		if (dato_valido == true && dato_recibido.charAt(i) == "@"){
			arroba++;
			if (i == 0 || i == dato_recibido.length - 1) dato_valido = false;
			}
		}
	if(dato_valido == true && dato_recibido.length > 0){
		if (arroba == 0 || arroba > 1 || punto == 0 || (arroba == 1 && punto > 0 && dato_recibido.lastIndexOf(".") < dato_recibido.indexOf("@"))){
			dato_valido = false;
			}
		}
	//// Se verifica si se produjo un error:
	if (dato_valido == true) return true;
	else{
		if (dato_recibido.length == 0) alert(mensaje);
		else alert(nombre_campo +" no es un dato válido.");
		if (campo_dato.style.display != "none"){
			campo_dato.focus();
			}
		return false;
		}
	}


//// Verifica que la fecha sea válida:
//// Ultima revisión: 06/11/07
function checkFecha(nombre_campo, campo_dia, campo_mes, campo_anio)
{
	//// Se toman los datos como nombre de campo o como campo:
	var campo_dia = document.getElementById(campo_dia);
	if (campo_dia != null){
		var campo_mes = document.getElementById(campo_mes);
		var campo_anio = document.getElementById(campo_anio);
		}
	var dato_dia = (campo_dia.value);
	var dato_mes = (campo_mes.value);
	var dato_anio = (campo_anio.value);
	//// Se verifica si se especificó el día:
	if (dato_dia <= 0) {
		alert("Por favor especifique el día.");
		campo_dia.focus();
		return false;
		}
	//// Se verifica si se especificó el mes:
	if (dato_mes <= 0) {
		alert("Por favor especifique el mes.");
		campo_mes.focus();
		return false;
		}
	//// Se verifica si el año es válido:
	if (dato_anio < 1000) {
		alert("El año debe ser mayor a 1000");
		campo_anio.focus();
		return false;
		}
	//// Se toman los días de los meses:
	var dias_meses = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if (dato_mes == 2 && dato_dia == 29){
		//// Año parámetro: 2004
		var anio_aux = Math.abs(dato_anio - 2004);
		if (anio_aux / 4 == Math.floor(anio_aux / 4)){
			//// Año bisiesto:
			dias_meses[1] = 29;
			//alert("bisiesto");
			}
		}
	//// Se verifica si los días del mes son correctos:
	if (dato_dia > dias_meses[dato_mes - 1]){
		alert(nombre_campo +" no es una fecha válida.");
		if (campo_dia.style.display != "none"){
			campo_dia.focus();
			}
		return false;
		}
	return true;
}


//// Corta una cadena de caracteres a la longitud especificada y agrega al final los caracteres especificados en "final".
//// Última revisión: 04/01/08
function cortarCadena(cadena, longitud, cadena_final)
{
	var cadena = new String(cadena);
	if (cadena.length > longitud){
		if (cadena.indexOf(" ", longitud) != -1) return cadena.substring(0, cadena.indexOf(" ", longitud)) + cadena_final;
		else return cadena.substring(0, longitud) + cadena_final;
		}
	else return cadena;
}

