(function($) {
	$.fn.clearScrolling = function(opts) {
		opts = $.extend({
			speed:100, // vitesse d'animation
			tag:'li' // tag à utiliser
		},opts||{});

		var $this = $(this);
		var containerWidth = 0; // initialisation de la largeur totale du conteneur
		var totalImg = $this.find(opts.tag).length; // nombre total d'images
		var is_unique = false;
		var speed;

		if (totalImg == 1) {
			var htmlObject = $this.html();
			$(htmlObject).appendTo($this);
			totalImg = 2;
			is_unique = true;
		}

		// $container = conteneur de la liste à puce
		function nextPanel($container) {
				imgWidth = $container.eq(0).find(opts.tag).width(); // récupère la dimension de la première image

				speed = 1000*(imgWidth/1000);
				$container.animate(
					{ left: -imgWidth }, // on anime le bloc sur la distance de la largeur de la première image
					(speed*opts.speed),
					'linear',
					// callback : une fois qu'il a terminé l'animation
					function() {
						if (is_unique) {
							$container.css('left',parseInt($container.parent().width())+30);
						} else {
							$container.css('left',0); // on repositionne le conteneur à 0px
						}

						$container.find(opts.tag).eq(0).insertAfter( $container.find(opts.tag).eq(totalImg-1) ); // on place la première image à la fin de la liste d'éléments
						nextPanel($container); // on relance la fonction (en boucle)
					}
				);
		}

		// une fois que le DOM est chargé
		$(window).load(function() {
			 $this.find(opts.tag).each(function() {
				containerWidth += $(this).width(); // on récupère la largeur de chaque image puis on additionne
			});
			$this.width(containerWidth); // on attribue la largeur totale au conteneur

			if (is_unique) {
				$this.css('left',parseInt($this.parent().width())+30);
			}

			nextPanel( $this ); // on lance la fonction qui tourne en boucle
		});
	}
})(jQuery);


