//variables globals
var cerca;
var peu;
var nresultats;
var pos=0;
var pag=1;
var quantitat=30;
var quantitat_suggest=15;
var cs;
var CheckCerca;
var mode1;
var mode2;
var modevalue;
var maxim_carac;
var totalpag;
var num;
var link;
var valors= new Array();
var Posicio_cursor=0;
var Posicio_cursor_nom;
var Limit1=-1;
var Limit2=-1;
var Countlimit=-1;
var CampCerca;
var Sql;
var CondicioCerca_decode;
var CondicioCerca_encode;



function Posicionar_suggest(){
	 var x; 
     var y; 
     var h; 
     var w; 
     var inputposicio = new Array(); 
     var docBody = document.getElementsByTagName("body").item(0); 
     var elementinput=ge('CadenaCerca');
     var myTable = ge('tableSuggest');
      
    if (myTable){
              
      inputposicio = findPos(elementinput); 
      x=inputposicio[0]; 
      y=inputposicio[1]; 
      w=elementinput.offsetWidth; 
      h=0; 
      y += elementinput.offsetHeight; 
      myTable.style.position = "absolute"; 
      myTable.style.left = x+"px"; 
      myTable.style.top  = y+"px"; 
      myTable.style.width = w+"px"; 
      myTable.style.height = h+"px"; 
    }
	
}

function findPos(obj) { 
        var curleft = curtop = 0; 
        if (obj.offsetParent) { 
                curleft = obj.offsetLeft 
                curtop = obj.offsetTop 
                while (obj = obj.offsetParent) { 
                        curleft += obj.offsetLeft 
                        curtop += obj.offsetTop 
                } 
        } 
        return [curleft,curtop]; 
} 

function suggest(){ 
        var x; 
        var y; 
        var h; 
        var w; 
        var inputposicio = new Array(); 
        var docBody = document.getElementsByTagName("body").item(0); 
        var myTable= ce("TABLE"); 
	   var myTableBody = ce('TBODY'); 
       var elementinput=ge('CadenaCerca');
       var existeix = ge('tableSuggest');
        
        if (existeix) {existeix.parentNode.removeChild(existeix);
				       // setOnKeyUp(docBody,"");
				        }
                
        inputposicio = findPos(elementinput); 
        x=inputposicio[0]; 
        y=inputposicio[1]; 
        w=elementinput.offsetWidth; 
        h=0; 
        y += elementinput.offsetHeight; 
        myTable.style.position = "absolute"; 
        myTable.style.left = x+"px"; 
        myTable.style.top  = y+"px"; 
        myTable.style.width = w+"px"; 
        myTable.style.height = h+"px"; 
      

        setID(myTable,"tableSuggest"); 
        setID(myTableBody,"tablebodySuggest"); 
        setClass(myTable,"tableSuggest");
   
        myTable.appendChild(myTableBody); 
                docBody.appendChild(myTable); 
       
} 




function montarpdf(){
    
	url = "xml_ajax.php?Mode="+modevalue;
	
	url += "&CampCerca=" + CampCerca;
	var ss = ge("CadenaCerca");



	if ((ss.value.length > 0 )) url += "&CadenaCerca=" +ss.value;
	
	var inputcheck= ge('cercaresultats');
	if (inputcheck.checked) url +="&sqlCheck="+Sql+"&CondicioCerca="+CondicioCerca_encode;
		
	url +="&ImprimirPdf=1";
    url +="&ln="+I18N["ln"];
    window.open(url);
}

function RadioPress(radio) {

 for (var cont = 0; cont < radio.length; cont++) {
  if(radio[cont].checked) {
    retorna = true; break;
  }
 }
 return (retorna);
}


