Code:
var fontSize = (function(global) {
var cookieName = 'fontSize',
cookieLifetime = 7, /* In days. */
cookiePath = '/',
data = new Hashtable(),
defaultOrdinal = 2,
spectrum = ['xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'],
tags = ['div', 'td', 'p'],
_h, _i;
function Pair(ordinal, literal) {
this.ordinal = ordinal; this.literal = literal;
}
Pair.toString = function() {
return '{ordinal=' + this.ordinal + ', literal=' + this.literal + '}';
};
if(cookie.isSupported()) {
_h = global.onload;
global.onload = function() {
var c = cookie.get(cookieName);
if(c && (c = c.match(/[^,{ ]+=\{[^}]+\}/g))) {
for(var i = 0, n = c.length, l, t, v; i < n; ++i) {
if((v = /([^=]+)=\{ordinal=(\d+), literal=([^}]*)\}/.exec(c[i ]))) {
data.put((t = v[1]), new Pair(v[2], '');
if((l = v[3])) {_i.set(t, l);}
}
}
}
if(_h) {global.onload = _h; global.onload();}
};
}
return (_i = {
decrease : function(target, delta) {var t = data.get(target);
if(!delta || ('number' != typeof delta)) {delta = 1;}
this.set(target, ((t && t.ordinal) || defaultOrdinal) - delta
+ spectrum.length);
},
increase : function(target, delta) {var t = data.get(target);
if(!delta || ('number' != typeof delta)) {delta = 1;}
this.set(target, ((t && t.ordinal) || defaultOrdinal) + delta
+ spectrum.length);
},
set : function(target, value) {
var t = data.get(target) || new Pair(defaultOrdinal, ''),
element;
switch(typeof value) {
case 'number':
value = spectrum[current = value % spectrum.length];
data.put(target, new Pair(value, ''));
break;
case 'string':
data.put(target, new Pair(data.get(target).ordinal, value));
break;
default: return;
}
if(document.getElementById && (element = document.getElementById(target))
&& element.getElementByTagName)
{
cookie.put(cookieName, data.toString(), cookieLifetime, cookiePath);
if(element.style) {element.style.fontSize = value;}
for(var i = 0, m = tags.length, c; i < m; ++i) {
c = element.getElementByTagName(tags[i ]);
for(var j = 0, n = c.length, s; j < n; ++j) {
if((s = c[j].style)) {s.fontSize = value;}
}
}
}
}
});
})(this);
The
Bookmarks