var Util =
{
	namespace : function(name)
	{
		if ( !name || !name.length )
		{
			return null;
		}

		var current = window;
		var names = name.split(".");
		for ( var i = 0 ; i < names.length ; i++ )
		{
			current[names[i]] = current[names[i]] || {};
			current = current[names[i]];
		}
	},

	extend : function(obj, properties)
	{
		if ( !obj )
		{
			return;
		}
		
		for ( property in properties )
		{
			obj[property] = properties[property];
		}
	},
	
	trim : function(s)
	{
		if ( typeof s != "string" )
		{
			return s;	
		} 

		return s.replace(/^(\s*)([\W\w]*)(\b\s*$)/, '$2');
	},

	intToString : function(v, nbDigit)
	{
		var s 	= '' + v;
		if ( v < 0 )
		{
			return s;
		}
		
		var l = nbDigit - s.length;
		if ( l <= 0 )
		{
			return s;
		}
		
		// insert '0'
		for ( var i = 0; i < l; i++, s = '0' + s );

		return s;
	},
	
	checkEmail: function(val)
	{
		var usr = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
		var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
		var regex = "^"+usr+"\@"+domain+"$";
		var myrxp = new RegExp(regex);
	
		return(myrxp.test(val));
	},
	
	addWindowOnload: function(func)
	{
		var windowonload = window.onload;
		
		window.onload = function()
		{
			if( windowonload != null )
			{
				windowonload();
			}	
			
			func();
		}
	},
	
	launchWhenBWisLoaded: function( bw, func)
	{
		if( typeof bw == 'string' )
		{
			bw = document.getElementById(bw);		
		}
		
		if( !bw.selfclassName )
		{
			setTimeout( function() { Util.util.launchWhenBWisLoaded( bw, func); }, 500);
			return;
		}
		
		func();
	}
};

//--------------------------------------------------------------------------->

Util.namespace('Util.images');
Util.images =
{
	toPNG: function(img)
	{
		img = EL(img);
		
		var src = img.getAttribute("source");
		
		if( Util.net.Browser.Instance.isMSIE )
		{
			img.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + src + ')';
			img.src=Util.contextPath + 'img/none.gif';
		}
		else
		{
			img.src = src;
		}
	},
	
	changePNG: function(img, src)
	{
		img = EL(img);
		
		src = Util.contextPath + src;
		
		if( Util.net.Browser.Instance.isMSIE )
		{
			img.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + src + ')';
		}
		else
		{
			img.src = src;
		}
	},
	
	createPNG : function(url, map, width, height)
	{
		
		
		var img = document.createElement('img');
		
		if( map != null )
		{
			img.useMap = "#" + map;
			img.border = "0";
		}
		
		if( Util.net.Browser.Instance.isMSIE )
		{
			img.src=Util.contextPath + 'img/none.gif';
			
			img.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + url + ')';
			
			
		}	
		else
		{
			img.src=url;
		}
		
		if( width != null )
		{
			img.style.width = width;
		}

		if( height != null )
		{
			img.style.height = height;
		}
		
		return img;
	},
	
	renderPNG : function(url, id, parent, map, width, height)
	{
		
		url = Util.contextPath + url;
		
		if( parent != null )
		{
			parent = EL(parent);
			
			var img = Util.images.createPNG(url, map, width, height);
			
			parent.appendChild(img);
			
					
			if( id != null )
			{
				img.id = id;	
			}
			
		}
		else
		{
			var s = "<img ";
			
			if( id != null )
			{
				s += 'id="' + id + '" ';	
			}
			if( Util.net.Browser.Instance.isMSIE )
			{
				s += 'src="' + Util.contextPath + 'img/none.gif"';
				s += ' style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + url + ')"';
			}	
			else
			{
				s += 'src="' + url + '"';
			}
			
			if( map != null )
			{
				s += ' border="0" usemap="#' + map + '"';
				
				
			}
			
			
			s += ">";
			
						
			document.write(s);
		}
	},
	
	changeOpacity: function(id, opacity)
	{
		if( EL(id) == null )
		{
			return;	
		}
		
		var object = EL(id).style; 
		object.opacity = (opacity / 100);
		object.MozOpacity = (opacity / 100);
		object.filter = "alpha(opacity=" + opacity + ")";
	},
	
	fading: function(id,opacStart,opacEnd,millisec)
	{
		if( EL(id) == null )
		{
			return;	
		}
		
		//speed for each frame
		var speed = Math.round(millisec / 100);
		var timer = 0;
		
		//determine the direction for the blending, if start and end are the same nothing happens
		if(opacStart > opacEnd)
		{
			for(i = opacStart; i >= opacEnd; i--)
			{
				setTimeout("Util.util.changeOpacity('" + id + "'," + i + " )",(timer * speed));
				timer++;
			}
		}
		else if(opacStart < opacEnd)
		{
			for(i = opacStart; i <= opacEnd; i++)
			{
				setTimeout("Util.util.changeOpacity('" + id + "'," + i + " )",(timer * speed));
				timer++;
			}
		}
	}
};

