/*
Website de ISCA S.A. - http://www.isca.com.ve/
Script de funciones de validación de formularios
Programación: Ing. Miguel Palazzo <miguel@actimedia.com.ve>
*/

<!--
// Función para validar ingreso de datos en formaLogin
vLogin=new Array();
vLogin[0]="email|Disculpe, debe especificar su e-mail.|@";
vLogin[1]="clave|Disculpe, debe especificar su contraseña.|";

function validarLogin(){
	d=document.formaLogin;
	for(i=0;i<d.elements.length;i++){
		obj=d.elements[i];
		checkValue=checkString(obj.value);
		for(k=0;k<vLogin.length;k++){
			tempArray=vLogin[k].split("|");
			if(obj.name==tempArray[0]){
				case1="(tempArray[2]=='' && hasACharacter!=true)";
				case2="(tempArray[2]==0 && obj.value==0)";
				case3="(tempArray[2]=='@' && emailCheck(obj.value)==false)";
				if(eval(case1) || eval(case2) || eval(case3))
				{
					obj.focus();
					if(tempArray[2]!='@'){alert(tempArray[1])};
					return false;
				}
			}
		}
	}
	return true;
}

// Función para validar ingreso de datos en formaRecordar1
vRecordar1=new Array();
vRecordar1[0]="email|Disculpe, debe especificar su e-mail.|@";

function validarRecordar1(){
	d=document.formaRecordar1;
	for(i=0;i<d.elements.length;i++){
		obj=d.elements[i];
		checkValue=checkString(obj.value);
		for(k=0;k<vRecordar1.length;k++){
			tempArray=vRecordar1[k].split("|");
			if(obj.name==tempArray[0]){
				case1="(tempArray[2]=='@' && emailCheck(obj.value)==false)";
				if(eval(case1))
				{
					obj.focus();
					if(tempArray[2]!='@'){alert(tempArray[1])};
					return false;
				}
			}
		}
	}
	return true;
}

// Función para validar ingreso de datos en formaRecordar2
vRecordar2=new Array();
vRecordar2[0]="respuesta|Disculpe, debe especificar su respuesta.|";

function validarRecordar2(){
	d=document.formaRecordar2;
	for(i=0;i<d.elements.length;i++){
		obj=d.elements[i];
		checkValue=checkString(obj.value);
		for(k=0;k<vRecordar2.length;k++){
			tempArray=vRecordar2[k].split("|");
			if(obj.name==tempArray[0]){
				case1="(tempArray[2]=='' && hasACharacter!=true)";
				case2="(tempArray[2]==0 && obj.value==0)";
				if(eval(case1) || eval(case2))
				{
					obj.focus();
					alert(tempArray[1]);
					return false;
				}
			}
		}
	}
	return true;
}

// Función para validar ingreso de datos en formaRegistro
vRegistro=new Array();
vRegistro[0]="nombres|Disculpe, debe especificar su(s) nombres(s).|";
vRegistro[1]="apellidos|Disculpe, debe especificar su(s) apellido(s).|";
vRegistro[2]="cedula|Disculpe, debe especificar su cédula de identidad (C.I.).|";
vRegistro[3]="cedula|Disculpe, su cédula de identidad (C.I.) debe ser numérica.|a";
vRegistro[4]="codtlf|Disculpe, el código de área de su teléfono debe ser numérico.|b";
vRegistro[5]="codtlf|Disculpe, el código de área debe estar compuesto por tres (3) dígitos.|c";
vRegistro[6]="tlf|Disculpe, debe especificar su teléfono.|";
vRegistro[7]="tlf|Disculpe, su teléfono debe ser numérico.|b";
vRegistro[8]="tlf|Disculpe, su teléfono debe estar compuesto por siete (7) dígitos.|d";
vRegistro[9]="empresa|Disculpe, debe especificar su empresa u organización.|e";
vRegistro[10]="email|Disculpe, debe especificar su e-mail.|@";
vRegistro[11]="clave|Disculpe, debe especificar su contraseña.|";
vRegistro[12]="confirmar|Disculpe, debe repetir su contraseña.|";
vRegistro[13]="confirmar|Disculpe, su contraseña no coincide con la confirmación de la misma.|f";
vRegistro[14]="pregunta|Disculpe, debe especificar pregunta secreta.|";
vRegistro[15]="respuesta|Disculpe, debe especificar respuesta secreta.|";

