/**
	consulta.js
	
	description: Metodos de validacion del formulario de consulta.php
	author:		 johnny
	
**/

function validar( f ) 
{
	if ( !check( f ) )
	{
		// alert( "Por favor, rellene todos los campos solicitados." );
		return false;
	}
	/*else*/ return true;
}


function check( f )
{
	try {
		f.usuario.value = es_trim( f.usuario.value );		
		if ( isEmpty( f.usuario.value ) ) 
		{
			alert( "Por favor, rellene todos los campos solicitados." );
			return false;
		}
		
	} catch ( Exception ) {
		alert( "ERROR comprobando el nombre" );
		return false;
	}
	
	try {
		f.correo.value = es_trim( f.correo.value );
		if ( isEmpty( f.correo.value ) ) 					
		{
			alert( "Por favor, rellene todos los campos solicitados." );
			return false;
		}
		
		if ( validate_email( f.correo.value ) != 20 ) 
		{
			alert( "Direccion de correo incorrecta"); 
			return false; 
		}
		
	} catch ( Exception ) {
		alert( "ERROR comprobando el correo" );
		return false;
	}
	
	try {
		f.organization.value = es_trim( f.organization.value );
		if ( isEmpty( f.organization.value ) ) 			
		{
			alert( "Por favor, rellene todos los campos solicitados." );
			return false;
		}
	} catch ( Exception ) {
		alert( "ERROR comprobando la organizacion" );
		return false;
	}
	


        try {
                f.website.value = es_trim( f.website.value );
                if ( isEmpty( f.website.value ) )
                {
                        alert( "Por favor, rellene todos los campos solicitados." );
                        return false;
                }
/*               if (!checkurl( f.website.value ) )
                { 
                        alert( "Direccion web incorrecta");
                        return false;
                }*/
        } catch ( Exception ) {
                alert( "ERROR comprobando la web" );
                return false;
        }

       try {
                f.telf.value = es_trim( f.telf.value );
                if ( isEmpty( f.telf.value ) )
                {
                        alert( "Por favor, rellene todos los campos solicitados." );
                        return false;
                }
        } catch ( Exception ) {
                alert( "ERROR comprobando Telefono" );
                return false;
        }

	
		
	return true;
}

function isEmpty( cadena ) 
{
	// alert( "isEmpty=" + cadena );

	aux = es_trim( cadena );
	if ( aux == "" ) return true;
	return false;
}


function trimspaces( cadena ) 
{
	if ( cadena ) return cadena.trim();
	return "";
	
}


function es_trim(s) {
	var ret=s;
	var i=0, len;

	if (ret.indexOf(" ", 0)==-1) {
		return ret;
	}

	if (ret.charAt(0)==' ') {
		len=ret.length;
		i=0;
		while (i<len && ret.charAt(i)==' ') {
			i++;
		}
		if (i==len) {
			return "";
		}
		ret=ret.substring(i, len);
	}

	len=ret.length;

	if (ret.charAt(len-1)==' ') {
		i=len-1;
		while (i>0 && ret.charAt(i)==' ') {
			i--;
		}
		ret=ret.substring(0, i+1);
	}

	return ret;
}

function validate_email( emailStr ) 
{
	if (emailStr == "") {
		// email value is empty
		return 1;
	}

	var checkTLD=0; // 1 if TLD check is desired
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	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) {
		// email invalid
		return 2;
	}

	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			// The Username Contains Invalid Characters
			return 2;
		}
	}

	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			// Ths Domain Name Contains Invalid Characters
			return 3;
		}
	}


	if (user.match(userPat)==null) {
		// The Username Is Invalid
		return 4;
	}

	var IPArray = domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				// The Destination IP Address Is Invalid
				return 5;
			}
		}
		return 0;
	}

	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			//The Domain Name Is Invalid
			return 6;
		}
	}

	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
		// The Domain Name Extension Is Invalid
		return 7;
	}
	if (len<2) {
		// The Address Is Missing A Hostname
		return 8;
	}
	
	return 20;
}

function checkurl( Strurl)
{                
        var http = "http:⁄⁄";
        var es_url;            
        if(Strurl.length <= 7) 
                es_url = false;
        else
                es_url = (http.indexOf(StrUrl.substring(0,7)) != -1);
        return(es_url);
}
