var largeurVue, hauteurVue, largeurC, hauteurC, largeurInit, hauteurInit, largeurFenetre, hauteurFenetre, largeurImage, hauteurImage, largeurMin, largeurMax;
var xZoom, yZoom, tailleZoom;
var imageC;
var xsLasso, ysLasso;
var doOperation= false;
var modeC=2;
var xSouris, ySouris, bougeSouris= false;
var xdImage, ydImage, xfImage, yfImage, largeurC, hauteurC;
var opSouris=0;
var ie6;
var imgWait;
var xhr_object= null;

var visu_isInit= false;

var TILE_SIZE_X= 1024;
var TILE_SIZE_Y= 1024;
var tilesTab= null;
var tileLigne= 0;
var tileCol= 0;
var cpt=0;

var tileGenereNb=0;
var tileTotNb=0;
var tileCurrentNb=0;

var Angle=0;
var Luminosite=0;
var Contraste=0;
var Negatif=false;


var tabXHTML= [];
var param;
var noPage;

var fadeIsRunning= 0;
var fadeValue=1.0;

var sessionId='';

function visu_initSession(id)
{
	sessionId= id;
}

function cleanStr(str)
{
	var i,l,ret,c;
	
	l= str.length;
	ret= '';
	
	for (i=0; i<l; i++)
	{
		c= str.substr(i,1);
		if ( (c>='a' && c<='z') || (c>='0' && c<='9') || c=='.' || c=='/') ret+=c; 
	}
		
	return ret;
}


function initDel()
{
	progresVisible(false);
	// Suppression des éventuels tiles précédents
	clearLoadXHTML();
	for (ligne=0; ligne<tileLigne; ligne++)
		for (col=0; col<tileCol; col++)
		{
			var tileDel= tilesTab[ligne][col];
			document.getElementById("divImage").removeChild( document.getElementById(tileDel.img.id) );
			tileDel.img.src= 'commun/images/transparentpixel.gif';
			//tilesTab[ligne,col].img= null;
		}
			
	tileLigne=0;
	tileCol= 0;

	tilesTab= null;
}

function initTiles()
{
	initDel();
	//alert("largC="+largeurC+"  largI="+largeurVue);
	if (largeurC<=largeurVue) return;
	
	tileCol= Math.floor(largeurC/TILE_SIZE_X)+1;
	tileLigne= Math.floor(hauteurC/TILE_SIZE_Y)+1;
	
	tilesTab=new Array();
	
	var xc=0;
	var yc=0;
	
	var deltaX= Math.ceil(largeurImage*TILE_SIZE_X/largeurC);
	var deltaY= Math.ceil(hauteurImage*TILE_SIZE_Y/hauteurC);
	
	var larg=0;
	
	for (ligne=0; ligne<tileLigne; ligne++)
	{
		var tilesCol=new Array();
		xc= 0;
		for (col=0; col<tileCol; col++)
		{
			var unTile= new Array();
			unTile= {'xl':(col*TILE_SIZE_X),'yl':(ligne*TILE_SIZE_Y),'ll':Math.min(TILE_SIZE_X,largeurC-col*TILE_SIZE_X),'hl':Math.min(TILE_SIZE_Y,hauteurC-ligne*TILE_SIZE_Y),'init':false,'xh':xc,'yh':yc,'lh':Math.min(deltaX,largeurImage-xc),'hh':Math.min(deltaY,hauteurImage-yc),'img':document.createElement('img')};
			
			unTile.img.className= 'tile';
			unTile.img.style.top= unTile.yl+'px';
			unTile.img.style.left= unTile.xl+'px';
			unTile.img.style.width= unTile.ll+'px';
			unTile.img.style.height= unTile.hl+'px'; 
			unTile.img.src= 'commun/images/transparentpixel.gif';
			//unTile.img.style.visibity= 'hidden';
			unTile.img.id= 'tile_'+cpt;
			cpt++; 
			
			document.getElementById("divImage").appendChild(unTile.img);
			
			tilesCol[col]= unTile;
			
			xc+= deltaX;
		}
		tilesTab[ligne]= tilesCol;
		yc+= deltaY;
	}
	
	tileGenereNb=0;
	tileTotNb= tileLigne*tileCol;
	tileCurrentNb= 0;
	progresVisible(true);
	timerTileVisible(false);
	//tileInitServer();
	
}

function focusVisible(estVisible)
{
	if (estVisible)
		document.getElementById("divFocus").style.visibility= 'visible';
	else
		document.getElementById("divFocus").style.visibility= 'hidden';
}

