User:Quarl/wikistate.js

// User:Quarl/wikistate.js - utilities to keep track of session state

// Session state persists THROUGHOUT THIS SESSION, on THIS PAGE ONLY

// * Currently works with back/forward/refresh, but not with navigating anew.

// Usage: //    wikistate.set('foo', 123); //    alert("foo = " + wikistate.get('foo'));

// quarl 2006-02-05 initial version

//

document.write(''+              '  ');

wikistate = new Object;

wikistate._load = function { wikistate._dataNode = document.getElementById('wikiState_data'); wikistate._dataString = wikistate._dataNode.value || ''; wikistate._data = wikistate._deserialize(wikistate._dataString) || {}; }

wikistate.save = function { wikistate._dataString = wikistate._serialize(wikistate._data); wikistate._dataNode.value = wikistate._dataString; }

wikistate.get = function(varname) { return wikistate._data[varname]; }

wikistate.set = function(varname, value, nosave) { // if (!(value instanceof String)) { //    alert("wikistate error: must be a string (error 5dc01aeb-2fc1-44ca-a0bd-359ec9210f46)"); //    return; // }   wikistate._data[varname] = value; if (!nosave) wikistate.save; }

wikistate._serialize = function(dict) { return dict.toSource; // var r = ''; // for (var v in dict) { //    var value = dict[r]; //    if (!(value instanceof String)) continue; //    r += value+':'+string_quote_escape(value); // } }

wikistate._deserialize = function(s) { // since only we can write to the form data, should be safe to evaluate // it. return eval(s); }

$(wikistate._load);

//