(function ($) {
    if (!$.musi_cn) $.musi_cn = {};

    $.musi_cn.initAccordion = function (btns, openCallback, closeCallback, openFinishCallback, forceHeight) {

        var $btns = $(btns),
        $activeBlock,
        isAnimated = false
        openCallback = openCallback || function () { },
        closeCallback = closeCallback || function () { },
        openFinishCallback = openFinishCallback || function () { };

        $btns.each(function () {

            var $btn = $(this),
          $block = $btn.next();

            if (forceHeight) {
                $block.height($block.height()); // Fix height to prevent the "slide jump"
            }

            $block.hide();

            $btn.click(function () {

                if (isAnimated) return;

                if ($activeBlock) {
                    closeCallback($activeBlock.prev(), $activeBlock);
                    close($activeBlock);
                }

                if (!$activeBlock || ($activeBlock[0] !== $block[0])) {
                    openCallback($btn, $block);
                    open($btn, $block);

                } else {
                    $activeBlock = null;
                }
            });
        });

        function close($block) {
            isAnimated = true;
            $block.slideUp(500, function () {
                isAnimated = false;
            });
        };

        function open($btn, $block) {
            isAnimated = true;
            $activeBlock = $block.slideDown(500, function () {
                isAnimated = false;
                openFinishCallback($btn, $block);
            });
        };
    };

    $.musi_cn.initConseilAccordions = function () {

        var $sidebar = $(".musi-cn .sidebar")

        function openCallback($btn, $block) {
            $btn.addClass("active");
        };
        function closeCallback($btn, $block) {
            $btn.removeClass("active");
            $sidebar.empty().hide();
        };
        function openFinishCallback($btn, $block) {
            var $medias;
            if (($medias = $block.next(".medias-box")).length > 0) { // Medias?
                var $sideMedias = $medias.clone().appendTo($sidebar.show().css("marginTop", $btn.position().top)).show();
                $sideMedias.find("div.videos, div.photos, div.audio").jcarousel({ scroll: 1 });
                $(window).load();
                Shadowbox.setup($sideMedias.find("a"));
            }
        };

        // Init accordions
      $.musi_cn.initAccordion(
      "#musi-conseil-article .article-section-part h4",
      openCallback,
      closeCallback,
      openFinishCallback,
      true);

        $.musi_cn.initAccordion(
      ".article-section h3",
      openCallback,
      function ($btn, $block) {
          closeCallback($btn, $block);
          $block.find(".article-section-part-in:visible").prev().click(); // Close subsections
      },
      openFinishCallback);
    };

    $.musi_cn.initLexiqueAccordions = function () {
        $.musi_cn.initAccordion(
      "#musi-conseil-lexique .section h2",
      function ($btn, $block) {
          $btn.addClass("active");
      },
      function ($btn, $block) {
          $btn.removeClass("active");
      },
      function () { },
      true);
    };

    $.musi_cn.initNewsCarousels = function () {
        $(".musi-news .sidebar").find("div.videos, div.photos, div.audio").jcarousel({ scroll: 1 });
        $(window).load();
    };
})(jQuery);
