// ThemeSet.js | ver 1.0
// JavaScript Site Theme Setter
//
// Originally inspired by the persistant font settings in sites such as
// FanFiction.net and FanficAuthors.net
//
// Programming resources:
// The free tutorials available at W3Schools
// http://www.w3schools.com/
// The how-to at Alternative Style: Working With Alternate Style Sheets by Paul Sowden
// http://www.alistapart.com/stories/alternate/
// Browser compatablility issues from QuirksMode by Peter-Paul Koch
// http://www.quirksmode.org/
// And many, many thanks go to Google for performing so many, many searches!
// http://www.google.com/


// this first part isn't a function; it runs as soon as the file loads
// downside: page display is held up until this module loads

if(document.all && !document.getElementById) 
{
  document.getElementById = function(id) 
  {
    return document.all[id];
  };                         // this is to allow this script to work on IE4
};                           // this is also untested  


if(document.getElementById)  // a test to see if later functions will work
{
  var today=new Date();
  var EndDate=new Date(today.getTime()+365*24*60*60*1000); // now plus one year


// this part checks to see if the theme is already stored in a cookie
// if it is, then that value is used instead
// if not, then it's supposed to detect the browser width and set the theme accordingly

  if(GetCookie('ValSiteTheme').length>0)
  {
    var SiteTheme=GetCookie('ValSiteTheme');
  } else {
    var myWidth=0, myHeight=0;
    if(typeof(window.innerWidth)=='number') {
      //Non-IE
      myWidth=window.innerWidth;
      myHeight = window.innerHeight;
    } else if(document.documentElement&&(document.documentElement.clientWidth)) {
      //IE 6+ in 'standards compliant mode'
      myWidth=document.documentElement.clientWidth;
      myHeight=document.documentElement.clientHeight;
    } else if(document.body&&(document.body.clientWidth)) {
      //IE 4 compatible
      myWidth=document.body.clientWidth;
      myHeight=document.body.clientHeight;
    }
    var SiteTheme='Cacophony';
    if(myWidth>myHeight){SiteTheme='Willow';};
    if(myWidth<650){SiteTheme='LightPlain';};
  };
  setCurrentTheme(SiteTheme);

// the code is written in JavaScript because it requires JavaScript to work
// if the browser can't use JavaScript, no useless controls are displayed
// they won't even see an empty space

  WriteThemeSelector();

};


// end of the execute-on-load segment
// below are functions


function WriteThemeSelector() // the theme options are written to the HTML
{ var sel;

document.write("<select name=themechanger onChange=ReloadIFrame(value)>");
sel='';
if(SiteTheme=='Willow'){sel=' selected="selected"'};
document.write("<option  value='Willow'"+sel+">Under the Willow&nbsp;</option>");
sel='';
if(SiteTheme=='WhedonisticT'){sel=' selected="selected"'};
document.write("<option  value='WhedonisticT'"+sel+">Whedonistic Tendencies&nbsp;</option>");
sel='';
if(SiteTheme=='Cacophony'){sel=' selected="selected"'};
document.write("<option  value='Cacophony'"+sel+">Cacophony&nbsp;</option>");
sel='';
if(SiteTheme=='DarkPlain'){sel=' selected="selected"'};
document.write("<option  value='DarkPlain'"+sel+">Plain and Dark&nbsp;</option>");
sel='';
if(SiteTheme=='LightPlain'){sel=' selected="selected"'};
document.write("<option  value='LightPlain'"+sel+">Plain and Light&nbsp;</option>");

document.write("</select>");
};


function GetCookieValue(offset)
{
  var endstr=document.cookie.indexOf(";",offset);
  if(endstr==-1){endstr=document.cookie.length;};
return unescape(document.cookie.substring(offset,endstr));
};

function GetCookie(name)
{
  var arg=name+"=";
  var alen=arg.length;
  var clen=document.cookie.length;
  var i=0;
  while(i<clen)
  {
    var j=i+alen;
    if(document.cookie.substring(i,j)==arg){return GetCookieValue(j);};
    i=document.cookie.indexOf(" ",i)+1;
    if(i==0){break;};
  };
  return-1;
};

function SetCookie(WhichCookie,CookieValue)
{
  document.cookie=WhichCookie+"="+escape(CookieValue)+";path=/;expires="+EndDate.toGMTString();
};

