﻿Type.registerNamespace("Telerik.Web.UI");

// ---------- Telerik.Web.UI.ExpandMode Enum ----------
Telerik.Web.UI.ExpandMode = function (){};
Telerik.Web.UI.ExpandMode.prototype = 
{
	MultipleExpandedItems:0,
	SingleExpandedItem :1,
	FullExpandedItem : 2
}
Telerik.Web.UI.RadPanelBar = function(element)
{
	Telerik.Web.UI.RadPanelBar.initializeBase(this, [element]);
	
	this._childTypeName = "Telerik.Web.UI.RadPanelItem";
	
	this._items = null;
	this._itemData = null;
	this._postBackReference = null;
	this._fullExpandedItem = false;
	this._singleExpandedItem = false;
	this._multipleExpandedItems = true;
	this._allowCollapseAllItems = false;
	this._expandedItem = null;
	this._selectedItem = null;
	this._skin = "";
	this._lastExpandedItem = null;
	this._focusedItem = null;
	this._expandedItemsJson = "[]";
	this._selectedItemsJson = "[]";
	this._logEntriesJson = "[]";
	this._clientState = {
		expandedItems:[],
		logEntries:[],
		selectedItems:[]
	};
	this._fireEvents = true;
	this._persistStateInCookie = false;
	this._cookieName = this.get_id();
	this._expandMode = Telerik.Web.UI.ExpandMode.MultipleExpandedItems;
	this._expandAnimation = new Telerik.Web.UI.AnimationSettings({});
	this._collapseAnimation = new Telerik.Web.UI.AnimationSettings({});
	
}

Telerik.Web.UI.RadPanelBar._createChildControls = function(parent, items)
{
	var itemData = parent.get_itemData();
	
	if (!itemData) 
		return;
	var  childListElement = parent.get_childListElement();
	
	if (!childListElement) return;
	var childElements = $telerik.getChildrenByTagName(childListElement, "li");
	Sys.Debug.assert(itemData.length == childElements.length, "Length of elements and json must be the same!");
	
	for (var i = 0; i < itemData.length; i++) 
	{	
	
		var item = new Telerik.Web.UI.RadPanelItem();
		items.add(item);
		item._initialize(itemData[i], childElements[i]);
	}
}

