function caracteres_usuario(st,campo)
{
	mensaje ="";
    patron =/[!"·$%&/()=?¿'¡> <´¨{}ç^*;,.:|@#]/; // Añade todos los caracteres no aceptados
	if(patron.test(st))
	{
		mensaje="No introduzca caracteres especiales (salvo _ o -) ni espacios en el "+campo+".\n";
	}
        return mensaje;   
}

/////////////////////////////////////////


function validar_email()
{
ret=true
mensaje=emailCheck(document.form1.password_comprobacion.value)
if (mensaje!="") 
	{
	ret=false
	alert(mensaje)
	}
if (document.form1.password_comprobacion.value=="")
	{
	ret=false
	alert("No ha introducido ninguna dirección de correo.")
	}
return ret
}

///////////////////////////////////////////////


function emailCheck (emailStr) {

mensaje=""
if (emailStr=="")
	return mensaje
// cadena de entrada vacía , sale por otro caso

/* Verificar si el email tiene el formato user@dominio. */
var emailPat=/^(.+)@(.+)$/ 

/* Verificar la existencia de caracteres. ( ) < > @ , ; : \ " . [ ] */
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]" 

/* Verifica los caracteres que son válidos en una dirección de email */
var validChars="\[^\\s" + specialChars + "\]" 

var quotedUser="(\"[^\"]*\")" 

/* Verifica si la dirección de email está representada con una dirección IP Válida */ 
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/


/* Verificar caracteres inválidos */ 

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) {
mensaje=mensaje+"La dirección parece incorrecta (verifique @  '.')"
return mensaje
}
var user=matchArray[1]
var domain=matchArray[2]

// Si el user "user" es valido 
if (user.match(userPat)==null) {
// Si no
mensaje=mensaje+"La parte 'usuario' del email no es válida."
return mensaje
}

/* Si la dirección IP es válida */
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
mensaje=mensaje+"IP de destino inválida"
return mensaje
}
}
}

var domainArray=domain.match(domainPat)
if (domainArray==null) {
mensaje=mensaje+"La parte 'dominio' del email no es válida."
return mensaje
}

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) { 
mensaje=mensaje+"La dirección debe tener 3 letras si es .'com' o similar, o 2 si es de algún pais."
return mensaje
}

if (len<2) {
mensaje=mensaje+"La dirección es erronea (demasiado corta)"
return mensaje
}

// La dirección de email ingresada es Válida
return mensaje;
}
//***********************************

function fechas(dia, mes, ano)
{ 
mensaje=""
	if((ano < 1900) || (ano > 2050) || (mes < 1) || (mes > 12) || (dia < 1) || (dia > 31))
		{
		mensaje=mensaje+"La fecha incluye valores incorrectos.\n"
		}
	else
		{
		if((ano%4 != 0) && (mes == 2) && (dia == 29))	
		    {
			mensaje=mensaje+"No es un año bisiesto.\n"
			// Año no bisiesto y es febrero y el dia es mayor a 28
			}
		else
			{if (mes==2 && dia>29)
				{
				mensaje=mensaje+"El dia seleccionado no es adecuado respecto al mes.\n"
			    // dia de mes incorrecto
				}
			}
		if (((mes == 4) || (mes == 6) || (mes == 9) || (mes==11)) && (dia>30))
			{
			mensaje=mensaje+"El dia seleccionado no es adecuado respecto al mes.\n"
			// dia de mes incorrecto
			}
		}
return mensaje
} 

//************************************************************************************************************

//calcular la edad de una persona
//recibe la fecha como un string en formato español
//devuelve un entero con la edad. Devuelve false en caso de que la fecha sea incorrecta o mayor que el dia actual
function calcular_edad(dia, mes, ano){

    //calculo la fecha de hoy
    hoy=new Date()
    //resto los años de las dos fechas
    edad=hoy.getFullYear()- ano - 1; //-1 porque no se si ha cumplido años ya este año
    //si resto los meses y me da menor que 0 entonces no ha cumplido años. Si da mayor si ha cumplido
    if (hoy.getMonth() + 1 - mes < 0) //+ 1 porque los meses empiezan en 0
       return edad
    if (hoy.getMonth() + 1 - mes > 0)
       return edad+1
    //entonces es que eran iguales. miro los dias
    //si resto los dias y me da menor que 0 entonces no ha cumplido años. Si da mayor o igual si ha cumplido
    if ( hoy.getUTCDate() - dia >= 0)
       return edad + 1
    return edad
} 
//************************************************************************************************************

