var baseSite="";

function Gallery (url,displayArea,displayTarget,listTarget,titleTarget,descTarget){
	var _url,makeRequester,loadXML,readXML,xml,divDisplay,divList;
	var _urlPicts;
	var bigPict, bigSousDir, bigPrefix, divDesc, divTitle, swfDiv, swf, showID, iframe, iframeDiv;
	var curID, showPict, loadingPict, loadingInt, zoomInterval, imageResize, setZoomMode, centrer, divArea, zoomMode, loadImage, testLoad, testLoadInt,loaded;
	
	makeRequester = function () {
		var xhr; 
		try {  xhr = new ActiveXObject('Msxml2.XMLHTTP');   }
		catch (e) 
		{
			try {   xhr = new ActiveXObject('Microsoft.XMLHTTP');    }
			catch (e2) 
			{
			  try {  xhr = new XMLHttpRequest();     }
			  catch (e3) {  xhr = false;   }
			}
		}
		return xhr;
	}
	
	loadXML = function (file) {
		var xhr=makeRequester();
		xhr.onreadystatechange  = function()
		{ 
			if(xhr.readyState  == 4)
			{
				//if(xhr.status  == 200) 
				readXML(xhr.responseXML);
				//else 
				//	alert(xhr.responseText);
			}
		};
	    xhr.open("GET", file,  true); 
	    xhr.send(null);
	}
	
	readXML = function(ml){
		xml=ml.firstChild;
		ulList.innerHTML="";
		_urlPicts=baseSite+xml.attributes.getNamedItem("dir").value;
		var minSousDir=xml.attributes.getNamedItem("sousdirs").value.split("|")[1];
		bigSousDir=xml.attributes.getNamedItem("sousdirs").value.split("|")[0];
		var minPrefix=xml.attributes.getNamedItem("prefixes").value.split("|")[1];
		bigPrefix=xml.attributes.getNamedItem("prefixes").value.split("|")[0];
		if(minPrefix.indexOf("|")===false) minPrefix=xml.attributes.getNamedItem("prefixes").value;
		for(var i=0; i<xml.childNodes.length;i++){
			if(xml.childNodes[i].nodeType==3){
				xml.removeChild(xml.childNodes[i]);
				i--;
			}else{
				var t=document.createElement("li");
				var mini=document.createElement("img");
				var obj=xml.childNodes[i].attributes;
				t.onclick=function(){Gallery.currentGallery.showImageNumber(this.id.replace("mini",""))};
				t.id="mini"+i;
				mini.src=_urlPicts+"/"+minSousDir+"/"+minPrefix+obj.getNamedItem("ids").value.split("|")[0]+"."+obj.getNamedItem("ext").value.split("|")[0];
				t.appendChild(mini);
				ulList.appendChild(t);
			}
		}
		divTitle.innerHTML="Galerie : "+xml.attributes.getNamedItem("nom").value;
		if(Gallery.idToShow) showID(Gallery.idToShow); else showPict(curID);
	}
	
	this.nextImage=function(){
		showPict(curID*1+1);
	}
	
	this.prevImage=function(){
		showPict(curID*1-1);
	}
	
	showID=this.showImageID=function(imageID){
		for(var i=0;i<xml.childNodes.length;i++){
			if(xml.childNodes[i].attributes.getNamedItem("ids").value==imageID){
				showPict(i);
				break;
			}
		}
	}
	
	setZoomMode=this.setZoomMode=function(m){
		if(m==undefined) m=zoomMode;
		var w,h;
		w=bigPict.naturalWidth;
		h=bigPict.naturalHeight;
		if(!w){
			var tmp = new Image(); 
			tmp.src = bigPict.src;
			h=tmp.height-20;
			w=tmp.width-20;
		}
		switch(m){
			case 1:
			var pct=Math.min(1,(divArea.clientWidth-50)/w);
			w*=pct;
			h*=pct;
			if(pct==1) zoomMode=2; else	zoomMode=1;
			break;
			case 0:
			var pct=Math.min(1,(divArea.clientHeight-20)/h);
			if(pct>(divArea.clientWidth-50)/w){
				zoomMode=1;
				pct=(divArea.clientWidth-50)/w;
			} else zoomMode=0;
			w*=pct;
			h*=pct;
			break;
			default:
			zoomMode=2;
			break;
		}
		bigPict.width=w;
		bigPict.height=h;
		centrer();
	}
	
	testLoad=function(){
		if(loadImage.complete&&!loaded){
			imageLoaded();
			clearInterval(testLoadInt);
		}
	}
	
	showPict=this.showImageNumber=function(i){
		if(xml.childNodes[i]){
			var obj=xml.childNodes[i].attributes;
			var t=obj.getNamedItem("ids").value.split("|")[1];
			if(!t) t=obj.getNamedItem("ids").value.split("|")[0]
			var u=obj.getNamedItem("ext").value.split("|")[1]
			if(!u) u=obj.getNamedItem("ext").value.split("|")[0]
			if(u=="swf"){
				bigPict.style.display="none";
				swfDiv.innerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="800" height="600" id="site" align="center"><param name="movie" value="'+_urlPicts+"/"+bigSousDir+"/"+bigPrefix+t+"."+u+'" /><param name="allowFullScreen" value="true" /><object type="application/x-shockwave-flash" data="'+_urlPicts+"/"+bigSousDir+"/"+bigPrefix+t+"."+u+'" width="800" height="600" align="middle" allowFullScreen="true"><h2>Vous avez besoin de <a href="http://get.adobe.com/fr/flashplayer/" target="_blank">Flash player 8</a>ou plus pour voir cette animation.</h2><h2 align="center"><a href="http://get.adobe.com/fr/flashplayer/" target="_blank">Cliquez ici</a> pour le t&eacute;l&eacute;charger</h2><p></object></object>';
				swfDiv.style.display="block";
				swf=true;
				iframeDiv.innerHTML='';
				iframeDiv.style.display="none";
				iframe=false;
				imageLoaded();
			}else if(u=="iframe"){
				swf=false;
				iframe=true;
				bigPict.style.display="none";
				iframeDiv.innerHTML='<iframe src="'+obj.getNamedItem("src").value+'" width="'+obj.getNamedItem("width").value+'" height="'+obj.getNamedItem("height").value+'" frameborder="0" allowfullscreen>Votre navigateur doit supporter les iframes</iframe>';
				iframeDiv.style.width=obj.getNamedItem("width").value+"px";
				iframeDiv.style.height=obj.getNamedItem("height").value+"px";
				iframeDiv.style.display="block";
				swfDiv.innerHTML='';
				swfDiv.style.display="none";
				imageLoaded();
			}else{
				swf=false;
				iframe=false;
				swfDiv.innerHTML='';
				swfDiv.style.display="none";
				iframeDiv.innerHTML='';
				iframeDiv.style.display="none";
				curID=i*1;
				bigPict.style.display="block";
				bigPict.width=305;
				bigPict.height=78;
				bigPict.src="img/loading.gif";
				loadImage.src=_urlPicts+"/"+bigSousDir+"/"+bigPrefix+t+"."+u;
				centrer();
			}
			divDesc.innerHTML=obj.getNamedItem("descript").value;
			testLoadInt=setInterval(testLoad,2000);
			loaded=false;
		}
	}
	
	imageLoaded=function(){
		//alert("chargé");
		loaded=true;
		bigPict.src=loadImage.src;
		bigPict.style.display="none";
		zoomInterval=setInterval(imageResize,20);
	}
	
	imageResize=function(){
		clearInterval(zoomInterval);
		if(!swf&&!iframe) bigPict.style.display="block";
		setZoomMode(0);
	}
	
	centrer=function(){
		if(swf){
			if(600<divArea.clientHeight) swfDiv.style.marginTop=(divArea.clientHeight-600)/2+"px"
			else swfDiv.style.marginTop=0;
		}else if(iframe){
			if(iframeDiv.clientHeight<divArea.clientHeight) iframeDiv.style.marginTop=(divArea.clientHeight-iframeDiv.clientHeight)/2+"px"
			else iframeDiv.style.marginTop=0;
		}else{
			if(bigPict.clientHeight<divArea.clientHeight) bigPict.style.marginTop=(divArea.clientHeight-bigPict.clientHeight)/2+"px"
			else bigPict.style.marginTop=0;
		}
	}
	
	this.switchZoomMode=function(){
		zoomMode=(zoomMode+1)%3;
		setZoomMode(zoomMode);
	}
	
	loadingInt=null;
	divDisplay=displayTarget;
	divArea=displayArea;
	ulList=listTarget;
	divTitle=titleTarget;
	divDesc=descTarget;
	bigPict=document.createElement("img");
	swfDiv=document.createElement("div");
	swfDiv.id="swfPlayer";
	swfDiv.style.display="none";
	iframeDiv=document.createElement("div");
	iframeDiv.id="iframeDiv";
	iframeDiv.style.display="none";
	if(divDisplay.children[0]&&divDisplay.children[0].tagName.toLowerCase()=="img") bigPict=divDisplay.children[0]; else divDisplay.appendChild(bigPict);
	divDisplay.appendChild(swfDiv)
	divDisplay.appendChild(iframeDiv)
	bigPict.src="img/loading.gif";
	loadImage=new Image();
	loadImage.onload=imageLoaded;
	divDisplay.style.marginTop=0;
	bigPict.style.marginTop=0;
	divDisplay.style.marginBottom=0;
	divDisplay.style.paddingTop=0;
	curID=0;
	swf=iframe=false;
	loadXML(url);
	Gallery.onOpen();
	Gallery.currentGallery=this;
}