Telerik.Web.UI.RadPanelBar.prototype =
{	
	initialize : function ()
	{
		Telerik.Web.UI.RadPanelBar.callBaseMethod(this, 'initialize');
		this._eventMap.addHandlerForClassName("mouseover", "rpLink", this._onLinkMouseOver);
		this._eventMap.addHandlerForClassName("mouseout", "rpLink", this._onLinkMouseOut);
		this._eventMap.addHandlerForClassName("click", "rpLink", this._onLinkClick);
		this._eventMap.addHandlerForClassName("keydown", "rpLink", this._onLinkKeyDown);
		this._eventMap.addHandlerForClassName("blur", "rpLink", this._onLinkBlur);
		this._eventMap.addHandlerForClassName("deactivate", "rpLink", this._onLinkBlur);
		this._eventMap.addHandlerForClassName("focus", "rpLink", this._onLinkFocus);
		this._eventMap.addHandlerForClassName("activate", "rpLink", this._onLinkFocus);
		this._eventMap.addHandlerForClassName("contextmenu", "rpLink", this._contextMenuHandler);
		this._onWindowResizeDelegate = Function.createDelegate(this, this._windowResizeHandler);
		$addHandler(window, "resize", this._onWindowResizeDelegate);
		
		
		if (this.get_fullExpandedItem())
		{
			this.get_element().style.overflow = "hidden";
		}
		
		this._raiseEvent("load", null);
	},
	
	repaint : function ()
	{
		this._resizeHandler();
		this._repaintPanelBarItems();
	},
	
	_windowResizeHandler : function ()
	{
		this._resizeHandler();
		this._callRadResize();
	},
	
	_contextMenuHandler : function (e)
	{
		if (!e) e = event;
		var item = this._extractItemFromDomElement(e.eventMapTarget);
		var contextmenuArgs = new Telerik.Web.UI.RadPanelItemCancelEventArgs(item, e);
		this._raiseEvent("contextMenu", contextmenuArgs);
		if(contextmenuArgs.get_cancel())
		{
			e.preventDefault();
		}
	},
	
	_callRadResize : function ()
	{
		this._callRadShow();
	},
	
	_callRadShow : function ()
	{
		//Empty panelbar
		if (!this.get_childListElement())
			return;
		
		$telerik.repaintChildren(this);
		this._repaintPanelBarItems();
		
	},
	
	_repaintPanelBarItems: function ()
	{
		for (var i = 0; i < this.get_expandedItems().length; i++)
		{
			var expandedItem = this.get_expandedItems()[i];
			expandedItem._windowLoadHandler(false);
		}
	},
	
	_resizeHandler : function ()
	{
		if (this.disposed) return;
		
		if (this.get_expandedItem())
		{
			if (this.get_fullExpandedItem())// && !this.ExpandedItem.EaseInProgress)
			{
				var groupHeight = this._getGroupHeight();
				if (groupHeight > 0)
				{
					this.get_expandedItem()._setChildrenHeight(groupHeight);
				}
			}
		}
	},

	_renderInProgress : function()
	{
		//return this.get_element().offsetWidth == 0;
		
		return this.get_element() && this.get_element().setHeight == "true";
	},
	
	dispose : function ()
	{
		Telerik.Web.UI.RadPanelBar.callBaseMethod(this, 'dispose');
		
		$removeHandler(window, "resize", this._onWindowResizeDelegate);
		
		if (this._eventMap) 
		{
			this._eventMap.dispose();
			this._eventMap = null;
		}
	},
	
	_createChildControls: function()
	{
		this._children = new Telerik.Web.UI.RadPanelItemCollection(this);
		Telerik.Web.UI.RadPanelBar._createChildControls(this, this._children);
	},
		
		
	get_childListElement: function()
	{
		/// <exclude/>
		
		if (!this._childListElement) 
		{
			this._childListElement = $telerik.getFirstChildByTagName(this.get_element(), "ul", 0);
		}
		return this._childListElement;
	},
	
	// Public properties	
	disableEvents: function()
	{
		this._fireEvents = false;
	},
	
	enableEvents: function()
	{
		this._fireEvents = true;
	},
	
	findItemByText: function(text)
	{
		return this._findItemByText(text);
	},
	
	findItemByUrl: function(value)
	{
		return this._findItemByUrl(value);
	},
	
	findItemByAbsoluteUrl: function(value)
	{
		return this._findItemByAbsoluteUrl(value);
	},
	
	findItemByValue: function(value)
	{
		return this._findItemByValue(value);
	},
		
	findItemByAttribute : function (attributeName, attributeValue)
	{
		return this._findItemByAttribute(attributeName, attributeValue);
	},

	get_allItems : function()
	{
		return this._getAllItems();
	},
	
	get_items: function()
	{
		return this._getChildren();
	},
	
	set_items: function(value)
	{
		this._children = value;
	},
	
	get_itemData : function ()
	{
		return this._itemData;
	},
	
	set_itemData: function (value)
	{
		this._itemData = value;
	},
	
	set_fullExpandedItem : function(value)
	{
		this._fullExpandedItem = value;
	},
	
	set_singleExpandedItem : function(value)
	{
		this._singleExpandedItem = value;
	},
	
	set_multiExpandedItem : function(value)
	{
		this._multiExpandedItem = value;
	},
	
	get_fullExpandedItem : function()
	{
		return this.get_expandMode() == 2 ;
	},
	
	get_singleExpandedItem : function()
	{	
		
		return this.get_expandMode() == 1 || this.get_expandMode() == 2;
	},
	
	get_multiExpandedItem : function()
	{
		return this._multiExpandedItem ;
	},
	
	set_expandedItem : function(value)
	{
		this._expandedItem = value;
	},
	
	get_expandedItem : function()
	{
		return this._expandedItem ;
	},
		
	set_lastExpandedItem : function(value)
	{
		this.lastExpandedItem = value;
	},
	
	set_selectedItem : function(value)
	{
		this._selectedItem = value;
	},
	
	get_selectedItem : function()
	{
		return this._selectedItem ;
	},
		
	
	get_lastExpandedItem : function()
	{
		return this._lastExpandedItem ;
	},
	
	get_focusedItem: function()
	{
		return this._focusedItem;
	},
	
	set_focusedItem : function(value)
	{
		this._focusedItem = value;
	},
	get_expandMode : function()
	{
		return this._expandMode;
	},
	
	set_expandMode : function(value)
	{
		this._expandMode = value;		
	},
	
	set_persistStateInCookie  : function(value)
	{
		 this._persistStateInCookie  = value;	
	},
	
	get_persistStateInCookie  : function()
	{
		return this._persistStateInCookie ;
	},
	set_cookieName  : function(value)
	{
		 this._cookieName  = value;	
	},
	
	get_cookieName  : function()
	{
		return this._cookieName ;
	},
	set_allowCollapseAllItems : function(value)
	{
		 this._allowCollapseAllItems = value;	
	},
	
	get_allowCollapseAllItems : function()
	{
		return this._allowCollapseAllItems;
	},
	
	get_expandAnimation: function()
	{
		/// <exclude/>
		
		return this._expandAnimation;
	},
	
	set_expandAnimation: function(value)
	{
		/// <exclude/>
		
		var deserializedAnimationSettings = Sys.Serialization.JavaScriptSerializer.deserialize(value);
		this._expandAnimation = new Telerik.Web.UI.AnimationSettings(deserializedAnimationSettings);
	},
	
	get_collapseAnimation: function()
	{
		/// <exclude/>
		
		return this._collapseAnimation;
	},
	
	set_collapseAnimation: function(value)
	{
		/// <exclude/>
		
		var deserializedAnimationSettings = Sys.Serialization.JavaScriptSerializer.deserialize(value);
		this._collapseAnimation = new Telerik.Web.UI.AnimationSettings(deserializedAnimationSettings);
	},
	//public methods
	commitChanges : function()
	{
		this._logEntriesJson = this._log.serialize();
		Telerik.Web.UI.RadPanelBar.callBaseMethod(this, "commitChanges");
	},
	
	saveClientState : function()
	{
		if( this._persistStateInCookie)
		{
			this._persistState();
		}
		return "{\"expandedItems\":" + this._expandedItemsJson + 
			",\"logEntries\":" + this._logEntriesJson + 
				",\"selectedItems\":" + this._selectedItemsJson + "}";
				
				
	},

	_updateExpandState : function()
	{
		this._expandedItemsJson = 
			Sys.Serialization.JavaScriptSerializer.serialize(this._clientState.expandedItems);

		this.updateClientState();
	},
	
	_updateSelectedState : function()
	{
		this._selectedItemsJson = 
			Sys.Serialization.JavaScriptSerializer.serialize(this._clientState.selectedItems);
		this.updateClientState();
	},
	
	_registerExpandedItem : function (item)
	{
		var index = item._getHierarchicalIndex();
		
		if (Array.contains(this._clientState.expandedItems, index))
			return;
			
		Array.add(this._clientState.expandedItems, index);
		
		this._updateExpandState();		
	},
	
	_registerSelectedItem : function(item)
	{
		if (Array.contains(this._clientState.selectedItems, item._getHierarchicalIndex()))
		return;
		
		Array.add(this._clientState.selectedItems, item._getHierarchicalIndex());
		
		this._updateSelectedState();
		
	},
	
	_unregisterSelectedItem : function(item)
	{
		Array.remove(this._clientState.selectedItems, item._getHierarchicalIndex());
		this._updateSelectedState();
	},
	
	_unregisterExpandedItem : function(item)
	{
		Array.remove(this._clientState.expandedItems, item._getHierarchicalIndex());
		this._updateExpandState();
	},
	
	_unregisterItemFromClientState : function(item)
	{
		Array.remove(this._clientState.expandedItems, item._getHierarchicalIndex());
		Array.remove(this._clientState.selectedItems, item._getHierarchicalIndex());  
	},
	
	_unregisterItemChildrenFromClientState : function(item)
	{
		for(var i = 0; i < item.get_items().get_count(); i++)
		{
			this._unregisterItemHierarchyFromClientState(item.get_items().getItem(i));
		}
	},	
	
	_unregisterItemHierarchyFromClientState : function(item)
	{
		this._unregisterItemFromClientState(item);
		this._unregisterItemChildrenFromClientState(item);
	},	
	
	_backupClientState : function ()
	{
		this._backupExpandedItems = this.get_expandedItems();
		this._backupSelectedItems = this.get_selectedItems();
	},
	
	
	get_selectedItems : function ()
	{
		var selectedItems = [];
		for (var i = 0; i < this._clientState.selectedItems.length; i++)
		{
			var selectedItem = this._findItemByHierarchicalIndex(this._clientState.selectedItems[i]);
			Array.add(selectedItems, selectedItem);
		}
		return selectedItems;
	},
	
	get_expandedItems : function ()
	{
		var expandedItems = [];
		for (var i = 0; i < this._clientState.expandedItems.length; i++)
		{
			var expandedItem = this._findItemByHierarchicalIndex(this._clientState.expandedItems[i]);
			Array.add(expandedItems, expandedItem);
		}
		return expandedItems;
	},
	
	_restoreClientState : function ()
	{
		this._clientState.selectedItems = [];
		
		for (var i = 0; i < this._backupSelectedItems.length; i++)
		{
			Array.add(this._clientState.selectedItems, 
				this._backupSelectedItems[i]._getHierarchicalIndex());
		}
		
		this._clientState.expandedItems = [];
		
		for (var i = 0; i < this._backupExpandedItems.length; i++)
		{
			Array.add(this._clientState.expandedItems, 
				this._backupExpandedItems[i]._getHierarchicalIndex());
		}
		
		this._updateExpandState();
		this._updateSelectedState();
		
	},
	
	_persistState : function ()
	{
	
		var cookieValue = "{";
		if (this.get_selectedItem())
		{
			cookieValue += "\"SelectedItems\":" + this._selectedItemsJson + ",";
		}
		cookieValue += "\"ExpandedItems\":" + this._expandedItemsJson + "}";
	
		document.cookie = this.get_cookieName() + "=" + cookieValue  + ";path=/;expires=";

	},
	
	_getGroupHeight : function ()
	{	
		var expanedItem = this.get_expandedItem();
		var childListElement =  this.get_childListElement();
		if (expanedItem)
		{
			expanedItem._getAnimationContainer().style.display = "none";
			expanedItem.get_childListElement().style.display = "none";
		}

		var returnValue = this.get_element().offsetHeight - childListElement.offsetHeight;

		if (returnValue == 0)
		{
			returnValue = this.get_element().style.pixelHeight - childListElement.offsetHeight;
		}
		if (returnValue < 0)
		{
			returnValue = childListElement.offsetHeight;
			this.get_element().style.overflow = "auto";
		}
		if (expanedItem)
		{
			expanedItem._getAnimationContainer().style.display = "block";
			expanedItem.get_childListElement().style.display = "block";
		}

		return returnValue;
	},
	
	_raiseEvent : function(eventName, eventArgs)
	{
		if (this._fireEvents)
		{
			this.raiseEvent(eventName, eventArgs);
		}
	},
	_postback: function(hierarchicalIndex)
	{
		if (!this._postBackReference)
			return;
			
		var postbackFunction = this._postBackReference.replace("arguments", 
				hierarchicalIndex);
		eval(postbackFunction);
	},
	
	disable: function()
	{
		this.set_enabled(false);
	},
	
	enable: function()
	{
		this.set_enabled(true);
	},
	
	set_enabled: function(value)
	{
		Telerik.Web.UI.RadPanelBar.callBaseMethod(this, "set_enabled", [value]);
		
		if (!this.get_isInitialized())
			return;
		
		var element = this.get_element();
		var items = this.get_items();
		var itemCount = items.get_count();
		if (!value)
		{
			element.disabled = "disabled";
			var disabledCssClass = String.format("RadPanelBar_{0}_disabled", this._skin);
			this.toggleCssClass(disabledCssClass);
			this.disableEvents();
			
			for (var i = 0; i < itemCount; i++)
			{
				items.getItem(i).disable();
			}
		}
		else
		{
			element.disabled = "";
			var disabledCssClass = String.format("RadPanelBar_{0}_disabled", this._skin);
			this.toggleCssClass(disabledCssClass);
			this.enableEvents();
			
			for (var i = 0; i < itemCount; i++)
			{
				items.getItem(i).enable();
			}
		}
	},
	
	_onLinkClick: function(e)
	{
		var item = this._extractItemFromDomElement(e.eventMapTarget);
		
		if (!item._click(e))
		{
			e.preventDefault();
			return false;
		}
		
		return true;
	},
	
	_onLinkMouseOver: function(e)
	{
		var relatedTarget = e.eventMapRelatedTarget;
		var item = this._extractItemFromDomElement(e.eventMapTarget);

		var linkElement = item.get_linkElement();
		if (!relatedTarget || linkElement == relatedTarget ||
			$telerik.isDescendant(linkElement, relatedTarget))
		{
			return true;
		}
	
		item._hovered = true;
		if (item.get_isEnabled()) 
		{
			item._updateImageUrl();
		}
		
	
		this._raiseEvent("mouseOver", new Telerik.Web.UI.RadPanelMouseOverEventArgs(item, e));
			
		return true;
	},
	
	_onLinkMouseOut: function(e)
	{
		var relatedTarget = e.eventMapRelatedTarget;
		var item = this._extractItemFromDomElement(e.eventMapTarget);

		var linkElement = item.get_linkElement();
		
		if (!relatedTarget || !linkElement) 
		{
			return;
		}
		
		if (linkElement == relatedTarget ||
			$telerik.isDescendant(linkElement, relatedTarget))
		{
			return true;
		}

		item._hovered = false;
		if (item.get_isEnabled()) 
		{
			item._updateImageUrl();
		}
	
		this._raiseEvent("mouseOut", new Telerik.Web.UI.RadPanelMouseOutEventArgs(item, e));
		
		return true;
	},
	
	_onLinkBlur: function(e)
	{
		var item = this._extractItemFromDomElement(e.eventMapTarget);

		if (!item.get_isEnabled()) 
		{
			return true;
		}
		
		// The blur method will try to blur the link element if the item is not already marked as blurred.
		item._focused = false;
		
		item._blur(e);
		
		return true;
	},
		
	_onLinkFocus: function(e)
	{
		var item = this._extractItemFromDomElement(e.eventMapTarget);

		if (!item.get_isEnabled()) 
		{
			return true;
		}
		
		// The focus method will try to focus the link element if the item is not already marked as focused.
		item._focused = true;
		
		item.focus(e);
		
		return true;
	},
		
		
	_onLinkKeyDown: function(e)
	{
		var item = this._extractItemFromDomElement(e.eventMapTarget);
	
		if (!item.get_isEnabled()) 
		{
			return true;
		}
		
		return item._onKeyDown(e);
	},
	
	_childInserting : function (index, item, parent)
	{
		if (!parent._childControlsCreated) return;
		
		this._backupClientState();
	},

	_childInserted : function(index, item, parent)
	{
		if (!parent._childControlsCreated) return;
	
		this._restoreClientState();
		this._callRadResize();	
		Telerik.Web.UI.RadPanelBar.callBaseMethod(this, "_childInserted", [index, item, parent]);
		
	},

	_childrenCleared: function(parent)
	{
		this._unregisterItemChildrenFromClientState(parent);
		
		if(parent.collapse)
		{
			parent.collapse();
		}
			
		if (parent._slideWrapElement) 
		{
			parent._slideWrapElement.outerHTML = "";
			parent._slideWrapElement = null;
			parent._animationContainer = null;
		}
		parent._linkElement = null;
		parent._childListElement = null;

		Telerik.Web.UI.RadPanelBar.callBaseMethod(this, "_childrenCleared", [parent]);
	},
	
	_childRemoving : function (item)
	{
		item.unSelect();
		if(item.get_parent().get_items().get_count() == 1 && item.get_parent().collapse)
		{
			item.get_parent().collapse()
		}
		this.set_selectedItem(null);
		this._unregisterItemHierarchyFromClientState(item);	
		this._backupClientState();
		Telerik.Web.UI.RadPanelBar.callBaseMethod(this, "_childRemoving", [item]);
	},

	_childRemoved: function(item, parent)
	{
		
		var childElement = item.get_element();
		if (parent.get_items().get_count() == 0) 
		{

			if (parent._slide) 
			{
				parent._slide.dispose();
				parent._slide = null;
			}

			childElement = $telerik.getFirstChildByTagName(parent.get_element(), "div", 0);
			if(item.get_level()==0)
			{
				childElement = $telerik.getFirstChildByTagName(parent.get_element(), "ul", 0);
			}
			
			parent._linkElement = null;
			parent._childListElement = null;
			parent._slideWrapElement = null;
			parent._animationContainer = null;
		}
		if (childElement) 
		{
			childElement.outerHTML = "";
			
			if (childElement.parentNode) 
			{
				childElement.parentNode.removeChild(childElement);
			}
			childElement = null;
		}
		
		var itemsCount = parent.get_items().get_count();
		if (itemsCount > 0) 
		{
			var firstItemElement = parent.get_items().getItem(0).get_element();
			if (firstItemElement && !Sys.UI.DomElement.containsCssClass(firstItemElement, "rpFirst")) 
			{
				
				firstItemElement.className += " rpFirst";
				firstItemElement.className = firstItemElement.className.replace("rpLast rpFirst", "rpFirst rpLast");
			}
		}
		
		var lastIndex = itemsCount - 1;
		if (itemsCount > 0) 
		{
			var lastItemElement = parent.get_items().getItem(lastIndex).get_element();
			if (lastItemElement && !Sys.UI.DomElement.containsCssClass(lastItemElement, "rpLast")) 
			{
				lastItemElement.className += " rpLast";
			}
		}
		this._restoreClientState();	
		this._callRadResize();
		
		if(item.get_level() > 0 && parent.get_expanded()&& parent.get_childListElement())
		{
			if(parent.get_childListElement().offsetHeight+"px" != parent._getAnimationContainer().style.height)
			{
				parent._getAnimationContainer().style.height = parent.get_childListElement().offsetHeight;
			}
		}
		
		Telerik.Web.UI.RadPanelBar.callBaseMethod(this, "_childRemoved", [item, parent]);		

	},
	
	_createChildListElement : function()
	{
		var childListElement = document.createElement("ul");
		childListElement.className = "rpRootGroup";
		this.get_element().appendChild(childListElement);
		return childListElement;
	},
	
	// Events
	add_load: function(handler)
	{
		this.get_events().addHandler("load", handler);
	},
	
	remove_load: function(handler)
	{
		this.get_events().removeHandler("load", handler);
	},
	
	add_mouseOver: function(handler)
	{
		this.get_events().addHandler("mouseOver", handler);
	},
	
	remove_mouseOver: function(handler)
	{
		this.get_events().removeHandler("mouseOver", handler);
	},
	
	add_mouseOut: function(handler)
	{
		this.get_events().addHandler("mouseOut", handler);
	},
	
	remove_mouseOut: function(handler)
	{
		this.get_events().removeHandler("mouseOut", handler);
	},
	
	add_itemClicked: function(handler)
	{
		this.get_events().addHandler("itemClicked", handler);
	},
	
	remove_itemClicked: function(handler)
	{
		this.get_events().removeHandler("itemClicked", handler);
	},
	
	add_itemClicking: function(handler)
	{
		this.get_events().addHandler("itemClicking", handler);
	},
	
	remove_itemClicking: function(handler)
	{
		this.get_events().removeHandler("itemClicking", handler);
	},
	
	add_itemExpand: function(handler)
	{
		this.get_events().addHandler("itemExpand", handler);
	},
	
	remove_itemExpand: function(handler)
	{
		this.get_events().removeHandler("itemExpand", handler);
	},
	
	add_itemCollapse: function(handler)
	{
		this.get_events().addHandler("itemCollapse", handler);
	},
	
	remove_itemCollapse: function(handler)
	{
		this.get_events().removeHandler("itemCollapse", handler);
	},
	add_itemFocus: function(handler)
	{
		this.get_events().addHandler("itemFocus", handler);
	},
	
	remove_itemFocus: function(handler)
	{
		this.get_events().removeHandler("itemFocus", handler);
	},
	
	add_itemBlur: function(handler)
	{
		this.get_events().addHandler("itemBlur", handler);
	},
	
	remove_itemBlur: function(handler)
	{
		this.get_events().removeHandler("itemBlur", handler);
	},
	add_contextMenu: function(handler)
	{
		this.get_events().addHandler("contextMenu", handler);
	},
	
	remove_contextMenu: function(handler)
	{
		this.get_events().removeHandler("contextMenu", handler);
	}
	
}