//--------------------------------------------------------------------------->

Util.namespace('Util.DOM');
Util.DOM =
{
	toElement : function(e)
	{
		if ( typeof e == "string" )
		{
			return document.getElementById(e);
		}

		return e;
	},

	getClassNames : function(element)
	{
		return EL(element).className.split(/\s+/);
	},

	updateClassName : function(element, classNames)
	{
		EL(element).className = classNames.join(' ');
	},
	
	hasClassName : function(element, className)
	{
		var classes = Util.DOM.getClassNames(element);
		for ( var i = 0 ; i < classes.length ; i++ )
		{
			if ( classes[i] == className )
			{
				return true;
			}
		}

		return false;
	},
	
	addClassName : function(element, className, multiply)
	{
		if ( Util.DOM.hasClassName(element, className) )
		{
			return;
		}
		
		var classes = Util.DOM.getClassNames(element);

		if ( multiply )
		{
			var l = classes.length;
			for ( var i = 0 ; i < l ; i++ )
			{
				classes.push(classes[i] + '-' + className);
			}
		}

		classes.push(className);
		Util.DOM.updateClassName(element, classes);
	},

	removeClassName : function(element, className, multiply)
	{
		var classes = Util.DOM.getClassNames(element);
		var newClasses 	= new Array();
		var reg = new RegExp('-?(' + className + '-|' + className + '$)');

		var i, j;
		for ( i = 0, j = 0; i < classes.length ; i++ )
		{
			if ( !multiply )
			{	
				if ( classes[i]	!= className )
				{
					newClasses[j++] = classes[i];
				}
			}
			else
			{
				if ( !reg.test(classes[i]) )
				{
					newClasses[j++] = classes[i];
				}
			}
		}

		Util.DOM.updateClassName(element, newClasses);
	}
};
var EL = Util.DOM.toElement;

//--------------------------------------------------------------------------->

Util.namespace("Util.net");
Util.net.Browser = function()
{
	this.initialize.apply(this, arguments)		
};

