
// Recursos en la Red, S.L.U. (C) 2004
// Funciones básicas de Javascript para la gestión del manager
// Autor Ana Blanes 22 Julio 2004



   // Función que comprueba la existencia de una extensión pasada por parámetro

   function compruebaExtension(formulario,campo,nomFichero,extension)
   {
            // Comprueba que la longitud del nombre del fichero sea mayor que 3
            if(nomFichero.length>extension.length+1)
            {
                nomFichero = nomFichero.substring(nomFichero.length-3,nomFichero.length);

                // Si la extensión del fichero no es PDF devuelve falso
                if(nomFichero!=extension)
                {
                    alert("Error en la introducción del fichero.\nEl fichero debe contener la extensión: "+extension);
                    document[formulario][campo].focus();
                    document[formulario][campo].select();
                    return false;
                }
                else
                    return true;
            }
            else
            {
                // Si el fichero no contiene extensión devuelve falso
                alert("Error en la introducción del fichero.\nEl fichero debe contener la extensión: "+extension);
                document[formulario][campo].focus();
                document[formulario][campo].select();
                return false;
            }
   }




   // Función que comprueba que el nombre de un fichero es válido

   function validaFichero(formulario,campo,extension)
   {
        //var letra = /^[a-zA-Z]$/;
        //var numero = /^[0-9]$/;
        //var alfanumericos = /^_?(letra|numero)+(_*(letra|numero)*)*$/;

        var alfanumericos = /^_?-?([a-zA-Z]|[0-9])+(_*-*([a-zA-Z]|[0-9])*)*$/;
        var caracterValido = /^([a-zA-Z]|[0-9]|_|-)$/;

        // Obtenemos el valor del campo correspondiente al fichero
        nomFichero = document[formulario][campo].value;

        if((nomFichero == null)||(nomFichero==""))
            return true;
        else
        {
            // Extrae del path la parte del fichero que corresponde al nombre
            // a partir de la última barra "\" para pc o "/"  para mac
            longNombre = nomFichero.length;
            indice = nomFichero.lastIndexOf("\\",longNombre);
            if(indice < 0)
                indice = nomFichero.lastIndexOf("/",longNombre);

            nomFichero = nomFichero.substring(indice+1,longNombre);
            nomFichero = nomFichero.toLowerCase();


            // Comprueba que la extensión del fichero coincide con la pasada por parámetro
            if(compruebaExtension(formulario,campo,nomFichero,extension))
            {
                longNombre = nomFichero.length;
                indice =  nomFichero.lastIndexOf(".",longNombre);
                nomFichero = nomFichero.substring(0,indice);

                if((nomFichero == null)||(nomFichero.match(alfanumericos)))
                {
                    return true;
                }

                // Comprueba que el nombre del fichero siga el formato establecido por la expresión regular
                // alfanumericos
                else if(!nomFichero.match(alfanumericos))
                {
                    alert("Nombre de fichero erróneo");

                    // Muestra todos y cada uno de los caracteres no válidos del nombre del fichero, resultado
                    // de la comprobación con la expresión regular caracterValido
                    for(i=0;i<nomFichero.length;i++)
                    {
                         caracter = nomFichero.substring(i,i+1)
                         if(!caracter.match(caracterValido))
                             alert("Caracter no válido: "+caracter);
                    }
                    document[formulario][campo].focus();
                    document[formulario][campo].select();
                    return false;

                }
                else
                {
                    document[formulario][campo].focus();
                    document[formulario][campo].select();
                    return false;
                }
            }

            else
            {
                document[formulario][campo].focus();
                document[formulario][campo].select();
                return false;
            }
        }

   }
   
   
   
   
	function validaEmail(campo)
	{
		//Primero recogemos el valor del campo		var strMail = document.forms[0][campo].value;
		// Define la expresion regular para verificar si el email tiene el formato usuario@dominio		var patMail = /^(.+)@(.+)$/;
		// Define la expresion regular para nombres de usuario validos		var patUser = /^[a-zA-Z\d_-]+(\.[a-zA-Z\d_-]+)*$/;
		// Define la expresion regular para direccciones IP		var patDomainIP = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
		// Define la expresion regular para nombres de dominio validos		var patDomain = /^[a-zA-Z\d_-]+(\.[a-zA-Z\d_-]+)+$/;
		// Verifica que el string que recibe la funcion sea del tipo string@string y separa los substring		// correspondientes a usuario y dominio		var matchArray = strMail.match(patMail);
		if(matchArray == null)
		{
			alert("Error en la introducción del correo electrónico.\nEl texto introducido no se corresponde con un correo válido.");
			document.forms[0][campo].focus();
			document.forms[0][campo].select();
			return false;
		}
		var user = new String(matchArray[1]);
		var domain = new String(matchArray[2]); 
		// Si el nombre de usuario no es valido la funcion devuelve falso  		if(user.match(patUser) == null) 
		{
			alert("Error en la introducción del correo electrónico, usuario inválido.\nNo ha introducido ningún nombre antes de la arroba o quizás usó caracteres prohibidos\n(solo se permiten letras, números y'.' '_' '-').");
			document.forms[0][campo].focus();
			document.forms[0][campo].select();
			return false;
		}
		// Verifica si el string de dominio corresponde a una direccion IP		// De ser asi varifica que la ip sea valida.  La funcion devuelve verdadero si la ip es valida y falso si no lo es		var IPArray = domain.match(patDomainIP);
		if(IPArray != null)
		{
			for (var i=1;i<=4;i++)
			{
				if(IPArray[i]>255)
				{
					alert("Por favor repase IP introducida. Números fuera de rango (>255).")
					document.forms[0][campo].focus();
					document.forms[0][campo].select();
					return false;
				}
			}
			//alert("MAIL VALIDO")			return true;
		}
		
		// Verifica que el string de dominio sea valido.		
		// Si es valido verifica que la ultima extension tenga 3 o 4 caracteres de longitud (2 o 3 caracteres mas el punto)		
		var domainArray = domain.match(patDomain);
		if(domainArray == null)
		{
			alert("Error en la introducción del correo electrónico, falta introducir o completar el dominio (parte derecha de la arroba). \nEjemplo: jose.perez@yahoo.es")
			document.forms[0][campo].focus();
			document.forms[0][campo].select();
			return false;
		}
		if(domainArray[domainArray.length - 1].length < 3 || domainArray[domainArray.length - 1].length > 4)
		{
			alert("Error en la introducción del correo electrónico, error en el dominio (parte derecha de la arroba). \nPor favor compruebe que su mail este completo y no contenga espacios en blanco.\nEjemplos de posibles errores: jose.perez@yahoo.eses ó jose.perez@yahoo.e")
			document.forms[0][campo].focus();
			document.forms[0][campo].select();
			return false;
		}
		// Si la funcion no devolvio false entonces el parametro de entrada es una direccion de mail valida		// Por lo tanto la funcion devuelve true		//  alert("MAIL VALIDO");		return true;
	}   
	
	function MM_openBrWindow(theURL,winName,features) { //v2.0		window.open(theURL,winName,features);
	}