// <![CDATA[
// ==UserScript==
// @name Storage Viewer
// @fullname Storage Viewer
// @author GIJoe
// @version 0.13b
// @licence http://creativecommons.org/licenses/by-nc-sa/3.0/
// @license (CC) by-nc-sa
// @namespace http://userscripts.org/scripts/show/62673
// @description Check the use of new kind of cookies: sessionStorage, localStorage, globalStorage and databaseStorage.
// @include http://*
// @include https://*
// @unwrap
// ==/UserScript==
( function() {
//============================= User Config ===============================================
const DIV_OPACITY = 0.90; // between 0 and 1
const DEFAULT_POS = 2; // 1=top-left / 2=top-right / 3=bottom-left / 4=bottom-right
const RESET_KEYCODE = 19; // 19=VK_PAUSE
const SHOW_AT_START = 1; // 0=no / 1=if storage used / 2=if storage available / 3=yes
const SHOW_AT_CHANGE = 1; // 0=no / 1=yes
const COLOR_TITLE = '#AAAAFF';
const COLOR_TITLE_TEXT = '#666666';
const COLOR_UNAVAILABLE = '#FF8888';
const COLOR_PROTECTED = '#FFAA44';
const COLOR_NOT_USED = '#88CCCC';
const COLOR_USED = '#44FF44';
const COLOR_INFO_TEXT = '#000000';
const COLOR_CLOSE = '#CCCCDD';
const COLOR_CLOSE_TEXT = '#000000';
const COLOR_BG_SESSION = '#444400';
const COLOR_BG_LOCAL = '#220066';
const COLOR_BG_GLOBAL = '#225522';
//=========================================================================================
//=========================================================================================
//=========================================================================================
const FONT_COURIER_NEW = '"Courier New", Courier, monospace';
const FONT_ARIAL = 'Arial, Tahoma, Helvetica, sans-serif';
const DIV_HEIGHT = 18;
const DIV_ZINDEX = 999999999;
const KEY_DIV_WIDTH = 250;
//=============================== Compatibility Routines ==================================
var gvar=function() {}; if(typeof(unsafeWindow)=='undefined') { unsafeWindow=window; }
if(typeof(GM_log)=='undefined') { GM_log=function(msg) { if((typeof(unsafeWindow.console)!='undefined') && (typeof(unsafeWindow.console.log)!='undefined')) { unsafeWindow.console.log(msg); } }; }
if(window.navigator.appName.match(/^opera/i) && typeof(window.opera)!='undefined') { gvar.isOpera=true; GM_log=window.opera.postError; } else { gvar.isOpera=false; }
//=============================== Useful Routines =========================================
// void show_alert(message :string[,display :int] ) => Log and display a message
// display: 0=console only / 1=top of document / 2=bottom of document
function show_alert(msg, display) {
if(arguments.callee.counter>=0) { arguments.callee.counter++; } else { arguments.callee.counter=0; }
GM_log('['+arguments.callee.counter+'] '+msg);
if(display==1 || display==2) {
warningelem=document.createElement('div');
warningelem.setAttribute("style","color:#FFFFFF; background:#FF8000; width:auto; text-align:center; font-size:24px; border: 3px solid #CC0088; margin:2px; background:#FF8800; color:#000000;");
warningelem.textContent=msg;
if(display==1) { document.body.insertBefore(warningelem, document.body.firstChild); }
else { document.body.appendChild(warningelem); }
}
}
function isDefined(x) { return !(x == null && x !== null); }
function isUndefined(x) { return x == null && x !== null; }
function removeElement(el) { el.parentNode.removeChild(el); }
function replaceElement(el,nel) { var elp=el.parentNode; var eln=el.nextSibling; elp.removeChild(el); elp.insertBefore(nel,eln); }
function user_select(element,value) {
var els = element.style;
if(!els) { return; }
if(isDefined(els.userSelect)) {els.userSelect=value;} // CSS3
else if (isDefined(els.MozUserSelect)) {els.MozUserSelect=value;} // Mozilla
else if (isDefined(els.webkitUserSelect)) {els.webkitUserSelect=value;} // WebKit
else if (isDefined(els.OUserSelect)) {els.OUserSelect=value;} // Opera
}
function getKeyCode(event) {
var key=event.keyCode;
if(gvar.isOpera) { if(key>96 && key<123) { key=key-32; } } // key.toUpperCase();
if(event.ctrlKey) { key=key+1000; }
if(event.shiftKey) { key=key+2000; }
if(event.altKey) { key=key+4000; }
if(event.metaKey) { key=key+8000; }
return key;
}
//============================== Storage routines ========================================
function sessionStorageType() {
var res=''; try { res=typeof(unsafeWindow.sessionStorage) } catch(e) { res='Error'; } // Catch Security error
return res;
}
function localStorageType() {
var res=''; try { res=typeof(unsafeWindow.localStorage) } catch(e) { res='Error'; } // Catch Security error
return res;
}
function globalStorageType() {
var res=''; try { res=typeof(unsafeWindow.globalStorage) } catch(e) { res='Error'; } // Catch Security error
return res;
}
function databaseStorageType() {
var res=''; try { res=typeof(unsafeWindow.openDatabase) } catch(e) { res='Error'; } // Catch Security error
return res;
}
function sessionStorageLength() {
var lg=0; try { lg=unsafeWindow.sessionStorage.length; } catch(e) { lg='Unreadable'; } // Catch Security error
return lg;
}
function localStorageLength() {
var lg=0; try { lg=unsafeWindow.localStorage.length; } catch(e) { lg='Unreadable'; } // Catch Security error
return lg;
}
function globalStorageLength() {
var lg=0; try { lg=unsafeWindow.globalStorage[location.hostname].length; } catch(e) { lg='Unreadable'; } // Catch Security error
return lg;
}
function databaseStorageLength() {
var lg=0;
for(var name in unsafeWindow) {
//show_alert(name+" "+unsafeWindow[name],1);
try { if(unsafeWindow[name]=="[object Database]") { lg+=1; } } catch(e) {} // Catch Security error
}
if(lg==0 && unsafeWindow.opera) { return 'Available'; }
return lg;
}
//=============================== Main functions =========================================
function keyPressed(event) {
var keyCode=getKeyCode(event);
if(keyCode==RESET_KEYCODE) {
resetPos();
refresh();
refresh_data();
gvar.infoBox.style.setProperty('display','block','');
}
}
function hideInfoBox(event) {
gvar.infoBox.style.setProperty('display','none','');
}
function downTitleInfoBox(event) {
if(event.button!=0) { gvar.moveM=false; return; }
gvar.offX=event.screenX-gvar.infoBox.offsetLeft;
gvar.offY=event.screenY-gvar.infoBox.offsetTop;
gvar.moveM=true;
}
function upTitleInfoBox(event) {
gvar.moveM=false;
}
function moveTitleInfoBox(event) {
if(gvar.moveM) {
gvar.infoBox.style.left=(event.screenX-gvar.offX)+'px';
gvar.infoBox.style.top =(event.screenY-gvar.offY)+'px';
gvar.infoBox.style.removeProperty('right');
gvar.infoBox.style.removeProperty('bottom');
}
}
function resetPos() {
gvar.infoBox.style.removeProperty('left');
gvar.infoBox.style.removeProperty('right');
gvar.infoBox.style.removeProperty('top');
gvar.infoBox.style.removeProperty('bottom');
switch(DEFAULT_POS) {
case 1: gvar.infoBox.style.setProperty('left' ,'3px',''); gvar.infoBox.style.setProperty('top' ,'3px',''); break;
default:
case 2: gvar.infoBox.style.setProperty('right','3px',''); gvar.infoBox.style.setProperty('top' ,'3px',''); break;
case 3: gvar.infoBox.style.setProperty('left' ,'3px',''); gvar.infoBox.style.setProperty('bottom','3px',''); break;
case 4: gvar.infoBox.style.setProperty('right','3px',''); gvar.infoBox.style.setProperty('bottom','3px',''); break;
}
}
function storageEvent(event) {
//show_alert('Storage Event');
refresh();
refresh_data();
if(SHOW_AT_CHANGE) { gvar.infoBox.style.setProperty('display','block',''); }
}
function refresh() {
function refreshStorage(ws,lgS,divS,divSitem,cbaf) {
if((ws=='object') || (cbaf && ws=='function')) {
if(lgS>=0) {
divSitem.style.setProperty('text-align','right','');
divSitem.style.setProperty('padding-right','6px','');
divSitem.textContent=lgS+' item(s)';
if(lgS>0) { divS.style.setProperty('background',COLOR_USED,''); } else { divS.style.setProperty('background',COLOR_NOT_USED,''); }
} else {
divSitem.style.setProperty('text-align','left','');
divSitem.style.setProperty('padding-right','0','');
divSitem.textContent=lgS;
if(lgS=='Available') {
divS.style.setProperty('background',COLOR_NOT_USED,'');
} else {
divS.style.setProperty('background',COLOR_PROTECTED,'');
}
}
} else {
divSitem.style.setProperty('text-align','left','');
divSitem.style.setProperty('padding-right','0','');
if(ws=='Error') {
divSitem.textContent='Protected';
divS.style.setProperty('background',COLOR_PROTECTED,'');
} else if(ws=='undefined') {
divSitem.textContent='Unavailable';
divS.style.setProperty('background',COLOR_UNAVAILABLE,'');
} else {
divSitem.textContent='Bad type';
divS.style.setProperty('background',COLOR_UNAVAILABLE,'');
}
}
}
// Show Data
refreshStorage(sessionStorageType() ,sessionStorageLength() ,gvar.divSS,gvar.divSSitem,false);
refreshStorage(localStorageType() ,localStorageLength() ,gvar.divLS,gvar.divLSitem,false);
refreshStorage(globalStorageType() ,globalStorageLength() ,gvar.divGS,gvar.divGSitem,false);
refreshStorage(databaseStorageType(),databaseStorageLength(),gvar.divDS,gvar.divDSitem,true);
}
//========================
function sessionStorageDisplayEvent(e) {
e.preventDefault();
storageDisplay(0);
}
function localStorageDisplayEvent(e) {
e.preventDefault();
storageDisplay(1);
}
function globalStorageDisplayEvent(e) {
e.preventDefault();
storageDisplay(2);
}
function storageDisplay(storageId) {
if(gvar.overlay!=null) { return; }
gvar.storageId=storageId; gvar.storage=null; gvar.name='N/A'; var lg='N/A'; var bg='#000000'; var title='';
switch(storageId) {
case 0:
lg=sessionStorageLength(); bg=COLOR_BG_SESSION; gvar.name='sessionStorage'; title=gvar.name+' [ this page ]';
if(lg>=0) { gvar.storage=unsafeWindow.sessionStorage; } else { lg='no'; }
break;
case 1:
var domain=location.protocol+'//'+location.hostname; if(location.port!='') { domain+=':'+location.port; }
lg=localStorageLength(); bg=COLOR_BG_LOCAL; gvar.name='localStorage'; title=gvar.name+' [ '+domain+'/* ]';
if(lg>=0) { gvar.storage=unsafeWindow.localStorage; } else { lg='no'; }
break;
case 2:
lg=globalStorageLength(); bg=COLOR_BG_GLOBAL; gvar.name='globalStorage'; title=gvar.name+' [ '+location.hostname+' ]';
if(lg>=0) { gvar.storage=unsafeWindow.globalStorage[location.hostname]; } else { lg='no'; }
break;
}
gvar.overlay = document.createElement('div');
gvar.overlay.setAttribute('style','position:fixed; top:0; bottom:0; left:0; right:0; height:100%; width:100%; background:'+bg+'; opacity:0.5; overflow:auto; z-index:'+(DIV_ZINDEX-2));
document.body.appendChild(gvar.overlay);
gvar.panel = document.createElement('div');
gvar.panel.setAttribute('style','position:fixed; top:8px; bottom:8px; left:0; right:0; margin-left:auto; margin-right:auto; width:800px; z-index:'+(DIV_ZINDEX-1)+'; background:'+bg+'; color:#FFFFFF; overflow:auto; font-family:'+FONT_ARIAL+'; font-size:15px; font-weight:normal; text-decoration:none; line-height:15px;');
var pdiv=document.createElement('div');
pdiv.setAttribute('style','position:absolute; left:0; right:0; padding:20px; padding-left:14px; padding-right:0px; text-align:left;');
gvar.panel.appendChild(pdiv);
// Title...
var tabElem=document.createElement('table');
tabElem.setAttribute('style','width:760px; border-collapse:collapse; border:0; margin:0; padding:0;');
var tr=document.createElement('tr');
var td1=document.createElement('td'); tr.appendChild(td1);
td1.setAttribute('style','border:0; margin:0; padding:0;');
var td2=document.createElement('td'); tr.appendChild(td2);
td2.setAttribute('style','width:100%; border:0; margin:0; padding:0;');
var td3=document.createElement('td'); tr.appendChild(td3);
td3.setAttribute('style','border:0; margin:0; padding:0;');
tabElem.appendChild(tr); pdiv.appendChild(tabElem);
var elem=document.createElement('input'); elem.setAttribute('type','button');
elem.setAttribute('style','width:80px; padding:4px; background: #C0C0C0 !important; color:#000000 !important; border-width:1px; cursor: pointer;');
elem.value='Reset';
elem.addEventListener('click', panel_clear, true);
if(gvar.storage==null) { elem.style.setProperty('visibility','hidden',''); }
td1.appendChild(elem);
var titleElem=document.createElement('div');
titleElem.setAttribute('style','padding:4px; background:transparent !important; color:#FFFFFF !important; text-align:center; font-size:20px;');
titleElem.textContent=title; td2.appendChild(titleElem);
elem=document.createElement('input'); elem.setAttribute('type','button');
elem.setAttribute('style','width:80px; padding:4px; background: #C0C0C0 !important; color:#000000 !important; border-width:1px; cursor: pointer;');
elem.value='Close';
elem.addEventListener('click', panel_close, true);
td3.appendChild(elem);
// Editor...
var newElem=document.createElement('div');
newElem.setAttribute('style','width:100%; margin-top:20px;');
var div=document.createElement('div');
div.setAttribute('style','position:relative; display:block; margin-top:3px; color:black; height:30px; font-family:'+FONT_ARIAL);
newElem.appendChild(div);
var divC=document.createElement('div');
divC.setAttribute('style','position:absolute; left:0px; top:0; width:26px; height:18px; padding:0px; text-align:center; font-size:9px; padding-top:4px; background:rgba(192,192,192,0.8); border:1px solid gray; cursor:pointer;');
divC.textContent='Clear';
div.appendChild(divC);
var div1=document.createElement('textarea');
div1.setAttribute('style','position:absolute; left:30px; top:0; width:'+(KEY_DIV_WIDTH+2)+'px; height:18px; padding:2px; margin:0px; margin-top:1px; border:0px; font-size:15px; background:rgba(255,255,255,0.75);');
div1.value='';
div.appendChild(div1);
var div2=document.createElement('textarea');
div2.setAttribute('style','position:absolute; left:'+(KEY_DIV_WIDTH+38)+'px; top:0; width:'+(704-KEY_DIV_WIDTH)+'px; height:18px; padding:2px; margin:0px; margin-top:1px; border:0px; font-size:15px; background:rgba(255,255,255,0.75);');
div2.value='';
div.appendChild(div2);
var divS=document.createElement('div');
divS.setAttribute('style','position:absolute; left:748px; top:0; width:24px; height:18px; padding:0px; text-align:center; font-size:9px; padding-top:4px; background:rgba(192,192,192,0.8); border:1px solid gray; cursor:pointer;');
divS.textContent='Save';
div.appendChild(divS);
newElem.appendChild(div);
pdiv.appendChild(newElem);
gvar.editKey=div1;
gvar.editData=div2;
divC.addEventListener('click', clear_Edit, true);
divS.addEventListener('click', save_Edit, true);
// Data...
gvar.dataElem=document.createElement('div');
gvar.dataElem.setAttribute('style','position:relative; left:0; right:0;');
pdiv.appendChild(gvar.dataElem);
document.body.appendChild(gvar.panel);
refresh_data();
}
function clear_Edit(e) {
e.preventDefault();
gvar.editKey.value='';
gvar.editData.value='';
}
function save_Edit(e) {
e.preventDefault();
switch(gvar.storageId) {
case 0: case 1: case 2:
gvar.storage.setItem(gvar.editKey.value,gvar.editData.value);
clear_Edit(e);
}
}
function fill_Edit(e) {
e.preventDefault();
var id=parseInt(e.target.textContent,10);
gvar.editKey.value=gvar.storage.key(id);
gvar.editData.value=gvar.storage.getItem(gvar.editKey.value);
}
function panel_close(e) {
e.preventDefault();
if(gvar.overlay!=null) { removeElement(gvar.overlay); gvar.overlay=null; removeElement(gvar.panel); gvar.panel=null; }
}
function panel_clear(e) {
e.preventDefault();
if(gvar.storage!=null) {
if(confirm('Clear all '+gvar.name+' data ?')) { gvar.storage.clear(); }
}
}
function refresh_data() {
if(!gvar.storage) { return; }
if(!gvar.dataElem) { return; }
var lg=0;
switch(gvar.storageId) {
case 0: lg=sessionStorageLength(); break;
case 1: lg=localStorageLength(); break;
case 2: lg=globalStorageLength(); break;
}
if(!(lg>=0)) { return; }
var newElem=document.createElement('div');
newElem.setAttribute('style','width:100%; margin-top:10px;');
var div=document.createElement('div');
div.setAttribute('style','position:relative; display:block; margin-top:3px;');
newElem.appendChild(div);
var div1=document.createElement('div');
div1.setAttribute('style','position:relative; left:0; top:0; width:24px; height:17px; padding:2px; text-align:center; background:rgba(255,255,255,0.4);');
div1.textContent='#';
div.appendChild(div1);
var div2=document.createElement('div');
div2.setAttribute('style','position:absolute; left:30px; top:0; width:'+KEY_DIV_WIDTH+'px; height:17px; padding:2px; padding-left:4px; background:rgba(255,255,255,0.4);');
div2.textContent='Key';
div.appendChild(div2);
var div3=document.createElement('div');
div3.setAttribute('style','position:absolute; left:'+(KEY_DIV_WIDTH+38)+'px; top:0; width:'+(702-KEY_DIV_WIDTH)+'px; height:17px; padding:2px; padding-left:4px; background:rgba(255,255,255,0.4);');
div3.textContent='Data';
div.appendChild(div3);
newElem.appendChild(div);
for(var h=0;h<lg;h++) {
var key=gvar.storage.key(h);
if(typeof key=='undefined') { key='<undefined>'; }
var data=gvar.storage.getItem(key);
if(typeof data=='undefined') { data='<undefined>'; }
var div=document.createElement('div');
div.setAttribute('style','position:relative; display:block; margin-top:3px;');
var div1=document.createElement('div');
div1.setAttribute('style','position:relative; left:0; top:0; width:24px; height:17px; text-align:right; padding:2px; background:rgba(255,255,255,0.2); font-size:13px; cursor:pointer;');
div1.textContent=h;
div.appendChild(div1);
var div2=document.createElement('div');
div2.setAttribute('style','position:absolute; left:30px; top:0; width:'+(KEY_DIV_WIDTH+2)+'px; height:17px; padding:2px; background:rgba(255,255,255,0.2); font-size:13px; overflow:hidden;');
div2.textContent=key;
div.appendChild(div2);
var div3=document.createElement('div');
div3.setAttribute('style','position:absolute; left:'+(KEY_DIV_WIDTH+38)+'px; top:0; width:'+(704-KEY_DIV_WIDTH)+'px; height:17px; padding:2px; background:rgba(255,255,255,0.2); font-size:13px; overflow:hidden;');
div3.textContent=data;
div.appendChild(div3);
var div4=document.createElement('div');
div4.setAttribute('style','position:absolute; left:748px; top:0; width:10px; height:15px; text-align:center; padding:2px; background:rgba(128,128,128,0.8); border:1px solid gray; color:#660000; font-weight:bold; cursor:pointer;');
div4.textContent='X';
div4.setAttribute('value',key);
div.appendChild(div4);
div4.addEventListener('click',deleteItem,true);
newElem.appendChild(div);
div1.addEventListener('click', fill_Edit, true);
}
replaceElement(gvar.dataElem,newElem);
gvar.dataElem=newElem;
}
function deleteItem(event) {
event.preventDefault();
if(!gvar.storage) { return; }
var key=event.target.getAttribute('value');
if(confirm('Delete '+key+' ?')) { gvar.storage.removeItem(key); }
}
/******************************************** License ******************************************************
*** Creative Commons 3.0 ***
*** by: BY-attribution (Requirement to acknowledge or credit the author "GIJoe") ***
*** nc: Non-Commercial (Use for commercial purpose is forbidden) ***
*** sa: Share Alike (Derivative works must be under the same or similar license to this one) ***
***********************************************************************************************************/
function main() {
// Check if html page with div or table or link...
var check=null; try { check=document.evaluate('//div',document,null,XPathResult.ANY_UNORDERED_NODE_TYPE,null).singleNodeValue; } catch(e) {}
if(!check) { try { check=document.evaluate('//table',document,null,XPathResult.ANY_UNORDERED_NODE_TYPE,null).singleNodeValue; } catch(e) {} }
if(!check) { try { check=document.evaluate('//a',document,null,XPathResult.ANY_UNORDERED_NODE_TYPE,null).singleNodeValue; } catch(e) {} }
if(!check) { return; }
// Create infoBox
var top1=DIV_HEIGHT+1; var htot=(DIV_HEIGHT+1)*5+1;
var infoBox=document.createElement('div');
infoBox.setAttribute('style','position:fixed; display:none; width:149px; height:'+htot+'px; opacity:'+DIV_OPACITY+'; right:3px; top:3px; background:'+COLOR_TITLE+'; color:'+COLOR_INFO_TEXT+'; white-space:nowrap; text-align:center; vertical-align:middle; overflow:auto; z-index:'+DIV_ZINDEX+'; font-family:'+FONT_ARIAL+' !important; font-size:15px; font-weight:normal; text-decoration:none; line-height:17px;');
var div5=document.createElement('div');
div5.setAttribute('style','position: absolute; display :block; height:'+DIV_HEIGHT+'px; top:0; left:0px; right:0px; border:1px solid gray; cursor: move; font-weight:bold; padding-right:'+DIV_HEIGHT+'px; color:'+COLOR_TITLE_TEXT);
div5.textContent='Storage Viewer';
user_select(div5,'none');
infoBox.appendChild(div5);
var div6=document.createElement('div');
div6.setAttribute('style','position: absolute; display :block; height:'+(DIV_HEIGHT-4)+'px; width:'+(DIV_HEIGHT-4)+'px; top:2px; right:2px; border:1px solid gray; cursor:pointer; background:'+COLOR_CLOSE+'; font-size:13px; line-height:14px; color:'+COLOR_CLOSE_TEXT);
div6.textContent='X';
user_select(div6,'none');
infoBox.appendChild(div6);
var divSS=document.createElement('div');
divSS.setAttribute('style','position: absolute; display :block; height:'+DIV_HEIGHT+'px; top:'+top1+'px; left:0; right:0; border:1px solid gray; cursor:pointer;');
var divSS1=document.createElement('div');
divSS1.setAttribute('style','position: absolute; display :block; height:'+DIV_HEIGHT+'px; top:0px; left:2px;');
divSS1.textContent='Session:';
divSS.appendChild(divSS1);
var divSS2=document.createElement('div');
divSS2.setAttribute('style','position: absolute; display :block; height:'+DIV_HEIGHT+'px; top:0px; right:0; width:86px; text-align:left;');
divSS2.textContent='N/A';
divSS.appendChild(divSS2);
infoBox.appendChild(divSS);
var divLS=document.createElement('div');
divLS.setAttribute('style','position: absolute; display :block; height:'+DIV_HEIGHT+'px; top:'+(top1*2)+'px; left:0; right:0; border:1px solid gray; cursor:pointer;');
var divLS1=document.createElement('div');
divLS1.setAttribute('style','position: absolute; display :block; height:'+DIV_HEIGHT+'px; top:0px; left:2px;');
divLS1.textContent='Local:';
divLS.appendChild(divLS1);
var divLS2=document.createElement('div');
divLS2.setAttribute('style','position: absolute; display :block; height:'+DIV_HEIGHT+'px; top:0px; right:0; width:86px; text-align:left;');
divLS2.textContent='N/A';
divLS.appendChild(divLS2);
infoBox.appendChild(divLS);
var divGS=document.createElement('div');
divGS.setAttribute('style','position: absolute; display :block; height:'+DIV_HEIGHT+'px; top:'+(top1*3)+'px; left:0; right:0; border:1px solid gray; cursor:pointer;');
var divGS1=document.createElement('div');
divGS1.setAttribute('style','position: absolute; display :block; height:'+DIV_HEIGHT+'px; top:0px; left:2px;');
divGS1.textContent='Global:';
divGS.appendChild(divGS1);
var divGS2=document.createElement('div');
divGS2.setAttribute('style','position: absolute; display :block; height:'+DIV_HEIGHT+'px; top:0px; right:0; width:86px; text-align:left;');
divGS2.textContent='N/A';
divGS.appendChild(divGS2);
infoBox.appendChild(divGS);
var divDS=document.createElement('div');
divDS.setAttribute('style','position: absolute; display :block; height:'+DIV_HEIGHT+'px; top:'+(top1*4)+'px; left:0; right:0; border:1px solid gray; cursor:default;');
var divDS1=document.createElement('div');
divDS1.setAttribute('style','position: absolute; display :block; height:'+DIV_HEIGHT+'px; top:0px; left:2px;');
divDS1.textContent='DB:';
divDS.appendChild(divDS1);
var divDS2=document.createElement('div');
divDS2.setAttribute('style','position: absolute; display :block; height:'+DIV_HEIGHT+'px; top:0px; right:0; width:86px; text-align:left;');
divDS2.textContent='N/A';
divDS.appendChild(divDS2);
infoBox.appendChild(divDS);
gvar.infoBox=infoBox; gvar.divSS=divSS; gvar.divSSitem=divSS2; gvar.divLS=divLS; gvar.divLSitem=divLS2;
gvar.divGS=divGS; gvar.divGSitem=divGS2; gvar.divDS=divDS; gvar.divDSitem=divDS2;
document.body.appendChild(infoBox);
gvar.moveM=false;
div5.addEventListener('mousedown',downTitleInfoBox, true);
window.addEventListener('mouseup',upTitleInfoBox, true);
window.addEventListener('mousemove',moveTitleInfoBox, true);
div6.addEventListener('click', hideInfoBox, true);
divSS.addEventListener('click', sessionStorageDisplayEvent, true);
divLS.addEventListener('click', localStorageDisplayEvent , true);
divGS.addEventListener('click', globalStorageDisplayEvent , true);
if(gvar.isOpera) {
window.addEventListener('keypress',keyPressed,true);
} else {
window.addEventListener('keydown',keyPressed,true);
}
resetPos();
var used=false;
if(SHOW_AT_START>2) { gvar.infoBox.style.setProperty('display','block',''); }
else if(SHOW_AT_START>1 && (sessionStorageLength()>=0 || localStorageLength()>=0)) { gvar.infoBox.style.setProperty('display','block',''); }
else if(SHOW_AT_START>0 && (sessionStorageLength()>0 || localStorageLength()>0 )) { gvar.infoBox.style.setProperty('display','block',''); }
unsafeWindow.addEventListener('storage', storageEvent, true);
refresh();
}
function waitForReady(callback) {
var docState=null; try { docState=unsafeWindow.document.readyState; } catch(e) { docState=null; }
if(docState) {
if(docState!='complete') {
GM_log('Document not loaded ('+docState+'), waiting...',0);
window.setTimeout(waitForReady,150,callback); return;
} else { GM_log('Document loaded ('+docState+'), launching...',0); }
}
callback();
}
waitForReady(main);
})();
// ]]>