var current_acc = 0;
var taille_max = 535; //max width
var taille_min = 40; //min width
var old_acc = 0;
var nb_acc;
var interval_acc;
var running = true;

var initAccordion = function () {
    if (jQuery("#accordion").is("div")) {
        jQuery("#accordion ul li:first").css("border-left", 0);
        nb_acc = jQuery("#accordion ul li").size();
        if (nb_acc > 1) {
            var controlHtml = '<div class="accordionControl"><a class="accPrev" id="accPrev" href="#"></a> <a class="accNext" id="accNext" href="#"></a></div>';
            jQuery(controlHtml).insertAfter("#accordion");
            var accWidth = ((nb_acc - 1) * (taille_min + 1)) + taille_max;
            jQuery("#accordion").width(accWidth);
            interval_acc = setInterval(accordionAutoPlay, 4000);
            jQuery("#accordion ul li a").click(function() {
                clearInterval(interval_acc);
                running = false;
                if (!jQuery(this).hasClass("isOpened")) {
                    current_acc = jQuery("#accordion ul li a").index(this);
                    if (current_acc > 3) {
                        var left = (current_acc - 3) * (taille_min + 1);
                        if (current_acc == nb_acc - 1) {
                            left = (current_acc - 4) * (taille_min + 1);
                        }
                        jQuery("#accordion").animate({left: -left + "px"}, 400);
                    }
                    else {
                        jQuery("#accordion").animate({left: 0}, 400);
                    }
                    jQuery("#accordion ul li a").eq(old_acc).animate({width: taille_min}, 400, function() {
                        jQuery(this).removeClass("isOpened");
                    });
                    jQuery("#accordion ul li a").eq(current_acc).animate({width: taille_max}, 400, function() {
                        jQuery(this).addClass("isOpened");
                    });
                    old_acc = current_acc;
                    return false;
                }
            });
            jQuery("#accPrev").click(function() {
                clearInterval(interval_acc);
                running = false;
                if (current_acc > 0) {
                    current_acc--;
                    if (current_acc > 3) {
                        var left = (current_acc - 3) * (taille_min + 1);
                        if (current_acc == nb_acc - 1) {
                            left = (current_acc - 4) * (taille_min + 1);
                        }
                        jQuery("#accordion").animate({left: -left + "px"}, 400);
                    }
                    else {
                        jQuery("#accordion").animate({left: 0}, 400);
                    }
                }
                else if (current_acc == 0) {
                    current_acc = nb_acc - 1;
                    left = (current_acc - 4) * (taille_min + 1);
                    jQuery("#accordion").animate({left: -left + "px"}, 400);
                }
                jQuery("#accordion ul li a").eq(old_acc).animate({width: taille_min}, 400, function() {
                    jQuery(this).removeClass("isOpened");
                });
                jQuery("#accordion ul li a").eq(current_acc).animate({width: taille_max}, 400, function() {
                    jQuery(this).addClass("isOpened");
                });
                old_acc = current_acc;
                return false;
            });
            jQuery("#accNext").click(function() {
                clearInterval(interval_acc);
                running = false;
                if (current_acc < nb_acc - 1) {
                    current_acc++;
                    if (current_acc > 3) {
                        var left = (current_acc - 3) * (taille_min + 1);
                        if (current_acc == nb_acc - 1) {
                            left = (current_acc - 4) * (taille_min + 1);
                        }
                        jQuery("#accordion").animate({left: -left + "px"}, 400);
                    }
                    else {
                        jQuery("#accordion").animate({left: 0}, 400);
                    }
                }
                else if (current_acc == nb_acc - 1) {
                    current_acc = 0;
                    jQuery("#accordion").animate({left: 0}, 400);
                }
                jQuery("#accordion ul li a").eq(old_acc).animate({width: taille_min}, 400, function() {
                    jQuery(this).removeClass("isOpened");
                });
                jQuery("#accordion ul li a").eq(current_acc).animate({width: taille_max}, 400, function() {
                    jQuery(this).addClass("isOpened");
                });
                old_acc = current_acc;
                return false;
            });
            jQuery("#accordion").mouseleave(function() {
                if (!running) {
                    interval_acc = setInterval(accordionAutoPlay, 4000);
                    running = true;
                }
            });
        }
    }
};

var accordionAutoPlay = function () {
    current_acc = (old_acc + 1) % nb_acc;
    if (current_acc > 3) {
        var left = (current_acc - 3) * (taille_min + 1);
        if (current_acc == nb_acc - 1) {
            left = (current_acc - 4) * (taille_min + 1);
        }
        jQuery("#accordion").animate({left: -left + "px"}, 400);
    }
    else {
        jQuery("#accordion").animate({left: 0}, 400);
    }
    jQuery("#accordion ul li a").eq(old_acc).animate({width: taille_min}, 400, function() {
        jQuery(this).removeClass("isOpened");
    });
    jQuery("#accordion ul li a").eq(current_acc).animate({width: taille_max}, 400, function() {
        jQuery(this).addClass("isOpened");
    });
    old_acc = current_acc;
};

jQuery(document).ready(function() {
    initAccordion();
});
