var search_variable = "searchFiles";

var radioname_variable = {
  "ultimo_numero": "ultimoNumero",
  "archivio": "archivio"
};

var tipo_ricerca;

var testo_ricerca;
var testi_ricerca;

var autore_ricerca="";
var autori_ricerca;

var ricerca_dal=0;
var ricerca_al=0;

var search_files = [];
var pagine = [[]];
var articoli_trovati = [];
var descrizioni_articoli = [];

var ultima_pagina;

var displayed_articoli = 0;

var js_search_url = js_url + "search/";

var time_start=0;

var cicli=0;
var script_totali=0;
var script_totali_bar=0;
var cicli_bar=0;
var risultati=0;





function array_unique(array) {
  array.sort();
  var old_element = null;
  return jQuery.map(array, function (element) {
    if (old_element === null) {
      old_element = element;
      return element;
    }
    if (old_element == element) {
       return null;
    }
    return element;
  });
}


function loadSearchScript(traduzione_ricerca,link_torna) {

    
    
    
    
    
    tipo_ricerca="";
    
    testo_ricerca="";
    testi_ricerca="";
    
    search_files = [];
    pagine = [[]];
    articoli_trovati = [];
    descrizioni_articoli = [];
    
    ultima_pagina="";
    
    displayed_articoli = 0;
    
    time_start=new Date().getTime();

  tipo_ricerca = radioname_variable[jQuery(".tipo_cerca:checked").val()];


  testo_ricerca = jQuery("#search").val().toLowerCase();
  testi_ricerca = testo_ricerca.split(" ");
  
  

  if(jQuery("#autore").length)
  {
      autore_ricerca = jQuery("#autore").val().toLowerCase();
      autori_ricerca = autore_ricerca.split(" ");
      
      if(testo_ricerca=="" && autore_ricerca=="")return;
      
  }
  else if(testo_ricerca=="")return;
  
  if(jQuery("#dal_numero").length)
  {
      ricerca_dal = parseInt(jQuery("#dal_numero").val());
      ricerca_al = parseInt(jQuery("#al_numero").val());
  }
 
  
  jQuery("#header .sommario").remove();
  jQuery("#content").empty();
  jQuery("#content").html('<div id="testo-articoli">  <div class="crumbs"><span class="richiedi"><a href="?">'+link_torna+'</a></span>  <a href="/">  Home      </a> >  <span class="selected">  '+traduzione_ricerca+'      </span>  </div>  <div class="spacer-red"></div>  <div class="headline">  <div class="testo_headline_lungo">  '+traduzione_ricerca+'      </div>  <div class="spacer-red"></div>  </div>  <div class="clear"></div>  <div class="articolo ricerca"><br /><div id="progress"></div><ol class="lista"></ol></div> </div>');

  risultati=0;
  





  //jQuery("#a_risultati_ricerca").trigger("click");

  jQuery.getScript(
    js_url + "jquery.requireScript-1.2.1.js",
    function () {
      jQuery.requireScript(
        [
          js_url + "jLinq-2.2.1.packed.js",
          js_search_url + "list_search_files_" + lingua_corrente + ".js"
        ],
        function () {
          if (!jQuery.isArray(searchFiles[tipo_ricerca])) {
            search_files.push(searchFiles[tipo_ricerca]);
          } else {
            jQuery.each(searchFiles[tipo_ricerca], function(index, item) {
              search_files.push(item);
            });
          }
            script_totali=search_files.length;
            script_totali_bar=script_totali;
            

            
            if(ricerca_dal>0 && ricerca_al>0)script_totali_bar=ricerca_al-ricerca_dal;
            else if(ricerca_dal>0)script_totali_bar=script_totali_bar-ricerca_dal;
            else if(ricerca_al>0)script_totali_bar=ricerca_al;
  

          fetchFiles();
        }
      );
    }
  );
  

}


