/*
 *
 * Class BestOfLowCost
 *
 */
(function(){
  BestOfLowCost = function(boutonMagasinSelector, listing_magasinSelector, listing_block_magasinSelector,listing_magasinSelectorClose){
  
    this.button = $(boutonMagasinSelector);
    this.listingBlock = $(listing_block_magasinSelector);
    this.listing = $(listing_magasinSelector);
    this.listingArray = [];
    this.dropDown = null;
    this.cuisineId = 0;
    
    var obj = this;
    this.listing.each(function(index, elt){
      obj.listingArray.push($(this).text());
    });
    
    this.closeListing = $(listing_magasinSelectorClose);
    this.btnClose = 
    
    this.initListeners(obj);
  
  };

  
  BestOfLowCost.prototype.initListeners = function(obj){
    obj.button.click(function(evt){
      evt.preventDefault();
      obj.displayListing(obj, $(this).data("cuisine-id"));
    });
    
    obj.closeListing.click(function(evt){
      evt.preventDefault();
      obj.hideListing(obj);
    });
  };
  
  
  
  BestOfLowCost.prototype.displayListing = function(obj, cuisine_id){ 
    var url = ROOT_URL + "contenu.php";
    obj.cuisineId = cuisine_id;
    var datas = [];
    datas.push("action=display_magasin_bestof");
    datas.push("cuisine_id="+cuisine_id);
    
    if(arguments.length == 3){
      datas.push("region_id="+arguments[2]);
    }
    
    $.ajax({
      url:url,
      data:datas.join('&'),
      type:"post",
      dataType:"html",
      success:function(responseHTML, responseDATA, responseXML){
        if(MyLightBox.getIsOpen()){
          MyLightBox.changeContent(
            {
              content:responseHTML, 
              onClose:{
                func_name:obj.hideListing, 
                args:obj
              },
              onOpenAction:{
                func_name:obj.onOpenAction,
                args:obj
                }
            }
          );
          MyLightBox.closeLoader();
        }else{
          obj.addListingMagasinPopup(responseHTML, obj);
        }
      },
      error:function(responseError){
        alert("error");
      }
    });
  };
  
  
  
  BestOfLowCost.prototype.addListingMagasinPopup = function(parentBlock, obj){
     MyLightBox.create({
      content:parentBlock, 
      onClose:{
        func_name:obj.hideListing, 
        args:obj
      },
      onOpenAction:{
        func_name:obj.onOpenAction,
        args:obj
        }
    
    });
    MyLightBox.open();
  };
  
  
  BestOfLowCost.prototype.onOpenAction = function(obj){ 
    obj.dropDown = new DropDownList($("#region_best_of"), 0);
    obj.dropDown.setCallback(function(){ obj.changeRegion(obj); });
    
    $(".ville").each(function(index, elt){
      if(index == 0){
        return 0;
      }
      $(this).click(function(evt){
        evt.preventDefault();
        obj.openMagasinDatas($(this), obj);
      });
    });
  };
  
  
  BestOfLowCost.prototype.changeRegion = function(obj){
   var regionId = obj.dropDown.getValue();
   obj.dropDown.deleteDropDown();
   obj.dropDown = null;
   
   MyLightBox.addLoader();
   obj.displayListing(obj, obj.cuisineId, regionId);
  };
  
  
  BestOfLowCost.prototype.openMagasinDatas = function(elt, obj){
    var pivot = elt.children().first().next();
    if(!pivot.hasClass("actif")){
        obj.closeAllMagasin();
        pivot.slideDown(300, function(){
          pivot.addClass("actif");
        });
    }else{
      pivot.slideUp(300, function(){
          pivot.removeClass("actif");
        });
    }
  };
  
  
  BestOfLowCost.prototype.closeAllMagasin = function(){
     $("#content_popup .actif").each(function(index, elt){
       $(this).slideUp(300, function(){
         $(this).removeClass("actif");
       });
     });
  };
  
  
  BestOfLowCost.prototype.hideListing = function(obj){
    MyLightBox.close(MyLightBox.destroy);
  };
  
  
  
  /*
   *
   *  DEPRECIE
   *
   */
  
  /**
   * 1ere version : le listing des magasins apparait en slideDown
   */
  BestOfLowCost.prototype.listingSlideDown = function(obj){
     if(obj.listingBlock.hasClass("noDisplay")){
        obj.listingBlock.slideDown(500, function(){
          obj.button.css({"display":"none"});
          $(this).removeClass("noDisplay");
        });
      }
  };
  
  
  BestOfLowCost.prototype.listingSlideUp = function(obj){
    obj.listingBlock.slideUp(500, function(){
       obj.button.css({"display":"block"});
       $(this).addClass("noDisplay");
    });
  };
  
  
    /**
   *  2nde version
   */
  BestOfLowCost.prototype.displayListingOld = function(obj){ 
    
    var parentBlock = $('<div id="popup_cont">');
    var ul = $('<ul id="best_of_magasin_listing">');
    
    for(var i = 0; i < obj.listingArray.length; i++){
      var li = $('<li>'+obj.listingArray[i]+'</li>')
      ul.append(li);
    }
    
    parentBlock.append(ul);
    var mag_link = $("#block_magazin a").first().attr("href");
    parentBlock.append($('<div><a href="'+mag_link+'">Chercher un magasin</a></div>'));
    
   // parentBlock.append(blockContainer);
    MyLightBox.create({
      content:parentBlock, 
      onClose:{
        func_name:obj.hideListing, 
        args:obj
      }
    });
    MyLightBox.open();
  };
})();
// end class BestOfLowCost
