// Script general de validación de formularios (Version 3.0)

function esContrasena(clave) {
	clave2 = buscar_objeto("clave2");
	clave2 = clave2.value;
	return (clave==clave2);
}

function esEmailTutor(email_tutor) {
	email_aux = buscar_objeto("email");
	email_aux = email_aux.value;
	return (email_aux!=email_tutor);
}

function esIndiferente(s) {
	if (esVacio(s)) return false
	return true
}

function esNumero(s) {
	var num
	num=parseFloat(s)
	if (num!=''+s) return false
    return true
}

function esEntero(s) { 
	var num  
	s = "2" + s;
	num=new String(parseInt(s, 10))
	if (num!=''+s) return false
    return true
}

function esEnteroPositivo(s) { 
	if (!esEntero(s)) return
	if (parseInt(s, 10)<0) return
    return true
}


function esVacio(s){
   return ((s == null) || (s.length == 0));
}

var numeros="0123456789"
var letras_minusculas="a,b,c,d,e,f,g,h,i,j,k,l,m,n,ñ,o,p,q,r,s,t,u,v,w,x,y,z"
var letras_mayusculas=letras_minusculas.toUpperCase()
var letras=letras_minusculas+letras_mayusculas

function esNombre (s){
    if (esVacio(s)) return false
    validos = letras+" "
    for (i = 0; i < s.length; i++){   
        c = s.charAt(i);
        if (validos.indexOf(c) == -1) return false;
    }
	return true
}

function esApellido (s){
    return esNombre(s)
}

function esDNI(s) {
	if (s.length<=8) return esEntero(s)
}

function esNIF(s) {
    lo=s.length
	if (lo<2 || lo>9) return false
    dni=s.substring(0,lo-1)
   if (!esDNI(dni)) return false
	letra=new Array("T","R","W","A","G","M","Y","F",
					"P","D","X","B","N","J","Z","S",
					"Q","V","H","L","C","K","E");
    nif=s.substring(lo-1,lo).toUpperCase()
    if (nif!=letra[dni%23]) return false
	return true
}

function esCIF(s) {
	var v1 = new Array(0,2,4,6,8,1,3,5,7,9); 
	var ccl = 'JABCDEFGHI'; 
	var temp = 0;

	s = s.toUpperCase(); 
	if (!/^[A-Za-z0-9]{9}$/.test(s)) return(false);
	if (!/^[ABCDEFGHKLMNPQS]/.test(s)) return(false);
	
	for(i=2; i<=6; i+=2) {
		temp = temp + v1[ parseInt(s.substr(i-1,1), 10)];
		temp = temp + parseInt(s.substr(i,1), 10);
	};
	
	temp = temp + v1[parseInt(s.substr(7,1), 10)];
	temp = (10 - (temp%10));
	if(temp==10) temp=0;
	cc = s.substr(8, 1);
	
	return((temp==cc || cc==ccl.substr(temp, 1)));
}

function esEmail(s) {
	var pb,p1,p2
	s=unescape(s)
    pb=s.indexOf(' ')
    if (pb!=-1) return false
	p1=s.indexOf('@')
    if (p1<1 || p1==(s.length-1) || p1==-1) return false
	p2=s.indexOf('.');
	if (p2<1 || p2==p1+1 || p2==-1 || p2==(s.length-1)) return false
	return true
}

function esTelefono(tel){
	primerdigito="96"
	if (tel.length!=9 || !esEntero(tel) || (primerdigito.indexOf(tel.charAt(0)) == -1)) 
		return false
	return true
}

function esSMS(tel){
	primerdigito="6"
	if (tel.length!=9 || !esEntero(tel) || (primerdigito.indexOf(tel.charAt(0)) == -1)) 
		return false
	return true
}

function esTelFijo(tel){
	primerdigito="9"
	if (tel.length!=9 || !esEntero(tel) || (primerdigito.indexOf(tel.charAt(0)) == -1)) 
		return false
	return true
}