function validarRegistro(){
	d=document.formaRegistro;
	for(i=0;i<d.elements.length;i++){
		obj=d.elements[i];
		checkValue=checkString(obj.value);
		for(k=0;k<vRegistro.length;k++){
			tempArray=vRegistro[k].split("|");
			if(obj.name==tempArray[0]){
				case1="(tempArray[2]=='' && obj.value.length==0)";
				case2="(tempArray[2]==0 && obj.value==0)";
				case3="(tempArray[2]=='a' && isNaN(obj.value)==true)";
				case4="(tempArray[2]=='b' && obj.value.length>0 && isNaN(obj.value)==true)";
				case5="(tempArray[2]=='c' && obj.value.length>0 && verificarLongitud(obj.value,3)!=true)";
				case6="(tempArray[2]=='d' && verificarLongitud(obj.value,7)!=true)";
				case7="(tempArray[2]=='e' && persona.value==1 && obj.value.length==0)";
				case8="(tempArray[2]=='f' && compararClaves(obj.value,d.clave.value)!=true)";
				case9="(tempArray[2]=='@' && emailCheck(obj.value)==false)";
				if(eval(case1) || eval(case2) || eval(case3) || eval(case4) || eval(case5) || eval(case6) || eval(case7) || eval(case8) || eval(case9))
				{
					obj.focus();
					if(tempArray[2]!='@'){alert(tempArray[1])};
					return false;
				}
			}
		}
	}
	return true;
}

// Función para validar ingreso de datos en formaDatos
vDatos=new Array();
vDatos[0]="nombres|Disculpe, debe especificar su(s) nombres(s).|";
vDatos[1]="apellidos|Disculpe, debe especificar su(s) apellido(s).|";
vDatos[2]="cedula|Disculpe, debe especificar su cédula de identidad (C.I.).|";
vDatos[3]="cedula|Disculpe, su cédula de identidad (C.I.) debe ser numérica.|a";
vDatos[4]="codtlf|Disculpe, el código de área de su teléfono debe ser numérico.|b";
vDatos[5]="codtlf|Disculpe, el código de área debe estar compuesto por tres (3) dígitos.|c";
vDatos[6]="tlf|Disculpe, debe especificar su teléfono.|";
vDatos[7]="tlf|Disculpe, su teléfono debe ser numérico.|b";
vDatos[8]="tlf|Disculpe, su teléfono debe estar compuesto por siete (7) dígitos.|d";
vDatos[9]="empresa|Disculpe, debe especificar su empresa u organización.|e";
vDatos[10]="email|Disculpe, debe especificar su e-mail.|@";
vDatos[11]="pregunta|Disculpe, debe especificar pregunta secreta.|";
vDatos[12]="respuesta|Disculpe, debe especificar respuesta secreta.|";

function validarDatos(){
	d=document.formaDatos;
	for(i=0;i<d.elements.length;i++){
		obj=d.elements[i];
		checkValue=checkString(obj.value);
		for(k=0;k<vDatos.length;k++){
			tempArray=vDatos[k].split("|");
			if(obj.name==tempArray[0]){
				case1="(tempArray[2]=='' && obj.value.length==0)";
				case2="(tempArray[2]==0 && obj.value==0)";
				case3="(tempArray[2]=='a' && isNaN(obj.value)==true)";
				case4="(tempArray[2]=='b' && obj.value.length>0 && isNaN(obj.value)==true)";
				case5="(tempArray[2]=='c' && obj.value.length>0 && verificarLongitud(obj.value,3)!=true)";
				case6="(tempArray[2]=='d' && verificarLongitud(obj.value,7)!=true)";
				case7="(tempArray[2]=='e' && persona.value==1 && obj.value.length==0)";
				case8="(tempArray[2]=='@' && emailCheck(obj.value)==false)";
				if(eval(case1) || eval(case2) || eval(case3) || eval(case4) || eval(case5) || eval(case6) || eval(case7) || eval(case8))
				{
					obj.focus();
					if(tempArray[2]!='@'){alert(tempArray[1])};
					return false;
				}
			}
		}
	}
	return true;
}

// Función para validar ingreso de datos en formaClave
vClave=new Array();
vClave[0]="clave|Disculpe, debe especificar su contraseña actual.|";
vClave[1]="clave|Disculpe, su contraseña actual es incorrecta.|a";
vClave[2]="nueva|Disculpe, debe especificar su nueva contraseña.|";
vClave[3]="nueva|Disculpe, su nueva contraseña no puede coincidir con la actual.|b";
vClave[4]="confirmar|Disculpe, debe repetir su contraseña.|";
vClave[5]="confirmar|Disculpe, su contraseña no coincide con la confirmación de la misma.|c";

function validarClave(){
	d=document.formaClave;
	for(i=0;i<d.elements.length;i++){
		obj=d.elements[i];
		checkValue=checkString(obj.value);
		for(k=0;k<vClave.length;k++){
			tempArray=vClave[k].split("|");
			if(obj.name==tempArray[0]){
				case1="(tempArray[2]=='' && obj.value.length==0)";
				case2="(tempArray[2]==0 && obj.value==0)";
				case3="(tempArray[2]=='a' && compararClaves(obj.value,d.actual.value)!=true)";
				case4="(tempArray[2]=='b' && compararClaves(obj.value,d.clave.value)==true)";
				case5="(tempArray[2]=='c' && compararClaves(obj.value,d.nueva.value)!=true)";
				if(eval(case1) || eval(case2) || eval(case3) || eval(case4) || eval(case5))
				{
					obj.focus();
					alert(tempArray[1]);
					return false;
				}
			}
		}
	}
	return true;
}

