﻿/// protected:
///	A terkep kezeloszerveit megvalosito osztaly
function CACCMapPalette(pTopoliszMap, bMiniMapMode)
{
	this.div = null;
	this.pSlider = null;
	this.pTopoliszMap = pTopoliszMap;
	this.pTopoliszMap.pMapPalette = this;
	this.bMiniMapMode = bMiniMapMode;

    this.iMoveMapAmountInPixels = 40;
	this.iSliderThumbWidth = 22;
	this.iSliderThumbHeight = 10;
	this.imgDistanceMeasure = null;
	this.imgMiniMap = null;
	this.aFullScreen = null;
	this.aRestoreSreen = null;
	this.ZoomRectImgButton = null;
	this.MoveModeImgButton = null;

	// -------------------------------------

	var me = this;

	this.CreateButton = function(onclick, strToolTip, paletteDiv)
	{
		var a;
		if (paletteDiv == "undefined")
		    a = NewTag("a", me.div);
		else
		    a = NewTag("a", paletteDiv);
		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()
	{
		if(!me.pTopoliszMap || ! me.pTopoliszMap.GetMapDiv())
			return;
		me.div = NewTag("div", me.pTopoliszMap.GetMapDiv(), me.pTopoliszMap.GetMapDiv().firstChild);
		me.div.className = "mapPalette";
		DisableSelection (me.div);

		var a, div, img;

		if (!me.bMiniMapMode)
		{
			var tab = NewTag('table', me.div);
			var tbod = NewTag('tbody', tab);
			var tr1 = NewTag('tr', tbod);
			var tr2 = NewTag('tr', tbod);
			var tr3 = NewTag('tr', tbod);
			var tdTopLeft = NewTag('td', tr1);
			var tdTopCent = NewTag('td', tr1);
			var tdTopRigh = NewTag('td', tr1);
			var tdMidLeft = NewTag('td', tr2);
			var tdMidCent = NewTag('td', tr2);
			var tdMidRigh = NewTag('td', tr2);			
			var tdBotLeft = NewTag('td', tr3);
			var tdBotCent = NewTag('td', tr3);
			var tdBotRigh = NewTag('td', tr3);

			tab.cellPadding = 0;
			tab.cellSpacing = 0;
			tab.style.margin = "0px auto";

			tdTopLeft.className = "naviTopLeft";
			tdTopCent.className = "naviTopCenter";
			tdTopRigh.className = "naviTopRight";
			tdMidLeft.className = "naviMiddleLeft";
			tdMidCent.className = "naviMiddleCenter";
			tdMidRigh.className = "naviMiddleRight";
			tdBotLeft.className = "naviBottomLeft";
			tdBotCent.className = "naviBottomCenter";
			tdBotRigh.className = "naviBottomRight";

			var moveleft = function()
			{
				me.pTopoliszMap.MoveMapYX(0, me.iMoveMapAmountInPixels);
			}

			var moveright = function()
			{
				me.pTopoliszMap.MoveMapYX(0, -me.iMoveMapAmountInPixels);
			}

			var moveup = function()
			{
				me.pTopoliszMap.MoveMapYX(me.iMoveMapAmountInPixels, 0);
			}

			var movedown = function()
			{
				me.pTopoliszMap.MoveMapYX(-me.iMoveMapAmountInPixels, 0);
			}
			
			var moveupleft = function()
			{
				me.pTopoliszMap.MoveMapYX(me.iMoveMapAmountInPixels, me.iMoveMapAmountInPixels);
			}

			var moveupright = function()
			{
				me.pTopoliszMap.MoveMapYX(me.iMoveMapAmountInPixels, -me.iMoveMapAmountInPixels);
			}

			var movedownleft = function()
			{
				me.pTopoliszMap.MoveMapYX(-me.iMoveMapAmountInPixels, me.iMoveMapAmountInPixels);
			}

			var movedownright = function()
			{
				me.pTopoliszMap.MoveMapYX(-me.iMoveMapAmountInPixels, -me.iMoveMapAmountInPixels);
			}

			var mouseoverleft = function()
			{
				tdMidLeft.className = "naviMiddleLeftAlt";
			}

			var mouseoutleft = function()
			{
				tdMidLeft.className = "naviMiddleLeft";
			}

			var mouseoverright = function()
			{
				tdMidRigh.className = "naviMiddleRightAlt";
			}

			var mouseoutright = function()
			{
				tdMidRigh.className = "naviMiddleRight";
			}

			var mouseovertop = function()
			{
				tdTopCent.className = "naviTopCenterAlt";
			}

			var mouseouttop = function()
			{
				tdTopCent.className = "naviTopCenter";
			}
			var mouseoverbottom = function()
			{
				tdBotCent.className = "naviBottomCenterAlt";
			}

			var mouseoutbottom = function()
			{
				tdBotCent.className = "naviBottomCenter";
			}
			
			var mouseovertopleft = function()
			{
				tdTopCent.className = "naviTopCenterAlt";
				tdMidLeft.className = "naviMiddleLeftAlt";
			}
			
			var mouseouttopleft = function()
			{
				tdTopCent.className = "naviTopCenter";
				tdMidLeft.className = "naviMiddleLeft";
			}

			var mouseovertopright = function()
			{
				tdTopCent.className = "naviTopCenterAlt";
				tdMidRigh.className = "naviMiddleRightAlt";
			}
			
			var mouseouttopright = function()
			{
				tdTopCent.className = "naviTopCenter";
				tdMidRigh.className = "naviMiddleRight";
			}

			var mouseoverbottomleft = function()
			{
				tdBotCent.className = "naviBottomCenterAlt";
				tdMidLeft.className = "naviMiddleLeftAlt";
			}
			
			var mouseoutbottomleft = function()
			{
				tdBotCent.className = "naviBottomCenter";
				tdMidLeft.className = "naviMiddleLeft";
			}

			var mouseoverbottomright = function()
			{
				tdBotCent.className = "naviBottomCenterAlt";
				tdMidRigh.className = "naviMiddleRightAlt";
			}
			
			var mouseoutbottomright = function()
			{
				tdBotCent.className = "naviBottomCenter";
				tdMidRigh.className = "naviMiddleRight";
			}

			AddEvent(tdTopCent, 'click', moveup);
			AddEvent(tdTopCent, 'mouseover', mouseovertop);
			AddEvent(tdTopCent, 'mouseout', mouseouttop);
			AddEvent(tdMidLeft, 'click', moveleft);
			AddEvent(tdMidLeft, 'mouseover', mouseoverleft);
			AddEvent(tdMidLeft, 'mouseout', mouseoutleft);
			AddEvent(tdMidRigh, 'click', moveright);			
			AddEvent(tdMidRigh, 'mouseover', mouseoverright);
			AddEvent(tdMidRigh, 'mouseout', mouseoutright);
			AddEvent(tdBotCent, 'click', movedown);
			AddEvent(tdBotCent, 'mouseover', mouseoverbottom);
			AddEvent(tdBotCent, 'mouseout', mouseoutbottom); 	
			
			AddEvent(tdTopLeft, 'click', moveupleft);
			AddEvent(tdTopLeft, 'mouseover', mouseovertopleft);
			AddEvent(tdTopLeft, 'mouseout', mouseouttopleft);	
			AddEvent(tdTopRigh, 'click', moveupright);
			AddEvent(tdTopRigh, 'mouseover', mouseovertopright);
			AddEvent(tdTopRigh, 'mouseout', mouseouttopright);	
			AddEvent(tdBotLeft, 'click', movedownleft);
			AddEvent(tdBotLeft, 'mouseover', mouseoverbottomleft);
			AddEvent(tdBotLeft, 'mouseout', mouseoutbottomleft);	
			AddEvent(tdBotRigh, 'click', movedownright);
			AddEvent(tdBotRigh, 'mouseover', mouseoverbottomright);
			AddEvent(tdBotRigh, 'mouseout', mouseoutbottomright);	
		}

		var paletteDiv = NewTag('div', me.div);
		paletteDiv.style.margin = "0px auto";
		paletteDiv.style.width = "40px";

		// ** ZOOM-IN
		img = me.CreateButton(me.pTopoliszMap.ZoomIn, g_Babel.GetWord('ZoomIn'), paletteDiv);
		new ImgButton(img, 40, 27, "images/acc/ICON_zoom_in_on.png", "images/acc/ICON_zoom_in_on.png", "images/acc/ICON_zoom_in_on.png", "images/acc/ICON_zoom_in_on.png", "", true);
		NewTag("br", paletteDiv);

		if (!me.bMiniMapMode)
		{
			var sliderDiv = NewTag('div', paletteDiv);
			sliderDiv.className = "slider_container";
			
			// ** SLIDER
			me.pSlider = new SliderControl(sliderDiv);
			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,140);
			this.pSlider.setPosition(9, 0);
			this.pSlider.setThumbSize(me.iSliderThumbHeight);
			this.pSlider.setTracking(false,true);
			this.pSlider.setValue(0);
			this.pSlider.setColors('transparent','transparent');
			this.pSlider.onThumbMoved=this.pTopoliszMap.ZoomModifiedBySlider;
		}

		// ** ZOOM-OUT
		img = me.CreateButton(me.pTopoliszMap.ZoomOut, g_Babel.GetWord('ZoomOut'), paletteDiv);
		new ImgButton(img, 40, 27, "images/acc/ICON_zoom_out_on.png",  "images/acc/ICON_zoom_out_on.png", "images/acc/ICON_zoom_out_on.png", "images/acc/ICON_zoom_out_on.png", "", true);						
		NewTag("br", paletteDiv);
		
		// Quick Route Viewer
		var div = NewTag('div', me.div.parentNode, me.div.nextSibling);
		div.setAttribute('id', "idQuickRouteViewer");
		div.className = "quickrouteviewer";
		div.style.display = "none";
		
		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();
}


