﻿function TreeComboPicker(sBaseID, oComboBox, sDetailsFormat, sSelectedItemText)
{
var DisplayIdAttributeName = "DisplayID";var PathAttributeName = "Path";var m_sBaseID = sBaseID;this.m_sBaseID = m_sBaseID;var m_sSelectedItemText = sSelectedItemText;this.GetChildElement = GetChildElement;function GetChildElement(sExtension)
{
return document.getElementById(m_sBaseID + "_" + sExtension);}
var m_oDetails = new TreePickerDetails(this, this.GetChildElement("D"), sDetailsFormat, sBaseID);var m_oPickedIDs = this.GetChildElement("ID");var addButton = this.GetChildElement("Add");var alreadyAddedMessage = this.GetChildElement("Added");var m_oComboBox = oComboBox;oComboBox.add_itemsRequesting(OnClientItemsRequesting);oComboBox.add_selectedIndexChanged(OnClientSelectedIndexChanged);oComboBox.add_keyPressing(OnKeyPress);this.OnKeyPress = OnKeyPress;function OnKeyPress(sender, eventArgs)
{
if (eventArgs.get_domEvent().keyCode == Sys.UI.Key.enter)
{
eventArgs.get_domEvent().stopPropagation();eventArgs.get_domEvent().preventDefault();var item = sender.findItemByText(sender.get_text());if (item)
{
AddItem(item);sender.hideDropDown();}
}
}
this.OnClientItemsRequesting = OnClientItemsRequesting;function OnClientItemsRequesting(combo, eventArgs)
{
eventArgs.set_cancel(true);if (combo.get_items().get_count() == 0)
{
return;}
filter = unescape(eventArgs.get_text());EnableAllItems(combo);DisableItems(combo, filter);if (GetEnabledItemCount(combo) == 0)
{
EnableAllItems(combo);}
combo.showDropDown();combo.set_text(filter);}
function GetEnabledItemCount(combo)
{
var items = combo.get_items();var enabledItems = 0;for (i=0;i< items.get_count();i++)
{
if (items.getItem(i).get_enabled())
{
enabledItems++;}
}
return enabledItems;}
function EnableAllItems(combo)
{
var items = combo.get_items();for (i=0;i< items.get_count();i++)
{
items.getItem(i).enable();}
}
this.DisableItems = DisableItems;function DisableItems(combo, filterText)
{
var items = combo.get_items();var itemsToDisable = new Array();for (i=0;i< items.get_count();i++)
{
var item = items.getItem(i);var itemText = item.get_text();if (!itemText.toLowerCase().startsWith(filterText.toLowerCase()))
{
itemsToDisable.push(item);}
}
for (i=0;i< itemsToDisable.length;i++)
{
itemsToDisable[i].disable();}
}
this.OnClientSelectedIndexChanged = OnClientSelectedIndexChanged;function OnClientSelectedIndexChanged(sender, eventArgs)
{
var comboItem = sender.get_selectedItem();var sNodeID = comboItem.get_value();if (!IsItemAlreadyAdded(sNodeID))
{
ClearAlreadyAddedMessage();addButton.style.display = "inline";}
else
{
alreadyAddedMessage.style.visibility = "visible";}
EnableAllItems(sender);}
this.ClearAlreadyAddedMessage = ClearAlreadyAddedMessage;function ClearAlreadyAddedMessage()
{
alreadyAddedMessage.style.visibility = "hidden";}
this.AddItem = AddItem;function AddItem(comboItem)
{
if (comboItem == null)
{
comboItem = m_oComboBox.get_selectedItem();}
var sDisplayId = GetDisplayID(comboItem);var sPath = GetPath(comboItem);var sNodeID = comboItem.get_value();if (!IsItemAlreadyAdded(sNodeID))
{
ClearAlreadyAddedMessage();AddItemToList(sNodeID, sDisplayId, comboItem.get_text(), sPath);m_oComboBox.clearSelection();addButton.style.display = "none";m_oComboBox.set_text(m_sSelectedItemText);}
else
{
alreadyAddedMessage.style.visibility = "visible";}
return false;}
this.IsItemAlreadyAdded = IsItemAlreadyAdded;function IsItemAlreadyAdded(sNodeID)
{
var asIDs = m_oPickedIDs.value.split(",");for (var f=0;f<asIDs.length;f++)
{
if (asIDs[f] == sNodeID)
{
return true;}
}
return false;}
this.GetDisplayID = GetDisplayID;function GetDisplayID(item)
{
return item.get_attributes().getAttribute(DisplayIdAttributeName);}
this.GetDisplayID = GetDisplayID;function GetPath(item)
{
return item.get_attributes().getAttribute(PathAttributeName);}
this.RemoveItem = RemoveItem;function RemoveItem(eventArgs)
{
var removeButton = eventArgs.target;var removeButtonID = removeButton.ID;var id = removeButtonID.split('_')[removeButtonID.split('_').length-1];RemoveItemFromList(id);}
this.RemoveItemFromList = RemoveItemFromList;function RemoveItemFromList(id)
{
if (m_oPickedIDs.value.indexOf(",") == -1)
{
m_oPickedIDs.value = "";RemoveDetails(id);}
else
{
var asIDs = m_oPickedIDs.value.split(",");var sNewPickedIDs = "";for (var f=0;f<asIDs.length;f++)
{
if (asIDs[f] != id)
{
if (sNewPickedIDs.length > 0)
{
sNewPickedIDs += ",";}
sNewPickedIDs += asIDs[f];}
else
{
RemoveDetails(id);}
}
m_oPickedIDs.value = sNewPickedIDs;}
return false;}
this.AddItemToList = AddItemToList;function AddItemToList(sNodeID, sNodeDisplayID, sNodeText, sPath)
{
if ((m_oPickedIDs.value.length == 0) || (m_oPickedIDs.value.indexOf("#") == 0))
{
m_oPickedIDs.value = sNodeID;}
else
{
m_oPickedIDs.value += ("," + sNodeID);}
m_oDetails.AppendDetails(sNodeID, sNodeDisplayID, sNodeText, sPath);}
function RemoveNodeDetails(oNode)
{
RemoveDetails(oNode.ID);}
this.RemoveDetails = RemoveDetails;function RemoveDetails(sID)
{
var oElement = GetChildElement(sID);oElement.style.display = "none";}
}

if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();