/**
 * Interface Elements for jQuery
 * utility function
 *
 * http://interface.eyecon.ro
 *
 * Copyright (c) 2006 Stefan Petre
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 *
 */

jQuery.iUtil = {
	getPosition : function(e)
	{
		var x = 0;
		var y = 0;
		var es = e.style;
		var restoreStyles = false;
		if (jQuery(e).css('display') == 'none') {
			var oldVisibility = es.visibility;
			var oldPosition = es.position;
			restoreStyles = true;
			es.visibility = 'hidden';
			es.display = 'block';
			es.position = 'absolute';
		}
		var el = e;
		while (el){
			x += el.offsetLeft + (el.currentStyle && !jQuery.browser.opera ?parseInt(el.currentStyle.borderLeftWidth)||0:0);
			y += el.offsetTop + (el.currentStyle && !jQuery.browser.opera ?parseInt(el.currentStyle.borderTopWidth)||0:0);
			el = el.offsetParent;
		}
		el = e;
		while (el && el.tagName  && el.tagName.toLowerCase() != 'body')
		{
			x -= el.scrollLeft||0;
			y -= el.scrollTop||0;
			el = el.parentNode;
		}
		if (restoreStyles == true) {
			es.display = 'none';
			es.position = oldPosition;
			es.visibility = oldVisibility;
		}
		return {x:x, y:y};
	},
	getPositionLite : function(el)
	{
		var x = 0, y = 0;
		while(el) {
			x += el.offsetLeft || 0;
			y += el.offsetTop || 0;
			el = el.offsetParent;
		}
		return {x:x, y:y};
	},
	getSize : function(e)
	{
		var w = jQuery.css(e,'width');
		var h = jQuery.css(e,'height');
		var wb = 0;
		var hb = 0;
		var es = e.style;
		if (jQuery(e).css('display') != 'none') {
			wb = e.offsetWidth;
			hb = e.offsetHeight;
		} else {
			var oldVisibility = es.visibility;
			var oldPosition = es.position;
			es.visibility = 'hidden';
			es.display = 'block';
			es.position = 'absolute';
			wb = e.offsetWidth;
			hb = e.offsetHeight;
			es.display = 'none';
			es.position = oldPosition;
			es.visibility = oldVisibility;
		}
		return {w:w, h:h, wb:wb, hb:hb};
	},
	getSizeLite : function(el)
	{
		return {
			wb:el.offsetWidth||0,
			hb:el.offsetHeight||0
		};
	},
	getClient : function(e)
	{
		var h, w, de;
		if (e) {
			w = e.clientWidth;
			h = e.clientHeight;
		} else {
			de = document.documentElement;
			w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
			h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
		}
		return {w:w,h:h};
	},
	getScroll : function (e)
	{
		var t=0, l=0, w=0, h=0, iw=0, ih=0;
		if (e && e.nodeName.toLowerCase() != 'body') {
			t = e.scrollTop;
			l = e.scrollLeft;
			w = e.scrollWidth;
			h = e.scrollHeight;
			iw = 0;
			ih = 0;
		} else  {
			if (document.documentElement) {
				t = document.documentElement.scrollTop;
				l = document.documentElement.scrollLeft;
				w = document.documentElement.scrollWidth;
				h = document.documentElement.scrollHeight;
			} else if (document.body) {
				t = document.body.scrollTop;
				l = document.body.scrollLeft;
				w = document.body.scrollWidth;
				h = document.body.scrollHeight;
			}
			iw = self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||0;
			ih = self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0;
		}
		return { t: t, l: l, w: w, h: h, iw: iw, ih: ih };
	},
	getMargins : function(e, toInteger)
	{
		var el = jQuery(e);
		var t = el.css('marginTop') || '';
		var r = el.css('marginRight') || '';
		var b = el.css('marginBottom') || '';
		var l = el.css('marginLeft') || '';
		if (toInteger)
			return {
				t: parseInt(t)||0,
				r: parseInt(r)||0,
				b: parseInt(b)||0,
				l: parseInt(l)
			};
		else
			return {t: t, r: r,	b: b, l: l};
	},
	getPadding : function(e, toInteger)
	{
		var el = jQuery(e);
		var t = el.css('paddingTop') || '';
		var r = el.css('paddingRight') || '';
		var b = el.css('paddingBottom') || '';
		var l = el.css('paddingLeft') || '';
		if (toInteger)
			return {
				t: parseInt(t)||0,
				r: parseInt(r)||0,
				b: parseInt(b)||0,
				l: parseInt(l)
			};
		else
			return {t: t, r: r,	b: b, l: l};
	},
	getBorder : function(e, toInteger)
	{
		var el = jQuery(e);
		var t = el.css('borderTopWidth') || '';
		var r = el.css('borderRightWidth') || '';
		var b = el.css('borderBottomWidth') || '';
		var l = el.css('borderLeftWidth') || '';
		if (toInteger)
			return {
				t: parseInt(t)||0,
				r: parseInt(r)||0,
				b: parseInt(b)||0,
				l: parseInt(l)||0
			};
		else
			return {t: t, r: r,	b: b, l: l};
	},
	getPointer : function(event)
	{
		var x = event.pageX || (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)) || 0;
		var y = event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop)) || 0;
		return {x:x, y:y};
	},
	traverseDOM : function(nodeEl, func)
	{
		func(nodeEl);
		nodeEl = nodeEl.firstChild;
		while(nodeEl){
			jQuery.iUtil.traverseDOM(nodeEl, func);
			nodeEl = nodeEl.nextSibling;
		}
	},
	purgeEvents : function(nodeEl)
	{
		jQuery.iUtil.traverseDOM(
			nodeEl,
			function(el)
			{
				for(var attr in el){
					if(typeof el[attr] === 'function') {
						el[attr] = null;
					}
				}
			}
		);
	},
	centerEl : function(el, axis)
	{
		var clientScroll = jQuery.iUtil.getScroll();
		var windowSize = jQuery.iUtil.getSize(el);
		if (!axis || axis == 'vertically')
			jQuery(el).css(
				{
					top: clientScroll.t + ((Math.max(clientScroll.h,clientScroll.ih) - clientScroll.t - windowSize.hb)/2) + 'px'
				}
			);
		if (!axis || axis == 'horizontally')
			jQuery(el).css(
				{
					left:	clientScroll.l + ((Math.max(clientScroll.w,clientScroll.iw) - clientScroll.l - windowSize.wb)/2) + 'px'
				}
			);
	},
	fixPNG : function (el, emptyGIF) {
		var images = jQuery('img[@src*="png"]', el||document), png;
		images.each( function() {
			png = this.src;				
			this.src = emptyGIF;
			this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + png + "')";
		});
	}
};