function inicialitza(Name){
	var radio= document.formcerca.CampCerca;
	var divcheck= ge('divcercaresultats');
	var inputcheck= ge('cercaresultats');
	inputcheck.checked=false;
	
	divcheck.style.visibility='hidden';
	radio[0].checked=true;

	ShowAjuda(radio[0].value);

	

	var text1= ge("intro");
	var text2= ge("cercador");
	var text3= ge("credits");
	var text4= ge("tornar");
	var text5= ge("titol_p");
	var text6= ge("cercar");
	
	var text8= ge("cercar_per");
	var text9= ge("paraules_cerca");
	var text10= ge("actualitzat");
	
	if (text1) text1.innerHTML=I18N["intro"];
	if (text2) text2.innerHTML=I18N["cercador"];
	if (text3) text3.innerHTML=I18N["credits"];
	if (text4) text4.innerHTML=I18N["tornar"];
	
		
	if (text5) text5.innerHTML=I18N["titol_p"];
	if (text6) text6.value=I18N["cercar"];
	if (text8) text8.innerHTML=I18N["cercar"];
	if (text9) text9.innerHTML=I18N["cercar_per"];
	if (text10) text10.innerHTML=I18N["actualitzat"];
	
	CheckCerca=ge("Check");
	
	regHandler("cerca_biblio","writecerca");

	regHandler("cerca_biblio_suggest","writecercasuggest");

	cerca = ge(Name);
	peu = ge("peu");
	nresultats = ge("nresultats");
	cs = ge("cercaStatus");
	cerca.style.visibility="hidden";
	link ="<a href=\"#\" class=\"linkpdf\" onclick=\"montarpdf();\" >"+I18N["imprimir"]+"</a>";
	
	
}


function loadcerca(e) {

	var characterCode;
	if(e && e.which){
		e = e;
		characterCode = e.which;
	}
	else{
		e = event;
		characterCode = e.keyCode;
	}
	
	
	
	if(characterCode == 40)	{
		var rowSuggest = ge("rowSuggest"+Posicio_cursor);
		var rowSuggest2 = ge("rowSuggest"+(Posicio_cursor-1));
		if (rowSuggest){
			if (rowSuggest2) OnMouseOutSuggest(rowSuggest2);
				OnMouseOverSuggest(rowSuggest);
				Posicio_cursor++;
		
				}
			

		return 0;
	}
	if(characterCode == 38)	{
		if (Posicio_cursor) Posicio_cursor--;
		var rowSuggest = ge("rowSuggest"+Posicio_cursor);
		var rowSuggest2 = ge("rowSuggest"+(Posicio_cursor-1));
		if (rowSuggest){
		
			if (rowSuggest2) OnMouseOverSuggest(rowSuggest2);
				OnMouseOutSuggest(rowSuggest);
				
				}
		
		return 0;
	}

	
	
	if((characterCode == 13) && (Posicio_cursor_nom)){
		tancar_suggest(); 
		ClickSuggest(""+Posicio_cursor_nom+""); 
		return;
		
	}
	if(characterCode >65){

		var ss = ge("CadenaCerca");
		ss.style.backgroundColor="#FFFFFF";
		
		if ((CampCerca=="paraula") || (CampCerca=="municipi")) {
			modevalue=2;	
			validarcerca(0);

		
			return;
		}
	}
	else{
		var existeix = ge('tableSuggest');
	       if (existeix) 	existeix.parentNode.removeChild(existeix);
	}
}

function validarcerca(op){
	
	var ss = ge("CadenaCerca");
	ss.style.backgroundColor="#FFFFFF";

	Countlimit=-1;
	Limit1=-1;
	Limit2=-1;
	Pag=0;
	
	if (((CampCerca=="paraula") || (CampCerca=="municipi")) && (!op)) {
			ss.style.backgroundColor="#FFFFD4";
		 	showcerca();
		 	return;
	}
	
	modevalue=1;
	if (ss.value.length > 1) {
			 ss.style.backgroundColor="#FFFFD4";
		 	cerca.innerHTML="";
			
			
		 	showcerca();
	}
	
}

function showcerca() {
	
	if (modevalue!=2) {
		showStatus();
		borrar_fills(cerca);
		borrar_fills(peu);
	}


	url = "xml_ajax.php?Mode="+modevalue;
	
	url += "&CampCerca=" + CampCerca;
	var ss = ge("CadenaCerca");
	url +="&ln="+I18N["ln"];
	

	var inputcheck= ge('cercaresultats');
	if (inputcheck.checked) url +="&sqlCheck="+Sql+"&CondicioCerca="+CondicioCerca_encode;
		
	

	if (Limit1!=-1) url +="&limit1="+Limit1;
	if (Limit2!=-1) url +="&limit2="+Limit2;

	if ((ss.value.length > 0 )) url += "&CadenaCerca=" +escape(ss.value);
	loadXMLReq(url);

}