/*
	Plugin ClearCarousel par Olivier Gorzalka
	permet de créer un caroussel
	Dernière mise à jour : 6 avril 2009
*/
(function($) {
	$.fn.extend({
		clearCarousel: function(options) {
			// Default options
			var settings = {
				insideContainer:'ul', // conteneur de la liste des panneaux à défiler
				panelTag:'li', // balise des différents panneaux
				nextBtn:'.nextitem', // selecteur suivant
				prevBtn:'.previousitem', // selecteur précédent
				classInsideWrapper:'.wrappernavigation', // classe du conteneur ajouté en javascript
				nbrToShow:5, // nbre de diapo à afficher par défaut
				timing:500, // vitesse de l'animation
				activeBtnCss: {
					cursor:'pointer',
					opacity:1
				},
				inactiveBtnCss: {
					cursor:'default',
					opacity:0.5
				}
			};
			if(options) $.extend(settings, options);

			var widthElem;
			var page = 0;
			var baseWidth = 0;

			function c(classSelector) { return classSelector.substr(1, classSelector.length); }  // remove the "." form the class selector

			var $this = $(this);
			$this.addClass('clearCarousel');
			var $container =  $this.find(settings.insideContainer);
			var $screens = $container.find(settings.panelTag);
			var totalScreen = $screens.length;
			if (totalScreen <= settings.nbrToShow) { $(settings.nextBtn+','+settings.prevBtn).css('display','none'); } else {
				$(settings.prevBtn).css(settings.inactiveBtnCss);
			}

			function nextPrevSlide(sense) {
				if(sense=='next') {
					$(settings.prevBtn).css(settings.activeBtnCss);
					if (page+settings.nbrToShow != totalScreen) {
						page++;
						//if (page+page)
						var movementNext = $container.offset().left - $screens.eq(page).offset().left;
						$container.stop().animate({
							'left':movementNext
						},settings.timing,function() {
							if (page+settings.nbrToShow == totalScreen) { $(settings.nextBtn).css(settings.inactiveBtnCss); }
							else { $(settings.nextBtn).css(settings.activeBtnCss); }
						});
					}
				} else {
					if (page != 0) {
						page--
						$(settings.nextBtn).css(settings.activeBtnCss);
						var movementPrevious = $container.offset().left - $screens.eq(page).offset().left;
						$container.stop().animate({
							'left':movementPrevious
						},settings.timing,function() {
							if (page == 0) { $(settings.prevBtn).css(settings.inactiveBtnCss); }
							else { $(settings.prevBtn).css(settings.activeBtnCss); }
						})
					}
				}
			}

			$container.wrap('<div class="'+c(settings.classInsideWrapper)+'"></div>')

			$(settings.classInsideWrapper)
				.css('overflow','hidden')
				.find(settings.insideContainer);


			$(settings.nextBtn).click(function() { nextPrevSlide('next'); return false });
			$(settings.prevBtn).click(function() { nextPrevSlide('previous'); return false });

			$(window).load(function() {
				var highest = 0;
				$screens.each(function() {
					
					var border_left = parseInt($(this).css('border-left-width'));
					var border_right = parseInt($(this).css('border-right-width'));
					var padding_left = parseInt($(this).css('padding-left'));
					var padding_right = parseInt($(this).css('padding-right'));
					var margin_left = parseInt($(this).css('margin-left'));
					var margin_right = parseInt($(this).css('margin-right'));
					widthElem = $(this).width();
					if (!isNaN(margin_left)) widthElem += margin_left;
					if (!isNaN(margin_right)) widthElem += margin_right;
					if (!isNaN(padding_left)) widthElem += padding_left;
					if (!isNaN(padding_right)) widthElem += padding_right;
					if (!isNaN(border_left)) widthElem += border_left;
					if (!isNaN(border_right)) widthElem += border_right;
					baseWidth += widthElem;
					
					var border_top = parseInt($(this).css('border-top-width'));
					var border_bottom = parseInt($(this).css('border-bottom-width'));
					var padding_top = parseInt($(this).css('padding-top'));
					var padding_bottom = parseInt($(this).css('padding-bottom'));
					var margin_top = parseInt($(this).css('margin-top'));
					var margin_bottom = parseInt($(this).css('margin-bottom'));
					heightElem = $(this).height();
					if (!isNaN(padding_bottom)) heightElem += padding_top;
					if (!isNaN(padding_top)) heightElem += padding_top;
					if (!isNaN(border_top)) heightElem += border_top;
					if (!isNaN(border_bottom)) heightElem += border_bottom;

					var heightContainer = heightElem;
					if (!isNaN(margin_bottom)) heightContainer += margin_bottom;
					if (!isNaN(margin_top)) heightContainer += margin_top;

					if (heightContainer>=highest) {
						highest = heightContainer;
					}
					$screens.css('height',heightElem)
					
					
					$(settings.classInsideWrapper).find(settings.insideContainer).css('width',baseWidth);
				});
				$this.find(settings.classInsideWrapper).css('height',highest-10)
			});
		}
	});
})(jQuery);


/*---------------------------------------

	SELECTEURS ADDITIONNELS

----------------------------------------*/