Telerik.Web.UI.RadPanelBar._getChildListElement = function(element)
{
	var childListElement = $telerik.getFirstChildByTagName(element, "ul", 0);
	return childListElement;
}


Telerik.Web.UI.RadPanelBar._preInitialize = function(elementId)
{
	var element = $get(elementId);
	var childList = Telerik.Web.UI.RadPanelBar._getChildListElement(element)
	if (childList)
	{
		var childElements = $telerik.getChildrenByTagName(childList, "li");
		for (var i = 0; i < childElements.length; i++) 
		{	
			var slide =  $telerik.getFirstChildByTagName(childElements[i], "div", 0);
			if(slide && slide.style.display == "block")
			{
				Telerik.Web.UI.RadPanelBar._setHeight(slide,elementId);
			}
		}
	}
}

Telerik.Web.UI.RadPanelBar._setHeight = function(element,elementId)
{
	var groupHeight = Telerik.Web.UI.RadPanelBar._getGroupHeight(element, elementId);
	if (groupHeight > 0)
	{
		Telerik.Web.UI.RadPanelBar._setChildrenHeight(groupHeight, element);
		$get(elementId).setHeight = "true";
	}
	var childList = Telerik.Web.UI.RadPanelBar._getChildListElement(element)
	if (childList)
	  childList.style.width = "100%";
}