function progresVisible(estVisible)
{
	if (estVisible)
		document.getElementById("divEtat").style.visibility= 'visible';
	else
		document.getElementById("divEtat").style.visibility= 'hidden';
}

function vignetteVisible(estVisible)
{
	if (estVisible)
		document.getElementById("divImage").style.visibility= 'visible';
	else
		document.getElementById("divImage").style.visibility= 'hidden';
}

function vignetteStartFadeIn()
{
	if (fadeIsRunning==1) return;
	fadeIsRunning=1;
	vignetteFadeIn();
}

function vignetteStartFadeOut()
{
	if (fadeIsRunning==2) return;
	fadeIsRunning=2;
	vignetteFadeOut();
}

function vignetteFadeOut()
{
	if (fadeIsRunning!=2) return;
	fadeValue-=0.2;
	setOpacity(document.images.visu,Math.max(fadeValue,0.0));
	if (fadeValue>0.5) 
		setTimeout('vignetteFadeOut()',100);
	else
		fadeIsRunning= 0;
}

function vignetteFadeIn()
{
	if (fadeIsRunning!=1) return;
	fadeValue+= 0.3;
	setOpacity(document.images.visu,Math.min(fadeValue,1.0));
	if (fadeValue<1.0) 
		setTimeout('vignetteFadeIn()',100);
	else
		fadeIsRunning= 0;
}

function progresStatus()
{
	
	if (tileCurrentNb>=tileTotNb)
	{
		progresVisible(false);
		return;
	}
	
	var largProgres= document.images.contour.width*tileCurrentNb/tileTotNb;
	document.images.box.width=largProgres;
}

