/************************************
 *	Fonction de contrôle des bords	*
 ************************************/
function fctDDCtrl(ev, left, top) {
	var imgLeft = parseInt(document.getElementById(zoomerImg).style.left);
	var imgTop = parseInt(document.getElementById(zoomerImg).style.top);
	var containerWidth = parseInt(document.getElementById(zoomerContainer).style.width);
	var containerHeight = parseInt(document.getElementById(zoomerContainer).style.height);
	var imgWidth = parseInt(document.getElementById(zoomerImg).style.width);
	var imgHeight = parseInt(document.getElementById(zoomerImg).style.height);
	var imgMarginLeft = parseInt(document.getElementById(zoomerImg).style.marginLeft);
	var imgMarginTop = parseInt(document.getElementById(zoomerImg).style.marginTop);
	
	//if (navigator.appName == "Microsoft Internet Explorer") {
	///////////////////////////////////////////////
	//	Calculs spéciaux pour Internet Explorer	 //
	///////////////////////////////////////////////
	//	if(imgLeft > 0) { document.getElementById(zoomerImg).style.left = 0 + "px"; }
	///	if(imgLeft*-1 + containerWidth > imgWidth) { document.getElementById(zoomerImg).style.left = (imgWidth - containerWidth)*-1 + "px"; }
	//} else {
	///////////////////////////////////////////////////
	//	Calculs spéciaux pour les autres navigateurs //
	///////////////////////////////////////////////////
		if(imgLeft + imgMarginLeft > 0) { document.getElementById(zoomerImg).style.left = -1*imgMarginLeft + "px"; }
		if((imgLeft + imgMarginLeft)*-1 + containerWidth > imgWidth) { document.getElementById(zoomerImg).style.left = ((imgWidth + imgMarginLeft) - containerWidth)*-1 + "px"; }
	//}
	if(imgTop + imgMarginTop > 0) { document.getElementById(zoomerImg).style.top = -1*imgMarginTop + "px"; }
	if((imgTop + imgMarginTop)*-1 + containerHeight > imgHeight) { document.getElementById(zoomerImg).style.top = ((imgHeight + imgMarginTop) - containerHeight)*-1 + "px"; }
}

/***********************************
 *	fonction de redimentionnement  *
 ***********************************/
 function fctZoomResize(zoomCoef) {
 	switch(zoomCoef) {
 		case 1:
 			zoomCoef = 1;
 			break;
 		case 2:
 			zoomCoef = 1.6;
 			break;
 		case 3:
 			zoomCoef = 2.5;
 			break;
 		case 4:
 			zoomCoef = 3.2;
 			break;
 		case 5:
 			zoomCoef = 4.05;
 			break;
 	}
	document.getElementById(zoomerImg).style.marginLeft = 0;
	document.getElementById(zoomerImg).style.marginTop = 0;
	var imgNewWidth = zoomerOrgImgWidth * zoomCoef;
	var imgNewHeight = zoomerOrgImgHeight * zoomCoef;
	var containerWidth = parseInt(document.getElementById(zoomerContainer).style.width);
	var containerHeight = parseInt(document.getElementById(zoomerContainer).style.height);
	var imgNewMarginLeft = (imgNewWidth - zoomerOrgImgWidth) / 2;
	var imgNewMarginTop = (imgNewHeight - zoomerOrgImgHeight) / 2;
	
	if(imgNewMarginLeft > 0) { imgNewMarginLeft *= -1; }
	if(imgNewMarginTop > 0) { imgNewMarginTop *= -1; }
		
	document.getElementById(zoomerImg).style.height = imgNewHeight + "px";
	document.getElementById(zoomerImg).style.width = imgNewWidth + "px";
	document.getElementById(zoomerImg).style.marginLeft = imgNewMarginLeft + "px";
	document.getElementById(zoomerImg).style.marginTop = imgNewMarginTop + "px";
	
	fctDDCtrl(null);
 }
 
