summaryrefslogtreecommitdiffstats
path: root/schemas/OMNA Schema-based Namespace Registry_fichiers/RadMenu.js
diff options
context:
space:
mode:
Diffstat (limited to 'schemas/OMNA Schema-based Namespace Registry_fichiers/RadMenu.js')
-rw-r--r--schemas/OMNA Schema-based Namespace Registry_fichiers/RadMenu.js1219
1 files changed, 1219 insertions, 0 deletions
diff --git a/schemas/OMNA Schema-based Namespace Registry_fichiers/RadMenu.js b/schemas/OMNA Schema-based Namespace Registry_fichiers/RadMenu.js
new file mode 100644
index 0000000..97602c5
--- /dev/null
+++ b/schemas/OMNA Schema-based Namespace Registry_fichiers/RadMenu.js
@@ -0,0 +1,1219 @@
+if (typeof window.RadMenuNamespace == "undefined")
+{
+ window.RadMenuNamespace = {};
+}
+
+if (typeof window.RadControlsNamespace == "undefined")
+{
+ window.RadControlsNamespace = {};
+}
+
+RadControlsNamespace.AppendStyleSheet = function(callback, clientID, pathToCssFile)
+{
+ if (!pathToCssFile)
+ {
+ return;
+ }
+
+ var isGecko = window.netscape && !window.opera;
+
+ if (!callback && isGecko)
+ {
+ //immediate css loading for Gecko
+ document.write("<" + "link" + " rel='stylesheet' type='text/css' href='" + pathToCssFile + "' />");
+ }
+ else
+ {
+ var linkObject = document.createElement("link");
+ linkObject.rel = "stylesheet";
+ linkObject.type = "text/css";
+ linkObject.href = pathToCssFile;
+ document.getElementsByTagName("head")[0].appendChild(linkObject);
+ }
+};
+
+RadMenuNamespace.ItemFlow = {Vertical : 0, Horizontal : 1};
+RadMenuNamespace.ExpandDirection = {Auto : 0, Up : 1, Down : 2, Left : 3, Right : 4};
+
+RadMenuNamespace.ExpandDirectionPropertyName = {"1" : 'bottom', "2" : 'top', "3" : 'right', "4" : 'left'};
+
+function RadMenu (element)
+{
+ this.DomElement = element;
+
+ this.ChildItemList = this.DomElement.getElementsByTagName("ul")[0];
+ this.StateField = document.getElementById(element.id + "_Hidden");
+ this.Items = [];
+ this.AllItems = [];
+ this.OpenedItem = null;
+ this.LastExpandedItem = null;
+ this.ExpandAnimation = {};
+ this.CollapseAnimation = {};
+ this.CollapseDelay = 500;
+ this.ExpandDelay = 100;
+ this.ID = element.id;
+ this.Skin = "Default";
+ this.RightToLeft = false;
+ this.EnableScreenBoundaryDetection = true;
+ this.InUpdate = false;
+ this.Initialized = false;
+
+ this.State = {};
+ this.ItemState = {};
+
+ this.CausesValidation = true;
+ this.Flow = RadMenuNamespace.ItemFlow.Horizontal;
+ this.ClickToOpen = false;
+ this.Enabled = true;
+ this.EnableAutoScroll = false;
+ this.Clicked = false; // click to open flag
+ this.OriginalZIndex = this.DomElement.style.zIndex;
+ this.StateFieldDetached = false;
+
+
+ this.Attributes = {};
+ RadControlsNamespace.EventMixin.Initialize(this);
+ RadControlsNamespace.DomEventMixin.Initialize(this);
+
+/* if (typeof(RadMenu.initializeBase) == "function")
+ {
+ RadMenu.initializeBase(this, [element]);
+ }*/
+}
+
+/*RadControlsNamespace.MsAjaxMixin.Initialize(RadMenu, 'RadMenu');*/
+
+RadMenu.Create = function ()
+{
+ var clientID = arguments[0];
+ /*
+ if (typeof ($create) == "function")
+ {
+
+ //the global RadMenu function object
+ var type = this;
+
+ //{name : 'value'} will trigger a menuInstance.set_name('value');
+ var properties = {};
+
+ //{itemClick : OnItemClick} will trigger a menuInstance.add_itemClick(OnItemClick);
+ var events = {};
+
+ //{"Treeview" : "RadTreeView1} will trigger a menuInstance.set_Treeview($find('RadTreeView1'));
+ var references = {};
+
+ //the DOM element that this component will attach to. crucial for partial updates and disposes
+ var domElement = $get(clientID);
+
+ return $create(type, properties, events, references, domElement);
+ }
+ else
+ {*/
+ var oldMenu = window[clientID];
+
+ if (oldMenu != null && oldMenu.Dispose)
+ {
+ oldMenu.Dispose();
+ }
+ var element = document.getElementById(clientID);
+ return new this(element);
+ /*}*/
+}
+
+RadMenu.JSONIncludeDeep = { "Attributes" : true };
+
+RadMenu.CreateState = function (instance)
+{
+ instance.InitialState = {};
+ for (var i in instance)
+ {
+ var type = typeof instance[i];
+ if (type == "number" || type == "string" || type == "boolean")
+ instance.InitialState[i] = instance[i];
+ }
+}
+
+RadMenu.GetFirstChildByTagName = function(parentNode, tagName)
+{
+ var child = parentNode.getElementsByTagName(tagName)[0];
+
+ if (child && child.parentNode == parentNode)
+ {
+ return child;
+ }
+ return null;
+}
+
+RadMenu.prototype.RenderInProgress = function()
+{
+ return this.DomElement.offsetWidth == 0 && RadControlsNamespace.Browser.IsIE;
+}
+
+RadMenu.prototype.Detach = function(e)
+{
+ if (!(RadControlsNamespace.Browser.IsIE) || document.readyState == "complete")
+ {
+ if (!this.StateFieldDetached)
+ {
+ var parentNode = this.DomElement.parentNode;
+ this.StateField.parentNode.removeChild(this.StateField);
+ parentNode.insertBefore(this.StateField, this.DomElement);
+ this.StateFieldDetached = true;
+ }
+
+ //To solve the IE7 issue (disappearing html elements)
+ this.DomElement.parentNode.removeChild(this.DomElement);
+ document.forms[0].insertBefore(this.DomElement, document.forms[0].firstChild);
+ this.DomElement.style.position = "absolute";
+ this.Detached = true;
+ }
+}
+
+RadMenu.prototype.ReAttach = function(e)
+{
+ if (!(RadControlsNamespace.Browser.IsIE) || document.readyState == "complete")
+ {
+ this.DomElement.parentNode.removeChild(this.DomElement);
+ this.StateField.parentNode.insertBefore(this.DomElement, this.StateField);
+ this.Detached = false;
+ }
+}
+
+RadMenu.prototype.Show = function(e)
+{
+ if (!this.IsContext)
+ {
+ return;
+ }
+
+ if (!this.RaiseEvent("OnClientContextShowing"))
+ {
+ return RadControlsNamespace.DomEvent.PreventDefault(e);
+ }
+
+ for (var i in RadMenuNamespace.ContextMenus)
+ {
+ RadMenuNamespace.ContextMenus[i].Hide();
+ }
+ var x = this.MouseEventX(e);
+ var y = this.MouseEventY(e);
+
+
+ if (this.RightToLeft)
+ {
+ this.ShowAt(x, y);
+ return this.ShowAt(x - this.ChildItemList.offsetWidth, y);
+ }
+
+ return this.ShowAt(x, y);
+}
+
+RadMenu.prototype.CreateRuntimeScroll = function (height)
+{
+ if (this.Scroll)
+ {
+ this.Scroll.SetHeight(height);
+ return;
+ }
+
+ this.BuildScrollObject(true);
+ this.Scroll.Initialize()
+
+ this.ScrollWrap = this.ChildItemList.parentNode;
+ this.Ease.Element = this.ScrollWrap;
+ this.Ease.Overlay.Element = this.ScrollWrap;
+ this.ScrollWrap.className = "scrollWrap " + this.ChildItemList.className;
+ this.ChildItemList.className = "active vertical";
+
+ this.Scroll.SetHeight(height);
+}
+
+RadMenu.prototype.ShowAt = function(x, y)
+{
+ if (!this.IsContext)
+ {
+ return;
+ }
+
+ if (!this.Detached)
+ {
+ this.Detach();
+ }
+ this.ShownAsContext = true;
+
+ this.Ease.ShowElements();
+
+ var documentSize = RadControlsNamespace.Screen.GetViewPortSize();
+
+ if (this.EnableAutoScroll && y + this.ChildItemList.offsetHeight > documentSize.height)
+ {
+ this.Ease.ShowElements();
+ this.Ease.UpdateContainerSize();
+ this.CreateRuntimeScroll(documentSize.height - y + "px");
+ }
+
+ if (this.ScrollWrap)
+ {
+ this.ScrollWrap.style.width = this.ChildItemList.offsetWidth + "px";
+ this.Scroll.Initialize();
+ }
+
+ this.Ease.UpdateContainerSize();
+
+ if (!this.WidthFixed)
+ {
+ this.WidthFixed = true;
+ this.FixItemWidth(this);
+ }
+ this.Position(x, y);
+ this.Ease.In();
+
+ this.RaiseEvent('OnClientContextShown', null);
+
+ return false;
+
+}
+
+RadMenu.prototype.Position = function (x, y)
+{
+ var portSize = RadControlsNamespace.Screen.GetViewPortSize();
+
+ x = Math.min(x, portSize.width - this.DomElement.offsetWidth);
+ y = Math.min(y, portSize.height - this.DomElement.offsetHeight);
+
+ if (isNaN(x)) x = 0;
+ if (isNaN(y)) y = 0;
+ this.DomElement.style.left = x + "px";
+ this.DomElement.style.top = y + "px";
+}
+
+RadMenu.prototype.MouseEventX = function(e)
+{
+ if (e.pageX)
+ {
+ return e.pageX;
+ }
+ else if (e.clientX)
+ {
+ if (RadControlsNamespace.Browser.StandardsMode)
+ {
+ return (e.clientX + document.documentElement.scrollLeft);
+ }
+ return (e.clientX + document.body.scrollLeft);
+ }
+};
+
+RadMenu.prototype.MouseEventY = function(e)
+{
+ if (e.pageY)
+ {
+ return e.pageY;
+ }
+ else if (e.clientY)
+ {
+ if (RadControlsNamespace.Browser.StandardsMode)
+ {
+ return (e.clientY + document.documentElement.scrollTop);
+ }
+ return (e.clientY + document.body.scrollTop);
+ }
+};
+
+RadMenu.prototype.EventSource = function(e)
+{
+ return RadControlsNamespace.DomEvent.GetTarget(e);
+}
+
+RadMenu.prototype.Hide = function()
+{
+ if (this.ShownAsContext)
+ {
+ if (this.Detached)
+ {
+ this.ReAttach();
+ }
+
+ this.Ease.Out();
+ this.ShownAsContext = false;
+
+ this.RaiseEvent('OnClientContextHidden', null);
+ }
+}
+
+RadMenu.prototype.Initialize = function (configObject, itemData)
+{
+ this.LoadConfiguration(configObject);
+ this.ItemData = itemData;
+
+
+ this.DetermineDirection();
+
+ this.ApplyRTL();
+
+ if (this.IsContext)
+ {
+ this.InitContextMenu();
+ }
+
+ this.CreateControlHierarchy(this, 0);
+
+ if (!this.Enabled)
+ {
+ this.Disable();
+ }
+
+ if (this.Flow == RadMenuNamespace.ItemFlow.Vertical)
+ {
+ this.FixRootItemWidth();
+ }
+
+ this.AttachEventHandlers();
+
+ this.Initialized = true;
+
+ RadMenu.CreateState(this);
+
+ this.RaiseEvent('OnClientLoad', null);
+};
+
+
+RadMenu.prototype.AttachEventHandlers = function ()
+{
+ var instance = this;
+
+ this.DomElement.RadShow = function ()
+ {
+ if (instance.Flow == RadMenuNamespace.ItemFlow.Vertical)
+ {
+ instance.FixRootItemWidth();
+ }
+ }
+
+ this.AttachDomEvent(window, "unload", "Dispose");
+
+ if (!this.ClickToOpen && RadControlsNamespace.Browser.IsIE)
+ {
+ this.AttachDomEvent(document, "mouseout", "MouseOutHandler");
+ }
+ if (this.ClickToOpen)
+ {
+ this.AttachDomEvent(document, "click", "CloseOpenedItems");
+ }
+
+ //To refresh the menu position - required for IE because the menu is relatively positioned.
+ this.AttachDomEvent(window, "resize", "RefreshPosition");
+}
+
+RadMenu.prototype.RefreshPosition = function(e)
+{
+ //Causing infinite window resizing when placed in iframe
+ if (!this.IsContext)
+ {
+ this.DomElement.style.cssText = this.DomElement.style.cssText;
+ }
+}
+
+RadMenu.prototype.MouseOutHandler = function(e)
+{
+ var sourceElement = RadControlsNamespace.DomEvent.GetTarget(e);
+ var destinationElement = RadControlsNamespace.DomEvent.GetRelatedTarget(e);
+ if (!destinationElement && !this.IsChildOf(this.DomElement, sourceElement))
+ {
+ //The mouse is out of the window or the current frame - close the menu
+ var instance = this;
+ setTimeout(function(){ instance.Close(); }, this.CollapseDelay);
+ }
+}
+
+RadMenu.prototype.CloseOpenedItems = function(e)
+{
+ var sourceElement = this.EventSource(e);
+
+ if (!this.IsChildOf(this.DomElement, sourceElement))
+ {
+ this.Close();
+
+ this.Clicked = false;
+ }
+}
+
+RadMenu.prototype.DetermineDirection = function ()
+{
+ var el = this.DomElement;
+ while (el.tagName.toLowerCase() != 'html')
+ {
+ if (el.dir)
+ {
+ this.RightToLeft = (el.dir.toLowerCase() == "rtl");
+ return;
+ }
+ el = el.parentNode;
+ }
+
+ this.RightToLeft = false;
+}
+
+RadMenu.prototype.ApplyRTL = function ()
+{
+ if (!this.RightToLeft) return;
+
+ if (this.RenderInProgress())
+ {
+ //When the menu is inside a TABLE call it when the window loads
+ this.AttachDomEvent(window, "load", "ApplyRTL");
+ return;
+ }
+
+ this.FixItemWidthInRTL();
+
+ if (RadControlsNamespace.Browser.IsIE)
+ {
+ this.DomElement.dir = "ltr";
+ }
+ if (!this.IsContext)
+ {
+ this.DomElement.className += " rtl RadMenu_" + this.Skin + "_rtl";
+ }
+ else
+ {
+ this.DomElement.className += " rtlcontext RadMenu_" + this.Skin + "_rtl";
+ }
+}
+
+
+RadMenu.prototype.BuildScrollObject = function (wrapNeeded)
+{
+ var isVertical = RadMenuNamespace.ItemFlow.Vertical == this.Flow;
+ var options = {PerTabScrolling : false, ScrollButtonsPosition : 1, ScrollPosition : 0};
+ this.Scroll = new RadControlsNamespace.Scroll(this.ChildItemList, isVertical, options);
+ this.Scroll.ScrollOnHover = true;
+ this.Scroll.LeaveGapsForArrows = false;
+ this.Scroll.WrapNeeded = wrapNeeded;
+ if (isVertical)
+ {
+ this.Scroll.LeftArrowClass = "topArrow";
+ this.Scroll.LeftArrowClassDisabled = "topArrowDisabled";
+ this.Scroll.RightArrowClass = "bottomArrow";
+ this.Scroll.RightArrowClassDisabled = "bottomArrowDisabled";
+ }
+}
+
+RadMenu.prototype.InitContextMenu = function ()
+{
+ if (this.ChildItemList.parentNode != this.DomElement)
+ {
+ this.ScrollWrap = this.ChildItemList.parentNode;
+
+ this.BuildScrollObject(false);
+ }
+
+
+ this.Ease = new RadControlsNamespace.Ease(
+ this.ScrollWrap || this.ChildItemList,
+ this,
+ 0,
+ 0,
+ null,
+ true
+
+ );
+
+ if (this.Ease.Overlay.Shim)
+ {
+ this.Ease.Overlay.Shim.id = this.DomElement.id + "IframeOverlay";
+ }
+
+ this.Flow = RadMenuNamespace.ItemFlow.Vertical;
+ this.Ease.SetSide("top");
+ if (RadControlsNamespace.Browser.IsOpera)
+ {
+ this.AttachDomEvent(document, "mousedown", "OnContextMenu");
+ }
+ else
+ {
+ this.AttachDomEvent(document, "contextmenu", "OnContextMenu");
+ }
+ this.AttachDomEvent(document, "click", "OnDocumentClick");
+
+ if (!RadMenuNamespace.ContextMenus)
+ {
+ RadMenuNamespace.ContextMenus = {};
+ }
+
+ if (!RadMenuNamespace.ContextElements)
+ {
+ RadMenuNamespace.ContextElements = {};
+ }
+
+ if (this.ContextMenuElementID)
+ {
+ RadMenuNamespace.ContextElements[this.ContextMenuElementID] = true;
+ }
+
+ RadMenuNamespace.ContextMenus[this.ID] = this;
+
+}
+
+RadMenu.prototype.OnContextMenu = function(e)
+{
+ if (RadControlsNamespace.Browser.IsOpera)
+ {
+ if (e.button != 2)
+ {
+ return;
+ }
+ }
+
+ this.ContextElement = document.getElementById(this.ContextMenuElementID);
+
+ if (this.ContextMenuElementID && !this.ContextElement)
+ {
+
+ return;
+ }
+
+ var sourceElement = this.EventSource(e);
+ if (this.ContextElement)
+ {
+ if (sourceElement == this.ContextElement || this.IsChildOf(this.ContextElement, sourceElement))
+ {
+ this.Show(e);
+ RadControlsNamespace.DomEvent.PreventDefault(e);
+ RadControlsNamespace.DomEvent.StopPropagation(e);
+ }
+ }
+ else if (!RadMenuNamespace.ContextElements[sourceElement.id])
+ {
+ this.Show(e);
+ RadControlsNamespace.DomEvent.PreventDefault(e);
+ RadControlsNamespace.DomEvent.StopPropagation(e);
+ }
+}
+
+RadMenu.prototype.IsChildOf = function(parent, child)
+{
+ if (child == parent)
+ {
+ return false;
+ }
+
+ while (child && (child != document.body))
+ {
+ if (child == parent)
+ {
+ return true;
+ }
+ try
+ {
+ child = child.parentNode;
+ }catch (e)
+ {
+ return false;
+ }
+ }
+
+ return false;
+};
+
+RadMenu.prototype.OnDocumentClick = function(e)
+{
+ var sourceElement = this.EventSource(e);
+
+ if (this.IsChildOf(this.DomElement, sourceElement))
+ {
+ if (this.ClickToOpen)
+ {
+ return;
+ }
+
+ if (!this.IsChildOfMenuItem(sourceElement))
+ {
+ return;
+ }
+ }
+
+ this.Hide();
+}
+
+RadMenu.prototype.IsChildOfMenuItem = function (element)
+{
+ var tagName = element.tagName.toLowerCase();
+ var className = element.className;
+
+ if (tagName == "span" && className.indexOf("text") > -1)
+ {
+ return true;
+ }
+
+ if (tagName == "a" && className.indexOf("link") > -1)
+ {
+ return true;
+ }
+
+ if (tagName == "img" && className == "leftImage")
+ {
+ return true;
+ }
+
+ return false;
+}
+
+RadMenu.prototype.Enable = function ()
+{
+ this.Enabled = true;
+ this.DomElement.disabled = "";
+ for (var i = 0; i < this.AllItems.length; i ++)
+ {
+ this.AllItems[i].Enable();
+ }
+}
+
+RadMenu.prototype.Disable = function ()
+{
+ this.Enabled = false;
+ this.DomElement.disabled = "disabled";
+ for (var i = 0; i < this.AllItems.length; i ++)
+ {
+ this.AllItems[i].Disable();
+ }
+}
+
+RadMenu.prototype.Focus = function ()
+{
+ this.DomElement.focus();
+}
+
+RadMenu.prototype.Dispose = function ()
+{
+ if (this.Disposed)
+ {
+ return;
+ }
+
+ this.Disposed = true;
+
+ for (var i = 0; i < this.AllItems.length; i ++)
+ {
+ this.AllItems[i].Dispose();
+ }
+
+ //TODO: Find the parent FORM
+ if (this.Detached && this.DomElement)
+ {
+ if(this.DomElement.parentNode)
+ {
+ this.DomElement.parentNode.removeChild(this.DomElement);
+ }
+ }
+
+ if (this.DomElement)
+ {
+ this.DomElement.RadShow = null;
+ }
+
+ this.DomElement = null;
+ this.ChildItemList = null;
+ this.StateField = null;
+ this.DisposeDomEventHandlers();
+ if (this.IsContext && RadMenuNamespace.ContextMenus)
+ {
+ RadMenuNamespace.ContextMenus[this.ID] = null;
+ }
+}
+
+RadMenu.prototype.CreateMenuItem = function (parent, domElement)
+{
+ var item = new RadMenuItem(domElement);
+ this.AddItemToParent(parent, item);
+ return item;
+};
+
+RadMenu.prototype.AddItemToParent = function(parent, item)
+{
+ item.Index = parent.Items.length;
+ parent.Items[parent.Items.length] = item;
+
+ item.GlobalIndex = this.AllItems.length;
+ this.AllItems[this.AllItems.length] = item;
+
+ item.Parent = parent;
+ item.Menu = this;
+}
+
+RadMenu.prototype.CreateControlHierarchy = function (parent, level)
+{
+ parent.Level = level;
+ var element = parent.ChildItemList;
+ if (!element)
+ {
+ return;
+ }
+
+ for (var i = 0; i < element.childNodes.length; i ++)
+ {
+ var domNode = element.childNodes[i];
+ if (domNode.nodeType == 3) continue;
+ var item = this.CreateMenuItem(parent, domNode);
+ item.Initialize();
+ if (level == 0)
+ {
+ item.PostInitialize();
+ }
+ this.CreateControlHierarchy(item, level + 1);
+ }
+};
+
+RadMenu.prototype.FixItemWidthInRTL = function ()
+{
+ var maxWidth = 0;
+ var maxItemWidth = 0;
+ var ul = this.ChildItemList;
+
+ for (var i = 0; i < ul.childNodes.length; i ++)
+ {
+ var li = ul.childNodes[i];
+
+ if (li.nodeType == 3)
+ continue;
+
+ var element = RadMenu.GetFirstChildByTagName(li, "a");
+
+ // Skip separators
+ if (!element)
+ {
+ continue;
+ }
+ if (this.RightToLeft)
+ {
+ var image = element.getElementsByTagName("img")[0];
+ if (image)
+ {
+ image.style.styleFloat = "left";
+ }
+ }
+
+ maxWidth = Math.max(RadControlsNamespace.Box.GetOuterWidth(element), maxWidth);
+
+ if (this.RightToLeft)
+ {
+ var image = element.getElementsByTagName("img")[0];
+ if (image)
+ {
+ image.style.styleFloat = "right";
+ }
+ }
+ }
+
+ for (var i = 0; i < ul.childNodes.length; i ++)
+ {
+ var li = ul.childNodes[i];
+
+ if (li.nodeType == 3) continue;
+
+ if (RadControlsNamespace.Browser.IsOpera)
+ {
+ li.style.cssFloat = "none";
+ }
+
+ var a = RadMenu.GetFirstChildByTagName(li, "a");
+ //Skip separators
+ if (!a) continue;
+
+ var imageOnly = !RadMenu.GetFirstChildByTagName(a, "span").firstChild;
+
+ if (!RadControlsNamespace.Browser.IsIE || !imageOnly)
+ {
+ RadControlsNamespace.Box.SetOuterWidth(a, RadControlsNamespace.Box.GetOuterWidth(a));
+ }
+ }
+
+ if (RadControlsNamespace.Browser.IsSafari)
+ {
+ ul.style.width = RadMenu.GetFirstChildByTagName(ul, "li").offsetWidth + "px";
+ }
+};
+
+
+RadMenu.prototype.FixItemWidth = function (item)
+{
+
+ var maxWidth = 0;
+ var ul = item.ChildItemList;
+ var widestItem = null;
+
+ for (var i = 0; i < ul.childNodes.length; i ++)
+ {
+ var li = ul.childNodes[i];
+
+ if (li.nodeType == 3)
+ continue;
+
+ var element = RadMenu.GetFirstChildByTagName(li, "a");
+
+
+ if (!element)
+ {
+ element = RadMenu.GetFirstChildByTagName(li, "div");
+ if (!element)
+ {
+ //Separator
+ continue;
+ }
+ }
+ if (this.RightToLeft)
+ {
+ var image = element.getElementsByTagName("img")[0];
+ if (image)
+ {
+ image.style.styleFloat = "left";
+ image.style.cssFloat = "left";
+ }
+ }
+ var width = RadControlsNamespace.Box.GetOuterWidth(element);
+
+ if (isNaN(width))
+ {
+ continue;
+ }
+
+ if (width > maxWidth)
+ {
+ maxWidth = width;
+ widestItem = li;
+ }
+
+ if (this.RightToLeft)
+ {
+ var image = element.getElementsByTagName("img")[0];
+ if (image)
+ {
+ image.style.styleFloat = "right";
+ image.style.cssFloat = "right";
+ }
+ }
+ }
+
+ var calculatedMaxWidth = 0;
+
+ for (var i = 0; i < ul.childNodes.length; i ++)
+ {
+ var li = ul.childNodes[i];
+
+ if (li.nodeType == 3) continue;
+
+ if (RadControlsNamespace.Browser.IsOpera)
+ {
+ li.style.cssFloat = "none";
+ }
+
+ var a = RadMenu.GetFirstChildByTagName(li, "a");
+
+ if (a)
+ {
+ var imageOnly = !RadMenu.GetFirstChildByTagName(a, "span").firstChild;
+
+ if (!RadControlsNamespace.Browser.IsIE || !imageOnly)
+ {
+ if (a.style.display != "none")
+ {
+ if (calculatedMaxWidth > 0)
+ {
+ a.style.width = calculatedMaxWidth + "px";
+ }
+ else
+ {
+ calculatedMaxWidth = RadControlsNamespace.Box.SetOuterWidth(a, maxWidth);
+ }
+ }
+ }
+ }
+ else
+ {
+ li.style.width = maxWidth + "px";
+ }
+ }
+
+ if (RadControlsNamespace.Browser.IsSafari)
+ {
+ if (widestItem)
+ {
+ ul.style.width = widestItem.offsetWidth + "px";
+ }
+ }
+};
+
+RadMenu.prototype.FixRootItemWidth = function()
+{
+ var instance = this;
+ var fixItemWidthClosure = function()
+ {
+ instance.FixItemWidth(instance);
+ }
+
+ if (this.RenderInProgress() || RadControlsNamespace.Browser.IsOpera || RadControlsNamespace.Browser.IsSafari)
+ {
+ if (window.addEventListener)
+ {
+ window.addEventListener('load', fixItemWidthClosure, false);
+ }
+ else
+ {
+ window.attachEvent('onload', fixItemWidthClosure);
+ }
+ }
+ else
+ {
+ fixItemWidthClosure();
+ }
+}
+
+RadMenu.prototype.FixListWidth = function (item)
+{
+ if (this.RightToLeft)
+ {
+ this.FixItemWidth(item);
+ }
+
+ var totalWidth = 0;
+ var ul = item.ChildItemList;
+ for (var i = 0; i < ul.childNodes.length; i ++)
+ {
+ var node = ul.childNodes[i];
+ if (node.nodeType == 3) continue;
+ totalWidth += node.offsetWidth;
+ // Additional
+ node.style.clear = "none";
+ }
+ ul.style.width = totalWidth + "px";
+};
+
+
+RadMenu.prototype.LoadConfiguration = function (configObject)
+{
+ for (var property in configObject)
+ {
+ this[property] = configObject[property];
+ }
+
+ if (!this.DefaultGroupSettings)
+ {
+ this.DefaultGroupSettings = {};
+ }
+
+ if (typeof this.DefaultGroupSettings.Flow == 'undefined')
+ {
+ this.DefaultGroupSettings.Flow = RadMenuNamespace.ItemFlow.Vertical;
+ }
+
+ if (typeof this.DefaultGroupSettings.ExpandDirection == 'undefined')
+ {
+ this.DefaultGroupSettings.ExpandDirection = RadMenuNamespace.ExpandDirection.Auto;
+ }
+
+ if (typeof this.DefaultGroupSettings.OffsetX == 'undefined')
+ {
+ this.DefaultGroupSettings.OffsetX = 0;
+ }
+
+ if (typeof this.DefaultGroupSettings.OffsetY == 'undefined')
+ {
+ this.DefaultGroupSettings.OffsetY = 0;
+ }
+
+};
+
+RadMenu.prototype.Close = function (configObject)
+{
+ if (this.OpenedItem)
+ {
+ this.OpenedItem.Close();
+ }
+};
+
+RadMenu.prototype.FindItemByText = function(text)
+{
+ for (var i = 0; i < this.AllItems.length; i++)
+ {
+ if (this.AllItems[i].Text == text)
+ {
+ return this.AllItems[i];
+ }
+ }
+
+ return null;
+};
+
+RadMenu.prototype.FindItemById = function(id)
+{
+ for (var i = 0; i < this.AllItems.length; i++)
+ {
+ if (this.AllItems[i].ID == id)
+ {
+ return this.AllItems[i];
+ }
+ }
+ return null;
+};
+
+RadMenu.prototype.FindItemByValue = function(value)
+{
+ for (var i = 0; i < this.AllItems.length; i++)
+ {
+ if (this.AllItems[i].Value == value)
+ {
+ return this.AllItems[i];
+ }
+ }
+ return null;
+};
+
+RadMenu.prototype.FindItemByUrl = function(url)
+{
+ for (var i = 0; i < this.AllItems.length; i++)
+ {
+ if (this.AllItems[i].NavigateUrl == url)
+ {
+ return this.AllItems[i];
+ }
+ }
+ return null;
+};
+
+RadMenu.prototype.SetContextElementID = function (id)
+{
+ if (!RadMenuNamespace.ContextElements)
+ {
+ RadMenuNamespace.ContextElements = {};
+ }
+
+ if (this.ContextMenuElementID)
+ {
+ RadMenuNamespace.ContextElements[this.ContextMenuElementID] = false;
+ }
+
+ this.ContextMenuElementID = id;
+ RadMenuNamespace.ContextElements[this.ContextMenuElementID] = false;
+}
+
+RadMenu.prototype.RecordState = function ()
+{
+ if (this.InUpdate || !this.Initialized)
+ {
+ return;
+ }
+
+
+ var state = RadControlsNamespace.JSON.stringify(this, this.InitialState, RadMenu.JSONIncludeDeep);
+ var itemState = []
+ for (var i in this.ItemState)
+ {
+ if (this.ItemState[i] == "") continue;
+ if (typeof this.ItemState[i] == "function") continue;
+ itemState[itemState.length] = this.ItemState[i];
+ }
+ this.StateField.value = "{\"State\":" + state + ",\"ItemState\":{" + itemState.join(",") + "}}";
+}
+
+RadMenu.prototype.PersistClientSideItems = function ()
+{
+ for (var i = 0; i < this.AllItems.length; i++)
+ {
+ var item = this.AllItems[i];
+
+ if (item.ClientSide)
+ {
+ item.RecordState(true);
+ }
+ }
+}
+
+RadMenu.prototype.SetAttribute = function (name, value)
+{
+ this.Attributes[name] = value;
+ this.RecordState();
+}
+
+RadMenu.prototype.GetAttribute = function (name)
+{
+ return this.Attributes[name];
+}
+
+RadMenu.CreateChildItemContainer = function(parentItem)
+{
+ var animationContainer = document.createElement("div");
+ animationContainer.className = "slide";
+ parentItem.DomElement.appendChild(animationContainer);
+
+ var groupContainer = document.createElement("ul");
+
+ if (parentItem.Flow == RadMenuNamespace.ItemFlow.Horizontal)
+ {
+ groupContainer.className = "horizontal group level" + parentItem.Level;
+ }else
+ {
+ groupContainer.className = "vertical group level" + parentItem.Level;
+ }
+ animationContainer.appendChild(groupContainer);
+}
+
+RadMenu.prototype.AddItem = function(item)
+{
+ var domElement = document.createElement("li");
+ domElement.className = "item last";
+
+ var linkElement = document.createElement("a");
+
+ linkElement.className = "link";
+
+ var textElement = document.createElement("span");
+ textElement.className = "text";
+
+ linkElement.appendChild(textElement);
+
+ domElement.appendChild(linkElement);
+
+ item.SetDomElement(domElement);
+
+ var menu = this.Menu || this;
+
+ if (menu != this && this.Items.length == 0)
+ {
+ RadMenu.CreateChildItemContainer(this);
+ this.InitializeDomElements();
+ this.InitializeAnimation();
+ }
+
+ this.ChildItemList.appendChild(domElement);
+
+ menu.AddItemToParent(this, item);
+ item.Level = this.Level + 1;
+ var text = item.Text;
+ item.Text = "";
+ item.ID = this.ID + "_m" + (this.Items.length - 1);
+ item.Initialize();
+ item.SetText(text);
+
+
+ if (this.Menu)
+ {
+ item.ParentClientID = this.ID;
+ }
+
+ linkElement.href = "#";
+
+ if (this.Items.length > 1)
+ {
+ var previousDomElement = this.Items[this.Items.length - 2].DomElement;
+ previousDomElement.className = previousDomElement.className.replace(" last", "");
+ }
+}
+
+//BEGIN_ATLAS_NOTIFY
+if (typeof(Sys) != "undefined")
+{
+ if (Sys.Application != null && Sys.Application.notifyScriptLoaded != null)
+ {
+ Sys.Application.notifyScriptLoaded();
+ }
+}
+//END_ATLAS_NOTIFY
OpenPOWER on IntegriCloud