/**
		-------------------------------------------------------
		Classe acai_carto_miniMap
		-------------------------------------------------------
		Description : 
*/
function acai_carto_miniMap(pNom, pLeft, pTop, pWidth, pHeight, pDynamicMap, pViewer) {
	var fURL;
	var fViewer = pViewer;
	var fImageWidth;
	var fImageHeight;
	var	fCadreMiniMap = new acai_commons_genericCadre("cadreMiniMap", true);
	var	fCroixMiniMap = new acai_commons_genericCroix("croixMiniMap", true);
	var fActionMiniMap = new acai_commons_genericCouche();
	var fCadreLeft = pLeft;
	var fCadreTop = pTop;
	var fCadreWidth = pWidth;
	var fCadreHeight = pHeight;
	var fCoucheMiniMap;
	var fDynamicMap = pDynamicMap;
	var mouseX;
	var mouseY;
	var startX;
	var startY;
	var tempX;
	var tempY;
	var deltaMoveX;
	var deltaMoveY;
	var started = false;
	var fMapCurrentTool;
	var fToOpen;
	var fToClose;
	var CROSS_SIZE = 20;
	var CADRE_MIN_SIZE = 10;
	this.setURL = function(pURL) {
		fURL = pURL;
	};
	
	this.init = function() {
		fCadreMiniMap.setPosition(this.getLeft()+2,this.getTop()+2,this.getWidth(),this.getHeight());
		fCadreMiniMap.setBorderColor(COSMETIC_COLOR);
		fCadreMiniMap.setBorderWidth(MINIMAP_BORDER_WIDTH);
		fCadreMiniMap.setVisible(false);

		fCroixMiniMap.setPosition(this.getLeft()+ this.getWidth()/2,this.getTop() + this.getHeight()/2,CROSS_SIZE);
		fCroixMiniMap.setBorderColor(COSMETIC_COLOR);
		fCroixMiniMap.setBorderWidth(MINIMAP_BORDER_WIDTH);
		fCroixMiniMap.setVisible(false);

		fActionMiniMap.setNom("actionMiniMap");
		fActionMiniMap.setPosition(this.getLeft() + this.getWidth() - 18 ,this.getTop()+2,18,18);
		
//		fCadreMiniMap.setZIndex(1000);
		fActionMiniMap.setZIndex(1000);
		
		fToOpen = '<img src=\'' + VIEWER_LOCATION + ICO_CLOSE_MINIMAP + '\' onclick=\'' + fViewer + '.getMiniMap()' + '.hide();\' alt=\'' + MINIMAP_CLOSE_LABEL + '\' title=\'' + MINIMAP_CLOSE_LABEL + '\'>';
		fToClose = '<img src=\'' + VIEWER_LOCATION + ICO_OPEN_MINIMAP + '\' onclick=\'' + fViewer + '.getMiniMap()' + '.show();\' alt=\'' + MINIMAP_OPEN_LABEL + '\' title=\'' + MINIMAP_OPEN_LABEL + '\'>';


	};

	this.hide = function() {
		fCadreMiniMap.setVisible(false);
		fCroixMiniMap.setVisible(false);
		fActionMiniMap.setContenu(fToClose);
		this.setVisible(false);
	};
	
	this.setImageDimensions = function(pImageWidth,pImageHeight) {
		fImageWidth =pImageWidth;
		fImageHeight = pImageHeight
	};

	this.show = function() {
		this.setVisible(true);
		cadreOUcroix();
		fActionMiniMap.setContenu(fToOpen);
		fActionMiniMap.setVisible(true);
/*
		var pContenu = '<table cellspacing=\'0\' cellpadding=\'0\'height=\'' + this.getHeight() + '\'valign=\'middle\' align=\'center\'><tr><td valign=\'middle\'>'
			+ (new acai_commons_image(fURL,'',fImageWidth,fImageHeight)).toHTML()
			+ '</td></tr></table>';
*/
		var pContenu = (new acai_commons_image(fURL,'',fImageWidth,fImageHeight)).toHTML();
		this.setContenu(pContenu);
		this.redraw();
	};

	this.refreshFromMap = function(scale,deltaX,deltaY) {
		var newCadreWidth = fCadreWidth * scale;
		var newCadreHeight = fCadreHeight * scale;
		var newCenterX = (fCadreWidth/2) + deltaX;
		var newCenterY = (fCadreHeight/2) + deltaY;
		var newCadreLeft = fCadreLeft + newCenterX - newCadreWidth/2;
		var newCadreTop = fCadreTop + newCenterY - newCadreHeight/2;
		fCadreMiniMap.setPosition(newCadreLeft+2,newCadreTop+2,newCadreWidth,newCadreHeight);
		fCroixMiniMap.setPosition(newCadreLeft + newCadreWidth/2,newCadreTop + newCadreHeight/2,CROSS_SIZE);
		if (this.isVisible()) {
			cadreOUcroix();
		}
	};
	
	function cadreOUcroix() {
		fCadreMiniMap.setVisible( fCadreMiniMap.getWidth()>=CADRE_MIN_SIZE );
		fCroixMiniMap.setVisible( fCadreMiniMap.getWidth()<CADRE_MIN_SIZE );
	}
	
	function refreshSelf(deltaX,deltaY) {
			var newLeft = fCadreMiniMap.getLeft() + deltaX;
			var newTop = fCadreMiniMap.getTop() + deltaY;
			fCadreMiniMap.setPosition(newLeft,newTop,fCadreMiniMap.getWidth(),fCadreMiniMap.getHeight());
			fCroixMiniMap.setPosition(newLeft + fCadreMiniMap.getWidth()/2,newTop + fCadreMiniMap.getHeight()/2,CROSS_SIZE);
		cadreOUcroix();
	}
	
	function reInit() {
			fCadreMiniMap.setPosition(fCadreMiniMap.getLeft(),fCadreMiniMap.getTop(),fCadreMiniMap.getWidth(),fCadreMiniMap.getHeight());
			fCroixMiniMap.setPosition(fCadreMiniMap.getLeft() + fCadreMiniMap.getWidth()/2,fCadreMiniMap.getTop() + fCadreMiniMap.getHeight()/2, CROSS_SIZE);
		cadreOUcroix();
	}
	
	function refreshMap(deltaX,deltaY) {
			// mapWidth = eval(fDynamicMap + ".getMapImage().getWidth()");
			// mapHeight = eval(fDynamicMap + ".getMapImage().getHeight()");
			var mapXmin = eval(fDynamicMap + ".getMapImage().getXmin()");
			var mapXmax = eval(fDynamicMap + ".getMapImage().getXmax()");
			var mapYmin = eval(fDynamicMap + ".getMapImage().getYmin()");
			var mapYmax = eval(fDynamicMap + ".getMapImage().getYmax()");

			var miniMapTranslationX = deltaX/fCadreMiniMap.getWidth();
			var miniMapTranslationY = deltaY/fCadreMiniMap.getHeight();
			
			var mapTranslationX = miniMapTranslationX * (mapXmax - mapXmin);
			var mapTranslationY = miniMapTranslationY * (mapYmax - mapYmin);
			
			var newMapXmin = mapXmin + mapTranslationX;
			var newMapXmax = mapXmax + mapTranslationX;
			var newMapYmin = mapYmin - mapTranslationY;
			var newMapYmax = mapYmax - mapTranslationY;

			eval(fDynamicMap + ".gotoBounds(" + newMapXmin + "," + newMapXmax + "," + newMapYmin + ","	+ newMapYmax + ")");
	}

	function startRecenterMiniMap(e) {
			fMapCurrentTool = eval(fDynamicMap + ".getCurrentTool()");
			eval(fDynamicMap + ".desactiveTools()");
			document.onmousemove = getMouseMiniMap;
			document.onmouseup = stopRecenterMiniMap;
			getImageXYMiniMap(e);
			if ( (mouseX > fCadreLeft) && (mouseX < fCadreLeft + fCadreWidth) && (mouseY > fCadreTop) && (mouseY < fCadreTop + fCadreHeight) ) {
					started = true;
					startX = mouseX;
					startY = mouseY;
					tempX = mouseX;
					tempY = mouseY;
			}
			return false;
	}

	function stopRecenterMiniMap(e) {
			getImageXYMiniMap(e);
			if (started) {
					if ( (mouseX > fCadreLeft) && (mouseX < fCadreLeft + fCadreWidth) && (mouseY > fCadreTop) && (mouseY < fCadreTop + fCadreHeight) ) {
							deltaMoveX = mouseX - startX;
							deltaMoveY = mouseY - startY;
							refreshMap(deltaMoveX,deltaMoveY);
					} else {
							refreshMap(0,0);
					}
			}
			started = false;
			document.onmousemove = null;
			document.onmouseup = null;
			eval(fDynamicMap + ".refreshCurrentTool(fMapCurrentTool)");
			return false;
	}

	function getMouseMiniMap(e) {
			getImageXYMiniMap(e);
			if (started) {
					if ( (mouseX > fCadreLeft) && (mouseX < fCadreLeft + fCadreWidth) && (mouseY > fCadreTop) && (mouseY < fCadreTop + fCadreHeight) ) {
							deltaMoveX = mouseX - tempX;
							deltaMoveY = mouseY - tempY;
							tempX = mouseX;
							tempY = mouseY;
							refreshSelf(deltaMoveX,deltaMoveY);
					} else {
							refreshSelf(0,0);
					}
			}
			return false;
	}

	function getImageXYMiniMap(e) {
		if (navigator.userAgent.indexOf("MSIE") != -1) {
			mouseX = event.clientX;
			mouseY = event.clientY;
		} else {
			mouseX = e.clientX;
			mouseY = e.clientY;
		}
	}
	
	this.desactiveTools = function() {
			fCoucheMiniMap.onmousemove = null;
			fCoucheMiniMap.onmouseup = null;
	};

	this.setNom(pNom);
	this.setPosition(pLeft,pTop,pWidth,pHeight);
	this.setZIndex(1000);
	fCoucheMiniMap = document.getElementById(this.getNom());
	fCoucheMiniMap.onmousedown = startRecenterMiniMap;

}

acai_carto_miniMap.prototype = new acai_commons_genericCouche;

