// ----------------------------------------------
// StyleSwitcher functions written by Paul Sowden
// http://www.idontsmoke.co.uk/ss/
// - - - - - - - - - - - - - - - - - - - - - - -
// For the details, visit ALA:
// http://www.alistapart.com/stories/alternate/

// modified by Michiel Dethmers, tincan ltd to include the option
// for textonly

function setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) {a.disabled = false; }
    }
  }
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  return null;
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}

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

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 rememberFontSize(divname,fontsize) {
  var cookie = readCookie("fontsize");
  var cookieout = '';
  if (cookie) {
    var divs = cookie.split('~');
    for (var i=0; i<divs.length;i++) {
      var pairs = divs[i].split('|');
      if (pairs[0] == divname) {
        cookieout += divname+'|'+fontsize+'~';
      } else if (pairs[0] && pairs[0] != 'undefined') {
        cookieout += pairs[0]+'|'+pairs[1]+'~';
      }
    }
  } else {
    cookieout = divname+'|'+fontsize+'~';
  }
  createCookie('fontsize',cookieout,365);
}

function setFontSize(cookieval) {
  var divs = cookieval.split('~');
  for (var i=0; i<divs.length;i++) {
    var pairs = divs[i].split('|');
    var div = document.getElementById(pairs[0]);
    if (div) {
      div.style.fontSize = pairs[1];
    }
  }
}

function increasefont(divname,step) {
  if (!step) { step = 20; }
  var div = document.getElementById(divname);
  if (!div) return;
  var fontsize = div.style.fontSize;
  if (!fontsize) {
    fontsize = "100%";
  }
  fontsize = parseInt(fontsize);
  fontsize += step;
  if (fontsize > 300) {
    //alert('Now you\'re being silly, that\'s really too big\n\n-- powered by the Webbler, http://www.webbler.org --');
    fontsize = 300;
  }
  fontsize += '%';
  rememberFontSize(divname,fontsize);
  div.style.fontSize = fontsize;
}

function keypressincreasefont(e,divname,step) {
  var keynum = keypressed(e);
  // only activate on space or return
  if (keynum == 13 || keynum == 32) {
    return increasefont(divname,step);
  }
  return true;
}

function defaultfont(divname) {
  var fontsize = "100%";
  var div = document.getElementById(divname);
  if (!div) return;
  rememberFontSize(divname,fontsize);
  div.style.fontSize = fontsize;
}

function keypressdefaultfont(e,divname) {
  var keynum = keypressed(e);
  // only activate on space or return
  if (keynum == 13 || keynum == 32) {
    return defaultfont(divname);
  }
  return true;
}

function setfont(divname,fontsize) {
  var div = document.getElementById(divname);
  if (!div) return;
  rememberFontSize(divname,fontsize);
  div.style.fontSize = fontsize;
}

function decreasefont(divname,step) {
  var cookie = readCookie("fontsize");
  if (!step) { step = 20; }
  var div = document.getElementById(divname);
  if (!div) return;
  var fontsize = div.style.fontSize;
  if (!fontsize) {
    fontsize = "100%";
  }
  fontsize = parseInt(fontsize);
  fontsize -= step;
  if (fontsize < 50) {
    //alert('I cannot believe you can still read that\n-- powered by the Webbler, http://www.webbler.org --');
    fontsize = 50;
  }
  fontsize += '%';
  rememberFontSize(divname,fontsize);
  div.style.fontSize = fontsize;
}

function keypressdecreasefont(e,divname,step) {
  var keynum = keypressed(e);
  // only activate on space or return
  if (keynum == 13 || keynum == 32) {
    return decreasefont(divname,step);
  }
  return true;
}

function keypressed(e) {
  var keynum;
  var keychar;
  
  if(window.event) { // IE
    keynum = e.keyCode;
  } else if(e.which) { // Netscape/Firefox/Opera
    keynum = e.which;
  } else {
    keynum = e.keyCode;
  }
  return keynum;
}

function keypressreturn(e) {
  var keynum = keypressed(e);
  // return false on return and space
  if (keynum == 13 || keynum == 32) {
    return false;
  }

  return true;
}

function keypresstextonly(e) {
  var keynum = keypressed(e);
  // only activate on space or return
  if (keynum == 13 || keynum == 32) {
    return textonly();
  }
  return true;
}

function textonly(){
  var cookie = readCookie("textonly");
  var flip = cookie != 'yes';
  try{
    stylesheets=this.document.styleSheets;
    for(i=0;i<stylesheets.length;i++)
      stylesheets[i].disabled = flip;
    createCookie('textonly',flip ? 'yes':'no',365);
  }
  catch(m){
  }
  var title = cookie ? cookie : getPreferredStyleSheet();
  var grdiv = document.getElementById('graphicsversion');
  if (grdiv) {
    if (flip) {
      grdiv.style.display = "block";
    } else {
      grdiv.style.display = "none";
    }
  }
  setActiveStyleSheet(title);
}

function toggleflash(){
  var cookie = readCookie("useflash");
  var flashoff = cookie == 'no';
  createCookie('useflash',flashoff ? 'yes':'no',365);
  setflash();
}

function setflash() {
  var cookie = readCookie("useflash");
  var flashoff = cookie == 'no';
//   if (flashoff) alert("off"); else alert("on");
  try{
    for (var i=0;i<flashobjects.length;i++) {
      var fl = document.getElementById(flashobjects[i]);
      var img = document.getElementById(flashobjects[i]+'altimage');
      if (flashoff) {
        if (fl) fl.style.display = "none";
        if (img) img.style.display = "block";
      } else {
        if (fl) fl.style.display = "block";
        if (img) img.style.display = "none";
      }
    }
  }
  catch(m){
  }
  createCookie('useflash',flashoff ? 'no':'yes',365);
}

function printfriendly() {
  removeimages();
  textonly();
}

function removeimages(){
  try{
    images=this.document.images;
    len=images.length;
    if(len>0){
      for(q=0;q<len;q++) {
        image=images[q];
        span=this.document.createElement('span');
        if(image) imagealt=image.attributes.getNamedItem('alt');
        alttext='[!]';
        bgcolor='#f00';
        if(imagealt){
          alttext=image.alt;
          bgcolor='#ff0'
        }
        span.style.color='#000';
        span.style.backgroundColor=bgcolor;
        replacement=this.document.createTextNode(alttext);
        span.appendChild(replacement);
        image.parentNode.replaceChild(span,image);
        if(len!=images.length)q--;
      }
    }
  }catch(m){}
}

function fontChangeInit() {
  var cookie = readCookie("style");
  var textonly = readCookie("textonly");
  var fontsize = readCookie("fontsize");
  if (fontsize) {
    setFontSize(fontsize);
  }
  if (textonly == 'yes') {
    stylesheets=document.styleSheets;
    for(i=0;i<stylesheets.length;i++)
      stylesheets[i].disabled = true;
  } else {
    var title = cookie ? cookie : getPreferredStyleSheet();
    setActiveStyleSheet(title);
  }
  setflash();
}
addWebblerLoadEvent(fontChangeInit);

if (!flashobjects) {
  var flashobjects = new Array();
}

function saveStyleChoice() {
  var title = getActiveStyleSheet();
  createCookie("style", title, 365);
}
addWebblerUnloadEvent(saveStyleChoice);



