function fontSizer (defaultSize,cookieName) {
  if (!document.getElementById) return;
  var d = document, t = this;
  t.defaultSize = defaultSize;
  t.cookieName = cookieName;
  t.minSize = 0;
  t.maxSize = 6;
  if ((t.defaultSize < t.minSize) && (t.defaultSize > t.maxSize))
    t.defaultSize = 2;
  t.currentSize = t.defaultSize;
  t.sizeNames = new Array('xx-small','x-small','small','medium',
    'large','x-large','xx-large');
  t.tagsToChange =new Array('div','td','th','p','tr');
  t.init = function (item) {
    t.setFontSize(item,getCookie(t.cookieName))
  };
  t.adjust = function (item,adjustment) {
    t.setFontSize(item,Number(t.currentSize)+Number(adjustment))
  };
  t.reset = function (item) {
    t.setFontSize(item,t.defaultSize)
  };
  t.setFontSize = function (item,newSize) {
    var itemElement = null, itemTags, i, j;
    if (isNaN(newSize)) newSize = t.defaultSize
    else if (newSize < t.minSize) newSize = t.minSize
    else if (newSize > t.maxSize) newSize = t.maxSize;
    t.currentSize = newSize;
    setCookie(t.cookieName,newSize);
    if (!(itemElement = d.getElementById(item)))
      itemElement = d.getElementsByTagName(item)[0];
    itemElement.style.fontSize=t.sizeNames[newSize];
    for (i=0;i<t.tagsToChange.length;i++) {
      itemTags = itemElement.getElementsByTagName(t.tagsToChange[i]);
      for (j=0;j<itemTags.length;j++)
        itemTags[j].style.fontSize=t.sizeNames[newSize];
    }
  }
}