Telerik.Web.UI.RadPanelBar._setChildrenHeight = function (groupHeight, element)
{
	if (groupHeight < 0) groupHeight = 0;
	if (!groupHeight == "") groupHeight += "px";
	
	var childList = Telerik.Web.UI.RadPanelBar._getChildListElement(element)
	if (childList)
	{
		childList.style.height = groupHeight;
		element.style.height = groupHeight;
	}
	
}
Telerik.Web.UI.RadPanelBar._getGroupHeight = function (element, elementId)
{	
	var childList = Telerik.Web.UI.RadPanelBar._getChildListElement(element)
	if (childList==null)
	{
		return;
	}
	var panelElement = $get(elementId);
	var panelChildList = Telerik.Web.UI.RadPanelBar._getChildListElement(panelElement)
	element.style.display = "none";
	childList.style.display = "none";
	
	var returnValue = panelElement.offsetHeight - panelChildList.offsetHeight;

	if (returnValue < 0)
	{
		returnValue = panelChildList.offsetHeight;
		panelChildList.style.overflow = "auto";
	}
	
	element.style.display = "block";
	childList.style.display = "block";
	

	return returnValue;
},
	
Telerik.Web.UI.RadPanelBar.registerClass('Telerik.Web.UI.RadPanelBar', Telerik.Web.UI.ControlItemContainer);

if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();