function fetchFiles() {

     

    if (articoli_trovati.length > 0) {
      appendArticolo(articoli_trovati.shift());
      fetchFiles();
    }
    else if (search_files.length > 0) {

        cicli++;
        
        
        
        ricerca_dal_n=script_totali-ricerca_dal+1;
        ricerca_al_n=script_totali-ricerca_al+1;
        

        
    

    
    if((ricerca_al == 0 || cicli>=ricerca_al_n) && (ricerca_dal == 0 || cicli<=ricerca_dal_n)){
    
    
    
      cicli_bar++;
      progress();
    
    
      jQuery.getScript(
        js_search_url + search_files.shift(),
        function () {
        
        
          
          //ricerco per parola
        
          jQuery.each(testi_ricerca, function(index, singola_ricerca) {
            var ricerca = jQuery.trim(singola_ricerca);
            if (
            
                window[tipo_ricerca]["words"][ricerca] !== undefined
            
            ) {
              var articoli_parziali = window[tipo_ricerca]["words"][ricerca];
              jQuery.each(articoli_parziali, function (index, id_articolo) {


                if (descrizioni_articoli[id_articolo] === undefined) {
                  var articolo_corrente = window[tipo_ricerca]["articoli"][id_articolo];
                 
                  descrizioni_articoli[id_articolo] = {
                    "titolo": articolo_corrente.titolo,
                    "autore": articolo_corrente.autore,
                    "url": articolo_corrente.url,
                    "numero_collegato": {
                      "id": window[tipo_ricerca]["id"],
                      "nome": window[tipo_ricerca]["nome"]
                    }
                  }
                  
                  
                }

                
                    //jQuery('#log-ricerca').append("trovato articolo "+id_articolo+"<br />");
  
                
                
              });
              if(1){
                //jQuery('#log-ricerca').append("trovato articolo OK<br />");
                jQuery.merge(articoli_trovati, articoli_parziali);
                }
            }
          });
          
          
          
          if(autore_ricerca!=""){
          
          
              if(testo_ricerca!="")
              {
                articoli_trovati=[];

              }
              
              articoli_parziali_autore=[];
                
              //ricerco per autore (solo tra quelli che ho trovato per parola)
            
              jQuery.each(autori_ricerca, function(index, singola_ricerca) {
                var ricerca = jQuery.trim(singola_ricerca);
                if (
                
                    window[tipo_ricerca]["autori"][ricerca] !== undefined
                
                ) {
                  var articoli_parziali = window[tipo_ricerca]["autori"][ricerca];
                  jQuery.each(articoli_parziali, function (index, id_articolo) {
                 
                    if (descrizioni_articoli[id_articolo]!==undefined || testo_ricerca=="") {
                 
                      var articolo_corrente = window[tipo_ricerca]["articoli"][id_articolo];
                      descrizioni_articoli[id_articolo] = {
                        "titolo": articolo_corrente.titolo,
                        "autore": articolo_corrente.autore,
                        "url": articolo_corrente.url,
                        "numero_collegato": {
                          "id": window[tipo_ricerca]["id"],
                          "nome": window[tipo_ricerca]["nome"]
                        }
                      }
                        articoli_parziali_autore[articoli_parziali_autore.length]=id_articolo;
                        //jQuery('#log-ricerca').append("trovato articolo autore "+id_articolo+"<br />");
                    }
                    



                  });
                  jQuery.merge(articoli_trovati, articoli_parziali_autore);
                }
              });   
          
          }   
             
          
          
          
          articoli_trovati = array_unique(articoli_trovati);
          fetchFiles();
        }
      );
    }
    else {
        search_files.shift();
        fetchFiles();
    }
    }
    else {

      jQuery("#progress").hide();

      if(risultati==0){
          jQuery(".ricerca ol.lista").append("<div id='nofound'>"+lang_no_result+"</div>");
          }
    }

}


function appendArticolo(id_articolo) {
    //jQuery('#log-ricerca').append("aggiungo articolo a pagina<br />"+id_articolo);

    var div = jQuery(".ricerca ol.lista");
    
        var numeri_differenti = false;
        var descrizione_articolo_corrente = descrizioni_articoli[id_articolo];
        var numero_articolo_corrente = descrizione_articolo_corrente.numero_collegato.id;
    
    if(descrizione_articolo_corrente.titolo!=''){
    
        var html_for_div= [
          '<li>',
            '<a href="'+descrizione_articolo_corrente.url+'" target="_blank">',
              descrizione_articolo_corrente.titolo.replace("\\",""),
            '</a><br />',
            ' <span class="autore">'+descrizione_articolo_corrente.autore.replace("\\","")+'</span>',
            ' - <span class="autore">n&deg; '+ descrizione_articolo_corrente.numero_collegato.nome+'</span>',
          '</li>'
        ].join("");
    
        
        jQuery(div).append(html_for_div);
        risultati++;
    }

}






function progress() {

 
  percent=cicli_bar/script_totali_bar*100;

 
  jQuery("#progress").html('<div id="bar"></div><div id="percent">'+Math.round(percent)+'%</div>'); 
  jQuery("#bar").css("width",percent+"%");


}

