/* 
		Nombre del modulo: validar()

		Descripción del módulo: 
		Verifica que los elementos de la forma sean válidos si existen. Manda a llamar 
		a funciones adicionales si es necesario.
		Versión: 1.0
		
		Codificado por: Pablo A. Sánchez
		Fecha de Creación: 28/09/2005
		Última modificación: 16/11/2005
		
		Entradas: ninguna
		Salida: true | false [bool]
*/
	function validar()
	{
		if(document.forms[1].txtKeywordsAdmin != null)	//Verifica que exista el elemento
		{
				if(!checkTxt(document.forms[1].txtKeywordsAdmin))	//Llama a la funcion checkTxt, que verfica que el campo no esté vacío.
				{
					alert("Favor de llenar todos los campos obligatorios.");	//Si está vacío, despliega un mensaje de error y regresa false.
					return false;
				}
		}
		
		if(document.forms[1].filDoc != null)
		{
				if(!checkTxt(document.forms[1].filDoc))
				{
					alert("Favor de seleccionar un documento.");
					return false;
				}
		}
		
		if(document.forms[1].txtDatos != null)
		{
				if(!checkTxt(document.forms[1].txtDatos))
				{
					alert("Favor de llenar todos los campos obligatorios.");
					return false;
				}
		}
		
		if(document.forms[1].txtSubcategoria != null)
		{
				if(!checkTxt(document.forms[1].txtSubcategoria))
				{
					alert("Favor de llenar todos los campos obligatorios.");
					return false;
				}
		}
		
		if(document.forms[1].txaDescripcion != null)
		{
				if(!checkTxt(document.forms[1].txaDescripcion))
				{
					alert("Favor de llenar todos los campos obligatorios.");
					return false;
				}
		}
		
		if(document.forms[1].txaDescripcionU != null)
		{
				if(!checkTxt(document.forms[1].txaDescripcionU))
				{
					alert("Please fill all the required fields.");
					return false;
				}
		}
		
		if(document.forms[1].captcha_code != null)
		{
				if(!checkTxt(document.forms[1].captcha_code))	//Verifica que el texto del campo CAPTCHA tenga texto.
				{
					alert("Please fill all the required fields.");
					return false;		
				}
		}

		if(document.forms[1].txtKeywords != null)
		{
				if(!checkTxt(document.forms[1].txtKeywords))
				{
					alert("Please fill all the required fields.");
					return false;
				}
		}
		
		if(document.forms[1].textfield != null)
		{
				if(!checkTxt(document.forms[1].textfield))
				{
					alert("Please fill all the required fields.");
						return false;
				}
		}

		if(document.forms[1].answer != null)
		{
				if(!checkTxt(document.forms[1].answer))
				{
					alert("Please fill all the required fields.");
						return false;
				}
		}
		
		if(document.forms[1].username != null)
		{
				if(!checkTxt(document.forms[1].username))
				{
					alert("Please fill all the required fields.");
						return false;
				}
		}
		
		if(document.forms[1].password != null)
		{
				if(!checkTxt(document.forms[1].password))
				{
					alert("Please fill all the required fields.");
						return false;
				}
		}
		
		if(document.forms[1].txtNombreCompleto != null)
		{
				if(!checkTxt(document.forms[1].txtNombreCompleto))
				{
					alert("Please fill all the required fields.");
						return false;
				}
		}
		
		if(document.forms[1].txtNombreUsuario != null)
		{
				if(!checkTxt(document.forms[1].txtNombreUsuario))
				{
					alert("Please fill all the required fields.");
						return false;
				}
		}
		
		if(document.forms[1].txtTituloRecurso != null)
		{
				if(!checkTxt(document.forms[1].txtTituloRecurso))
				{
					alert("Please fill all the required fields.");
						return false;
				}
		}
	
		if(document.forms[1].txtTitulo != null)
		{
				if(!checkTxt(document.forms[1].txtTitulo))
				{
					alert("Favor de llenar todos los campos requeridos.");
						return false;
				}
		}
		
		if(document.forms[1].txtTituloU != null)
		{
				if(!checkTxt(document.forms[1].txtTituloU))
				{
					alert("Please fill all the required fields.");
						return false;
				}
		}
		
		if(document.forms[1].txtPreguntaSecreta != null)
		{
				if(!checkTxt(document.forms[1].txtPreguntaSecreta))
				{
					alert("Please fill all the required fields.");
					return false;
				}
		}
		
		if(document.forms[1].txtRespuestaSecreta != null)
		{
				if(!checkTxt(document.forms[1].txtRespuestaSecreta))
				{
					alert("Please fill all the required fields.");
						return false;
				}
		}

		if(document.forms[1].txtCorreoUsuario != null)
		{
				if(!checkEmail(document.forms[1].txtCorreoUsuario))	//Verifica que el texto del campo contenga una dirección de correo válida.
				{
					alert("Invalid E-mail address.");
						return false;
				}
		}
		
		if(document.forms[1].txtLigaRecurso != null)
		{
			if(!checkURL(document.forms[1].txtLigaRecurso))	//Verifica que el texto del campo contenga una dirección URL válida.
			{
				alert("Invalid URL address.");
				return false;		
			}
		}
		
		if(document.forms[1].txtUrl != null)
		{
			if(!checkURL(document.forms[1].txtUrl))
			{
				alert("URL inválido.");
				return false;		
			}
		}
		
		if(document.forms[1].txtPasswordActual != null)
		{
				if(!checkTxt(document.forms[1].txtPasswordActual))
				{
					alert("Please fill all the required fields.");
						return false;
				}
		}
		
		if(document.forms[1].txtPasswordNuevo != null && document.forms[1].txtPasswordReescrito != null)
		{
			if(!checkPwd(document.forms[1].txtPasswordNuevo, document.forms[1].txtPasswordReescrito))
				return false;
		}
		
		if(document.forms[1].txtPasswordNuevoM != null && document.forms[1].txtPasswordReescritoM != null)
		{
			if(checkTxt(document.forms[1].txtPasswordNuevoM) || checkTxt(document.forms[1].txtPasswordReescritoM))
			{
				if(!checkPwd(document.forms[1].txtPasswordNuevo, document.forms[1].txtPasswordReescrito))
					return false;
			}
		}
		
		if(document.forms[1].txtPasswordUsuario != null && document.forms[1].txtPasswordVerificacion != null)
		{
			if(!checkPwd(document.forms[1].txtPasswordUsuario, document.forms[1].txtPasswordVerificacion))
				return false;
		}
		
		if(document.forms[1].new_pass != null && document.forms[1].new_pass2 != null)
		{
			if(!checkPwd(document.forms[1].new_pass, document.forms[1].new_pass2))
					return false;
		}
		
		if(document.forms[1].elements['ref[]'] != null)
		{
			if(!checkChk(document.forms[1].elements['ref[]'], "referencias"))
				return false;
		}
		
		if(document.forms[1].elements['secc[]'] != null)
		{
			if(!checkChk(document.forms[1].elements['secc[]'], "secciones"))
				return false;
		}
		
		if(document.forms[1].elements['subcat[]'] != null)
		{
			if(!checkChk(document.forms[1].elements['subcat[]'], "subcategorías"))
				return false;
		}
		
		if(document.forms[1].elements['usuar[]'] != null)
		{
			if(!checkChk(document.forms[1].elements['usuar[]'], "cuentas de usuarios"))
				return false;
		}
		
		if(document.forms[1].elements['selCategoria'] != null)
		{
			if(document.forms[1].elements['selCategoria'].selectedIndex == 0)
			{
				alert("Seleccione una categoría.");
				return false;
			}			
		}
		
		if(document.forms[1].elements['selCategoriaU'] != null)
		{
			if(document.forms[1].elements['selCategoriaU'].selectedIndex == 0)
			{
				alert("Please select a category.");
				return false;
			}			
		}
				
		return true;
	}
	
	/* 
		Nombre del modulo: checkChk()

		Descripción del módulo: 
		Verifica que un arreglo de checkboxes de la forma sean válidos si existen. 
		Versión: 1.0
		
		Codificado por: Pablo A. Sánchez
		Fecha de Creación: 28/09/2005
		Última modificación: 16/11/2005
		
		Entradas: 
			ref: Arreglo de chkbxs
			tipo: String que describe lo que modifican los checkboxes	
		Salida: true | false [bool]
	*/
	function checkChk(ref, tipo)
	{

		ch = 0;	//Contador auxiliar de el número de checkboxes seleccionados

		for(i=0; i<ref.length; i++) //Recorre el arreglo de checkboxes y verifica si al menos una está seleccionado.
			if (ref[i].checked)	
			{
				ch = 1;
				break;
			}
		
		//Para cuando s[olo hay un checkbox (no es un arreglo, por lo tanto no hay length)
		if(ref.length == null)
			if(ref.checked)
				ch = 1;
					
		if(ch > 0 && confirm("¿Seguro que desea realizar esa acción con las " + tipo + "?")) //Confirmar si desean eliminarse los chekboxes seleccionados
		{
			//document.writeln("Se han eliminado las referencias.");
			return true;
		}
		
		if (ch == 0)
			alert("Seleccione una o más " + tipo + ".");		
		return false;
	}
	
	/* 
		Nombre del modulo: checkURL()

		Descripción del módulo: 
		Verifica que una dirección de URL esté propiamente escrita.
		Versión: 1.0
		
		Codificado por: Pablo A. Sánchez
		Fecha de Creación: 28/09/2005
		Última modificación: 16/11/2005
		
		Entradas: 
			el: Elemento con el URL.

		Salida: true | false [bool]
	*/
	function checkURL(el)
	{
		if(verifica(/^(\w+):\/\/.+$/, el.value))
			return true;
		else
			return false;

	}
	
	/* 
		Nombre del modulo: checkTxt()

		Descripción del módulo: 
		Verifica que el campo esté propiamente escrito (lleno).
		Versión: 1.0
		
		Codificado por: Pablo A. Sánchez
		Fecha de Creación: 28/09/2005
		Última modificación: 16/11/2005
		
		Entradas: 
			el: Elemento con el texto.

		Salida: true | false [bool]
	*/
	function checkTxt(el)
	{
		if(el.value == "")
			return false;
		else return true;
	}
	
	function checkEmail(el)
	{
		if(verifica(/^(\w|[.]|_|-)+@(\w|[.]|_|-)+$/, el.value))
			return true;		
		else
			return false;
	}
	
	/* 
		Nombre del modulo: checkPwd()

		Descripción del módulo: 
		Compara que dos passwords estén correctamente ecritos y sean iguales.
		Versión: 1.0
		
		Codificado por: Pablo A. Sánchez
		Fecha de Creación: 28/09/2005
		Última modificación: 16/11/2005
		
		Entradas: 
			con1: Elemento con el primer pwd.
			con2: Elemento con el 2ndo pwd.

		Salida: true | false [bool]
	*/
	function checkPwd(con1, con2)
	{
			//Inicialización de las variables
			var invalid = " ";
			var minLength = 6;
			
			//Checa que los dos campos de contraseña contengan algo.
			if (con1.value == "" || con2.value == "")
			{
				alert("Please enter your password twice.");
				return false;
			}
			
			//Checa que la contraseña contenga un mínimo de catacteres
			if (con1.value.length < minLength)
			{
				alert("Your password must be at least " + minLength + " characters long. Try again.");
				return false;
			}
			
			//Checa que la contraseña no contenga espacios.
			if (con1.value.indexOf(invalid) > -1)
			{
				alert("Sorry, spaces are not allowed.");
				return false;
			}
			
			//Checa que la contraseña se la misma que se introdujo en la verificación de contraseña.
			if (con1.value != con2.value)
			{
				alert("You did not enter the same password twice. Please re-enter your password.");
				return false;
			}
			
			return true;		
	}
	
	/* 
		Nombre del modulo: searchRef()

		Descripción del módulo: 
		Verifica que existan términos de búsqueda.
		Versión: 1.0
		
		Codificado por: Pablo A. Sánchez
		Fecha de Creación: 28/09/2005
		Última modificación: 16/11/2005
		
		Entradas: Ninguna.

		Salida: true | false [bool]
	*/
	function searchRef()
	{
			if (document.getElementById('txtTerm').value == "")
			{
				alert("You did not specify any search term!");
				return false;
			}
	
	}
	
	/*
		Nombre del modulo: verifica(er, texto)

		Descripción del módulo: Prueba una expresión regular
		Versión: 1.0
		
		Codificado por: Pablo A. Sánchez
		Fecha de Creación: 
		Última modificación: 28/09/2005
		
		Entradas: er, texto
		Salida: true | false [bool]
	
		Ejemplos:
		/^(\w|[.]|_|-)+@(\w|[.]|_|-)+$/     //E-mail
		/^(\w+):\/\/.+$/					//URL
		/^((\w|[ ])+;)+$/
	*/
	function verifica(er, texto)
	{ 	
		if(texto.match(er) != null) 
			return true;
		return false;
	}