function writecerca(resp) {

	var data = parseXML(resp);
	
	Posicio_cursor=0;
	Posicio_cursor_nom=null;
	
	
	cerca.style.visibility="visible";
	//delay(200);
	if (data.entry[0].Countlimit!=-1) Countlimit=data.entry[0].Countlimit;
		if (data.entry[0].Sql) Sql=""+data.entry[0].Sql+"";
		if (data.entry[0].CondicioCerca_encode) {
			CondicioCerca_encode=""+data.entry[0].CondicioCerca_encode+"";
			CondicioCerca_decode=""+data.entry[0].CondicioCerca_decode+"";
			
		}

	if ((!data.entry) || (data.entry[0].Countlimit==0)) {
		var divcheck= ge('divcercaresultats');
		divcheck.style.visibility='hidden';
		var inputcheck= ge('cercaresultats');
		inputcheck.checked=false;
		cerca.innerHTML = "<div class=\"statusMessage\">"+I18N["notrobat"]+"</div>";
		text ="<ul id=\"condiciocerca\">"+CondicioCerca_decode+"</ul>";
	} else {
		var divcheck= ge('divcercaresultats');
		divcheck.style.visibility='visible';
		
		num = data.entry.length;
		
		
		
		
		totalpag= Math.ceil((Countlimit/quantitat));
		pag=Math.ceil((Limit1/quantitat))+1
		
		if (!totalpag) totalpag++;
		
		var i;
		
		for (i=0;i<num;i++) {
			valors[i] = data.entry[i];
			if (i<quantitat) writecercaEntry(data.entry[i],i);
		}
		
		if (Countlimit>quantitat) calcularpeu(pos,quantitat);
		
		text ="<ul id=\"condiciocerca\">"+CondicioCerca_decode+"</ul>";
		text +=""+Countlimit+" "+I18N["resultats"]+" "+link+"<br><br> "+I18N["pagina"]+" "+pag+" de " +  totalpag;
		
	}

	 nresultats.innerHTML=text+"  ";
	hideStatus();

		
}

function writecercasuggest(resp){
	
	var data = parseXML(resp);
	var inputcheck= ge('cercaresultats');
	if (!inputcheck.checked) suggest();

	Posicio_cursor=0;
	Posicio_cursor_nom=null;
	
	cerca.style.visibility="visible";
	if (!data.entry) {

	} else {
		
		num = data.entry.length;
	
		var i;
		
		for (i=0;i<num;i++) {
		
			if (i<quantitat_suggest) writecercaEntrySuggest(data.entry[i],i);
		}
		
	}

	 cerca.focus();
	
	hideStatus();
}


function posicio(pos1,pos2) {
	
	borrar_fills(cerca);
	/*
	for (i=pos1;i<pos2;i++) writecercaEntry(valors[i],i);
	*/
	
	

	Limit1=pos1;
	Limit2=pos2;
	showcerca();
	
			
}



function writecercaEntry(entry,i) {

	
	var dtRow = ce("dt");
	var link = ce("a");
	var ddRow = ce("dd");

	var titol;
	var autors;
	var cita;
	
	setHREF(link,"#m"+entry.idprocite);

	setClick(dtRow,"desplegar("+i+");");
	setID(dtRow,"dt"+i);
	setID(ddRow,"dd"+i);
	setClass(ddRow,"fitxa");
	
	if (entry.Pdf_adjunt) setClass(dtRow,"dt_amb_pdf");
		
	
	cita="";
	titol="";
	autors="";
	if (entry.Autors) autors="<span class=\"autors\">"+entry.Autors+"</span>: ";
		
	if ((!entry.Autors) && (entry.Autors_MO)) autors="<span class=\"autors\">"+entry.Autors_MO+"</span>: ";
	if ((!entry.Autors) && (!entry.Autors_MO) && (entry.Director)) autors="<span class=\"autors\">"+entry.Director+"</span>: ";
	
	if (entry.titol_mo) titol=entry.titol_mo;
	if (entry.titol) titol=entry.titol;
	
	
	if (!(titol) && !(autors)) {
		cita="Cita bibliogrāfica núm "+entry.idprocite+entry.titol+entry.titol_mo;
		autors="";
		titol="";
	}

	dtRow.innerHTML=(autors + titol + cita);
	cerca.appendChild(dtRow);
	cerca.appendChild(ddRow);	
}