function donneXmlHttpRequest()
{
	if(typeof XMLHttpRequest!="undefined"){
		return new XMLHttpRequest();
	}

	try{
		return new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(E){
		try{
			return new ActiveXObject("Microsoft.XMLHTTP");
			}
		catch(e){
			return null;
			}
	}
	return null;
}

function loadTile(url,unTile)
{
	var xhr_object= donneXmlHttpRequest();
	if (xhr_object==null)
	{	
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest.\nVous pouvez utiliser des navigateurs tels que Mozilla Firefox ou Internet Explorer pour consulter ce site");
		return;
	}
				
	xhr_object.open("GET",url,true);
	xhr_object.onreadystatechange=function()
	{
		if (xhr_object.readyState==4)
		{
			if (xhr_object.status==200)
			{
				tileGenereNb--;
				if (xhr_object.responseText.substring(0,2)=="NO")
				{
					unTile.init=false;
				}
				else
				{
					unTile.img.src= xhr_object.responseText;
				}
				if (tileGenereNb<=0) focusVisible(false);
			}
		}
	}
	xhr_object.send(null);
}

function createTile(url)
{
	var xhr_object= donneXmlHttpRequest();
	if (xhr_object==null)
	{	
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest.\nVous pouvez utiliser des navigateurs tels que Mozilla Firefox ou Internet Explorer pour consulter ce site");
		return;
	}
				
	xhr_object.open("GET",url,true);
}

function timerTilePrecreate()
{
	for (ligne=0; ligne<tileLigne; ligne++)
	{
		var unTile= tilesTab[ligne][0];
		var estSelect= true; 
		
		estSelect= ( (ydImage+unTile.yl>=0) && (ydImage+unTile.yl)<hauteurFenetre) || ( (ydImage+unTile.yl+unTile.hl)>=0 && (ydImage+unTile.yl+unTile.hl)<hauteurFenetre);
		estSelect= estSelect ||  ((ydImage+unTile.yl<=0) && (ydImage+unTile.yl+unTile.hl>=hauteurFenetre));
		
			
		if (estSelect)
			for (col=0; col<tileCol; col++)
			{
				unTile= tilesTab[ligne][col];
				
				estSelect= ( (xdImage+unTile.xl>=0 && (xdImage+unTile.xl)<largeurFenetre) || (xdImage+unTile.xl+unTile.ll)>=0 && (xdImage+unTile.xl+unTile.ll)<largeurFenetre);
				estSelect= estSelect ||  ((xdImage+unTile.xl<=0) && (xdImage+unTile.xl+unTile.ll>=largeurFenetre));
				
				if ( estSelect )
				{
					if (!unTile.precreate)
					{
						unTile.precreate= true;
						var url= "?page="+noPage+"&x="+unTile.xh+"&y="+unTile.yh+"&l="+unTile.lh+"&h="+unTile.hh+"&ol="+unTile.ll+"&oh="+unTile.hl+"&rotate="+Angle+"&negatif="+((Negatif)?1:0)+"&lumiere="+Luminosite+"&contraste="+Contraste+"&wait=0";
						if (sessionId!='') url+= '&PHPSID='+sessionId;
						//alert(url);
					}
				}
			}
	}
}

function timerTileVisible(avecTimer)
{
	//if (tileGenereNb>2) return;
	var cpt=0;
	var freq= 200;
	var bminY= 0.8;
	var bminX= 0.8; 
	var tileMaxLoad= 1;
	var estPremier= tileCurrentNb==0;
	
	if (tileGenereNb>tileMaxLoad)
	{
		setTimeout('timerTileVisible('+avecTimer+')',500);
		return;
	}
	
	//timerTilePrecreate();
	
	for (ligne=0; ligne<tileLigne; ligne++)
	{
		var unTile= tilesTab[ligne][0];
		var estSelect= true; 
		
		estSelect= ( (ydImage+unTile.yl>=0) && (ydImage+unTile.yl)<hauteurFenetre) || ( (ydImage+unTile.yl+unTile.hl)>=0 && (ydImage+unTile.yl+unTile.hl)<hauteurFenetre);
		estSelect= estSelect ||  ((ydImage+unTile.yl<=0) && (ydImage+unTile.yl+unTile.hl>=hauteurFenetre));
		if (!avecTimer && estSelect)
			estSelect= (Math.min(hauteurFenetre,ydImage+unTile.yl+unTile.hl)-Math.max(0,ydImage+unTile.yl))/TILE_SIZE_Y>bminY;
		
			
		if (estSelect)
			for (col=0; col<tileCol; col++)
			{
				unTile= tilesTab[ligne][col];
				
				estSelect= ( (xdImage+unTile.xl>=0 && (xdImage+unTile.xl)<largeurFenetre) || (xdImage+unTile.xl+unTile.ll)>=0 && (xdImage+unTile.xl+unTile.ll)<largeurFenetre);
				estSelect= estSelect ||  ((xdImage+unTile.xl<=0) && (xdImage+unTile.xl+unTile.ll>=largeurFenetre));
				
				if (!avecTimer && estSelect)
					estSelect= (Math.min(largeurFenetre,xdImage+unTile.xl+unTile.xl)-Math.max(0,xdImage+unTile.xl))/TILE_SIZE_X>bminX;
				
				if ( estSelect )
				{
					if (!unTile.init)
					{
						unTile.init= true;
						focusVisible(true);
						//unTile.img.src= "zoom_dyn2.php?x="+unTile.xh+"&y="+unTile.yh+"&l="+unTile.lh+"&h="+unTile.hh+"&ol="+unTile.ll+"&oh="+unTile.lh+"&rotate="+Angle;
						var url= "?o=TILE&param="+param+"&p="+noPage+"&x="+unTile.xh+"&y="+unTile.yh+"&l="+unTile.lh+"&h="+unTile.hh+"&ol="+unTile.ll+"&oh="+unTile.hl+"&r="+Angle+"&n="+((Negatif)?1:0)+"&b="+Luminosite+"&c="+Contraste;
						if (sessionId!='') url+= '&PHPSID='+sessionId;
						//alert(url);
						
						tileGenereNb++;
						loadTile('visu_affiche_util.php'+url,unTile);
						cpt++;
						tileCurrentNb++;
						progresStatus();
						if (tileGenereNb>tileMaxLoad)
						{
							setTimeout('timerTileVisible('+avecTimer+')',500);
							return;
						}
						if (avecTimer && cpt>3)
						{
							setTimeout('timerTileVisible(true)',freq);
							return;
						}
					}
				}
			}
	}
	
	if (!avecTimer)
	{
		timerTileVisible(true);
		return;
	}
	return;
	if (tileCurrentNb>=tileTotNb) return;
	
	for (ligne=0; ligne<tileLigne; ligne++)
	{
		for (col=0; col<tileCol; col++)
		{
			unTile= tilesTab[ligne][col];
			if (!unTile.init)
			{
				unTile.init= true;
				//unTile.img.src= "zoom_dyn2.php?x="+unTile.xh+"&y="+unTile.yh+"&l="+unTile.lh+"&h="+unTile.hh+"&ol="+unTile.ll+"&oh="+unTile.lh+"&rotate="+Angle;
				var url= "zoom_dyn2.php?x="+unTile.xh+"&y="+unTile.yh+"&l="+unTile.lh+"&h="+unTile.hh+"&ol="+unTile.ll+"&oh="+unTile.hl+"&rotate="+Angle;
				tileGenereNb++;
				loadTile(url,unTile.img);
				setTimeout("timerTileVisible(true)",5000);
				return;
			}
		}
	}
	
	return;
}

function clearLoadXHTML()
{
	for (i=0; i<tileGenereNb;i++)
		if (!isNaN(tabXHTML[i]))
			tabXHTML[i].abort();
	tileGenereNb=0;
}

function freeMemory()
{
	clearLoadXHTML();
	var events = new Array('onfocus','onblur','onchange','onclick','onmousedown','onmouseup','onmouseover','onmousemove','onkeypress','onkeydown','onkeyup','onkeypress'); 
	var ie = document.detachEvent ? 1 : 0; 
	release_events_recursive(document, events, ie); 
	for (ligne=0; ligne<tileLigne; ligne++)
		for (col=0; col<tileCol; col++)
		{
			var tileDel= tilesTab[ligne][col];
			document.getElementById("divImage").removeChild( document.getElementById(tileDel.img.id) );
			tileDel.img.src= 'commun/images/transparentpixel.gif';
		}
}

function release_events_recursive(parent, events, ie) 
{ 
	var i; 
	for (i=0; i<events.length; i++) 
		if (parent[events[i]]) 
		{ 
			if (ie) 
				parent.detachEvent(events[i], null); 
			else parent.removeEventListener(events[i], null, false); 
		} 
	
	for (i=0; i<parent.childNodes.length; i++) 
		release_events_recursive(parent.childNodes[i], events, ie);
}

function visu_initZoom(pTaille,pLargeurVue,pHauteurVue,pLargeurFenetre,pHauteurFenetre,pParam,pNoPage)
{
	var i;
	
	//TILE_SIZE_X= Math.round(pLargeurFenetre*1.5);
	//TILE_SIZE_Y= Math.round(pHauteurFenetre*1.5);
	TILE_SIZE_X= Math.max(Math.round(pLargeurFenetre*2),Math.round(pHauteurFenetre*2),1024);
	//TILE_SIZE_X= Math.min(TILE_SIZE_X,1024);
	TILE_SIZE_Y= TILE_SIZE_X;
	
	largeurVue= ValInt(pLargeurVue);
	hauteurVue= ValInt(pHauteurVue);
	largeurC= ValInt(pLargeurVue);
	hauteurC= ValInt(pHauteurVue);
	largeurInit= largeurC;
	hauteurInit= hauteurC;
	
	xdImage=0;
	ydImage=0;
	
	largeurFenetre= ValInt(pLargeurFenetre);
	hauteurFenetre= ValInt(pHauteurFenetre);
		
	for (i=0; i<pTaille.length; i++)
	{
		if (pTaille.substring(i,i+1)=="x")
		{
			largeurImage= ValInt(pTaille.substring(0,i));
			hauteurImage= ValInt(pTaille.substring(i+1,999));
			
			largeurMin= ValInt(pLargeurVue)*0.5;
			largeurMax= largeurImage*2;
			break;
		}
	}
	
	param= pParam;
	noPage= pNoPage;
}


function majLasso(pX,pY)
{
	var divLasso= document.all?document.all["divLasso"]:document.getElementById("divLasso");
	
	if (divLasso==null) return;
	divLasso.style.left= Math.min(pX,xsLasso);
	divLasso.style.top= Math.min(pY,ysLasso);
	document.images.lasso.width= Math.abs(pX-xsLasso);
	document.images.lasso.height= Math.abs(pY-ysLasso);
}

Date.ONE_SECOND = 1000
Date.ONE_MINUTE = Date.ONE_SECOND * 60
Date.ONE_HOUR = Date.ONE_MINUTE * 60
Date.ONE_DAY = Date.ONE_HOUR * 24

function nap (m) {var then = new Date(new Date().getTime() + m); while (new Date() < then) {}}

function zoomAnim(x0,y0,l0,h0,x1,y1,l1,h1,i)
{
	var step=10;
	if (this.n.indexOf("msie")!=-1) step=2;
	var div= document.all?document.all["divImage"]:document.getElementById("divImage");
	
	div.style.left= Math.round(x0+ i*(x1-x0)/step);
	div.style.top = Math.round(y0+ i*(y1-y0)/step);
	document.images.visu.width= Math.round(l0+ i*(l1-l0)/step);
	document.images.visu.height= Math.round(h0+ i*(h1-h0)/step);
	
	if (i<step)
		setTimeout("zoomAnim("+x0+","+y0+","+l0+","+h0+","+x1+","+y1+","+l1+","+h1+","+(i+1)+")",10);
	else
	{
		div.style.left= x1;
		div.style.top = y1;
		document.images.visu.width= l1;
		document.images.visu.height= h1;
	}
}

function relacheBouton(evt)
{
	bougeSouris= false;
	if (modeC==2)
	{
		evt= evt || window.event;
		xC= ValInt(evt.pageX || evt.clientX || 0);
		yC= ValInt(evt.pageY || evt.clientY || 0);
		
		var xd,yd,xf,yf;
		var kx,ky,milX,milY;
		var divLasso= document.all?document.all["divLasso"]:document.getElementById("divLasso");
		divLasso.style.visibility='hidden';
		xd= Math.min(xsLasso,xC);
		yd= Math.min(ysLasso,yC);
		xf= Math.max(xsLasso,xC);
		yf= Math.max(ysLasso,yC);
		
		xd= Math.max(xd,xdImage);
		yd= Math.max(yd,ydImage);
		xf= Math.min(xf,xdImage+largeurC);
		yf= Math.min(yf,ydImage+hauteurC);
		
		if (xf-xd<50 || yf-yd<50) return false;
		kx= (xf-xd)/largeurC;
		ky= (yf-yd)/hauteurC;
		milX= ValInt((xf-xd)/2)+xd-xdImage;
		milY= ValInt((yf-yd)/2)+yd-ydImage;
		milX= milX/largeurC;
		milY= milY/hauteurC;
		
		ox= xdImage;
		oy= ydImage;
		ol= largeurC;
		oh= hauteurC;
		
		if (kx>ky)
		{	
			largeurC= largeurVue/kx;
			hauteurC= hauteurVue/kx;
		}
		else
		{
			largeurC= largeurVue/ky;
			hauteurC= hauteurVue/ky;
		}
		
		xdImage= ValInt(largeurFenetre/2-largeurC*milX);
		ydImage= ValInt(hauteurFenetre/2-hauteurC*milY);

		zoomAnim(ox,oy,ol,oh,xdImage,ydImage,largeurC,hauteurC,0);
		parent.preview.majVignette();
		zoomLevelShow();
		parent.cmd.setMode(1);
		initTiles();
	}
	else
	{
		timerTileVisible(false);
	}
	//sauveLock();
	return false;
}

function deplaceSouris(evt)
{
	if (!bougeSouris) return false;
	if (opSouris==0) return;
	
	evt= evt || window.event;
	xC= ValInt(evt.pageX || evt.clientX || 0);
	yC= ValInt(evt.pageY || evt.clientY || 0);
		
	switch(opSouris)	
	{
		case 1:
			var div= document.all?document.all["divImage"]:document.getElementById("divImage");
			
			xdImage= xdImage+xC-xSouris;
			ydImage= ydImage+yC-ySouris;
			
			div.style.left= xdImage;
			div.style.top = ydImage;
			
			xSouris= xC;
			ySouris= yC;
			
			break;
			
		case 2:
			// Déplacement sur vignette => N'existe plus
			break;
			
		case 3:
			majLasso(xC,yC);
			break;
	}
	
	parent.preview.majVignette();
	
	
	return false;
}

function enfonceBouton(evt)
{	
	evt= evt || window.event;
	xSouris= ValInt(evt.pageX || evt.clientX || 0);
	ySouris= ValInt(evt.pageY || evt.clientY || 0);
	
	if (ie || sfr)
	{
		xSouris+= ValInt(db && db.scollLeft)?db.scrollLeft:(window.pageXOffset || 0);
		ySouris+= ValInt(db && db.scollTop) ?db.scrollTop :(window.pageYOffset || 0);
	}
	
	opSouris= 1;
	xsLasso= xSouris;
	ysLasso= ySouris;
	if (modeC==2) 
	{
		var divLasso= document.all?document.all["divLasso"]:document.getElementById("divLasso");
		majLasso(xsLasso,ysLasso);
		divLasso.style.visibility='visible';
		opSouris=3;
	}
	
	
	bougeSouris= true;
	
	if (ce) document.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
	document.onmousemove= deplaceSouris;
	document.onmouseup= relacheBouton;
	return false;
}

function zoomLevelShow()
{
	if (parent.cmd.fnZoomLevelShow!=undefined)
	{
		if (largeurVue==0)
			parent.cmd.fnZoomLevelShow("NaN");
		else
			parent.cmd.fnZoomLevelShow(largeurC*100/largeurImage);
	}
}

function zoomLevelExecute(level)
{
	
	if (largeurImage==0 || largeurImage==undefined) return;
	
	if (level=='PP')
	{
		depl(5);
		return;
	}
	else if (level=='PL')
	{
		xdImage= 0;
		ydImage= 0;
		deplaceImage(xdImage,ydImage);
		k= largeurFenetre/largeurImage;
	}
	else
		k= ValInt(level)/100;
		
	var div= document.all?document.all["divImage"]:document.getElementById("divImage");
	
	milX= (largeurFenetre/2-xdImage)/largeurC;
	milY= (hauteurFenetre/2-ydImage)/hauteurC;
	
	largeurC= Math.round(largeurImage*k);
	hauteurC= Math.round(hauteurImage*k);
	
	if (level!='PL')
	{
		xdImage= ValInt(largeurFenetre/2-largeurC*milX);
		ydImage= ValInt(hauteurFenetre/2-hauteurC*milY);
	}
	
	div.style.left= xdImage;
	div.style.top = ydImage;
		
	document.images.visu.width= ValInt(largeurC);
	document.images.visu.height= ValInt(hauteurC);
	
	initTiles();
	parent.preview.majVignette();
	zoomLevelShow();
	parent.cmd.setMode(1);
	//sauveLock();
	timerTileVisible(false);
}

function zoomPlus()
{
	var div= document.all?document.all["divImage"]:document.getElementById("divImage");
	
	//alert("largeurC="+largeurC+"x"+hauteurC+"  largImage="+largeurImage+"x"+hauteurImage+" largMax="+largeurMax+"  largFenetre="+largeurFenetre+"x"+hauteurFenetre+"  xdImage="+xdImage+"x"+ydImage);
	
	vl= Math.max(largeurC,hauteurC);
	vt= Math.max(largeurImage,hauteurImage);
	r= vl/vt;
	
	if (r<0.1)
		k=0.5;
	else if (r<0.2)
		k=0.4;
	else 	
		k=0.3;
	k= 0.2;
	
	if (largeurC>=largeurMax) return;
	offsetX= largeurC*k;
	offsetY= hauteurC*k;
	
	milX= (largeurFenetre/2-xdImage)/largeurC;
	milY= (hauteurFenetre/2-ydImage)/hauteurC;
	
	largeurC+= offsetX;
	hauteurC+= offsetY;
	
	xdImage= ValInt(largeurFenetre/2-largeurC*milX);
	ydImage= ValInt(hauteurFenetre/2-hauteurC*milY);

	
	div.style.left= xdImage;
	div.style.top = ydImage;
		
	document.images.visu.width= ValInt(largeurC);
	document.images.visu.height= ValInt(hauteurC);
	
	parent.preview.majVignette();
	zoomLevelShow();
	//affZoom();
	parent.cmd.setMode(1);
	//initTiles();
	//sauveLock();
	
}

function zoomMoins()
{
	var div= document.all?document.all["divImage"]:document.getElementById("divImage");
	
	vl= Math.max(largeurC,hauteurC);
	vt= Math.max(largeurImage,hauteurImage);
	r= vl/vt;
	
	if (r<0.1)
		k=0.5;
	else if (r<0.2)
		k=0.4;
	else 	
		k=0.3;
	k= 0.2;
	if (largeurC<=largeurMin) 
	{
		return;
	}
	
	offsetX= largeurC*k;
	offsetY= hauteurC*k;
	
	milX= (largeurFenetre/2-xdImage)/largeurC;
	milY= (hauteurFenetre/2-ydImage)/hauteurC;
	
	largeurC-= offsetX;
	hauteurC-= offsetY;
	
	xdImage= ValInt(largeurFenetre/2-largeurC*milX);
	ydImage= ValInt(hauteurFenetre/2-hauteurC*milY);
	
	div.style.left= xdImage;
	div.style.top = ydImage;
		
	document.images.visu.width= largeurC;
	document.images.visu.height= hauteurC;
	
	parent.preview.majVignette();
	zoomLevelShow();
	parent.cmd.setMode(1);
	//initTiles();
	//sauveLock();
}

function enfonceTouche(evt)
{
	//evt = evt || window.event;
	//var key= evt.keyCode;
	var isNetscape= (document.layers);
	var key= (isNetscape)?keyStroke.which:event.keyCode;
		
	if (key==107 || key==43) // Touche +
		zoomPlus();
	else if (key==109 || key==45) // Touche -
		zoomMoins();
	else if (key==37)
		depl(1);
	else if (key==39)
		depl(2);
	else if (key==38)
		depl(3);
	else if (key==40)
		depl(4);
	
	return false;
}


function sauveLock()
{
	//if (parent.cmd.cmd_isInit==undefined || !parent.cmd.cmd_isInit) return;
	setCookie("x",xdImage/largeurC);
	setCookie("y",ydImage/hauteurC);
	setCookie("largeur",largeurC/largeurImage);
	setCookie("hauteur",hauteurC/hauteurImage);
	
	setCookie("angle",Angle);
	
	var kx= largeurImage/largeurC;
	var ky= hauteurImage/hauteurC;
	xr= Math.ceil(Math.max(0,-xdImage)*kx);
	yr= Math.ceil(Math.max(0,-ydImage)*ky);
	
	setCookie("xr",xr);
	setCookie("yr",yr);
	lVisu= Math.ceil(Math.min(largeurFenetre*kx,largeurImage-xr));
	hVisu= Math.ceil(Math.min(hauteurFenetre*ky,hauteurImage-yr));
	setCookie("lr",lVisu);
	setCookie("hr",hVisu);
	
	setCookie("neg",((Negatif)?1:0));
	setCookie("lum",Luminosite);
	setCookie("cont",Contraste);
}

function affZoom()
{
	var div= document.all?document.all["divCurseur"]:document.getElementById("divCurseur");
	if (div==undefined) return;
	div.style.left= xZoom+tailleZoom*(largeurC-largeurMin)/(largeurMax-largeurMin);
}

function depl(pType)
{
	switch (pType)
	{
		case 2: 
			borne= -largeurC+largeurFenetre*0.2;
			if (xdImage<=borne) return;
			xdImage-= largeurFenetre*0.2;
			//if (xdImage<=borne) xdImage= borne;
			break;
			
		case 1: 
			borne= largeurFenetre*0.8;
			if (xdImage>=borne) return;
			xdImage+= largeurFenetre*0.2;
			//if (xdImage>=borne) xdImage= borne;
			break;
			
		case 4: 
			borne= -hauteurC+hauteurFenetre*0.2;
			if (ydImage<=borne) return;
			ydImage-= hauteurFenetre*0.2;
			//if (ydImage<=borne) ydImage= borne;
			break;
			
		case 3: 
			borne= hauteurFenetre*0.8;
			if (ydImage>=borne) return;
			ydImage+= hauteurFenetre*0.2;
			//if (ydImage>=borne) ydImage= borne;
			break;
			
		case 5:
			largeurC= largeurInit;
			hauteurC= hauteurInit;
			document.images.visu.width= largeurC;
			document.images.visu.height= hauteurC;
			xdImage= (largeurFenetre-largeurC)/2;
			ydImage= (hauteurFenetre-hauteurC)/2;;
			initTiles();
			break;
			
		case 10:
			document.images.visu.width= largeurC;
			document.images.visu.height= hauteurC;
	}
	
	var div= document.all?document.all["divImage"]:document.getElementById("divImage");
	div.style.left= xdImage;
	div.style.top = ydImage;
	parent.preview.majVignette();
	zoomLevelShow();
	sauveLock();
	timerTileVisible(false);	
}

function setCurseur(pMode)
{
	
	if (ie6)
	{
		var div= document.all?document.all["divImage"]:document.getElementById("divImage");
		
		switch (pMode)
		{
			case 1:		div.style.cursor= "commun/images/main.cur";
						break;
						
			case 2:		div.style.cursor= "commun/boutons/curZoom.cur";
						break;
		}
	}
	else
	{
		/*
		switch (pMode)
		{
			case 1: 	div.style.cursor= "hand";
						divHD.style.cursor= "hand";
						divLoad.style.cursor= "hand";
						break;
						
			case 2: 	div.style.cursor= "crosshair";
						divHD.style.cursor= "crosshair";
						divLoad.style.cursor= "crosshair";
						break;
		}
		*/
	}
}

function deplaceImage(x,y)
{
	var div= document.all?document.all["divImage"]:document.getElementById("divImage");
	div.style.left= x;
	div.style.top= y;
	//sauveLock();
	//timerTileVisible(false);
}


function positionne()
{
	scrollTo(0,0);
}


function _ua(t) {var _u = navigator.userAgent.toLowerCase();return _u.indexOf(t) != -1;}
function _compat() {return ((_ua('opera') &&(_ua('opera 7.5') || _ua('opera/7.5') ||_ua('opera 8') || _ua('opera/8'))) ||(_ua('safari') && _ua('safari/') >= 125) ||(_ua('msie') &&!_ua('msie 4') && !_ua('msie 5.0') && !_ua('msie 5.1') &&!_ua('msie 3') && !_ua('powerpc')) ||(document.getElementById && window.XSLTProcessor &&window.XMLHttpRequest && !_ua('netscape6') &&!_ua('netscape/7.0')));}
function _noActiveX(){if(!_ua('msie') || !document.all || _ua('opera')){return false;}var s = false;eval('try { new ActiveXObject("Microsoft.XMLDOM"); }'+'catch (e) { s = true; }');return s;}

function visu_is_ok()
{
	if (getCookie("testnavig")==1) return;

	setCookie("testnavig",1);
	ok= _compat();
		
	if (!ok) 
	{
		var msg= "Votre navigateur ne supporte pas la technologie utilisée pour zoomer sur les images de ce site.\n\nLes navigateurs compatibles sont les suivants:\n";
		msg+= "Internet Explorer 5.5 ou supérieur (Windows)\n";
		msg+= "Firefox 0.8 ou supérieur (Windows, Mac, Linux)\n";
		msg+= "Safari 1.2.4 ou supérieur (Mac)\n";
		msg+= "Netscape 7.1 ou supérieur(Windows, Mac, Linux)\n";
		msg+= "Mozilla 1.4 ou supérieur (Windows, Mac, Linux)\n";
		msg+= "Opera 7.5 ou supérieur(Windows, Mac, Linux)";
		
		alert(msg);
		return;
	}
	
	if (ok && _noActiveX())
		alert("ActiveX n'est pas activé.\nPour utiliser ce site avec Internet Explorer, vous devez activer le support des ActiveX");
}

function visu_waitLoad()
{
	try 
	{
		if (parent.preview.preview_isInit && parent.cmd.cmd_isInit)
			return;
		else
			setTimeout("visu_waitLoad()",200);
	}
	catch(e)
	{
		setTimeout("visu_waitLoad()",200);
	}
}


function visu_lanceZoom()
{
	var img= document.all ? document.all["visu"] : document.getElementById("visu");
	var div= document.all?document.all["divImage"]:document.getElementById("divImage");
	
	var noVersion= navigator.appVersion;
	var p= noVersion.indexOf("MSIE");
	var f;
	
	visu_is_ok();
	visu_waitLoad();
	
	if (p>=0)
	{
		f= noVersion.indexOf(";",p);
		p=p+5;
		if (f==-1) f= noVersion.length;
		ie6= noVersion.substring(parseInt(p),parseInt(f))>"6";
	}	
	else
		ie6= false;
			
	xdImage= getLeft(img);
	ydImage= getTop(img);
	xfImage= xdImage+getWidth(img);
	yfImage= ydImage+getHeight(img);
	
	
	if (ce) document.captureEvents(Event.MOUSEDOWN);
	document.onmousedown= enfonceBouton;
	if (ce) document.captureEvents(Event.KEYDOWN);
	document.onkeydown= enfonceTouche;
	
	setInterval("positionne()",1000);
	
	visu_isInit= true;
	cmd_lanceZoom();
	//cmd_execLockZoom();
	//sauveLock();
	zoomLevelShow();
	initTiles();
	setInterval("zoomLevelShow()",1000);
}

function visu_initLasso()
{
	var gereOpacite;
	
	gereOpacite= (navigator.appName.indexOf("Microsoft")!=-1 && navigator.platform.toUpperCase().indexOf("WIN")>=0); // IE sous Windows ?
	
	if (!gereOpacite)
	{
		var o = getStyleProp(document.images.lasso, "opacity");
		gereOpacite= o!=undefined;
	}
	
	if (!gereOpacite) return;
	
	document.images.lasso.src= 'commun/visu_affiche/lassoJaune.gif';
	setOpacity(document.images.lasso,0.3);
}
