﻿/*  Banner Rotator
---------------------------- */
/* 
---------------------------- */
(function($) {
    $.fn.bannerManager = function(args) {
        var defaults = {
            animationSpeed: 800,
            fadeOutSpeed: 800,
            width: -1,
            normalClass: '',
            selectedClass: '',
            linksMarkup: '<a></a>',
            controlsMarkup: '<div></div>',
            start: null,
            pause: null,
            startPauseButton: false
        };

        var options = $.extend(defaults, args);

        return this.each(function(i) {
            var dom = this;
            var obj = $(this);

            this.itemCount = -1;
            this.currentIndex = 0;
            this.currentVirtualIndex = 0;
            this.controlBar = null;

            this.moveBannerToEnd = function(index) {
                var target = $('.banner:eq(' + index + ')', this);
                if (target) {
                    var w = target.width();
                    var t = target.detach();
                    t.css('left', w * (dom.itemCount - 1));
                    t.appendTo(obj);
                }
            };

            this.scrollNext = function() { this.scrollTo(this.currentIndex + 1); };
            this.scrollPrev = function() { this.scrollTo(this.currentIndex - 1 > -1 ? this.currentIndex - 1 : this.itemCount - 1); };

            this.show = function(target) {
                dom.currentVirtualIndex = target.data('virtual_index');
                /* mettre l'indicateur de la bannière courante selected */
                $('a', dom.controlBar).removeClass(options.selectedClass).eq(dom.currentVirtualIndex).addClass(options.selectedClass);

                target.fadeOut(0).css({ 'left': '0px', 'z-index': 3 }).fadeIn(options.fadeOutSpeed, function() {
                    var banners = $('.banner', dom);
                    for (var i = 0; i < banners.length; i++) {
                        if (i != dom.currentVirtualIndex) {
                            banners[i].style.zIndex = 0;
                        }
                        else {
                            banners[i].style.zIndex = 2;
                        }
                    }
                });
            };
            this.scrollTo = function(i) {

                dom.currentIndex = (typeof (i) == 'object')
                    ? i.data('virtual_index')
                    : i;


                if (i > dom.itemCount - 1) {
                    { this.currentIndex = 0; }
                }

                var target = (typeof (this.currentIndex) == 'object')
                    ? this.currentIndex : $('.banner:eq(' + this.currentIndex + ')', this);

                this.show(target);
            };

            dom.controlBar = $(options.controlsMarkup);
            dom.controlBar.css({ 'position': 'absolute', 'z-index': '5' }).addClass('control-bar');

            var banners = $('.banner', obj);
            this.itemCount = banners.length;
            obj.data('banners', {});
            if (this.itemCount > 1) {
                banners.each(function(i) {
                    var b = $(this);
                    b.data('virtual_index', i);

                    var d = obj.data('banners');
                    d[i] = b;
                    obj.data('banners', d);

                    if (i == 0 && options.width < 0)
                        options.width = $(this).width();


                    $(options.linksMarkup)
                    .attr({ 'href': 'javascript:;' })
                    .attr({ 'onclick': '_gaq.push(["_trackPageview", langue+"/accueil/clicCarrouselBoutonImage' + (i+1)+ '"]);_gaq.push(["_trackEvent", "Page accueil", "Carrousel", "Clic sur bouton ' + (i+1) + '"]);' })
                    //.text(i)
                    .addClass(options.normalClass + ' l' + i + (i == 0 ? ' ' + options.selectedClass : ''))
                    .click(function() {
                        if ($('.banner:animated', obj).length <= 0 && dom.currentVirtualIndex != i) {
                            //options.pause();
                            dom.scrollTo(i);
                            //dom.show(obj.data('banners')[i]);
                        }
                    })
                    .hover(function() { $(this).addClass(options.selectedClass); },
                           function() { if (dom.currentVirtualIndex != i) $(this).removeClass(options.selectedClass); })
                    .appendTo(dom.controlBar);
                });

                if (options.startPauseButton) {
                    $('<a></a>')
                        .attr({ 'href': 'javascript:;' })
                        .text('Pause')
                        .toggle(function() { options.pause(); this.innerHTML = 'Start'; }, function() { options.start(); this.innerHTML = 'Pause'; })
                        .appendTo(dom.controlBar);
                }
            }

            obj.prepend(dom.controlBar);

        });
    };
})(jQuery);




/*  Input autoclear
---------------------------- */
(function($) {
    $.fn.autoclear = function() {
        return this.each(function() {
            var o = $(this);
            o.data('defaultText', o.val());
        }).focus(function() {
            var o = $(this);
            if (o.val() == o.data('defaultText'))
                o.val('');
        }).blur(function() {
            var o = $(this);
            if (o.val() == '')
                o.val(o.data('defaultText'));
        });
    };
})(jQuery);

