您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
fixedscrollanywhere
// ==UserScript== // @name Fixed Scroller Anywhere // @namespace http://userscripts.org/users/315214 // @description fixedscrollanywhere // @version 0.1 // @dtversion 110815001 // @timestamp 1313348055082 // @author tuxie.forte (http://userscripts.org/users/tuxieforte); // @license (CC) by-nc-sa 3.0 // @include http://* // @include https://* // // ==/UserScript== // // This script contain adapted snippet from: google plus reply+, // Full credit left to original author: Mesak (http://userscripts.org/users/mesak) // uso: http://userscripts.org/scripts/show/106503 // web: http://mesak.wablog.info // ================================= // (function(){ // Initialize Global Variables var gvar=function() {}; var IMG = { 'BT_ARROW_BOTTOM':'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAB3klEQVRYR+1XSy8DURidRS0bEo/Eb7C2YCXxO4hO25mhOxaIBGui9fwNHlGPRkM8qu20RESInSAhNqhHSKyP75QmmtA2XOlmFif35n7n3O98370z7WgAtHKirMlZuGPA6YDTAacDRTugaZrLNM01n88H3eOBpwjIIdeyrAvRVggK5ijFgNswDLy8vuE+84i7+4eCIIdcaiR3pQoDNX6//2ksOIGr6xvMzocFi5hbCOeBa4yRQ65oniV5rQoDVbJJo7Q+Mzg0jLPzCyytRBBeXs0D1xgjh1xqBNT++Qh4jvWCZl3XM729fTg+OUVkbR0rkWgWnHONMXLI/dQouQMsImeiyevVM93dPUjaaWxux7JI2ClwjTHhNn1NrqID3CPPhFR52xUIILq+kUWnZbHy2++SqzSQZ6K9re3Sq+sgOP8puQoDrpHRYDQ4PoWx0KRgCqGJaYQmZ2T8wPjnPMdhnBpJ7lJhwN0/MIiDwyOk9w9g7+0jmd5DIpVGPJnCbiKFWNzGdiyBrZ243Ind7EiNJHerMFDd4fHZhtkFv9FZEIbEyTOtAKiR5NUqDLCKBkGLoLVEkEuNkg7wHLkR32p1JYJcapTcgdxj+Oux0N/+oj9G//3N4BhwOuB0oOwdeAf11IjEeWJphQAAAABJRU5ErkJggg==', 'BT_ARROW_TOP':'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAB/UlEQVRYR+1XzU4TURidpLhsYgK48BVc+QZGE16grFudf2DV7gyBRZdiW7WvoQN0hCC09GcopCEmhLiAlKTtXuvCBzh+Z5yaiYYW0iFspsnJnTvfOff75sz9bqYKAOU+ca/J+eBxAbEDsQOxAxMdUBRl5s1Gcaf4roxC6cNfvC2+x3UolMqghlrB2Bw3KSD5enUdB7UG9qt1f6weNlGrt3DYaKHe8tD02mgdHcNrn6B90kHn9CuokdzJKAqYfflK9yx7Baa1DNNchuFjCbphB1jy5yOQR40kn42iAD7FE8EzwYsAC4uLKVfTVGiqilQq5cr9hVCcXGoicYDvkQvNCx4JHmcymYppmvgx/InvwyHW19aQTqcrjAUccqmJZA/QxdEvoWmak83l0Ov10Wh6qMs+GPQH4D3GhJgIC6J4BaHkqpPN5nDZvcK2u4OtymdsCnh90e2CMXkt/xUx7nvjJl3AAhKqqjr5fB5n59/gbLn4tOn6Y/iaMXLIDTsxbQEzuq67hWIJ7eOOn/ijsx2gIiPxZ84YOeRSE9UeSNq2JX3vYW+/ht0v1bEgh1xqouqCOdu2f1mWBcMwBPoEGCCXGilgLopN+FAWeSp4Hurz0Xlw3UguNdROfRQ/CBbiGXAbMDm1Uxfwb1vfej5VF9z1f4aJ50BcQOxA7MBdO/AbgVKBjSV0zikAAAAASUVORK5CYII=', 'BT_ARROW_DN':'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAABcklEQVRYR+1Wy0rDQBQNqEvBRb/DRX/A38hrEwkJoa7soq7UH1DwK3xgtAZLRURMq2vFneii4sqqoILr45yQFCIxEZJSFzNwYLhzzr13Tm5gFADKJDHR4ry4bEA6IB2QDvx/BxRFmfE87922bSxaFqwCkEMuNdQK5F6y0AGhn3McBx+fXxi+vOF5+JoLcsilhtoqGqiZpnmxsbmFweMTtnd9gX3s7PkpMMYzcsilRhSvVdHArEgyr6pquLq2jrv7Bxy0A/iHRykwxjNyyKVGgNrSn2A6vkmdiVutFVzf3CI47qIddCJwzxjP4uL1WENt6QaYYyppQtO0sLncRK9/hdOz8whh/xKM8UzwkuLURCvvvfGXIUzyjJrQdS1sLDXQ6Z5EEBMPXdczi1fZQMoJwzB6ruuC4D7r5lU78NMJDtlCDO458SPbE3LVDiR5OVyccBYluI8GLmtVNQO/5S+Ml2pg3C/mwr9ANiAdkA5IB8btwDctkKsYa5cf8AAAAABJRU5ErkJggg==', 'BT_ARROW_UP':'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAABX0lEQVRYR+1Wy0rDQBQNpC4LLor/4S/on+S9Tfd1kb36IWr6iIqKJdWi4E7EhVKh7V7rwg843hMrSEmblmmpiwkcZjJz7twzJzeTGACMdWKtyblxLUA7oB3QDvx/B4z8y/Q878hxHDiODdd1U6GVpnBnbrLQgZxFTdu2YxGAj9En3gV7tRosy4qFa+aJmPWtWVRAljysVtHvD9C56SLt3GI4GIJjnMsTsSwBktyKw7CK194bmskZGq1T1AXsv/R64Bw5kyKWIcCkxVEU4fHpGXEjwUk9ydq/fc6RM/k4VAWUpNiS/YND3N0/ZImP4+YYLWmJn3vOkUMuY34LU1VAOQh8tNMuLq7aOL+8nglyyGWMCCizKFUFVIIg+PJ9n6+bwCmAC3IZI7kryxCwKYtsC3YEu3OCXMYwVtmBjfFCW9IuAiZnrLKAaQfc3ONKNbDqP+bCk1AL0A5oB7QDq3bgG8rFqAcNi1mfAAAAAElFTkSuQmCC', 'BT_ARROW_BLACK':'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAACQklEQVRYR+2XXWsTQRSGEyq9NCCk1/4BLwJCvLKCvyAfKLHJbnaTko9NrGlNTbUKSUgJbRNrrRJtruoPKAGvKtYPeuuFv+g4z5hIKm1qyZaCZOFlDue8Z867Z3ZmEo+IeC4Tl1qcF58ImHRg0oEzO+A5/njn5h7cMk3zSzKZlGHgI6bo3r9yRtY4j4Ap0zR2Hacg3W5XDg4+yddv3zWw8RGDowRMDYsYddD9q4ArauJeaXFRDj8fyrv3Xck7Rbl3P6aBjY8YHMXtDosYV4A3FArNFosF/abl5RUxTEssOy12al4DGx8xOHDD4fDtwXKMK2A6kUgc7e19kGqtIen5jGSyecnlC8eAjxgcuIZhHCkB0yzFuAJ8lmXJ/n5PFywUF+ThQulEEIMDlxxV2+eGAL9t27LztiOPSkuy9LissHwKypoDlxxV3O+GgJlUKiXrGy15UnkmlZXVkYADlxxVfMYVAel0Sp6/qCrU+iP2afjNIcctAf54PP6j8nRV6o2mVOtrIwEHLjluLYEvGAwmstmMNNc3FVqy1tw4EcTgwCXHrY+QrXQ9Go32HMeR9sttaW+9lpYaN9uvNLDxEYMDlxy3tiFn+1WFG5FI5GM2m5NavSHbOx1509nVwMZHDA7cfo6+F8Y9B5iDs/0aEwcCgVwsFvvJNrPVXtdQNj5i/eJw/9wHbggYiKATtPamwh2Fu31g4yMGx/XLCAE8tJRvghOOQ4Z9DrDxEbuw63gg4tzjWEtw0X9azvw9MBEw6cB/34Ff40MrIZhsiFAAAAAASUVORK5CYII=', 'BT_ARROW_TORIGHT':'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAYxJREFUWIXt1r1Kw2AUxvH/Sa2LpeqibtYOft6AuLuJtKK4ODVQimBvQ138GhRp7eSgFKxIL0AcxEvQResXqItaBLGmOQ4VB6cmpemSZwu8b84vJOe8EVWllTFaWt0H+AAfALTVu1BEAIJAx+++L+ATsP6vdTJb6gb8pgMYSKVSZ6Ahy6oWs9lsDKg6vM9fnL6CdqBbVUNz8wuMjI5NJRKJPBDwCgAgtm3z/V1hfHyCSCQSN033CJcfoWKr8vT8wnRshnC4K26apitEQ12ganN9fUNqcZFwZ6crRMNtqAqXl1ekl9IEAoF4Mpk88BAgiNTa7vbunuWVVWzbnvUQUItSQ+jflWcARRUMEaKRfrbW1xAxTj0EgAgMDQ+ysbXJw+NjIZPJTDrZ73QS/ituEI0OsLu9Q7n8XsjlcnM4nIouAYIhQl9vDyfHR5TLb4W9PefF3QLUMAyCwXYuLs4plUquntwtoAK8ishH/nA/ZFnVYiPFAaTeo7NZx7FTQF1pCqBZafkvmQ/wAS0H/ACra5W813uV0AAAAABJRU5ErkJggg==', 'BT_ARROW_TOLEFT':'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAaxJREFUWIXtlr9LHFEQxz+zexoEOU0Tz8J42mj0H5AU4h8gwRMOU1jt3iFJEdAmyb9hQI6DvSqNrLgS0tnLlYImdndnpzb+QBvP3ZfiQiqVfW+VS7FTz/vOh5l5MyNKKbppVlejpwApwP8AkNFxFpHYvnG/txbAIxp9wAvgDrgB2jqPk5hdKpWCTMaeB7muVCqzQBO4iCuQpAdsx3H8N1PT88WlZZRS/cBLoFdHxBTAdl3Hz+fzhZmZt7Tbt0RRBBC/SRIA2K7r+tnsYOHdwiInp2dESgFmO0UXIOM4jp8dGCisfPxAo9FEqcgo8D9BHedyubw7nMvNuW6J/YNDnmKRamVAqWju0+oajdYxkVJ0xoJ22c0BQBA6AylZWEMAy7K2vn75zOjrEUTkbwmS1UELoFqtvg/DMFj/ts7k5AQak/lpAIDQ87zi1eVlUNnYYHx8DJFk+8zkdQfi6iL4sbNNbugVlgimzWiKH3perdhqtYJ6fY+enl4sywKDhkiSv7BWqxWPfv/66W9+R0SugXPgVkdEdM7yB+6Be9dxXF0tgOewrp9kKUAKkAL8ARL2hevB3d/UAAAAAElFTkSuQmCC', }; /* window.alert(new Date().getTime()); */ //========-=-=-=-=--========= gvar.__DEBUG__ = false; // development debug //========-=-=-=-=--========= if(window.top !== window.self) return; function init(){ // check for browser type ApiBrowserCheck(); GM_addGlobalStyle( rSRC.css() ); if(!ss) ss = {}; ss.STEPS = 20; // scroll speed; smaller is faster gvar.LAST = 0; gvar.sITry_Over = null; gvar.isMoving = 0; // roll start_Main(); } function start_Main(){ var par = document.body || getTag('body')[0]; var el, els, pEl, highest; if(par){ el = createEl('div', {}, rSRC.tpl() ); Dom.add(el, par); els = $D('//div[@id="gpr_gotools"]//div', el); if(pEl = els.snapshotLength){ for(var i=0; i<pEl; i++){ el = els.snapshotItem(i); _o('click', el, function(e){ e = e.target||e; if(e.nodeName!='DIV') e = e.parentNode; var op = e.id.replace('gpr_goto_',''); pageMove(op); }); } } // prep display container if(el = $D('#gpr_gotools')){ _o('mouseout', el, function(){ gvar.sITry_Over = window.setTimeout(function() { if($D('#gpr_gotools')) addClass('trsp', $D('#gpr_gotools')) if($D('#gpr_goto_hide')) addClass('invi', $D('#gpr_goto_hide')); }, 800); }); _o('mousemove', el, function(){ clearTimeout(gvar.sITry_Over); if($D('#gpr_gotools')) removeClass('trsp', $D('#gpr_gotools')) if($D('#gpr_goto_hide')) removeClass('invi', $D('#gpr_goto_hide')); }); window.setTimeout(function() { removeClass('invi', $D('#gpr_gotools')) }, 500); highest = findHighestZIndex('*'); if(highest > 1) el.style.setProperty('z-index', (highest+1) ,''); } //addClass } } // handler of scroll seeker function pageMove(to){ var move_scroll = 0, cs = ss.getCurrentYPos(); gvar.isMoving = (gvar.isMoving < 1 ? gvar.isMoving+1 : 0); if(gvar.isMoving==0) return; switch(to){ case "top": move_scroll = 0; break; case "up": move_scroll= cs-GetHeight();break; case "black": move_scroll= gvar.LAST; break; case "dn":move_scroll= cs+GetHeight();break; case "bottom": move_scroll = getDocumentHeight(); break; case "hide": move_scroll = false; break; case "show": move_scroll = true; break; } if(move_scroll===false){ addClass('hide', $D('#gpr_main')); removeClass('hide', $D('#gpr_toggler')); return; }else if(move_scroll===true){ removeClass('hide', $D('#gpr_main')); addClass('hide', $D('#gpr_toggler')); return; } ss.smoothScroll( move_scroll, null ); gvar.LAST = cs; } function findHighestZIndex(elem){ var ret=0, zindex, elems = document.getElementsByTagName(elem); for (var i = 0; i < elems.length; i++) { zindex=document.defaultView.getComputedStyle(elems[i],null).getPropertyValue("z-index"); if ((zindex > ret) && (zindex != 'auto')) ret = zindex; } return ret; } // static routine function isDefined(x) { return !(x == null && x !== null); } function isUndefined(x) { return x == null && x !== null; } function isString(x) { return (typeof(x)!='object' && typeof(x)!='function'); } function trimStr(x) { return (typeof(x)=='string' && x ? x.replace(/^\s+|\s+$/g,"") : '') }; function _o(m,e,f){Dom.Ev(e,m,function(e){typeof(f)=='function'?f(e):void(0)});} function GetHeight(){ var y = 0; if (self.innerHeight){ // FF; Opera; Chrome y = self.innerHeight; } else if (document.documentElement && document.documentElement.clientHeight){ y = document.documentElement.clientHeight; } else if (document.body){ y = document.body.clientHeight; } return y; } function getDocumentHeight() { var D = document; return Math.max( Math.max(D.body.scrollHeight, D.documentElement.scrollHeight), Math.max(D.body.offsetHeight, D.documentElement.offsetHeight), Math.max(D.body.clientHeight, D.documentElement.clientHeight) ); } function createEl(type, attrArray, html){ var node = document.createElement(type); for (var attr in attrArray) if (attrArray.hasOwnProperty(attr)) node.setAttribute(attr, attrArray[attr]); if(html) Dom.setHTML(node, html); return node; } function createTextEl(txt){ return document.createTextNode(txt); } function getTag(name, parent){ var ret = (typeof(parent)!='object' ? document.getElementsByTagName(name) : parent.getElementsByTagName(name) ); return (isDefined(ret[0]) ? ret : false); } function addClass(cName, Obj){ if(cName=="") return; var neocls = (Obj.className ? Obj.className : ''); if(neocls.indexOf(cName)!=-1) return; neocls+=(neocls!=''?' ':'')+cName; Obj.setAttribute('class', neocls); } function removeClass(cName, Obj){ if(cName=="") return; var neocls = (Obj.className ? Obj.className : ''); neocls = trimStr ( neocls.replace(cName,"") ); // replace and trim Obj.setAttribute('class', neocls); } //=== BROWSER DETECTION / ADVANCED SETTING //=============snipet-authored-by:GI-Joe==// function ApiBrowserCheck() { //delete GM_log; delete GM_getValue; delete GM_setValue; delete GM_deleteValue; delete GM_xmlhttpRequest; delete GM_openInTab; delete GM_registerMenuCommand; if(typeof(unsafeWindow)=='undefined') { unsafeWindow=window; } if(typeof(GM_log)=='undefined') { GM_log=function(msg) { try { unsafeWindow.console.log('GM_log: '+msg); } catch(e) {} }; } var needApiUpgrade=false; if(window.navigator.appName.match(/^opera/i) && typeof(window.opera)!='undefined') { needApiUpgrade=true; gvar.isOpera=true; GM_log=window.opera.postError; clog('Opera detected...',0); } if(typeof(GM_setValue)!='undefined') { var gsv; try { gsv=GM_setValue.toString(); } catch(e) { gsv='.staticArgs.FF4.0'; } if(gsv.indexOf('staticArgs')>0) { gvar.isGreaseMonkey=true; gvar.isFF4=false; clog('GreaseMonkey Api detected'+( (gvar.isFF4=gsv.indexOf('FF4.0')>0) ?' >= FF4':'' )+'...',0); } // test GM_hitch else if(gsv.match(/not\s+supported/)) { needApiUpgrade=true; gvar.isBuggedChrome=true; clog('Bugged Chrome GM Api detected...',0); } } else { needApiUpgrade=true; clog('No GM Api detected...',0); } gvar.noCrossDomain = (gvar.isOpera || gvar.isBuggedChrome); if(needApiUpgrade) { GM_isAddon=true; clog('Try to recreate needed GM Api...',0); //OPTIONS_BOX['FLASH_PLAYER_WMODE'][3]=2; OPTIONS_BOX['FLASH_PLAYER_WMODE_BCHAN'][3]=2; // Change Default wmode if there no greasemonkey installed var ws=null; try { ws=typeof(unsafeWindow.localStorage) } catch(e) { ws=null; } // Catch Security error if(ws=='object') { clog('Using localStorage for GM Api.',0); GM_getValue=function(name,defValue) { var value=unsafeWindow.localStorage.getItem(GMSTORAGE_PATH+name); if(value==null) { return defValue; } else { switch(value.substr(0,2)) { case 'S]': return value.substr(2); case 'N]': return parseInt(value.substr(2)); case 'B]': return value.substr(2)=='true'; } } return value; }; GM_setValue=function(name,value) { switch (typeof(value)) { case 'string': unsafeWindow.localStorage.setItem(GMSTORAGE_PATH+name,'S]'+value); break; case 'number': if(value.toString().indexOf('.')<0) { unsafeWindow.localStorage.setItem(GMSTORAGE_PATH+name,'N]'+value); } break; case 'boolean': unsafeWindow.localStorage.setItem(GMSTORAGE_PATH+name,'B]'+value); break; } }; GM_deleteValue=function(name) { unsafeWindow.localStorage.removeItem(GMSTORAGE_PATH+name); }; } else if(!gvar.isOpera || typeof(GM_setValue)=='undefined') { clog('Using temporarilyStorage for GM Api.',0); gvar.temporarilyStorage=new Array(); GM_getValue=function(name,defValue) { if(typeof(gvar.temporarilyStorage[GMSTORAGE_PATH+name])=='undefined') { return defValue; } else { return gvar.temporarilyStorage[GMSTORAGE_PATH+name]; } }; GM_setValue=function(name,value) { switch (typeof(value)) { case "string": case "boolean": case "number": gvar.temporarilyStorage[GMSTORAGE_PATH+name]=value; } }; GM_deleteValue=function(name) { delete gvar.temporarilyStorage[GMSTORAGE_PATH+name]; }; } if(typeof(GM_openInTab)=='undefined') { GM_openInTab=function(url) { unsafeWindow.open(url,""); }; } if(typeof(GM_registerMenuCommand)=='undefined') { GM_registerMenuCommand=function(name,cmd) { GM_log("Notice: GM_registerMenuCommand is not supported."); }; } // Dummy if(!gvar.isOpera || typeof(GM_xmlhttpRequest)=='undefined') { clog('Using XMLHttpRequest for GM Api.',0); GM_xmlhttpRequest=function(obj) { var request=new XMLHttpRequest(); request.onreadystatechange=function() { if(obj.onreadystatechange) { obj.onreadystatechange(request); }; if(request.readyState==4 && obj.onload) { obj.onload(request); } } request.onerror=function() { if(obj.onerror) { obj.onerror(request); } } try { request.open(obj.method,obj.url,true); } catch(e) { if(obj.onerror) { obj.onerror( {readyState:4,responseHeaders:'',responseText:'',responseXML:'',status:403,statusText:'Forbidden'} ); }; return; } if(obj.headers) { for(name in obj.headers) { request.setRequestHeader(name,obj.headers[name]); } } request.send(obj.data); return request; }; } } // end needApiUpgrade GM_getIntValue=function(name,defValue) { return parseInt(GM_getValue(name,defValue),10); }; } // ----my ge-debug-------- function show_alert(msg, force) { if(arguments.callee.counter) { arguments.callee.counter++; } else { arguments.callee.counter=1; } GM_log('('+arguments.callee.counter+') '+msg); if(force==0) { return; } } function clog(msg) { if(!gvar.__DEBUG__) return; show_alert(msg); } // -end static // ----------- var GM_addGlobalScript=function(script, id, tobody) { // Redefine GM_addGlobalScript with a better routine var sel=createEl('script',{type:'text/javascript'}); if(isDefined(id) && isString(id)) sel.setAttribute('id', id); if(script.match(/^https?:\/\/.+/)) sel.setAttribute('src', script); else sel.appendChild(createTextEl(script)); if(isDefined(tobody) && tobody){ document.body.insertBefore(sel,document.body.firstChild); }else{ var hds = getTag('head'); if( isDefined(hds[0]) && hds[0].nodeName=='HEAD' ) window.setTimeout(function() { hds[0].appendChild(sel);}, 100); else document.body.insertBefore(sel, document.body.firstChild); } return sel; }; var GM_addGlobalStyle=function(css, id, tobody) { // Redefine GM_addGlobalStyle with a better routine var sel=createEl('style',{type:'text/css'}); if(isDefined(id) && isString(id)) sel.setAttribute('id', id); sel.appendChild(createTextEl(css)); if(isDefined(tobody) && tobody){ document.body.insertBefore(sel,document.body.firstChild); }else{ var hds = getTag('head'); if( isDefined(hds[0]) && hds[0].nodeName=='HEAD' ) window.setTimeout(function() { hds[0].appendChild(sel); }, 100); else document.body.insertBefore(sel,document.body.firstChild); } return sel; }; // Get Elements var $D=function (q, root, single) { if (root && typeof root == 'string') { root = $D(root, null, true); if (!root) { return null; } } if( !q ) return false; if ( typeof q == 'object') return q; root = root || document; if (q[0]=='/' || (q[0]=='.' && q[1]=='/')) { if (single) { return document.evaluate(q, root, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; } return document.evaluate(q, root, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); } else if (q[0]=='.') { return root.getElementsByClassName(q.substr(1)); } else { return root.getElementById( (q[0]=='#' ? q.substr(1):q.substr(0)) ); } return root.getElementsByTagName(q); }; // utk add - remove element var Dom = { g: function(el) { if(!el) return false; return ( isString(el) ? document.getElementById(el) : el ); }, add: function(el, dest) { var el = this.g(el); var dest = this.g(dest); if(el && dest) dest.appendChild(el); }, remove: function(el) { var el = this.g(el); if(el && el.parentNode) el.parentNode.removeChild(el); }, clearHTML: function(o){ if(o) while(o.firstChild) o.removeChild(o.firstChild); }, setHTML: function(o, html){ if(!o || !html) return; var doc = Dom.stringToDOM(html); Dom.clearHTML(o); o.appendChild(doc); }, getIner: function(o){ return Dom.DOMtoString(o) }, stringToDOM: function(q){ var r = function (a) { a = a.replace(/\r/g, " "); a = a.replace(/\n/g, " "); return a }; var s = function (a) { a = a.replace(/&/g, "&"); a = a.replace(/>/g, ">"); a = a.replace(/</g, "<"); a = a.replace(/ /g, " "); a = a.replace(/"/g, '"'); return a }; var t = function (a) { a = a.replace(/ /g, ""); return a }; var r = function (a) { a = a.toString(); clog('R\n'+a); a = a.replace(/<br>/gi, "<br/>"); a = a.replace(/<hr>/gi, "<hr/>"); a = a.replace(/&\#(\d{3,});/gi, "&#$1;"); a = a.replace(/<img\s([^>]+)./gi, function (a, b) { return b.substring(b.length - 1) == "/" ? a : "<img " + b + "/>" }); a = a.replace(/<input\s([^>]+)./gi, function (a, b) { return b.substring(b.length - 1) == "/" ? a : "<input " + b + "/>" }); a = a.replace(/<hr\s([^>]+)./gi, function (a, b) { return b.substring(b.length - 1) == "/" ? a : "<hr " + b + "/>" }); return a }; var u = function (a) { var b = document.createDocumentFragment(); var c = a.indexOf(' '); if (c === -1) { var d = a.toLowerCase(); b.appendChild(document.createElement(d)) } else { d = t(a.substring(0, c)).toLowerCase(); if (document.all && d === 'input') { b.appendChild(document.createElement('<' + a + '/>')); return b } a = a.substring(c + 1); b.appendChild(document.createElement(d)); while (a.length > 0) { var e = a.indexOf('='); if (e >= 0) { var f = t(a.substring(0, e)).toLowerCase(); var g = a.indexOf('"'); a = a.substring(g + 1); g = a.indexOf('"'); var h = s(a.substring(0, g)); a = a.substring(g + 2); if (document.all && f === 'style') { b.lastChild.style.cssText = h } else { b.lastChild.setAttribute(f, h) } } else { break } } } return b }; var v = function (a, b, c) { var d = a; var e = b; c = c.toLowerCase(); var f = e.indexOf('</' + c + '>'); d = d.concat(e.substring(0, f)); e = e.substring(f); while (d.indexOf('<' + c) != -1) { d = d.substring(d.indexOf('<' + c)); d = d.substring(d.indexOf('>') + 1); e = e.substring(e.indexOf('>') + 1); f = e.indexOf('</' + c + '>'); d = d.concat(e.substring(0, f)); e = e.substring(f) } return b.length - e.length }; var w = function (a) { var b = document.createDocumentFragment(); clog('auoo' + a); if(a) a = r(a); while (a && a.length > 0) { var c = a.indexOf("<"); if (c === -1) { a = s(a); clog('createTextNode -1='+a) b.appendChild(document.createTextNode(a)); a = null } if (c > 0) { var d = s(a.substring(0, c)); clog('createTextNode > 0='+a) b.appendChild(document.createTextNode(d)); a = a.substring(c) } if (c === 0) { var e = a.indexOf('<!--'); if (e === 0) { var f = a.indexOf('-->'); var g = a.substring(4, f); g = s(g); b.appendChild(document.createComment(g)); a = a.substring(f + 3) } else { var h = a.indexOf('>'); if (a.substring(h - 1, h) === '/') { var i = a.indexOf('/>'); var j = a.substring(1, i); b.appendChild(u(j)); a = a.substring(i + 2) } else { var k = a.indexOf('>'); var l = a.substring(1, k); var m = document.createDocumentFragment(); m.appendChild(u(l)); a = a.substring(k + 1); var n = a.substring(0, a.indexOf('</')); a = a.substring(a.indexOf('</')); if (n.indexOf('<') != -1) { var o = m.lastChild.nodeName; var p = v(n, a, o); n = n.concat(a.substring(0, p)); a = a.substring(p) } a = a.substring(a.indexOf('>') + 1); m.lastChild.appendChild(w(n)); b.appendChild(m) } } } } return b }; var x = w(q); return x }, DOMtoString: function(h){ //a=a.replace(/&/g,"&"); var j=function(a){a=a.replace(/>/g,">");a=a.replace(/</g,"<");a=a.replace(/\"/g,'"');return a};var k=function(a){var b=a.childNodes;var c='';for(var i=0;i<b.length;i++){var d=b[i].nodeType;switch(d){case 1:var e=b[i].nodeName.toLowerCase();var f=b[i].attributes;c=c.concat('<'+e);if(f.length>0){for(var g=0;g<f.length;g++){if(document.all){if(f[g].nodeName&&f[g].nodeValue!==null&&f[g].nodeValue!=''&&(f[g].nodeName!='contentEditable'&&f[g].nodeValue!='inherit')&&(f[g].nodeName!='shape'&&f[g].nodeValue!='rect')){c=c.concat(' '+f[g].nodeName.toLowerCase()+'="'+j(f[g].nodeValue)+'"')}if(f[g].nodeName==='style'&&b[i].style.cssText!==null&&b[i].style.cssText.length!==0){c=c.concat(' style="'+b[i].style.cssText.toLowerCase()+';"')}}else{c=c.concat(' '+f[g].nodeName.toLowerCase()+'="'+j(f[g].nodeValue)+'"')}}}if(e==='meta'||e==='img'||e==='br'||e==='input'||e==='link'||e==='hr'){c=c.concat(' />')}else{c=c.concat('>'+k(b[i])+'</'+e+'>')}break;case 3:c=c.concat(j(b[i].nodeValue));break;case 8:c=c.concat('<!--'+j(b[i].nodeValue)+'-->');break}}return c};var l=k(h);return l }, clearIner: function(o){ if(o) while(o.firstChild) o.removeChild(o.firstChild); }, Ev: function() { if (window.addEventListener) { return function(el, type, fn, ph) { if(typeof(el)=='object') this.g(el).addEventListener(type, function(e){fn(e);}, (isUndefined(ph) ? false : ph)); }; }else if (window.attachEvent) { return function(el, type, fn) { var f = function() { fn.call(this.g(el), window.event); }; this.g(el).attachEvent('on' + type, f); }; } }() }; /* Modified Smooth scroller Todd Anglin 14 October 2006, sil, http://www.kryogenix.org/ v1.1 2005-06-16 wrap it up in an object */ var ss = { smoothScroll: function(anchor, cb) { var desty=0;; if(typeof(anchor)=='number'){ desty = anchor; }else{ var destinationLink = anchor; // If we didn't find a destination, give up and let the browser do its thing if (!destinationLink) return true; // Find the destination's position desty = destinationLink.offsetTop; var thisNode = destinationLink; while (thisNode.offsetParent && (thisNode.offsetParent != document.body)) { thisNode = thisNode.offsetParent; desty += thisNode.offsetTop + gvar.offsetTop; } } // Stop any current scrolling clearInterval(ss.INTERVAL); // check is there any callback ss.callback = (typeof(cb)=='function' ? cb:null); var cypos = ss.getCurrentYPos(); var ss_stepsize = parseInt((desty-cypos)/ss.STEPS); ss.initPos = (cypos < desty); ss.INTERVAL = setInterval( function(){ ss.scrollWindow(ss_stepsize,desty,anchor) }, 8); }, scrollWindow: function(scramount,dest,anchor) { var wascypos = ss.getCurrentYPos(); var isAbove = (wascypos < dest); window.scrollTo(0,wascypos + scramount); var iscypos = ss.getCurrentYPos(); var isAboveNow = (iscypos < dest); //show_alert('wascypos:'+wascypos+'; '+'isAbove:'+isAbove+'; '+'iscypos:'+iscypos+'; '+'isAboveNow:'+isAboveNow); if ((isAbove != isAboveNow) || (wascypos == iscypos) || (isAbove == isAboveNow && (ss.initPos!=isAbove || ss.initPos!=isAboveNow)) ) { // if we've just scrolled past the destination, or // we haven't moved from the last scroll (i.e., we're at the // bottom of the page) then scroll exactly to the link // additional conditional if user scrolling will prevent of dead end scrollpage window.scrollTo(0,dest); // cancel the repeating timer clearInterval(ss.INTERVAL); // and jump to the link directly so the URL's right //if(isString(anchor)) location.hash = anchor; if(ss.callback) ss.callback(); return; } }, getCurrentYPos: function() { if (document.body && document.body.scrollTop) return document.body.scrollTop; if (document.documentElement && document.documentElement.scrollTop) return document.documentElement.scrollTop; if (window.pageYOffset) return window.pageYOffset; return 0; } }; // main resource var rSRC = { css: function(){ return('' +'#gpr_gotools {right:0;top:200px;position:fixed;z-index:1;}' +'#gpr_main {cursor:pointer; height:160px; width:32px;}' +'#gpr_toggler {cursor:pointer; height:32px; margin:64px -10px 0 0;}' +'.trsp {filter:alpha(opacity=55); opacity:.55;}' +'.invi {visibility:hidden;}' +'.hide {display:none;}' +'.abs {position:absolute;}' +'.inline {right:10px; margin:-2px 8px 0 0;}' ); } ,tpl: function(){ return('' +'<div id="gpr_gotools" class="invi trsp">' +'<div id="gpr_toggler" class="hide">' +'<div id="gpr_goto_show"><img src="'+IMG['BT_ARROW_TOLEFT']+'" /></div>' +'</div>' +'<div id="gpr_main">' +'<div id="gpr_goto_top"><img src="'+IMG['BT_ARROW_TOP']+'" /></div>' +'<div id="gpr_goto_up"><img src="'+IMG['BT_ARROW_UP']+'" /></div>' +'<div id="gpr_goto_hide" class="abs inline invi"><img src="'+IMG['BT_ARROW_TORIGHT']+'" /></div>' +'<div id="gpr_goto_black" class="abs" style="height:32px; "><img src="'+IMG['BT_ARROW_BLACK']+'" /></div>' +'<div style="height:32px;"> </div>' +'<div id="gpr_goto_dn"><img src="'+IMG['BT_ARROW_DN']+'" /></div>' +'<div id="gpr_goto_bottom"><img src="'+IMG['BT_ARROW_BOTTOM']+'" /></div>' +'</div>' // #gpr_main +'</div>' ); } }; // =============== /END Global Var === init(); //---- })() /* ~tuxie.forte. */