function esCPostal(e)
{
	if (e=="") return false;
	num=parseInt(e, 10)
	if (num!=''+e)
		return false;

	if ((num < 1001) || (num > 52080) || (e.length!=5))
		return false;

	return true;
}

function esCP(e) {
	return(esCPostal(e));
}

function radio_button_activado(obj){
	for (i=0;i<obj.length;i++)
		if (obj[i].checked) {
        	return true
	}
	return false
}

function select_seleccionado(obj) {
	//alert(obj.name + " -> " + obj.selectedIndex);
	return(obj.selectedIndex!=0);
}

function checkbox_seleccionado(obj) {
	//alert(obj.name + " -> " + obj.checked);
	return(obj.checked);
}

/////// Funcion buscadora
function buscar_objeto(n, d){ //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function obj_val(obj){
	if(obj.type=="select-one")
		return obj;
	else  
		return obj.value
}
///////Funcion validadora de un campo
function v(campo,tipo,req,mens) {
	var obj,v
    if (error && !todos) return
    obj=buscar_objeto(campo)
	//obj.value=mi_trim(obj.value)
	if (!req && esVacio(obj.value)) return
	
	//alert(campo + " -> " + obj.name + " -> " + obj.type);
	switch(obj.type){
		case "select-one": 
							//alert('select')
							valido=eval(tipo+'(obj)')
							if (!valido && !error) obj.focus()
							break
		case "checkbox": 				 
							valido=eval(tipo+'(obj)')
							if (!valido && !error) obj.focus()
							break
		case "radiobutton": 				 
							valido=eval(tipo+'(obj)')
							objeto_compuesto=true
							if (!valido && !error) obj[0].focus()
							break
		case "radio": 				 
							valido=eval(tipo+'(obj)')
							objeto_compuesto=true
							if (!valido && !error) obj[0].focus()
							break
		case "hidden": valido=eval(tipo+"('"+obj.value+"')")
					   break
		default:
				v=obj_val(obj)
				v = v.toString();
				valido=eval(tipo+"('"+escape(v)+"')")
				if (!valido && !error) foco_obtener(obj)
	}
	
	if (!valido) {
		error=true
		mensaje=mensaje+"<br>"+mens
	}
}

function verror(campo,mens) {
    if (error && !todos) return
	obj=buscar_objeto(campo)
	error=true
	mensaje=mensaje+"\n"+mens
	foco_obtener(obj)
}

function vpass(campo1,campo2,mens){
	var obj1,obj2
	if (error && !todos) return
	obj1=buscar_objeto(campo1)
	obj2=buscar_objeto(campo2)
	
	if (obj1.value==obj2.value) return
	
	obj1.value=""
	obj2.value=""
	foco_obtener(obj1)
	error=true
	mensaje=mensaje+"\n"+mens	
}

function mi_trim(ss){
	var i,re
	var l=ss.length-1
	for (i=0;i<=l;i++){
		if (ss.charAt(i)!=" ") break
	}
	re=ss.substring(i,l+1)
	l=re.length-1
	for (i=l;i>0;i--){
		if (re.charAt(i)!=" ") break
	} 
	re=re.substring(0,i+1)
	return re
}

function valgunonovacio(){
	var v,i,args=valgunonovacio.arguments,mens=args[args.length-1]
	if (error && !todos) return
	for (i=0; i<args.length-1; i++){
		obj=buscar_objeto(args[i])

		if (obj.type=="checkbox") {
			if (obj.checked) return
		}
		else {
			v=obj_val(obj)
			if (esIndiferente(v)) return
		}
	}
	error=true
	mensaje=mensaje+"\n"+mens
}

function old_votodosoninguno(){
	var i,args=votodosoninguno.arguments,mens=args[args.length-1],novacios=0
	if (error && !todos) return
	for (i=0; i<args.length-1; i++){
		obj=buscar_objeto(args[i])

		if (obj.type=="checkbox") {
			if (obj.checked) novacios++
		}
		else {
			if (!esVacio(obj.value)) novacios++
		}
	}
	if (args.length-1==novacios || novacios==0) return
	if (!error) foco_obtener(obj)
	error=true
	mensaje=mensaje+"\n"+mens
}