// Helper function to support older browsers!
[].indexOf || (Array.prototype.indexOf = function(v, n){
	n = (n == null) ? 0 : n;
	var m = this.length;
	for (var i=n; i<m; i++)
		if (this[i] == v)
			return i;
	return -1;
});
/**
 * Interface Elements for jQuery
 * ImageBox
 *
 * http://interface.eyecon.ro
 *
 * Copyright (c) 2006 Stefan Petre
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 */

/**
 * This a jQuery equivalent for Lightbox2. Alternative to image popups that will display images in an overlay. All links that have attribute 'rel' starting with 'imagebox' and link to an image will display the image inside the page. Galleries can by build buy giving the value 'imagebox-galname' to attribute 'rel'. Attribute 'title' will be used as caption.
 * Keyboard navigation:
 *  -  next image: arrow right, page down, 'n' key, space
 *  -  previous image: arrow left, page up, 'p' key, backspace
 *  -  close: escape
 *
 * CSS
 *	#ImageBoxOverlay
 *	{
 *		background-color: #000;
 *	}
 *	#ImageBoxCaption
 *	{
 *		background-color: #F4F4EC;
 *	}
 *	#ImageBoxContainer
 *	{
 *		width: 250px;
 *		height: 250px;
 *		background-color: #F4F4EC;
 *	}
 *	#ImageBoxCaptionText
 *	{
 *		font-weight: bold;
 *		padding-bottom: 5px;
 *		font-size: 13px;
 *		color: #000;
 *	}
 *	#ImageBoxCaptionImages
 *	{
 *		margin: 0;
 *	}
 *	#ImageBoxNextImage
 *	{
 *		background-image: url(images/imagebox/spacer.gif);
 *		background-color: transparent;
 *	}
 *	#ImageBoxPrevImage
 *	{
 *		background-image: url(images/imagebox/spacer.gif);
 *		background-color: transparent;
 *	}
 *	#ImageBoxNextImage:hover
 *	{
 *		background-image: url(images/imagebox/next_image.jpg);
 *		background-repeat:	no-repeat;
 *		background-position: right top;
 *	}
 *	#ImageBoxPrevImage:hover
 *	{
 *		background-image: url(images/imagebox/prev_image.jpg);
 *		background-repeat:	no-repeat;
 *		background-position: left bottom;
 *	}
 *
 * @name Imagebox
 * @description This a jQuery equivalent for Lightbox2. Alternative to image popups that will display images in an overlay. All links that have attribute 'rel' starting with 'imagebox' and link to an image will display the image inside the page. Galleries can by build buy giving the value 'imagebox-galname' to attribute 'rel'. Attribute 'title' will be used as caption.
 * @param Hash hash A hash of parameters
 * @option Integer border border width
 * @option String loaderSRC path to loading image
 * @option String closeHTML path to close overlay image
 * @option Float overlayOpacity opacity for overlay
 * @option String textImage when a galalry it is build then the iteration is displayed
 * @option String textImageFrom when a galalry it is build then the iteration is displayed
 * @option Integer fadeDuration fade duration in miliseconds
 * @option Integer showTextImage 0/1 : show or not the text 'image n from z'
 *
 * @type jQuery
 * @cat Plugins/Interface
 * @author Stefan Petre
 */