function unic_mouseOver(camp){

	var el=camp.parentNode;

	var children = el.childNodes;
	
	for (i=0;i<children.length;i++) OnMouseOutSuggest((children[i]));
	
}
function writecercaEntrySuggest(entry,i){	
	var tableSuggest = ge ('tableSuggest'); 
    var tablebodySuggest = ge ('tablebodySuggest'); 
    var rowSuggest = ce("TR"); 
    var Cela1Suggest = ce("TD");  
    var Cela2Suggest = ce("TD");  

    h=tableSuggest.offsetHeight; 
	var ss = ge("CadenaCerca"); 
    h = h+ 6; 
	tableSuggest.style.height = h+"px"; 

    Cela1Suggest.appendChild(ctnode(entry.Nom)); 
    Cela2Suggest.appendChild(ctnode(entry.Countk+" resultats")); 
    setClass(Cela1Suggest,"tgleft"); 
    setClass(Cela2Suggest,"tgright");
	
    setID(rowSuggest,"rowSuggest"+i);
    
    
    setOnMouseOver(rowSuggest,"Posicio_cursor="+(i+1)+";OnMouseOverSuggest(this);"); 
    setOnMouseOut(rowSuggest,"OnMouseOutSuggest(this);");
	setClick(rowSuggest,"ClickSuggest(\""+entry.Nom+"\");");
	
	rowSuggest.appendChild(Cela1Suggest); 
    rowSuggest.appendChild(Cela2Suggest); 
    tablebodySuggest.appendChild(rowSuggest); 

}
function OnMouseOverSuggest(camp){
	unic_mouseOver(camp);
	Posicio_cursor_nom=""+camp.childNodes[0].childNodes[0].nodeValue+"";
    setClass(camp.childNodes[0],"tgleftOver"); 
    setClass(camp.childNodes[1],"tgrightOver"); 
    
    
}

function OnMouseOutSuggest(camp){
	
    setClass(camp.childNodes[0],"tgleft"); 
    setClass(camp.childNodes[1],"tgright"); 
}

function ClickSuggest(entry){
	var ss = ge("CadenaCerca");
	tancar_suggest();
	modevalue=3;

	ss.value="\""+entry+"\"";
	Limit1=-1;
	Limit2=-1;
	pag=1;
	showcerca();
	
}

function ClickKeyword(entry){
	var ss = ge("CadenaCerca");
	var radio= document.formcerca.CampCerca;
	tancar_suggest();
	modevalue=3;
	
	radio[3].checked=true;
	CampCerca=radio[3].value;
	ss.value="\""+entry+"\"";
	Limit1=-1;
	Limit2=-1;
	pag=1;
	showcerca();
	
}

function ClickAutor(entry){
	var ss = ge("CadenaCerca");
		var radio= document.formcerca.CampCerca;
	tancar_suggest();
	modevalue=3;
	
	radio[0].checked=true;
	CampCerca=radio[0].value;
	ss.value="\""+entry+"\"";
	Limit1=-1;
	Limit2=-1;
	pag=1;
	showcerca();
	
}

function ClickCallNumber(entry){
	var ss = ge("CadenaCerca");
	var radio= document.formcerca.CampCerca;
	tancar_suggest();
	modevalue=3;
	
	radio[4].checked=true;
	CampCerca=radio[4].value;
	
	ss.value="\""+entry+"\"";
	Limit1=-1;
	Limit2=-1;
	pag=1;
	showcerca();
	
}

function tancar_suggest(){
	var existeix= ge("tableSuggest");
	if (existeix) 	existeix.parentNode.removeChild(existeix);
}

function showStatus(){

	cs.innerHTML=I18N["status"];
	nresultats.innerHTML="";
	peu.innerHTML="";
	cs.style.visibility="visible";

	

}

function hideStatus(){
	
	cs.innerHTML="";
	cs.style.visibility="hidden";
	
}

function calcularpeu(pos,quantitat){
	
	while (peu.firstChild) {
  		peu.removeChild(peu.firstChild);
	}
	var pos1=0;
	var pos2=0;
	
	
	
	for(i=0;i<(Countlimit/quantitat);i++)
	{
			pos1 = pos2;
			pos2 = pos2 + quantitat;
			var link = ce("a");

			if (pag==(i+1)) setClass(link,"peulink_sel");
			else setClass(link,"peulink");
			setHREF(link,"#");

			setClick(link,"posicio("+pos1+","+pos2+","+(i+1)+");");

			link.appendChild(ctnode((i+1)));
			
			peu.appendChild(link);			
			
					
	}
}

