  function hasInvalidCharacters(field) {
	var invalidCaractersRegExp = /(^[\*\?])|([\+\-]$)|[^[ \*\?~\+\-a-zA-Z0-9áéíóúÁÉÍÓÚñÑ]]*/;
	return invalidCaractersRegExp.test(field.value);
}


function validateQuotas(field){
if(field.value.indexOf("\"")!=-1 || field.value.indexOf("\'")!=-1)
	return false;
return true;
}


/*
Actualmente truena si se manda llamar con nada de texto
entre comillas, por eso no se permiten ni comillas simples ni dobles
*/

function validateQuotasClosed(field){
var quotesFound = 0;
var lastIndexFound = 0;
var stringSize = field.value.length;


lastIndexFound  = field.value.indexOf("\"");
while(lastIndexFound!=-1 ){
	quotesFound = quotesFound +1;
	if(lastIndexFound  == (stringSize -1) ){
		lastIndexFound  = -1;
	}else{
	     lastIndexFound  = field.value.indexOf("\"",lastIndexFound +1);
	}
}
var oddNumber = quotesFound % 2;
if(oddNumber > 0){
alert("Por favor cierre las comillas");
return false;
}
	


return true;
}


function validateEmptyFields(dynamicArguments) {
	for (i=0; i<arguments.length;i++) {
		var valor = arguments[i].value;
		if (js_NoDatos(valor)) {
			alert("El campo búsqueda es requerido.");
        arguments[i].focus();
         return false;
		}
	}
	return true;
}
  /*
	@Desc: Revisa que un texto no sea puros caracteres blancos o tabs, si tiene al menos un caracter
			que no sea blanco, regresa True si no hay datos, si no regresa False ...
	@Nota: Si su longitud es = 0, también regresa True
  */
    function js_NoDatos(valor){
    var flag=true;
    if(valor!=null){
      for(j=0;j<valor.length && flag;j++)
        if(valor.charCodeAt(j)!=32 && valor.charCodeAt(j)!=13 && valor.charCodeAt(j)!=10){
          flag=false;
        }
    }else
      flag=true;



    return flag;
  }


function validateInvalidCharacters(dynamicArguments) {
	for (i=0; i<arguments.length;i++) {
		if (hasInvalidCharacters(arguments[i])) {
			alert("El campo de búsqueda tiene por lo menos un caracter inválido.");
         arguments[i].focus();
         return false;
		}
	}
	return true;
}

function validateForm(form) {
    if (validateInvalidCharacters(form.query) && validateEmptyFields(form.query) && validateQuotas(form.query)) {
        form.submit();
    } else {
        form.query.focus();
        return false;
    }
}
