﻿/****************************************
* JavaScript: Illinois Valley News
* BasedOn: 2006.02.22 By: Paul Snowden
* Created: 2006.08.30 By: Lee Eschen
*	Version: 2007.12.31	No:	1.0.0
* Updated: 2008.04.02 By: Lee Eschen
* Changed: Cleanup
*	KNOWN BUGS ****************************
*	IE6:	Expands but doesn't change font size
*	IE7:	Expands but doesn't change font size
******************************************************
* From Paul Sowden"s JavaScript switcher detailed on:
*	http://www.alistapart.com/articles/alternate/
*****************************************************/

/* Functions */

function putCookie(cookieName,cookieValue,numDays)
{
	var date = new Date();
	var cookieExpires;
  if (numDays)
  {
    date.setTime(date.getTime()+(numDays*24*60*60*1000));
    cookieExpires = date.toGMTString();
  }
  else
  {
  	cookieExpires = "";
  }
  document.cookie = cookieName + "=" + cookieValue + ";expires=" + cookieExpires + ";path=/" ;
}

function getCookie(cookieName)
{
	var i = 0;
	var cookieArray = null, cookieString = null;
  var nameEQ = cookieName + "=";
  var styleSheetName = "";
  cookieArray = document.cookie.split(";");
  for( i=0; i < cookieArray.length; i++ )
  {
    cookieString = cookieArray[i];
    while (cookieString.charAt(0) == " ")
    {
    	cookieString = cookieString.substring(1,cookieString.length);/* remove leading spaces */
    }
    if (cookieString.indexOf(nameEQ) === 0)
    {
    	styleSheetName = cookieString.substring(nameEQ.length,cookieString.length);/* get stylesheet name */
    	return styleSheetName;
    }
  }
  return null;
}

function getPreferredStyleSheet()
{
	var i = 0;
	var linkRel = "";
	var linkTitle = "";
	var linkMedia = "";
	var linkDisab = false;
	var linkStyle = null;
	var linkArray = document.getElementsByTagName("link");
  for(i=0; (linkStyle = linkArray[i]); i++)
	{
		linkRel   = linkStyle.getAttribute("rel");
		linkTitle = linkStyle.getAttribute("title");
		linkMedia = linkStyle.getAttribute("media");
		linkDisab = linkStyle.getAttribute("disabled");
    if ( ( linkRel.match(/(^| )stylesheet( |$)/) )
	   	&& ( ! linkRel.match(/(^| )alternate( |$)/) )
			&& ( linkMedia != "print" )
			&& ( linkTitle ) )
		{
			return linkTitle;
		}
  }
  return null;
}

function setActiveStyleSheet(newTitle)
{
	var i = 0;
	var success = false;
	var linkRel = "";
	var linkTitle = "";
	var linkMedia = "";
	var linkDisab = false;
	var linkStyle = null;
	var linkArray = document.getElementsByTagName("link");
	for(i=0; (linkStyle = linkArray[i]); i++)
	{
		linkRel   = linkStyle.getAttribute("rel");
		linkTitle = linkStyle.getAttribute("title");
		linkMedia = linkStyle.getAttribute("media");
		linkDisab = linkStyle.getAttribute("disabled");
		if ( ( linkRel.match(/(^| )stylesheet( |$)/) )
			&& ( linkMedia != "print" )
			&& ( linkTitle ) )
		{
			linkStyle.disabled = true;
			if ( linkTitle == newTitle )
			{
				linkStyle.disabled = false;
				putCookie("stylesheet", newTitle, 365);
				success = true;
			}
		}
	}
	return success;
}

function styleSheetRequest(event)
{
	var targetElement = null;
	var newTitle = "";
	var success = false;
	if ( typeof event == "undefined" )
	{
		event = window.event;
	}
	if ( typeof getEventTarget(event) != "undefined" )
	{
		targetElement = getEventTarget(event);
	}
	else if ( typeof currentTarget != "undefined" )
	{
		targetElement = currentTarget;
	}
	else
	{
		alert("Can't find current target!");
		return false;
	}
	newTitle = targetElement.getAttribute("id");
	success = setActiveStyleSheet(newTitle);
	return true;
}

function initTargets()
{
	var capturePhase = false;
	var targetElement = null;
	var attached1 = false;
	var attached2 = false;
	var success = false;
	targetElement = document.getElementById("normal");
	if ( targetElement )
	{
		attached1 = attachEventListener(targetElement, "click", styleSheetRequest, capturePhase);
		targetElement.style.display = "inline";
	}
	targetElement = document.getElementById("large");
	if ( targetElement )
	{
		attached2 = attachEventListener(targetElement, "click", styleSheetRequest, capturePhase);
		targetElement.style.display = "inline";
	}
  return ( attached1 && attached2 );
}

/*	Initialize stylesheet and setup load listener	*/
var newTitle = "";
var success = false;
newTitle = getCookie("stylesheet");
if ( ! newTitle )
{
	newTitle = getPreferredStyleSheet();
}
if ( ! newTitle )
{
	newTitle = "normal";
}
success = setActiveStyleSheet(newTitle);
if ( ! success )
{
	alert("Unable to set StyleSheet Title: " + newTitle);
}
addLoadListener(initTargets);

/*	End of JavaScript	*/