Util.net.Browser.prototype = 
{
	navigator : null, 
	platform : null,
	userAgent : null,

	isWin32	: false,
	isLinux	: false,
	isMac	: false,

	isGecko		: false,
	isFirefox 	: false,
	isNetscape 	: false,
	isMSIE		: false,
	isSafari	: false,
	isOpera		: false,
		
	code : null,
	name : null,

	majorVersion 	: 0,
	minorVersion 	: 0,
	minorVersion2 	: 0,
	version		: "",

	/**
	 * The engine inner object
	 */
	_Engine : function()
	{
		/**
		 * The engine code
		 * (Mozilla, Opera, ...) 
		 */
		this.code = navigator.appCodeName;
			
		/**
		 * The engine version : version + platform + ...
		 */
		this.versionString	= navigator.appVersion;
		this.version 		= parseFloat(this.versionString);

		/**
		 * The name of the client that implements this engine.
		 */
		this.clientName	= navigator.appName;
	},

	//-------------------------------------------->
	
	/**
	 * Creates a new declared Browser
	 */
	initialize : function()
	{
		this.navigator	= window.navigator;
		this.Engine 	= new this._Engine();
		this.platform	= navigator.platform;
		this.userAgent	= navigator.userAgent;

		this.isWin32	= (this.platform.indexOf("Win32") >= 0);
		this.isLinux	= (this.platform.indexOf("Linux") >= 0);
		this.isMac	= (this.platform.indexOf("Mac") >= 0);

		this.isGecko 	= (this.userAgent.indexOf("Gecko/") >= 0);
		this.isFirefox 	= (this.userAgent.indexOf("Firefox/") >= 0);
		this.isNetscape = (this.userAgent.indexOf("Netscape/") >= 0);
		this.isMSIE	= (this.userAgent.indexOf("MSIE") >= 0);
		this.isSafari	= (this.userAgent.indexOf("Safari/") >= 0);
		this.isOpera	= (this.userAgent.indexOf("Opera") >= 0);
		if( this.isOpera )
		{
			this.isMSIE = false;
		}
		
		this.code = this.Engine.code;
		if ( this.isGecko )	this.code = "Gecko";
		if ( this.isFirefox ) 	this.code = "Firefox";
		if ( this.isNetscape ) 	this.code = "Netscape";
		if ( this.isMSIE )	this.code = "MSIE";
		if ( this.isSafari )	this.code = "Safari";
		if ( this.isOpera )	this.code = "Opera";
		
		this.name = this.Engine.clientName;
		if ( this.isFirefox ) 	this.name = "Mozilla Firefox";
		if ( this.isSafari ) 	this.name = "Safari"
		if ( this.isOpera ) 	this.name = "Opera"

		/**
		 * The version of the browser
		 */
		this.version = "" + this.Engine.version;

		//------------------------------------
		// Detect the version of the browser 
		//------------------------------------
		
		if ( this.code )
		{
			var reg = new RegExp(this.code + '/?\\s?;?([\\d.]*)');
			var res = this.userAgent.match(reg);
			
			if ( res.length == 2 )
			{
				this.version = res[1];
				
				res = this.version.match(/\d+/g);
				this.majorVersion	= (res[0] ? parseInt(res[0]) : 0);
				this.minorVersion  	= (res[1] ? parseInt(res[1]) : 0);
				this.minorVersion2	= (res[2] ? parseInt(res[2]) : 0);
			}
		}
	} 
};
Util.net.Browser.Instance = new Util.net.Browser();

//--------------------------------------------------------------------------->

Util.namespace('Util.CSS');
Util.CSS =
{
	appendNavigatorInformations : function ()
	{
		var list = document.getElementsByTagName("html");
		if ( list != null && list.length > 0 )
		{
			// presume that only one html tag has been declared 
			var html = list.item(0);
			
			// get the browser
			var browser = Util.net.Browser.Instance;
			var classNames = Util.DOM.getClassNames(html);

			classNames.push(browser.isGecko 	? "Gecko" 	: "NotGecko");
			classNames.push(browser.isFirefox 	? "Firefox" 	: "NotFirefox");
			classNames.push(browser.isNetscape 	? "Netscape" 	: "NotNetscape");
			classNames.push(browser.isSafari 	? "Safari" 	: "NotSafari");
			classNames.push(browser.isOpera 	? "Opera" 	: "NotOpera");
			classNames.push(browser.isMSIE 		? "MSIE" 	: "NotMSIE");

			Util.DOM.updateClassName(html, classNames);
		}
	}
};
Util.CSS.appendNavigatorInformations();

//--------------------------------------------------------------------------->

Util.namespace("Util.CSS.events");
Util.CSS.events = 
{
	overOn : function(element, multiply)
	{
		Util.DOM.addClassName(element, "over", multiply);
	},

	outOf : function(element, multiply)
	{
		Util.DOM.removeClassName(element, "over", multiply);
	},

	clickOn : function(element, multiply, toggleSelect)
	{
		if ( Util.DOM.hasClassName(element, "clicked") )
		{
			Util.DOM.removeClassName(element, "clicked", multiply);
		}
		else
		{
			Util.DOM.addClassName(element, "clicked", multiply);
		}

		if ( toggleSelect )
		{
			Util.CSS.events.toggleSelect();
		}
	},

	toggleSelect : function()
	{
		var selects = document.getElementsByTagName('select');
		
		if( selects.length == 0 )
		{
			return;	
		}
		
		var visibility = (selects[0].style.visibility == 'hidden') ? 'visible' : 'hidden';
		
		for(var i = 0; i < selects.length ; i ++)
		{
			selects.item(i).style.visibility = visibility;	
		}
	}
};

