﻿var hs={
	Dist:0,
	zSpeed:100,
	minWidth: 200,
	minHeight: 200,
	h:0,w:0,x:0,y:0,
	H:0,W:0,X:0,Y:0,
	img:null,
	thumb:null,
	D:null,
	rido:null,
	expand : function(a, params, custom) {
		this.Expander(a)
		return false
	},


	Expander : function(el)
	{ 
		var loading="loader_white.gif"
		var lien=el.id;
		x=el.offsetLeft;
		y=el.offsetTop;
		w=el.width;
		h=el.height;
		//el.href="#";
		while (el.offsetParent)	{
			el = el.offsetParent;
			
			x += el.offsetLeft;
			y += el.offsetTop;
			if (el != document.body && el != document.documentElement) {
				x -= el.scrollLeft;
				y -= el.scrollTop;
			}
		}
		hs.makeblack()
	 	D = document.createElement("div");
	 	D.style.cursor = 'progress';
	 	
	  	D.id= "ZOOM";
	  	D.style.zIndex = 1;
	  	D.style.position = "absolute";
	  	D.style.width=w+"px"
	  	D.style.height=h+"px"
	  	D.innerHTML="<img vspace='"+parseInt(h/2)+"'  hspace='"+parseInt(w/2)+"' src='/images/"+loading+"'>"
		D.style.left=x+"px";
		D.style.top=y+"px";
		document.body.appendChild(D);
		D.onclick=function(){hs.cancel()}

		img = document.createElement('img');
		img.style.width=w+"px"
		img.style.height=h+"px"
		img.className='highslide'
		img.onload = function() {
			var page = hs.getPageSize();
			W=img.width;
			H=img.height;
			if(H>page.height-10)
			{
				W=W*(page.height-10)/H
				H=page.height-10
			}
			if(W>page.width-10)
			{
				H=H*(page.width-10)/W
				W=page.width-10
			}
			X=parseInt(x+w/2-W/2)
			Y=parseInt(y+h/2-H/2)
			Y=(Y+H)>page.height-5 ? page.height-5-H : Y
			X=(X+W)>page.width-5 ? page.width-5-W : X
			
			X=X<page.scrollLeft+5 ? page.scrollLeft+5 : X
			Y=Y<page.scrollTop+5 ? page.scrollTop+5 : Y
			
		
			Dist=Math.sqrt((X-x)*(X-x)+(Y-y)*(Y-y))
			D.innerHTML=""
			D.appendChild(img)
			setTimeout('hs.zooming()', hs.zSpeed); 
			
		};
		img.src=lien
		return false;
	},

	getPageSize : function () {
		var iebody = document.compatMode && document.compatMode != "BackCompat" 
			? document.documentElement : document.body;
		
		var width = hs.ie ? iebody.clientWidth : 
				(document.documentElement.clientWidth || self.innerWidth),
			height = hs.ie ? iebody.clientHeight : (document.documentElement.clientHeight || self.innerHeight);
		
		return {
			width: width,
			height: height,		
			//scrollLeft: hs.ie ? iebody.scrollLeft : window.pageXOffset,
			//scrollTop: hs.ie ? iebody.scrollTop : window.pageYOffset
			// CORRIGE PAR RICOU
			scrollLeft:(document.documentElement && document.documentElement.scrollLeft),
			scrollTop:(document.documentElement && document.documentElement.scrollTop)
		}
	},


	zooming : function()
	{
		var Xt=parseInt(D.style.left)
		var Yt=parseInt(D.style.top)
		D.style.left=parseInt((Xt+X)/2)+"px"
		D.style.top=parseInt((Yt+Y)/2)+"px"
		Xt=parseInt(D.style.left)
		Yt=parseInt(D.style.top)
		var Dtx=Math.sqrt((X-Xt)*(X-Xt)+(Y-Yt)*(Y-Yt))
		img.style.width=parseInt(W-Dtx/Dist*W+w*Dtx/Dist)+"px";//W-Dtx/Dist*(W-w)+"px"
		//img.title=parseInt(W-Dtx/Dist*W+w*Dtx/Dist)
		img.style.height=parseInt(H-Dtx/Dist*H+h*Dtx/Dist)+"px";//-Dtx/Dist*(H-h)+"px"
		if (Dtx<2)
		{
			D.style.left=X+"px";
			D.style.top=Y+"px";
			img.style.width=W+"px";
			img.style.height=H+"px";
			
			D.style.cursor = 'default';
			D.onclick=function(){setTimeout('hs.unzooming()', hs.zSpeed);}
		}
		else
		{
		setTimeout('hs.zooming()', hs.zSpeed); 
		}
	},	

	unzooming : function()
	{
		var Xt=parseInt(D.style.left)
		var Yt=parseInt(D.style.top)
		D.style.left=parseInt((Xt+x)/2)+"px"
		D.style.top=parseInt((Yt+y)/2)+"px"
		Xt=parseInt(D.style.left)
		Yt=parseInt(D.style.top)
		var Dtx=Math.sqrt((x-Xt)*(x-Xt)+(y-Yt)*(y-Yt))
		img.style.width=w+Dtx/Dist*(W-w)+"px"
		img.style.height=h+Dtx/Dist*(H-h)+"px"
		//D.innerHTML=Dtx
		//alert(Dtx)
		if (Math.abs(Dtx)<2)
		{
			D.style.cursor = 'cross';
			var Node = D;
			Node.parentNode.removeChild(Node);
			var Node = rido;
			Node.parentNode.removeChild(Node);

		}
		else
		{
		setTimeout('hs.unzooming()', hs.zSpeed); 
		}
	},
	cancel:function()
	{
			var Node = D;
			Node.parentNode.removeChild(Node);
			var Node = rido;
			Node.parentNode.removeChild(Node);
	},
	makeblack:function()
	{
	var scrolly=0;
	var scrollx=0;
	//alert(document.body.scrollTop+"/"+window.pageYOffset+"/"+document.documentElement.scrollTop)
	scrolly=(document.documentElement && document.documentElement.scrollTop);
	scrollx=(document.documentElement && document.documentElement.scrollLeft);
	rido = document.createElement("div");
	var page = hs.getPageSize();
	rido.id="rido";
	rido.style.position = "absolute";

	rido.style.width=page.width+"px" //set up veil over page
	rido.style.height=page.height+"px" //set up veil over page
	rido.style.left=scrollx+"px" //Position veil over page
	rido.style.top=scrolly+"px" //Position veil over page
	rido.style.visibility="visible" //Show veil over page
	rido.style.display="block" //Show veil over page
	rido.style.backgroundColor="black"
	document.body.appendChild(rido);
	hs.setopacity(rido,0.7)
	},

	adjustblack:function()
	{
		var rido=document.getElementById("rido")
		if(rido)
		{
		var scrolly=0;
		var scrollx=0;
		var page = hs.getPageSize();
		scrolly=(document.documentElement && document.documentElement.scrollTop);
		scrollx=(document.documentElement && document.documentElement.scrollLeft);
		rido.style.width=page.width+"px" //set up veil over page
		rido.style.height=page.height+"px" //set up veil over page
		rido.style.left=scrollx+"px" //Position veil over page
		rido.style.top=scrolly+"px" //Position veil over page
		}
	},

	setopacity:function(targetobject, value){ //Sets the opacity of targetobject based on the passed in value setting (0 to 1 and in between)
	if (!targetobject)
		return
	if (typeof targetobject.style.MozOpacity!="undefined") //Old Mozilla syntax
		targetobject.style.MozOpacity=value
	else if (typeof targetobject.style.opacity!="undefined") //Standard opacity syntax
		targetobject.style.opacity=value
	else
		targetobject.style.filter="alpha(opacity="+value*100+")"
	},
	
	addEvent:function(target, functionref, tasktype){
	var tasktype=(window.addEventListener)? tasktype : "on"+tasktype
	if (target.addEventListener)
		target.addEventListener(tasktype, functionref, false)
	else if (target.attachEvent)
		target.attachEvent(tasktype, functionref)
	}
}

hs.addEvent(window, function(){if (typeof hs!="undefined") hs.adjustblack()}, "scroll")