<!--
function es_numero(car)
{
	var VALIDAS="1234567890";
	return VALIDAS.indexOf(car)>=0;
}
function es_entero(cadena)
{
	for (var i=0;i<cadena.length;i++)
	{
			if(!es_numero(cadena.charAt(i)))
			{
				return(false);
			}
	}
	return(true);		
}
function es_nreal(car)
{
	var VALIDAS="1234567890.";
	return VALIDAS.indexOf(car)>=0;
}
function es_real(cadena)
{
	for (var i=0;i<cadena.length;i++)
	{
			if(!es_nreal(cadena.charAt(i)))
			{
				return(false);
			}
	}
	return(true);		
}

/* validación formularios */

/*
**
**	Función validaform(param1,param2)
**	CREADA POR: JOSÉ FERNANDO CAICEDO NÚÑEZ
**	VERSIÓN 1.01
**
**	En esta función función se valida un formulario de forma "genérica"
**	Además necesita las funciones de valicación de números enteros y números reales.
**
**	param1 :  A este parámetro deben ser pasados los ids de los campos OBLIGATORIOS PARA EL FORMULARIO, CUALQUIER CAMPO OPCIONAL
**  QUE REQUIERA UNA VALIDACION ESPECIAL, TOCA HACERLO APARTE!!!!
**	los ids deben ir separados por comas (',')
**
**	param2 :  A este parámetro se le deben pasar los campos OBLIGATORIOS que necesiten una validación especial, SOLO SE LE PUEDEN
**	PASAR UNA CONDICION, NADA MAS, UNA CONDICION POR ID
**	se deben pasar los parametros de la siguiente forma: 'id1-condicion1,id2-condicion2,id3-condicion3,...'
**	las condiciones son: Números enteros, extensiones de archivos separados por espacio y sin punto(exe swf png bmp ...),
**	esas extensiones son las que SI pueden ser usadas, la palabra "ent" (sin comillas, naturalmente), para determinar que
**	el texto escrito en el campo DEBE SER UN NUMERO ENTERO, o "real" SI EL NUMERO DEBE SER REAL, "url" si es una dirección web
**	lo que el usuario debe insertar, "email" si es una dirección de correo electrónico y "alfa" si necesariamente es solo letricas.
**	Los casos "url" y "email" son exclusivos de campos de texto, no de áreas de texto, y las extensiones de archivo solo
**	para campos de archivo, no hay condiciones para tipos radio ni cajas de chequeo.
**	Si el campo no tiene validación especial, NO DEBE IR ABSOLUTAMENTE NADA REFERENCIANDO AL CAMPO EN EL SEGUNDO PARAMETRO DE LA
**	FUNCION
**
*/
function validaform(param1,param2)
{
	ids = param1.split(',');
	cuantos = ids.length;
	cuantosesp = 0;
	if(param2 != undefined)
	{
		especiales = param2.split(",");
		cuantosesp = especiales.length;
	}
	for(j = 0; j < cuantos; j++)
	{
		id = ids[j];
		esp = "nada";
		if(cuantosesp > 0)
		{
			for(i = 0; i <cuantosesp; i++)
			{
				if(especiales[i].indexOf(id+"-") != -1)
				{
					objetosesp = especiales[i].split("-");
					esp = objetosesp[1];
					break;
				}
			}
		}
		tipo = document.getElementById(id).type;
		switch (tipo)
		{
			case "select-one":
				if(document.getElementById(id).selectedIndex == 0)
				{
					alert("Debe seleccionar un item de la lista.");
					document.getElementById(id).focus();
					return false;
				}
			break;
			case "select-multiple":
				if(document.getElementById(id).selectedIndex == -1 && esp == "nada")
				{
					alert("Debe seleccionar por lo menos un item de la lista.");
					document.getElementById(id).focus();
					return false;
				}
				else
				{
					if(es_entero(esp))
					{
						cuantossm = document.getElementById(id).length;
						total = 0;
						for(i = 0; i < cuantossm; i++)
						{
							if(document.getElementById(id)[i].selected === true)
								total++
						}
						if(total < esp)
						{
							it = (esp == 1) ? "item" : "items";
							alert("Debe seleccionar por lo menos " + esp + " " + it + " de la lista.");
							document.getElementById(id).focus();
							return false;
						}
					}
				}
			break;
			case "textarea":
				if(document.getElementById(id).value == "" && esp == "nada")
				{
					alert("No olvide completar toda la información.");
					document.getElementById(id).focus();
					return false;
				}
				else
				{
					if(es_entero(esp))
					{
						if(document.getElementById(id).value.length < esp)
						{
							it = (esp == 1) ? "caracter" : "caracteres";
							alert("El texto debe tener por lo menos " + esp + " " + it + ".");
							document.getElementById(id).focus();
							return false;
						}
					}
					else
					{
						switch(esp)
						{
							case "ent":
								if(!es_entero(document.getElementById(id).value))
								{
									alert("Debe escribir un número entero.");
									document.getElementById(id).value = "";
									document.getElementById(id).focus();
									return false;
								}
							break;
							case "real":
								if(!es_nreal(document.getElementById(id).value))
								{
									alert("Debe escribir un número real, usando únicamente '.' para separar los decimales.");
									document.getElementById(id).value = "";
									document.getElementById(id).focus();
									return false;
								}
							break;
						}
					}
				}
			break;
			case "radio":
				if(document.getElementById(id).value == "")
				{
					alert("No olvide seleccionar una opción.");
					document.getElementById(id).focus();
					return false;
				}
			break;
			case "checkbox":
				if(document.getElementById(id).value == "")
				{
					alert("No olvide escoger al menos una opción.");
					document.getElementById(id).focus();
					return false;
				}
			break;
			case "text":
				if(document.getElementById(id).value == "")
				{
					alert("No olvide completar toda la información.");
					document.getElementById(id).focus();
					return false;
				}
				else
				{
					if(es_entero(esp))
					{
						if(document.getElementById(id).value.length < esp)
						{
							it = (esp == 1) ? "caracter" : "caracteres";
							alert("El texto debe tener por lo menos " + esp + " " + it + ".");
							document.getElementById(id).focus();
							return false;
						}
					}
					else
					{
						switch(esp)
						{
							case "ent":
								if(!es_entero(document.getElementById(id).value))
								{
									alert("Debe escribir un número entero.");
									document.getElementById(id).value = "";
									document.getElementById(id).focus();
									return false;
								}
							break;
							case "real":
								if(!es_real(document.getElementById(id).value))
								{
									alert("Debe escribir un número real, usando únicamente '.' para separar los decimales.");
									document.getElementById(id).value = "";
									document.getElementById(id).focus();
									return false;
								}
							break;
							case "email":
								if(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(document.getElementById(id).value)))
								{
									alert("Debe escribir una dirección de correo electrónico válida.");
									document.getElementById(id).value = "";
									document.getElementById(id).focus();
									return false;
								}
							break;
							case "url":
								if(esp == "url" && !(/^https?\:\/\/[a-zA-Z0-9\.\-]+(\/[\S]*)?$/.test(document.getElementById(id).value)))
								{
									alert("Debe asignar una dirección URL válida.");
									document.getElementById(id).value = "";
									document.getElementById(id).focus();
									return false;
								}
							break;
							case "alfa":
								if(esp == "alfa" && (/[0-9]/.test(document.getElementById(id).value)))
								{
									alert("El campo no debe contener números.");
									document.getElementById(id).value = "";
									document.getElementById(id).focus();
									return false;
								}
							break;
						}
					}
				}
			break;
			case "file":
				if(document.getElementById(id).value == "")
				{
					alert("No olvide seleccionar un archivo.");
					document.getElementById(id).focus();
					return false;
				}
				else
				{
					if(esp != "nada")
					{
						paths = esp.split(" ");
						cuantosp = paths.length;
						cuantoslleva = 0;
						for(i = 0; i < cuantosp; i++)
						{
							if(document.getElementById(id).value.lastIndexOf("."+paths[i]) == -1)
								cuantoslleva++;
						}
						if(cuantoslleva == cuantosp)
						{
							alert("El archivo debe ser de estas extensiones<br>"+esp);
							document.getElementById(id).value = "";

							document.getElementById(id).focus();
							return false;
						}

					}
				}
			break;
			case "password":
				if(document.getElementById(id).value == "" && esp == "nada")
				{
					alert("No olvide completar toda la información.");
					document.getElementById(id).focus();
					return false;
				}
				else
				{
					if(es_entero(esp))
					{
						if(document.getElementById(id).length < esp)
						{
							it = (esp == 1) ? "caracter" : "caracteres";
							alert("La clave debe tener por lo menos " + esp + " " + it + ".");
							document.getElementById(id).focus();
							return false;
						}
					}
				}
			break;
		}
	}
	return true;
}