function ReloadIFrame(SiteTheme) 
{
  document.getElementById("ViewWindow").src=document.getElementById("ViewWindow").src;
  setCurrentTheme(SiteTheme);
}

function setCurrentTheme(SiteTheme)
{
  var i,a;
  var BackImag1='';
  var BackImag3='';
  var BannImage='';

  Imageset:
  switch(SiteTheme){
  case 'Willow':
    BackImag1='images/Willow.jpg';
    switch(document.title){
    case 'Bloodletting':
      BannImage='images/Willow_bloodletting.png';
      break Imageset;
    case 'Flood':
      BannImage='images/Willow_flood.png';
      break Imageset;
    case 'Lateralus':
      BannImage='images/Willow_lateralus.png';
      break Imageset;
    case 'Another Thirteen Steps':
      BannImage='images/Willow_steps.png';
      break Imageset;
    case 'Short Stories':
      BannImage='images/Willow_short.png';
      break Imageset;
    case 'Links':
      BannImage='images/Willow_links.png';
      break Imageset;
    default:
      BannImage='images/Willow_main.png';
      break Imageset;
    }
    break;
  case 'DarkPlain':
    switch(document.title){
    case 'Bloodletting':
      BannImage='images/default_bloodletting.png';
      break Imageset;
    case 'Flood':
      BannImage='images/default_flood.png';
      break Imageset;
    case 'Lateralus':
      BannImage='images/default_lateralus.png';
      break Imageset;
    case 'Another Thirteen Steps':
      BannImage='images/default_steps.png';
      break Imageset;
    case 'Short Stories':
      BannImage='images/default_short.png';
      break Imageset;
    case 'Links':
      BannImage='images/default_links.png';
      break Imageset;
    default:
      BannImage='images/default_main.png';
      break Imageset;
    }
    break;
  case 'LightPlain':
    switch(document.title){
    case 'Bloodletting':
      BannImage='images/default_bloodletting.png';
      break Imageset;
    case 'Flood':
      BannImage='images/default_flood.png';
      break Imageset;
    case 'Lateralus':
      BannImage='images/default_lateralus.png';
      break Imageset;
    case 'Another Thirteen Steps':
      BannImage='images/default_steps.png';
      break Imageset;
    case 'Short Stories':
      BannImage='images/default_short.png';
      break Imageset;
    case 'Links':
      BannImage='images/default_links.png';
      break Imageset;
    default:
      BannImage='images/default_main.png';
      break Imageset;
    }
    break;
  case 'Cacophony':
    BackImag1='images/Cacophony.jpg';
    switch(document.title){
    case 'Bloodletting':
      BannImage='images/Cacophony_bloodletting.png';
      break Imageset;
    case 'Flood':
      BannImage='images/Cacophony_flood.png';
      break Imageset;
    case 'Lateralus':
      BannImage='images/Cacophony_lateralus.png';
      break Imageset;
    case 'Another Thirteen Steps':
      BannImage='images/Cacophony_steps.png';
      break Imageset;
    case 'Short Stories':
      BannImage='images/Cacophony_short.png';
      break Imageset;
    case 'Links':
      BannImage='images/Cacophony_links.png';
      break Imageset;
    default:
      BannImage='images/Cacophony_main.png';
      break Imageset;
    }
    break;
  case 'WhedonisticT':
    BackImag1='images/wt_background.jpg';
    BackImag3='images/wt_banner_rs.png';
    switch(document.title){
    case 'Bloodletting':
      BannImage='images/wt_banner_bloodletting.png';
      break Imageset;
    case 'Flood':
      BannImage='images/wt_banner_flood.png';
      break Imageset;
    case 'Lateralus':
      BannImage='images/wt_banner_lateralus.png';
      break Imageset;
    case 'Another Thirteen Steps':
      BannImage='images/wt_banner_steps.png';
      break Imageset;
    case 'Short Stories':
      BannImage='images/wt_banner_short.png';
      break Imageset;
    case 'Links':
      BannImage='images/wt_banner_links.png';
      break Imageset;
    default:
      BannImage='images/wt_banner_main.png';
      break Imageset;
    }
    break;
  case 'Barebones':
    BannImage='';
    break;
}

  SetCookie('ValSiteTheme',SiteTheme);
  document.getElementById("back1").src=BackImag1;
  document.getElementById("back3").src=BackImag3;
  document.getElementById("banner").src=BannImage;
  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")==SiteTheme){a.disabled=false;};
      }; // end if
    }; // end for
};