var jQImageBox_imageEl=""; //rustine pour Safari

jQuery.ImageBox = {
	options : {
		border				: 10,
		loaderSRC			: '/style/loadingAnimation.gif',
		closeHTML			: 'Fermer',
		overlayOpacity		: 0.8,
		textImage			: 'Image',
		textImageFrom		: ' / ',
		fadeDuration		: 400,
		showTextImage		: true
	},
	imageLoaded : false,
	firstResize : false,
	currentRel : null,
	animationInProgress : false,
	opened : false,
	minWidth : 0,
	heightClose : 0,

	keyPressed : function(event)
	{
		if(!jQuery.ImageBox.opened || jQuery.ImageBox.animationInProgress)
			return;
		var pressedKey = event.charCode || event.keyCode || -1;
		switch (pressedKey)
		{
			//end
			case 35:
				if (jQuery.ImageBox.currentRel)
					jQuery.ImageBox.start(null, jQuery('a[@rel=' + jQuery.ImageBox.currentRel+ ']:last').get(0));
			break;
			//home
			case 36:
				if (jQuery.ImageBox.currentRel)
					jQuery.ImageBox.start(null, jQuery('a[@rel=' + jQuery.ImageBox.currentRel+ ']:first').get(0));
			break;
			//left
			case 37:
			//backspace
			case 8:
			//page up
			case 33:
			//p
			case 80:
			case 112:
				var prevEl = jQuery('#ImageBoxPrevImage');
				if(prevEl.get(0).onclick != null) {
					prevEl.get(0).onclick.apply(prevEl.get(0));
				}
			break;
			//up
			case 38:
			break;
			//right
			case 39:
			//page down
			case 34:
			//space
			case 32:
			//n
			case 110:
			case 78:
				var nextEl = jQuery('#ImageBoxNextImage');
				if(nextEl.get(0).onclick != null) {
					nextEl.get(0).onclick.apply(nextEl.get(0));
				}
			break;
			//down;
			case 40:
			break;
			//escape
			case 27:
				jQuery.ImageBox.hideImage();
			break;
		}
	},

	init : function(options)
	{
		if (options)
			jQuery.extend(jQuery.ImageBox.options, options);
		if (window.event) {
			jQuery('body',document).bind('keyup', jQuery.ImageBox.keyPressed);
		} else {
			jQuery(document).bind('keyup', jQuery.ImageBox.keyPressed);
		}
		jQuery('a').each(
			function()
			{
				el 				= jQuery(this);
				relAttr 		= el.attr('rel')||'';
				hrefAttr 		= el.attr('href')||'';
				imageTypes 		= /\.jpg|\.jpeg|\.png|\.gif|\.bmp/g;
				if (hrefAttr.toLowerCase().match(imageTypes) != null && relAttr.toLowerCase().indexOf('gallery') == 0) {
					el.bind('click', jQuery.ImageBox.start);
				}
			}
		);
		if (jQuery.browser.msie) {
			iframe = document.createElement('iframe');
			jQuery(iframe)
				.attr(
					{
						id			: 'ImageBoxIframe',
						src			: 'javascript:false;',
						frameborder	: 'no',
						scrolling	: 'no'
					}
				)
				.css (
					{
						display		: 'none',
						position	: 'absolute',
						top			: '0',
						left		: '0',
						filter		: 'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'
					}
				);
			jQuery('body').append(iframe);
		}

		overlay	= document.createElement('div');
		jQuery(overlay)
			.attr('id', 'ImageBoxOverlay')
			.css(
				{
					position	: 'absolute',
					display		: 'none',
					top			: '0',
					left		: '0',
					opacity		: 0
				}
			)
			.append(document.createTextNode(' '))
			.bind('click', jQuery.ImageBox.hideImage);

		captionText = document.createElement('div');
		jQuery(captionText)
			.attr('id', 'ImageBoxCaptionText')
			.css(
				{
					paddingLeft		: jQuery.ImageBox.options.border + 'px'
				}
			)
			.append(document.createTextNode(' '));

		captionImages = document.createElement('div');
		jQuery(captionImages)
			.attr('id', 'ImageBoxCaptionImages')
			.css(
				{
					paddingLeft		: jQuery.ImageBox.options.border + 'px',
					paddingBottom	: jQuery.ImageBox.options.border + 'px'
				}
			)
			.append(document.createTextNode(' '));

		closeEl = document.createElement('a');
		jQuery(closeEl)
			.attr(
				{
					id			: 'ImageBoxClose',
					href		: '#'
				}
			)
			.css(
				{
					position	: 'absolute',
					right		: jQuery.ImageBox.options.border + 'px',
					top			: '0'
				}
			)
			.append(jQuery.ImageBox.options.closeHTML)
			.bind('click', jQuery.ImageBox.hideImage);

		captionEl = document.createElement('div');
		jQuery(captionEl)
			.attr('id', 'ImageBoxCaption')
			.css(
				{
					position	: 'relative',
					textAlign	: 'left',
					margin		: '0 auto',
					zIndex		: 1
				}
			)
			.append(captionText)
			.append(captionImages)
			.append(closeEl);

		loader = document.createElement('img');
		loader.src = jQuery.ImageBox.options.loaderSRC;
		jQuery(loader)
			.attr('id', 'ImageBoxLoader')
			.css(
				{
					position	: 'absolute'
				}
			);

		prevImage = document.createElement('a');
		jQuery(prevImage)
			.attr(
				{
					id			: 'ImageBoxPrevImage',
					href		: '#'
				}
			)
			.css(
				{
					position		: 'absolute',
					display			: 'none',
					overflow		: 'hidden',
					textDecoration	: 'none'
				}
			)
			.append(document.createTextNode(' '));

		nextImage = document.createElement('a');
		jQuery(nextImage)
			.attr(
				{
					id			: 'ImageBoxNextImage',
					href		: '#'
				}
			)
			.css(
				{
					position		: 'absolute',
					overflow		: 'hidden',
					textDecoration	: 'none'
				}
			)
			.append(document.createTextNode(' '));

		container = document.createElement('div');
		jQuery(container)
			.attr('id', 'ImageBoxContainer')
			.css(
				{
					display		: 'none',
					position	: 'relative',
					overflow	: 'hidden',
					textAlign	: 'left',
					margin		: '0 auto',
					top			: '0',
					left		: '0',
					zIndex		: 2
				}
			)
			.append([loader, prevImage, nextImage]);

		outerContainer = document.createElement('div');
		jQuery(outerContainer)
			.attr('id', 'ImageBoxOuterContainer')
			.css(
				{
					display		: 'none',
					position	: 'absolute',
					overflow	: 'hidden',
					top			: '0',
					left		: '0',
					textAlign	: 'center',
					backgroundColor : 'transparent',
					lineHeigt	: '0'
				}
			)
			.append([container,captionEl]);

		jQuery('body')
			.append(overlay)
			.append(outerContainer);


		//minimum width :
		prevImageEl = jQuery('#ImageBoxPrevImage');
		prevWidth = prevImageEl.css("width");
		if (!prevWidth) {
			prevWidth='';
		}
		else{
			if(prevWidth!=''){
				prevWidth = prevWidth.replace(/px/g,''); //on eleve le texte 'px' pour pouvoir faire des calculs
			}
		}
		nextImageEl = jQuery('#ImageBoxNextImage');
		nextWidth = nextImageEl.css("width");
		if (!nextWidth) {
			nextWidth='';
		}
		else{
			if(nextWidth!=''){
				nextWidth = nextWidth.replace(/px/g,''); //on eleve le texte 'px' pour pouvoir faire des calculs
			}
		}

		jQuery.ImageBox.minWidth=-(-(jQuery.ImageBox.options.border * 2)-nextWidth-prevWidth); //2*border+nextWidth+prevWidth

	},

	start : function(e, elm)
	{
		el = elm ? jQuery(elm) : jQuery(this);
		linkRel =  el.attr('rel');
		var totalImages, iteration, prevImage, nextImage;
		if (linkRel != 'imagebox') {
			jQuery.ImageBox.currentRel = linkRel;
			gallery = jQuery('a[@rel=' + linkRel + ']');
			totalImages = gallery.size();
			iteration = gallery.index(elm ? elm : this);
			prevImage = gallery.get(iteration - 1);
			nextImage = gallery.get(iteration + 1);
		}
		imageSrc =  el.attr('href');
		captionText = el.attr('title');
		if (captionText == undefined) captionText = '';
		caption2 = el.attr('content') || "";
		if (caption2!="") {
			captionText+="<br>"+caption2;
		}
		pageSize = jQuery.iUtil.getScroll();
		overlay = jQuery('#ImageBoxOverlay');
		if (!jQuery.ImageBox.opened) {
			jQuery.ImageBox.opened = true;
			if (jQuery.browser.msie) {
				jQuery('#ImageBoxIframe')
					.css ('height', Math.max(pageSize.ih,pageSize.h) + 'px')
					.css ('width', Math.min(pageSize.iw,pageSize.w) + 'px')
					.show();
			}
			overlay
				.css ('height', Math.max(pageSize.ih,pageSize.h) + 'px')
				.css ('width', Math.min(pageSize.iw,pageSize.w) + 'px')
				.show()
				.fadeTo(
					300,
					jQuery.ImageBox.options.overlayOpacity,
					function()
					{
						jQuery.ImageBox.loadImage(
							imageSrc,
							captionText,
							pageSize,
							totalImages,
							iteration,
							prevImage,
							nextImage
						);
					}
				);
			jQuery('#ImageBoxOuterContainer').css ('width', Math.min(pageSize.iw,pageSize.w) + 'px');
		} else {
			jQuery('#ImageBoxPrevImage').get(0).onclick = null;
			jQuery('#ImageBoxNextImage').get(0).onclick = null;
			jQuery.ImageBox.loadImage(
				imageSrc,
				captionText,
				pageSize,
				totalImages,
				iteration,
				prevImage,
				nextImage
			);
		}
		return false;
	},

	loadImage : function(imageSrc, captiontext, pageSize, totalImages, iteration, prevImage, nextImage)
	{
		jQuery('#ImageBoxCurrentImage').remove();
		prevImageEl = jQuery('#ImageBoxPrevImage');
		prevImageEl.hide();
		nextImageEl = jQuery('#ImageBoxNextImage');
		nextImageEl.hide();
		loader = jQuery('#ImageBoxLoader');
		container = jQuery('#ImageBoxContainer');
		outerContainer = jQuery('#ImageBoxOuterContainer');
		captionEl = jQuery('#ImageBoxCaption').css('visibility', 'hidden');
		//Avoid safari Bug :
		//jQuery('#ImageBoxCaptionText').html(captionText);
		jQuery('#ImageBoxCaptionText').html("<div id='ImageBoxCaptextcontainer' style='padding-right:4px'>"+captionText+"</div>");
		jQuery.ImageBox.animationInProgress = true;
		if (totalImages && jQuery.ImageBox.options.showTextImage)
			jQuery('#ImageBoxCaptionImages').html(
				jQuery.ImageBox.options.textImage
				+ ' ' + (iteration + 1) + ' '
				+ jQuery.ImageBox.options.textImageFrom
				+ ' ' + totalImages
			);
		if (prevImage) {
			prevImageEl.get(0).onclick = function()
			{
				this.blur();
				jQuery.ImageBox.start(null, prevImage);
				return false;
			};
		}
		if (nextImage) {
			nextImageEl.get(0).onclick =function()
			{
				this.blur();
				jQuery.ImageBox.start(null, nextImage);
				return false;
			};
		}
		loader.show();
		containerSize = jQuery.iUtil.getSize(container.get(0));
		containerW = Math.max(containerSize.wb, loader.get(0).width + jQuery.ImageBox.options.border * 2);
		containerH = Math.max(containerSize.hb, loader.get(0).height + jQuery.ImageBox.options.border * 2);
		loader
			.css(
				{
					left	: (containerW - loader.get(0).width)/2 + 'px',
					top		: (containerH - loader.get(0).height)/2 + 'px'
				}
			);
		container
			.css(
				{
					width	: containerW + 'px',
					height	: containerH + 'px'
				}
			)
			.show();
		clientSize = jQuery.iUtil.getClient();
		outerContainer
			.css('top', pageSize.t +  (clientSize.h / 15) + 'px');
		if (outerContainer.css('display') == 'none') {
			outerContainer
				.show()
				.fadeIn(
					jQuery.ImageBox.options.fadeDuration
				);
		}
		imageEl = new Image;
		// avoid Safari bug :
		imageEl.id='ImageBoxCurrentImage';
		imageEl.onload = function(){

				if (jQuery.browser.safari) {
					containerW = jQImageBox_imageEl.width + jQuery.ImageBox.options.border * 2;
					containerH = jQImageBox_imageEl.height + jQuery.ImageBox.options.border * 2;
				}

				containerW = imageEl.width + jQuery.ImageBox.options.border * 2;
				containerH = imageEl.height + jQuery.ImageBox.options.border * 2;

				//min width :
				if (jQuery.ImageBox.minWidth > containerW ) {
					containerW = jQuery.ImageBox.minWidth + jQuery.ImageBox.options.border * 2;
				}

				loader.hide();
				container.animate(
					{
						height		: containerH
					},
					containerSize.hb != containerH ? jQuery.ImageBox.options.fadeDuration : 1,
					function()
					{
						container.animate(
							{
								width		: containerW
							},
							containerSize.wb != containerW ? jQuery.ImageBox.options.fadeDuration : 1,
							function()
							{


								if (jQuery.browser.safari) {
									var imgtoprepend="<img src='"+jQImageBox_imageEl.src+"' id='imgboxtmp' style='display:none' >";
									container.prepend(imgtoprepend);
									var jqi_width = jQuery('#imgboxtmp').width();
									while(jqi_width==0){
										jqi_width = jQuery('#imgboxtmp').width();
									}
									jqi_height = jQuery('#imgboxtmp').height();
									jQuery('#imgboxtmp').remove();

									jqi_width = jqi_width - 2* jQuery.ImageBox.options.border;

									var imgtoprepend="<img src='"+jQImageBox_imageEl.src+"' id='"+jQImageBox_imageEl.id+"' >";
									container.prepend(imgtoprepend); //pour safari...

								}
								else{
									container.prepend(imageEl);
								}


								jQuery('#ImageBoxCurrentImage')
									.css(
										{
											position	: 'absolute',
											display     : 'none',
											left		: (containerW-jQuery('#ImageBoxCurrentImage').width())/2+'px', //jQuery.ImageBox.options.border + 'px',
											top			: jQuery.ImageBox.options.border + 'px'
										}
									)
									.fadeIn(
										jQuery.ImageBox.options.fadeDuration,
										function()
										{
											captionSize = jQuery.iUtil.getSize(captionEl.get(0));

											//min width :
											if (jQuery.ImageBox.minWidth > containerW ) {
												 containerW = jQuery.ImageBox.minWidth;
											}

											if (prevImage) {
												prevImageEl
													.css(
														{
															left	: jQuery.ImageBox.options.border + 'px',
															top		: jQuery.ImageBox.options.border + 'px',
															width	: containerW/2 ,//- jQuery.ImageBox.options.border * 3 + 'px',
															height	: containerH - jQuery.ImageBox.options.border * 2 + 'px',
															opacity : '.4'
														}
													)
													.show();
											}
											if (nextImage) {
												nextImageEl
													.css(
														{
															left	: containerW/2 + jQuery.ImageBox.options.border * 2 + 1 + 'px',
															top		: jQuery.ImageBox.options.border + 'px',
															width	: containerW/2 - jQuery.ImageBox.options.border * 3 + 'px',
															height	: containerH - jQuery.ImageBox.options.border * 2 + 'px',
															opacity : '.4'
														}
													)
													.show();
											}

											//jQuery("#ImageBoxCaptextcontainer").css('padding-top',jQuery("#ImageBoxClose").height());

											captionEl
												.css(
													{
														width		: containerW + 'px',
														top			: - captionSize.hb + 'px',
														visibility	: 'visible'
													}
												)
												.animate(
													{
														top		: -1
													},
													jQuery.ImageBox.options.fadeDuration,
													function()
													{
														jQuery.ImageBox.animationInProgress = false;
													}
												);
										}
									);
							}
						);
					}
				);
			}
		imageEl.src = imageSrc;

		jQImageBox_imageEl = imageEl;
	},

	hideImage : function()
	{
		jQuery('#ImageBoxCurrentImage').remove();
		//jQuery('#ImageBoxCurrentImage').hide();
		jQuery('#ImageBoxOuterContainer').hide();
		jQuery('#ImageBoxCaption').css('visibility', 'hidden');
		jQuery('#ImageBoxOverlay').fadeTo(
			300,
			0,
			function(){
				jQuery(this).hide();
				if (jQuery.browser.msie) {
					jQuery('#ImageBoxIframe').hide();
				}
			}
		);
		jQuery('#ImageBoxPrevImage').get(0).onclick = null;
		jQuery('#ImageBoxNextImage').get(0).onclick = null;
		jQuery.ImageBox.currentRel = null;
		jQuery.ImageBox.opened = false;
		jQuery.ImageBox.animationInProgress = false;
		return false;
	}
};
$(document).ready(function(){
	$.ImageBox.init();	
});$(document).ready(function(){
	$(".rt-mcms-article a").each(function(i){
	  var strPlayer = '';
	  if (this.href.indexOf('.mp3') != -1){  	
		$(this).css('display','none');
		strPlayer = '<object width="200" height="32" data="/img/audio.swf?son='+this.href+'" type="application/x-shockwave-flash">';
		strPlayer += '<param value="/img/audio.swf?son='+this.href+'" name="movie" />';
		strPlayer += '<param value="transparent" name="wmode" />';
		strPlayer += '</object>';
		$(this).after(strPlayer);
	  }else if (this.href.indexOf('.flv') != -1){  	
		$(this).css('display','none');
		strPlayer = '<object type="application/x-shockwave-flash" data="/img/video.swf" width="320" height="240">';
		strPlayer += '<param name="movie" value="/img/video.swf" />';
		strPlayer += '<param name="FlashVars" value="flv='+this.href+'&showstop=1&showvolume=1&showtime=1&startimage=/img/startimage.jpg&showfullscreen=0&bgcolor1=6FA9D9&bgcolor2=26679B&playercolor=27689C" />';
		strPlayer += '<param value="transparent" name="wmode" />';
		strPlayer += '</object>';		
		$(this).after(strPlayer);
	  }else if (this.href.indexOf('.divx') != -1){
	    $(this).css('display','none');
	    strPlayer = '<object classid="clsid:67DABFBF-D0AB-41fa-9C46-CC0F21721616" width="320" height="260" codebase="http://go.divx.com/plugin/DivXBrowserPlugin.cab">';
		strPlayer += '<param name="minVersion" value="1.3.0" />';
		strPlayer += '<param name="autoPlay" value="false" />'; 
		strPlayer += '<param name="src" value="'+this.href+'" />'; 
		strPlayer += '<embed type="video/divx" minVersion="1.3.0" src="'+this.href+'" width="320" height="260" autoPlay="false"  pluginspage="http://go.divx.com/plugin/download/"></embed></object>';
		strPlayer += '<br>Pas de vid&eacute;o ? -> <a style="text-decoration: underline;" href="http://download.divx.com/player/DivXWebPlayerInstaller.exe">Windows</a> or <a style="text-decoration: underline;" href="http://download.divx.com/player/DivXWebPlayer.dmg">Mac</a>';
	  	$(this).after(strPlayer);
	  }
	});
});


 
  




