/* ------------------------------------------------------------------------
	s3Slider
	
	Developped By: Boban Karišik -> http://www.serie3.info/
	Modified By: Andrew Bedford -> http://www.fizdev.net/
        CSS Help: Mészáros Róbert -> http://www.perspectived.com/
	Version: 1.1
	
	Copyright: Feel free to redistribute the script/modify it, as
			   long as you leave my infos at the top.
------------------------------------------------------------------------- */


(function($) {
    $.fn.s3Slider = function(vars) {

        var element = this;
        var timeOut = (vars.timeOut != undefined) ? vars.timeOut : 4000;
        var numOfEvenements = (vars.numOfEvenements != undefined) ? vars.numOfEvenements : 1;
        var numOfNews = (vars.numOfNews != undefined) ? vars.numOfNews : 2;
        var numOfPromotions = (vars.numOfPromotions != undefined) ? vars.numOfPromotions : 2;
        var timerRunning = false;
        var current = null;
        var timeOutFn = null;
        var faderStat = true;
        var mOver = false;
        var play = true;
        var onPause = false;
        var items = $("#" + element[0].id + "Content ." + element[0].id + "Image");
        var itemsSpan = $("#" + element[0].id + "Content ." + element[0].id + "Image span");
        var itemsSuperimage = $("#" + element[0].id + "Content ." + element[0].id + "Image span .superimg");

        $("#btn_pause").click(function() {
            pause();
        });
        $("#btn_next").click(function() {
            next();
        });

        $("#btn_previous").click(function() {
            previous();
        });

        $("#btn_evenements").click(function() {
            gotoEvenements();
        });

        $("#btn_nouveautes").click(function() {
            gotoNouveautes();
        });

        $("#btn_promotions").click(function() {
            gotoPromotions();
        });

        $("#btn_nuitblanche").click(function() {
            gotoNuitblanche();
        });


        var pause = function() {
            if (timerRunning) {
                clearTimeout(timeOutFn);
                timerRunning = false;
                onPause = true;
                $("#btn_pause").attr("src", "/_images/bar/controls/btn-play.jpg");
            }
            else {
                onPause = false;
                next();
                $("#btn_pause").attr("src", "/_images/bar/controls/btn-pause.jpg");

            }

        }

        var play = function() { next(); }

        var stopTimer = function() {
            if (timerRunning) {

                clearTimeout(timeOutFn);
                timerRunning = false;
            }
        }

        var next = function() {

            $("#btn_pause").attr("src", "/_images/bar/controls/btn-pause.jpg");
            stopTimer();
            onPause = false;
            makeSlider();

        }

        var previous = function() {
            onPause = false;
            $("#btn_pause").attr("src", "/_images/bar/controls/btn-pause.jpg");
            //alert("TODO : previous()");
            stopTimer();
            current = (current != null) ? current : items[(items.length - 1)];

            var currNo = jQuery.inArray(current, items) + 1;
            currNo = (currNo == items.length) ? 0 : (currNo - 1);



            if ($(itemsSpan[currNo]).css('bottom') == 0) {

                $(itemsSpan[currNo]).slideDown((timeOut / 6), function() {
                    $(items[currNo]).fadeOut((timeOut / 6), function() {
                        faderStat = true;
                        currNo = currNo - 1;

                        if (currNo < 0) {
                            currNo = items.length - 2;
                        }
                        current = items[currNo];
                        if (!mOver) {
                            fadeElement(false);
                        }

                    });
                });
            } else {
                $(itemsSuperimage[currNo]).fadeOut("normal", function() {
                    $(itemsSpan[currNo]).slideUp((timeOut / 6), function() {
                        $(items[currNo]).fadeOut((timeOut / 6), function() {
                            faderStat = true;
                            currNo = currNo - 1;

                            if (currNo < 0) {
                                currNo = items.length - 2;
                            }
                            //alert(currNo);
                            current = items[currNo];
                            if (!mOver) {
                                fadeElement(false);
                            }
                        });
                    });
                });
            }
        }

        var gotoItem = function(itemNo) {
            onPause = false;
            stopTimer();
            current = (current != null) ? current : items[(items.length - 1)];

            var currNo = jQuery.inArray(current, items) + 1;
            currNo = (currNo == items.length) ? 0 : (currNo - 1);



            if ($(itemsSpan[currNo]).css('bottom') == 0) {

                $(itemsSpan[currNo]).slideDown((timeOut / 6), function() {
                    $(items[currNo]).fadeOut((timeOut / 6), function() {
                        faderStat = true;

                        current = items[itemNo];
                        if (!mOver) {
                            fadeElement(false);
                        }

                    });
                });
            } else {
                $(itemsSuperimage[currNo]).fadeOut("normal", function() {
                    $(itemsSpan[currNo]).slideUp((timeOut / 6), function() {
                        $(items[currNo]).fadeOut((timeOut / 6), function() {
                            faderStat = true;

                            //alert(currNo);
                            current = items[itemNo];
                            if (!mOver) {
                                fadeElement(false);
                            }
                        });
                    });
                });
            }
        }

        var gotoEvenements = function() {
            $("#btn_pause").attr("src", "/_images/bar/controls/btn-pause.jpg");
            $("#btn_promotions").removeClass("selected");
            $("#btn_nuitblanche").removeClass("selected");
            $("#btn_nouveautes").removeClass("selected");
            $("#btn_evenements").addClass("selected");

            gotoItem(0);

        }

        var gotoNouveautes = function() {
            $("#btn_pause").attr("src", "/_images/bar/controls/btn-pause.jpg");
            $("#btn_evenements").removeClass("selected");
            $("#btn_promotions").removeClass("selected");
            $("#btn_nuitblanche").removeClass("selected");
            $("#btn_nouveautes").addClass("selected");

            gotoItem(numOfEvenements);

        }

        var gotoPromotions = function() {
            $("#btn_pause").attr("src", "/_images/bar/controls/btn-pause.jpg");
            $("#btn_evenements").removeClass("selected");
            $("#btn_nouveautes").removeClass("selected");
            $("#btn_nuitblanche").removeClass("selected");
            $("#btn_promotions").addClass("selected");
            gotoItem(numOfEvenements + numOfNews);
        }

        var gotoNuitblanche = function() {
            $("#btn_pause").attr("src", "/_images/bar/controls/btn-pause.jpg");
            $("#btn_evenements").removeClass("selected");
            $("#btn_nouveautes").removeClass("selected");
            $("#btn_promotions").removeClass("selected");
            $("#btn_nuitblanche").addClass("selected");
            gotoItem(numOfEvenements + numOfNews + numOfPromotions);
        }

        function fadeElement(isMouseOut) {
            stopTimer();
            //var thisTimeOut = (isMouseOut) ? (timeOut/2) : timeOut;
            var thisTimeOut = timeOut;
            thisTimeOut = (faderStat) ? 10 : thisTimeOut;
            if (items.length > 0) {
                timeOutFn = setTimeout(makeSlider, thisTimeOut);
                timerRunning = true;
            } else {
                //console.log("Poof..");
            }
        }


        function makeSlider() {
            if (onPause == false) {
                $("#btn_pause").attr("src", "/_images/bar/controls/btn-pause.jpg");
                timerRunning = false;
                var randomnumber=Math.floor(Math.random()*(items.length-1));
                //var randomnumber = (items.length - 1);
                
                current = (current != null) ? current : items[randomnumber];

                var currNo = jQuery.inArray(current, items) + 1;
                currNo = (currNo >= items.length) ? 0 : (currNo - 1);

                if (currNo >= numOfEvenements + numOfNews + numOfPromotions) {
                    $("#btn_evenements").removeClass("selected");
                    $("#btn_nouveautes").removeClass("selected");
                    $("#btn_promotions").removeClass("selected");
                    $("#btn_nuitblanche").addClass("selected");
                }
                else if ((currNo >= numOfEvenements + numOfNews) && (currNo < numOfEvenements + numOfNews + numOfPromotions)) {
                    $("#btn_evenements").removeClass("selected");
                    $("#btn_nouveautes").removeClass("selected");
                    $("#btn_promotions").addClass("selected");
                    $("#btn_nuitblanche").removeClass("selected");
                }
                else if ((currNo >= numOfEvenements) && (currNo < numOfEvenements + numOfNews)) {
                    $("#btn_evenements").removeClass("selected");
                    $("#btn_promotions").removeClass("selected");
                    $("#btn_nouveautes").addClass("selected");
                    $("#btn_nuitblanche").removeClass("selected");
                }
                else {
                    $("#btn_evenements").addClass("selected");
                    $("#btn_promotions").removeClass("selected");
                    $("#btn_nouveautes").removeClass("selected");
                    $("#btn_nuitblanche").removeClass("selected");
                }

                var newMargin = $(element).width() * currNo;
                if (faderStat == true) {
                    if (!mOver) {
                        //console.log(currNo);
                        $(items[currNo]).fadeIn((timeOut / 6), function() {
                            if ($(itemsSpan[currNo]).css('bottom') == 0) {
                                $(itemsSpan[currNo]).slideUp((timeOut / 6), function() {
                                    faderStat = false;
                                    current = items[currNo];

                                    if (!mOver) {
                                        fadeElement(false);


                                    }
                                });
                            } else {

                                $(itemsSpan[currNo]).slideDown((timeOut / 6), function() {

                                    faderStat = false;
                                    current = items[currNo];
                                    // Show the superimg
                                    $(itemsSuperimage[currNo]).fadeIn();
                                    if (!mOver) {
                                        fadeElement(false);
                                    }
                                });
                            }

                        });
                    }
                } else {
                    if (!mOver) {
                        if ($(itemsSpan[currNo]).css('bottom') == 0) {

                            $(itemsSpan[currNo]).slideDown((timeOut / 6), function() {
                                $(items[currNo]).fadeOut((timeOut / 6), function() {
                                    faderStat = true;
                                    current = items[(currNo + 1)];
                                    if (!mOver) {
                                        fadeElement(false);
                                    }
                                });
                            });
                        } else {
                            $(itemsSuperimage[currNo]).fadeOut("normal", function() {
                                $(itemsSpan[currNo]).slideUp((timeOut / 6), function() {
                                    $(items[currNo]).fadeOut((timeOut / 6), function() {
                                        faderStat = true;
                                        current = items[(currNo + 1)];

                                        if (!mOver) {
                                            fadeElement(false);
                                        }
                                    });
                                });
                            });
                        }
                    }
                }
            }
        }

        makeSlider();

    };

})(jQuery);  