Gallery.onOpen=function(){}

Gallery.onClose=function(){}

Gallery.idToShow;

Gallery.openGallery=function(url,img){
	var div=document.getElementById("gallery");
	div.style.display="block";
	Gallery.idToShow=img;
	var t=new Gallery(baseSite+"galeries/xml/"+url+".xml?"+Math.random(),document.getElementById("galleryLeft"),document.getElementById("galleryDisplay"),document.getElementById("galleryList").children[0],document.getElementById("galleryTitle"),document.getElementById("galleryDesc"));
	document.body.style.overflow="hidden";
	document.getElementById("closeGallery").onclick=Gallery.closeGallery;
	document.getElementById("nextImage").onclick=t.nextImage;
	document.getElementById("prevImage").onclick=t.prevImage;
	document.getElementById("zoomIn").onclick=t.switchZoomMode;
	Gallery.showMenu();
	document.getElementById("galleryController").onmouseover=function(){
		clearInterval(Gallery.reducingInterval)
		document.body.onmousemove=undefined;
	}
	document.getElementById("galleryController").onmouseout=function(){
		Gallery.showMenu();
	}
}

Gallery.reducingInterval;

Gallery.closeGallery=function(){
	document.getElementById("gallery").style.display="none";
	document.body.style.overflow="auto";
	document.getElementById("galleryDisplay").innerHTML="";
	document.getElementById("galleryList").innerHTML="<ul></ul>";
	delete Gallery.currentGallery;
	Gallery.onClose();
}

Gallery.reduceMenu=function(){
	document.getElementById("galleryTitle").style.display="none";
	document.getElementById("galleryDesc").style.display="none";
	document.getElementById("galleryController").style.display="none";
	clearInterval(Gallery.reducingInterval)
	document.body.onmousemove=Gallery.showMenu;
}

Gallery.showMenu=function(){
	document.getElementById("galleryTitle").style.display="block";
	document.getElementById("galleryDesc").style.display="block";
	document.getElementById("galleryController").style.display="block";
	document.body.onmousemove=function(){
		clearInterval(Gallery.reducingInterval);
		Gallery.reducingInterval=setInterval(Gallery.reduceMenu,2000);
	}
}

Gallery.currentGallery;