$(document).ready(function(){
	var tmpA =  window.location.href.split('#');
	var tmpB = tmpA[0].split('?');
	var path = tmpB[0];
	$('.menu a').each(function(i){
		if (this.href == path || this.href == path+"index.wee") $(this).addClass('selected');
	});
});// ===================================================================
// Author: HSINI Karim (karim@radartech.net)
// Debugger: MARCEAU Julien (julien@radartech.net)
// Last modified: 11/01/2005
// Version 1.3
// + Ajout de la methode checkCheckTextIsEqual 
// + Ajout de la methode checkCheckTextIsTime 
// ===================================================================
// contructeur
function validerForm(nomform) {
	// variable
	this.nomform=nomform;
	this.defaultcolorbackground="#ffffff";
	this.defaultcolorfont="#000000";
	this.colorbackground="";
	this.colorfont="";
	this.entete="";
	this.msg="";
	this.tabcheck=new Array();	
	this.taberreur=new Array();	
	// Method mappings
	this.checkTextIsInt = validerForm_checkTextIsInt;
	this.checkTextIsFilled = validerForm_checkTextIsFilled;
	this.checkTextLengthIsBeetween = validerForm_checkTextLengthIsBeetween;
	this.checkTextIsDate = validerForm_checkTextIsDate;
	this.checkTextIsMail = validerForm_checkTextIsMail;
	this.checkTextIsDepartement = validerForm_checkTextIsDepartement;
	this.checkTextIsInseeCode = validerForm_checkTextIsInseeCode;
	this.checkRadioIsChecked = validerForm_checkRadioIsChecked;
	this.checkCheckboxIsChecked = validerForm_checkCheckboxIsChecked;
	this.checkTextIsEqual = validerForm_checkTextIsEqual;
	this.checkTextIsTime = validerForm_checkTextIsTime;

	this.submitCheck = validerForm_submitCheck;
}

