// ==UserScript== // @name theOne // @namespace clf/wp // @description clf+wp quick nav v4.0 // @include http://mycoffeelounge.net/* // @include http://www.mycoffeelounge.net/* // @include http://whirlpool.net.au/* // @include http://*.whirlpool.net.au/* // ==/UserScript== (function() { // if(document.body) { var gm_thisScript='clf/wp/theOne'; var gm_thisTitle='clf+wp quick nav v4.0'; if(document.getElementById(gm_thisScript)) return; //already running var gm_link=document.createElement('A'); gm_link.id=gm_thisScript; gm_link.rel='greasemonkey'; gm_link.title=gm_thisTitle; gm_link.style.display="none"; document.body.appendChild(gm_link); } // var EventManager= { _registry: null, Initialise: function() { if (this._registry == null) { this._registry = []; EventManager.Add(window, '_unload', this.CleanUp); } }, Add: function(obj, type, fn, useCapture) { this.Initialise(); var realType=(type=='_unload'?'unload':type); if (typeof obj == 'string') obj = document.getElementById(obj); if (obj == null || fn == null) return false; obj.addEventListener(realType, fn, useCapture); this._registry.push({obj:obj, type:type, fn:fn, useCapture:useCapture}); return true; }, CleanUp: function() { for (var i = 0; i < EventManager._registry.length; i++) { with(EventManager._registry[i]) { if(type=='unload') fn(); obj.removeEventListener(type,fn,useCapture); } } EventManager._registry = null; } }; var dodge=[ "data:image/png;base64,", "iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAYAAABHLFpgAAAABmJLR0QA/wD/AP+g", "vaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1QsRFgUFBOT53wAAADZJ", "REFUeNpj+P//fz0TAwMDAxMDA8M/JgYGhv+oxD+8XGwSRCghnUttdUR4lcaOpNhB", "/8iMNwAb6GTGZICmgQAAAABJRU5ErkJggg==" ].join(''); function addElement(rt, typ) { var obj=document.createElement(typ); return rt.appendChild(obj); } function createPopup(conf) { var name=conf.name; var wideWork=conf.dropDown.width*conf.other.sizePX; var navW=wideWork+3*(conf.other.sizePX); var ddW=wideWork+2*(conf.other.sizePX); var divW=wideWork+1*(conf.other.sizePX); var topPos=-(conf.other.sizePX*3); var leftPos=-(conf.other.sizePX+1); var leftW=wideWork; var rightPos=wideWork+conf.flyOut.offset; var retVal={root:null, sect:null, zIndex:999, name:name}; var root = document.createElement("div"); retVal.root=root; root.id=name+"_nav"; var uList=addElement(root, "ul"); var lButton=addElement(uList, "li"); lButton.id=name+"_button"; var dParent=addElement(lButton, "div"); dParent.id=name+"_parent"; var trigLink=addElement(dParent, "a"); trigLink.href=""; trigLink.appendChild(conf.icon.el); var dDrop=addElement(dParent, "div"); dDrop.id=name+"_dropdown"; var uDrop=addElement(dDrop, "ul"); retVal.sect=uDrop; var style=[ "#@_nav { position: fixed; left:",conf.icon.left,"; top: ",conf.icon.top,"; ", "font-size:",conf.other.sizePX,"px;", "font-family:Arial,sans-serif; background: transparent;", "width: ",conf.icon.width,"; height:",conf.icon.height,";}", "#@_nav ul, #@_nav li { padding: 0; margin: 0; list-style: none; }", "#@_nav:hover { width:",navW,"px; }", //"#@_button { width: 16px; }", "#@_dropdown { width: ",ddW,"px; position: absolute; left: -3000px; top: 0;", "background: transparent; }", "#@_dropdown div { width: ",divW,"px; position: absolute; left: -3000px; top: 0;", "background: transparent; }", "#@_dropdown ul { width: ",leftW,"px; margin: ",conf.other.sizePX,"px;", "border: 1px solid #444;border-width: 0 0 1px; }", "#@_dropdown div ul { margin: 30px 30px 30px 0; }", "#@_nav a,", "#@_nav span { display: block; text-decoration: none;}", "#@_dropdown a,", "#@_dropdown span { padding: 2px; }", "#@_dropdown span { cursor:default; }", "#@_nav ul ul li { border: 1px solid #444; border-width:1px 1px 0;}", "#@_dropdown li { position: relative; }", "#@_button:hover #@_dropdown { left:",leftPos,"px; top:",topPos,"px;}", "#@_dropdown li:hover div { top:-31px; left:",rightPos,"px;}", "#@_nav #@_mini-zone { padding: 0; width: 15px; height: 15px; font-size: 1px; left: -3000px;", "bottom: -15px; top: auto; background: transparent; }", "#@_nav #@_dropdown li:hover #@_mini-zone { left: auto; right: -4px; top: auto; }", "#@_parent {z-index: 1000;}", // //"#@_parent a { color:#f0f; }", "#@_dropdown li { background: ",conf.dropDown.bg,"; }", "#@_dropdown li:hover { background: ",conf.dropDown.hBg,";color:",conf.dropDown.hFg,"; }", "#@_dropdown ul ul li { background: ",conf.flyOut.bg,"; }", "#@_dropdown ul ul li:hover { background: ",conf.flyOut.hBg,";color:",conf.flyOut.hFg,"; }", "#@_dropdown li a,", "#@_dropdown li span { color: ",conf.dropDown.fg,"; }", "#@_dropdown ul ul li a,", "#@_dropdown ul ul li a { color: ",conf.flyOut.fg,"; }", "#@_dropdown ul { border-color:",conf.dropDown.border,";}", "#@_nav ul ul li { border-color:",conf.flyOut.border,"; }", // "TD.mainforum>DIV+A+TABLE+TABLE+TABLE {position:fixed;top:0;}", ".@_sep { height:4px; background-color:",conf.dropDown.border,"; }", ".@_section:before { content: '- '; }", ".@_hidden { visibility:hidden; }" ].join(""); var realStyle=style.replace(/@_/g, name+"_"); var head = document.getElementsByTagName('head')[0]; if (!head) return null; var el = document.createElement('style'); el.type = 'text/css'; el.innerHTML = realStyle; head.appendChild(el); return retVal; } function addSection(sect, obj, className) { for(var s in sect) { // build up the menu var x=sect[s]; var lHead=addElement(obj.sect, "li"); lHead.className=obj.name+"_drop "+obj.name+"_left"; if(className=='hidden') lHead.className+=' '+obj.name+"_"+className; lHead.style.zIndex=obj.zIndex--; var aHead=addElement(lHead, "span"); aHead.className=obj.name+"_"+className; if(x.click && typeof x.click == "function") { aHead.addEventListener("click", x.click, false); aHead.style.cursor="pointer"; } //aHead.href=""; aHead.appendChild(document.createTextNode(s)); if(s.length) { var dZone=addElement(lHead, "div"); dZone.id=obj.name+"_mini-zone"; var dCont=addElement(lHead, "div"); var uCont=addElement(dCont, "ul"); for(var f in x) { var y=x[f]; if(typeof y != "function") { var lItem=addElement(uCont, "li"); lItem.className=obj.name+"_drop "+obj.name+"_right"; var aItem=addElement(lItem, "a"); aItem.href=y; aItem.appendChild(document.createTextNode(f)); } } } } } //------------------------------------------ var menuConfig={ name: "theOne", other: { sizePX:11 }, // text size in pixels icon: { el:null, width:"16px", height:"16px", left:"146px", top:"24px" }, dropDown: { fg:"#fff", bg:"#004", hFg:"#fff", hBg:"orange", border:"#000000", width:12 }, // multiplied by sizePX to get width of menu column flyOut: { fg:"#fff", bg:"#448", hFg:"#fff", hBg:"orange", border:"#000000", offset:-2 } // left offset of flyout menu ... 0 or negative works better }; //------------------------------------------ var gfx=[ "data:image/png;base64,", "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAAL", "EwEAmpwYAAAAB3RJTUUH1QsOACsIYYMURQAABdRJREFUeJyVmE1MU0sUx39ze0uB", "4pOifUQfBfl4QYG8cI2oIWpQowsXanRDwoqFRjfGGOMGXKkbY4xx41fcmJjgQoMu", "XEiiJBqjaMTEqCkgyofNQ4qVB20tbZm3mCmltEU8yYSZO9P5n/mfM2fOQdTXSyEE", "SAmAAAzADuQDfwBuYDWwBqgCKgEPsFKvAQjZ7fjb2hjZt49BYAD4AnwF/MAkEAKi", "z58z+/AhsqcHxsdBSClFZyfk5SEiEWxVVThqalgWj+O22VgNlOnmAf4CigHX7dsU", "XLpETiwGwAwwDQSAsdOn8R04wDAwBAxrRca9XqZu3iTS1UUckHfuaAX0yW1AHuAC", "VgEV+sQVGtwNFAJOIFezZAM4dIj469dEgZ9AEPhRXc14ezujdXV80ox87uzEd/ky", "gUCAn3Y7sc5OpJBSGvPAVwClQDWwDvgbKNHfCwAHYOr1CcUBJCB37CAeCBADIpqR", "iRMnGG1spD8c5mNXl+y7dUsMARNAuLeXuKlt7gBcUspSIUQt8I9WogQo0raeD7xQ", "BCAeP8Z4+xaztZUczVL+xYs4BwZwrllD3siIsGtlZ3X7aWoqlwGrhBDVGrxWM+HS", "G5lZgNOkvh7R0YGtuZkEs/YHD8iprcWcngYgivKZmWBQMZCv7Vuhaa/W4EUaPNup", "s0p1NRw9irhyBRNlWvH+PQAxIIwyT9DpZEZIKcuBtUCDbmuBP7ViNkBICevXZwZ7", "9Ajc7sxzljXXTQCPAV6gB3jV3Y3X0KcvJentRVprW1cXwrKygwPs3q2AIpH0ud7e", "ua4NxWYRyq8qgbKxMVaaMHfXPShvzwNslvV7tG/eDE+eQGFhxmmB8qN8VAArAcry", "8/nXQEW4UhQTBYDdsjB+Bzwh27enf2tvT1PCqbE8JSWUG6hgsxoVZByLge/apWhN", "tGfP0tds3Jg6PngwZZi48oUas9JE2aMYcLa1Zb9u8+w5J06n+t7UBJOT6ls0mk19", "IJWFYiBioGzvAnIfPsTIpEAm8PnS3b34/AIFDJRDugCPiX7VLAu7nkyRV69Sx9eu", "wdWrS1cugxiAvaCAAsBIeGaOnkg7vWkm+0+fpoIvRT58SPskAOPCBXJA2YOXLzP/", "+Pbt1PGxY8l+4uTzgg0Aly+njltaMu+9aZP6awKhkycBxUAKCzU1mX+cTY4cga1b", "k2OdKyyUxGM0A4RMwD89zQpUtPrtuL+YDzQ0ZFagt5coKm+YMIAR4DsqmYhrDX8p", "TU2Lzy80TUL27CGusb4DowbwCfVIBFGPRlYF7PZkf3JSgQSDqWtOncoODshz54hp", "rG/AgIlKlwpR4XEZJK/j3bupkaynJ33zLVuygqVJby9xVLY0icoTPxmjo3xBJY7f", "UO90FOUknD2bvsmTJ0sHXAAuIeX0I8BnIxTCh8peR9C5Gov4QmEhvHixdODz51PA", "Q6g0fVRj+sziYvwoBopRUdFJ8um0WRZioac7HMr7x8dVPpBJ3rwBkbxPKY4HDGoF", "/Oby5XP2cOnmJBkZcwHb9euIw4fTQdzuJYXihN0DGrxft6/ApBEMEgLGgc/Ax7Iy", "vLW1DGttw0DsyhWk1/tLoIUiUf4UQpl2GJWOfdRYfiBsOJ1EgSnAB/RVVPBu507e", "793LIOp6TgGR5mbib98uKUbIeaeeQjncIPAeeAf0aaz/gBkT5fER4Acw5PFAQwPR", "bdsIV1URvHiRErRvtLbicLkwHz/OXJho4BjJUi3hcP365H2aiR96zazp8yHtduLR", "KGGXi4nycmbr6lRlU1lJwLLwnz2Lx+tVpVkggNOyyN2wAfuNG6o008AppRnKrAmH", "69e0+/RcWCsqzelpiEbVNdmwgfC6dczqzYJAoK6OsY4OfPfuUXrmDKvRxenr1xRY", "FjmmCcePM9PSkixONdCwbkPxOF9tNvwfPjA1MMBPh4N4OIzcvx9Efb0UbrfK5fbs", "QTQ2Ll6e379P5blzeKLR1PJc0z2iT5y1PNcml4l/CfwPAvsTb+gSFTQAAAAASUVO", "RK5CYII=" ].join(''); var contacts={}; // id : {name:"blah", online:true/false} function readContacts(url) { GM_xmlhttpRequest( { method:"GET", url:url, headers: { "User-Agent":window.navigator.userAgent, "Accept":"text/html,text/xml,text/plain" }, onload: function(resp) { if(resp.status=="200") { var xmlDoc; if(unsafeWindow) { var dp=new XPCNativeWrapper(window, "DOMParser()"); xmlDoc=new dp.DOMParser().parseFromString(resp.responseText,"application/xml"); } else xmlDoc=new uWin.DOMParser().parseFromString(resp.responseText,"application/xml"); var trig=[ "//whirlpool/contact/userid/text()", "//whirlpool/contact/username/text()", "//whirlpool/contact/online/text()" ].join("|"); var things=document.evaluate(trig, xmlDoc,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null); var pop=""; for(var i=0; i < things.snapshotLength; i+=3) { var userId=things.snapshotItem(i).nodeValue; var name=things.snapshotItem(i+1).nodeValue; var online=things.snapshotItem(i+2).nodeValue; contacts[userId]={name:name, online:online}; pop+=(pop.length?"
":""); pop+=(online=="True"?"":"")+name+": is "; pop+=(online=="True"?"online":"offline"); } if(pop.length) doPopup2(pop); } else doPopu2("contacts RSS seems broken"); } }); } function fader(e,v,f) { // var h; function fadeIn(el, delta, to, atEnd) { var x=parseFloat(el.style.opacity)+delta; if(x > 0.99) x=0.99; el.style.opacity=x; // var y=parseInt(h-h*x); // el.style.bottom="-"+y+"px"; if(x<0.99) window.setTimeout(fadeIn, to, el, delta, to, atEnd); else if(typeof atEnd == "function") atEnd(); } function fadeOut(el, delta, to, atEnd) { var x=parseFloat(el.style.opacity)-delta; if(x < 0.01) x=0.01; el.style.opacity=x; // var y=parseInt(h-h*x); // el.style.bottom="-"+y+"px"; if(x>0.01) window.setTimeout(fadeOut, to, el, delta, to, atEnd); else if(typeof atEnd == "function") atEnd(); } e.style.bottom="0"; // e.style.bottom="-1000em"; e.style.display="block"; // h=e.clientHeight; fadeIn(e, 0.03, 50, function() { window.setTimeout( function() { fadeOut(e, 0.03, 50, function() { e.style.display="none"; if(typeof f == "function") f(); }); }, v); }); } var pup=document.createElement("div"); pup.style.display="none"; pup.style.position="fixed"; pup.style.right="32px"; pup.style.opacity="0.01"; pup.style.backgroundColor="orange"; pup.style.backgroundRepeat='repeat-x'; pup.style.backgroundPosition='top left'; pup.style.backgroundImage='url('+dodge+')'; pup.style.padding="10px"; pup.style.border="gold 3px ridge"; pup=document.body.appendChild(pup); function doPopup2(html) { pup.innerHTML=html; fader(pup, 3000, null); } function loadIndex(lookFor) { // read index, and return section/forums in an object var sections={}; var inSection=false; var things = document.evaluate(lookFor, document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null); var currSect=null; for(var i=0; i= 0); var inCLF=(document.location.host.indexOf("mycoffeelounge") >= 0); // WP var wpSectObj=null; var wpContrib="forum-user.cfm"; var serialNo="Undefined"; if(inWP && document.location.host.indexOf("whirlpool.") == 0 && document.location.pathname=="/profile/index.cfm" && document.location.search=="?a=preferences") { var serial=document.getElementById("serialno"); if(serial) { serialNo=serial.firstChild.nodeValue; GM_setValue("WpSerial", serialNo); } } else serialNo=GM_getValue("WpSerial", serialNo); if(inWP && (document.location.pathname=="/" || document.location.pathname=="/forum.cfm")&& document.location.host.indexOf("forums.") == 0) { wpSectObj=loadIndex('//TD[@class="indexhead"]/B|//TD[@class="indexL2"]/DIV/A/B'); GM_setValue("wpForums", uneval(wpSectObj)); var lnk=getAny('//DIV[@class="nav_item_name"]/A[contains(@href, "forum-user.cfm?id=")]'); if(lnk) wpContrib=lnk.href; GM_setValue("wpContrib", lnk.href); } else { wpSectObj=eval(GM_getValue("wpForums", "({'Please visit index page':{'Click Here':'http://forums.whirlpool.net.au/'}})")); wpContrib=GM_getValue("wpContrib", wpContrib); } var wpX=wpContrib.indexOf("="); var wpLogout=""; if(wpX>0) wpLogout=wpContrib.substr(wpX); var wpRssLinks="http://whirlpool.net.au/external/rss-links.cfm?serial="+serialNo; var wpRssContacts="http://whirlpool.net.au/external/wpm-contacts.cfm?serial="+serialNo; function doContacts(e) { if(e) { e.stopPropagation(); e.preventDefault(); } readContacts(wpRssContacts); } // window.setInterval(doContacts, 60000); // doContacts(); var wpSection={ "WP User":{ "Contributed Threads" : wpContrib, "People Online" : "http://forums.whirlpool.net.au/forum-user-online.cfm", "Inbox" : "http://forums.whirlpool.net.au/whim.cfm?show=inbox", "Outbox" : "http://forums.whirlpool.net.au/whim.cfm?show=outbox", "Contacts" : "http://forums.whirlpool.net.au/whim-contacts.cfm", "Subscriptions" : "http://forums.whirlpool.net.au/forum-subs.cfm", "Thread Search" : "http://forums.whirlpool.net.au/forum-search.cfm", "Your Settings" : "http://whirlpool.net.au/user.cfm", "Log out" : "http://whirlpool.net.au/login.cfm?logout"+wpLogout, "Whoogle" : "http://ideatriage.com/WPSearch.html", // "Links RSS" : wpRssLinks, // "Contacts RSS" : wpRssContacts, "click" : doContacts } }; // CLF var clfSectObj=null; var clfContrib="cl-user.php"; if(inCLF && document.location.pathname == "/index.php") { var indexStyle1=getAny('//TD[@class="Coffee3"]'); var xp=indexStyle1?'//TR/TD[@class="Coffee3"][2]/B|'+ '//TR/TD[@class="themeindex3"]/DIV/A/B|'+ '//TR/TD[@class="themeindex1"]/DIV/A/B': '//TD[@class="IndexingHeading"]/FONT/B|//TD[@class="IndexPageTD2"]/DIV/A/B'; clfSectObj=loadIndex(xp); GM_setValue("clfForums", uneval(clfSectObj)); var lnk=getAny('//DIV[@class="welcomemsg2"]/A[contains(@href, "cl-user.php?")]'); if(lnk) { var x=lnk.href.split("&"); clfContrib=x[0] } GM_setValue("clfContrib", clfContrib); } else { clfSectObj=eval(GM_getValue("clfForums", "({'Please visit index page':{'Click Here':'http://www.mycoffeelounge.net/index.php'}})")); clfContrib=GM_getValue("clfContrib", clfContrib); } var clfSection={ "CLF User":{ "Recent Threads" : "http://mycoffeelounge.net/forum-recent.php", "Contributed Threads" : clfContrib, "People Online" : "http://www.mycoffeelounge.net/cl-members.php", "Inbox" : "http://www.mycoffeelounge.net/coaster-inbox.php", "Outbox" : "http://www.mycoffeelounge.net/coaster-outbox.php", "Caffeine Level" : "http://www.mycoffeelounge.net/cl-caffeine-level.php", "Thread Search" : "http://www.mycoffeelounge.net/cl-thread-search.php", "Full Text Search" : "http://www.mycoffeelounge.net/cl-full-text-search.php", "Your Settings" : "http://www.mycoffeelounge.net/user.php", "Log out" : "http://www.mycoffeelounge.net/logout.php", "Meh-oogle" : "http://goodbyepolar.com/search/", "Mod" : "http://www.mycoffeelounge.net/mod-main.php", "Froth Central" : "http://www.mycoffeelounge.net/mod-froth-central.php", "The Grinder" : "http://www.mycoffeelounge.net/cl-mod-grinder.php?cid=85", "User Notes" : "http://www.mycoffeelounge.net/mod-user-notes.php", "Online Members" : "http://www.mycoffeelounge.net/mod-online.php", } }; // var separator={"":{}}; if(inWP) { //let's match the current theme var dummy=document.createElement("DIV"); dummy.className="navlink1"; menuConfig.dropDown.bg= document.defaultView.getComputedStyle(dummy, '').getPropertyValue("background-color"); dummy.className="navlink3"; menuConfig.flyOut.bg= document.defaultView.getComputedStyle(dummy, '').getPropertyValue("background-color"); } if(inCLF) { //let's match the current theme var dummy=document.createElement("TD"); dummy.className="navmenu"; menuConfig.dropDown.bg=menuConfig.flyOut.bg= document.defaultView.getComputedStyle(dummy, '').getPropertyValue("background-color"); if(getAny('//a[starts-with(@onclick, "psmiley")]') && document.forms[0] && ! document.post) { document.post=document.forms[0]; } } // var sideNav=inCLF?getAny('//TD[@class="navmenu"]'):true; var Img=document.createElement("img"); Img.src=inWP?gfx:"http://www.mycoffeelounge.net/wiki/56-663.gif"; Img.style.borderStyle="none"; Img.style.backgroundColor="transparent"; Img.style.width=(sideNav || inWP)?"16px":"19px"; Img.style.height=Img.style.width; menuConfig.icon.el=Img; menuConfig.icon.left=sideNav?"146px":"0"; var pu=createPopup(menuConfig); var clfForum={"Forums":clfSectObj}; var wpForum={"Forums":wpSectObj}; addSection(({'Hidden':{'Hidden':''}}), pu, "hidden"); addSection(clfSection, pu, "site"); addSection(clfSectObj, pu, "section"); addSection(separator, pu, "sep"); addSection(wpSection, pu, "site"); addSection(wpSectObj, pu, "section"); document.body.appendChild(pu.root); })();