// Función para validar ingreso de datos en formaContactos
vContactos=new Array();
vContactos[0]="nombres|Disculpe, debe especificar su(s) nombres(s).|";
vContactos[1]="apellidos|Disculpe, debe especificar su(s) apellido(s).|";
vContactos[2]="codtlf|Disculpe, debe especificar el código de área de su teléfono.|";
vContactos[3]="codtlf|Disculpe, el código de área de su teléfono debe ser numérico.|a";
vContactos[4]="codtlf|Disculpe, el código de área debe estar compuesto por tres (3) dígitos.|b";
vContactos[5]="tlf|Disculpe, debe especificar su teléfono.|";
vContactos[6]="tlf|Disculpe, su teléfono debe ser numérico.|a";
vContactos[7]="tlf|Disculpe, su teléfono debe estar compuesto por siete (7) dígitos.|c";
vContactos[8]="email|Disculpe, debe especificar su e-mail.|@";
vContactos[9]="empresa|Disculpe, debe especificar su empresa.|d";
vContactos[10]="mensaje|Disculpe, debe especificar sus comentarios.|";

function validarContactos(){
	d=document.formaContactos;
	for(i=0;i<d.elements.length;i++){
		obj=d.elements[i];
		checkValue=checkString(obj.value);
		for(k=0;k<vContactos.length;k++){
			tempArray=vContactos[k].split("|");
			if(obj.name==tempArray[0]){
				case1="(tempArray[2]=='' && hasACharacter!=true)";
				case2="(tempArray[2]==0 && obj.value==0)";
				case3="(tempArray[2]=='a' && isNaN(obj.value)==true)";
				case4="(tempArray[2]=='b' && verificarLongitud(obj.value,3)!=true)";
				case5="(tempArray[2]=='c' && verificarLongitud(obj.value,7)!=true)";
				case6="(tempArray[2]=='d' && persona.value*1==1 && obj.value.length==0)";
				case7="(tempArray[2]=='@' && emailCheck(obj.value)==false)";
				if(eval(case1) || eval(case2) || eval(case3) || eval(case4) || eval(case5) || eval(case6) || eval(case7))
				{
					obj.focus();
					if(tempArray[2]!='@'){alert(tempArray[1])};
					return false;
				}
			}
		}
	}
	return true;
}

/* Funciones de validación comunes */
// Función para limpiar formulario por completo
function limpiarForma() {
	document.forms[1].reset();
	document.forms[1].elements[0].focus();
	if(document.getElementById('oculto').style.display=="block" || document.getElementById('oculto').style.display=="table-row") {
		document.getElementById('oculto').style.display="none";
	}
}

// Función para cambiar al siguiente campo una vez alcanzado el maxlength
function cambiarCampo(campo,camposig){
	if(campo.value.length==campo.maxLength){
		camposig.focus();
	}
}

// Función para mostrar / ocultar cierto bloque de acuerdo a selección de radio buttons
function mostrarBloque(seleccion,campo){
	seleccion=seleccion*1;
	if(seleccion==0){
		campo.value="";
		document.getElementById('oculto').style.display="none";
	} else {
		if(document.all){
			document.getElementById('oculto').style.display="block";
		}else if(document.getElementById){
			document.getElementById('oculto').style.display="table-row";
		}
	}
}

// Función para verificar que un campo posea la longitud requerida
function verificarLongitud(campo,longitud){
	if(campo.length!=longitud){
		return false;
	}
	return true;
}

// Función para comparar que una contraseña sea igual a su confirmación
function compararClaves(clave1,clave2){
	if(clave1!=clave2){
		return false;
	}
	return true;
}

// Funciones para verificar estructura de e-mail
function checkString(String){ 
	hasACharacter=false;
	EmailPass=false;
	for(j=0;j<String.length;j++){
		if(String.charCodeAt(i)!=13 && String.charCodeAt(i)!=10 && String.charCodeAt(i)!=32){
			hasACharacter=true
		}
	}
}

function emailCheck (emailStr) {
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) {
		alert("Disculpe, el E-mail no posee @ y . en el mismo. (usuario@host.com)");
		return false;
	};
	var user=matchArray[1];
	var domain=matchArray[2];
	if (user.match(userPat)==null) {
		alert("Disculpe, el E-mail debe poseer nombre de usuario. (usuario@host.com)");
		return false;
	}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("Disculpe, el E-mail no posee una dirección IP válida.");
				return false;
			}
		}
		return true;
	};
	var domainArray=domain.match(domainPat);
	if (domainArray==null) {
		alert("Disculpe, el E-mail no posee un dominio válido.");
		return false;
	}
	var atomPat=new RegExp(atom,"g");
	var domArr=domain.match(atomPat);
	var len=domArr.length;
	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) {
		alert("Disculpe, el E-mail debe terminar en dos o tres letras. (com, net, org, ve)");
		return false;
	};
	if (len<2) {
		var errStr="Disculpe, el E-mail debe poseer nombre de host. (usuario@host.com)";
		alert(errStr);
		return false;
	}
	return true;
}
//-->