Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F1093095
in-portal
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Aug 11, 9:06 AM
Size
37 KB
Mime Type
text/x-diff
Expires
Wed, Aug 13, 9:06 AM (1 h, 3 m)
Engine
blob
Format
Raw Data
Handle
708027
Attached To
rINP In-Portal
in-portal
View Options
Index: trunk/themes/default2007/platform/inc/nlsmenu.js
===================================================================
--- trunk/themes/default2007/platform/inc/nlsmenu.js (revision 8586)
+++ trunk/themes/default2007/platform/inc/nlsmenu.js (revision 8587)
@@ -1,844 +1,854 @@
/**
* nlsmenu.js v.2.0
* Copyright 2005-2007, addobject.com. All Rights Reserved
* Author Jack Hermanto, www.addobject.com
*/
var nlsMenu = new Object();
var nlsMenuMgr = new Object();
var nlsWinElmt = [];
var ag0=window.navigator.userAgent;
var nls_isIE = (ag0.indexOf("MSIE") >=0);
var nls_isIE5 = (ag0.indexOf("MSIE 5.0") >=0);
var nls_isSafari = (ag0.indexOf("Safari") >=0);
var nls_isOpera = (ag0.indexOf("Opera") >=0);
if (nls_isOpera) {nls_isIE=false; nls_isIE5=false;};
function NlsMenuManager(mgr) {
this.mgrId = mgr;
this.menus = new Object();
this.menubar = null;
this.timeout = 1000;
this.flowOverFormElement = false;
this.assocMenuMgr = [];
this.defaultEffect=null;
this.icPath="";
this.memorizeSel=false;
this.rt=new Object();
this.tmId = null;
this.setTimeout=function(a, t) { this.tmId = window.setTimeout(a, t); };
this.clearTimeout=function() { if (this.tmId!=null) { window.clearTimeout(this.tmId); this.tmId=null;}};
nlsMenuMgr[mgr] = this;
if(nls_isIE)window.attachEvent("onload", function(){nlsMenuMgr[mgr].init();});
return this;
};
var NlsMnMgr = NlsMenuManager.prototype;
NlsMnMgr.createMenu = function(mId) {
var m=new NlsMenu(mId)
m.mgr=this; m.mgrId=this.mgrId; m.icPath=this.icPath;
m.useEffect(this.defaultEffect);
if (this.design) { m.$menuItemClick = NlsMenu.$dsItemClick; }
this.menus[mId]=m;
return m;
};
NlsMnMgr.createMenubar = function (mbarId) {
if (this.menubar) alert("Menubar already exists!");
var m=new NlsMenubar(mbarId);
m.mgr=this; m.mgrId=this.mgrId; m.icPath=this.icPath;
if (this.design) { m.$menuItemClick = NlsMenu.$dsItemClick; }
this.menubar=m;
return m;
};
NlsMnMgr.renderMenus = function (plc) {
if (plc && plc!="") {
var d=NlsMenu.$GE(plc); var s="";
for (it in this.menus) { s+=this.menus[it].renderMenu(); }
d.innerHTML=s;
} else {
for (it in this.menus) { document.write(this.menus[it].renderMenu()); }
}
};
NlsMnMgr.renderMenubar = function (plc) {
if (this.menubar) {
if (plc && plc!="") {
NlsMenu.$GE(plc).innerHTML=this.menubar.renderMenubar();
} else {
document.write(this.menubar.renderMenubar());
}
}
if(this.memorizeSel) this.loadPath();
};
NlsMnMgr.hideMenus = function () {
for (var it in this.menus) {if (this.menus[it].rt.active) this.menus[it].hideMenu();}
if (this.menubar) this.menubar.hideMenu();
};
NlsMnMgr.addAssocMenuMgr = function(frm, mgrId) {
this.assocMenuMgr[this.assocMenuMgr.length] = [frm, mgrId];
};
NlsMnMgr.getMenu= function(mId) { return this.menus[mId]; };
NlsMnMgr.init=function() {
if(this.menubar)this.menubar.init();
}
function listAllWinElmt() {
nlsWinElmt = [];
var arrWinEl = document.getElementsByTagName("SELECT");
var elm; var tmp; var x; var y;
for(var i=0; i<arrWinEl.length; i++) {
elm = arrWinEl[i]; tmp=elm; x=0; y=0;
while (tmp!=null) {
x += tmp.offsetLeft; y+=tmp.offsetTop;
tmp = tmp.offsetParent;
}
nlsWinElmt[nlsWinElmt.length] = {e:elm, eX1:x, eY1:y, eX2:x+elm.offsetWidth, eY2:y+elm.offsetHeight};
}
};
function NlsMenuItem(id, capt, url, ico, enb, xtra, subId, title, crossFrame, subFrame, subPos, subPosAdj, subDir) {
this.id = id;
this.intKey = "";
this.capt = capt;
this.url = (url==null? "" : url);
this.ico = (ico==null || ico=="" || ico.length==0) ? null: ico;
this.enable=(enb==null?true:enb);
this.xtra = xtra;
this.stlprf="";
this.target=null;
this.title=title==null?"":title;
this.itemEffect=null;
this.visible="false";
this.state=1;
this.selected=false;
this.subMenuId = (subId?subId:"");
this.crsFrame = (crossFrame?crossFrame:false);
this.subFrame = (subFrame?subFrame:null);
this.subPos = (subPos?subPos:[null,null]);
this.subPosAdj = (subPosAdj?subPosAdj:[0,0]);
this.subDir = (subDir?subDir:["right","down"]);
this.toString=function() {return "NlsMenuItem";};
this.useItemEffect=function(effName) {
this.itemEffect=new NlsMenuItemEffect(this.intKey, effName);
};
this.rt={subUrl:null,loaded:0};
return this;
};
function NlsMenuSeparator(cstSeparator) {
this.stlprf = "";
this.intKey = "";
this.seprt = cstSeparator!=null?cstSeparator:"";
this.render = function () {
if (this.seprt!="") return this.seprt;
return ("<table border=0 cellpadding=0 cellspacing=0 width='100%' height='0%'><tr>" +
"<td class=\""+this.stlprf+"nlsseparator\"></td>" +
"</tr></table>");
};
this.toString=function() {return "NlsMenuSeparator";};
};
function NlsCustomMenuItem(cst) {
this.intKey = "";
this.cstMenu = (cst?cst:" ");
this.toString=function() {return "NlsCustomMenuItem";};
};
function NlsMenu(mId) {
/*private*/
this.lsItm=null;
this.mgrId = "";
this.mgr=null;
this.winElmt=null;
this.container=null;
this.customBorder=null;
this.shadow=new NlsMenuShadow("none", "5px", mId);
this.count=0;
this.isMenubar=false;
this.effect=null;
this.srItems=[];
this.rt={ready:true,active:false};
/*public*/
this.mId = mId;
this.items = new Object();
this.stlprf="";
this.subMenuIc=null;
this.target="_self";
this.icPath="";
this.itemSpc="";
this.stretchItem=true;
this.selection=false;
this.showIcon=false;
this.showSubIcon=true;
this.absWidth="";
this.orient="V";
this.defItmEff=null;
this.defPos=[0,0];
this.maxItemCol=100;
this.zIndex = 100;
this.wnd = window;
nlsMenu[mId] = this;
return this;
};
var NLSMENU=NlsMenu.prototype;
NLSMENU.addItem = function(key, capt, url, ico, enb, xtra, subId, title) {
var intKey = this.mId+"_"+key;
var it = new NlsMenuItem(key, capt, url, ico, enb, xtra, subId, title);
it.intKey = intKey;
it.mId=this.mId;
this.items[intKey]=it;
this.srItems[this.srItems.length]=it;
if (this.defItmEff!=null && typeof(NlsMenuItemEffect) != "undefined") { it.useItemEffect(this.defItmEff); }
this.count++;
return it;
};
NLSMENU.addSeparator = function(separator) {
var intKey = "sep_"+this.count;
var it = (separator ? separator : new NlsMenuSeparator());
it.stlprf = this.stlprf;
it.intKey = intKey;
this.items[intKey] = it;
this.srItems[this.srItems.length]=it;
this.count++;
return it;
};
NLSMENU.addSubmenu = function(key, subId, crsFrame, subFrame, subPos, subPosAdj, subDir) {
var intKey = this.mId+"_"+key;
var it = this.items[intKey];
it.subMenuId=subId;
it.subFrame=(subFrame?subFrame:null);
it.crsFrame=(crsFrame?crsFrame:false);
it.subPos = (subPos?subPos:[null,null]);
it.subPosAdj = (subPosAdj?subPosAdj:[0,0]);
it.subDir = (subDir?subDir:["right","down"]);
return it;
};
NLSMENU.addCustomMenu = function (custom) {
var intKey = "cst_"+this.count;
var it = new NlsCustomMenuItem(custom);
it.intKey = intKey;
this.items[intKey] = it;
this.srItems[this.srItems.length]=it;
this.count++;
return it;
};
NLSMENU.getItemById = function (key) {
return this.items[this.mId+"_"+key];
};
NLSMENU.setItemStyle = function (key, stlprf) {
var intKey = this.mId+"_"+key;
var mnItem = this.items[intKey];
mnItem.stlprf=stlprf;
};
NLSMENU.setItemText = function (key, tx) {
var intKey = this.mId+"_"+key;
var mnItem = this.items[intKey];
mnItem.capt=tx;
var oD=NlsMenu.$GE(intKey+"x2");
if (oD) oD.innerHTML=tx;
}
NLSMENU.enableItem = function (key, b) {
var it = this.items[this.mId+"_"+key] ;
it.enable=b;
setMnStyle(NlsMenu.$GE(it.intKey), (b?(it.selected?"S":"N"):"D"), NlsMenu.getPrf(it, this));
setMnIcon(this, it, "N");
};
NLSMENU.dropShadow = function (pos, offset) {
if (this.shadow) { this.shadow.pos=pos; this.shadow.offset=(offset?offset:"5px"); } else
{ this.shadow=new NlsMenuShadow(pos, offset, this.mId); }
};
NLSMENU.applyBorder = function (bTop, bBottom, bLeft, bRight) {
if (!bTop && !bBottom && !bLeft && !bRight) {
this.customBorder=null;
} else {
this.customBorder=new NlsMenuBorder(bTop, bBottom, bLeft, bRight);
}
};
NLSMENU.useEffect = function (efN) {
if(efN!=null && efN!="") {
this.effect=new NlsMenuEffect(this.mId, efN);
}
};
NLSMENU.renderMenu = function() {
var scPath="", sbIc=null;
var allScs = (document.getElementsByTagName ? document.getElementsByTagName("SCRIPT"): document.scripts);
for (var i=0;i<allScs.length;i++) {
if (allScs[i].src.toLowerCase().indexOf("nlsmenu.js")>=0) { scPath=allScs[i].src.replace(/nlsmenu.js/gi, ""); }
}
if (!this.subMenuIc) { sbIc=[scPath+"img/submenu.gif", scPath+"img/submenuovr.gif"];}
else {sbIc=[this.icPath+this.subMenuIc[0]]; if(this.subMenuIc[1])sbIc[1]=this.icPath+this.subMenuIc[1];}
var cs="<table cellpadding='0' cellspacing='0' ";
var sAbs=(this.absWidth==""?"":"width='"+this.absWidth+"'");
var smenu="<table cellpadding='0' cellspacing='"+(this.itemSpc==""?"0":this.itemSpc)+"' width='100%'>";
var tmpCnt=0, prf=this.stlprf, it=null, rt=null, menu=null;
for (var i=0; i<this.srItems.length; i++) {
it=this.srItems[i];
menu=nlsMenu[it.subMenuId];
if(!it.crsFrame) {
if(menu)menu.prIt=it.intKey;
if(!menu && it.rt && !it.rt.subUrl) { it.subMenuId=""; }
}
if (it.toString()=="NlsMenuSeparator") {
smenu+=(this.orient=="V"?"<tr>":"");
smenu+=("<td class='"+this.stlprf+"nlsseparatorcontainer'>"+it.render()+"</td>");
smenu+=(this.orient=="V"?"</tr>":"");
} else
if (it.toString()=="NlsCustomMenuItem") {
smenu+=(this.orient=="V"?"<tr>":"");
smenu+=("<td>"+it.cstMenu+"</td>");
smenu+=(this.orient=="V"?"</tr>":"");
} else {
prf=NlsMenu.getPrf(it, this);
if (this.orient=="V") { smenu+="<tr>"; }
if (this.orient=="H") { if (tmpCnt==0) smenu+="<tr>"; tmpCnt++; }
smenu+="<td align='center' id=\""+it.intKey+"\" class=\""+prf+"nlsitemcontainer\" onmouseover=\"nlsMenuItemOver(event, '"+it.intKey+"')\" onclick=\"return nlsMenu['"+this.mId+"'].$menuItemClick(event, '"+it.intKey+"');\">";
smenu+=cs+(this.stretchItem?"width='100%'":"")+" height='100%'><tr style=\"cursor:pointer;\" title=\""+it.title+"\">";
if (this.showIcon) {
smenu+="<td id=\""+it.intKey+"x1\" class=\""+prf+"nlsiconcell\" align=\"center\" nowrap>";
if(it.ico) {
if(it.ico[0]) smenu+="<img id=\"ic_"+it.intKey+"\" "+(it.enable?"":"style='display:none'")+" src=\""+this.icPath+it.ico[0]+"\">";
if(it.ico[1]) smenu+="<img id=\"icovr_"+it.intKey+"\" style='display:none' src=\""+this.icPath+it.ico[1]+"\">";
if(it.ico[2]) smenu+="<img id=\"icdis_"+it.intKey+"\" "+(!it.enable?"":"style='display:none'")+" src=\""+this.icPath+it.ico[2]+"\">";
}
smenu+="</td>";
}
smenu+="<td align='left' id=\""+it.intKey+"x2\" class=\""+prf+(it.enable?"nlsitem\"":"nlsitemdisable\"")+" nowrap>"+it.capt+"</td>";
if (this.showSubIcon && it.subMenuId!="") { smenu+="<td id=\""+it.intKey+"x3\" class=\""+prf+"nlssubmenucell\" align=\"center\" nowrap>"+ (it.subMenuId!=""? "<img id='subic_"+it.intKey+"' src=\""+sbIc[0]+"\">" + (sbIc.length>1?"<img id='subicovr_"+it.intKey+"' style='display:none' src=\""+sbIc[1]+"\">":"") :"") +"</td>"; }
smenu+="</tr></table>";
smenu+="</td>";
if (this.orient=="V") { smenu+="</tr>"; }
if (this.orient=="H" && tmpCnt==this.maxItemCol) { smenu+="</tr>"; tmpCnt=0; }
}
}
if(this.orient=="H" && tmpCnt!=0 ) {
if(this.srItems.length>this.maxItemCol)
while(++tmpCnt<=this.maxItemCol) smenu+="<td class=\""+prf+"nlsitemcontainer\"> </td>";
smenu+="</tr>";
}
smenu += "</table>";
smenu = cs+"class='"+this.stlprf+"nlsmenu' "+ sAbs + "><tr><td>"+smenu+"</td></tr></table>";
if (this.customBorder!=null) smenu = this.customBorder.applyBorder(smenu, this.stlprf);
smenu = this.shadow.dropShadow(smenu);
smenu = "<div " + (nls_isIE && !this.isMenubar?"style='position:absolute;z-index:"+(this.zIndex-1)+";'":"") + ">" + smenu;
if (!this.isMenubar && nls_isIE && !nls_isIE5 && this.mgr.flowOverFormElement) {
smenu += "<iframe id='"+this.mId+"ifrm' scrolling='no' frameborder=0 width='1' height='1' style='position:absolute;top:0px;left:0px;z-index:-1;filter:alpha(opacity=0)' src='"+scPath+"img/blank.gif"+"'></iframe>";
}
smenu+="</div>";
if (arguments[0]=="content") return smenu;
smenu = "<div id='"+this.mId+"' style="+(this.isMenubar?"''":"'position:absolute;z-index:"+this.zIndex+";display:none;'")+" onmouseover=\"_nlsMenuItemOver('"+this.mgrId+"')\" onmouseout=\"nlsMenuItemOut('"+this.mgrId+"')\">" + smenu + "</div>";
return smenu;
};
NLSMENU.init=function() {
var v=this.rt.vshade; if(!v) v=NlsMenu.$GE("vshade_"+this.mId);
var itm=this.rt.actmn; if(!itm) itm=NlsMenu.$GE("actmn_"+this.mId);
if(v){
var o=itm.childNodes[0].offsetHeight-parseInt(this.shadow.offset);
if(o>=0) v.style.height=o+"px";
}
this.rt.actmn=itm;
this.rt.vshade=v;
};
function NlsMenuShadow(pos, offset, mId) {
this.pos=pos;
this.offset=offset;
this.mId=mId;
this.dropShadow = function (smenu) {
var mn = nlsMenu[this.mId];
var cs="<table cellpadding=0 cellspacing=0 ";
var shadow = "<div>"+cs+"id='effwin_"+this.mId+"' height='0px'>";
var hshadow = "<td style='padding-@@PAD:"+this.offset+";'>"+cs+"width='100%' height='5px' class='"+mn.stlprf+"horzshadow'><tr><td></td></tr></table></td>";
var vshadow = "<td style='padding-@@PAD:"+this.offset+";height:100%;'>"+cs+"id='vshade_"+this.mId+"' width='5px' height='100%' class='"+mn.stlprf+"vertshadow'><tr><td></td></tr></table></td>";
var menutd = "<td id='actmn_"+this.mId+"'>"+smenu+"</td>";
var cornertd = "<td class='"+mn.stlprf+"cornshadow' width='5px' height='5px'></td>";
var av=[vshadow.replace(/@@PAD/gi,"top"), vshadow.replace(/@@PAD/gi,"bottom")];
var ah=[hshadow.replace(/@@PAD/gi,"left"), hshadow.replace(/@@PAD/gi,"right")];
switch (this.pos) {
case "none":
shadow += "<tr>"+menutd+"</tr>";
break;
case "bottomright" :
shadow += "<tr>"+menutd+av[0]+"</tr>" +
"<tr>"+ah[0]+cornertd+"</tr>";
break;
case "bottomleft" :
shadow += "<tr>"+av[0]+menutd+"</tr>" +
"<tr>"+cornertd+ah[1]+"</tr>";
break;
case "topleft" :
shadow += "<tr>"+cornertd+ah[1]+"</tr>" +
"<tr>"+av[1]+menutd+"</tr>";
break;
case "topright" :
shadow += "<tr>"+ah[0]+cornertd+"</tr>" +
"<tr>"+menutd+av[1]+"</tr>";
break;
}
return shadow + "</table></div>";
};
};
NLSMENU.showMenu = function(x1, y1, x2, y2, mnOrient, subDir, subAdj) {
this.mgr.clearTimeout();
if(this.menuOnShow(this.mId)==false)return;
var ctx = NlsMenu.$GE(this.mId);
- if (!ctx) return;
+ if (!ctx) {
+ //create menu if not rendered.
+ var dv=document.createElement("div");
+ dv.innerHTML=this.renderMenu();
+ document.body.insertBefore(dv, document.body.childNodes[0]);
+ ctx = NlsMenu.$GE(this.mId);
+ };
ctx.style.visibility="hidden";
ctx.style.display="";
if(nls_isIE)this.init();
var w=window, d=document.body, de=document.documentElement;
var scrOffX = w.scrollX||d.scrollLeft||de.scrollLeft;
var scrOffY = w.scrollY||d.scrollTop||de.scrollTop;
var cW=w.innerWidth||d.clientWidth;
var cH=w.innerHeight||d.clientHeight;
var mW=ctx.childNodes[0].offsetWidth;
var mH=ctx.childNodes[0].offsetHeight;
var sDir=(subDir?[subDir[0], subDir[1]]:["right", "down"]);
var adjX=(subAdj?subAdj[0]:this.defPos[0]), adjY=(subAdj?subAdj[1]:this.defPos[1]);
var dmfrm = NlsMenu.$GE(this.mId+"ifrm");
if (dmfrm) {
var actMn = NlsMenu.$GE("actmn_"+this.mId).children[0];
dmfrm.width = actMn.offsetWidth;
dmfrm.height = actMn.offsetHeight;
}
var mX=0,mY=0;
if (mnOrient=="V") {
if (sDir[0]=="right") {
if(x2+mW>cW){if(x1>=mW){mX=x1-mW+adjX+scrOffX;sDir[0]="left"}else{mX=cW-mW-1+scrOffX;}}else{mX=x2+scrOffX-adjX;}
} else {
if(x1-mW<0){if(x2+mW<cW){mX=x2-adjX+scrOffX;sDir[0]="right"}else{mX=scrOffX;}}else{mX=x1-mW+adjX+scrOffX;}
}
if (sDir[1]=="down") {
if(y1+mH>cH){if(y2>=mH){mY=y2-mH+scrOffY-adjY;sDir[1]="up"}else{mY=cH-mH-1+scrOffY;}}else{mY=y1+scrOffY+adjY;}
} else {
if(y1-mH<0){if(y1+mH<cH){mY=y1+scrOffY-adjY;sDir[1]="down"}else{mY=scrOffY;}}else{mY=y2-mH+scrOffY-adjY;}
}
} else {
if (sDir[0] == "right") {
if(x1+mW>cW){if(x2>=mW){mX=x2-mW+scrOffX-adjX;sDir[0]="left"}else{mX=cW-mW-1+scrOffX;}}else{mX=x1+scrOffX+adjX;}
} else {
if(x2-mW<0){if(x1+mW<cW){mX=x1+scrOffX+adjX;sDir[0]="right"}else{mX=scrOffX;}}else{mX=x2-mW+scrOffX-adjX;}
}
if (sDir[1] == "down") {
if(y2+mH>cH){if(y1>=mH){mY=y1-mH+scrOffY+adjY;sDir[1]="up"}else{mY=cH-mH-1+scrOffY;}}else{mY=y2+scrOffY-adjY;}
} else {
if(y1-mH<0){if(y2+mH<cH){mY=y2+scrOffY-adjY;sDir[1]="down"}else{mY=scrOffY;}}else{mY=y1-mH+scrOffY+adjY;}
}
}
if (nls_isIE5 || !this.mgr.flowOverFormElement) {
if (this.winElmt==null) hideWinElmt(this, mX, mY, mX+mW, mY+mH);
if (this.winElmt==null) this.winElmt=[];
for(var i=0;i<this.winElmt.length;i++) {
this.winElmt[i].style.visibility="hidden";
}
}
with (ctx.style) {
left=mX+"px"; top=mY+"px";
zIndex = this.zIndex;
if (this.effect) {
with (this.effect) {prop["dir"]=sDir[(mnOrient=="V"?0:1)]; start(false); visibility="visible"; run();}
} else { visibility="visible"; }
}
this.rt.active=true;
};
function hideWinElmt(mn, mX1, mY1, mX2, mY2) {
var oe;
for (var i=0; i<nlsWinElmt.length; i++) {
oe = nlsWinElmt[i];
if ((oe.eX1>=mX1 && oe.eX1<=mX2 && oe.eY1>=mY1 && oe.eY1<=mY2) ||
(oe.eX1>=mX1 && oe.eX1<=mX2 && oe.eY2>=mY1 && oe.eY2<=mY2) ||
(oe.eX2>=mX1 && oe.eX2<=mX2 && oe.eY1>=mY1 && oe.eY1<=mY2) ||
(oe.eX2>=mX1 && oe.eX2<=mX2 && oe.eY2>=mY1 && oe.eY2<=mY2) ||
(mX1>=oe.eX1 && mX1<=oe.eX2 && mY1>=oe.eY1 && mY1<=oe.eY2) ||
(mX1>=oe.eX1 && mX1<=oe.eX2 && mY2>=oe.eY1 && mY2<=oe.eY2) ||
(mX2>=oe.eX1 && mX2<=oe.eX2 && mY1>=oe.eY1 && mY1<=oe.eY2) ||
(mX2>=oe.eX1 && mX2<=oe.eX2 && mY2>=oe.eY1 && mY2<=oe.eY2) ||
(oe.eX1<mX1 && oe.eX2>mX2 && oe.eY1>=mY1 && oe.eY1<=mY2) ||
(oe.eX1<mX1 && oe.eX2>mX2 && oe.eY2>=mY1 && oe.eY2<=mY2)
) {
if (oe.e.style.visibility!="hidden") {
oe.e.style.visibility="hidden";
if (mn.winElmt==null) mn.winElmt=[];
mn.winElmt[mn.winElmt.length]=oe.e;
}
}
}
};
NLSMENU.showMenuAbs = function(x, y) {
var ctx = NlsMenu.$GE(this.mId);
ctx.style.top=y+"px"; ctx.style.left=x+"px";
ctx.style.display="";
this.rt.active=true;
};
NLSMENU.hideMenu = function() {
var ctx = NlsMenu.$GE(this.mId);
if (!ctx) return;
if (!this.isMenubar) {
this.rt.active=false;
if (this.effect) {
this.effect.start(true);
if ((nls_isIE && this.effect.effName!="aoslide") || nls_isOpera && this.effect.effName!="aoslide") {ctx.style.visibility="hidden";} else { this.effect.onHide=function() {ctx.style.visibility="hidden";}; };
this.effect.run();
} else { ctx.style.visibility="hidden"; }
this.menuOnHide(this.mId);
} else {
this.isMenuOpened = false;
}
if (this.lsItm!=null) {
var it=this.items[this.lsItm.id];
if(it.state!=2 && !it.selected) {
setMnStyle(this.lsItm, (it.enable?"N":"D"), NlsMenu.getPrf(it, this));
setMnIcon(this, it, "N");
}
this.lsItm=null;
}
if (this.winElmt!=null && this.winElmt.length>0) {
for (i=0;i<this.winElmt.length;i++) {
this.winElmt[i].style.visibility = "visible";
}
}
if (typeof(window.status)!="undefined") window.status="";
};
NLSMENU.hasSubmenu=function(key) {
- var s=this.items[this.mId+"_"+key].subMenuId;
- return(nlsMenu[s]);
+ var it=this.items[this.mId+"_"+key];
+ if(!it.crsFrame) {return(nlsMenu[it.subMenuId]);} else {
+ return it.subFrame.nlsGetMenu(it.subMenuId);
+ }
};
function $itemClick(mn, it) {
var mnMgr = nlsMenuMgr[mn.mgrId];
mnMgr.hideMenus();
var assMgr = mnMgr.assocMenuMgr;
if ( assMgr && assMgr.length > 0) {
for (var i=0;i<assMgr.length;i++) { assMgr[i][0].hideAllNlsMenu(); }
}
var trgt=it.target;
if (trgt==null) trgt=mn.target!=null?mn.target:"_self";
if (it.url!="") {
window.open(it.url, trgt);
} else {
return mn.menuOnClick(mn.mId, it.id);
}
};
NLSMENU.$menuItemClick = function(e, itemId) {
if (!this.items[itemId].enable) return;
var it=this.items[itemId], prf=NlsMenu.getPrf(it, this);
var oIt = NlsMenu.$GE(itemId), mgr=this.mgr;
if(this.isMenubar && this.dropOnClick && this.hasSubmenu(it.id)) {
if(!this.isMenuOpened) {
NlsMenu.showMenu(this, it);
this.isMenuOpened = true;
} else {
mgr.hideMenus();
setMnStyle(oIt, (it.enable ? "O" : "D"), prf);
setMnIcon(this, it, "O");
this.isMenuOpened = false;
return null;
}
} else {
if(it.toggle) {
this.setItemState(itemId, (it.state==1?2:1));
} else if(this.selection) {
this.setSelection(itemId, true);
} else if(mgr.memorizeSel) {
mgr.selectPath(this.mId, it.id);
mgr.savePath(itemId);
}
$itemClick(this, it);
}
};
NLSMENU.menuOnClick = function (menuId, itemId) {return true;};
NLSMENU.menuOnShow = function (menuId) {return true;};
NLSMENU.menuOnHide = function (menuId) {return true;};
NLSMENU.reload = function(dh) {
var ef=this.effect;
if(ef) { ef.elm=null; ef.prop["init"]=false; }
+ this.lsItm=null;
if(dh!=true) this.mgr.hideMenus();
var m=NlsMenu.$GE(this.mId);
m.innerHTML=this.renderMenu("content");
};
function setMnIcon(mn, mnItm, f) {
var tf=(mnItm.enable?f:"D");
if (mn.showIcon && mnItm.ico && mnItm.ico.length>1) {
var k=mnItm.intKey;
var c=NlsMenu.$GE("ic_"+k), o=NlsMenu.$GE("icovr_"+k), d=NlsMenu.$GE("icdis_"+k);
c.style.display=(tf=="N"||(tf=="D" && !d)?"":"none");
o.style.display=(tf=="O"?"":"none");
if(d) d.style.display=(tf=="D"?"":"none");
}
if (mn.showSubIcon && mnItm.subMenuId!="") {
var ic=NlsMenu.$GE("subicovr_"+mnItm.intKey);
if(ic){
ic.style.display=(tf=="O"?"":"none");
ic=NlsMenu.$GE("subic_"+mnItm.intKey);
if(ic)ic.style.display=(tf=="N"||tf=="D"?"":"none");
}
}
};
function setMnStyle(it, s, prefix) {
var suff=(s=="O"?"over":(s=="S"?"sel":""));
it.className=prefix+"nlsitemcontainer"+suff;
var r = it.childNodes[0].rows[0], rc=null;
for (var i=0; i<r.cells.length; i++) {
rc=r.cells[i];
if(rc.id==it.id+"x1") rc.className=prefix+"nlsiconcell"+suff;
if(rc.id==it.id+"x2") rc.className=prefix+"nlsitem"+(s=="D"?"disable":suff);
if(rc.id==it.id+"x3") rc.className=prefix+"nlssubmenucell"+suff;
}
};
function nlsMenuItemOver(e, itId) {
var m=itId.split("_");
var prMenu = nlsMenu[m[0]];
if(prMenu.mgr.design==true)return;
var li = prMenu.lsItm;
if (!prMenu.rt.active || !prMenu.rt.ready) return;
var it=null, st="", nli=null;
if (li!=null) {
it=prMenu.items[li.id];
- if (it.intKey==itId) return;
+ if(!it) return;
+ if(it.intKey==itId) return;
if(it.state!=2 && !it.selected) { /*toggle pressed*/
var st=NlsMenu.getPrf(it, prMenu);
var ef=(it.itemEffect!=null);
if (ef) { it.itemEffect.init(); }
setMnStyle(li, (it.enable ? "N" : "D"), st);
setMnIcon(prMenu, it, "N");
if (ef) { it.itemEffect.start(); }
}
var tmp=(it.crsFrame?it.subFrame.nlsGetMenu(it.subMenuId):nlsGetMenu(it.subMenuId));
while(tmp!=null) {
nli = null;
if (tmp.lsItm) {
it=tmp.items[tmp.lsItm.id];
nli = (it.crsFrame ? it.subFrame.nlsGetMenu(it.subMenuId) : tmp.wnd.nlsGetMenu(it.subMenuId));
}
tmp.hideMenu(); tmp=nli;
}
}
var oIt = NlsMenu.$GE(itId);
it=prMenu.items[itId];
if (typeof(window.status)!="undefined") window.status=it.url;
if(it.state!=2 && !it.selected) {
if (it.itemEffect!=null) { it.itemEffect.init(); }
setMnStyle(oIt, (it.enable ? "O" : "D"), NlsMenu.getPrf(it, prMenu));
setMnIcon(prMenu, it, "O");
if (it.itemEffect!=null) { it.itemEffect.start(); }
}
if (!prMenu.isMenubar ||
(prMenu.isMenubar && !prMenu.dropOnClick) ||
(prMenu.isMenubar && prMenu.dropOnClick && prMenu.isMenuOpened)) { NlsMenu.showMenu(prMenu, it); }
prMenu.lsItm=oIt;
};
function nls_getXY(oIt) {
var p=new Object(); p.x=0;p.y=0;p.x2=0;p.y2=0; var tmp=oIt;var d=document;
while(tmp) { p.x+=tmp.offsetLeft; p.y+=tmp.offsetTop; tmp=tmp.offsetParent } ;
p.x -= (window.scrollX||d.body.scrollLeft||d.documentElement.scrollLeft);
p.y -= (window.scrollY||d.body.scrollTop||d.documentElement.scrollTop);
if (oIt) { p.x2=p.x+oIt.offsetWidth; p.y2=p.y+oIt.offsetHeight;};
return p;
};
NlsMenu.showMenu=function(mn, it) {
if(it.rt.subUrl && it.rt.loaded==0) {
//ajax menu
NlsMenuUtil.loadAJAXMenu(mn,it);
} else {
NlsMenu.$showMenu(mn,it);
}
}
NlsMenu.$showMenu=function(prMenu, it) {
var oIt = NlsMenu.$GE(it.intKey);
if (it.subMenuId!="" && it.enable==true) {
var p=nls_getXY(oIt), smn=null;
if (it.crsFrame) {
var ps=it.subPos;
if (ps[0]=="REL") { } else { p.x = ps[0]; p.x2=p.x; }
if (ps[1]=="REL") { } else { p.y = ps[1]; p.y2=p.y; }
if (!it.subFrame.nlsGetMenu) return;
smn = it.subFrame.nlsGetMenu(it.subMenuId);
if (!smn) return;
} else {
smn = nlsGetMenu(it.subMenuId);
if (!smn) return;
if (smn.zIndex <= prMenu.zIndex) { smn.zIndex = prMenu.zIndex+1 }
}
smn.showMenu(p.x, p.y, p.x2, p.y2, prMenu.orient, it.subDir, it.subPosAdj);
}
};
NlsMenu.getPrf=function(it, mn) {
if(!it.stlprf || it.stlprf=="")return mn.stlprf; else return it.stlprf;
}
function nls_showMenu(mId, oIt, orient, subDir, subPosAdj) {
var sMenu = nlsGetMenu(mId);
if (!sMenu) { hideAllNlsMenu(); return;}
sMenu.mgr.clearTimeout();
if (sMenu.rt.active) return;
var p=nls_getXY(oIt);
sMenu.mgr.hideMenus();
sMenu.showMenu(p.x, p.y, p.x2, p.y2, orient, subDir, subPosAdj);
}
function nls_hideMenu(mId) {
var sMenu = nlsGetMenu(mId);
if (!sMenu) return;
nlsMenuItemOut(sMenu.mgrId);
}
function _nlsMenuItemOver(mgrId) {
var mgr = nlsMenuMgr[mgrId];
if(mgr.design==true) return;
mgr.clearTimeout();
var am = mgr.assocMenuMgr;
if ( am && am.length > 0) {
for (var i=0; i<am.length; i++) {
if (!am[i][0].nlsMenuMgr) continue;
am[i][0].nlsMenuMgr[am[i][1]].clearTimeout();
}
}
for (var it in nlsMenuMgr) {
if (it!=mgrId) {
nlsMenuMgr[it].hideMenus();
}
}
};
function nlsMenuItemOut(mgrId) {
var mnMgr = nlsMenuMgr[mgrId];
if(mnMgr.design==true) return;
mnMgr.clearTimeout();
mnMgr.setTimeout(function() { _nlsMenuItemOut(mgrId) }, mnMgr.timeout);
var assMgr = mnMgr.assocMenuMgr;
if ( assMgr && assMgr.length > 0) {
for (var i=0; i<assMgr.length; i++) {
var frm = assMgr[i];
if (!frm[0].nlsMenuMgr) continue;
frm[0].nlsMenuMgr[frm[1]].clearTimeout();
frm[0].nlsMenuMgr[frm[1]].setTimeout(function() { frm[0]._nlsMenuItemOut(mgrId); }, mnMgr.timeout);
}
}
};
function _nlsMenuItemOut(mgrId) {
nlsMenuMgr[mgrId].hideMenus();
};
function nlsGetMenu(mId) {
return nlsMenu[mId];
};
/*===================================================*/
/*NlsMenuBar class*/
/*===================================================*/
NLSMENU.isMenuOpened = false;
NLSMENU.dropOnClick = false;
NLSMENU.renderMenubar = function () {
return this.renderMenu();
};
function NlsMenubar(mId) {
var mnBar = new NlsMenu(mId);
mnBar.isMenubar=true;
mnBar.rt.active=true;
return mnBar;
};
/*===================================================*/
/*Public general methods*/
/*===================================================*/
function hideAllNlsMenu() {
for (it in nlsMenu) {if (nlsMenu[it].rt.active) nlsMenu[it].hideMenu();}
};
/**Cross browser related methods*/
NlsMenu.$GE=function(id) {
if (document.all) {
return document.all(id);
} else
if (document.getElementById) {
return document.getElementById(id);
}
};
Property changes on: trunk/themes/default2007/platform/inc/nlsmenu.js
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.1
\ No newline at end of property
+1.2
\ No newline at end of property
Index: trunk/themes/default2007/platform/inc/nlsmenuext_xml.js
===================================================================
--- trunk/themes/default2007/platform/inc/nlsmenuext_xml.js (revision 8586)
+++ trunk/themes/default2007/platform/inc/nlsmenuext_xml.js (revision 8587)
@@ -1,226 +1,228 @@
/**
* nlsmenuext_xml.js v.1.0
* Copyright 2005-2007, addobject.com. All Rights Reserved
* Author Jack Hermanto, www.addobject.com
*/
var $nls_ieXML=["MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0", "MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument", "Microsoft.XmlDom"];
function NlsMenuUtil() {}
var NLSMNUTIL=NlsMenuUtil.prototype;
function $aonvl(v, c) { if(v)return v; else return c; };
function $aonevl(v, c) { if(!v || v=="")return c; else return v; };
NlsMenuUtil.createFromXML=function(xml) {
var rt=xml.documentElement;
var mgr=new NlsMenuManager(rt.getAttribute("id"));
mgr.flowOverFormElement=$aonevl(rt.getAttribute("flowoverformelement"), false);
mgr.defaultEffect=$aonevl(rt.getAttribute("defaulteffect"), null);
mgr.icPath=$aonvl(rt.getAttribute("icpath"), "");
mgr.memorizeSel=$aonevl(rt.getAttribute("memorizesel"), false);
-
+
var dm=rt.getElementsByTagName("menubar")[0];
NlsMenuUtil.createMenu(dm, mgr);
-
+
var mns=rt.getElementsByTagName("menus")[0];
if(mns){
for (var i=0;i<mns.childNodes.length;i++){
dm=mns.childNodes[i];
if(dm.nodeType!=1)continue;
if(dm.nodeName=="menu") {
NlsMenuUtil.createMenu(dm, mgr);
}
}
}
return mgr;
};
NlsMenuUtil.createMenu=function(dm, mgr, pc) {
var id=dm.getAttribute("id"), mn=nlsMenu[id];
if(mn) {
- if(pc!==true) {
+ if(pc!==true) {
mn.items=new Object(); mn.srItems=[];
mn.useEffect(mgr.defaultEffect);
}
} else mn=(dm.nodeName=="menubar"?mgr.createMenubar(id):mgr.createMenu(id));
var a=dm.attributes, n, v;
for(var i=0;i<a.length;i++) {
n=a[i].nodeName; v=a[i].nodeValue;
switch(n) {
case "orient":mn.orient=v;break;
case "showicon":mn.showIcon=(v=="true");break;
case "showsubicon":mn.showSubIcon=(v=="true");break;
case "target":mn.target=v;break;
case "stlprf":mn.stlprf=v;break;
case "submenuic": if(v && v!="") mn.subMenuIc=eval(v); break;
case "icpath":mn.icPath=v;
case "itemspc":mn.itemSpc=v;
+ case "droponclick":if(mn.isMenubar) {mn.dropOnClick=(v=="true");}
};
}
-
- var its=dm.getElementsByTagName("items")[0].childNodes, ic="";
+
+ var its=dm.getElementsByTagName("items")[0].childNodes, ic="", itm;
for(var i=0;i<its.length;i++) {
a=its[i]; if(a.nodeType!=1) continue;
if(a.nodeName=="separator") {mn.addSeparator(); continue;}
ic=a.getAttribute("ico");
- mn.addItem(a.getAttribute("id"),
- a.childNodes[0].nodeValue,
- $aonvl(a.getAttribute("url"),null),
+ itm=mn.addItem(a.getAttribute("id"),
+ a.childNodes[0].nodeValue,
+ $aonvl(a.getAttribute("url"),null),
(!ic || ic==""?null:eval(ic)),
(!a.getAttribute("enb")?null:a.getAttribute("enb")=="true"),
null, $aonvl(a.getAttribute("title"),null)
);
+ itm.stlprf=$aonvl(a.getAttribute("stlprf"), "");
+ itm.target=a.getAttribute("target");
+ if(itm.target=="") itm.target=null;
if(a.getAttribute("subid")) {
mn.addSubmenu(a.getAttribute("id"),
a.getAttribute("subid"),
(!a.getAttribute("crsframe")?null:a.getAttribute("crsframe")=="true"),
(!a.getAttribute("subframe")?null:eval(a.getAttribute("subframe"))),
(!a.getAttribute("subpos")?null:eval(a.getAttribute("subpos"))),
(!a.getAttribute("subposadj")?null:eval(a.getAttribute("subposadj"))),
(!a.getAttribute("subdir")?null:eval(a.getAttribute("subdir")))
);
-
+
if(a.getAttribute("suburl")) {
- mn.setSubmenuUrl(a.getAttribute("id"), NlsMenuUtil.formatRequest(a.getAttribute('suburl')));
+ mn.setSubmenuUrl(a.getAttribute("id"), a.getAttribute("suburl"));
}
}
}
return mn;
};
NlsMenuUtil.createFromXMLString=function(sXml) {;
var xml=NlsMenuUtil.createXMLDom(sXml);
return NlsMenuUtil.createFromXML(xml);
};
NlsMenuUtil.createFromXMLFile=function(fName) {
var xmlDom=NlsMenuUtil.$createDoc();
xmlDom.async=false;
xmlDom.load(fName);
return NlsMenuUtil.createFromXML(xmlDom);
};
-NlsMenuUtil.formatRequest = function ($url) {
- return $url += ($url.indexOf('?') ? '&' : '?') + 'ajax=yes';
-}
-
/*mCnt: menu container/placeholder*/
NlsMenuUtil.loadFromXMLFile=function(fName, mCnt) {
var req=NlsMenuUtil.createXMLRequest();
- req.open("get", NlsMenuUtil.formatRequest(fName), true);
+ req.open("get", fName, true);
req.onreadystatechange=function() {
if(req.readyState==4) {
if(req.status==200 || req.status==304) {
var s="";
var mgr=NlsMenuUtil.createFromXML(req.responseXML);
for (it in mgr.menus) { s+=mgr.menus[it].renderMenu(); }
if(s!="") NlsMenuUtil.$createMenuDom(s);
if(mgr.menubar) mgr.renderMenubar(mCnt);
}
}
};
req.send(null);
}
NlsMenuUtil.createXMLDom=function(sXml) {
var xmlDom=null;
if (typeof DOMParser != "undefined") {
var parser=new DOMParser(); //gecko browser xml dom
xmlDom=parser.parseFromString(sXml, "text/xml");
} else {
xmlDom=NlsMenuUtil.$createDoc();
xmlDom.loadXML(sXml);
}
return xmlDom;
};
NlsMenuUtil.$createDoc=function() {
var xmlDom=null;
if(nls_isIE) {
for (var i=0;i<$nls_ieXML.length;i++) {
try {
xmlDom=new ActiveXObject($nls_ieXML[i]);
break;
} catch (e) {}
}
} else {
xmlDom=document.implementation.createDocument("","",null);
}
return xmlDom;
};
NlsMenuUtil.createXMLRequest=function() {
if (typeof XMLHttpRequest != "undefined") { //for mozilla
var httpReq=new XMLHttpRequest();
return httpReq;
} else {
var arrObj=["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMHttp"];
var oXml=null;
for (var i=0; i<arrObj.length; i++) {
try {
oXml=new ActiveXObject(arrObj[i]);
return oXml;
- } catch (e) { }
+ } catch (e) { }
}
}
};
/*AJAX Menu*/
+NlsMnMgr.loadingText="Loading menu, please wait...";
+
NLSMENU.addAJAXSubmenu=function(key, subId, url, crsFrame, subFrame, subPos, subPosAdj, subDir) {
var it=this.addSubmenu(key, subId, crsFrame, subFrame, subPos, subPosAdj, subDir);
this.setSubmenuUrl(key, url);
};
NLSMENU.setSubmenuUrl=function(key, url) {
var it=this.items[this.mId+"_"+key];
it.rt.subUrl=url;
- it.rt.loaded=0;
+ it.rt.loaded=0;
};
NlsMenuUtil.$createMenuDom=function(s) {
var dv=document.createElement("div");
dv.innerHTML=s;
document.body.insertBefore(dv, document.body.childNodes[0]);
}
NlsMenuUtil.loadAJAXMenu=function(mn, it) {
var mgr=mn.mgr;
var req=NlsMenuUtil.createXMLRequest();
req.open("get", it.rt.subUrl, true);
req.onreadystatechange=function() {
if(req.readyState==4) {
if(req.status==200 || req.status==304) {
var de=req.responseXML.documentElement;
-
+
if(!de||de.childNodes.length==0) { //if no submenu
} else {
de=de.childNodes; var sub=null, main=null; subs=new Object(), smenu="";
for(var i=0;i<de.length;i++){
if(de[i].nodeType!=1) continue;
sub=NlsMenuUtil.createMenu(de[i], mn.mgr);
if(sub.mId==it.subMenuId) { main=sub; } else { subs[sub.mId]=sub;}
}
for (var x in subs) { smenu+=subs[x].renderMenu(); }
if(smenu) {NlsMenuUtil.$createMenuDom(smenu);}
- if(main) {
- main.prIt=it.intKey; main.reload(true);
- if(main.rt.active)NlsMenu.$showMenu(mn, it);
+ if(main) {
+ main.prIt=it.intKey; main.reload(true);
+ if(main.rt.active)NlsMenu.$showMenu(mn, it);
it.rt.loaded=2;
}
- }
+ }
}
}
};
var smn=mgr.createMenu(it.subMenuId); smn.effect=null;
-// smn.addItem("ajaxload", "Loading menu, please wait...");
+ smn.addItem("ajaxload", mgr.loadingText);
NlsMenuUtil.$createMenuDom(smn.renderMenu());
NlsMenu.$showMenu(mn, it);
it.rt.loaded=1; //loading
req.send(null);
}
Property changes on: trunk/themes/default2007/platform/inc/nlsmenuext_xml.js
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.2
\ No newline at end of property
+1.3
\ No newline at end of property
Event Timeline
Log In to Comment