﻿(function ($) {
    $.fn.sliderM = function (options) {
        //variabili di default
        var defaults = {
            wS: 600,            //larghezza sliderM
            hS: 300,            //altezza sliderM
            wP: 30,            //larghezza pannello di controllo
            speedS: 800,        //velocità sliderM
            timerS: 5000,       //tempo fra uno slide e l'altro
            speedP: "slow",     //velocità pannello di controllo
            direction: "left"   //direzione di scorrimento <"left"> || <"right">
        };
        //se le opzioni sono diverse, le defaults vengono sostituite con le nuove opzioni
        var options = $.extend(defaults, options);

        //INIZIO inizializzazione dello sliderM
        this.each(function () {
            var sliderM = $(this);
            var cont = $(".sliderM_cont", sliderM);
            var panel = $(".sliderM_panel", sliderM);
            var previousP = $(".sliderM_previous", sliderM);
            var nextP = $(".sliderM_next", sliderM);
            var timer;

            sliderM.width(options.wS);
            sliderM.height(options.hS);

            var numPanel = panel.length;
            if (numPanel == 0) { $("<div></div>").attr("class", "sliderM_panel").appendTo(cont); numPanel = 1; };

            cont.width(options.wS * numPanel);
            cont.height(options.hS);

            panel.width(options.wS);
            panel.height(options.hS);

            previousP.width(options.wP);
            nextP.width(options.wP);
            previousP.height(options.hS);
            nextP.height(options.hS);

            if (numPanel > 1) {
                lanciaSliderM(true, options.direction);
                //controllo sull'evento mouseover
                sliderM.hover(
	                function () {
	                    lanciaSliderM(false, options.direction);
	                    if (previousP.css("bottom") == "0px") { previousP.animate({ "bottom": options.hS + "px" }, options.speedP); };
	                    if (nextP.css("bottom") == "0px") { nextP.animate({ "bottom": options.hS + "px" }, options.speedP); };
	                },
	                function () {
	                    lanciaSliderM(true, options.direction);
	                    if (previousP.css("bottom") == options.hS + "px") { previousP.animate({ "bottom": "0px" }, options.speedP); };
	                    if (nextP.css("bottom") == options.hS + "px") { nextP.animate({ "bottom": "0px" }, options.speedP); };
	                }
                );
                //controllo sull'evento click
	            previousP.click(
                    function (event) {
                        event.preventDefault();
                        previousSlide();
                    }
                );
                nextP.click(
                    function (event) {
                        event.preventDefault();
                        nextSlide();
                    }
                );
            };
            //accende/spegne lo scorrimento automatico
            function lanciaSliderM(attivo, direzione) {
                if (attivo == true) {
                    timer = setInterval(function () {
                        if (direzione == "left") { nextSlide(); };
                        if (direzione == "right") { previousSlide(); }
                        if (previousP.css("bottom") != "0px") { previousP.animate({ "bottom": "0px" }, options.speedP); };
                        if (nextP.css("bottom") != "0px") { nextP.animate({ "bottom": "0px" }, options.speedP); };
                    }, options.timerS);
                }
                else { clearInterval(timer); };
            };
            //avanti di un pannello
            function nextSlide() {
                var firstPanel = $(".sliderM_panel:first-child", sliderM);
                if (firstPanel.css("margin-left") == "0px") {
                    firstPanel.animate({ "margin-left": "-" + options.wS + "px" }, options.speedS, function () {
                        $(this).appendTo(cont).css({ "margin-left": "0px" });
                    });
                };
            };
            //indietro di un pannello
            function previousSlide() {
                if ($(".sliderM_panel:first-child", sliderM).css("margin-left") == "0px") {
                    var lastPanel = $(".sliderM_panel:last-child", sliderM);
                    lastPanel.prependTo(cont).css({ "margin-left": "-" + options.wS + "px" });
                    lastPanel.animate({ "margin-left": "0px" }, options.speedS);
                };
            };
        });
    }
})(jQuery);
