menu132_com.js
Upload User: voiper
Upload Date: 2022-05-13
Package Size: 260k
Code Size: 22k
Category:

TreeView

Development Platform:

C#

  1. /******************************************************
  2. * (c) Ger Versluis 2000 version 13.21               *
  3. * You may use this script on non commercial sites.  *
  4. * www.burmees.nl/menu                       *
  5. *                                                     *
  6. *   Used with permission. 13.21 Mods by Chris Maunder *
  7. *******************************************************/
  8. function HVMenu(config)
  9. {
  10. var cfg = config;
  11. var thisobj = this;
  12. if(document.getElementById){
  13. var AgntUsr=navigator.userAgent.toLowerCase(),AppVer=navigator.appVersion.toLowerCase(),
  14. Opr=AgntUsr.indexOf("opera")!=-1,Opr7=Opr&&parseInt(AgntUsr.substring(AgntUsr.indexOf("opera")+6))>6?true:false;
  15. if((!Opr||Opr7)){
  16. if(AppVer.indexOf("msie 7")!=-1)cfg.OverFormElements=0;
  17. var NavYes=((AgntUsr.indexOf("mozilla")!=-1&&AgntUsr.indexOf("compatible")==-1)||Opr7)?true:false,ExpYes=(AgntUsr.indexOf("msie")!=-1&&!Opr7)? true:false;
  18. if(cfg.MenuUsesFrames&&!parent.frames[0])cfg.MenuUsesFrames=0;
  19. var Exp6Plus=((AppVer.indexOf("msie 6")!=-1||AppVer.indexOf("msie 7")!=-1)&&!Opr7)?true:false,MacExp5=(AppVer.indexOf("mac")!=-1&&AppVer.indexOf("msie 5")!=-1)?true:false,
  20. FLoc,ScLoc,DcLoc,SLdAgnWin,FWinH,FColW,SColW,DColW,SWinW,SWinH,FWinW,RLvl=0,FntFc=1,StaticPos=0,Ztop=100,FrstCreat=true,Ldd=false,
  21. Crtd=false,FCmplnt=false,SCmplnt=false,M_Clckd=false,IniFlg=false,ShwFlg=false,AcrssFrms=true,FrstCntnr=null,CurOvr=null,FHtml=null,ScHtml=null,
  22. CloseTmr=null,OpnTmr=null,RmbrNow=null,FStr="",M_Hide="hidden",M_Show="visible",P_X="px",M_StrtTp=cfg.StartTop,M_StrtLft=cfg.StartLeft,
  23. Par=cfg.MenuUsesFrames?parent:window,Doc=Par.document,Bod=Doc.body,Trigger=NavYes?Par:Bod,
  24. Nav_Op=NavYes&&AgntUsr.indexOf("gecko/")!=-1&&AgntUsr.indexOf("mac")==-1&&parseInt(AgntUsr.substring(AgntUsr.indexOf("gecko/")+6,AgntUsr.indexOf("gecko/")+12))>=200303?true:false,
  25. InitLdd,MstSz=0;this.LdTmr=setInterval(function(){thisobj.ChckInitLd()},100);}}
  26. this.ChckInitLd = function(){
  27. InitLdd=ExpYes?
  28. cfg.MenuUsesFrames?Par.frames[cfg.FirstLineFrame].document.readyState=="complete"&&Par.frames[cfg.SecLineFrame].document.readyState=="complete"?
  29. 1:0:Par.document.readyState=="complete"?
  30. 1:0:cfg.MenuUsesFrames?Par.frames[cfg.FirstLineFrame].document.body&&Par.frames[cfg.SecLineFrame].document.body?1:0:Par.document.body?1:0;
  31. if(InitLdd) thisobj.Go();}
  32. this.CnclSlct = function(){return false}
  33. this.RePos = function(){
  34. FWinW=ExpYes?FCmplnt?FHtml.clientWidth:FLoc.document.body.clientWidth:FLoc.innerWidth;
  35. FWinH=ExpYes?FCmplnt?FHtml.clientHeight:FLoc.document.body.clientHeight:FLoc.innerHeight;
  36. SWinW=ExpYes?SCmplnt?ScHtml.clientWidth:ScLoc.document.body.clientWidth:ScLoc.innerWidth;
  37. SWinH=ExpYes?SCmplnt?ScHtml.clientHeight:ScLoc.document.body.clientHeight:ScLoc.innerHeight;
  38. if(MstSz)thisobj.SizeMenu(FrstCntnr);
  39. StaticPos=-1;
  40. thisobj.ClcRl();
  41. if(cfg.TargetLoc){thisobj.ClcTrgt();}
  42. thisobj.ClcLft();
  43. thisobj.ClcTp();
  44. thisobj.PosMenu(FrstCntnr,cfg.StartTop,cfg.StartLeft);
  45. if(cfg.RememberStatus)this.StMnu()}
  46. this.UnLdd = function(){
  47. Ldd=Crtd=false;
  48. SetMenu="0";
  49. var M=FrstCntnr?FrstCntnr.FrstMbr:null;
  50. if(ExpYes){while(M!=null){if(M.CCn){this.MakeNull(M.CCn);M.CCn=null}M=M.PrvMbr}}
  51. /*this.LdTmr=setInterval(function(){thisobj.ChckLdd()},100)*/}
  52. this.UnLddTotal = function(){if(ExpYes){
  53. thisobj.MakeNull(FrstCntnr);
  54. FrstCntnr=RmbrNow=FLoc=ScLoc=DcLoc=SLdAgnWin=CurOvr=CloseTmr=Doc=Bod=Trigger=null}}
  55. this.MakeNull = function(P){
  56. var M=P.FrstMbr,Mi;
  57. while(M!=null){Mi=M;if(M.CCn){this.MakeNull(M.CCn);M.CCn.mif=null;M.CCn=null}M=M.PrvMbr;Mi.PrvMbr=null;Mi=null}
  58. P.FrstMbr=null}
  59. this.ChckLdd = function(){if(!ExpYes){
  60. if(ScLoc.document.body)this.Go();}
  61. else if(ScLoc.document.readyState=="complete")this.Go();}
  62. this.Go = function(){
  63. if(this.LdTmr)clearInterval(this.LdTmr);this.LdTmr=null;
  64. if(!Ldd){ Crtd=false;Ldd=true;
  65. cfg.BeforeStart();
  66. if(cfg.ScaleMenu){
  67. if(document.defaultView&&document.defaultView.getComputedStyle)FntFc=parseInt(document.defaultView.getComputedStyle(document.body,'').getPropertyValue("font-size"))/16;
  68. else if(ExpYes&&document.body.currentStyle)FntFc=parseInt(document.body.currentStyle.fontSize)/12}
  69. status="Building menu";
  70. FLoc=cfg.MenuUsesFrames?parent.frames[cfg.FirstLineFrame]:window;
  71. ScLoc=cfg.MenuUsesFrames?parent.frames[cfg.SecLineFrame]:window;
  72. DcLoc=cfg.MenuUsesFrames?parent.frames[cfg.DocTargetFrame]:window;
  73. if(cfg.MenuUsesFrames){if(!FLoc)FLoc=window;if(!ScLoc)ScLoc=window;if(!DcLoc)DcLoc=window}
  74. if(FLoc==ScLoc)AcrssFrms=false;
  75. if(AcrssFrms)cfg.FirstLineHorizontal=cfg.MenuFramesVertical?0:cfg.FirstLineHorizontal?cfg.FirstLineHorizontal:1;
  76. if(Exp6Plus||Opr7){
  77. FHtml=FLoc.document.getElementsByTagName("HTML")[0];ScHtml=ScLoc.document.getElementsByTagName("HTML")[0];
  78. FCmplnt=FLoc.document.compatMode.indexOf("CSS")==-1?false:true;SCmplnt=ScLoc.document.compatMode.indexOf("CSS")==-1?false:true}
  79. FWinW=ExpYes?FCmplnt?FHtml.clientWidth:FLoc.document.body.clientWidth:FLoc.innerWidth;
  80. FWinH=ExpYes?FCmplnt?FHtml.clientHeight:FLoc.document.body.clientHeight:FLoc.innerHeight;
  81. SWinW=ExpYes?SCmplnt?ScHtml.clientWidth:ScLoc.document.body.clientWidth:ScLoc.innerWidth;
  82. SWinH=ExpYes?SCmplnt?ScHtml.clientHeight:ScLoc.document.body.clientHeight:ScLoc.innerHeight;
  83. FColW=FLoc.document.body;SColW=ScLoc.document.body;DColW=ScLoc.document.body;
  84. if(cfg.TakeOverBgColor)FColW.style.backgroundColor=AcrssFrms?SColW.bgColor:DColW.bgColor;
  85. if(FrstCreat||FLoc==ScLoc)FrstCntnr=this.CreateMenuStructure("cfg.Menu",cfg.NoOffFirstLineMenus,null);
  86. else this.CreateMenuStructureAgain("cfg.Menu",cfg.NoOffFirstLineMenus);
  87. this.SizeMenu(FrstCntnr);
  88. thisobj.ClcRl();
  89. if(cfg.TargetLoc){thisobj.ClcTrgt();}thisobj.ClcLft();thisobj.ClcTp();
  90. this.PosMenu(FrstCntnr,cfg.StartTop,cfg.StartLeft);
  91. Crtd=true;
  92. SLdAgnWin=ExpYes?ScLoc.document.body:ScLoc;
  93. //SLdAgnWin.onunload=thisobj.UnLdd;
  94. //Trigger.onunload=thisobj.UnLddTotal;
  95. //Trigger.onresize=thisobj.RePos;
  96. if (ExpYes) {
  97. //try { 
  98. SLdAgnWin.attachEvent('onunload', thisobj.UnLdd); 
  99. //Trigger.attachEvent('onunload', thisobj.UnLddTotal); 
  100. //Trigger.attachEvent('onresize', thisobj.RePos); 
  101. window.attachEvent('onresize', thisobj.RePos); 
  102. window.attachEvent('onunload', thisobj.UnLddTotal); 
  103. //} catch(e) {}
  104. } else {
  105. SLdAgnWin.addEventListener('unload', thisobj.UnLdd, true);
  106. Trigger.addEventListener('unload', thisobj.UnLddTotal, true);
  107. Trigger.addEventListener('resize', thisobj.RePos, true);
  108. }
  109. cfg.AfterBuild();
  110. if(cfg.RememberStatus)thisobj.StMnu();
  111. FrstCreat=false;
  112. if(cfg.MenuVerticalCentered=="static"&&!AcrssFrms)setInterval(function(){thisobj.KeepPos()},50);
  113. if(!ExpYes){FWinW=-1;thisobj.RePos()}
  114. IniFlg=true;thisobj.Initiate();
  115. status="Menu ready for use"}}
  116. this.KeepPos = function(){
  117. var TS=ExpYes?SCmplnt?ScHtml.scrollTop:ScLoc.document.body.scrollTop:ScLoc.pageYOffset;
  118. if(TS!=StaticPos){
  119. StaticPos+=(TS-StaticPos)*.2;
  120. if(Math.abs(StaticPos-TS)<=1)StaticPos=TS;
  121. FrstCntnr.OrgTop=cfg.StartTop+StaticPos;
  122. FrstCntnr.style.top=FrstCntnr.mif.style.top=FrstCntnr.OrgTop+P_X}}
  123. this.ClcRl = function() {
  124. cfg.StartTop=M_StrtTp<1&&M_StrtTp>0?M_StrtTp*FWinH:M_StrtTp;cfg.StartLeft=M_StrtLft<1&&M_StrtLft>0?M_StrtLft*FWinW:M_StrtLft;}
  125. this.ClcTrgt = function(){
  126. var TLoc=FLoc.document.getElementById(cfg.TargetLoc);
  127. while(TLoc){cfg.StartTop+=TLoc.offsetTop;cfg.StartLeft+=TLoc.offsetLeft;TLoc=TLoc.offsetParent}}
  128. this.ClcLft = function(){
  129. if(cfg.MenuCentered.indexOf("left")==-1){
  130. var Sz=FWinW-parseInt(FrstCntnr.style.width);
  131. cfg.StartLeft+=cfg.MenuCentered.indexOf("right")!=-1?Sz:Sz/2;if(cfg.StartLeft<0)cfg.StartLeft=0}}
  132. this.ClcTp = function(){
  133. if(cfg.MenuVerticalCentered!="top"&&cfg.MenuVerticalCentered!="static"){
  134. var Sz=FWinH-parseInt(FrstCntnr.style.height);
  135. cfg.StartTop+=cfg.MenuVerticalCentered=="bottom"?Sz:0;if(cfg.StartTop<0)cfg.StartTop=0}}
  136. this.SizeMenu = function(C){
  137. var Cmplnt=C.Lvl==1?FCmplnt:SCmplnt,M=C.FrstMbr,Mi,i,W=0,H=0,Wd,Ht,RI,BRW=C.Lvl==1?cfg.BorderWidthMain:2*cfg.BorderWidthSub,BTWn=C.Lvl==1?cfg.BorderBtwnMain:cfg.BorderBtwnSub;
  138. if(C.Lvl<=cfg.FirstLineHorizontal){
  139. while(M!=null){W+=Math.round((M.Arr[5]<1?(M.Arr[5]*(M.Lvl==1?FWinW:SWinW)):(M.Arr[5]*FntFc)));Mi=M;M=M.PrvMbr}
  140. W+=((C.NrItms-1)*BTWn+2*BRW)+cfg.LeftPaddng;
  141. Ht=H=Math.round((Mi.Arr[4]<1?(Mi.Arr[4]*(Mi.Lvl==1?FWinH:SWinH)):(Mi.Arr[4]*FntFc)));H+=(2*BRW)}
  142. else {
  143. while(M!=null){H+=Math.round((M.Arr[4]<1?(M.Arr[4]*(M.Lvl==1?FWinH:SWinH)):(M.Arr[4]*FntFc)));Mi=M;M=M.PrvMbr}
  144. H+=((C.NrItms-1)*BTWn+2*BRW)+cfg.TopPaddng;
  145. Wd=W=Math.round((Mi.Arr[5]<1?(Mi.Arr[5]*(Mi.Lvl==1?FWinW:SWinW)):(Mi.Arr[5]*FntFc)));W+=(2*BRW)}
  146. C.style.width=C.mif.style.width=W+P_X;C.style.height=C.mif.style.height=H+P_X;
  147. M=C.FrstMbr;
  148. while(M!=null){
  149. if(M.Arr[5]<1){W=C.Lvl<=cfg.FirstLineHorizontal?(M.Arr[5]*(M.Lvl==1?FWinW:SWinW)):Wd;MstSz=1}
  150. else W=(C.Lvl<=cfg.FirstLineHorizontal?M.Arr[5]:Wd)*FntFc;
  151. if(M.Arr[4]<1){H=C.Lvl<=cfg.FirstLineHorizontal?Ht:(M.Arr[4]*(M.Lvl==1?FWinH:SWinH));MstSz=1}
  152. else H=(C.Lvl<=cfg.FirstLineHorizontal?Ht:M.Arr[4])*FntFc;
  153. W=Math.round(W);H=Math.round(H);
  154. if (C.Lvl>1)W-=2;
  155. if(M.value.indexOf("<")==-1) {
  156. M.tpd=cfg.TopPaddng<0?(Math.round(H*.5-M.Arr[12]*FntFc)):cfg.TopPaddng;if(M.tpd<0||M.tpd>H)M.tpd=0;
  157. M.ltp=cfg.LeftPaddng;if(M.ltp<0||M.ltp>W)M.ltp=0;
  158. if((NavYes&&!Opr7)||MacExp5||Cmplnt){M.lx=M.ltp;M.tx=M.tpd}}
  159. else
  160. {
  161. M.tpd = 0;
  162. M.ltp = 0;
  163. M.lx = 0;
  164. M.tx = 0;
  165. }
  166. M.style.width=W-M.lx+P_X;M.style.height=H-M.tx+P_X;
  167. M.style.paddingLeft=M.ltp+P_X;M.style.paddingTop=M.tpd+P_X;
  168. if(M.ro){RI=(M.Lvl==1?FLoc:ScLoc).document.images[M.rid];RI.style.width=W+P_X;RI.style.height=H+P_X}
  169. if(M.CCn)this.SizeMenu(M.CCn);
  170. M=M.PrvMbr}}
  171. this.PosMenu = function(Ct,Tp,Lt){
  172. RLvl++;
  173. var a,Mb=Ct.FrstMbr,MWt=parseInt(Mb.style.width)+Mb.lx,
  174. MHt=parseInt(Mb.style.height)+Mb.tx,CWt=parseInt(Ct.style.width),CHt=parseInt(Ct.style.height),CCw,CCh,STp,SLt,Ti,Li,Hi,
  175. BRW=RLvl==1?cfg.BorderWidthMain:cfg.BorderWidthSub,BTWn=RLvl==1?cfg.BorderBtwnMain:cfg.BorderBtwnSub;
  176. if(RLvl==1&&AcrssFrms)!cfg.MenuFramesVertical?Tp=cfg.BottomUp?cfg.DistFrmFrameBrdr:FWinH-CHt-cfg.DistFrmFrameBrdr:Lt=cfg.RightToLeft?cfg.DistFrmFrameBrdr:FWinW-CWt-cfg.DistFrmFrameBrdr;
  177. if(RLvl==2&&AcrssFrms)!cfg.MenuFramesVertical?Tp=cfg.BottomUp?SWinH-CHt:0:Lt=cfg.RightToLeft?SWinW-CWt:0;
  178. if(RLvl==2){Tp+=cfg.VerCorrect;Lt+=cfg.HorCorrect}
  179. Ct.style.top=Ct.mif.style.top=RLvl==1?Tp+P_X:0;Ct.OrgTop=Tp;
  180. Ct.style.left=Ct.mif.style.left=RLvl==1?Lt+P_X:0;Ct.OrgLeft=Lt;
  181. if(RLvl<=cfg.FirstLineHorizontal){Hi=1;Li=CWt-MWt-2*BRW;Ti=0}
  182. else{Hi=Li=0;Ti=CHt-MHt-2*BRW}
  183. if (RLvl>1)Ti-=cfg.BorderWidthSub+1;
  184. if (RLvl>1)Li+=cfg.BorderWidthSub+1;
  185. while(Mb!=null){
  186. Mb.style.left=Li+BRW+P_X;Mb.style.top=Ti+BRW+P_X;
  187. if(Mb.CCn){
  188. if(cfg.RightToLeft)CCw=parseInt(Mb.CCn.style.width);
  189. if(cfg.BottomUp)CCh=parseInt(Mb.CCn.style.height);
  190. if(Hi){STp=cfg.BottomUp?Ti-CCh:Ti+MHt+2*BRW;SLt=cfg.RightToLeft?Li+MWt-CCw:Li}
  191. else{ SLt=cfg.RightToLeft?Li-CCw+cfg.ChildOverlap*MWt+BRW:Li+(1-cfg.ChildOverlap)*MWt+BRW;
  192. STp=RLvl==1&&AcrssFrms?cfg.BottomUp?Ti-CCh+MHt:Ti:cfg.BottomUp?Ti-CCh+(1-cfg.ChildVerticalOverlap)*MHt+2*BRW:Ti+cfg.ChildVerticalOverlap*MHt}
  193. this.PosMenu(Mb.CCn,STp,SLt)}
  194. a=RLvl<=cfg.FirstLineHorizontal?cfg.BottomUp?9:3:cfg.RightToLeft?6:0;
  195. if(Mb.ai){ Mb.ai.style.top=(RLvl<=cfg.FirstLineHorizontal?cfg.BottomUp?2:MHt-cfg.Arrws[a+2]-2:(MHt-cfg.Arrws[a+2])/2)+P_X;Mb.ai.style.left=(cfg.RightToLeft?2:MWt-cfg.Arrws[a+1]-2)+P_X}
  196. Mb=Mb.PrvMbr;
  197. if(Mb){MWt=parseInt(Mb.style.width)+Mb.lx;MHt=parseInt(Mb.style.height)+Mb.tx;Hi?Li-=MWt+BTWn:Ti-=MHt+BTWn}}
  198. RLvl--}
  199. this.StMnu = function(){
  200. if(Crtd){ var i,Pntr=FrstCntnr,Str=ScLoc.SetMenu?ScLoc.SetMenu:"0";
  201. while(Str.indexOf("_")!=-1&&cfg.RememberStatus==1){
  202. i=Pntr.NrItms-parseInt(Str.substring(0,Str.indexOf("_")));Str=Str.slice(Str.indexOf("_")+1);
  203. Pntr=Pntr.FrstMbr;for(i;i;i--)Pntr=Pntr.PrvMbr;Pntr.OM();Pntr=Pntr.CCn}
  204. i=Pntr.NrItms-parseInt(Str);Pntr=Pntr.FrstMbr;
  205. for(i;i;i--) Pntr=Pntr.PrvMbr;
  206. if(RmbrNow!=null){this.SetItem(RmbrNow,0);RmbrNow.Clckd=0}
  207. if(Pntr!=null){this.SetItem(Pntr,1);Pntr.Clckd=1;if(cfg.RememberStatus==1)Pntr.OM()}
  208. RmbrNow=Pntr;
  209. this.ClrAllChlds(FrstCntnr.FrstMbr);
  210. this.Rmbr(FrstCntnr)}}
  211. this.Initiate = function(){
  212. if(IniFlg&&Ldd){
  213. this.Init(FrstCntnr);IniFlg=false;if(cfg.RememberStatus)Rmbr(FrstCntnr);
  214. if(ShwFlg)cfg.AfterCloseAll();ShwFlg=M_Clckd=false}}
  215. this.Rmbr = function(CntPtr){
  216. var Mbr=CntPtr.FrstMbr,St;
  217. while(Mbr!=null){
  218. if(Mbr.DoRmbr){
  219. HiliteItem(Mbr);if(Mbr.CCn&&cfg.RememberStatus==1){St=Mbr.CCn.style;St.visibility=M_Show;Rmbr(Mbr.CCn)}break}
  220. else Mbr=Mbr.PrvMbr}}
  221. this.Init = function(CPt){
  222. var Mb=CPt.FrstMbr;
  223. RLvl++;
  224. CPt.style.visibility=CPt.mif.style.visibility=RLvl==1?M_Show:M_Hide;
  225. CPt.Shw=RLvl==1?1:0;
  226. while(Mb!=null){if(Mb.Hilite)this.LowItem(Mb);if(Mb.CCn)this.Init(Mb.CCn);Mb=Mb.PrvMbr}
  227. RLvl--}
  228. this.ClrAllChlds = function(Pt){
  229. var PSt,Pc;
  230. while(Pt){
  231. if(Pt.Hilite){
  232. Pc=Pt;if(Pc!=CurOvr)this.LowItem(Pt);
  233. if(Pt.CCn) {PSt=Pt.CCn.style;if(Pc!=CurOvr){PSt.visibility=Pt.CCn.mif.style.visibility=M_Hide;Pt.CCn.Shw=0}this.ClrAllChlds(Pt.CCn.FrstMbr)}
  234. break}
  235. Pt=Pt.PrvMbr}}
  236. this.SetItem = function(Pntr,x){while(Pntr!=null){Pntr.DoRmbr=x;Pntr=Pntr.Ctnr.Cllr}}
  237. this.GoTo = function(){
  238. if(cfg.UnfoldsOnClick&&!M_Clckd&&this.Arr[3]){M_Clckd=true;thisobj.OpenMenuII(this)}
  239. else if(this.Arr[1]){
  240. status="";
  241. if(this.Arr[0].indexOf("<input")==-1) {thisobj.LowItem(this);IniFlg=true;thisobj.Initiate();}
  242. if(this.Arr[1].indexOf("javascript:")!=-1) eval(this.Arr[1]);
  243. else if(DcLoc.location.href!=cfg.BaseHref+this.Arr[1])DcLoc.location.href=cfg.BaseHref+this.Arr[1]}}
  244. this.HiliteItem = function(P){
  245. if(P.rob)P.style.backgroundImage="url(""+P.rib2+"")";
  246. if(P.ro){var Lc=P.Lvl==1?FLoc:ScLoc;Lc.document.images[P.rid].src=P.ri2}
  247. else{if(P.Arr[7])P.className=P.Arr[7];}
  248. P.Hilite=1}
  249. this.LowItem = function(P){
  250. P.Hilite=0;
  251. if(P.rob)P.style.backgroundImage="url(""+P.rib1+"")";
  252. if(P.ro){var Lc=P.Lvl==1?FLoc:ScLoc;Lc.document.images[P.rid].src=P.ri1}
  253. else{if(P.Arr[6])P.className=P.Arr[6];}}
  254. this.OpenMenu = function(){
  255. if(Ldd&&Crtd){
  256. if(cfg.UnfoldsOnClick&&!M_Clckd){CurOvr=this;IniFlg=false;thisobj.ClrAllChlds(this.Ctnr.FrstMbr);thisobj.HiliteItem(this);status=this.Arr[8]}
  257. else thisobj.OpenMenuII(this)}}
  258. this.OpenMenuII = function(Ptr){
  259. if(OpnTmr)clearTimeout(OpnTmr);
  260. if(Opr7&&Ptr.Lvl==1&&cfg.MenuUsesFrames&&Ptr.CCn){
  261. var Childs=ScLoc.document.body.children,x=0;
  262. if(Childs!=null){for(i=0;i<Childs.length;i++){if(Childs.item(i)==Ptr.CCn){x=1;break}}}
  263. if(!x)Ptr.CCn=null}
  264. if(Ptr.Arr[3]&&!Ptr.CCn){
  265. RLvl=Ptr.Lvl;
  266. Ptr.CCn=thisobj.CreateMenuStructure(Ptr.MN+"_",Ptr.Arr[3],Ptr);
  267. this.SizeMenu(Ptr.CCn);
  268. var Ti,Li,Hi,CCw,CCh,STp,SLt,
  269. MWt=parseInt(Ptr.style.width)+Ptr.lx,MHt=parseInt(Ptr.style.height)+Ptr.tx,BRW=RLvl==1?cfg.BorderWidthMain:cfg.BorderWidthSub;
  270. if(cfg.RightToLeft)CCw=parseInt(Ptr.CCn.style.width);
  271. if(cfg.BottomUp)CCh=parseInt(Ptr.CCn.style.height);
  272. if(RLvl<=cfg.FirstLineHorizontal){Hi=1;Li=parseInt(Ptr.style.left)-BRW;Ti=0}
  273. else{Hi=Li=0;Ti=parseInt(Ptr.style.top)-BRW}
  274. if(Hi){STp=cfg.BottomUp?Ti-CCh:Ti+MHt+2*BRW;SLt=cfg.RightToLeft?Li+MWt-CCw:Li}
  275. else{ SLt=cfg.RightToLeft?Li-CCw+cfg.ChildOverlap*MWt+BRW:Li+(1-cfg.ChildOverlap)*MWt;
  276. STp=RLvl==1&&AcrssFrms?cfg.BottomUp?Ti-CCh+MHt:Ti:cfg.BottomUp?Ti-CCh+(1-cfg.ChildVerticalOverlap)*MHt+2*BRW:Ti+cfg.ChildVerticalOverlap*MHt+BRW}
  277. this.PosMenu(Ptr.CCn,STp,SLt);
  278. RLvl=0}
  279. CurOvr=Ptr;
  280. IniFlg=false;thisobj.ClrAllChlds(Ptr.Ctnr.FrstMbr);
  281. if(!Ptr.Hilite)thisobj.HiliteItem(Ptr);
  282. //if(Exp6Plus){FStr="";if(MenuShadow)FStr+=MenuShadow;if(FStr!="")Ptr.filter=FStr}
  283. if(Ptr.CCn!=null&&!Ptr.CCn.Shw)cfg.RememberStatus?thisobj.Unfld():OpnTmr=setTimeout(function(){thisobj.Unfld()},cfg.UnfoldDelay);
  284. status=Ptr.Arr[8]}
  285. this.Unfld = function(){
  286. var P=CurOvr,CSt=P.Ctnr.style,CCnt=P.CCn,CCSt=CCnt.style,CCmSt=CCnt.mif.style,
  287. THt=parseInt(P.style.height),TWt=parseInt(P.style.width),TLt=AcrssFrms&&P.Lvl==1&&!cfg.FirstLineHorizontal?0:parseInt(CSt.left),
  288. TTp=AcrssFrms&&P.Lvl==1&&cfg.FirstLineHorizontal?0:parseInt(CSt.top),CCW=parseInt(CCSt.width),CCH=parseInt(CCSt.height),
  289. TS=ExpYes?SCmplnt?ScHtml.scrollTop:ScLoc.document.body.scrollTop:ScLoc.pageYOffset,
  290. LS=ExpYes?SCmplnt?ScHtml.scrollLeft:ScLoc.document.body.scrollLeft:ScLoc.pageXOffset,
  291. SLt=AcrssFrms&&P.Lvl==1?CCnt.OrgLeft+TLt+LS:CCnt.OrgLeft+TLt, STp=AcrssFrms&&P.Lvl==1? CCnt.OrgTop+TTp+TS:CCnt.OrgTop+TTp;
  292. if(!ShwFlg){ShwFlg=true;cfg.BeforeFirstOpen()}
  293. if(cfg.MenuWrap){
  294. if(cfg.RightToLeft){if(SLt<LS)SLt=P.Lvl==1?LS:SLt+(CCW+(1-2*cfg.ChildOverlap)*TWt);if(SLt+CCW>SWinW+LS)SLt=SWinW+LS-CCW}
  295. else{if(SLt+CCW>SWinW+LS)SLt=P.Lvl==1?SWinW+LS-CCW:SLt-(CCW+(1-2*cfg.ChildOverlap)*TWt);if(SLt<LS)SLt=LS}
  296. if(cfg.BottomUp){if(STp<TS)STp=P.Lvl==1?TS:STp+(CCH-(1-2*cfg.ChildVerticalOverlap)*THt);if(STp+CCH>SWinH+TS)STp=SWinH+TS-CCH+0}
  297. else{if(STp+CCH>TS+SWinH)STp=P.Lvl==1?STp=TS+SWinH-CCH:STp-CCH+(1-2*cfg.ChildVerticalOverlap)*THt;if(STp<TS)STp=TS}}
  298. CCSt.top=CCmSt.top=STp+P_X;CCSt.left=CCmSt.left=SLt+P_X;
  299. if(Exp6Plus&&cfg.MenuSlide){CCnt.filters[0].Apply();CCnt.filters[0].play()}
  300. CCSt.visibility=CCmSt.visibility=M_Show}
  301. this.CloseMenu = function()
  302. {
  303. if(Ldd&&Crtd){status="";
  304. if(this==CurOvr) {
  305. if(OpnTmr)clearTimeout(OpnTmr);
  306. if(CloseTmr)clearTimeout(CloseTmr);
  307. IniFlg=true;
  308. CloseTmr=setTimeout(function(){thisobj.Initiate(CurOvr)},cfg.DissapearDelay)
  309. }}}
  310. this.CntnrSetUp = function(NoOff,WMu,Mc){
  311. var x=eval(WMu+"[8]")!=""?eval(WMu+"[8]"):cfg.ContainerClass,TS=this.style;
  312. this.Lvl=RLvl;this.FrstMbr=null;this.NrItms=NoOff;this.Cllr=Mc;this.Shw=0;this.OrgLeft=this.OrgTop=0;
  313. if(x&&RLvl>1)this.className=x;
  314. TS.zIndex=RLvl+Ztop;if(ExpYes&&!MacExp5)this.mif.style.zIndex=TS.zIndex-1;
  315. if(Nav_Op&&!Opr7&&cfg.MenuOpacity)TS.MozOpacity=parseInt(cfg.MenuOpacity.substring(cfg.MenuOpacity.indexOf("=")+1,cfg.MenuOpacity.indexOf(")")))/105;
  316. if(Exp6Plus)
  317. {
  318. if (RLvl>1) {
  319. FStr="";
  320. if(cfg.MenuSlide)FStr=cfg.MenuSlide;
  321. //if(DropMenuShadow)FStr+=DropMenuShadow;
  322. if(cfg.MenuOpacity)FStr+=cfg.MenuOpacity;
  323. if(FStr!="")TS.filter=FStr
  324. //TS.filter="";
  325. }
  326. }
  327. if(ExpYes&&!MacExp5&&cfg.OverFormElements)this.mif.style.filter="Alpha(Opacity=0)"}
  328. this.MbrSetUp = function(MbC,PrMmbr,WMu){
  329. var Lctn=RLvl==1?FLoc:ScLoc,t,a,ta2=this.Arr[2],Tfld=this.Arr[0];
  330. this.PrvMbr=PrMmbr;this.Lvl=RLvl;this.Ctnr=MbC;this.CCn=this.ai=null;this.Hilite=this.DoRmbr=this.Clckd=this.ro=this.rob=this.lx=this.tx=this.ltp=this.tpd=0;
  331. this.OM=this.OpenMenu;this.MN=WMu;this.style.overflow="hidden";
  332. this.style.cursor=(this.Arr[1]||(RLvl==1&&cfg.UnfoldsOnClick))?ExpYes?"hand":"pointer":"default";
  333. if(Tfld.indexOf("rollover")!=-1){
  334. this.ro=1;this.ri1=Tfld.substring(Tfld.indexOf("?")+1,Tfld.lastIndexOf("?"));this.ri2=Tfld.substring(Tfld.lastIndexOf("?")+1,Tfld.length);this.rid=WMu+"i";
  335. Tfld="<img src=""+this.ri1+"" name=""+this.rid+"">"}
  336. this.value=Tfld;
  337. if(!this.Arr[6])this.Arr[6]=RLvl==1?cfg.MainClass:cfg.SubClass;
  338. if(!this.Arr[7])this.Arr[7]=RLvl==1?cfg.MainHoverClass:cfg.SubHoverClass;
  339. this.className=this.Arr[6];
  340. if(!this.Arr[8])this.Arr[8]=this.Arr[1];
  341. if(ta2){ if(ta2.indexOf("rollover")==-1)this.style.backgroundImage="url(""+ta2+"")";
  342. else{ this.rob=1;this.rib1=ta2.substring(ta2.indexOf("?")+1,ta2.lastIndexOf("?"));this.rib2=ta2.substring(ta2.lastIndexOf("?")+1,ta2.length);
  343. this.style.backgroundImage="url(""+this.rib1+"")";
  344. this.style.backgroundRepeat="no-repeat";
  345. this.style.backgroundPosition=cfg.BgImgLeftOffset+"px"}}
  346. if(Tfld.indexOf("<")==-1){t=Lctn.document.createTextNode(Tfld);this.appendChild(t)}
  347. else this.innerHTML=Tfld;
  348. if(this.Arr[3]){
  349. a=RLvl<=cfg.FirstLineHorizontal?cfg.BottomUp?9:3:cfg.RightToLeft?6:0;
  350. if(cfg.Arrws[a]){
  351. t=Lctn.document.createElement("img");this.appendChild(t);
  352. t.style.position="absolute";t.src=cfg.Arrws[a];t.style.width=cfg.Arrws[a+1]*FntFc+P_X;t.style.height=cfg.Arrws[a+2]*FntFc+P_X;this.ai=t}}
  353. if(ExpYes){this.onselectstart=thisobj.CnclSlct;this.onmouseover=thisobj.OpenMenu;this.onmouseout=thisobj.CloseMenu;this.onclick=thisobj.GoTo}
  354. else{this.addEventListener("mouseover",thisobj.OpenMenu,false); this.addEventListener("mouseout",thisobj.CloseMenu,false);
  355. this.addEventListener("click",thisobj.GoTo,false)}
  356. }
  357. this.CreateMenuStructure = function(MNm,No,Mcllr){
  358. RLvl++;
  359. var i,Mbr,PMb=null,WMnu=MNm+"1",MWd=eval(WMnu+"[5]")*FntFc,MHt=eval(WMnu+"[4]")*FntFc,
  360. Lctn=RLvl==1?FLoc:ScLoc,MbC=Lctn.document.createElement("div"),MIF=!ExpYes||MacExp5||!cfg.OverFormElements?MbC:Lctn.document.createElement("iframe");
  361. Lctn.document.body.appendChild(MbC);
  362. //if (cfg.TargetLoc)Lctn.document.getElementById(cfg.TargetLoc).appendChild(MbC);else Lctn.document.body.appendChild(MbC);
  363. if(ExpYes&&!MacExp5&&cfg.OverFormElements){MIF.src="/script/Menu/blank.html";Lctn.document.body.appendChild(MIF)}
  364. MbC.style.position=MIF.style.position="absolute";
  365. MbC.style.visibility=MIF.style.visibility=M_Hide;
  366. MbC.mif=MIF;
  367. MbC.SetUp=this.CntnrSetUp;MbC.SetUp(No,MNm+"1",Mcllr);
  368. for(i=1;i<No+1;i++){
  369. WMnu=MNm+eval(i);
  370. Mbr=Lctn.document.createElement("div");Mbr.style.position="absolute";Mbr.style.visibility="inherit";MbC.appendChild(Mbr);
  371. Mbr.Arr=eval(WMnu);if(!Mbr.Arr[4])Mbr.Arr[4]=MHt;if(!Mbr.Arr[5])Mbr.Arr[5]=MWd;
  372. Mbr.SetUp=this.MbrSetUp;Mbr.SetUp(MbC,PMb,WMnu, (MNm=="cfg.Menu"));
  373. if(Mbr.Arr[3]&&!cfg.BuildOnDemand){Mbr.CCn=this.CreateMenuStructure(WMnu+"_",Mbr.Arr[3],Mbr)}
  374. PMb=Mbr}
  375. MbC.FrstMbr=Mbr;
  376. RLvl--;return(MbC)}
  377. this.CreateMenuStructureAgain = function(MNm,No){
  378. var Mbr=FrstCntnr.FrstMbr,i,WMnu;
  379. if(!cfg.BuildOnDemand) {RLvl++;for(i=No;i>0;i--){WMnu=MNm+eval(i);if(Mbr.Arr[3])Mbr.CCn=this.CreateMenuStructure(WMnu+"_",Mbr.Arr[3],Mbr);Mbr=Mbr.PrvMbr}RLvl--}
  380. else{while(Mbr){Mbr.CCn=null;Mbr=Mbr.PrvMbr}}}
  381. }