function validar_basico() {
ret=true
mensaje=""

if (document.form.usuario.value=="") 
	  { 
	  mensaje=mensaje+"Debes rellenar el campo: Usuario.\n"
	  }	  
	  
mensaje=mensaje+caracteres_usuario(document.form.usuario.value,"nombre de usuario");

if (document.form.usuario.value.length>50) 
	  { 
	  mensaje=mensaje+"No puedes exceder de 50 caracteres en el dato: Usuario.\n"
	  }
if (document.form.contra.value=="") 
	  { 
	  mensaje=mensaje+"Debes rellenar el campo: contraseña.\n"
	  }	
if (document.form.contra.value!=document.form.contra2.value) 
	{
	mensaje=mensaje+"Las claves no coinciden.\n"
	}
if (document.form.localidad.value=="") 
	  { 
	  mensaje=mensaje+"Debes rellenar el campo: Localidad.\n"
	  } 
if (document.form.provincias.value==" Haga Selección ") 
	  { 
	  mensaje=mensaje+"Selecciona correctamente pais y provincia.\n"
	  }	  
if (document.form.provincias.value=="hola") 
	  { 
	  mensaje=mensaje+"Selecciona correctamente pais y provincia.\n"
	  }	  
if (document.form.radiosexo[0].checked==document.form.radiosexo[1].checked)
	  { 
	  mensaje=mensaje+"Debes seleccionar un sexo.\n"
	  }	
//if ( checkEmail(document.formulario.email.value) ==false) 
	  //{ 
	  //mensaje=mensaje+"El email proporcionado no parece válido.\n"
	  //}	    
if (document.form.email.value=="") 
	  { 
	  mensaje=mensaje+"Debes rellenar el campo: Email.\n"
	  }	  
if (document.form.email.value.length>50) 
	  { 
	  mensaje=mensaje+"No puedes exceder de 50 caracteres en el dato: Email.\n"
	  }	  
if (document.form.email.value!=document.form.email2.value) 
	{
	mensaje=mensaje+"Los e-mail no coinciden.\n"
	}
if (document.form.grafico.value=="") 
	  { 
	  mensaje=mensaje+"Debes rellenar el campo: verificación anti bots.\n"
	  }
if (!( document.form.checkrelacion.checked || document.form.checksexo.checked || document.form.checkamistad.checked || document.form.checkaficiones.checked || document.form.checksociales.checked || document.form.checkecologicos.checked))	  	  	  		 
	{
	mensaje=mensaje+"Debe seleccionar al menos un area de interes.\n"
	}
if ( calcular_edad (form.dia.options[form.dia.selectedIndex].text, form.mes.options[form.mes.selectedIndex].text, form.ano.options[form.ano.selectedIndex].text) < 18)	  	  		
	{
	mensaje=mensaje+"Debes tener al menos 18 años para registrarte.\n"
	}
if (!document.form.aceptacion.checked)
	{
	mensaje=mensaje+"Debes confirmar que aceptas los términos de registro.\n"
	}

mensaje=mensaje+fechas(form.dia.options[form.dia.selectedIndex].text, form.mes.options[form.mes.selectedIndex].text, form.ano.options[form.ano.selectedIndex].text)
mensaje=mensaje+emailCheck(document.form.email.value)
if (mensaje!="" || permiso_nombre==false || permiso_email==false) 
	{
	ret=false
	if (permiso_nombre==false && document.form.usuario.value!="")
	{
		mensaje=mensaje+"El nombre elegido está ocupado.\n";
	}
	if (permiso_email==false && document.form.email.value!="")
	{
		mensaje=mensaje+"El email elegido está ocupado.\n";
	}
	alert(mensaje)
	}
return ret
}

//*******************************************************************************************

function validar_busqueda_basica() {
ret=true
mensaje=""
if (document.form.provincias.value==" Haga Selección ") 
	  { 
	  mensaje=mensaje+"Selecciona correctamente pais y provincia.\n"
	  }	  
if (document.form.provincias.value=="hola") 
	  { 
	  mensaje=mensaje+"Selecciona correctamente pais y provincia.\n"
	  }	  
if (mensaje!="") 
	{
	ret=false
	alert(mensaje)
	}
return ret	  

}
