//if (typeof(StyleToggler) == "undefined") {
//  StyleToggler = new Object(); 
//}

function StyleToggler(id, cssTitles, triggerElements) {
    this.id = id;
    this.cookieName = "StyleToggler-" + id;
    this.init(cssTitles, triggerElements);
}

StyleToggler.prototype.init = function(cssTitles, triggerElements) {

  this.stylesEnabled = this.readCookie(this.cookieName) == "true";
  
  // Build the list of stylesheet objects to toggle
  if (typeof(cssTitles) == "string") {
    cssTitles = [cssTitles];
  }
  this.styleSheets = [];
  for (var i = 0; i < cssTitles.length; i++) {
    for (var j = 0; j < document.styleSheets.length; j++) {
      if (cssTitles[i] == document.styleSheets[j].title) {
        this.styleSheets.push(document.styleSheets[j]);
        document.styleSheets[j].disabled = ! this.stylesEnabled;
      }
    }
  }

  // Enable trigger elements (buttons, etc) to toggle styles when clicked
  var toggler = this;
  if (typeof(triggerElements) == "string") {
    triggerElements = [triggerElements];
  }
  for (var i = 0; i < triggerElements.length; i++) {
    var trigger = document.getElementById(triggerElements[i]);
    if (trigger == null) {
      throw "StyleToggler: trigger element \"" + triggerElements[i] + "\" not found.";
    }
    trigger.onclick = function() { toggler.toggle(); }
  }
}

StyleToggler.prototype.toggle = function() {
  this.stylesEnabled = ! this.stylesEnabled;
  for (var i = 0; i < this.styleSheets.length; i++) {
    this.styleSheets[i].disabled = ! this.stylesEnabled;
  }
  this.createCookie(this.cookieName, this.stylesEnabled ? "true" : "false");
}

StyleToggler.prototype.cookieName = "StyleToggler";


// Cookie fns borrowed from http://www.quirksmode.org/js/cookies.html

StyleToggler.prototype.createCookie = function(name,value,days) {
  var expires;
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    expires = "; expires="+date.toGMTString();
  }
  else {
    expires = "";
  }
  document.cookie = name+"="+value+expires+"; path=/";
}

StyleToggler.prototype.readCookie = function(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;
}

StyleToggler.prototype.eraseCookie = function(name) {
  this.createCookie(name,"",-1);
}