// Extension CSS external: Olivier Gorzalka
// selecteur de lien externe
// utilisation $('a:external') ou tout simplement $(':external')
$.extend($.expr[':'],{
	external: function(a) {
		var url = a.href;
		var dom = window.location.hostname;
		var dom1 = dom.replace(/\./g, "\\.")
		var dom2 = dom1.replace(/\//g, "\\/")
		var pat = new RegExp("([^:]{2,6}://)?("+dom2+")?(.*)");
		var res;
		if( url && url.charAt(0) == '/' ) { return false; } // Chemin absolu avec slash ?
		res = url.match(pat);
		if( !res[1] || res[1].length == 0 ) { return false; } // Chemin relatif
		if( !res[2] || res[2].length == 0 ) { return true; } // Url externe
		if( $(a).attr("rel") == 'external') { return true; } // lien comportant déjà rel external
		return false ; // Sinon, lien interne
	}
});

/*---------------------------------------

	Plugins jQuery

----------------------------------------*/


/*
**  jquery.linkAnylizer.js -- jQuery plugin for anylising selected links
**  Olivier Gorzalka
**
**  Params :
**  @selectors: list of selector to retrieve (ex: selectors: ':external,:file(doc),:file(pdf)')
**  @ignore: selector of link to ignore separated by coma (ex: ignore: '.ignoreExternal, #linkId')
**  @new_window_txt: text to add in the title for external link (ex: new_window_txt: 'Open In A New Window')
**  LastChangedDate: 29 Dec 2008
*/
(function($) {
	$.fn.extend({
		linkAnylizer: function (options) {
			// Default options
			var settings = {
				selectors: null,
				ignore : '.ignoreExternal',
				new_window_txt : 'dans une nouvelle fenêtre'
			};
			if(options) $.extend(settings, options);
			
			var $link = $(this).find('a').not(settings.ignore);
			$link.each(function(i,item) {
				if( $(item).attr('href') == undefined ) return;
				if (settings.selectors != null) {
					var listSelectors = settings.selectors.split(','); // array of files to be tested
					var matchExp = new RegExp(/\:(file\()?(\w*)\)?$/);
					// file analysis
					$(listSelectors).each(function(i,selector){
						var classElem = selector.match(matchExp); // class to apply on the link
						if($(item).is(selector)) {
							if (selector == ':external') {
								var title;
								if( $(item).attr("title") != undefined )
									title = $(item).attr("title");
								else
									title = $(item).text();
								if( $(item).hasClass('iconAfter') ){
									$(item).after('&nbsp;<span class="iconlink '+classElem[2]+'">&nbsp;</span>');
								}
								else{
									$(item).attr({
										'rel':'external',
										'title': title +" ("+settings.new_window_txt+")"
									}).addClass('iconlink '+classElem[2]); // give the class to the object
									$(item).attr('target','blank');
								}
							} else {
								if( $(item).hasClass('iconAfter') ){
									$(item).after('&nbsp;<span class="iconlink '+classElem[2]+'">&nbsp;</span>');
								}
								else
									$(item).addClass('iconlink '+classElem[2]); // give the class to the object
							}
						}
					});	
				}
			});
		}
	});
})(jQuery);


$(document).ready(function() {

	$('<div class="roundedcorner"></div>').appendTo('#banner');

	$('#sidebarMenu,#mainContent').linkAnylizer({
		selectors: ':external,:file(doc),:file(pdf),:file(ppt),:file(image),:file(music),:file(archive),:file(video),:file(email)'
	});

	$('#previous_month,#next_month').live('click', function() {
		// var uri = this.href + ' #agenda>*'
		var uri = this.href.replace(/.*\?/, 'assets/snippets/calendar/calendar.php?')
		$('#agenda').fadeTo('fast', 0.1)
		$('#agenda').load(uri, function(){
			$('#agenda').fadeTo('slow', 1)
		})
		return false
	})

	$("a#single_image, a.galerie, .gallery_slider a,a[id^=playvideo]").fancybox();

	$('#slideimg ul').clearScrolling({ speed: 30});
	$('#marquee p').clearScrolling({tag: 'span', speed: 40});

	$('#gallery .gallery_slider').clearCarousel({
		insideContainer:'ul', // conteneur de la liste des panneaux à défiler
		panelTag:'li', // balise des différents panneaux
		nextBtn:'#next_image', // selecteur suivant
		prevBtn:'#previous_image', // selecteur précédent
		classInsideWrapper:'.wrappernavigation', // classe du conteneur ajouté en javascript
		nbrToShow:2, // nbre de diapo à afficher
		timing:500, // vitesse de l'animation
		activeBtnCss: { cursor:'pointer', opacity:1 },
		inactiveBtnCss: { cursor:'default', opacity:0.5 }
	});
	
	$('div[id^=displayvideo]').each(function(i,item) {
  	  $(this).flash({
  		src: 'assets/templates/auffargis/swf/player.swf',
  		width: 425,
  		height: 355,
  		allowfullscreen: true,
  		id:$(this).prev('a').attr('id'),
  		allowscriptaccess : 'always',
  		flashvars: { file: $('base').attr('href')+$(this).find('#preview,.preview').find('a:first').attr('href'), autostart: 'true' }
  	},
  	{ version: 9 }
  	).hide().find('#preview,.preview').hide();
  });

});


$(window).load(function() {
	$('#fancy_overlay,#fancy_wrap,#fancy_close').click(function() { $('#fancy_div').find('embed,object').remove(); })
});