// verification de champ type="text" si entier
function validerForm_checkTextIsInt(name,message) {
	this.tabcheck[this.tabcheck.length] = name;
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	var reg = /^[0-9]*$/;
	res = reg.test(elementtocheck.value);
	if(res==false) {
		this.msg+=message+"\n";
		this.taberreur[this.taberreur.length] = name;
	}
}
// verification de champ type="text" obligatoire
function validerForm_checkTextIsFilled(name,message) {
	this.tabcheck[this.tabcheck.length] = name;
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	if(elementtocheck.value=="") {
		this.msg+=message+"\n";
		this.taberreur[this.taberreur.length] = name;
	}
}
// verification longueur de la chaine
function validerForm_checkTextLengthIsBeetween(name,message,mini,maxi) {
	this.tabcheck[this.tabcheck.length] = name;
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	if(elementtocheck.value!="") {
		if(elementtocheck.value.length > maxi || elementtocheck.value.length < mini) {
			this.msg+=message+"\n";
			this.taberreur[this.taberreur.length] = name;
		}
	}
}
// Verification date
function validerForm_checkTextIsDate(name,message) {
	this.tabcheck[this.tabcheck.length] = name;
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	var reg = /^([0-9]{1,2})[ -\/]([0-9]{1,2})[ -\/]([0-9]{4})$/;
	res = reg.test(elementtocheck.value);
	if(res==false) {
		this.msg+=message+"\n";
		this.taberreur[this.taberreur.length] = name;
	} else {
		mois=((RegExp.$2)*1.0)-1;
		var testdate = new Date(RegExp.$3, mois, RegExp.$1);
		resultat = ((testdate.getFullYear() == RegExp.$3) && (testdate.getMonth() == mois) && (testdate.getDate() == RegExp.$1));
		if (!resultat) {
			this.msg+=message+"\n";
			this.taberreur[this.taberreur.length] = name;
		}
	}
}
// Verification mail
function validerForm_checkTextIsMail(name,message) {
	this.tabcheck[this.tabcheck.length] = name;
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	if(elementtocheck.value!="") {
		var reg = /[^ ]+@[^ ]+\.[^ ]+/;
		res = reg.test(elementtocheck.value);
		if(res==false) {
			this.msg+=message+"\n";
			this.taberreur[this.taberreur.length] = name;
		}
	}
}
// Verification departement francais
function validerForm_checkTextIsDepartement(name,message) {
	this.tabcheck[this.tabcheck.length] = name;
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	if(elementtocheck.value!="") {
		var reg = /^[0-9][0-9ABab]$/;
		res = reg.test(elementtocheck.value);
		if(res==false) {
			this.msg+=message+"\n";
			this.taberreur[this.taberreur.length] = name;
		}
	}
}
// Verification departement francais
function validerForm_checkTextIsInseeCode(name,message) {
	this.tabcheck[this.tabcheck.length] = name;
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	if(elementtocheck.value!="") {
		var reg = /^[12][0-9]{12}$/;
		res = reg.test(elementtocheck.value);
		if(res==false) {
			this.msg+=message+"\n";
			this.taberreur[this.taberreur.length] = name;
		}
	}
}
// Verification 1 bouton radio coche
function validerForm_checkRadioIsChecked(name,message) {
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	tmpChk = false;
	for(j=0;j<elementtocheck.length;j++){
		if (elementtocheck[j].checked == true){
			tmpChk = true;
		}
	}
	if (tmpChk == false){
		this.msg+=message+"\n";
	}
}
// Verification checkbox coche
function validerForm_checkCheckboxIsChecked(name,message) {
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	if (elementtocheck.checked != true){
		this.msg+=message+"\n";
	}
}
// Verification champ identique a un autre champ du meme formulaire
function validerForm_checkTextIsEqual(name1,name2,message) {
	this.tabcheck[this.tabcheck.length] = name1;
	this.tabcheck[this.tabcheck.length] = name2;
	var elementtocheck1=eval("document.forms['"+this.nomform+"']."+name1);
	var elementtocheck2=eval("document.forms['"+this.nomform+"']."+name2);
	if (elementtocheck1.value != elementtocheck2.value){
		this.msg+=message+"\n";
		this.taberreur[this.taberreur.length] = name1;
		this.taberreur[this.taberreur.length] = name2;
	}
}
// Verification champ de la forme HH:MM:SS
function validerForm_checkTextIsTime(name,message) {
	this.tabcheck[this.tabcheck.length] = name;
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	var reg = /^([0-9]{1,2})[ -:]([0-9]{1,2})[ -:]([0-9]{1,2})$/;
	res = reg.test(elementtocheck.value);
	if(res==false) {
		this.msg+=message+"\n";
		this.taberreur[this.taberreur.length] = name;
	}
}



