
var DualSelect_Separator = ";;;";
var DualSelect_SelectAvial = "_AvialSelect";
var DualSelect_SelectSelected = "_SelSelect";
var DualSelect_HiddenAviableItemsVal = "_AviableItemsVal";
var DualSelect_HiddenAviableItemsText = "_AviableItemsText";
var DualSelect_HiddenSelectedItemsVal = "_SelectedItemsVal";
var DualSelect_HiddenSelectedItemsText = "_SelectedItemsText";
var DualSelect_TxtFilter = "_TxtFilterA";


var DualSelect_TempObjSource, DualSelect_TempObjDestination;



function DualSelect_SetObjects(dualSelectId, bDoSelected)
{
	if (bDoSelected)
	{
		DualSelect_TempObjSource = 
			document.getElementById(dualSelectId + DualSelect_SelectAvial);
		DualSelect_TempObjDestination = 
			document.getElementById(dualSelectId + DualSelect_SelectSelected);
	}
	else
	{
		DualSelect_TempObjSource = 
			document.getElementById(dualSelectId + DualSelect_SelectSelected);
		DualSelect_TempObjDestination = 
			document.getElementById(dualSelectId + DualSelect_SelectAvial);
	}
}



function DualSelect_GetIndexForInsert(oSelect, oNode)
{
	if (oSelect.autosort == "false")
		return oSelect.length + 1;

	if (oSelect.length == 0) return 0;
	
	for (var i = 0; i < oSelect.length; i ++)
		if (oSelect[i].text > oNode.text)
			return i;
	return oSelect.length;
}



function DualSelect_MoveElement(dualSelectId, bDoSelected)
{
	DualSelect_SetObjects(dualSelectId, bDoSelected);

	if (DualSelect_TempObjSource.length == 0) return;

	iLast = 0;
	
	for (var i = 0; i < DualSelect_TempObjSource.length; i ++)
	{
		if (DualSelect_TempObjSource[i].selected)
		{
			iLast = i;
			var oNode = document.createElement("Option");
			oNode.text = DualSelect_TempObjSource[i].text;
			oNode.value = DualSelect_TempObjSource[i].value;
			DualSelect_TempObjSource.remove(i);
			nPos = (DualSelect_TempObjDestination.length + 1);
			DualSelect_TempObjDestination.options.add(oNode,
				DualSelect_GetIndexForInsert(DualSelect_TempObjDestination, oNode));
				
			i --;
		}
	}
	
	DualSelect_SaveSelection(dualSelectId);

	if (DualSelect_TempObjSource.length > 0 && iLast == 0)
		DualSelect_TempObjSource.selectedIndex = 0;
	else if (DualSelect_TempObjSource.length - 1 >= iLast)
		DualSelect_TempObjSource.selectedIndex = iLast;
	else if (DualSelect_TempObjSource.length >= 1)
		DualSelect_TempObjSource.selectedIndex = iLast - 1;
	
	DualSelect_ClearSelection(DualSelect_TempObjSource);
	DualSelect_TempObjSource.focus;
}



function DualSelect_MoveAll(dualSelectId, bDoSelected)
{
	DualSelect_SetObjects(dualSelectId, bDoSelected);	
	
	while (DualSelect_TempObjSource.length > 0)
	{
		oNode = document.createElement("Option");
		oNode.text = DualSelect_TempObjSource[0].text;
		oNode.value = DualSelect_TempObjSource[0].value;
		
		DualSelect_TempObjSource.remove(DualSelect_TempObjSource[0]);
		DualSelect_TempObjDestination.options.add(oNode,
			DualSelect_GetIndexForInsert(DualSelect_TempObjDestination, oNode));
	}
	
	DualSelect_SaveSelection(dualSelectId);
}



function DualSelect_ClearSelection(oSelect)
{
	for (var i = 0; i < oSelect.length; i ++)
		oSelect[i].selected = false;
}



function DualSelect_SaveSelection(dualSelectId)
{
	var oSelect = document.getElementById(
		dualSelectId + DualSelect_SelectSelected);
	var sValues = "";
	var sTexts = "";
	
	for (var i = 0; i < oSelect.length; i++)
	{
		sValues += oSelect[i].value + DualSelect_Separator;
		sTexts += oSelect[i].text + DualSelect_Separator;
	}
	
	document.getElementsByName(
		dualSelectId + DualSelect_HiddenSelectedItemsVal)[0].value = sValues;
	document.getElementsByName(
		dualSelectId + DualSelect_HiddenSelectedItemsText)[0].value = sTexts;
	
	if (eval("var_" + dualSelectId + "_AutoPostBack"))
		__doPostBack("dualSelectId", null);
}



// Functions for filter 

var DualSelect_Items = new Array();
var DualSelect_CheckedElement = new Array();


function DualSelect_SetFilter(dualSelectId)
{
	var sFilter = document.getElementById(dualSelectId + DualSelect_TxtFilter).value;
	oAvialList = document.getElementById(dualSelectId + DualSelect_SelectAvial);
	oSelectedList = document.getElementById(dualSelectId + DualSelect_SelectSelected);
	
	if (! DualSelect_IsElementChecked(dualSelectId))
		DualSelect_FillItemsArray(dualSelectId, oAvialList, oSelectedList);
	
	DualSelect_ClearSelectList(oAvialList);

	for (i = 0; i < DualSelect_Items.length; i ++)
	{
		if (! DualSelect_Items[i].isSelected && 
			DualSelect_Items[i].elementId == dualSelectId &&
			DualSelect_Items[i].text.toLowerCase().indexOf(sFilter.toLowerCase(), 0) == 0)
			oAvialList.options.add(new Option(DualSelect_Items[i].text, DualSelect_Items[i].value));
	}
}



function DualSelect_ClearSelectList(oSelect)
{
	while (oSelect.length != 0)
		oSelect.remove(0);
}



function DualSelect_ListItem(elementId, text, value, isSelected)
{
	this.elementId = elementId;
	this.text = text;
	this.value = value;
	this.isSelected = isSelected;
}



function DualSelect_IsElementChecked(dualSelectId)
{
	for (var i = 0; i < DualSelect_CheckedElement.length; i ++)
		if (DualSelect_CheckedElement[i] == dualSelectId) 
			return true;
	
	return false;
}



function DualSelect_FillItemsArray(dualSelectId, oAvialList, oSelectedList)
{
	var iLastIndex = DualSelect_Items.length;
	
	for (var i = 0; i < oAvialList.length; i ++)
	{
		DualSelect_Items[iLastIndex] = new DualSelect_ListItem(dualSelectId, 
			oAvialList[i].text, oAvialList[i].value, false);
		iLastIndex ++;
	}
	
	for (var i = 0; i < oSelectedList.length; i ++)
	{
		DualSelect_Items[iLastIndex] = new DualSelect_ListItem(dualSelectId, 
			oSelectedList[i].text, oSelectedList[i].value, true);
		iLastIndex ++;
	}
	
	DualSelect_CheckedElement[DualSelect_CheckedElement.length] = dualSelectId;
}
