﻿function OborMultiPicker_ShowPicker(listBox, valueHiddenField, postBackHiddenField)
{
	var valueHiddenFieldElement = document.getElementById(valueHiddenField);

	OborMultiPicker_HidePicker();
	window.currentOborMultiPicker = window.open('/Controls/OborMultiPickerDialog.aspx?selection=' + valueHiddenFieldElement.value, 'OborMultiPicker', 'scrollbars=no,resizable=no,width=800,height=320');
	window.currentOborMultiPicker_ListBox = listBox;
	window.currentOborMultiPicker_ValueHiddenField = valueHiddenField;
	window.currentOborMultiPicker_PostBackHiddenField = postBackHiddenField;
}

function OborMultiPicker_HidePicker()
{
	if (window.currentOborMultiPicker && !window.currentOborMultiPicker.closed)
	{
		window.currentOborMultiPicker_ListBox = null;
		window.currentOborMultiPicker_HiddenField = null;
		window.currentOborMultiPicker.close();
	}
}

function OborMultiPicker_SetValues(ids, names)
{

	var listBoxElement = document.getElementById(currentOborMultiPicker_ListBox);
	var hiddenFieldElement = document.getElementById(currentOborMultiPicker_ValueHiddenField);
	var postbackFieldElement = document.getElementById(currentOborMultiPicker_PostBackHiddenField);

	listBoxElement.options.length = 0;

	var hiddenFieldValue = new Array();
	hiddenFieldValue[0] = "|";
	for (var i = 0; i < ids.length; i++)
	{
		OborMultiPicker_AddItemToListBox(listBoxElement, ids[i], names[i]);
		hiddenFieldValue[hiddenFieldValue.length] = ids[i];
		hiddenFieldValue[hiddenFieldValue.length] = "|";
	}
	var oldHiddenFieldValue = hiddenFieldElement.value;
	var newHiddenFieldValue = hiddenFieldValue.join('');
	hiddenFieldElement.value = newHiddenFieldValue;

	// autopostback
	if (oldHiddenFieldValue != newHiddenFieldValue)
	{
		if (postbackFieldElement.value.length > 0)
		{
			eval(postbackFieldElement.value);
		}
	}
}

function OborMultiPicker_RemoveSelectedObory(listBox, valueHiddenField, postBackHiddenField)
{
	var listBoxElement = document.getElementById(listBox);
	var hiddenFieldElement = document.getElementById(valueHiddenField);
	var postbackFieldElement = document.getElementById(postBackHiddenField);

	var itemRemoved = false;
	
	for (var i = listBoxElement.length - 1; i >= 0; i--)
	{
		if (listBoxElement.options[i].selected)
		{
			hiddenFieldElement.value = hiddenFieldElement.value.replace('|' + listBoxElement.options[i].value + '|', '|'); // is not a ReplaceAll but who cares...
			listBoxElement.remove(i);
			itemRemoved = true;
		}
	}
	
	// autopostback
	if (itemRemoved)
	{
		if (postbackFieldElement.value.length > 0)
		{
			eval(postbackFieldElement.value);
		}
	}
}

// přidá do textboxu položku s danou hodnotou a textem
function OborMultiPicker_AddItemToListBox(listBoxElement, value, text)
{
	var newItem = document.createElement('option');
	newItem.text = text;
	newItem.value = value;
	try
	{
		listBoxElement.add(newItem, null);
	}
	catch (ex)
	{
		listBoxElement.add(newItem);
	}
}
