function consultaBiblioteca (){
//Elabora la consulta corresponent als parametres passats.
var frm = document.forms['frmCercar'];
var	sConsulta = "";
var sValor, sValor2;

	sValor = TractaCadena (frm.fTitol.value);
	if (sValor!=""){
		sConsulta = afegirTerme (sConsulta, ".Y", "(" + ElaboraTerme (20, "TITOL", sValor, "") + ")" );
	}

	sValor = TractaCadena (frm.fAutor.value);
	if (sValor!=""){
		sConsulta = afegirTerme (sConsulta, ".Y", "(" + ElaboraTerme (20, "AUTOR", sValor, "") + " .O " + ElaboraTerme (20, "ALTRES_AUTORS", sValor, "") +" )" );
	}

	sValor = TractaCadena (frm.fMateries.value);
	if (sValor!=""){
		sConsulta = afegirTerme (sConsulta, ".Y", "(" + ElaboraTerme (20, "MATERIES", sValor, "") + ")" );
	}

//Tractament del camp text lliure
	sValor = TractaCadena (frm.fTextLliure.value);
	if (sValor!=""){
		sConsulta = afegirTerme (sConsulta, ".Y", "(" + ElaboraTermeMultiple (10, "", sValor) + ")" );
	}

	frm.pfConsulta.value = sConsulta;
	frm.submit();

//	alert ('consulta:'+frm.pfConsulta.value);
	return (false);
}


function consultaImatges (){
//Elabora la consulta corresponent als parametres passats.
var frm = document.forms['frmCercar'];
var	sConsulta = "";
var sValor, sValor2;

	sValor = TractaCadena (frm.fTitol.value);
	if (sValor!=""){
		sConsulta = afegirTerme (sConsulta, ".Y", "(" + ElaboraTerme (20, "TITOL-NOM_PROPI", sValor, "") + ")" );
	}

	sValor = TractaCadena (frm.fAutor.value);
	if (sValor!=""){
		sConsulta = afegirTerme (sConsulta, ".Y", "(" + ElaboraTerme (20, "AUTOR_DOCUMENT", sValor, "") +" )" );
	}

	sValor = TractaCadena (frm.fObjecte.value);
	if (sValor!=""){
		sConsulta = afegirTerme (sConsulta, ".Y", "(" + ElaboraTerme (20, "NOM_OBJECTE", sValor, "") +" )" );
	}

	sValor = TractaCadena (frm.fDesde.value);
	sValor2 = TractaCadena (frm.fFinsa.value);	
	if (sValor!=""){
		sConsulta = afegirTerme (sConsulta, ".Y", "(" + ElaboraTerme (32, "DATA_IMATGE", sValor, sValor2) +" )" );
	}

	sValor = TractaCadena (frm.fMateries.value);
	if (sValor!=""){
		sConsulta = afegirTerme (sConsulta, ".Y", "(" + ElaboraTerme (20, "MATERIES", sValor, "") + ")" );
	}

//Tractament del camp text lliure
	sValor = TractaCadena (frm.fTextLliure.value);
	if (sValor!=""){
		sConsulta = afegirTerme (sConsulta, ".Y", "(" + ElaboraTermeMultiple (10, "", sValor) + ")" );
	}

	frm.pfConsulta.value = sConsulta;
	frm.submit();

//	alert ('consulta:'+frm.pfConsulta.value);
	return (false);
}

function consultaPlanols (){
//Elabora la consulta corresponent als parametres passats.
var frm = document.forms['frmCercar'];
var	sConsulta = "";
var sValor, sValor2;

	sValor = TractaCadena (frm.fTitol.value);
	if (sValor!=""){
		sConsulta = afegirTerme (sConsulta, ".Y", "(" + ElaboraTerme (20, "TITOL", sValor, "") + ")" );
	}

	sValor = TractaCadena (frm.fAutor.value);
	if (sValor!=""){
		sConsulta = afegirTerme (sConsulta, ".Y", "(" + ElaboraTerme (20, "AUTOR", sValor, "") +" )" );
	}

	sValor = TractaCadena (frm.fObjecte.value);
	if (sValor!=""){
		sConsulta = afegirTerme (sConsulta, ".Y", "(" + ElaboraTerme (20, "NOM_OBJECTE", sValor, "") +" )" );
	}

	sValor = TractaCadena (frm.fDesde.value);
	sValor2 = TractaCadena (frm.fFinsa.value);	
	if (sValor!=""){
		sConsulta = afegirTerme (sConsulta, ".Y", "(" + ElaboraTerme (32, "ANY_REALITZACIO", sValor, sValor2) +" )" );
	}

	sValor = TractaCadena (frm.fMateries.value);
	if (sValor!=""){
		sConsulta = afegirTerme (sConsulta, ".Y", "(" + ElaboraTerme (20, "MATERIES", sValor, "") + ")" );
	}

//Tractament del camp text lliure
	sValor = TractaCadena (frm.fTextLliure.value);
	if (sValor!=""){
		sConsulta = afegirTerme (sConsulta, ".Y", "(" + ElaboraTermeMultiple (10, "", sValor) + ")" );
	}

	frm.pfConsulta.value = sConsulta;
	frm.submit();

//	alert ('consulta:'+frm.pfConsulta.value);
	return (false);
}

