diff options
Diffstat (limited to 'gimsis/Datoteke_za_Moj urnik/ScriptResource_003.js')
-rw-r--r-- | gimsis/Datoteke_za_Moj urnik/ScriptResource_003.js | 696 |
1 files changed, 696 insertions, 0 deletions
diff --git a/gimsis/Datoteke_za_Moj urnik/ScriptResource_003.js b/gimsis/Datoteke_za_Moj urnik/ScriptResource_003.js new file mode 100644 index 0000000..66ade99 --- /dev/null +++ b/gimsis/Datoteke_za_Moj urnik/ScriptResource_003.js @@ -0,0 +1,696 @@ +if (!window.Sys) { window.Sys = {}; }
+if (!Sys.WebForms) { Sys.WebForms = {}; }
+Sys.WebForms.Menu = function(options) {
+ this.items = [];
+ this.depth = options.depth || 1;
+ this.parentMenuItem = options.parentMenuItem;
+ this.element = Sys.WebForms.Menu._domHelper.getElement(options.element);
+ if (this.element.tagName === 'DIV') {
+ var containerElement = this.element;
+ this.element = Sys.WebForms.Menu._domHelper.firstChild(containerElement);
+ this.element.tabIndex = options.tabIndex || 0;
+ options.element = containerElement;
+ options.menu = this;
+ this.container = new Sys.WebForms._MenuContainer(options);
+ Sys.WebForms.Menu._domHelper.setFloat(this.element, this.container.rightToLeft ? "right" : "left");
+ }
+ else {
+ this.container = options.container;
+ this.keyMap = options.keyMap;
+ }
+ Sys.WebForms.Menu._elementObjectMapper.map(this.element, this);
+ if (this.parentMenuItem && this.parentMenuItem.parentMenu) {
+ this.parentMenu = this.parentMenuItem.parentMenu;
+ this.rootMenu = this.parentMenu.rootMenu;
+ if (!this.element.id) {
+ this.element.id = (this.container.element.id || 'menu') + ':submenu:' + Sys.WebForms.Menu._elementObjectMapper._computedId;
+ }
+ if (this.depth > this.container.staticDisplayLevels) {
+ this.displayMode = "dynamic";
+ this.element.style.display = "none";
+ this.element.style.position = "absolute";
+ if (this.rootMenu && this.container.orientation === 'horizontal' && this.parentMenu.isStatic()) {
+ this.element.style.top = "100%";
+ if (this.container.rightToLeft) {
+ this.element.style.right = "0px";
+ }
+ else {
+ this.element.style.left = "0px";
+ }
+ }
+ else {
+ this.element.style.top = "0px";
+ if (this.container.rightToLeft) {
+ this.element.style.right = "100%";
+ }
+ else {
+ this.element.style.left = "100%";
+ }
+ }
+ if (this.container.rightToLeft) {
+ this.keyMap = Sys.WebForms.Menu._keyboardMapping.verticalRtl;
+ }
+ else {
+ this.keyMap = Sys.WebForms.Menu._keyboardMapping.vertical;
+ }
+ }
+ else {
+ this.displayMode = "static";
+ this.element.style.display = "block";
+ if (this.container.orientation === 'horizontal') {
+ Sys.WebForms.Menu._domHelper.setFloat(this.element, this.container.rightToLeft ? "right" : "left");
+ }
+ }
+ }
+ Sys.WebForms.Menu._domHelper.appendCssClass(this.element, this.displayMode);
+ var children = this.element.childNodes;
+ var count = children.length;
+ for (var i = 0; i < count; i++) {
+ var node = children[i];
+ if (node.nodeType !== 1) {
+ continue;
+ }
+ var topLevelMenuItem = null;
+ if (this.parentMenuItem) {
+ topLevelMenuItem = this.parentMenuItem.topLevelMenuItem;
+ }
+ var menuItem = new Sys.WebForms.MenuItem(this, node, topLevelMenuItem);
+ var previousMenuItem = this.items[this.items.length - 1];
+ if (previousMenuItem) {
+ menuItem.previousSibling = previousMenuItem;
+ previousMenuItem.nextSibling = menuItem;
+ }
+ this.items[this.items.length] = menuItem;
+ }
+};
+Sys.WebForms.Menu.prototype = {
+ blur: function() { if (this.container) this.container.blur(); },
+ collapse: function() {
+ this.each(function(menuItem) {
+ menuItem.hover(false);
+ menuItem.blur();
+ var childMenu = menuItem.childMenu;
+ if (childMenu) {
+ childMenu.collapse();
+ }
+ });
+ this.hide();
+ },
+ doDispose: function() { this.each(function(item) { item.doDispose(); }); },
+ each: function(fn) {
+ var count = this.items.length;
+ for (var i = 0; i < count; i++) {
+ fn(this.items[i]);
+ }
+ },
+ firstChild: function() { return this.items[0]; },
+ focus: function() { if (this.container) this.container.focus(); },
+ get_displayed: function() { return this.element.style.display !== 'none'; },
+ get_focused: function() {
+ if (this.container) {
+ return this.container.focused;
+ }
+ return false;
+ },
+ handleKeyPress: function(keyCode) {
+ if (this.keyMap.contains(keyCode)) {
+ if (this.container.focusedMenuItem) {
+ this.container.focusedMenuItem.navigate(keyCode);
+ return;
+ }
+ var firstChild = this.firstChild();
+ if (firstChild) {
+ this.container.navigateTo(firstChild);
+ }
+ }
+ },
+ hide: function() {
+ if (!this.get_displayed()) {
+ return;
+ }
+ this.each(function(item) {
+ if (item.childMenu) {
+ item.childMenu.hide();
+ }
+ });
+ if (!this.isRoot()) {
+ if (this.get_focused()) {
+ this.container.navigateTo(this.parentMenuItem);
+ }
+ this.element.style.display = 'none';
+ }
+ },
+ isRoot: function() { return this.rootMenu === this; },
+ isStatic: function() { return this.displayMode === 'static'; },
+ lastChild: function() { return this.items[this.items.length - 1]; },
+ show: function() { this.element.style.display = 'block'; }
+};
+if (Sys.WebForms.Menu.registerClass) {
+ Sys.WebForms.Menu.registerClass('Sys.WebForms.Menu');
+}
+Sys.WebForms.MenuItem = function(parentMenu, listElement, topLevelMenuItem) {
+ this.keyMap = parentMenu.keyMap;
+ this.parentMenu = parentMenu;
+ this.container = parentMenu.container;
+ this.element = listElement;
+ this.topLevelMenuItem = topLevelMenuItem || this;
+ this._anchor = Sys.WebForms.Menu._domHelper.firstChild(listElement);
+ while (this._anchor && this._anchor.tagName !== 'A') {
+ this._anchor = Sys.WebForms.Menu._domHelper.nextSibling(this._anchor);
+ }
+ if (this._anchor) {
+ this._anchor.tabIndex = -1;
+ var subMenu = this._anchor;
+ while (subMenu && subMenu.tagName !== 'UL') {
+ subMenu = Sys.WebForms.Menu._domHelper.nextSibling(subMenu);
+ }
+ if (subMenu) {
+ this.childMenu = new Sys.WebForms.Menu({ element: subMenu, parentMenuItem: this, depth: parentMenu.depth + 1, container: this.container, keyMap: this.keyMap });
+ if (!this.childMenu.isStatic()) {
+ Sys.WebForms.Menu._domHelper.appendCssClass(this.element, 'has-popup');
+ Sys.WebForms.Menu._domHelper.appendAttributeValue(this.element, 'aria-haspopup', this.childMenu.element.id);
+ }
+ }
+ }
+ Sys.WebForms.Menu._elementObjectMapper.map(listElement, this);
+ Sys.WebForms.Menu._domHelper.appendAttributeValue(listElement, 'role', 'menuitem');
+ Sys.WebForms.Menu._domHelper.appendCssClass(listElement, parentMenu.displayMode);
+ if (this._anchor) {
+ Sys.WebForms.Menu._domHelper.appendCssClass(this._anchor, parentMenu.displayMode);
+ }
+ this.element.style.position = "relative";
+ if (this.parentMenu.depth == 1 && this.container.orientation == 'horizontal') {
+ Sys.WebForms.Menu._domHelper.setFloat(this.element, this.container.rightToLeft ? "right" : "left");
+ }
+ if (!this.container.disabled) {
+ Sys.WebForms.Menu._domHelper.addEvent(this.element, 'mouseover', Sys.WebForms.MenuItem._onmouseover);
+ Sys.WebForms.Menu._domHelper.addEvent(this.element, 'mouseout', Sys.WebForms.MenuItem._onmouseout);
+ }
+};
+Sys.WebForms.MenuItem.prototype = {
+ applyUp: function(fn, condition) {
+ condition = condition || function(menuItem) { return menuItem; };
+ var menuItem = this;
+ var lastMenuItem = null;
+ while (condition(menuItem)) {
+ fn(menuItem);
+ lastMenuItem = menuItem;
+ menuItem = menuItem.parentMenu.parentMenuItem;
+ }
+ return lastMenuItem;
+ },
+ blur: function() { this.setTabIndex(-1); },
+ doDispose: function() {
+ Sys.WebForms.Menu._domHelper.removeEvent(this.element, 'mouseover', Sys.WebForms.MenuItem._onmouseover);
+ Sys.WebForms.Menu._domHelper.removeEvent(this.element, 'mouseout', Sys.WebForms.MenuItem._onmouseout);
+ if (this.childMenu) {
+ this.childMenu.doDispose();
+ }
+ },
+ focus: function() {
+ if (!this.parentMenu.get_displayed()) {
+ this.parentMenu.show();
+ }
+ this.setTabIndex(0);
+ this.container.focused = true;
+ this._anchor.focus();
+ },
+ get_highlighted: function() { return /(^|\s)highlighted(\s|$)/.test(this._anchor.className); },
+ getTabIndex: function() { return this._anchor.tabIndex; },
+ highlight: function(highlighting) {
+ if (highlighting) {
+ this.applyUp(function(menuItem) {
+ menuItem.parentMenu.parentMenuItem.highlight(true);
+ },
+ function(menuItem) {
+ return !menuItem.parentMenu.isStatic() && menuItem.parentMenu.parentMenuItem;
+ }
+ );
+ Sys.WebForms.Menu._domHelper.appendCssClass(this._anchor, 'highlighted');
+ }
+ else {
+ Sys.WebForms.Menu._domHelper.removeCssClass(this._anchor, 'highlighted');
+ this.setTabIndex(-1);
+ }
+ },
+ hover: function(hovering) {
+ if (hovering) {
+ var currentHoveredItem = this.container.hoveredMenuItem;
+ if (currentHoveredItem) {
+ currentHoveredItem.hover(false);
+ }
+ var currentFocusedItem = this.container.focusedMenuItem;
+ if (currentFocusedItem && currentFocusedItem !== this) {
+ currentFocusedItem.hover(false);
+ }
+ this.applyUp(function(menuItem) {
+ if (menuItem.childMenu && !menuItem.childMenu.get_displayed()) {
+ menuItem.childMenu.show();
+ }
+ });
+ this.container.hoveredMenuItem = this;
+ this.highlight(true);
+ }
+ else {
+ var menuItem = this;
+ while (menuItem) {
+ menuItem.highlight(false);
+ if (menuItem.childMenu) {
+ if (!menuItem.childMenu.isStatic()) {
+ menuItem.childMenu.hide();
+ }
+ }
+ menuItem = menuItem.parentMenu.parentMenuItem;
+ }
+ }
+ },
+ isSiblingOf: function(menuItem) { return menuItem.parentMenu === this.parentMenu; },
+ mouseout: function() {
+ var menuItem = this,
+ id = this.container.pendingMouseoutId,
+ disappearAfter = this.container.disappearAfter;
+ if (id) {
+ window.clearTimeout(id);
+ }
+ if (disappearAfter > -1) {
+ this.container.pendingMouseoutId =
+ window.setTimeout(function() { menuItem.hover(false); }, disappearAfter);
+ }
+ },
+ mouseover: function() {
+ var id = this.container.pendingMouseoutId;
+ if (id) {
+ window.clearTimeout(id);
+ this.container.pendingMouseoutId = null;
+ }
+ this.hover(true);
+ if (this.container.menu.get_focused()) {
+ this.container.navigateTo(this);
+ }
+ },
+ navigate: function(keyCode) {
+ switch (this.keyMap[keyCode]) {
+ case this.keyMap.next:
+ this.navigateNext();
+ break;
+ case this.keyMap.previous:
+ this.navigatePrevious();
+ break;
+ case this.keyMap.child:
+ this.navigateChild();
+ break;
+ case this.keyMap.parent:
+ this.navigateParent();
+ break;
+ case this.keyMap.tab:
+ this.navigateOut();
+ break;
+ }
+ },
+ navigateChild: function() {
+ var subMenu = this.childMenu;
+ if (subMenu) {
+ var firstChild = subMenu.firstChild();
+ if (firstChild) {
+ this.container.navigateTo(firstChild);
+ }
+ }
+ else {
+ if (this.container.orientation === 'horizontal') {
+ var nextItem = this.topLevelMenuItem.nextSibling || this.topLevelMenuItem.parentMenu.firstChild();
+ if (nextItem == this.topLevelMenuItem) {
+ return;
+ }
+ this.topLevelMenuItem.childMenu.hide();
+ this.container.navigateTo(nextItem);
+ if (nextItem.childMenu) {
+ this.container.navigateTo(nextItem.childMenu.firstChild());
+ }
+ }
+ }
+ },
+ navigateNext: function() {
+ if (this.childMenu) {
+ this.childMenu.hide();
+ }
+ var nextMenuItem = this.nextSibling;
+ if (!nextMenuItem && this.parentMenu.isRoot()) {
+ nextMenuItem = this.parentMenu.parentMenuItem;
+ if (nextMenuItem) {
+ nextMenuItem = nextMenuItem.nextSibling;
+ }
+ }
+ if (!nextMenuItem) {
+ nextMenuItem = this.parentMenu.firstChild();
+ }
+ if (nextMenuItem) {
+ this.container.navigateTo(nextMenuItem);
+ }
+ },
+ navigateOut: function() {
+ this.parentMenu.blur();
+ },
+ navigateParent: function() {
+ var parentMenu = this.parentMenu,
+ horizontal = this.container.orientation === 'horizontal';
+ if (!parentMenu) return;
+ if (horizontal && this.childMenu && parentMenu.isRoot()) {
+ this.navigateChild();
+ return;
+ }
+ if (parentMenu.parentMenuItem && !parentMenu.isRoot()) {
+ if (horizontal && this.parentMenu.depth === 2) {
+ var previousItem = this.parentMenu.parentMenuItem.previousSibling;
+ if (!previousItem) {
+ previousItem = this.parentMenu.rootMenu.lastChild();
+ }
+ this.topLevelMenuItem.childMenu.hide();
+ this.container.navigateTo(previousItem);
+ if (previousItem.childMenu) {
+ this.container.navigateTo(previousItem.childMenu.firstChild());
+ }
+ }
+ else {
+ this.parentMenu.hide();
+ }
+ }
+ },
+ navigatePrevious: function() {
+ if (this.childMenu) {
+ this.childMenu.hide();
+ }
+ var previousMenuItem = this.previousSibling;
+ if (previousMenuItem) {
+ var childMenu = previousMenuItem.childMenu;
+ if (childMenu && childMenu.isRoot()) {
+ previousMenuItem = childMenu.lastChild();
+ }
+ }
+ if (!previousMenuItem && this.parentMenu.isRoot()) {
+ previousMenuItem = this.parentMenu.parentMenuItem;
+ }
+ if (!previousMenuItem) {
+ previousMenuItem = this.parentMenu.lastChild();
+ }
+ if (previousMenuItem) {
+ this.container.navigateTo(previousMenuItem);
+ }
+ },
+ setTabIndex: function(index) { if (this._anchor) this._anchor.tabIndex = index; }
+};
+Sys.WebForms.MenuItem._onmouseout = function(e) {
+ var menuItem = Sys.WebForms.Menu._elementObjectMapper.getMappedObject(this);
+ if (!menuItem) {
+ return;
+ }
+ menuItem.mouseout();
+ Sys.WebForms.Menu._domHelper.cancelEvent(e);
+};
+Sys.WebForms.MenuItem._onmouseover = function(e) {
+ var menuItem = Sys.WebForms.Menu._elementObjectMapper.getMappedObject(this);
+ if (!menuItem) {
+ return;
+ }
+ menuItem.mouseover();
+ Sys.WebForms.Menu._domHelper.cancelEvent(e);
+};
+Sys.WebForms.Menu._domHelper = {
+ addEvent: function(element, eventName, fn, useCapture) {
+ if (element.addEventListener) {
+ element.addEventListener(eventName, fn, !!useCapture);
+ }
+ else {
+ element['on' + eventName] = fn;
+ }
+ },
+ appendAttributeValue: function(element, name, value) {
+ this.updateAttributeValue('append', element, name, value);
+ },
+ appendCssClass: function(element, value) {
+ this.updateClassName('append', element, name, value);
+ },
+ appendString: function(getString, setString, value) {
+ var currentValue = getString();
+ if (!currentValue) {
+ setString(value);
+ return;
+ }
+ var regex = this._regexes.getRegex('(^| )' + value + '($| )');
+ if (regex.test(currentValue)) {
+ return;
+ }
+ setString(currentValue + ' ' + value);
+ },
+ cancelEvent: function(e) {
+ var event = e || window.event;
+ if (event) {
+ event.cancelBubble = true;
+ if (event.stopPropagation) {
+ event.stopPropagation();
+ }
+ }
+ },
+ contains: function(ancestor, descendant) {
+ for (; descendant && (descendant !== ancestor); descendant = descendant.parentNode) { }
+ return !!descendant;
+ },
+ firstChild: function(element) {
+ var child = element.firstChild;
+ if (child && child.nodeType !== 1) {
+ child = this.nextSibling(child);
+ }
+ return child;
+ },
+ getElement: function(elementOrId) { return typeof elementOrId === 'string' ? document.getElementById(elementOrId) : elementOrId; },
+ getElementDirection: function(element) {
+ if (element) {
+ if (element.dir) {
+ return element.dir;
+ }
+ return this.getElementDirection(element.parentNode);
+ }
+ return "ltr";
+ },
+ getKeyCode: function(event) { return event.keyCode || event.charCode || 0; },
+ insertAfter: function(element, elementToInsert) {
+ var next = element.nextSibling;
+ if (next) {
+ element.parentNode.insertBefore(elementToInsert, next);
+ }
+ else if (element.parentNode) {
+ element.parentNode.appendChild(elementToInsert);
+ }
+ },
+ nextSibling: function(element) {
+ var sibling = element.nextSibling;
+ while (sibling) {
+ if (sibling.nodeType === 1) {
+ return sibling;
+ }
+ sibling = sibling.nextSibling;
+ }
+ },
+ removeAttributeValue: function(element, name, value) {
+ this.updateAttributeValue('remove', element, name, value);
+ },
+ removeCssClass: function(element, value) {
+ this.updateClassName('remove', element, name, value);
+ },
+ removeEvent: function(element, eventName, fn, useCapture) {
+ if (element.removeEventListener) {
+ element.removeEventListener(eventName, fn, !!useCapture);
+ }
+ else if (element.detachEvent) {
+ element.detachEvent('on' + eventName, fn)
+ }
+ element['on' + eventName] = null;
+ },
+ removeString: function(getString, setString, valueToRemove) {
+ var currentValue = getString();
+ if (currentValue) {
+ var regex = this._regexes.getRegex('(\\s|\\b)' + valueToRemove + '$|\\b' + valueToRemove + '\\s+');
+ setString(currentValue.replace(regex, ''));
+ }
+ },
+ setFloat: function(element, direction) {
+ element.style.styleFloat = direction;
+ element.style.cssFloat = direction;
+ },
+ updateAttributeValue: function(operation, element, name, value) {
+ this[operation + 'String'](
+ function() {
+ return element.getAttribute(name);
+ },
+ function(newValue) {
+ element.setAttribute(name, newValue);
+ },
+ value
+ );
+ },
+ updateClassName: function(operation, element, name, value) {
+ this[operation + 'String'](
+ function() {
+ return element.className;
+ },
+ function(newValue) {
+ element.className = newValue;
+ },
+ value
+ );
+ },
+ _regexes: {
+ getRegex: function(pattern) {
+ var regex = this[pattern];
+ if (!regex) {
+ this[pattern] = regex = new RegExp(pattern);
+ }
+ return regex;
+ }
+ }
+};
+Sys.WebForms.Menu._elementObjectMapper = {
+ _computedId: 0,
+ _mappings: {},
+ _mappingIdName: 'Sys.WebForms.Menu.Mapping',
+ getMappedObject: function(element) {
+ var id = element[this._mappingIdName];
+ if (id) {
+ return this._mappings[this._mappingIdName + ':' + id];
+ }
+ },
+ map: function(element, theObject) {
+ var mappedObject = element[this._mappingIdName];
+ if (mappedObject === theObject) {
+ return;
+ }
+ var objectId = element[this._mappingIdName] || element.id || '%' + (++this._computedId);
+ element[this._mappingIdName] = objectId;
+ this._mappings[this._mappingIdName + ':' + objectId] = theObject;
+ theObject.mappingId = objectId;
+ }
+};
+Sys.WebForms.Menu._keyboardMapping = new (function() {
+ var LEFT_ARROW = 37;
+ var UP_ARROW = 38;
+ var RIGHT_ARROW = 39;
+ var DOWN_ARROW = 40;
+ var TAB = 9;
+ var ESCAPE = 27;
+ this.vertical = { next: 0, previous: 1, child: 2, parent: 3, tab: 4 };
+ this.vertical[DOWN_ARROW] = this.vertical.next;
+ this.vertical[UP_ARROW] = this.vertical.previous;
+ this.vertical[RIGHT_ARROW] = this.vertical.child;
+ this.vertical[LEFT_ARROW] = this.vertical.parent;
+ this.vertical[TAB] = this.vertical[ESCAPE] = this.vertical.tab;
+ this.verticalRtl = { next: 0, previous: 1, child: 2, parent: 3, tab: 4 };
+ this.verticalRtl[DOWN_ARROW] = this.verticalRtl.next;
+ this.verticalRtl[UP_ARROW] = this.verticalRtl.previous;
+ this.verticalRtl[LEFT_ARROW] = this.verticalRtl.child;
+ this.verticalRtl[RIGHT_ARROW] = this.verticalRtl.parent;
+ this.verticalRtl[TAB] = this.verticalRtl[ESCAPE] = this.verticalRtl.tab;
+ this.horizontal = { next: 0, previous: 1, child: 2, parent: 3, tab: 4 };
+ this.horizontal[RIGHT_ARROW] = this.horizontal.next;
+ this.horizontal[LEFT_ARROW] = this.horizontal.previous;
+ this.horizontal[DOWN_ARROW] = this.horizontal.child;
+ this.horizontal[UP_ARROW] = this.horizontal.parent;
+ this.horizontal[TAB] = this.horizontal[ESCAPE] = this.horizontal.tab;
+ this.horizontalRtl = { next: 0, previous: 1, child: 2, parent: 3, tab: 4 };
+ this.horizontalRtl[RIGHT_ARROW] = this.horizontalRtl.previous;
+ this.horizontalRtl[LEFT_ARROW] = this.horizontalRtl.next;
+ this.horizontalRtl[DOWN_ARROW] = this.horizontalRtl.child;
+ this.horizontalRtl[UP_ARROW] = this.horizontalRtl.parent;
+ this.horizontalRtl[TAB] = this.horizontalRtl[ESCAPE] = this.horizontalRtl.tab;
+ this.horizontal.contains = this.horizontalRtl.contains = this.vertical.contains = this.verticalRtl.contains = function(keycode) {
+ return this[keycode] != null;
+ };
+})();
+Sys.WebForms._MenuContainer = function(options) {
+ this.focused = false;
+ this.disabled = options.disabled;
+ this.staticDisplayLevels = options.staticDisplayLevels || 1;
+ this.element = options.element;
+ this.orientation = options.orientation || 'vertical';
+ this.disappearAfter = options.disappearAfter;
+ this.rightToLeft = Sys.WebForms.Menu._domHelper.getElementDirection(this.element) === 'rtl';
+ Sys.WebForms.Menu._elementObjectMapper.map(this.element, this);
+ this.menu = options.menu;
+ this.menu.rootMenu = this.menu;
+ this.menu.displayMode = 'static';
+ this.menu.element.style.position = 'relative';
+ this.menu.element.style.width = 'auto';
+ if (this.orientation === 'vertical') {
+ Sys.WebForms.Menu._domHelper.appendAttributeValue(this.menu.element, 'role', 'menu');
+ if (this.rightToLeft) {
+ this.menu.keyMap = Sys.WebForms.Menu._keyboardMapping.verticalRtl;
+ }
+ else {
+ this.menu.keyMap = Sys.WebForms.Menu._keyboardMapping.vertical;
+ }
+ }
+ else {
+ Sys.WebForms.Menu._domHelper.appendAttributeValue(this.menu.element, 'role', 'menubar');
+ if (this.rightToLeft) {
+ this.menu.keyMap = Sys.WebForms.Menu._keyboardMapping.horizontalRtl;
+ }
+ else {
+ this.menu.keyMap = Sys.WebForms.Menu._keyboardMapping.horizontal;
+ }
+ }
+ var floatBreak = document.createElement('div');
+ floatBreak.style.clear = this.rightToLeft ? "right" : "left";
+ this.element.appendChild(floatBreak);
+ Sys.WebForms.Menu._domHelper.setFloat(this.element, this.rightToLeft ? "right" : "left");
+ Sys.WebForms.Menu._domHelper.insertAfter(this.element, floatBreak);
+ if (!this.disabled) {
+ Sys.WebForms.Menu._domHelper.addEvent(this.menu.element, 'focus', this._onfocus, true);
+ Sys.WebForms.Menu._domHelper.addEvent(this.menu.element, 'keydown', this._onkeydown);
+ var menuContainer = this;
+ this.element.dispose = function() {
+ if (menuContainer.element.dispose) {
+ menuContainer.element.dispose = null;
+ Sys.WebForms.Menu._domHelper.removeEvent(menuContainer.menu.element, 'focus', menuContainer._onfocus, true);
+ Sys.WebForms.Menu._domHelper.removeEvent(menuContainer.menu.element, 'keydown', menuContainer._onkeydown);
+ menuContainer.menu.doDispose();
+ }
+ };
+ Sys.WebForms.Menu._domHelper.addEvent(window, 'unload', function() {
+ if (menuContainer.element.dispose) {
+ menuContainer.element.dispose();
+ }
+ });
+ }
+};
+Sys.WebForms._MenuContainer.prototype = {
+ blur: function() {
+ this.focused = false;
+ this.isBlurring = false;
+ this.menu.collapse();
+ this.focusedMenuItem = null;
+ },
+ focus: function(e) { this.focused = true; },
+ navigateTo: function(menuItem) {
+ if (this.focusedMenuItem && this.focusedMenuItem !== this) {
+ this.focusedMenuItem.highlight(false);
+ }
+ menuItem.highlight(true);
+ menuItem.focus();
+ this.focusedMenuItem = menuItem;
+ },
+ _onfocus: function(e) {
+ var event = e || window.event;
+ if (event.srcElement && this) {
+ if (Sys.WebForms.Menu._domHelper.contains(this.element, event.srcElement)) {
+ if (!this.focused) {
+ this.focus();
+ }
+ }
+ }
+ },
+ _onkeydown: function(e) {
+ var thisMenu = Sys.WebForms.Menu._elementObjectMapper.getMappedObject(this);
+ var keyCode = Sys.WebForms.Menu._domHelper.getKeyCode(e || window.event);
+ if (thisMenu) {
+ thisMenu.handleKeyPress(keyCode);
+ }
+ }
+};
|