function emailCheck (emailStr) {
	emailStr = emailStr.toLowerCase();

	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	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 (emailStr=='@') {
		alert("Debe ingresar una dirección de e-mail");
		return false;
	}

	if (matchArray==null) {
		alert("La dirección de e-mail no es válida");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];

	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			alert("La dirección de e-mail tiene carácteres no válidos");
			return false;
	  	}
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			alert("La dirección de e-mail tiene carácteres no válidos");
			return false;
		}
	}
	if (user.match(userPat)==null) {
		alert("La dirección de e-mail no es válida");
		return false;
	}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("La dirección de e-mail no es válida");
				return false;
			}
		}
		return true;
	}
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	
	for (i=0;i<len;i++) {
	if (domArr[i].search(atomPat)==-1) {
		alert("La dirección de e-mail parece no válida, revise el dominio");
		return false;
	   }
	}

	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
		alert("La dirección e-mail debe terminar en .com, .net, .org o a cualquier otra terminación.");
		return false;
	}
	if (len<2) {
		alert("¡La dirección de e-mail no tiene nombre de host!");
		return false;
	}
	return true;
}

function registrarse(){
	var okSoFar = 1;
	if (document.registrarse.nombre.value == "") {
		okSoFar = 0;
		alert("Debe ingresar su nombre");
		document.registrarse.nombre.focus();
	}
	if (emailCheck(document.registrarse.email.value) == false) {
		okSoFar = 0;
		document.registrarse.email.focus();
	}
	if (okSoFar == 1) {
		document.registrarse.submit();
	}
}
function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '')
};


// 1: texto | 2: combos/numeros | 3: emails | 4: rule if .. selected
var campos=
new Array(
	new Array(
		new Array("nombres", "Debe ingresar un nombre", 1),
		new Array("paterno", "Debe ingresar un apellido paterno", 1),
		new Array("pw", "Su password debe ser de al menos 4 carácteres", 6),
		new Array("telefono_fijo", "Debe ingresar un teléfono fijo", 1),
		new Array("direccion", "Debe ingresar su direccion donde vive", 1),
		new Array("comuna", "Debe ingresar la comuna donde vive", 1),
		new Array("ciudad", "Debe ingresar la ciudad donde vive", 1),
		new Array("idPais", "Debe seleccionar un pais", 2),
		new Array("email", "Debe seleccionar su estado civil", 3),
		new Array("idEstadoCivil", "Debe seleccionar su estado civil", 2)
	),
	new Array(
		new Array("idIdioma1", "Debe seleccionar su idioma nativo", 1),
		new Array("idIdioma2", null, 1, new Array("nivel2", "Debe ingresar un nivel de dominio del Idioma 2", 2, null)),
		new Array("idIdioma3", null, 1, new Array("nivel3", "Debe ingresar un nivel de dominio del Idioma 3", 2, null)),

		new Array("idInstitucion", null, "==0", new Array("institucion", "Debe ingresar una institución", 1, null)),
		new Array("idCarrera", null, "==0", new Array("profesion", "Debe ingresar una profesión", 1, null)),

		new Array("ano_ingreso", "Debe indicar su año de ingreso a sus estudios", 2),
		new Array("ano_egreso", "Debe indicar su año de egreso a sus estudios", 2)


	),
	new Array(
		new Array("idAreaEstudio", null, 2, new Array("programa", "Debe ingresar el nombre del programa", 1)),

		new Array("idAreaEstudio", null, 2, new Array("institucion", "Debe ingresar una institución", 1)),
		new Array("idAreaEstudio", null, 2, new Array("pais", "Debe especificar el pais", 1)),
		new Array("idAreaEstudio", null, 2, new Array("idSituacion_", "Debe especificar situación actual", 2)),
		new Array("idAreaEstudio", null, 2, new Array("ano_ingreso", "Debe especificar Año de Ingreso", 2))
	),
	new Array(
		new Array("organizacion", "Debe indicar el nombre de la organización", 1),
		new Array("cargo", "Debe indicar el cargo", 1),
		new Array("idSector", "Debe seleccionar el Sector al cual pertenece la organización", 2),
		new Array("idFuncion", "Debe especificar una función", 2),
		new Array("salario", "Debe especificar el salario percibido", 2)
	),
	new Array(
		new Array("pret", "Debe indicar su pretencion de renta", 2),
		new Array("areas_interes", "Debe indicar sus Áreas de Interés", 1),
		new Array("anos_experiencia", "Debe indicar sus Años de Experiencia", 2),
		new Array("anos_experiencia_mar", "Debe indicar sus Años de Experiencia en el Sector Marítimo", 2)
	)
)
		//new Array("idAreaEstudio", null, 2, new Array("idAreaEstudioSub", null, "==0", new Array("programa", "Debe especificar el programa seguido", 1))),

function validar(n){
		for (i = 0; i<campos[n - 1].length; i++) {
			if (!evaluar (campos[n-1][i])){
				if (campos[n-1][i][1] != null)
					return false;
			}
			else {
				if (campos[n-1][i][3] != null) {
					if (!evaluar (campos[n-1][i][3])){
						return false;
						
					}
				
				}
			}
		}
		return true;
}

function evaluar(regla){
	var field;
	eval('field = document.cv.' + regla[0] + '.value')

	if (regla[2] == 1) {
		if (trim(field) == ""){
			if (regla[1] != null) {
				if (regla[0].substr((regla[0].length-1),1) != "_") 
					eval('document.cv.' + regla[0] + '.focus()')
				alert(regla[1]);
			}
			return false;
		}
	}
	if (regla[2] == 2) {
		if (!(field > 0)){
			if (regla[1] != null) {
				if (regla[0].substr((regla[0].length-1),1) != "_") 
					eval('document.cv.' + regla[0] + '.focus()')
				alert(regla[1]);
			}
			return false
		}
	}
	if (regla[2] == 3) {
		eval('flag = emailCheck(document.cv.' + regla[0] + '.value)')
		if (!flag)
			return false;
	}
	if (regla[2] == 6) {
		if (field.length < 4) {
			alert(regla[1]);
			return false;
			}
	}
	if (!(regla[2] > 0)) {
		eval('flag=(field' + regla[2] + ') ? true : false;');
		if (!flag)
			return false;
	}

	return true;

}
function val_4(form){
	if (validar(4)) {
		if ((form.mas.checked == false)) {
			return confirm("¿ Está seguro de que no desea agregar mas experiencias laborales a su currículum?")	;
		}
	} else {
		return false;
	}
}
function val_3(form){
	if (validar(3)) {
		if ((form.mas.checked == false)) {
			return confirm("¿ Está seguro de que no desea agregar mas Estudios de Postgrado / Especialización laborales a su currículum?")	;
		}
	} else {
		return false;
	}
}
