// ==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. */