(function ($) {    $.tiny = $.tiny || {};    $.tiny.carousel = { 		options: { start: 1, 		display: 1,		axis: 'x',		controls: true,		pager: false,		interval: false,		intervaltime: 3000,		rewind: false,		animation: true,		duration: 1000,		callback: null} };		    $.fn.tinycarousel = function (options) {        var options = $.extend({}, $.tiny.carousel.options, options);        this.each(function () {            $(this).data('tcl', new Carousel($(this), options));        });        return this;    };    $.fn.tinycarousel_start = function () {        $(this).data('tcl').start();    };    $.fn.tinycarousel_stop = function () {        $(this).data('tcl').stop();    };    $.fn.tinycarousel_move = function (iNum) {        $(this).data('tcl').move(iNum - 1, true);    };    function Carousel(root, options) {        var oSelf = this;        var oViewport = $('.viewport:first', root);        var oContent = $('.overview:first', root);        var oPages = oContent.children();        var oBtnNext = $('.next:first', root);        var oBtnPrev = $('.prev:first', root);        var oPager = $('.pager:first', root);        var iPageSize, iSteps, iCurrent, oTimer, bPause, bForward = true, bAxis = options.axis == 'x';        function initialize() {            iPageSize = bAxis ? $(oPages[0]).outerWidth(true) : $(oPages[0]).outerHeight(true);            var iLeftover = Math.ceil(((bAxis ? oViewport.outerWidth() : oViewport.outerHeight()) / (iPageSize * options.display)) - 1);            iSteps = Math.max(1, Math.ceil(oPages.length / options.display) - (bAxis ? 0 : iLeftover)) + (bAxis ? 1 : 0);            iCurrent = Math.min(iSteps, Math.max(1, options.start)) - 2;            oContent.css(bAxis ? 'width' : 'height', (iPageSize * oPages.length) + 10); // + 10 pour que sélection bord rouge de la dernière image fonctionne            oSelf.move(1);            setEvents();			        }        function setEvents() {            if (options.controls && oBtnPrev.length > 0 && oBtnNext.length > 0) {                oBtnPrev.click(function () {                    oSelf.move(-1);                    return false;                });                oBtnNext.click(function () {                    oSelf.move(1);                    return false;                });            } 			if (options.interval) {                root.hover(oSelf.stop, oSelf.start);            } 			if (options.pager && oPager.length > 0) {                $('a', oPager).click(setPager);            }        };        function setButtons() {            if (options.controls) {				oBtnPrev.toggleClass('disable', !(iCurrent > 0));				oBtnNext.toggleClass('disable', (iCurrent + (bAxis ? 2 : 1) >= iSteps));            } 			if (options.pager) {                var oNumbers = $('.pagenum', oPager);                oNumbers.removeClass('active');                $(oNumbers[iCurrent]).addClass('active');            }         };		        function setPager(oEvent) {            if ($(this).hasClass('pagenum')) {                oSelf.move(parseInt(this.rel), true);            } return false;        };        function setTimer() {            if (options.interval && !bPause) {                clearTimeout(oTimer);                oTimer = setTimeout(function () {                    iCurrent = iCurrent + 1 == iSteps ? -1 : iCurrent;                    bForward = iCurrent + 1 == iSteps ? false : iCurrent == 0 ? true : bForward;                    oSelf.move(bForward ? 1 : -1);                }, options.intervaltime);            }         };        this.stop = function () {            clearTimeout(oTimer);            bPause = true;        };        this.start = function () {            bPause = false;            setTimer();        };        this.move = function (iDirection, bPublic) {            iCurrent = bPublic ? iDirection : iCurrent += iDirection;            if (iCurrent > -1 && iCurrent < iSteps) {                var oPosition = {};				if (((iCurrent + 1) * options.display) >= oPages.length)				{					if (bAxis)					{						oPosition['left'] = -(iPageSize * (oPages.length - options.display ));					}					else						oPosition['top'] = -(iPageSize * (oPages.length - options.display - 1) + (options.display*iCurrent + 1));				}				else					{					$Cale = ($.browser.msie && $.browser.version =='7.0' ? 1 : options.display*iCurrent + 1);					oPosition[bAxis ? 'left' : 'top'] = -(iCurrent * (iPageSize * options.display) + (bAxis ? 0 : $Cale));					}				                oContent.animate(oPosition, { queue: false, duration: options.animation ? options.duration : 0, complete: function () {                    if (typeof options.callback == 'function') options.callback.call(this, oPages[iCurrent], iCurrent,options.display,oPages.length);					} 					});				                setButtons();                setTimer();            }  		};        return initialize();    };})(jQuery);