function votodosoninguno(){
	var i,v,obj_aux,ya_vacio=false,args=votodosoninguno.arguments,mens=args[args.length-1],novacios=0
	if (error && !todos) return
	for (i=0; i<args.length-1; i++){
		obj=buscar_objeto(args[i])
		if (obj.type=="checkbox") {
			if (obj.checked) {
				novacios++
			}
			else {
				if (!ya_vacio) {
					obj_aux=obj
					ya_vacio=true
				}
			}
		}
		else {
			v=obj_val(obj)
			if (!esVacio(v)) {
				novacios++
			}
			else {
				if (!ya_vacio) {
					obj_aux=obj
					ya_vacio=true
				}
			}
		}
	}
	if (args.length-1==novacios || novacios==0) return
	if (!error) foco_obtener(obj_aux)
	error=true
	mensaje=mensaje+"\n"+mens
}

function votodosoninguno2(){
	var v,i,i_aux,obj_aux,ya_vacio=false,args=votodosoninguno2.arguments,novacios=0,longitud
	longitud=(args.length/2)
	if (error && !todos) return
	for (i=0; i<longitud; i++){
		obj=buscar_objeto(args[i])
		
		if (obj.type=="checkbox") {
			if (obj.checked) {
				novacios++
			}
			else {
				if (!ya_vacio) {
					obj_aux=obj
					i_aux=i
					ya_vacio=true
				}
			}
		}
		else {
			v=obj_val(obj)
			if (!esVacio(v)) {
				novacios++
			}
			else {
				if (!ya_vacio) {
					obj_aux=obj
					i_aux=i
					ya_vacio=true
				}
			}
		}
	}
	if (longitud==novacios || novacios==0) return
	if (!error) {
		foco_obtener(obj_aux)
		obj_error=obj_aux
	}
	error=true
	mensaje=mensaje+"\n"+args[longitud+i_aux]
}

function vsinovacionovacios(){
	var v,obj,i,args=vsinovacionovacios.arguments,mens=args[args.length-1],novacios=0
	if (error && !todos) return
	obj=buscar_objeto(args[0])
	switch (obj.type){
		case "checkbox": if (!obj.checked) return
						break
		default:
				if (esVacio(obj.value)) return
						break
	}
	for (i=1; i<args.length-1; i++){
		obj=buscar_objeto(args[i])
		if (obj.type=="checkbox") {
			if (obj.checked) novacios++
		}
		else {
			v=obj_val(obj)
			if (!esVacio(v)) novacios++
		}
	}
	
	if (args.length-2==novacios) return
	obj=buscar_objeto(args[1])
	if (!error) foco_obtener(obj)

	error=true
	mensaje=mensaje+"\n"+mens
}
function vsinovacioalgunonovacio(){
	var v,obj,i,args=vsinovacioalgunonovacio.arguments,mens=args[args.length-1],novacios=0
	if (error && !todos) return
	obj=buscar_objeto(args[0])
	switch (obj.type){
		case "checkbox": if (!obj.checked) return
						break
		default:
				if (esVacio(obj.value)) return
						break
	}
	for (i=1; i<args.length-1; i++){
		obj=buscar_objeto(args[i])
		if (obj.type=="checkbox") {
			if (obj.checked) novacios++
		}
		else {
			v=obj_val(obj)
			if (!esVacio(v)) novacios++
		}
	}
	
	if (novacios>0) return
	obj=buscar_objeto(args[1])
	if (!error) foco_obtener(obj)
	error=true
	mensaje=mensaje+"\n"+mens
}

function foco_obtener(obj){
	obj.focus()
}

function validacion(f) {
	var formu;
	error=false
    mensaje=''
	validar()
    if (error) errorMostrar(mensaje)
    else {
			formu=buscar_objeto(f)
			formu.submit()
		 }
}

