/**************************************

Licence : www.megaptery.com
SIFR : si le plugin doit masquer du SIFR, penser à insérer les .js, et .css relatifs au sifr AVANT l'insertion de JibouleSlider
sinon, le desactiveSifr() du chargement s'effectue avant la transformation du texte et ne masque donc pas les zones concernées. SUR FIREFOX
SUR ie, le bug n'est pas encore réglé

********************************************/

(function($) {
    $.fn.jibouleSlider = function(settings) {
        settings = jQuery.extend({
            //animFirst:              true,              //true ou false, anime le slider dès le chargement de la page (PAS ENCORE OPéRATIONNEL)
            ongletName:             'jibouleOnglet',
            clicName:               'jibouleClic',
            contentName:            'jibouleContent',
            openStart:              1,                   //Onglet ouvert en premier
            conteneurWidth:         560,                 //Largeur de la zone conteneur (div#jibouleslider)
            clicWidth:              20,                 //Largeur du bouton clic
            hideSIFR:               false,               //true or false // si true, masque les .sIFR-replaced lorsque l'onglet est inactif
            height:                 148,                 //hauteur de l'application
            premier_passage:        false,                //true or false // si true, au premier chargement, pas d'animations
            direction :				'left',
            colorOff : 				'#BBBBBB',
            colorOn :				'#EF3D56',
            marginWidth : 			0
        },settings);

        // opération largeur + marge
        settings.clicWidth += settings.marginWidth;

        var nbOnglet = $('.' + settings.ongletName).length;
        var clicZone = settings.clicWidth * (nbOnglet - 1);
        var ongletWidth = settings.conteneurWidth - clicZone;
        var contentWidth = ongletWidth - settings.clicWidth;
        var premier_passage = settings.premier_passage;
        var marginLeft = 0;
        var n = 0;
        var conteneurName = this.attr('id');
        var currOnglet = settings.openStart;
        if (currOnglet > nbOnglet) currOnglet = nbOnglet;

        //INIT CSS
        $('#' + conteneurName).css({ height: settings.height + 'px', position : 'relative', width: settings.conteneurWidth + 'px', overflow: 'hidden'});
        $('.' + settings.ongletName).css({ height: settings.height + 'px', width: ongletWidth + 'px'});
        $('.' + settings.clicName).css({ width: settings.clicWidth + 'px', overflow: 'hidden', height: settings.height + 'px'});
        if (settings.direction == 'right') {
        	$('.' + settings.clicName).css({float: 'right'});
        	$('.' + settings.contentName).css({float: 'left'});
        } else {
        	$('.' + settings.clicName).css({float: 'left'});
        	$('.' + settings.contentName).css({float: 'right'});
        }
    	var deplaceOnglet = settings.direction == 'right' ? deplaceOngletRight : deplaceOngletLeft;

        this.children('.' + settings.ongletName).each(function (i) {
            // @todo : insérer le code en bas de page (après l'avoir retouché) pour autoriser ou non l'animation des onglets au chargement
            $(this).attr({id: 'onglet' + (i+1)});
            $(this).children('.' + settings.clicName).attr({id:'clic' + (i+1)});
            $(this).children('.' + settings.contentName).attr({id:'content' + (i+1)});
            $(this).children('.' + settings.contentName).css({width: (contentWidth) + 'px', overflow: 'hidden'});
            $(this).children('.' + settings.clicName).click(function(){
                deplaceOnglet(i+1);
            });
        });

        function deplaceOngletLeft(id) {
            desactiveOnglet(id);
            $('#content' + id).css({
                width    : (contentWidth) + 'px',
                overflow : 'hidden'
            });

            if (id != currOnglet) reActiveOnglet(currOnglet);
            reActiveSifr(id);
            currOnglet  = id;
            newPos = (id-1) * settings.clicWidth;

            if (premier_passage) {
                $('#onglet'+id).css({
                    left: newPos + 'px'
                });
            } else {
                $('#onglet'+id).animate({
                    left: newPos
                });
            }
            for (i = 1; i <= nbOnglet; i++) {
                 if (i != id) {
                     desactiveSifr(i);
                    if (i > 1) {
                        if (i < id) {
                            var posOngl = (i-1) * settings.clicWidth;
                            if (premier_passage) {
                                $('#onglet'+i).css({
                                    left: posOngl + 'px'
                                });
                            } else {
                                $('#onglet'+i).animate({
                                    left: posOngl
                                });
                            }
                        } else {
                            var posOngl = (i-2) * settings.clicWidth + ongletWidth;
                            if (premier_passage) {
                                $('#onglet'+i).css({
                                    left: posOngl + 'px'
                                });
                            } else {
                                $('#onglet'+i).animate({
                                    left: posOngl
                                });
                            }
                        }
                     }
                 }
            }
            if (premier_passage) premier_passage = false;
        }


        function deplaceOngletRight(id) {
            desactiveOnglet(id);
            $('#content' + id).css({
                width    : (contentWidth) + 'px',
                overflow : 'hidden'
            });
            $('#clic'+id).css('background', settings.colorOn);
            if (id != currOnglet) reActiveOnglet(currOnglet);
            reActiveSifr(id);
            currOnglet  = id;
            $adjustment = 0;
            if (id > 1 && id) {
            	//$adjustment = parseInt($('.'+settings.clicName).css('marginRight'));
            }
            newPos = ((id-1) * settings.clicWidth) + $adjustment;
            if (premier_passage) {
                $('#onglet'+id).css({
                    left: newPos + 'px'
                });
            } else {
                $('#onglet'+id).animate({
                    right: newPos
                });
            }
            for (i = 1; i <= nbOnglet; i++) {
                 if (i != id) {
                     desactiveSifr(i);
                     $('#clic'+i).css('background', settings.colorOff);
                    if (i > 1) {
                        if (i < id) {
                            var posOngl = (i-1) * settings.clicWidth + $adjustment;
                            if (premier_passage) {
                                $('#onglet'+i).css({
                                    left: posOngl + 'px'
                                });
                            } else {
                                $('#onglet'+i).animate({
                                    right: posOngl
                                });

                            }
                        } else {
                            var posOngl = settings.conteneurWidth - ((nbOnglet-(i-1))*settings.clicWidth) + $adjustment;
                            if (premier_passage) {
                                $('#onglet'+i).css({
                                    right: posOngl + 'px'
                                });
                            } else {
                                $('#onglet'+i).animate({
                                    right: posOngl
                                });
                            }
                        }
                     }
                 }
            }
            if (premier_passage) premier_passage = false;
        }

        function desactiveOnglet(id) {
            $('#clic' + id).css({cursor: 'auto'});
            $('#clic' + id).unbind('click');
        }

        function reActiveOnglet(id) {
            $('#clic' + id).click(function(){deplaceOnglet(id);});
            $('#clic' + id).css({cursor: 'pointer'});
        }

        function desactiveSifr(id) {
            if (!settings.hideSIFR) return false;
            $('#content' + id).find('.sIFR-replaced').css({display:'none'});
        }

        function reActiveSifr(id) {
            if (!settings.hideSIFR) return false;
            $('#content' + id).find('.sIFR-replaced').css({display:'block'});
        }


        // on ajoute une marge de 2px entre les jibouleClic
        $('.' + settings.clicName).prepend('<div style="width:'+settings.marginWidth+'px;height:100%;background:#fff;float:left;"></div>');

        deplaceOnglet(currOnglet);
        for (i = 1; i <= nbOnglet; i++) {
            if (i != currOnglet) {
                $('#content' + i).css({
                    width    : 'Opx',
                    overflow : 'hidden'
                });
            }
        }

    };
})(jQuery);
