function setTextSize(chgsize, rs) 
{
    var startSize;
    var newSize;

    if (!document.getElementsByTagName) {
      return;
    }
    
    startSize = parseInt(getDocTextSize());
    
    if (!startSize) {
      startSize = 9;
    }
    
    switch (chgsize) {
        case '+':
          newSize = startSize + 1;
          break;
        case '-':
          newSize = startSize - 1;
          break;
        case '=':
          if (rs) {newSize = rs;} else {newSize = 9;}
          break;
        
        default:
          newSize = parseInt(readCookie("textsize"));
          if (!newSize) {
            newSize = startSize;
          }
          break;
    }
    
    if (newSize < 7)  {
      newSize = 7;
    }
    
    newSize += 'pt';
    
    document.getElementsByTagName('html')[0].style.fontSize = newSize;
    document.getElementsByTagName('body')[0].style.fontSize = newSize;
    
    createCookie("textsize", newSize, 365);
}

function getDocTextSize() 
{
    if (!document.getElementsByTagName) {
      return 0;
    }
    
    var size = 0;
    var body = document.getElementsByTagName('body')[0];
    
    if (body.style && body.style.fontSize) {
      size = body.style.fontSize;
    } else if (typeof(getComputedStyle) != 'undefined') {
      size = getComputedStyle(body,'').getPropertyValue('font-size');
    } else if (body.currentStyle) {
      size = body.currentStyle.fontSize;
    }
    return size;
}

function setStyleSheet(newtitle) 
{
    // this function exists solely to 
    // distinguish when the user chooses a new
    // theme. IE does not properly reflow the page
    // when a new theme is chosen and we must force
    // a reload when IE users choose a new theme.
    
    setStyleSheetInternal(newtitle);
    if (navigator.userAgent.indexOf('MSIE') != -1 && 
        !window.opera && 
        navigator.product != 'Gecko')
    {
      history.go(0);
    }
}

function setStyleSheetInternal(newtitle) 
{
    if (!document.getElementsByTagName) {
        return;
    }
    
    var i;
    var savedtitle = '';
    var links = document.getElementsByTagName("link");
    
    if (!newtitle) {
        newtitle = savedtitle = readCookie("textsize");
    }
    
    if (!newtitle) {
        newtitle = getPreferredStyleSheet();
    }
    
    var bgcol = readCookie("bgcolor");
    setColor(bgcol);
    
    var activesheet = null;
    for (i = 0; i < links.length; i++)  {
        var a = links[i];
        var rel = a.getAttribute('rel');
        var title = a.getAttribute('title');
        
        if (rel.indexOf("style") != -1 && title)  {
            a.disabled = true;
            if (title == newtitle) {
                activesheet = a;
            }
        }
    }
    if (activesheet) {
      activesheet.disabled = false;
    }
    if (newtitle != savedtitle) {
      createCookie("textsize", newtitle, 365);
    }
}

function getActiveStyleSheet() 
{
    if (!document.getElementsByTagName) {
      return null;
    }
    
    var i;
    var links = document.getElementsByTagName("link");
    
    for(i = 0; i < links.length; i++)  {
        var a = links[i];
        var rel = a.getAttribute('rel');
        var title = a.getAttribute('title');
        
        if (rel.indexOf("style") != -1 && title && !a.disabled)  {
            return title;
        }
    }
    return null;
}

function getPreferredStyleSheet() 
{
    if (!document.getElementsByTagName) {
        return null;
    }
    
    var i, a;
    var links = document.getElementsByTagName("link");
    
    for (i = 0; i <  links.length; i++) {
        a = links[i];
        var rel = a.getAttribute('rel');
        var title = a.getAttribute('title');
        
        if (rel.indexOf("style") != -1 && rel.indexOf("alt") == -1 && title) {
          return title;
        }
    }
    return null;
}

function createCookie(name,value,days) 
{
     
    var cookie = name + "=" + value + ";";
    
    if (days)  {
      var date = new Date();
      date.setTime(date.getTime()+(days*24*60*60*1000));
      cookie += " expires=" + date.toGMTString() + ";";
    }
    cookie += " path=/";
    
    document.cookie = cookie;
}

function readCookie(name) 
{
    
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    
    for(var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1, c.length);
        }
        
        if (c.indexOf(nameEQ) == 0) {
            return c.substring(nameEQ.length,c.length);
        }
    }
    return null;
}
/*
function setTheme()
{
    checkForUpgrade();
    setStyleSheetInternal();
    setTextSize();
    return true;
}
*/
function init() 
{
    setStyleSheetInternal();
}

function setColor(color)
{
    var startSize;
    var newSize;

    if (!document.getElementsByTagName) {
        return;
    }
    if (color == null || !color.match(/^[a-f0-9]{6}$/)) {
        return;
    }

    startSize = parseInt(getDocTextSize());

    document.getElementsByTagName('html')[0].style.backgroundColor = '#' + color;
    document.getElementsByTagName('body')[0].style.backgroundColor = '#' + color;

    createCookie("bgcolor", color, 365);
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}