function fctZoomGetSession(slider) {
	new Ajax.Request(
		zoomerUrlAjax,
		{
			method: 'post',
			parameters: {
				type: 'get',
				PHPSESSID: typeof(dv_phpsessid)=='undefined' ? '' : dv_phpsessid
				},
			onSuccess: function(transport) {
				var usedZoom = transport.responseXML.getElementsByTagName('zoom')[0].firstChild.nodeValue;
				var leftZoom = transport.responseXML.getElementsByTagName('left')[0].firstChild.nodeValue;
				var topZoom = transport.responseXML.getElementsByTagName('top')[0].firstChild.nodeValue;
				fctZoomResize(parseInt(usedZoom));
				slider.setValue((usedZoom - 1) * 20);
				
				document.getElementById(zoomerImg).style.position = 'absolute';
				document.getElementById(zoomerImg).style.left = leftZoom + "px";
				document.getElementById(zoomerImg).style.top = topZoom + "px";
			}
		}
	);
}

function fctZoomSetSession() {
	var imgLeft = parseInt(document.getElementById(zoomerImg).style.left);
	var imgTop = parseInt(document.getElementById(zoomerImg).style.top);

	new Ajax.Request(
		zoomerUrlAjax,
		{
			method: 'post',
			parameters: {
				asynchronous: false,
				PHPSESSID: typeof(dv_phpsessid)=='undefined' ? '' : dv_phpsessid,
				zoom: currentZoom,
				type: 'set',
				left: imgLeft,
				top: imgTop
			}
		}
	);
}

function fctZoomShowLoaded() {
	document.getElementById(zoomerContainerLoading).style.display = 'none';
	document.getElementById(zoomerContainer).style.display = 'block';
	document.getElementById(zoomerSliderBoxLoading).style.display = 'none';
	document.getElementById(zoomerSliderBox).style.display = 'block';
	
	fctZoomInit();
}

/****************************
 *	Initialisation du DOM	*
 ****************************/
function fctZoomInit() {
	YAHOO.util.Event.onDOMReady(function() {
		// Initialisation des composants
		document.getElementById(zoomerImg).style.width = zoomerOrgImgWidth + "px";
		document.getElementById(zoomerImg).style.height = zoomerOrgImgHeight + "px";
		document.getElementById(zoomerImg).style.marginLeft = 0;
		document.getElementById(zoomerImg).style.marginTop = 0;
		document.getElementById(zoomerContainer).style.width = zoomerOrgImgWidth + "px";
		document.getElementById(zoomerContainer).style.height = zoomerOrgImgHeight + "px";
		
		/*****************
		 *  DRAG & DROP	 *
		 *****************/
		// Création du drag & drop
		zoomerDD = new YAHOO.util.DD(zoomerImg);
		
		// Implémentation de l'evenement de mouvement (contrôle sur les bords);
		zoomerDD.on('dragEvent', fctDDCtrl, zoomerDD, true);

		
		
		/************
		 *	SLIDER	*
		 ************/
		var Event = YAHOO.util.Event,
			Dom   = YAHOO.util.Dom,
			lang  = YAHOO.lang,
			slider, 
			bg=zoomerSliderBox, thumb=zoomerSliderCtrl

		// Configuration du Slider
		var topConstraint = 30;
		var bottomConstraint = 80;
		var scaleFactor = 1;
		var keyIncrement = 20;
		var tickSize = 20;

		// Création du slider
		slider = YAHOO.widget.Slider.getVertSlider(bg, thumb, topConstraint, bottomConstraint, 20);
		if(zoomerAjax) { fctZoomGetSession(slider); }
		
		slider.subscribe("change", function() {
			var zoomCoef = (slider.getValue() / 20) + 1;
			currentZoom = zoomCoef; // Pour le set session
			fctZoomResize(zoomCoef);
		});

	});
};
