﻿function CUtvonaltervAddressBlock(pTopoliszMap, pUtvonaltervRouteSearch, bThereCanBeOnlyTwo)
{
	// A teljes rendelkezesre allo div
	this.divMain = null;

	this.pTopoliszMap = pTopoliszMap;
	this.pRouteSearch = pUtvonaltervRouteSearch;

	this.iOrder = 0;

	this.inputbox = null;
	this.panelHeader = null;
	
	this.pSearch = new CAddressSearch(this.pTopoliszMap);
	this.pSearch.SetDefaultText(g_Babel.GetWord('DefaultAddress'));

	//this.OnShow   = function(who, address){ alert(address.strAddress);};
	
	this.OnDelete = function(who){};
	this.OnMoveDown = function(who){};
	this.OnMoveUp = function(who){};
	this.OnMoveBack = function(who){};
	this.OnAddAddressBefore = function(who) {};
	this.OnOK = function(who, strEventSource) {};
	this.OnAddressFound = function(who, address) {};
	this.OnSearchEnded = function() {};
	this.divAddressFormatHelp = null;

	this.bThereCanBeOnlyTwo = bThereCanBeOnlyTwo;

	var me = this;
	this.SetAddress = function(address)
	{
		me.pSearch.SetAddress(address);
		//me.pSearch.Go();
	}
	this.GetAddress = function()
	{
		return me.pSearch.GetAddress();
	}

	this.Go = function()
	{
		return me.pSearch.Go("buttonShowAddress");
	}

	this.SetDiv = function(div)
	{
		me.divMain = div;
	}
	this.GetDiv = function()
	{
		return me.divMain;
	}

	this.OnOKInternal = function(strEventSource)
	{
		if(me.OnOK)
			me.OnOK(me, strEventSource);
	}
	this.pSearch.OnOK = me.OnOKInternal;


	this.SaveAddress = function()
	{
		var strAppID = "";
		if(g_InitSettings.strCountryName == "Románia")
			strAppID = "Ro";

		var address = me.GetAddress();
		if(address != null)
		{
			setCookie('strAddress'+ strAppID  + me.iOrder, address.strAddress);
			setCookie('strName'+ strAppID  + me.iOrder, (address.strName != null ? address.strName : ""));
			setCookie('dX'+ strAppID  + me.iOrder, address.dX);
			setCookie('dY'+ strAppID  + me.iOrder, address.dY);
			setCookie('dMinX'+ strAppID  + me.iOrder, address.dMinX);
			setCookie('dMinY'+ strAppID  + me.iOrder, address.dMinY);
			setCookie('dMaxX'+ strAppID  + me.iOrder, address.dMaxX);
			setCookie('dMaxY'+ strAppID  + me.iOrder, address.dMaxY);
		}
		else
		{
			var osido = new Date(0);
			setCookie('strAddress'+ strAppID  + me.iOrder, "", osido);
			setCookie('strName'+ strAppID  + me.iOrder, "", osido);
			setCookie('dX'+ strAppID  + me.iOrder, null, osido);
			setCookie('dY'+ strAppID  + me.iOrder, null, osido);
			setCookie('dMinX'+ strAppID  + me.iOrder, null, osido);
			setCookie('dMinY'+ strAppID  + me.iOrder, null, osido);
			setCookie('dMaxX'+ strAppID  + me.iOrder, null, osido);
			setCookie('dMaxY'+ strAppID  + me.iOrder, null, osido);
		}
	}
	
	this.LoadAddress = function()
	{
		var strAppID = "";
		if(g_InitSettings.strCountryName == "Románia")
			strAppID = "Ro";
		var strAddress = getCookie('strAddress' + strAppID + me.iOrder);
		if(strAddress != null && g_strAppID.toLowerCase() != "trafficnav")
		{
			var address = new CAddress(strAddress);
			address.strName = getCookie('strName' + strAppID + me.iOrder);
			address.dX = parseFloat(getCookie('dX' + strAppID + me.iOrder));
			address.dY = parseFloat(getCookie('dY' + strAppID + me.iOrder));
			address.dMinX = parseFloat(getCookie('dMaxX' + strAppID + me.iOrder));
			address.dMinY = parseFloat(getCookie('dMaxY' + strAppID + me.iOrder));
			address.dMaxX = parseFloat(getCookie('dMaxX' + strAppID + me.iOrder));
			address.dMaxY = parseFloat(getCookie('dMaxY' + strAppID + me.iOrder));
			me.pSearch.SetAddress(address);
		}
	}

	this.OnAddressFoundInternal = function(address)
	{
		if(me.OnAddressFound)
			me.OnAddressFound(me, address);
	}
	this.pSearch.OnAddressFound = me.OnAddressFoundInternal;

	this.OnSearchEndedInternal = function(bFound)
	{
		if(me.OnSearchEnded)
			me.OnSearchEnded(bFound);
	}
	this.pSearch.OnSearchEnded = me.OnSearchEndedInternal;

	this.Delete = function()
	{
		me.pSearch.SetAddress(null);
		if(me.OnDelete)
			me.OnDelete(me);
	}
	
	this.MoveDown = function()
	{
		if(me.OnMoveDown)
			me.OnMoveDown(me);
	}

	this.MoveUp = function()
	{
		if(me.OnMoveUp)
			me.OnMoveUp(me);
	}

	this.MoveBack = function()
	{
		if(me.OnMoveBack)
			me.OnMoveBack(me);
	}
	
	this.AddAddressBefore = function()
	{
		if(me.OnAddAddressBefore)
			me.OnAddAddressBefore(me);
	}

	this.Show = function()
	{
		if(me.divMain)
		{
			me.divMain.className = "TextResultDragAddress";
			while(me.divMain.firstChild)
				me.divMain.removeChild(me.divMain.firstChild);

			me.panelHeader = new Panel(me.divMain);
			me.ShowHeader();

			me.inputbox = new InputBox(me.divMain);
			me.pSearch.SetInput (me.inputbox.input);
			me.pSearch.Show ();
			var td = me.inputbox.AppendIconTd();
			var a = NewTag('a', td);
			new ImgLink(a, 22, 22, "design/BUTTON_delete_off.gif", "design/BUTTON_delete_on.gif", null, null, g_Babel.GetWord('hintDeleteAddress'), false);
			AddEvent(a, "click", me.Delete);

			var td = me.inputbox.AppendIconTd();
			var a = NewTag('a', td);
			new ImgLink(a, 22, 22, "design/BUTTON_display_off.gif", "design/BUTTON_display_on.gif", null, null, g_Babel.GetWord('hintShowAddress'), false);
			AddEvent(a, "click", me.pSearch.Go);

			var div = NewTag('div', me.divMain);
			me.pSearch.SetHintDiv(div);
		}
		
		if (me.OnShowRegistered) {
			try {
				me.OnShowRegistered(me);
			}
			catch (exp) {
				if(me.pTopoliszMap.OnError)
					me.pTopoliszMap.OnError(exp,'AddressBlock.OnShowRegistered');
			}
		}
	}

	this.ShowHeader = function()
	{
		if(me.panelHeader)
		{
			while(me.panelHeader.tr.firstChild)
				me.panelHeader.tr.removeChild(me.panelHeader.tr.firstChild);

			if (me.iOrder == 0)
			{
				me.panelHeader.CreateCaption(g_Babel.GetWord('Start'), "design/ICON_flag_green.gif", 14, 14);
			}
			else if (me.iOrder == GetArrayLength(me.pRouteSearch.arrAddressBlocks) - 1)
			{
				me.panelHeader.CreateCaption(g_Babel.GetWord('Stop'), "design/ICON_flag_red.gif", 14, 14);
			}
			else
			{
				//me.panelHeader.CreateCaption(me.iOrder + ". " + "köztes célpont", "design/ICON_flag_white.gif", 14, 14);
				me.panelHeader.CreateCaption(me.iOrder+1 + ". ", "design/ICON_flag_gray.gif", 14, 14);
			}

			var td = NewTag('td', me.panelHeader.tr);
			
			if (!me.bThereCanBeOnlyTwo) {
				if(me.iOrder != 0 && GetArrayLength(me.pRouteSearch.arrAddressBlocks) < me.pRouteSearch.MAXADDRESSBLOCKS)
				{
					var td = NewTag('td', me.panelHeader.tr);
					td.style.width = "15px";
					var a = NewTag('a', td);
					new ImgLink(a, 15, 14, "design/ICON_add2_off.gif", "design/ICON_add2_on.gif", null, null, g_Babel.GetWord('capInsertVisitNode'), false)
					AddEvent(a, "click", me.AddAddressBefore);
				}
				if(me.iOrder != GetArrayLength(me.pRouteSearch.arrAddressBlocks) - 1)
				{
					var td = NewTag('td', me.panelHeader.tr);
					td.style.width = "15px";
					var a = NewTag('a', td);
					new ImgLink(a, 15, 14, "design/ICON_down_off.gif", "design/ICON_down_on.gif", null, null, g_Babel.GetWord('hintMoveDown'), false)
					AddEvent(a, "click", me.MoveDown);
				}
				if(me.iOrder != 0)
				{
					var td = NewTag('td', me.panelHeader.tr);
					td.style.width = "15px";
					var a = NewTag('a', td);
					new ImgLink(a, 15, 14, "design/ICON_up_off.gif", "design/ICON_up_on.gif", null, null, g_Babel.GetWord('hintMoveUp'), false)
					AddEvent(a, "click", me.MoveUp);
				}
			}

		}
	}

	// Nyelvi beallitasok
	this.OnChangeLang = function()
	{
		me.ShowHeader();
		me.pSearch.SetDefaultText(g_Babel.GetWord('DefaultAddress'));
	}

	g_Babel.AddListener(this.OnChangeLang);
}

