1vbasno2n=xppr('asno2_0.png');vbasno2o=xppr('asno2_1.png');vbusno2n=xppr('usno2_0.png');vbusno2o=xppr('usno2_1.png');vbcsno2n=xppr('csno2_0.png');vbcsno2o=xppr('csno2_1.png');vbdsno2n=xppr('dsno2_0.png');vbdsno2o=xppr('dsno2_1.png');vbbsno2n=xppr('bsno2_0.png');vbbsno2o=xppr('bsno2_1.png');vbssno2n=xppr('ssno2_0.png');vbssno2o=xppr('ssno2_1.png');vb3sno2n=xppr('3sno2_0.png');vb3sno2o=xppr('3sno2_1.png');vbrsno2n=xppr('rsno2_0.png');vbrsno2o=xppr('rsno2_1.png');vb6sno2n=xppr('6sno2_0.png');vb6sno2o=xppr('6sno2_1.png');vb2sno2n=xppr('2sno2_0.png');vb2sno2o=xppr('2sno2_1.png');vbtsno2n=xppr('tsno2_0.png');vbtsno2o=xppr('tsno2_1.png');vbpsno2n=xppr('psno2_0.png');vbpsno2o=xppr('psno2_1.png');vbosno2n=xppr('osno2_0.png');vbosno2o=xppr('osno2_1.png');vbwsno2n=xppr('wsno2_0.png');vbwsno2o=xppr('wsno2_1.png');vb4sno2n=xppr('4sno2_0.png');vb4sno2o=xppr('4sno2_1.png');vb5sno2n=xppr('5sno2_0.png');vb5sno2o=xppr('5sno2_1.png');vb7sno2n=xppr('7sno2_0.png');vb7sno2o=xppr('7sno2_1.png');vb8sno2n=xppr('8sno2_0.png');vb8sno2o=xppr('8sno2_1.png');vb9sno2n=xppr('9sno2_0.png');vb9sno2o=xppr('9sno2_1.png');vbnsno2n=xppr('nsno2_0.png');vbnsno2o=xppr('nsno2_1.png');var arrowChar='»';/* 2 *============================================================================== 3 * 4 * Copyright (c) 2007-2009, by Vista-buttons.com 5 * Version 2.1.2i 6 * http://vista-buttons.com 7 * 8 *============================================================================== 9 * 10 * todo: 11 * - item move into anchor 12 * - item over using css 13 * - item base on li structure 14 * 15 * variables: 16 * @btIdPref 17 * @pItem 18 * @ulIdPref 19 * @frameSubmenu 20 * 21 */ 22 23 24var btIdPref='vb'; 25 26function xppr(im) { 27 var i=new Image(); 28 i.src=vbImgPath+'bt'+im; 29 return i; 30}; 31 32function xpe(id) { 33 x=id.substring(0,id.length-1); 34 if(document[btIdPref+x])document[btIdPref+x].src=eval(btIdPref+id+'.src'); 35}; 36 37 38/* 39* Vista buttons engine functions 40*/ 41function vistaButtons(params){ 42 // init global vars 43 var xobtn = null; // curent element text identifier curent 44 var menuContId = 'xpMenuCont'; 45 var ulIdPref='vbUL_'; 46 47 48 //Detect browser 49 var isDOM=document.getElementById; //DOM1 browser (MSIE 5+, Netscape 6, Opera 5+) 50 var isOp=isO5=window.opera && isDOM; //Opera 5+ 51 var isOp7=isOp && document.readyState; //Opera 7+ 52 var isIE=document.all && document.all.item && !isOp; //Microsoft Internet Explorer 4+ 53 var isMz=isDOM && navigator.appName=="Netscape"; //Mozilla or Netscape 6.* 54 55 56 57 /* 58 * vistabuttons engine and global object 59 */ 60 61 /* create new menu and insert it to page */
62 document.write('<div id="' + menuContId + '" ></div>'); 63 var menuCont = document.getElementById(menuContId); 64 65 var ULs = document.getElementsByTagName('UL'); 66 for (var i=0, cnt=ULs.length; i<cnt; i++) 67 if (ULs[i].id 68 && (ULs[i].id.substring(0, ulIdPref.length)==ulIdPref) // if is xp UL 69 && !( 70 (ULs[i].parentNode) 71 && (ULs[i].parentNode.parentNode) 72 && (ULs[i].parentNode.parentNode.id.substring(0, ulIdPref.length)==ulIdPref) 73 ) 74 ) 75 { 76 // hide vista-buttons link 77 var A=document.getElementById(ULs[i].id+'a'); 78 if (A) A.style.display='none'; 79 80 createMenu(ULs[i], 0, 0, params, menuCont); 81 ULs[i].style.display = 'none'; 82 }; 83 84 85 86 /* 87 * create menu 88 * structure: <div - menu > 89 * <table> 90 * <tr - item> 91 * <td - for icon><img></td> 92 * <td - for label><a></a></td> 93 * <td - for arrow><img></td> 94 * </tr> 95 * ... 96 * </table> 97 * </div> 98 * @ulParent - main parent of menu UL 99 * @iParent - parent item 100 * @level - level 101 */ 102 function createMenu(ulParent, iParent, level, params, owner){ 103 104 // create menu obj 105 var oMenu = document.createElement((params.subFrame?'table':'div')); 106 owner.appendChild(oMenu); 107 if (oMenu.tagName == 'TABLE') oMenu.cellSpacing = 0; // set even if don't need in concert 108 109 110 // assign menu content and crate a frame if need 111 var oMenuCont; 112 if (params.subFrame) 113 for (var i=0; i<3; i++){ 114 var row = oMenu.insertRow(-1); 115 for (var j=0; j<3; j++){ 116 var cell = row.insertCell(-1); 117 if (i==1 && j==1) oMenuCont = cell 118 else cell.className = 'imgFrame'+i+j; 119 } 120 } 121 else 122 oMenuCont = (oMenu.tagName == 'DIV')? oMenu: oMenu.insertRow(-1).insertCell(-1); 123 124 oMenuCont.className = 'subContent'; 125 126 127 var oTable = document.createElement('table'); 128 oMenuCont.appendChild(oTable); 129 130 oMenu.id = ulParent.id + 'tbl'; 131 oMenu.className = ulParent.className; // inherite style from menu definition with ul 132 //oTable.style.visibility = 'hidden'; 133 oMenu.style.position = 'absolute'; // set here without fail 134 oMenu.xpItems = []; /* submenu items list */ 135 oMenu.iParent = iParent; 136 oMenu.level = level; 137 138 oMenu.style.zIndex = 9 + oMenu.level; 139 oTable.cellSpacing = 0; 140 141 // set menu events and metods 142 oMenu.onmouseover = function (){ 143 xpStopTimeOut(this); 144 }; 145 oMenu.onmouseout = function (){ 146 xpStartTimeOut(xpShownMenu) 147 }; 148 oMenu.xpClearMenuMark = function(){ 149 for (var j = 0; j < this.xpItems.length; j++){ 150 p = this.xpItems[j]; 151 if (p.tagName == 'TR') { 152 p.className = p.className.replace('over',''); 153 if (p.className.indexOf('popup')<0) p.clrOverImg(); 154 } 155 }; 156 }; 157 158 oMenu.smShown = 0; 159 160 /* create items - organizing circle for LI */ 161 for (var i=0, cntLI=ulParent.childNodes.length; i<cntLI; i++){ 162 var oLI = ulParent.childNodes[i]; 163 if (oLI.tagName != 'LI') continue; 164 165 166 /* 167 * create menu item 168 */ 169 170 // create item base 171 var oItem = oTable.insertRow(-1); 172 173 174 // parse LI content 175 // <img src="icon"> <a> Item Label </a> <img src="arrow"> <ul></ul> 176 var InnerAnchor = 0; 177 oItem.Img = null; 178 oItem.ImgOver = null; 179 var InnerUl = 0; 180 oItem.ImgArrow = null; 181 oItem.ImgArrowOver = null; 182 183 // parse LI content 184 for (var j=0; j < oLI.childNodes.length; j++) 185 if (oLI.childNodes[j].tagName == 'A') InnerAnchor = oLI.childNodes[j]; 186 else if (oLI.childNodes[j].tagName == 'IMG'){ 187 if (!InnerAnchor){ 188 if (!oItem.Img) oItem.Img = oLI.childNodes[j]; 189 else oItem.ImgOver = oLI.childNodes[j] 190 } 191 else { 192 if(!oItem.ImgArrow) oItem.ImgArrow = oLI.childNodes[j]; 193 else oItem.ImgArrowOver = oLI.childNodes[j] 194 } 195 } 196 else if (oLI.childNodes[j].tagName == 'UL') InnerUl = oLI.childNodes[j]; 197 else if (oLI.childNodes[j].tagName == 'DIV'){ 198 for (var k=0; k<oLI.childNodes[j].childNodes.length; k++) 199 if (oLI.childNodes[j].childNodes[k].tagName=='UL') InnerUl = oLI.childNodes[j].childNodes[k]; 200 } 201 202 203 if (InnerAnchor || InnerUl || oItem.ImgArrow){ // it is not a separator 204 205 var oItemCont = oItem; 206 oItem.className = oLI.className; 207 oItem.menu = oMenu; 208 oItem.setPopup = function(){ 209 this.className += ' popup'; 210 }; 211 oItem.clrPopup = function(){ 212 this.className = this.className.replace('popup',''); 213 if (this.className.indexOf('over')<0) this.clrOverImg(); 214 }; 215 oItem.clrOverImg = function(){ 216 if (this.Img) this.Img.style.display = 'inline'; 217 if (this.ImgOver) this.ImgOver.style.display = 'none'; 218 if (this.ImgArrow) this.ImgArrow.style.display = 'inline'; 219 if (this.ImgArrowOver) this.ImgArrowOver.style.display = 'none' 220 }; 221 222 // create item content 223 var oTDIMG = oItemCont.insertCell(-1); 224 var oTDLabel = oItemCont.insertCell(-1); 225 var oTDArrow = oItemCont.insertCell(-1); 226 227 oTDIMG.style.borderRightWidth = '0px'; 228 oTDLabel.style.borderRightWidth = '0px'; 229 oTDLabel.style.borderLeftWidth = '0px'; 230 oTDArrow.style.borderLeftWidth = '0px'; 231 oTDIMG.style.paddingRight = '4px'; 232 oTDLabel.style.paddingRight = '4px'; 233 oTDLabel.style.paddingLeft = '4px'; 234 oTDArrow.style.paddingLeft = '4px'; 235 236 if (oItem.Img) oTDIMG.appendChild(oItem.Img); 237 else oTDIMG.innerHTML = ' '; 238 if (oItem.ImgOver) { 239 oItem.ImgOver.style.display = 'none'; 240 oTDIMG.appendChild(oItem.ImgOver); 241 }; 242 243 // create anchor with link execution 244 if (InnerAnchor){ 245 var newText = document.createElement('SPAN'); 246 newText.innerHTML = InnerAnchor.innerHTML; 247 248 if (InnerAnchor.href.indexOf('.pdf')>=0 && document.all) 249 oTDLabel.appendChild(newText) 250 else{ 251 oTDLabel.appendChild(InnerAnchor); 252 253 // off standart click 254 InnerAnchor.onclick = function(){ 255 return false; 256 }; 257 }; 258 259 oItem.linkHref = InnerAnchor.href; 260 oItem.linkTarget = InnerAnchor.target; 261 262 /* add item to menu info */ 263 with(oMenu) xpItems[xpItems.length] = oItem; 264 265 // define my click handle event 266 oItem.onclick = function(){ 267 if (this.linkHref) 268 open(this.linkHref, (this.linkTarget? this.linkTarget :"_self")); 269 } 270 } 271 else oTDLabel.innerHTML = ' '; 272 273 // set item events 274 oItem.onmouseover = function (){ 275 // clear other mark 276 this.menu.xpClearMenuMark(); 277 this.className += ' over';// mark this item 278 if (this.ImgOver){ 279 this.Img.style.display = 'none'; 280 this.ImgOver.style.display = 'inline'; 281 }; 282 if (this.ImgArrowOver){ 283 this.ImgArrow.style.display = 'none'; 284 this.ImgArrowOver.style.display = 'inline'; 285 }; 286 287 if (this.smPopup) xpshowmenu(this.smPopup, 1, this); // show new menu 288 else xpStartTimeOut(this.menu.smShown); // hide bug 289 }; 290 oItem.onmouseout = function (){ 291 this.menu.xpClearMenuMark(); 292 }; 293 294 // define submenu 295 if (InnerUl){ 296 // set event for over 297 oTDArrow.className = 'arrow'; 298 if (oItem.ImgArrow){ 299 oTDArrow.appendChild(oItem.ImgArrow); 300 if (oItem.ImgArrowOver){ 301 oItem.ImgArrowOver.style.display = 'none'; 302 oTDArrow.appendChild(oItem.ImgArrowOver) 303 } 304 } 305 else {
306 if (typeof(arrowChar)!='undefined' && arrowChar){ 307 oTDArrow.appendChild(document.createElement('a')); 308 oTDArrow.lastChild.innerHTML = arrowChar; 309 } 310 else oTDArrow.innerHTML = ' '; 311 }; 312 313 oItem.smPopup = createMenu(InnerUl, oItem, level + 1, params, owner); 314 } 315 else oTDArrow.innerHTML = ' '; 316 } 317 else{ // add a separator 318 oItem.className = 'separator'; 319 var oTD = oItem.insertCell(-1); 320 oTD.colSpan = 3; 321 322 oTD.innerHTML = '<div></div>'; 323 } 324 325 } 326 327 return oMenu; 328 }; 329 330 331 332 function xpDef(){ 333 for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])=='undefined') return false;} 334 return true; 335 }; 336 337 338 function xpClientSize(){ 339 340 var x=0,y=0,w=0,h=0,doc=document,win=window; 341 342 var cond = (!doc.compatMode || doc.compatMode == 'CSS1Compat') /*&& !win.opera */&& doc.documentElement; 343 // height 344 if(cond && doc.documentElement.clientHeight) h=doc.documentElement.clientHeight; 345 else if(doc.body && doc.body.clientHeight) h=doc.body.clientHeight; 346 else if(xpDef(win.innerWidth,win.innerHeight,doc.width)) { 347 h=win.innerHeight; 348 if(doc.width>win.innerWidth) h-=16; 349 }; 350 //width 351 if(cond && doc.documentElement.clientWidth) w=doc.documentElement.clientWidth; 352 else if(doc.body && doc.body.clientWidth) w=doc.body.clientWidth; 353 else if(xDef(win.innerWidth,win.innerHeight,doc.height)) { 354 w=win.innerWidth; 355 if(doc.height>win.innerHeight) w-=16; 356 } 357 358 if(doc.documentElement && doc.documentElement.scrollLeft) x=doc.documentElement.scrollLeft; 359 else if(doc.body && xpDef(doc.body.scrollLeft)) x=doc.body.scrollLeft; 360 361 if(doc.documentElement && doc.documentElement.scrollTop) y=doc.documentElement.scrollTop; 362 else if(doc.body && xpDef(doc.body.scrollTop)) y=doc.body.scrollTop; 363 364 return {x:x,y:y,w:w,h:h}; 365 }; 366 367 368 369 function xpObjectSize(o){ 370 var w = (isOp&&!isOp7) ? o.style.pixelWidth : document.layers ? o.clip.width /* Netscape 4.*/ : o.offsetWidth; 371 var h = (isOp&&!isOp7) ? o.style.pixelHeight : document.layers ? o.clip.height/* Netscape 4.*/ : o.offsetHeight; 372 return {x:w, y:h}; 373 }; 374 375 376 377 /* 378 * calc absolute coordinates of specified object 379 */ 380 function xppos(obj){ 381 var l=0, t=0; 382 while (obj) // && obj.tagName!='BODY' 383 { 384 l += obj.offsetLeft; 385 t += obj.offsetTop; 386 387 // some browser not right set offsetParent 388 // if (obj.style && obj.style.position=='absolute') break;// this is a fix but not constant 389 390 obj = obj.offsetParent; 391 }; 392 393 // fix special for opera 394 if (document.body) with (document){ 395 if (body.leftMargin) l -= body.leftMargin; 396 if (body.topMargin) t -= body.topMargin 397 } 398 399 return {x: l, y: t}; 400 }; 401 402 403 404 /* show menu item 405 * ind - part of object identifier 406 * @isVertical - previous menu is vertical 407 * @iParent - object created events identifier - this is about a anchor or previous menu item 408 */ 409 var xpshow = window.xpshow = function(ind, isVertical, iParent){ 410 xpshowmenu(ulIdPref+ind+'tbl', isVertical, iParent); 411 } 412 413 function xpshowmenu(menu, isVertical, iParent) 414 { 415 menu = get(menu); 416 if (!menu) return; 417 418 // already showing? 419 if (menu.style.visibility == 'visible'){ 420 xpStopTimeOut(menu); 421 return; 422 }; 423 424 // hide previous menu in this level 425 if (iParent && iParent.menu) 426 xphide(iParent.menu.smShown); 427 if (!menu.level && (xpShownMenu != menu)) 428 xphide(xpShownMenu); 429 430 // it saves button main menu 431 if (!menu.level) xobtn = menu.id.replace(ulIdPref,'').replace('tbl',''); 432 433 // Parent - parent menu item 434 var parentObj = (iParent.tagName == 'A')? iParent.parentNode: iParent; 435 436 var pos = xppos(parentObj); // parent coordinate 437 if (iParent && iParent.menu){ 438 pos.x -= iParent.menu['scrollLeft'] || 0; 439 pos.y -= iParent.menu['scrollTop'] || 0; 440 }; 441 var size = xpObjectSize(parentObj); 442 443 menu.xpMenuX = 1; // menu open direction 444 menu.xpMenuDx = 1; // menu open offset 445 if (menu.level > 0){ 446 // inherit direction from previous level 447 menu.xpMenuX = menu.iParent.menu.xpMenuX; 448 menu.xpMenuDx = menu.iParent.menu.xpMenuDx; 449 }; 450 451 // initialize property 452 menu.style.overflow = 'visible'; 453 menu.style.height = 'auto'; 454 menu.style.width = 'auto'; 455
456 // fix bug position for some document structure 457 menu.style.left = '0px'; 458 menu.style.top = '0px'; 459 var parentAbs = xppos(menu); 460 461 // detect window size 462 var WinSize = xpClientSize(); 463 var menuSize = xpObjectSize(menu); 464 465 // calc and init Y coordinate 466 var CalcedPos = xpCalcMenuPos(WinSize.y, WinSize.h, pos.y, size.y, menuSize.y, menu.xpMenuDx, isVertical); 467 468 menu.xpMenuDx = CalcedPos.align; 469 470 // fix scrollbar bug for opera 471 if (isOp && !menu.OrigWidth) menu.OrigWidth = menu.clientWidth;//menu.clientWidth; 472 473 474 // size was changed - resize height, open scroll, correct width for scrollbar 475 if (CalcedPos.size < menuSize.y){ 476 //xpsm.style.overflowY = 'auto'; 477 menu.style.overflow = 'auto'; 478 //menu.style.overflow = 'visible'; 479 if (isIE) menu.style.overflowX = 'visible'; 480 if (isIE) menu.style.width = menu.offsetWidth + 17 + 'px'; 481 else if (isMz) menu.style.magrinRight = 20; 482 483 menu.style.height = CalcedPos.size + 'px'; 484 menu.scrollTop = 0; 485 menu.scrollLeft = 0; 486 487 // fix scrollbar bug for opera 488 if (isOp) menu.style.width = menu.OrigWidth + 'px'; 489 }; 490 491 menu.style.top = CalcedPos.xy - parentAbs.y + 'px'; 492 493 // calc and init X coorinate 494 menuSize = xpObjectSize(menu); 495 CalcedPos = xpCalcMenuPos(WinSize.x, WinSize.w, pos.x, size.x, menuSize.x, menu.xpMenuX, !isVertical); 496 menu.xpMenuX = CalcedPos.align; 497 if (CalcedPos.size < menuSize.x)// size was changed 498 if (menu.xpMenuX > 0) 499 CalcedPos.xy -= (menuSize.x - CalcedPos.size); // covered 500 menu.style.left = CalcedPos.xy - parentAbs.x + 'px'; 501 502 menu.style.visibility = 'visible'; 503 504 if (!menu.level) xpShownMenu = menu 505 else { 506 iParent.menu.smShown = menu; 507 iParent.setPopup(); 508 } 509 510 }; 511 512 513 514 515 /* 516 calc menu pos for one coordinate 517 use size of menu, parent object and screen, menu direction and parent menu orientation 518 screenSize - size of screen 519 parentXY, parentSize - position and size of parent menu 520 size - size of selected menu 521 align = +1(right, bottom), 0(center), -1(left, top) - direction of menu 522 oHoriz = 0(vertical), 1(horizontal) - orientation of parent menu 523 */ 524 function xpCalcMenuPos(screenXY, screenSize, parentXY, parentSize, size, align, oHoriz){ 525 var xy = parentXY; 526 var newSize = size; 527 var newAlign = align; 528 var space = 5; // space to document borders 529 530 if ((align == 0) && (!oHoriz)) align = 1; //center may be only for horizontal orientation 531 532 if (!oHoriz) {// VERTICAL 533 // |------<--------->)<---parent--->(<---------->---------| 534 // check the place for the future menu and correct orientation 535 if (((newAlign >= 0) && (parentXY + parentSize + size > screenSize + screenXY - space)) // don't go in screen from the algin 536 || ((newAlign < 0) && (parentXY - size < space))){ 537 // correct direction about most of place 538 if (parentXY - screenXY > screenSize + screenXY - (parentXY + parentSize)) newAlign = -1; else newAlign = 1; 539 }; 540 // set coordinate and size 541 if (newAlign >= 0){ 542 xy = parentXY + parentSize; 543 if (screenSize + screenXY - space - xy < newSize) newSize = screenSize + screenXY - space - xy; 544 } 545 else { 546 xy = parentXY - newSize; 547 if (xy - screenXY < space){ 548 xy = space + screenXY; 549 newSize = parentXY - space - screenXY; 550 } 551 } 552 } 553 else { 554 // --------------- <---parent---> ------------------- 555 // (<------------------------>--------| 556 // |-----<--------------------->) 557 // if menu not go in screen 558 if (newSize > screenSize - 2*space) { 559 xy = space + screenXY; 560 newSize = screenSize - 2*space; 561 } 562 else{ 563 // calc 564 xy = parentXY + parentSize/2 - newSize/2 + newAlign * (newSize/2 - parentSize/2); 565 566 // correct 567 if (xy < space + screenXY){ 568 newAlign = 1; 569 xy = space + screenXY; 570 } 571 if (xy + size > screenSize + screenXY - space){ 572 newAlign = -1; 573 xy -= xy + newSize - (screenSize + screenXY - space); 574 } 575 } 576 }; 577 578 return {xy: xy, size: newSize, align: newAlign}; 579 }; 580 581 582 function get(o){ 583 return (typeof o == 'string')? document.getElementById(o): o 584 } 585 586 587 /* 588 * hide submenu 589 * @menu 590 */ 591 function xphide(menu){ 592 menu = get(menu); 593 if (!menu || menu.style.visibility != 'visible') return; 594 595 // hide child 596 xphide(menu.smShown); 597 598 // off cursor selection 599 menu.xpClearMenuMark(); 600 601 // hide the menu 602 menu.style.visibility = 'hidden'; 603
604 // if all submenu close, then change button icon 605 if (menu.level == 0){ 606 xpe(xobtn + 'n');//??????????? 607 } 608 609 menu.smShown = 0; 610 if (menu.iParent) menu.iParent.clrPopup(); 611 612 // clear to hide timeout 613 if (menu.hideTimer){ 614 clearTimeout(menu.hideTimer); 615 menu.hideTimer = null; 616 } 617 }; 618 window.xphide = xphide; 619 620 621 622 // on mouse out from menu 623 window.xpsmout = function(sender){ 624 if (!sender) return; 625 // set time out 626 xpStartTimeOut(xpShownMenu) 627 }; 628 629 630 // on mouse over menu 631 window.xpsmover = function(menu) 632 { 633 xpStopTimeOut(menu); 634 }; 635 636 637 /* 638 * clear Time out for all parent and this menu 639 * run in submenu engine context 640 */ 641 function xpStopTimeOut(menu){ 642 for( var o = menu; o; o = o.iParent? o.iParent.menu: 0) 643 if (o.hideTimer) 644 o.hideTimer = clearTimeout(o.hideTimer); 645 }; 646 647 648 /* 649 * start hide timer for this menu and all its submenu 650 */ 651 function xpStartTimeOut(menu){ 652 if (menu) { 653 if (!menu.hideTimer) 654 menu.hideTimer = setTimeout( function (){ xphide(menu) } , 300); 655 xpStartTimeOut(menu.smShown) 656 } 657 } 658 659 660};// end of menu component 661 662var xpShownMenu = 0; // curent open menu tread 663 664new vistaButtons({ 665 subFrame: 0 666}); 667 668
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.