// JavaScript
/**
* Funciones Generales de Validación de campos
* @author Rodrigo Merchan rmerchan@senavirtual.edu.co
*/

function checkEmail(campo,camponombre)
{
	var cadena_www = /^www\./;
	if (campo.value.match(cadena_www))
	{
		alert(camponombre + ' Inválido, ya que inicia por "www.". Por favor corríjalo !');
		campo.focus();
		return false;
	}
	var cadena_email=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
	if (!(cadena_email.test(campo.value))){
		alert(camponombre + ' Inválido o vacío. Por favor ingreselo nuevamente !');
		campo.focus();
		return false;
	}
	return true;
}

function checkUrl(campo,camponombre)
{
	var cadena_url=/^(?:(?:ftp|https?):\/\/)?(?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\.)+(?:com|edu|biz|org|gov|int|info|mil|net|name|museum|coop|aero|[a-z][a-z])\b(?:\d+)?(?:\/[^;"'<>()\[\]{}\s\x7f-\xff]*(?:[.,?]+[^;"'<>()\[\]{}\s\x7f-\xff]+)*)?/;
	// '
	if (!(cadena_url.test(campo.value)))
	{
		alert(camponombre + ' Inválido o vacío. Por favor ingreselo nuevamente !');
		campo.focus();
		return false;
	}
	else
	{
		return true;
	}
}

function checkName(campo,camponombre)
{
	var regexp_nombre=/^[a-zA-Z0-9\sÁÉÍÓÚáéíóúŃńÜü<>©®°·ş\/()_\-\+\*.:,;?ż{}\[\]=&%$#@]{2,}$/; //'
	if (!(regexp_nombre.test(campo.value)))
	{
		alert(camponombre + ' Inválido o vacío. Por favor ingreselo nuevamente !');
		campo.focus();
		return false;
	}
	else
	{
		return true;
	}
}

function checkString(campo,camponombre)
{
	var regexp_nombre=/^[a-zA-ZÁÉÍÓÚáéíóúńŃüÜŔČĚŇŮŕčěňů\'\s-_]{2,}$/; //'
	if (!(regexp_nombre.test(campo.value)))
	{
		alert(camponombre + ' Inválido. Por favor ingreselo nuevamente !');
		campo.focus();
		return false;
	}
	else
	{
		return true;
	}
}
function checkStringNumber(campo,camponombre)
{
	var regexp_nombre=/^[a-zA-ZÁÉÍÓÚáéíóúńŃüÜŔČĚŇŮŕčěňů\'\s-_0-9]{2,}$/; //'
	if (!(regexp_nombre.test(campo.value))){
		alert(camponombre + ' Inválido. Por favor ingreselo nuevamente !');
		campo.focus();
		return false;
	}
	else
	{
		return true;
	}
}
function checkAlphaCode(campo,camponombre)
{
	var regexp_nombre=/^[0-9a-zA-Z_-]+$/;
	if (campo.value == '')
	{
		alert(camponombre + ' vacío. Por favor ingreselo nuevamente !');
		campo.focus();
		return false;
	}
	if (!(regexp_nombre.test(campo.value)))
	{
		alert(camponombre + ' Inválido. Por favor ingreselo nuevamente !');
		campo.focus();
		return false;
	}
	else
	{
		return true;
	}
}

function checkPassword(campo,camponombre)
{
	var pass_regexp=/^[0-9A-Za-z_-{\+\.\-\*}]{5,15}$/;
	if ( (campo.value < 0) || (!(pass_regexp.test(campo.value))) ){
		alert("El campo "+camponombre + ' Inválido. Por favor ingrésela nuevamente !');
		campo.focus();
		return false;
	}
	else
	{
		return true;
	}
}

function checkNumber(campo,camponombre)
{
	var regexp_numero=/^[0-9]+$/;
	if ( (campo.value < 0) || (!(regexp_numero.test(campo.value))) )
	{
		alert(camponombre + ' Inválido o vacío. Por favor ingreselo nuevamente !');
		campo.focus();
		return false;
	}
	else
	{
		return true;
	}
}

function checkEmpty(campo,camponombre)
{ 
	if ( campo.value == '' && campo.disabled!=true )
	{
		alert("El campo "+camponombre + ' esta vacío. Por favor ingréselo!');
		campo.focus();
		return false;
	}
	else
	{
		return true;
	}
}

function isRadioChecked(campo,camponombre)
{
	var len = campo.length;
	var count = 0;

	if(campo.checked == true){
		alert("entro");
		return true;

	}
	for (i=0;i<len;i++)
	{
		if (campo[i].checked == true)
		{
			count++;
			i=len;
		}
	}
	if (count == 0)
	{
		alert('No ha sido escogida ninguna opción en '+ camponombre + '. Por favor escoja una opción');
		campo[0].focus();
		return false;
	}
	else
	{
		return true;
	}
}

function checkValidText(campo,camponombre)
{
	var regexp_validtext=/^[a-zA-Z0-9\sÁÉÍÓÚáéíóúŃńÜü\'<>©®°·ş\/()_\-\+\*.:,;?ż{}\[\]=&%$#@]+$/;
	if (!(regexp_validtext.test(campo.value)))
	{
		alert( 'Se han encontrado caracteres inválidos en el campo ' + camponombre + '. Por favor corríjalo !');
		campo.focus();
		return false;
	}
	else
	{
		return true;
	}
}
function otherRadioChecked(campo,camponombre){
	var sw=false;
	for(k=0;k<campo.length;k++){
		if(campo[k].checked==true){
			sw=true;
		}
	}
	if(!sw){
		alert( 'No ha sido escogida ninguna opción en '+camponombre+'. Por favor escoja una');
		campo[0].focus();
	}
	return sw;
}
/**
* @author Sergio Carreńo Pérez sergiocarrenop@senavirtual.edu.co
* fecha: 02/07/2008
**/
function check(tempobj){

	if(tempobj.name.substring(1,2)=="s"){
		if(!checkString(tempobj,tempobj.id)){
			return false;
		}
	}
	if(tempobj.name.substring(1,2)=="e"){
		if(!checkEmail(tempobj,tempobj.id)){
			return false;
		}
	}
	if(tempobj.name.substring(1,2)=="u"){
		if(!checkUrl(tempobj.value,tempobj.id)){
			return false;
		}
	}
	if(tempobj.name.substring(1,2)=="n"){
		if(!checkNumber(tempobj,tempobj.id)){
			return false;
		}
	}
	if(tempobj.name.substring(1,2)=="p"){
		if(!checkPassword(tempobj,tempobj.id)){
			return false;
		}
	}
	if(tempobj.name.substring(1,2)=="c"){
		if(!checkAlphaCode(tempobj,tempobj.id)){
			return false;
		}
	}
	if(tempobj.name.substring(1,2)=="t"){
		if(!checkStringNumber(tempobj,tempobj.id)){
			return false;
		}
	}
	return true;
}
function vacio(tempobj){
	if(tempobj.value==''){
		return true;
	}
	return false;
}
/** Aplica las funciones correspodientes a un campo dentro de un formulario
	definiendo en las dos primeras letras del nombre las funciones a aplicar
		primera letra: 	"o" es obligatorio y "a" alternativo
		segunda letra: 	"s" define solo letras en el campo
						"e" valide un correo electronico
						"u" chequea un URL
						"p" valida tipo password
						"n" define solo numeros
						"r" valida que se haya chequeado un radiobutton
							Nota: para el mensaje de error debe haberse definido el atributo "id"
		ejemplo: nombre del campo "osnombre"

* @author Sergio Carreńo Pérez sergiocarrenop@senavirtual.edu.co
* fecha: 02/07/2008
**/
function validar(form) {
	for (i=0;i<form.length;i++) {
		var tempobj=form.elements[i];

			if(tempobj.type=="text" || tempobj.type=="select-one" || tempobj.type=="password"){
				if(tempobj.name.substring(0,1)=="o"){
					if(!checkEmpty(tempobj,tempobj.id)){
						return false;
					}
					if(!check(tempobj)){
						return false;
					}
				}
				else{
					if(!vacio(tempobj)){
						if(!check(tempobj)){
							return false;
						}
					}
				}
			}
			if(tempobj.type=="radio"){
				if(tempobj.name.substring(1,2)=="r"){
					var radio=new Array();
					var con=0;
					while(tempobj.type=="radio"){
						radio[con]= tempobj;
						con++;i++;
						var tempobj=form.elements[i];
					}
					i--;
					var tempobj=form.elements[i];
					if(!otherRadioChecked(radio,tempobj.id)){
						return false;
					}
				}
			}
		}
	return true;
}