/*
Funcion: 	Enfocar
Decripcion: Asigna el foco a un objeto del formulario.
Parámetros:
	Campo:Objeto que se desea enfocar
	Forma: Formulario al que pertenece el objeto
*/
function Enfocar (Campo,Forma) 
{ 
	document.forms[Forma].elements[Campo].focus(); 
} 
/*

/*
Función: Validacion
Descripción: Valida un objeto dentro de un formulario.
Parámetros: 
	Campo: Nombre del campo a validar.
	Mensaje: El nombre del campo que debe ver el usuario. Ejemplo: correo electrónico". Favor usar minúsculas para los mensajes.
	Forma: Nombre del formulario.
	Tipo: Tipo de validación: Lista, Opción, Texto, Marca, Fecha, TextoLongitud, Numero, Correo.
	Cantidad: Indica la cantidad de elementos en el caso del tipo de radio button y checkbox. Cualquier tipo diferente el valor es "0".
	Longitud: Para chequear la longitud permitida en el caso de campo de texto o de área de texto.
Devuelve: Verdadero o Falso. En caso de falso, deplega el mensaje de error sobre el campo, y coloca el foco en el elemento validado.
*/
function Validacion (Campo, Mensaje, Forma, Tipo, Cantidad, Longitud)
{
	switch (Tipo) 
	{
		case 'Combo': 
			if (document.forms[Forma].elements[Campo].selectedIndex == 0)
			{
				alert( 'Se debe seleccionar ' + Mensaje);
				Enfocar(Campo,Forma);
				return false;
			}
			break;
		case 'Opcion': 
			Marcado = false;
			for (i=0; i<Cantidad; i++)
			{
				if (document.forms[Forma].elements[Campo][i].checked)
					
				{
					Marcado = true;
				}
			}
			if (!(Marcado))	
			{
				alert('Se debe indicar ' + Mensaje);
				return false;
			}	
			break;
		case 'Marca': 
			Marcado = false;
			for (i=0; i<Cantidad; i++)
			{
				if (document.forms[Forma].elements[Campo][i].checked)
					
				{
					Marcado = true;
				}
			}
			if (!(Marcado))	
			{
				alert('Se debe indicar ' + Mensaje);
				return false;
			}	
			break;
		case 'Texto': 
			if (document.forms[Forma].elements[Campo].value == "")
			{
				alert( 'Se debe indicar ' + Mensaje);
				Enfocar(Campo,Forma);
				return false;
			}
			break;
		case 'Fecha':
			var Mes31dias = /^([1-3]0|[1-2][1-9]|31|[1-9])\/(1|3|5|7|8|10|12)\/(19[0-9][0-9]|20[0-1][0-9])$/;
			var Mes30dias = /^([1-3]0|[1-2][1-9]|[1-9])\/(4|6|9|11)\/(19[0-9][0-9]|20[0-1][0-9])$/;
			var Mes29dias = /^([1-2]0|[1-2][1-9]|[1-9])\/(2)\/(1940|1944|1948|1952|1956|1960|1964|1968|1972|1976|1980|1984|1988|1992|1996|2000|2004|2008)$/;
			var Mes28dias = /^([1-2]0|[1-2][1-8]|19|[1-9])\/(2)\/(194[1-3]|194[5-7]|1949|195[0-1]|195[3-5]|195[7-9]|196[1-3]|196[5-7]|1969|197[0-1]|197[3-5]|197[7-9]|198[1-3]|198[5-7]|1989|199[0-1]|199[3-5]|199[7-9]|200[1-3]|200[5-7]|2009|201[0-1])$/;
			Fecha = document.forms[Forma].elements['cboDia' + Campo].value + '/' + document.forms[Forma].elements['cboMes' + Campo].value + '/' + document.forms[Forma].elements['txtAno' + Campo].value;
			if (!(Mes31dias.test(Fecha) || Mes30dias.test(Fecha) || Mes29dias.test(Fecha) || Mes28dias.test(Fecha)))
			{
				alert( Mensaje + ' NO es válida ');
				Enfocar('cboDia' + Campo,Forma);
				return false;
			}
			break;
		case 'TextoLongitudMayor':
			if (document.forms[Forma].elements[Campo].value.length < Longitud)
			{
				alert( Mensaje + ' debe ser mayor o igual que ' + Longitud);
				Enfocar(Campo,Forma);
				return false;
			}
			break;
		case 'TextoLongitudMenor':
			if (document.forms[Forma].elements[Campo].value.length > Longitud)
			{
				alert( Mensaje + ' debe ser menor o igual que ' + Longitud);
				Enfocar(Campo,Forma);
				return false;
			}
			break;
		case 'Numero': 
			var numValor = new Number(document.forms[Forma].elements[Campo].value) ;
			var er_numero =/[0-9]+/;
			if (isNaN(numValor) || (numValor < 1) || !(er_numero.test(numValor)))
			{
				alert( Mensaje + ' debe ser un valor numérico');
				Enfocar(Campo,Forma);
				return false;
			}
			break;
		case 'Correo': 
			if (document.forms[Forma].elements[Campo].value.search("@") == -1)
			{
				alert( 'Correo electrónico NO válido');
				Enfocar(Campo,Forma);
				return false;
			}
			break;
	}
	return true;
}