function validar_fecha(dia,mes,ano,mensa)
{
	objdia=buscar_objeto(dia);
	objmes=buscar_objeto(mes);
	objano=buscar_objeto(ano);
	
	if((objano.value%4)==0)
	{
		mes=Array(31,29,31,30,31,30,31,31,30,31,30,31);
		}
	else
	{
		mes=Array(31,28,31,30,31,30,31,31,30,31,30,31);
	}
	
	if(parseInt(objdia.value)>mes[objmes.value-1]){
	 error=true;
	 mensaje=mensa;
	 }
		
}

function validar_secuencia_fechas(diai,mesi,anoi,diaf,mesf,anof,mensaj){
	validar_fecha(diai,mesi,anoi,'Introduzca una fecha inicial correcta');
	validar_fecha(diaf,mesf,anof,'Introduzca una fecha final correcta');
	
	objdiai=buscar_objeto(diai);
	objmesi=buscar_objeto(mesi);
	objanoi=buscar_objeto(anoi);
	objdiaf=buscar_objeto(diaf);
	objmesf=buscar_objeto(mesf);
	objanof=buscar_objeto(anof);
	
	ai=String(objanoi.value);
	mi=String(objmesi.value);
	di=String(objanoi.value);
	fi=ai+mi+di;
	af=String(objanof.value);
	mf=String(objmesf.value);
	df=String(objdiaf.value);
	ff=af+mf+df;
	if(fi>ff)
	{
		error=true;
		mensaje=mensaj;
	}
}


function comprobarEdad(dia,mes,ano) {
	hoy = new Date();
	hoyd = hoy.getDate();
	hoym = hoy.getMonth()+1;
	hoya = hoy.getFullYear();
	
	objdia=buscar_objeto(dia);
	objmes=buscar_objeto(mes);
	objano=buscar_objeto(ano);

	dia=objdia.options[objdia.selectedIndex].value;
	mes=objmes.options[objmes.selectedIndex].value;
	ano=objano.options[objano.selectedIndex].value;

	if(dia!='' & mes!='' & ano!='') {
		if(calcularEdad(dia,mes,ano,hoyd,hoym,hoya)<14) {
			mostrarTutor(1);
			//alert('Debes tener más de 14 años para poder registrarte');
			//return false;
		} else {
			mostrarTutor(0);
		}
	}
	//return true;
}


function calcularEdad(dia,mes,ano,hoyd,hoym,hoya){
	var edad;
	edad = hoya-ano;
	if(hoym<mes) {
		edad--;
	} else if(hoym==mes) {
		if(hoyd<dia) edad--;
	}
	//alert(edad)
	return(edad);
}



function esEdadMinima(minima,dia,mes,ano) {
	hoy = new Date();
	hoyd = hoy.getDate();
	hoym = hoy.getMonth()+1;
	hoya = hoy.getFullYear();
	
	objdia=buscar_objeto(dia);
	objmes=buscar_objeto(mes);
	objano=buscar_objeto(ano);

	dia=objdia.options[objdia.selectedIndex].value;
	mes=objmes.options[objmes.selectedIndex].value;
	ano=objano.options[objano.selectedIndex].value;

	if(dia!='' & mes!='' & ano!='') {
		if(calcularEdad(dia,mes,ano,hoyd,hoym,hoya)<minima) {
			mensaje = "<br>"+'Debes tener más de '+minima+' años para poder registrarte';
			return false;
		} else {
			return true;
		}
	}
	return false;
}


function comprobarOrigen(obj) {
//	alert(origen_amigo)
	tabla = buscar_objeto("tablaOrigen");
	valor = obj.options[obj.selectedIndex].value;
	tabla.style.display = (valor=="amigo") ? 'inline' : 'none';
	origen_amigo = (valor=="amigo") ? 1 : 0;
//	alert(origen_amigo)
}

/*  FIN */