﻿/// protected:
///	A terkep kezeloszerveit megvalosito osztaly
function CUtvonaltervMapPalette(pTopoliszMap, bMiniMapMode, bHasZoomIn, bHasZoomOut, bHasSlider, bHasModeSelector, bHasZoomRect, bHasDistance, bHasUndo, bHasFullScreen, bHasPrint)
{
	this.div = null;
	this.pSlider = null;
	this.pTopoliszMap = pTopoliszMap;
	this.pTopoliszMap.pMapPalette = this;
	this.bMiniMapMode = bMiniMapMode;

	this.iSliderThumbWidth = 16;
	this.imgDistanceMeasure = null;
	this.imgMiniMap = null;
	this.aFullScreen = null;
	this.aRestoreSreen = null;
	this.ZoomRectImgButton = null;
	this.MoveModeImgButton = null;
	this.bHasZoomIn = bHasZoomIn == undefined ? true : bHasZoomIn;
	this.bHasZoomOut = bHasZoomOut == undefined ? true : bHasZoomOut;
	this.bHasSlider = bHasSlider == undefined ? true : bHasSlider;
	this.bHasModeSelector = bHasModeSelector == undefined ? true : bHasModeSelector;
	this.bHasZoomRect = bHasZoomRect == undefined ? true : bHasZoomRect;
	this.bHasDistance = bHasDistance == undefined ? true : bHasDistance;
	this.bHasUndo = bHasUndo == undefined ? true : bHasUndo;
	this.bHasFullScreen = bHasFullScreen == undefined ? true : bHasFullScreen;
	this.bHasPrint = bHasPrint == undefined ? true : bHasPrint;

	// -------------------------------------

	var me = this;

	this.CreateButton = function(onclick, strToolTip)
	{
		var a = NewTag("a", me.div);
		a.className = 'UI_map_button';
		a.setAttribute('href', 'javascript:void(0)');

		var onmouseover = function(pEvent)
		{
			me.pTopoliszMap.ShowToolTip (pEvent, strToolTip);
		}
		
		AddEvent(a, 'click', onclick);
		AddEvent(a, 'mouseover', onmouseover);
		AddEvent(a, 'mouseout', me.pTopoliszMap.HideToolTip);
		
		var img = NewTag("img", a);
		img.className = "UI_map_button";
		return img;
	}


	this.Init = function()
	{
		me.div = NewTag("div", me.pTopoliszMap.GetMapDiv(), me.pTopoliszMap.GetMapDiv().firstChild);
		me.div.className = "mapPalette";
		DisableSelection (me.div);
		
		/* set palette background (absolute positioning) */
		var divBackground = NewTag("div", me.pTopoliszMap.GetMapDiv());
		divBackground.className = "mapPaletteBg";
		var divBackgroundUpper = NewTag("div", divBackground);
		divBackgroundUpper.className = "mapPaletteBgUpper";
		var divBackgroundMain = NewTag("div", divBackground);
		divBackgroundMain.className = "mapPaletteBgMain";
		var divBackgroundLower = NewTag("div", divBackground);
		divBackgroundLower.className = "mapPaletteBgBottom";		

		var a, div, img;

		if (me.bHasZoomIn) {
			// ** ZOOM-IN
			img = me.CreateButton(me.pTopoliszMap.ZoomIn, g_Babel.GetWord('ZoomIn', "Közelít"));
			new ImgButton(img, 17, 17, "design/ICON_zoom_in_on.gif", "design/ICON_zoom_in_on.gif", "design/ICON_zoom_in_on.gif", "design/ICON_zoom_in_on.gif", "", true);

			NewTag("br", me.div);
		}
		if (!me.bMiniMapMode && me.bHasSlider)
		{
			// ** SLIDER
			me.pSlider = new SliderControl(me.div);
			me.pSlider.iYTickNumber = me.pTopoliszMap.GetLevelNumber();

			var TickText = "";
			var i = 0;
			var unit = "?";

			for (i = me.pTopoliszMap.GetMaximumLevel(); i >= me.pTopoliszMap.GetMinimumLevel() ; i--)
			{
				var pd = me.pTopoliszMap.GetPixelDensityFromLevel (i);
				if (pd >= 1000)
				{
					pd = (pd)/1000;
					unit = "km";
				}
				else
				{
					pd = Math.round(pd);
					unit = "m";
				}

				TickText += "1 px = "+ pd + " " + unit;
				TickText += ";";
			}

			this.pSlider.TickTexts = TickText;
			this.pSlider.setSize(me.iSliderThumbWidth,70);
			this.pSlider.setTracking(false,true);
			this.pSlider.setValue(0);
			this.pSlider.setColors('transparent','transparent');
			this.pSlider.onThumbMoved=this.pTopoliszMap.ZoomModifiedBySlider;
		}

		if (me.bHasZoomOut) {
			// ** ZOOM-OUT
			img = me.CreateButton(me.pTopoliszMap.ZoomOut, g_Babel.GetWord('ZoomOut', "Távolít"));
			new ImgButton(img, 17, 17, "design/ICON_zoom_out_on.gif",  "design/ICON_zoom_out_on.gif", "design/ICON_zoom_out_on.gif", "design/ICON_zoom_out_on.gif", "", true);						
		}

		if(!me.bMiniMapMode)
		{
			if (me.bHasModeSelector) {
				// Huzo mode	
				NewTag('br', me.div);
				var divSpace = NewTag('div', me.div);
				divSpace.style.height = "20px";
				divSpace.style.width = "10px";
				
				img = me.CreateButton( me.SetMoveMode, "Mozgat");
				me.MoveModeImgButton = new ImgButton(img, 17, 17, "design/ICON_move.gif", "design/ICON_move.gif", "design/ICON_move.gif", "design/ICON_move_act.gif", "", true);
			}

			if (me.bHasZoomRect) {
				// ZoomRect mode
				NewTag('br', me.div);
				img = me.CreateButton( me.SetZoomRectMode, "Nagyító");
				me.ZoomRectImgButton = new ImgButton(img, 17, 17, "design/ICON_zoomrect.gif", "design/ICON_zoomrect.gif", "design/ICON_zoomrect.gif", "design/ICON_zoomrect_act.gif", "", true);			
				
				
				NewTag('br', me.div);
				var divSpace2 = NewTag('div', me.div);
				divSpace2.style.height = "10px";
				divSpace2.style.width = "10px";
			}
		}


		if (!me.bMiniMapMode)
		{
			if (me.bHasDistance) {
				NewTag("br", me.div);
				// Tavolsagmeres
				img = me.CreateButton(me.SwitchDistanceMeasure, g_Babel.GetWord('MeasureDistance',"Távolságmérés"));
				new ImgButton(img, 17, 17, "design/ICON_measure_on.gif","design/ICON_measure_on.gif", "design/ICON_measure_on.gif", "design/ICON_measure_on.gif", "", true);
				me.imgDistanceMeasure = img;
			}

			if (me.bHasUndo) {
				// Undo
				NewTag('br', me.div);
				img = me.CreateButton(me.pTopoliszMap.Undo, "Vissza");
				SetTransparentPng(img, "design/ICON_undo_on.gif", 17, 17, "");
				//DisableSelection (a);
			}
			
			// Show/hide minimap
			if (me.pTopoliszMap.bHasMiniMap) {
				me.divMinimapButton = NewTag("div", me.pTopoliszMap.GetMapDiv(), me.pTopoliszMap.GetMapDiv().firstChild);
				me.divMinimapButton.className = "mapPaletteMinimap";

				var a = NewTag('a', me.divMinimapButton);
				AddEvent(a, 'click', me.SwitchMiniMap);

				me.imgMiniMap = NewTag("img", a);
				me.imgMiniMap.style.verticalAlign = "bottom";
				if(me.pTopoliszMap.bMiniMapVisible)
					SetImage(me.imgMiniMap, "images/mapctrl/hideminimap_utvonalterv.png", 14, 14, "");
				else
					SetImage(me.imgMiniMap, "images/mapctrl/showminimap_utvonalterv.png", 14, 14, "");
				
			}
				
		}
		// NagyTérkép
		if (me.bHasFullScreen) {
			NewTag('br', me.div);
			if(me.bMiniMapMode)
				img = me.CreateButton(me.ShowOnMainMap, "Nagy térkép");
			else
				img = me.CreateButton(me.MaximizeMap, "Nagy térkép");
			new ImgButton(img, 17, 17, "design/ICON_maximize_on.gif", "design/ICON_maximize_on.gif", "design/ICON_maximize_on.gif", "design/ICON_maximize_on.gif", "", true);
		}

		if(!me.bMiniMapMode && me.bHasPrint)
		{
			// Print
			NewTag('br', me.div);
			img = me.CreateButton( me.Print, g_Babel.GetWord('Print', "Nyomtatás"));
			new ImgButton(img, 17, 17, "design/ICON_print_map_on.gif", "design/ICON_print_map_on.gif", "design/ICON_print_map_on.gif", "design/ICON_print_map_on.gif", "", true);
		}
		
		
		divBackgroundMain.style.height = (GetLayerHeight (me.div) - 10) + "px";
		
		me.SetMoveMode();
	}
	
	this.SetMoveMode = function ()
	{
		me.pTopoliszMap.SetMoveMode();
	}
	
	this.SetZoomRectMode = function ()
	{
		me.pTopoliszMap.SetZoomRectMode();
	}

	this.SwitchDistanceMeasure = function()
	{
		me.pTopoliszMap.OnOffMeasureDistance("button");
	}

	this.SwitchMiniMap = function ()
	{
		if (me.pTopoliszMap.bMiniMapVisible)
		{
			me.pTopoliszMap.HideMiniMap ();
			SetImage(me.imgMiniMap, "images/mapctrl/showminimap_utvonalterv.png", 14, 14, "");
		}
		else
		{
			me.pTopoliszMap.ShowMiniMap ();
			SetImage(me.imgMiniMap, "images/mapctrl/hideminimap_utvonalterv.png", 14, 14, "");
		}
	}
	
	this.MaximizeMap = function()
	{
		var div = GetBlock('tdLeftPart');
		if(GetStyle(div, 'display') == 'none')
		{
			div.style.display = '';
		}
		else
		{
			div.style.display = 'none';
		}
		Resizer.OnResize();	
		me.pTopoliszMap.Redraw();
		
	}

	this.ShowOnMainMap = function()
	{
		var mapdata = me.pTopoliszMap.GetMapData();
		g_TopoliszMap.ZoomToRect(mapdata.dMinX, mapdata.dMinY, mapdata.dMaxX, mapdata.dMaxY);

		var divPage = GetBlock("idPage");
		if(divPage)
			window.scrollTo(0, GetAbsLayerTop(divPage));
		else
			window.scrollTo(0,0);
	}

	this.Print = function()
	{
		me.pTopoliszMap.DrawPrintPreview();
		window.print();
	}

	me.Init();
}


