var Manager;

  jQuery(document).ready(function(){

  (function ($) {


    // ======= Manager =======

    Manager = new AjaxSolr.Manager({
      //solrUrl: 'http://alicedelice-solr:8080/solr/coreAliceDelice/',
      solrUrl: 'http://alicedelice-solr.h6-0.naxeo.net/solr/',
      servlet: 'select'
    });

    Manager.custom = {};

    // ======= Manager declarations =======
    // Options à ne pas modifier
    Manager.custom.getFilter = true; // Permettra de récupérer la liste des critere dispo dans le flux via le widget result
    Manager.custom.getFacet = true; // Permettra de récupérer via le widget result chaque valeur dispo dans le flux pour chaque critere, ainsi que le nombre de produit associé.
    Manager.custom.tagCloudAdded = false; // Défini si les TagCloud sont instancié ou pas.
    Manager.custom.getTagCloud = true; // Autorise l'execution des widget TagCloud. Par défaut, ils restent fixe, et ne s'execute donc qu'1x chacun.
    Manager.custom.tagCloudNumber = 0; // Nombre de tagCloud à générer
    Manager.custom.tagCloudExecuted = 0; // Nombre de TagCloud déjà généré, getTagCloud devient false, lorsque tagCloudNumber = tagCloudExecuted
    Manager.custom.hashChangedByFacet = false;
    Manager.custom.autoCompleteInit = false;

    // Options libre
    Manager.custom.rows = 9999; // Nombre de produit par défaut à afficher
    Manager.custom.sort = 'prix asc'; // Ordre d'apparition des résultats
    Manager.custom.NumberOfLinks = 10; // Nombre de valeur à afficher en tant que lien pour un filtre donné
    Manager.custom.UseSelect = false; // Définit si on doit afficher un select regroupant toute les valeur pour un critere de tri, après les liens.
    Manager.custom.MethodeTri = 'weight'; // 'alphabetic', 'weight' : Influe sur la méthode d'affichage des critéres

    Manager.custom.autoCompleteFields = ['libelle_produit','critere_marque','critere_edition'];
    Manager.custom.autoCompleteAliases = ['Produit','marque','Edition'];

    // ======= Manager function =======

    Manager.custom.checkHashForParam = function(){
      jQuery('ul[id^=tags_critere] :checkbox').attr('checked',false);
      jQuery('ul[id^=tags_critere] select option:first').attr('selected',true);
      /*********************************************************************************************/
      // Si un paramètre est présent dans le hash (#) de l'URL
      // On boucle sur chacun pour constituer un tableau, qui sera analisé dans ajaxsolr.ResultWidget.js ~l 110
      /*********************************************************************************************/
      _paramsToLoad = [];

      if(window.location.hash != "") {
        _hash = window.location.hash.split('#!')[1];
        _paramsToLoad = decodeHashArray(_hash);
      }
      _paramsToCheck = _paramsToLoad;
    }
    Manager.custom.loadRightParams = function(){
      Manager.store.remove('fq');
      if( _paramsToLoad.length > 0 ){
        for( i = 0, l = _paramsToLoad.length; i < l ;i++ ){
          Manager.store.addByValue('fq',_paramsToLoad[i]);
        }
        _paramsToLoad = [];
      }
      Manager.doRequest();
    }

    Manager.custom.checkHashForParam();

    // ======= Manager initialisation =======
    Manager.init();
    Manager.store.get('rows').val(Manager.custom.rows);
    Manager.store.get('sort').val(Manager.custom.sort);
    Manager.store.addByValue('q', '*:*');
    if( jQuery('#catName').size() > 0 ){
      Manager.store.addByValue('fq', 'categories:"'+jQuery('#catName').val()+'"');
    }


    if ( jQuery('#docs').size() > 0 ) {
      // ResultWidget : code pour la zone des produits
      // Voir fichier ajaxsolr.ResultWidget.js
      Manager.addWidget(new AjaxSolr.ResultWidget({
        id: 'result',
        target: '#docs'
      }));
    }

    if ( jQuery('#resultat_recherche_avancee').size() > 0 ) {
      // ResultWidget : code pour la zone des produits
      // Voir fichier ajaxsolr.ResultWidget.js
      Manager.custom.NumberOfLinks = 0;
      Manager.custom.UseSelect = true;
      Manager.custom.MethodeTri = "alphabetic";
      Manager.custom.sort = 'purchased desc, prix asc';
      Manager.store.get('sort').val(Manager.custom.sort);

      Manager.addWidget(new AjaxSolr.ResultWidget({
        id: 'result',
        target: '#resultat_recherche_avancee'
      }));
    }

	if(!jQuery.browser.msie) {
		if ( jQuery('.recherche_header form[name=quick_find]').size() > 0 ) {
		  // AutoCompleteWidget : Autocomplétion du champ de recherche
		  // Voir fichier ajaxsolr.AutocompleteWidget.js
		  Manager.addWidget(new AjaxSolr.AutocompleteWidget({
			id: 'autocomplete',
			target: '.recherche_header form[name=quick_find]',
			fields: Manager.custom.autoCompleteFields
		  }));
	
		  Manager.widgets.autocomplete.init();
		}
	}

    Manager.store.get('rows').val(1);
    Manager.doRequest();


  })(jQuery);
});