//--------------------------------------------------------------------------->
Util.namespace('Util.form');
Util.form =
{
	isEmpty: function(element)
	{
		var value = Util.form.getFieldValue(element);
		
		if( value == null )
		{
			return true;	
		}
		
		return false;
	},
	
	checkDate: function(value, format)
	{
		if( value == null || value.length == 0 || value.split('/').length != 3 )
		{
			return false;
		}
		
		var dayPart;
		var monthPart;
		var yearPart;
		
		if( format == null || format.split('/').length != 3 )
		{
			format = 'dd/mm/yyyy';
		}
		
		format          = format.toLowerCase();		
		var formatParts = format.split('/');
				
		function identifyPart(parts, pattern)
		{
			for(var i = 0; i < parts.length ; i ++ )
			{
				if( formatParts[i].indexOf(pattern) > -1 )
				{
					return {index: i, length: formatParts[i].length};
				}												
			}
			
			return null;
		}
		
		dayPart    = identifyPart(formatParts, 'dd'), 
		monthPart  = identifyPart(formatParts, 'mm');
		yearPart   = identifyPart(formatParts, 'yy');							
		
		var valueParts = value.split('/');			
		var day        = valueParts[dayPart.index];
		var month      = valueParts[monthPart.index];
		var year       = valueParts[yearPart.index];
		
		if( day.length != dayPart.length || month.length != monthPart.length || year.length != yearPart.length )
		{
			return false;
		}
		
		var date        = new Date(year, parseInt(month, 10) - 1, day);	
		var yearCompare = ( year.length == 2 ) ? date.getYear() : date.getFullYear(); 
		
		if( date.getDate() != parseInt(day, 10) || date.getMonth() != (parseInt(month, 10) - 1) || yearCompare != parseInt(year, 10) )
		{
			return false;
		}
		
		return true;
	},
	
	getFieldValue: function(element)
	{
		element = EL(element);
		
		var value;
		
		if( element == null )
		{
			return null;
		}	
		
		switch(element.type)
		{
			case 'password':
			case 'textarea':
			case 'text':
			{
				value = element.value;
				break;
			}
			case 'select-one':
			{
				value = Util.form.select.getSelectedValue(element);
				break;
			}
			default:
				if( typeof element == 'object' )
				{
					for(var i = 0; i < element.length ; i ++ )
					{
						if( element[i].checked )
						{
							value = element[i].value;	
						}
					}
				}
				break;
		}
		
		if( value == null || value.length == 0 )
		{
			return null;	
		}
		
		return value;
	}
};