function afegirTerme (cadena, sUnio, sNouTerme){
var sentencia = cadena;
	if(sNouTerme != ""){
		if(sentencia != ""){
			sentencia += " " + sUnio + " " + sNouTerme;
		}else{
			sentencia = sNouTerme;
		}
	}
	return (sentencia);
}

function ElaboraTermeMultiple (tipuscamp, sNomCamp, sValorCamp){
var cadena='';
	if ( sValorCamp.indexOf("+") != -1){
		var elements, element;
		var cadenaTermes = "";
		
		var elements = sValorCamp.split("+");
		for (var i=0 ; i<elements.length; i++){
			cadenaTermes += " .Y ("+ ElaboraTerme (tipuscamp, sNomCamp, elements[i], "")  +")";
		}
		cadena = "("+ cadenaTermes.substr(3) +")";
	}else{
		cadena = ElaboraTerme (tipuscamp, sNomCamp, sValorCamp, "");
	}
	return(cadena);
}

function ElaboraTerme (tipuscamp, sNomCamp, sValorCamp, sValorCamp2){
// Funcio per afegir un nou terme a la cadena de consulta Tipus terme 10 text lliure, 11 text lliure generic, 20 text, 21 text generic, 30 data
var sNouTerme, bValor, bCampValor1, bCampValor2;
	sNouTerme = "";
	bValor = (sValorCamp != "");
	bCampValor1 = ( (sNomCamp != "") && (sValorCamp!="") );
	bCampValor2 = ( (sNomCamp != "") && (sValorCamp!="") && (sValorCamp2!="") );

	switch (tipuscamp){
		case 10:
			if (bValor){ sNouTerme = " (" + sValorCamp + ")"; }
			break;
			
		case 11:
			if (bCampValor1){ NouTerme = "((" + sValorCamp + ") .O (" + sValorCamp + "*))"; }
			break;
			
		case 20:
		case 31:
			if (bCampValor1){ sNouTerme = ".EN " + sNomCamp + " (" + sValorCamp + ")" }
			break;
			
		case 21:
			if (bCampValor1){ sNouTerme = sNouTerme = "(.EN " + sNomCamp + " (" + sValorCamp + ") .O  .EN " + sNomCamp + " (" + sValorCamp + "*))" }
			break;
			
		case 32:
			if (bCampValor2){
				sNouTerme = ".EN " +sNomCamp+ "(" +sValorCamp+ ".."+sValorCamp2+") "
			}else{
				if (bCampValor1){ sNouTerme = ".EN " + sNomCamp + " (" + sValorCamp +  ")";}
			}
			break;
			
		case 33:
			if (bCampValor2){
				sNouTerme = ".EN " +sNomCamp+ "(" +sValorCamp+ ".."+sValorCamp2+") ";
			}else{
				if (bCampValor1) {
					sNouTerme = ".EN " +sNomCamp+ "(" +sValorCamp+ "..31/12/9999) ";
				}else{
					sNouTerme = ".EN " +sNomCamp+ "(01/01/0001.."+ sValorCamp2 +") ";
				}
			}
			break;
	}
	return (sNouTerme);
}

function TractaCadena (sOriginal){
//treu caracters prohibits en knosys ". ( ); ä ë ï ö ü < >"
var cadena = trim(sOriginal);
	cadena.toLowerCase();
	cadena.replace('"', '');
	cadena.replace("'", " ");
	cadena.replace(",", " ");
	cadena.replace("(", " ");
	cadena.replace(")", " ");
	cadena.replace("<", " ");
	cadena.replace(">", " ");
	cadena.replace("&", " ");
	cadena.replace(".", " ");
	cadena.replace("ä", "a");
	cadena.replace("ë", "e");
	cadena.replace("ï", "i");
	cadena.replace("ö", "o");
	cadena.replace("ü", "u");
	return(cadena);
}

var espaiBlanc = String.fromCharCode(32);
function trim (valor){
var cad = "" + valor;
	for (var i=0; cad.charAt(i)==espaiBlanc; i++){}
	for (var j=(cad.length-1); cad.charAt(j)==espaiBlanc && j>i ; j--){}
	return( cad.substring(i,(j+1)) );
}


