jQuery.fn.fe_design_distributors_navigation = function() {
  return this.each(function() {
    var _this = jQuery(this),
        slider = _this.find(".distributors-navigation-slider").show(),
        offset = _this.offset(),
        initialized = false,
        current = null;
        
        _this.selector = '.distributors-navigation';
        
        _this.find("a").live("click", function() {
          if (initialized) {
            current.removeClass("current");
          };
          
          var a = jQuery(this).addClass("current");
          var a_offset = a.offset();
          
          var top = a_offset.top - offset.top - 2;
          
          var height = a.height() + 3;
          
          if (initialized) {
          
            slider.animate({
              top: top,
              height: height
            }, 100);
          
          } else {
            slider.css({
              top: top,
              height: height
            });
          };
         
          current = a;
          
        });
        
        current = _this.find(".current");
        
        if (!current.length) {
          current = _this.find("a:first");
        };
        
        
        current.click();
        initialized = true;
  });
};

jQuery.fn.fe_design_distributors_toggle = function(distributors) {
  var id = function(href) {
    return href.split("#")[1];
  };
  
  distributors.hide();
  
  return this.each(function() {
    
    
    var _this = jQuery(this),
        current = _this.find(".current"),
        local_distributors = distributors.clone(),
        visible_distributors = null;
        
    _this.selector = '.distributors-navigation';
  
    var click = false;
    var body = jQuery("body").bind("fe_design/distributors/change", function(event, _id) {

      if (!click) {
        _this.find("a[href$=#"+_id+"]").click();
      };
    });
  
    _this.find("a").live("click", function() {
      
      if (visible_distributors) {
        visible_distributors.remove();
      };
      
      var _id = id(this.href);
      
      var _a_local_distributors = local_distributors.clone(),
          item = _a_local_distributors.find("#"+_id),
          lis = item.parents("li").andSelf();
      
      lis.each(function() {
        
        var li = this;

        jQuery(this).siblings().each(function() {
          if (this != li) {
            this.parentNode.removeChild(this);
          };
          
        });
        
      });
      
      visible_distributors = _a_local_distributors.insertBefore(distributors).show();
     
      var first_level = visible_distributors.find(">li").attr("id");
      click = true;
      body.trigger("fe_design/distributors/change", first_level);
      click = false;
      
      return false;
      
    });
      
    current.click();
    
  });
};

jQuery.fn.fe_design_distributors_map = function() {
  
  var id = function(href) {
    return href.split("#")[1];
  };
  
  return this.each(function() {
    
    var image_map = jQuery(this),
        image = image_map.prev();
        image_default = image.attr("src");
    
    
    var body = jQuery("body").bind("fe_design/distributors/change", function(event, id) {
      var area = image_map.find("area[href$=#"+id+"]");
      image_default = area.attr("data-src");
      
      image.attr("src", image_default);
    });
    
    image_map.find("area").hover(function(event) {
      
      var src = jQuery(this).attr("data-src");
      image.attr("src", src);
      
    }, function() {
      
      image.attr("src", image_default);
      
    }).click(function() {

      body.trigger("fe_design/distributors/change", id(this.href));
      
      return false;
      
    });
    
    image_map.hover(function() {
      
    }, function() {
      image.attr("src", image_default);
    });
    
  });
  
};