Util.namespace('Util.form.select');
Util.form.select =
{
	getSelectedOption : function (element)
	{
		return EL(element).options[EL(element).selectedIndex];
	},
	
	getSelectedValue : function (element)
	{
		return Util.form.select.getSelectedOption(element).value;
	},
	
	getSelectedText : function (element)
	{
		return Util.form.select.getSelectedOption(element).text;
	},
	
	setSelectedValue : function (element, value)
	{
		for(var i = 0; i < EL(element).options.length ; i ++)
		{
			var opt = EL(element).options[i];
			
			if( opt.value == value )
			{
				EL(element).selectedIndex = i;
				break;
			}
		}	
	},

	clear : function(element)
	{
		element = EL(element);
		while ( element.firstChild != null )
		{
			element.removeChild( element.firstChild );
		}
	},

	appendOption : function(element, value, text)
	{
		element = EL(element);

		var o = document.createElement ("option");
		o.setAttribute("value", value);
		o.appendChild( document.createTextNode(text) );

		element.appendChild(o);
	},
	
	appendDisabledOption : function(element, text)
	{
		element = EL(element);

		var o = document.createElement ("optgroup");
		o.setAttribute("label", text);
		o.className = "optdisabled";

		element.appendChild(o);
	},
	
	appendOptions : function (element, data, clear)
	{
		element = EL(element);
		
		if( clear )
		{
			Util.form.select.clear(element);
		}
		
		for(value in data)
		{
			Util.form.select.appendOption(element, value, data[value]);
		}	
	},
	
	
	
	appendDisabledOptions : function (element, data, clear, disabledList)
	{
		element = EL(element);
		
		if( clear )
		{
			Util.form.select.clear(element);
		}
		
		for(value in data)
		{
			if( disabledList[value] )
			{
				Util.form.select.appendDisabledOption(element, data[value]);
			}
			else
			{
				Util.form.select.appendOption(element, value, data[value]);
			}
		}	
	}
};


	var loadingImage = null;
	var loadinginprogress = false;
	var slidesList = null;
	var currentSlide = 0;
	var slidesPath = null;
	var currentImage = null;
	var resizeX = 0;
	var resizeY = 0;
	
	
	//Util.addWindowOnload( function() { renderImagePreview(); } );
	
	//renderImagePreview();
	
	function renderImagePreview()
	{
		
		var cache = document.createElement('div');
		cache.id = "cache";
		
		var img = document.createElement('div');
		img.id = "imgpreview";
				
		var loading = document.createElement('div');
		loading.id = "loading";
		
		document.body.appendChild(cache);
		document.body.appendChild(img);
		document.body.appendChild(loading);
		
		return loading;
	}
	
	
	function preloadImages(list, path, prefix)
	{
		for(a in list)
		{
			var c = list[a];
			
			var i = document.createElement('img');
			
			var s = Util.contextPath + path + c;
			
			if( prefix )
			{
				s = prefix + s;
			}	
			
			i.src = s;
		}
	}
	
	
	
	function preloadImage(url, func)
	{
		if( loadingImage == null )
		{
			loadingImage =  document.createElement('img');
			loadingImage.src = url;
			//loadingImage.onclick= function() { hidePhoto(); };
		}
		
		if( loadingImage.complete && loadingImage.width > 0 )
		{
			func(loadingImage);
			return;
		}
		
		setTimeout( function() { preloadImage(url, func); }, 200);
	}
	
	function showPhoto(photo, slides, path, start, resizex, resizey)
	{
		
		resizeX = resizex;
		resizeY = resizey;
		
		
		/*
		if( slides != null && slidesList == null)
		{
			slidesList = slides;
			currentSlide = 0;
			slidesPath = path;
		}
		else if( slides == null )
		{
			slidesList = null;
		}
		*/
		
		if( slides != null )
		{
			slidesList = slides;
			if( start )
			{
				currentSlide = 0;
			}
			
			slidesPath = path;
		}
		else if( slides == null )
		{
			slidesList = null;
		}
		
		if( loadinginprogress )
		{
			return;
		}
		
				
		loadinginprogress = true;			
		
		var img = EL(photo).src;
		
				
		var url;
		
		var i = img.indexOf('thumb.jpg?');

		if( i == -1 )
		{
			url = img;
		}
		else
		{
			i = img.indexOf('i=');

			if( i> -1 )
			{
				url = img.substring(i + 2);
			}
		}			
		
		if( resizeX > 0 && resizeY > 0 )
		{
			var filename = "thumb.jpg?w=" + resizeX + "&h=" + resizeY + "&i=" + url;	
			
			url = Util.contextPath + filename;
		}
		else
		{
			url = Util.contextPath + url;
		}
		
		showLoading();
		
		preloadImage(url, function(im){ showZoomPhoto(im); });
	}
	
	function showLoading(father)
	{
		var l = document.createElement('img');
		l.src = Util.contextPath + 'img/loading.gif';
		l.id = 'loadinggif';
		l.style.marginBottom ='10px';
		
		var load;
		
		if( father != null )
		{
			load = document.createElement('div');
			load.id = "loading2";
			father.appendChild(load);
		}
		else
		{
			load = EL('loading');
			
			if( load == null )
			{
				load = renderImagePreview();
			}
		}
		
						
		load.innerHTML = '<br />Chargement en cours<br /><br />';
		load.style.display = 'block';
		load.appendChild(l);
		load.onclick = function()
		{
			this.style.display = 'none';
			loadinginprogress = false;
			if( loadingImage != null && loadingImage.parentNode != null )
			{
				loadingImage.parentNode.removeChild(loadingImage);
			}
			loadingImage = null;
		}	
		
		
	}
	
	function showZoomPhoto(im, stop)
	{
		
		
		var width = document.documentElement.clientWidth;
		var height = document.documentElement.clientHeight;
		var preview = EL('imgpreview');

		if( Util.net.Browser.Instance.isOpera )
		{
			height =hauteur_fenetre();
			width = largeur_fenetre()
		}
		
			
		EL('loading').style.display = 'none';
		EL('site').className = 'opac';
		EL('body').style.overflow = 'hidden';
		
		EL('body').style.height = height + 'px';
		
		if( !Util.net.Browser.Instance.isMSIE )
		{
			EL('cache').style.width = (width + 20) + 'px';
			EL('cache').style.height = (height + 20) + 'px';
		}
		else
		{
			EL('cache').style.width = width + 'px';
			EL('cache').style.height = (height+10) + 'px';
		}

		
		

		if( slidesList != null && slidesList.length > 1 )
		{
			var imHeight = 470;
			var imWidth = 460;
		}
		else
		{
			var imWidth  = im.width;
			var imHeight = im.height + 20;
		}
			
		
				
		preview.style.height = (imHeight + 0) + 'px';
		
		if( !Util.net.Browser.Instance.isMSIE || stop)
		{
			document.body.onresize = function() { showZoomPhoto(im) };
			onresize = function() { showZoomPhoto(im) };
			var s = '';
			
			if( slidesList != null && slidesList.length > 1 )
			{
				s += '<div class="left"><a href="javascript:previousPhoto();">Photo Précédente</a></div>';
			}
			
			//var style = (slidesList != null && slidesList.length > 1 ) ? 'width:' + imWidth + 'px;' : '';
			var style = 'width:' + imWidth + 'px;';
			
			
			if( Util.net.Browser.Instance.isMSIE && slidesList == null )
			{
				style += " margin-top: -8px;"
			}
			
							
			if( slidesList != null && slidesList.length > 1 )
			{
				s += '<div class="right"><a href="javascript:nextPhoto();">Photo Suivante</a></div>';
			}
			
			s += '<div class="middle" style="' + style + '"><a href="javascript:hidePhoto();">Fermer</a></div>';
			
			var links = document.createElement('div');
			links.id = 'previewlinks';
			links.innerHTML = s;
			links.style.width = imWidth + 'px';
			
			preview.appendChild(links);
			
			var o = document.createElement('div');
			o.style.clear = 'both';
			preview.appendChild(o);

			if( !Util.net.Browser.Instance.isOpera )
			{
				EL('cache').style.display = 'inline';
			}
		}
		

		
		
		
		
		
		
		if( Util.net.Browser.Instance.isMSIE )
		{
			if( stop)
			{
				
				preview.style.left = (width - imWidth + 20) / 2 + 'px';
				preview.style.top = ((height/2) -(imHeight / 2) ) + 'px';
				appendImagePreview(preview, im);
				
				preview.style.display = "inline";
			}
			else
			{

				preview.style.left = '-1000px';
			}

		}
		else
		{
			preview.style.left = (width - imWidth + 20) / 2 + 'px';
			preview.style.top = ((height/2) -(imHeight / 2) ) + 'px';
			appendImagePreview(preview, im, stop);
			
			preview.style.display = "inline";
			
		}

		if( !Util.net.Browser.Instance.isFirefox )
		{
			if( stop )
			{
				currentImage = im;
				return;
			}
			
			setTimeout(function() { showZoomPhoto(im, true) }, 50);
			return;
		}		
		
		currentImage = im;
		
		
		
		
		
	}
	
	function appendImagePreview(div, im)
	{
		
		if( slidesList != null && slidesList.length > 1 )
		{
			var pc = document.createElement('div');
			pc.className = 'photocontainer';
			pc.style.width = '450px';
			pc.style.height = '460px';

			var s = '';
			
			var padding = (Util.net.Browser.Instance.isMSIE) ? '5px' : '0px';
			
			s += '<div class="body" style="left: 0px; padding-left: '+padding+';">';
			s += '	<div class="content" id="zoomcontent" style="width: 450px;"><img onclick="hidePhoto();" src="' + im.src + '"></div>';
			s += '</div>';

			pc.innerHTML = s;

			div.style.height = "490px";

			div.appendChild(pc);
		}
		else
		{
			div.appendChild(im);
			im.onclick = function() {hidePhoto();}
		}
		
		
		
		
	}

	function getRelX(elt) { return (elt.x) ? elt.x : getRelPos(elt,"Left"); }
	function getRelY(elt) { return (elt.y) ? elt.y : getRelPos(elt,"Top"); }
	function getRelPos(elt,which)
	{
		return elt["offset" + which];
	}
	
	function previousPhoto()
	{
		if( slidesList.length == 0 || currentImage == null)
		{
			return;
		}
		
		currentSlide --;
		
		if( currentSlide < 0 )
		{
			currentSlide = slidesList.length - 1;
		}
		
		changeImage();

	}
	
	function changeImage()
	{
		var filename = slidesList[currentSlide];
		
		var url;
		
		if( resizeX > 0 && resizeY > 0 )
		{
			filename = "thumb.jpg?w=" + resizeX + "&h=" + resizeY + "&i=" + slidesPath + filename;	
			
			url = Util.contextPath + filename;
		}
		else
		{
			url = Util.contextPath + slidesPath + filename;
		}
		
		
		
		var content = EL('imgpreview');		
		
		content.style.width = (content.clientWidth -10) + 'px';
		
		
		clearPhoto();
		
		loadingImage = null;
		showLoading(EL('imgpreview'));
		
		if( !Util.net.Browser.Instance.isMSIE )
		{
			EL('loading2').style.left = ((content.clientWidth-150)/2 ) + 'px';
		}
		
		EL('loading2').style.top = ((content.clientHeight-83)/2 ) + 'px';
		
		preloadImage(url, function(im){ clearPhoto(); showZoomPhoto(im, true) });
	}
	
	function clearPhoto()
	{
		var content = EL('imgpreview');
		
		while( content.childNodes.length > 0 )
		{
			content.removeChild(content.childNodes[0]);
		}
	}
	
	function nextPhoto()
	{
		if( slidesList.length == 0 || currentImage == null)
		{
			return;
		}

		currentSlide ++;

		if( currentSlide >= slidesList.length )
		{
			currentSlide = 0;
		}

		changeImage();

	}
	
	function hidePhoto()
	{
		loadinginprogress = false;	
		
		var content = EL('imgpreview');
		
		while( content.childNodes.length > 0 )
		{
			content.removeChild(content.childNodes[0]);
		}
		
		loadingImage = null;
		
		
		content.style.display = "none";
		
		EL('site').className = '';
		EL('cache').style.display = 'none';
		EL('body').style.overflow = 'visible';

		document.body.onresize = function(){ return false;};
		onresize = function(){ return false;};

	}

	function largeur_fenetre()
	{
	 if (window.innerWidth) return window.innerWidth;
	 else if (document.body && document.body.offsetWidth) return document.body.offsetWidth;
	 else return 0;
	}

	function hauteur_fenetre()
	{
	 if (window.innerHeight) return window.innerHeight  ;
	 else if (document.body && document.body.offsetHeight) return document.body.offsetHeight;
	 else return 0;
	}
	
	function navOn(n)
	{
		var link = EL(n + '_link');
		var img = EL(n + '_img');
	
	
		if( link == null)
		{
			return;
		}
	
		//Util.images.changePNG(img, 'img/' + n + '_on.png');
		Util.CSS.events.overOn(link);
	}
	
	function navOff(n)
	{
		var link = EL(n + '_link');
		var img = EL(n + '_img');
	
		if( link == null)
		{
			return;
		}
	
		//Util.images.changePNG(img, 'img/' + n + '.png');
		Util.CSS.events.outOf(link);
	
	
	}
