﻿function ACCPedPunishValue(pedPunish, strText)
{
	this.pedPunish = pedPunish;
	this.strText = strText;
}

function ACCPedPunishPanel(idPanel, idPropDisplay, strPedPunishItem, strCaption, strImageUrl, arrSelectorItems, selectorManager)
{
	this.divPanel = null;
	this.strPedPunishItem = strPedPunishItem;
	this.arrSelectorItems = arrSelectorItems;
	this.selectorManager = null;
	this.bAdmin = false;

	//for JS Display
	this.divPropDisplay = null;
	this.strCaption = strCaption;
	this.strImageUrl = strImageUrl;

	var me = this;

	this.Init = function()
	{
		me.selectorManager = selectorManager;
		me.selectorManager.AddDetailedManager(me);

		me.divPanel = GetBlock(idPanel);
		if(me.divPanel)
		{
			if(me.arrSelectorItems == null)
				me.bAdmin = true;
			
			var arrInputs = me.divPanel.getElementsByTagName("input");
			for(var i=0; i<arrInputs.length; i++)
			{
				var input = arrInputs[i];
				if(input.type=="text")
					AddEvent(input, "change", me.OnValueChangedByUser);
				else
					AddEvent(input, "click", me.OnValueChangedByUser);
			}
		}
		me.divPropDisplay = GetBlock(idPropDisplay);
		if(me.divPropDisplay && me.strImageUrl != null && me.strImageUrl.length > 0)
		{
			me.ShowDisplayButton();
		}
	}
	
	this.OnValueChangedByUser = function()
	{
		if(me.selectorManager != null)
			me.selectorManager.ManagerValueChanged(me.strPedPunishItem, me.GetPedPunishValue());
		if(me.bAdmin)
			me.selectorManager.CreateOKButton();
	}
	

	this.GetInput = function(strType, iIndex)
	{
		var inputs = me.divPanel.getElementsByTagName("input");
		var iType = 0;
		for(var iAll=0; iAll<inputs.length; iAll++)
		{
			var input = inputs[iAll];
			if(input.type.toLowerCase() == strType.toLowerCase())
			{
				if(iType == iIndex)
					return input;
				iType++;
			}
		}
		return null;
	}
	
	this.GetPedPunishValue = function()
	{
		if(me.divPanel)
		{
			if(me.bAdmin)
			{
				return new PedPunish(me.GetInput("checkbox", 0).checked,
					me.GetInput("text", 0).value,
					me.GetInput("text", 1).value);
			}
			else
			{
				for(var i=0; i<me.arrSelectorItems.length; i++)
				{
					var input = me.GetInput("radio", i);
					if(input.checked)
						return me.arrSelectorItems[i].pedPunish;
				}
			}
		}
		return null;
	}
	

	this.SetPedPunishValue = function(pedPunish)
	{
		if(me.divPanel)
		{
			if(me.bAdmin)
			{
				var input = me.GetInput("checkbox",0);
				input.checked = pedPunish.bEnable;
				input = me.GetInput("text",0);
				input.value = pedPunish.dMultiplier;
				input = me.GetInput("text",1);
				input.value = pedPunish.iAbsolute;
			}
			else
			{
				for(var i=0; i<me.arrSelectorItems.length; i++)
				{
					var input = me.GetInput("radio", i);
					input.checked = (me.arrSelectorItems[i].pedPunish.Compare(pedPunish));
				}
			}
		}
	}

	this.SetPedSettingValue = function(pedSetting)
	{
		me.SetPedPunishValue(pedSetting[me.strPedPunishItem]);
		me.RemoveDynamicControl();
	}


	this.SetEvent = function(input, iSelectorIndex)
	{
		var onDynamicControlClick = function()
		{
			me.selectorManager.ManagerValueChanged(me.strPedPunishItem, me.arrSelectorItems[iSelectorIndex].pedPunish);
			me.selectorManager.CreateDynamicForm();
		}
		AddEvent(input, "click", onDynamicControlClick);
	}

	this.ShowDynamicControl = function()
	{
		me.RemoveDynamicControl();
		var fieldset = NewTag('fieldset', me.divPropDisplay);
		fieldset.setAttribute('id', "idDynamicControl");
		var legend = NewTag('legend', fieldset);
		NewTextTag(me.strCaption, legend);

		for(var i=0; i<me.arrSelectorItems.length; i++)
		{
			var div = NewTag('div', fieldset);
			var input = NewTag('input');
			input.setAttribute('type',"radio");
			input.value = i;
			if(me.arrSelectorItems[i].pedPunish.Compare(g_pedUser[me.strPedPunishItem]))
				input.checked = true;
			input.id = "radioPropDisplay"+i;
			input.name = "radioPropDisplay";
			AddTag(input, div);
			me.SetEvent(input, i);
			//AddEvent(input, "click", me.OnDynamicRadioClick);
			var label = NewTag('label', div);
			label.setAttribute('for', input.id);
			label.htmlFor = "radioPropDisplay"+i;

			NewTextTag(me.arrSelectorItems[i].strText, label);

			//if (input.checked)
			//	AddCssClass(label, "checked");
			//else
			//	RemoveCssClass(label, "checked");
		}

		var div = NewTag('div', fieldset);
		div.className = "UI_buttons";
		var button = NewTag('input');
		button.type = 'button';
		button.value = "Bezár";
		AddTag(button, div);
		AddEvent(button, "click", me.RemoveDynamicControl);
	}
	
	this.RemoveDynamicControl = function()
	{
		var div = GetBlock("idDynamicControl");
		if(div && div.parentNode)
			div.parentNode.removeChild(div);
	}

	this.SwitchDynamicControl = function()
	{
		var div = GetBlock("idDynamicControl");
		if(div)
			me.RemoveDynamicControl();
		//else
			me.ShowDynamicControl();
	}
	
	this.ShowDisplayButton = function()
	{
		var a = NewTag('a', me.divPropDisplay);
		a.setAttribute('href', 'javascript:void(0)');
		a.setAttribute('title', me.strCaption);
		AddEvent(a, "click", me.SwitchDynamicControl);
		var img = NewTag('img', a);
		SetImage(img, me.strImageUrl, null, null, me.strCaption);
	}
	
	
	me.Init();
}