// Envoi du formulaire
function validerForm_submitCheck() {
	if(this.msg!="") {
		if(this.colorbackground!="" || this.colorfont!="") {
			for(i=0;i<this.tabcheck.length;i++){
				tmp = eval("document.forms['"+this.nomform+"']."+this.tabcheck[i]);
				tmp.style.backgroundColor=this.defaultcolorbackground;
				tmp.style.color=this.defaultcolorfont;
			}
			for(i=0;i<this.taberreur.length;i++){
				tmp = eval("document.forms['"+this.nomform+"']."+this.taberreur[i]);
				tmp.style.backgroundColor=this.colorbackground;
				tmp.style.color=this.colorfont;
			}
		}
		this.msg=this.entete+this.msg;
		window.alert(this.msg);
		return false;
	} else {
		//eval("document.forms['"+this.nomform+"'].submit();");
		return true;
	}
}	function envoyer(){
		
		var testform = new validerForm("formContact");
		
		// couleurs
		testform.colorbackground="#CCCCCC";
		testform.colorfont="#FFFFFF";
					
		testform.entete="Les champs suivants doivent être renseignés :\n\n";
 
		// coordonnées internautes
		testform.checkTextIsFilled("nom", "Votre nom");
		testform.checkTextIsFilled("prenom", "Votre prénom");
		testform.checkTextIsFilled("mail", "Votre email");
		testform.checkTextIsMail("mail", "Votre email");
		testform.checkTextIsFilled("telephone", "Votre téléphone");
		testform.checkTextIsFilled("message", "Votre message");
		
		testform.checkTextIsFilled("captcha", "Le code antispam");
		
		return testform.submitCheck();
	}		//Reflection.defaultHeight = .25;
		//Reflection.defaultOpacity = .35;
		$(document).ready(function(){
			$('.header').css('position','absolute');// Pour bug IE de position abs
			/*
			$('.thickbox img').each(function(i){
				Reflection.add(this);
			});
			*/
		});