var error=false;
var text="";
var formnumber;

function validacion(formname,array,cadena,commands){
	text="";
	formnumber=fndformnum(formname);
	formelements=document.forms[formnumber].length-1;
	
	if(formelements==array.length)
		validar=true;
	
	if(validar){
		for(i=0;i<=formelements;i++){
			if(array[i]=="filltxtbox")
				validartxtbox(i);
			
			if(array[i]=="filltxtboxnumber")
				validartxtbox(i);
			
			if(array[i]=="fillchkboxradio")
				validarchkboxradio(i);
				
			if(array[i]=="filltxtboxmail")
				validartxtbox(i);
			
			if(array[i]=="filltxtboxchar")
				validartxtbox(i);
		}
		
		if(text!=""){
			alert("Por favor complete los siguientes campos:                \n"+text);
			return false;
		}
			
		for(i=0;i<=formelements;i++){
			if(array[i]=="filltxtboxnumber")
				if(!validarnumber(i))return false;
			
			if(array[i]=="number")
				if(!validarnumber(i))return false;
			
			if(array[i]=="filltxtboxmail")
				if(!validarmail(i))return false;
			
			if(array[i]=="mail")
				if(!validarmail(i))return false;
			
			if(array[i]=="filltxtboxchar")
				if(!validarchar(i,cadena))return false;
				
			if(array[i]=="char")
				if(!validarchar(i,cadena))return false;
		}
		for(i=0;i<=commands.length;i++)
			eval(commands[i]);
		
		if(!error)document.forms[formnumber].submit();
	}
}

function validacionreturn(formname,array,cadena,commands){
	text="";
	formnumber=fndformnum(formname);
	formelements=document.forms[formnumber].length-1;
	
	if(formelements==array.length)
		validar=true;
	
	if(validar){
		for(i=0;i<=formelements;i++){
			if(array[i]=="filltxtbox")
				validartxtbox(i);
			
			if(array[i]=="filltxtboxnumber")
				validartxtbox(i);
			
			if(array[i]=="fillchkboxradio")
				validarchkboxradio(i);
				
			if(array[i]=="filltxtboxmail")
				validartxtbox(i);
			
			if(array[i]=="filltxtboxchar")
				validartxtbox(i);
		}
		
		if(text!=""){
			alert("Por favor complete los siguientes campos:                \n"+text);
			return false;
		}
			
		for(i=0;i<=formelements;i++){
			if(array[i]=="filltxtboxnumber")
				if(!validarnumber(i))return false;
			
			if(array[i]=="number")
				if(!validarnumber(i))return false;
			
			if(array[i]=="filltxtboxmail")
				if(!validarmail(i))return false;
			
			if(array[i]=="mail")
				if(!validarmail(i))return false;
			
			if(array[i]=="filltxtboxchar")
				if(!validarchar(i,cadena))return false;
				
			if(array[i]=="char")
				if(!validarchar(i,cadena))return false;
		}
		for(i=0;i<=commands.length;i++)
			eval(commands[i]);
		
		if(!error)return true;
	}
}

function validartxtbox(fieldnum){
	if(document.forms[formnumber].elements[fieldnum].value==""){
		text+= "\n- "+document.forms[formnumber].elements[fieldnum].id;
	}
}

function validarchkboxradio(fieldnum){
	error=true;
	chkboxradioname=document.forms[formnumber].elements[fieldnum].name;
	
	for(cont=0;cont<document.forms[formnumber].elements[chkboxradioname].length;cont++)
		if(document.forms[formnumber].elements[chkboxradioname][cont].checked){
			error=false;
			break;
		}
	if(error)
		text+= "\n- "+document.forms[formnumber].elements[fieldnum].id;
}

function validarmail(fieldnum){
	error=true;
	
	for(cont=0;cont<document.forms[formnumber].elements[fieldnum].value.length;cont++)
		if (document.forms[formnumber].elements[fieldnum].value.charAt(cont)=='@'){
			error=false;
			break;
		}
	if (error){
		alert(document.forms[formnumber].elements[fieldnum].id+" Inválido. Por favor revise su dirección de correo electrónico.\nEjm.: sunombre@sudominio.com");
		return false;
	}else return true; 
}

function validarnumber(fieldnum){
	error=false;
	caracteres="*|,\":<>[]{}`´\';()@&$#%.abcdefghijklmnñopqrstuvwxyzáéíóúàèìòù";
	
	for (cont=0;cont<document.forms[formnumber].elements[fieldnum].value.length;cont++)
		if (caracteres.indexOf(document.forms[formnumber].elements[fieldnum].value.charAt(cont))!=-1){
			error=true;
			break;
		}
	if (error){
		alert(document.forms[formnumber].elements[fieldnum].id+" Inválido(a). Coloque el número sin puntos o caracteres especiales. Ej: 16.");
		return false;
	}else return true;
}

function validarchar(fieldnum,cadena){
	error=false;
	
	for (cont=0;cont<document.forms[formnumber].elements[fieldnum].value.length;cont++)
		if (cadena.indexOf(document.forms[formnumber].elements[fieldnum].value.charAt(cont))!=-1){
			error=true;
			break;
		}
	if (error){
		alert(document.forms[formnumber].elements[fieldnum].id+" Inválido(a). Coloque el campo sin ningunos de estos caracteres: "+cadena);
		return false;
	}else return true;
}


// Chequeo de Passwords
function chkpassword(pwd,cpwd){
	error=true;
	
	if(document.forms[formnumber].elements[pwd].value!=document.forms[formnumber].elements[cpwd].value){
		alert("Clave incorrecta. Las claves deben ser iguales.");
		document.forms[formnumber].elements[pwd].value="";
		document.forms[formnumber].elements[cpwd].value="";
	}
	else
		error=false;
}


// Funciones de Bloqueo de Teclado en Campos
function kblck(kcod,cmd){
	keys=new Array(8,0);
	
	if(kcod.which==null)
		cod=kcod.keyCode;
	else
		cod=kcod.which;
	
	if(cmd=='numbers' && (cod < 48 || cod > 57) && !arrseek(cod,keys)){
		if(document.all)
			kcod.returnValue=false;
		else{
			kcod.preventDefault();
			kcod.stopPropagation();
		}
	}
	
	if(cmd=="logins" && (cod < 48 || cod > 57) && (cod < 65 || cod > 90) && (cod < 97 || cod > 122) && !arrseek(cod,keys)){
		if(document.all)
			kcod.returnValue=false;
		else{
			kcod.preventDefault();
			kcod.stopPropagation();
		}
	}
}


// Funciones de Bloqueo de Campos
function fldlck(formname,fldname,lckfld){
	if(document.forms[formname].elements[fldname][0].checked)
		document.forms[formname].elements[lckfld].disabled=false;
	else
		document.forms[formname].elements[lckfld].disabled=true;
}


// Funciones de Búsqueda de numeros de campos en relación con sus nombres
function fndformnum(formname){
	for(i=0;i<document.forms.length;i++)
		if(document.forms[i].name==formname)
			return i;
}

function fndfldnum(fldname,formnum){
	for(i=0;i<document.forms[formnum].elements.length;i++)
		if(document.forms[formnum].elements[i].name==fldname)
			return i;
}

// Función que busca un valor en un arreglo.
// Devuelve true si lo encuentra, de lo contrario false.
function arrseek(value,array){
	for(i=0;i<array.length;i++)
		if(array[i]==value)
			return true;
	return false;
}