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;

}