﻿function ltrim(s) 
{   
	return s.replace(/^\s+/, "");
}

function rtrim(s) 
{   
	return s.replace(/\s+$/, "");
}
function trim(s) 
{   
	return rtrim(ltrim(s));
}

function ValidarEmail(Email)
	{
	var partes;
	var parte;
	var i;
	var j;
	var c;
	var CaracteresValidos = "._-abcdefghijklmnopqrstuvwxyz0123456789";
    //rompo el email en dos partes, antes y después de la arroba 
    partes = Email.split("@") 
    if (partes.length != 2)
	{
       //si el mayor indice del array es distinto de 1 es que no he obtenido las dos partes 
       return(false); 
	 }
    
    //para cada parte, compruebo varias cosas 
	for (i=0;i<partes.length;i++)
	{ 
       parte = partes[i];
	   //Compruebo que tiene algún caracter
	   if   (parte.length <= 0) 
	   { 
          return(false); 
		}

       //para cada caracter de la parte 
       for (j=0;j<parte.length;j++) 
	   	{
          //tomo el caracter actual 
			c=parte.charAt(j);
			c= c.toLowerCase();
			
          //miro a ver si ese caracter es uno de los permitidos 
		  if(CaracteresValidos.indexOf(c)!=-1)
		  {
		  }else{
			return(false); 
		  }
       }  //for
	   
	   
       //si la parte actual acaba o empieza en .  la dirección no es válida 
	   if (parte.charAt(0)=="." || parte.charAt(parte.length - 1)=="." )
	   {
		  return(false); 
       }
    } //for
	 
    //si en la segunda parte del email no tenemos un punto es que va mal 
    if ( partes[1].indexOf(".")==-1)
	{
	    return(false); 
    }
    //calculo cuantos caracteres hay después del último punto de la segunda parte del mail 
    i = (partes[1].length - (partes[1].lastIndexOf( ".") + 1));
    
	//si el número de caracteres es distinto de 2, 3 y 4
	if (i < 2 || i > 4 )
	{
		return(false); 
	}
    //si encuentro dos puntos seguidos tampoco va bien 
    if (Email.indexOf("..")!=-1 ) 
      {
		return(false); 
	  }
    return(true); 
	}
	
	function ValidarCampo(Valor)
	{
		if (Valor.charAt(0)=='.' || Valor.charAt(0)=='/'  )
		{
			return(false);
		}
		return(true);
	}
	
	function ValidarNulo(Valor)
	{
		Valor= trim(Valor);
		if (Valor.length==0)
		{
			return(false);   
		}
		else
		{
			return(true);   
		}
	}
	
	
	function ValidarFormulario(Evento)
	{	

		if (document.getElementById('form_comentarios').getElementsByTagName('ul').length>0){
			document.getElementById('form_comentarios').removeChild(document.getElementById('form_comentarios').getElementsByTagName('ul')[0]);
		}
	
	var HayError = false;
	var MensajeError = document.createElement('ul')/*.setAttribute('id','lista_errores')*/;
	
		var resultado = "No se ha podido enviar su correo electrónico, a causa de los siguientes errores:";
		var errores = new Array();
		var cont = 0;	
		if (ValidarNulo( document.getElementById('nombre_usuario').value)==false)
		{
			//nombre_usuario vacio
			errores[cont++]="No hay valor para el campo: Nombre.";
		}
		else
		{
			//Validamos que el texto sea válido. - No comience ni por . ni por /
			if (ValidarCampo( document.getElementById('nombre_usuario').value)==false)
			{
				//El contenido comienza por . o /
				errores[cont++]="Valor no válido para el campo: Nombre.";
			}
			
		}
		
		
		if (ValidarNulo( document.getElementById('apellidos_usuario').value)==false)
		{
			//apellidos_usuario vacio
			errores[cont++]="No hay valor para el campo: Apellidos.";
		}
		else
		{
			//Validamos que el texto sea válido. - No comience ni por . ni por /
			if (ValidarCampo( document.getElementById('apellidos_usuario').value)==false)
			{
				errores[cont++]="Valor no válido para el campo: Apellidos.";
			}
		}
		
		if (ValidarNulo( document.getElementById('correo_usuario').value)==false)
		{
			//correo_usuario vacio		
			errores[cont++]="No hay valor para el campo: Correo electrónico.";
		}
		else
		{
			//Validamos que el email
			if (ValidarEmail( document.getElementById('correo_usuario').value)==false)
			{
				errores[cont++]="Valor no válido para el campo: Correo electrónico.";
			}
		}
		
		if (ValidarNulo( document.getElementById('asunto_mensaje').value)==false)
		{
			//asunto_mensaje vacio		
			errores[cont++]="No hay valor para el campo: Asunto.";
		}
		else
		{
			//Validamos que el texto sea válido. - No comience ni por . ni por /
			if (ValidarCampo( document.getElementById('asunto_mensaje').value)==false)
			{
				errores[cont++]="Valor no válido para el campo: Asunto.";
			}
		}
		
		if (ValidarNulo( document.getElementById('contenido_mensaje').value)==false)
		{
			//contenido_mensaje vacio		
			errores[cont++]="No hay valor para el campo: Contenido.";
		}
		else
		{
			//Validamos que el texto sea válido. - No comience ni por . ni por /
			if (ValidarCampo( document.getElementById('contenido_mensaje').value)==false)
			{
				errores[cont++]="Valor no válido para el campo: Contenido.";
			}
		}
		
		if (errores.length==0){
			document.getElementById('form_comentarios').submit();
		} else {
			for (var i=0;i<errores.length;i++){
				var item_lista = document.createElement('li');
				var texto = document.createTextNode(errores[i]);
				var codigo_li = item_lista.appendChild(texto);
				MensajeError.appendChild(item_lista);
			}
			document.getElementById('form_comentarios').insertBefore(MensajeError,document.getElementsByTagName('fieldset')[1].nextSibling);
		}
		
		if(document.addEventListener){
			Evento.preventDefault();
		} else { return false; }
		
	}
	
	function escuchar()
	{
	 if (document.addEventListener)
	 {
	 	document.getElementById("enviar").addEventListener("click",ValidarFormulario,false);
	 }
	 else
	 {
	 	document.getElementById("enviar").attachEvent("onclick",ValidarFormulario);
	 }
	}
	
	window.onload=escuchar;

