﻿function validar_formulario (){
        myForm = document.forms['colabora'];
        
        if (myForm['seccion'].value == ''){
            alert('No se ha indicado una sección');
            myForm['seccion'].focus();
            return false;
        }
        
        if (myForm['nombre'].value == ''){
            alert('No se ha indicado el nombre');
            myForm['nombre'].focus();
            return false;
        }
        
        if (validarEmail(myForm['email'].value) == false){
            myForm['email'].focus();
            return false;
        }
        
        if (myForm['titulo'].value == ''){
            alert('No se ha indicado el titulo');
            myForm['titulo'].focus();
            return false;
        }
        
        if (myForm['texto'].value == ''){
            alert('No se ha indicado ningun texto');
            myForm['texto'].focus();
            return false;
        }
        
    }

function validarEmail(Email){
    FormaEmail = /^(.+)@(.+)$/;
    FormaIP = /^(\d{1,3}).(\d{1,3}).(\d{1,3}).(\d{1,3})$/
    NoUsuario = new RegExp("[^\\w\\d.]", 'g');
    NoDominio = new RegExp("[^a-zA-Z\\d.-]", 'g');
        
    // Separación del nombre de usuario y del dominio, segun el formato correcto de una dirección de email
    partes = Email.match(FormaEmail);
    if (partes == null){
        alert ("La dirección de email esta mal escrita");
        return false;
    }
    usuario = partes[1];
    dominio = partes[2];
    
    // Comprobar que el usuario no tiene caracteres especiales
    if (NoUsuario.test(partes[1])){
        alert ("El nombre de usuario esta mal escrito:");
        return false;
    }
    
    // Si el dominio es una ip se comprueba, si no es una dirección ip el dominio se separa en dos partes, una para la
    // terminacion y la otra para el resto
    IPArray = dominio.match(FormaIP)
    
    if (IPArray != null) {
        for (i = 1; i <= 4; i++) {
    	    if (IPArray[i]>255) {
    	        alert("IP de destino incorrecta.")
    		    return false;
    	    }
        }
    } else {
        terminacion = dominio.substring(dominio.lastIndexOf(".") + 1);
        
        // Se usa para comprobar que no hay dos puntos seguidos
        aux = dominio.split('.');
        for (i = 0; i < aux.length; i++){
            if (aux[i] == ''){
                alert ("El nombre del dominio  esta mal escrito:");
                return false;
            }
        }
        
        dominio = dominio.substring(0, dominio.lastIndexOf("."));
    }
    
    // Comprobar que el dominio no tiene caracteres especiales
    if ((NoDominio.test(dominio) && IPArray == null) || dominio == ''){
        alert ("El nombre del dominio  esta mal escrito:");
        return false;
    }
    
    // Comprobar que la terminacion tiene entre 2 y 4 caracteres y que no son especiales
    if (terminacion.search(/[^a-zA-Z]/) != -1 || terminacion.length < 2 || terminacion.length > 4){
        alert ("La dirección debe terminar con un dominio de 3 letras, o un nombre de país de dos letras.");
        return false;
    }
    
    return true;
}

