www.gusucode.com > 盘古通用报名系统 3.0源码程序 > administrator/TaskMenu.js
var INF_IS_IEXPLORER = (navigator.userAgent.indexOf("MSIE") == -1)? false : true; var INF_IS_MENU_BEHAVIOR_AUTO = true; var INF_IS_SCROLLBAR_ENABLED = false; /////////////////////////////////////////////////////// /////////////*** CONFIG ***//////////////////////////// var CFG_FRAME_COUNT = 6; var CFG_DOCUMENT_MARGIN = 12; var CFG_MENU_SPACING = 15; var CFG_MENU_WIDTH = 185; var CFG_SCROLLBAR_WIDTH = 17; var CFG_TITLEBAR_HEIGHT = 25; var CFG_TITLEBAR_LEFT_WIDTH = 13; var CFG_TITLEBAR_RIGHT_WIDTH = 25; var CFG_TITLEBAR_MIDDLE_WIDTH = CFG_MENU_WIDTH - CFG_TITLEBAR_LEFT_WIDTH - CFG_TITLEBAR_RIGHT_WIDTH; var CFG_TITLEBAR_BORDER_WIDTH = 0; var CFG_MENUBODY_PADDING = 9; var CFG_MENUBODY_BORDER_WIDTH = 1; var CFG_SLEEP_TIME_BEGIN = 20; var CFG_SLEEP_TIME_END = 60; var CFG_ALPHA_STEP = Math.ceil( 100 / (CFG_FRAME_COUNT) ); var CFG_IS_SCROLLBAR_ENABLED = true; var CFG_IS_SPECIAL_HEAD_NODE = false; ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// if(new Array().push == null) { //usage: array.push(Array); for ie5.0 Array.prototype.push = function() { this[this.length] = arguments[0]; return this.length; } } if(new Array().splice == null) { /// usage: array.splice(startPos,deleteCount,[item1,item2,...]);for ie5.0 Array.prototype.splice = function() { if(arguments.length < 2 || arguments[1] < 0) return new Array(); var endPoint1 = arguments[0]; if(endPoint1 < 0 && Math.abs(endPoint1) > this.length) endPoint1 = 0; var startPoint2 = (endPoint1 < 0)? (this.length + endPoint1 + arguments[1]) : (endPoint1 + arguments[1]); var bArray = this.slice(0,endPoint1); var dArray = this.slice(endPoint1,startPoint2); var eArray = this.slice(startPoint2); var nArray = new Array(); for(var i = 2; i < arguments.length; i++) { nArray.push(arguments[i]); } var fArray = bArray.concat(nArray,eArray); for(var i = 0; i < fArray.length; i++) { this[i] = fArray[i]; } this.length = fArray.length; return dArray; } } ///////////////////////////////////////////////////////////////// function TaskMenuState(){} TaskMenuState.uninited = 0; TaskMenuState.open = 1; TaskMenuState.close = 2; TaskMenuState.opening = 4; TaskMenuState.closing = 8; TaskMenuState.transforming = 16; function TaskMenuItem(strLabel,strIcon,strCommand) { this.label = strLabel; this.icon = strIcon; this.command = strCommand; this.hItem = null; this.hLabel = null; this.hIcon = null; this.hLabelCell = null; this.container = null; this.operTimer = null; this.tranTimer = null; this.operStep = 0; this.tranStep = 0; this.operCount = 0; this.tranCount = 0; this.init = function() { (this.hLabel = document.createElement("FONT")).reflectClass = this; with(this.hLabel) { reflectClass = this; } with(this.hItem = document.createElement("TABLE")) { cellPadding = 0; cellSpacing = 0; style.width = "100%"; } (itemRow = this.hItem.insertRow(0)).className="MenuItemRow"; with(blankCell = itemRow.insertCell(0)) { style.width = (CFG_MENUBODY_PADDING - 2) +"px"; } with(iconCell = itemRow.insertCell(1)) { align = "RIGHT"; style.cssText = "width:18px;vertical-align:top;padding-top:3px"; with(this.hIcon = iconCell.appendChild(document.createElement("DIV"))) { className = "IconContainer"; } } with(this.hLabelCell = itemRow.insertCell(2)) { style.padding = "2px " + CFG_MENUBODY_PADDING +"px 2px 5px"; appendChild(this.hLabel); } with(this) { setIcon(icon); setLabel(label); setCommand(command); } } this.getLabel = function() { return this.label; } this.setLabel = function(strLabel) { this.hLabel.innerHTML = this.label = strLabel; } this.getIcon = function() { return this.icon; } this.setIcon = function(strIcon) { this.icon = strIcon; while(this.hIcon.firstChild != null) { this.hIcon.removeChild(this.hIcon.firstChild); } if(this.icon != null) { with(this.hIcon) { style.width = "18px"; parentNode.style.width = "18px"; with(appendChild(new Image())) { src= this.icon; } } } else { this.hIcon.style.width = "0px"; this.hIcon.parentNode.style.width = "0px"; } } this.getCommand = function() { return this.command; } this.setCommand = function(strCommand) { if( (this.command = strCommand) != null) { JS.addListener(this.hLabel,"mouseover",TaskMenuItem.onMouseBehavior,false); JS.addListener(this.hLabel,"mouseout",TaskMenuItem.onMouseBehavior,false); JS.addListener(this.hLabel,"click",TaskMenuItem.onClick,false); this.hLabel.className = "MenuItemLabel"; } else { JS.removeListener(this.hLabel,"mouseover",TaskMenuItem.onMouseBehavior,false); JS.removeListener(this.hLabel,"mouseout",TaskMenuItem.onMouseBehavior,false); JS.removeListener(this.hLabel,"click",TaskMenuItem.onClick,false); this.hLabel.className = "MenuItemLabelDisabled"; } } this.runCommand = function() { try { eval(this.command); } catch(ex) { alert("Javascript Error:" + ex.description); } } this.cloneNode = function() { return new TaskMenuItem(this.label,this.icon,this.command); } this.init(); } TaskMenuItem.onMouseBehavior = function() { with(JS.getSourceElement(arguments[0])) { if(arguments[0].type.toUpperCase() == "MOUSEOVER") className = "MenuItemLabelMouseOver"; else className = "MenuItemLabel"; } } TaskMenuItem.onClick = function() { var refClass = JS.getSourceElement(arguments[0]).reflectClass; if(refClass != null) refClass.runCommand(); } function TaskMenu(strLabel,menuState) { this.menuID; this.label = strLabel; this.state = menuState; this.items = []; this.hLabel = null; this.hArrayCell = null; this.titlebar = null; this.menuBody = null; this.previous = null; this.next = null; this.background = null; this.operationTimer; this.transformTimer; this.invalidateTimer this.operationStep; this.transformStep; this.operationSleep; this.transformSleep; this._getAlphaOpacity = function() { try { if(INF_IS_IEXPLORER) return this.menuBody.filters.alpha.opacity; else return this.menuBody.style.MozOpacity * 100; } catch(ex) { return 100; } } this._setAlphaOpacity = function(n) { try { if(INF_IS_IEXPLORER) this.menuBody.filters.alpha.opacity = n; else this.menuBody.style.MozOpacity = n / 100; } catch(ex) {} } this._clearItem = function() { for(var i =0; i< this.items.length; i++) { this.items[i].container = null; } this.items = new Array(); } this._clearMenu = function() { if(this.menuBody == null) return; while(this.menuBody.firstChild != null) this.menuBody.removeChild(this.menuBody.firstChild); } this._setMenuFixed = function(bFlag) { if(this.menuBody == null) return; if(bFlag == true) { this.menuBody.style.overflow = "hidden"; } else { this.menuBody.style.overflow = "visible"; this.menuBody.style.height = "auto"; } } this._setMenuHeight = function(height) { if(INF_IS_IEXPLORER) this.menuBody.style.height = height + "px"; else this.menuBody.style.height = ( height - (2 * CFG_MENUBODY_PADDING + CFG_MENUBODY_BORDER_WIDTH) ) + "px"; } this._getMenuHeight = function() { if(INF_IS_IEXPLORER) return this.menuBody.scrollHeight + CFG_MENUBODY_BORDER_WIDTH; else { var scrollHeight = 0; for(var i = 0; i < this.menuBody.childNodes.length; i++) { scrollHeight += this.menuBody.childNodes[i].offsetHeight; } return scrollHeight + CFG_MENUBODY_BORDER_WIDTH + 2 * CFG_MENUBODY_PADDING; } } this._getScrollWidth = function() { return (INF_IS_SCROLLBAR_ENABLED)? CFG_SCROLLBAR_WIDTH : 0 } this._fixMenuWidth = function(value) { var titlebarWidth = ( CFG_MENU_WIDTH + ( (INF_IS_IEXPLORER)? 0 : ( -2 * CFG_TITLEBAR_BORDER_WIDTH ) ) ); var menuBodyWidth = ( CFG_MENU_WIDTH + ( (INF_IS_IEXPLORER)? 0 : ( -2 * CFG_MENUBODY_BORDER_WIDTH ) ) ); var labelCell = this.titlebar.firstChild.rows[0].cells[1]; var scrollbarWidth = this._getScrollWidth(); this.hLabel.style.width = (CFG_TITLEBAR_MIDDLE_WIDTH - scrollbarWidth) + "px"; labelCell.style.width = (CFG_TITLEBAR_MIDDLE_WIDTH - scrollbarWidth) + "px"; this.titlebar.style.width = (titlebarWidth - scrollbarWidth) + "px"; this.menuBody.style.width = (menuBodyWidth - scrollbarWidth) + "px"; this._invalidate(true); } this._fixedMenuPosWhileClose = function() { var scrollHeight = this._getMenuHeight(); this._setMenuHeight(scrollHeight); this.menuBody.style.top = (this.titlebar.offsetTop + CFG_TITLEBAR_HEIGHT - scrollHeight) + "px"; this.menuBody.style.clip = "rect(" + scrollHeight +" auto " + scrollHeight + " auto)"; this._setAlphaOpacity(0); } this._attachState = function(state) { switch(state) { case TaskMenuState.open: case TaskMenuState.close: case TaskMenuState.opening: case TaskMenuState.closing: this.state >>= 4; this.state <<= 4; case TaskMenuState.transforming: this.state |= state; break; case TaskMenuState.uninited: this.state = state; break; } } this._removeState = function(state) { if(this.state & state) this.state ^= state; } this._invalidate = function(bForce) { if(INF_IS_MENU_BEHAVIOR_AUTO == true || bForce == true) { this.invalidate(); } } this._extend = function() { if(this.state & TaskMenuState.close) { this._fixedMenuPosWhileClose(); this._removeState(TaskMenuState.transforming); } else { if(this.menuBody.offsetHeight + this.transformStep < this._getMenuHeight()) { this._setMenuHeight(this.menuBody.offsetHeight + this.transformStep); this.transformTimer = setTimeout("TaskMenu.collection[" + this.menuID + "]._extend()",this.transformSleep += 5); } else { this._setMenuHeight(this._getMenuHeight()); this._removeState(TaskMenuState.transforming); } } if(this.next != null) this.next._moveTo(); TaskMenu._refreshAll(); } this._shorten = function() { if(this.state & TaskMenuState.close) { this._fixedMenuPosWhileClose(); this._removeState(TaskMenuState.transforming); } else { if(this.menuBody.offsetHeight + this.transformStep > this._getMenuHeight()) { this._setMenuHeight(this.menuBody.offsetHeight + this.transformStep); this.transformTimer = setTimeout("TaskMenu.collection[" + this.menuID + "]._shorten()",this.transformSleep += 5); } else { this._setMenuHeight(this._getMenuHeight()); this._removeState(TaskMenuState.transforming); } } if(this.next != null) this.next._moveTo(); TaskMenu._refreshAll(); } this._appendItems = function() { if(this.menuBody == null || this.items.length == 0)return; for(var i = 0; i < this.items.length; i++) this.menuBody.appendChild(this.items[i].hItem); } this._isSpecialHeadNode = function() { return CFG_IS_SPECIAL_HEAD_NODE && this == TaskMenu.headNode; } this._open = function() { var titlebarBottom = this.titlebar.offsetTop + CFG_TITLEBAR_HEIGHT; if( (this.menuBody.offsetTop + this.operationStep) < titlebarBottom ) { this.menuBody.style.top = (this.menuBody.offsetTop + this.operationStep) + "px"; this.menuBody.style.clip = "rect(" + (titlebarBottom - this.menuBody.offsetTop) + " auto " + (this.menuBody.offsetHeight - 1) + " auto)"; this._setAlphaOpacity( this._getAlphaOpacity() + CFG_ALPHA_STEP ); this.operationTimer = setTimeout("TaskMenu.collection[" + this.menuID + "]._open()",this.operationSleep); this.operationSleep += 5; } else { this.menuBody.style.top = titlebarBottom + "px"; this.menuBody.style.clip = "rect(auto auto auto auto)"; this._attachState(TaskMenuState.open); this._setAlphaOpacity(100); } if(this.next) this.next._moveTo(); TaskMenu._refreshAll(); } this._close = function() { var menuBodyHeight = this._getMenuHeight(); var menuBodyBottom = this.menuBody.offsetTop + menuBodyHeight; var titlebarBottom = this.titlebar.offsetTop + CFG_TITLEBAR_HEIGHT; if( (menuBodyBottom - this.operationStep) > titlebarBottom ) { this.menuBody.style.top = (this.menuBody.offsetTop - this.operationStep) + "px"; this._setAlphaOpacity( this._getAlphaOpacity() - CFG_ALPHA_STEP ); this.operationTimer = setTimeout("TaskMenu.collection[" + this.menuID + "]._close()",this.operationSleep); this.operationSleep += 5; } else { this.menuBody.style.top = ( (titlebarBottom - menuBodyHeight) ) + "px"; this._setAlphaOpacity(0); this._attachState(TaskMenuState.close); } this.menuBody.style.clip = "rect(" + (Math.abs(titlebarBottom - this.menuBody.offsetTop)) +" auto " + (this.menuBody.offsetHeight - 1) + " auto)"; if(this.next) this.next._moveTo(); TaskMenu._refreshAll(); } this._moveBy = function(dist) {} this._moveTo = function() { var primTop = this.titlebar.offsetTop; var safePoint = this.previous.titlebar.offsetTop + CFG_TITLEBAR_HEIGHT + CFG_MENU_SPACING; var dstiTop = this.previous.menuBody.offsetTop + this.previous.menuBody.offsetHeight + CFG_MENU_SPACING; if(dstiTop >= safePoint) this.titlebar.style.top = dstiTop + "px"; else this.titlebar.style.top = safePoint + "px"; if(this.state & TaskMenuState.open) this.menuBody.style.top = ( this.titlebar.offsetTop + CFG_TITLEBAR_HEIGHT ) + "px"; else if(this.state & TaskMenuState.close) this.menuBody.style.top = ( this.titlebar.offsetTop + CFG_TITLEBAR_HEIGHT - this.menuBody.offsetHeight) + "px"; else if(this.state & TaskMenuState.opening || this.state & TaskMenuState.closing) this.menuBody.style.top = (this.menuBody.offsetTop + (dstiTop - primTop) ) + "px"; if(this.next != null) this.next._moveTo(); } this.init = function(initFlag) { if(initFlag != true && (this.titlebr != null || this.menuBody != null))return; this.state = (this.state == false)? TaskMenuState.close : TaskMenuState.open; this.label = (this.label == null )? new String() : this.label.toString(); var fixString = (CFG_IS_SPECIAL_HEAD_NODE == true && TaskMenu.headNode == null)? "_Head" : ""; with(this.titlebar = document.createElement("DIV")) { className = "MenuTitlebar"; style.top = ((TaskMenu.headNode == null)? CFG_DOCUMENT_MARGIN : (TaskMenu.rearNode.menuBody.offsetTop + TaskMenu.rearNode.menuBody.offsetHeight + CFG_MENU_SPACING)) + "px"; style.left = CFG_DOCUMENT_MARGIN + "px"; style.width = (CFG_MENU_WIDTH + ( (INF_IS_IEXPLORER)? 0 : ( -2 * CFG_TITLEBAR_BORDER_WIDTH ) ) - this._getScrollWidth()) + "px"; style.height = CFG_TITLEBAR_HEIGHT + "px"; } with(titlebarContainer = document.createElement("TABLE")) { cellPadding = "0"; cellSpacing = "0"; } with(titlebarRow = titlebarContainer.insertRow(0)) { style.width = CFG_MENU_WIDTH + "px"; style.height = CFG_TITLEBAR_HEIGHT + "px"; } JS.addListener(titlebarRow,"click",TaskMenu._onClick,false); JS.addListener(titlebarRow,"mouseover",TaskMenu._onMouseBehavior,false); JS.addListener(titlebarRow,"mouseout",TaskMenu._onMouseBehavior,false); with(leftCell = titlebarRow.insertCell(0)) { className = "MenuTitlebarLeft" + fixString; style.width = CFG_TITLEBAR_LEFT_WIDTH + "px"; } leftCell.reflectClass = this; with(middleCell = titlebarRow.insertCell(1)) { className = "MenuTitlebarMiddle" + fixString; style.width = ( CFG_TITLEBAR_MIDDLE_WIDTH - this._getScrollWidth() ) + "px"; with(this.hLabel = appendChild(document.createElement("DIV"))) { className = "MenuTitle" + fixString; style.width = (CFG_TITLEBAR_MIDDLE_WIDTH - this._getScrollWidth()) + "px"; style.height = (CFG_TITLEBAR_HEIGHT) + "px"; style.lineHeight = (CFG_TITLEBAR_HEIGHT) + "px"; } this.hLabel.reflectClass = this; } middleCell.reflectClass = this; with(this.hArrayCell = titlebarRow.insertCell(2)) { className = "MenuTitlebarRight" + ((this.state == TaskMenuState.close)? "_Close" : "_Open") + fixString; style.width = CFG_TITLEBAR_RIGHT_WIDTH + "px"; } this.hArrayCell.reflectClass = this; this.setLabel(this.getLabel()); this.titlebar.appendChild(titlebarContainer); document.body.appendChild(this.titlebar); with(this.menuBody = document.createElement("DIV")) { className = "MenuBody" + fixString; style.cssText = "border-width:0px " + CFG_MENUBODY_BORDER_WIDTH + "px " + CFG_MENUBODY_BORDER_WIDTH + "px " + CFG_MENUBODY_BORDER_WIDTH + "px; " + ( (this.background != null)? "background-image:url('" + this.background + "');" : "" ); style.top = ( parseInt(this.titlebar.style.top) + CFG_TITLEBAR_HEIGHT ) + "px"; style.left = CFG_DOCUMENT_MARGIN + "px"; style.width = ( CFG_MENU_WIDTH + ( (INF_IS_IEXPLORER)? 0 : - (2 * CFG_MENUBODY_BORDER_WIDTH)) - ((INF_IS_SCROLLBAR_ENABLED)? CFG_SCROLLBAR_WIDTH : 0) ) + "px"; style.height = "auto"; style.padding = CFG_MENUBODY_PADDING + "px 0px"; style.MozOpacity = 1.0; } document.body.appendChild(this.menuBody); if(TaskMenu.headNode == null) TaskMenu.headNode = this; else TaskMenu.rearNode.next = this; this.previous = TaskMenu.rearNode; TaskMenu.rearNode = this; this.menuID = TaskMenu.collection.push(this) - 1; if(this.items.length > 0) { this._setMenuFixed(false); this._appendItems(); this._setMenuFixed(true); } this._setMenuHeight(this._getMenuHeight()); if(this.state == TaskMenuState.close) { this._fixedMenuPosWhileClose(); } TaskMenu._refreshAll(); } this.add = function(taskMenuItems,iPosition) { var nItem = new Array(); if(taskMenuItems instanceof Array) { for(var i = 0; i < taskMenuItems.length; i++) { if(taskMenuItems[i] instanceof TaskMenuItem) { (dstItem = (taskMenuItems[i].container == null)? taskMenuItems[i] : taskMenuItems[i].cloneNode()).container = this; nItem.push(dstItem); } } } else if(taskMenuItems instanceof TaskMenuItem) { (nItem[0] = (taskMenuItems.container == null)? taskMenuItems : taskMenuItems.cloneNode()).container = this; } else return; if(iPosition == null || typeof iPosition != "number" || iPosition < 0 || iPosition > nItem.Length) { iPosition = this.items.length; } this.items = this.items.slice(0,iPosition).concat( nItem , this.items.slice(iPosition ) ); this._setMenuFixed(true); this._clearMenu(); this._appendItems(); this._invalidate(); } this.remove = function(arg1,arg2) { var deletedItems = new Array(); if(arguments.length == 2 && typeof arg1 == "number" && typeof arg2 == "number") { deletedItems = this.items.splice(arg1,arg2); } else if(arguments.length == 1 && typeof arg1 == "number") { deletedItems = this.items.splice(arg1,1); } else if(arguments.length == 1 && arg1 instanceof TaskMenuItem) { for(var i = 0; i < this.items.length; i++) { if(this.items[i] == arg1) { deletedItems = this.items.splice(i,1); break; } } } else if(arguments.length == 0) { this.clear(); } else { alert("Error at TaskMenu.remove"); return; } for(var i = 0; i < deletedItems.length; i++) { deletedItems[i].container = null; } this._clearMenu(); this._appendItems(); this._invalidate(); } this.item = function(n) { if(typeof n == "number") return this.items[n]; } this.clear = function() { clearTimeout(this.transformTimer); this._removeState(TaskMenuState.transforming); this._clearItem(); this._clearMenu(); this._invalidate(); } this.setLabel = function(label) { this.label = (label == null)? new String() : label.toString(); with(this.hLabel) { (INF_IS_IEXPLORER)? innerText = this.label : textContent = this.label; } this.titlebar.title = this.label; } this.getLabel = function() { return this.label; } this.setBackground = function(srcImage) { this.background = srcImage; if(this.titlebar != null && this.menuBody != null) { if(srcImage != null) this.menuBody.style.backgroundImage = "url(" + srcImage + ")"; else this.menuBody.style.backgroundImage = "url()"; } } this.invalidate = function() { if(this.titlebar == null || this.menuBody == null) return; var nScrollHeight = this._getMenuHeight(); var tfDistance = nScrollHeight - this.menuBody.offsetHeight; if(tfDistance == 0) return; clearTimeout(this.transformTimer); clearTimeout(this.invalidateTimer); this._attachState(TaskMenuState.transforming); this.transformSleep = CFG_SLEEP_TIME_BEGIN; this.transformStep = (tfDistance > 0)? Math.ceil(tfDistance / CFG_FRAME_COUNT) : Math.floor(tfDistance / CFG_FRAME_COUNT); if(this.state & TaskMenuState.closing) this.operationStep = Math.ceil(nScrollHeight / CFG_FRAME_COUNT); if(tfDistance > 0) this.invalidateTimer = setTimeout("TaskMenu.collection[" + this.menuID + "]._extend()",50); else this.invalidateTimer = setTimeout("TaskMenu.collection[" + this.menuID + "]._shorten()",50); } this.click = function() { clearTimeout(this.operationTimer); this.operationSleep = CFG_SLEEP_TIME_BEGIN; var nodeTypeFix = (this._isSpecialHeadNode())? "_Head" : ""; this.operationStep = Math.ceil(this._getMenuHeight() / CFG_FRAME_COUNT); if(this.state & TaskMenuState.open || this.state & TaskMenuState.opening) { this._attachState(TaskMenuState.closing); this.hArrayCell.className = "MenuTitlebarRight_Close_MouseOver" + nodeTypeFix; this._close(); } else if(this.state & TaskMenuState.close ||this.state & TaskMenuState.closing) { this._attachState(TaskMenuState.opening); this.hArrayCell.className = "MenuTitlebarRight_Open_MouseOver" + nodeTypeFix; this._open(); } } } TaskMenu.headNode = null; TaskMenu.rearNode = null; TaskMenu.collection = new Array(); TaskMenu._isScrollbarEnabled = function() { return (TaskMenu.rearNode.menuBody.offsetTop + TaskMenu.rearNode.menuBody.offsetHeight) > document.body.clientHeight; } TaskMenu._isScrollbarChanged = function() { var currentScrollbarStatus; try { currentScrollbarStatus = TaskMenu._isScrollbarEnabled(); return INF_IS_SCROLLBAR_ENABLED != currentScrollbarStatus; } catch(ex) { return false; } finally { INF_IS_SCROLLBAR_ENABLED = currentScrollbarStatus; } } TaskMenu._onClick = function() { var srcElement = JS.getSourceElement(arguments[0]); var srcMenu = srcElement.reflectClass; if(srcMenu != null) { srcMenu.click(); } } TaskMenu._onMouseBehavior = function() { var refMenu = JS.getSourceElement(arguments[0]).reflectClass; var nodeTypeFix = (refMenu._isSpecialHeadNode())? "_Head" : ""; var behaviorFix = (arguments[0].type.toUpperCase() == "MOUSEOVER")? "_MouseOver" : ""; refMenu.hLabel.className = "MenuTitle" + behaviorFix + nodeTypeFix; if( (refMenu.state & TaskMenuState.open) || (refMenu.state & TaskMenuState.opening) ) { refMenu.hArrayCell.className = "MenuTitlebarRight_Open" + behaviorFix + nodeTypeFix; } else if( (refMenu.state & TaskMenuState.close) || (refMenu.state & TaskMenuState.closing) ) { refMenu.hArrayCell.className = "MenuTitlebarRight_Close" + behaviorFix + nodeTypeFix; } } TaskMenu._invalidateAll = function() { for(var i = 0; i < TaskMenu.collection.length; i++) { TaskMenu.collection[i]._fixMenuWidth(); } } TaskMenu._refreshAll = function() { if( CFG_IS_SCROLLBAR_ENABLED ) if(TaskMenu._isScrollbarChanged()) { TaskMenu._invalidateAll(); } } TaskMenu.setStyle = function(strCssFile) { var HeadElement = document.getElementsByTagName("HEAD")[0]; var cssFileID = "__TaskMenuCssFile__"; while(document.getElementById("TaskMenuCssFile") != null) { try { HeadElement.removeChild(document.getElementById(cssFileID )); } catch(ex) {} } with(HeadElement.appendChild(document.createElement("LINK"))) { id = cssFileID; href = strCssFile; rel = "stylesheet"; type = "text/css"; } } TaskMenu.setAutoBehavior = function(value) { INF_IS_MENU_BEHAVIOR_AUTO = (value == false)? false : true; } TaskMenu.setHeadMenuSpecial = function(value) { CFG_IS_SPECIAL_HEAD_NODE = (value == true)? true : false; } TaskMenu.setScrollbarEnabled = function(value) { CFG_IS_SCROLLBAR_ENABLED = (value == false)? false : true; try { if(CFG_IS_SCROLLBAR_ENABLED) document.body.style.overflowY = "auto"; else document.body.style.overflowY = "hidden"; } catch(ex) { alert(ex.description); } } function JS() {} JS.getSourceElement = function(evt) { return (evt.target == null)? evt.srcElement : evt.target; } JS.addListener = function(obj,eventName,callbackFunction,flag) { if(obj.attachEvent) obj.attachEvent("on" + eventName,callbackFunction); else if(obj.addEventListener) obj.addEventListener(eventName,callbackFunction,flag); else eval("obj.on" + eventName + "=" + callbackFunction); } JS.removeListener = function(obj,eventName,callbackFunction,flag) { if(obj.detachEvent) obj.detachEvent("on" + eventName,callbackFunction); else if (obj.removeEventListener) obj.removeEventListener(eventName,callbackFunction,flag); else eval("obj.on" + eventName + "= new Function()"); } JS.addListener(window,"resize",new Function("setTimeout(\"TaskMenu._refreshAll()\",30);"),false); JS.addListener(window,"error",new Function("return true"),false);