function ShowAjuda(valor){
	
	CampCerca=valor;
	
}

function desplegar(i){

	var dd = ge("dd"+i);

	var dt = ge("dt"+i);	

	if (valors[i].Pdf_adjunt){
		if (dt.className=="dtamunt_amb_pdf") dt.className="dt_amb_pdf";
		else dt.className="dtamunt_amb_pdf";	
	}
	else{
		if (dt.className=="dtamunt") dt.className="dt";
		else dt.className="dtamunt";	
	}
	
	


   	   if (dd.hasChildNodes()) {
		  		cert=true;borrar_fills(dd);
		}
       else {
       	
       
				cos ="";
				if (valors[i].Workform)				
				cos +="<li><span class=\"titolspan\">"+I18N["workform"]+": </span><span class=\"contingutspan\">"+valors[i].Workform+"</span></li>";
					
				if ((valors[i].Autors) && (valors[i].Autors_MO))
				cos +="<li><span class=\"titolspan\">"+I18N["authors"]+": </span><span class=\"contingutspan\">"+valors[i].Autors_MO+"</span></li>";
				if (((valors[i].Autors) || (valors[i].Autors_MO)) && (valors[i].Director))
				cos +="<li><span class=\"titolspan\">"+I18N["director"]+": </span><span class=\"contingutspan\">"+valors[i].Director+"</span></li>";
				if (valors[i].titol_mo)				
				cos +="<li><span class=\"titolspan\">"+I18N["title"]+": </span><span class=\"contingutspan\">"+valors[i].titol_mo+"</span></li>";
				if (valors[i].Magazinetitle)				
				cos +="<li><span class=\"titolspan\">"+I18N["magazinetitle"]+": </span><span class=\"contingutspan\">"+valors[i].Magazinetitle+"</span></li>";
				if (valors[i].SeriesTitle)				
				cos +="<li><span class=\"titolspan\">"+I18N["seriestitle"]+": </span><span class=\"contingutspan\">"+valors[i].SeriesTitle+"</span></li>";
				if (valors[i].PublisherName)
				cos +="<li><span class=\"titolspan\">"+I18N["publishername"]+": </span><span class=\"contingutspan\">"+valors[i].PublisherName+"</span></li>";
				
				if (valors[i].PlaceofPublication)
				cos +="<li><span class=\"titolspan\">"+I18N["placeofpublication"]+": </span><span class=\"contingutspan\">"+valors[i].PlaceofPublication+"</span></li>";
				
				if (valors[i].Dateofpublication)
				cos +="<li><span class=\"titolspan\">"+I18N["dateofpublication"]+": </span><span class=\"contingutspan\">"+valors[i].Dateofpublication+"</span></li>";
				if (valors[i].Page)
				cos +="<li><span class=\"titolspan\">"+I18N["page"]+": </span><span class=\"contingutspan\">"+valors[i].Page+"</span></li>";
				if (valors[i].Location)				
				cos +="<li><span class=\"titolspan\">"+I18N["location"]+": </span><span class=\"contingutspan\">"+valors[i].Location+"</span></li>";
				if (valors[i].Municipis)				
				cos +="<li><span class=\"titolspan\">"+I18N["municipis"]+": </span><span class=\"contingutspan\">"+valors[i].Municipis+"</span></li>";

				if (valors[i].CallNumbers)				
				cos +="<li><span class=\"titolspan\">"+I18N["callnumbers"]+": </span><span class=\"contingutspan\">"+valors[i].CallNumbers+"</span></li>";
				
				if (valors[i].Keywords)				
				cos +="<li><span class=\"titolspan\">"+I18N["keywords"]+": </span><span class=\"contingutspan\">"+valors[i].Keywords+"</span></li>";
				
				if (valors[i].Pdf_adjunt) {
				cos +="<li><span class=\"titolspan\">"+I18N["Pdf_adjunt"]+": </span><span class=\"contingutspan\">"+valors[i].Pdf_adjunt+"</span></li>";
					dt.className="dtamunt_amb_pdf";
					
					

				}
				
				dd.innerHTML=cos;
	}
}

function borrar_fills(objecte){
		while (objecte.firstChild) {
  		objecte.removeChild(objecte.firstChild);
	}
}
/*
function delay(milisegundos){
	for(i=0;i<=milisegundos;i++)
	{
	setTimeout('return 0',1);
	
	}
}
*/

