var _____WB$wombat$assign$function_____ = function(name) {return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name)) || self[name]; }; if (!self.__WB_pmw) { self.__WB_pmw = function(obj) { this.__WB_source = obj; return this; } } { let window = _____WB$wombat$assign$function_____("window"); let self = _____WB$wombat$assign$function_____("self"); let document = _____WB$wombat$assign$function_____("document"); let location = _____WB$wombat$assign$function_____("location"); let top = _____WB$wombat$assign$function_____("top"); let parent = _____WB$wombat$assign$function_____("parent"); let frames = _____WB$wombat$assign$function_____("frames"); let opener = _____WB$wombat$assign$function_____("opener"); // UDMv4.52 // /////////////////////////////////////////////////////////////////// // // // ULTIMATE DROP DOWN MENU Version 4.52 by Brothercake // // http://www.udm4.com/ // // // // This script may not be used or distributed without license // // // /////////////////////////////////////////////////////////////////// //########################################################## //*** YOU WILL ALMOST-CERTAINLY NEED TO UPDATE //*** SERVER-SIDE GENERATORS WHENEVER YOU CHANGE THIS //########################################################## //*** DO NOT REMOVE //start or //stop OR SIMILAR COMMENTS //udm tree global var var umTree=null; //ready state flag for popup alignment //and for shielding unsupported browsers from interactive scripting //because for them it's never true um.ready=0; //cpstart //parseInt shortcut function um.pi=function(n){n=parseInt(n,10);return (isNaN(n)?0:n);}; //'undefined' um.un='undefined'; //document um.m=document; //cpstop //getElementById um.gd=function(n){return um.m.getElementById(n);}; //make it displayed/non-displayed um.xd=function(n){n.style.display='block';}; um.xn=function(n){n.style.display='none';}; //make it visible/invisible um.xv=function(n){n.style.visibility='visible';}; um.xh=function(n){n.style.visibility='hidden';}; //is this a navbar element um.ne=function(n){return n.parentNode.className=='udm';}; //cpstart //check for undefined new variables if(typeof um.reset==um.un){um.reset=['yes','yes','yes'];} if(typeof um.hstrip==um.un){um.hstrip=['none','yes'];} //CHANGED if(typeof um.reset[3]==um.un){um.reset[3]='no';} //process and copy all custom vars //both so that we can process them more efficiently //and so we'll have shortcut-names to reduce the code size //create an array of custom.js array names //so we can reference um.something == um['something'] == um[um.cx[i]] // 0-6 7-9 10-13 14-16 17-48 49-60 61-92 um.cx=['orientation','list','behaviors','navbar','items','menus','menuItems','menuClasses','itemClasses']; //compact array for custom vars um.ei=0;um.e=[]; //compact matrix for classes um.v=[];um.w=[]; //count ad-hoc classes um.vl=0; um.wl=0; //image objects array for caching um.ek=0;um.im=[]; //process vars method um.pcv=function(v) { //using regex literals here,because mac/ie5.0 //appears not to garbage collect the RegExp constructor properly //if it's a number variable if(v&&/^[+\-]?[0-9]+$/.test(v)) { //turn it into a number v=um.pi(v); //if this is open or close timer //and it's less than 1 set it to 1 //having a minimum value prevents a potential //shadow-displacement problem with popup alignment //and also saves a few snips of code in udm-dom.js //and also prevents negative numbers if((um.ei==10||um.ei==11)&&v<1){v=1;} } //if it's an image if(v&&/\.(gif|png|mng|jpg|jpeg|jpe|bmp)/i.test(v)) { //cache image objects in an array because image loading is asynchronous //so it might not have finished before this comes round again um.im[um.ek]=new Image; um.im[um.ek++].src=um.baseSRC+v; } return v; }; //cpstop //identify dom support//exclude HPR3.04 because its JS capabilities get in the way of good accessibility through graceful degrading um.d=(typeof um.m.getElementById!=um.un&&(typeof um.m.createElement!=um.un||typeof um.m.createElementNS!=um.un)&&typeof navigator.IBM_HPR==um.un); //get UA string - used with caution :) um.u=navigator.userAgent.toLowerCase(); //need to exclude O6,because it declares support for createElement() //but can't actually add the created element to the page //this var includes O5 for convenience's sake um.o5=/opera[\/ ][56]/.test(um.u); um.k=(navigator.vendor=='KDE'); //CHANGED: if(um.o5||um.k){um.d=0;} if(um.o5){um.d=0;} //browsers which support the basic navbar styling //CHANGED: um.b=(um.d||um.o5||um.k); um.b=(um.d||um.o5); //hide static menus for netscape 4 and other primitive CSS browsers //CHANGED: if(um.list[2]=='yes'&&!(um.d||um.b)) //{ // document.write(''); //} //identify specific browsers - these are used to exclude from a feature or add in a hack, //on the basis that everything is assumed to work right unless it's known not to //opera 7 or later um.o7=(um.d&&typeof window.opera!=um.un); //opera 7.5+ supports clip properly,so clip-based extensions can now be supported um.o75=0; //opera 7.3 supports