/* at this point, this file contains much more than just a style switcher. oh well, don't want to rename it. */

function setActiveStyleSheet(styletitle) {
	for (var a=0; a < stylelinkelements.length; a++)
	{
		var titleattr = stylelinkelements[a].getAttribute('title');
		stylelinkelements[a].disabled = (titleattr != styletitle);
	}
}

var stylelinkelements = new Array();
var cookiename = 'toplevelstylesheet_0'; // changed cookie name to reset everyone's style sheets when metalslime design was added
window.onload = function() {
	var linkelements = document.getElementsByTagName('link');
	var founddefault = false, defaulttitle = '';
	
	for (var a=0; a < linkelements.length; a++)
	{
		var relattr = linkelements[a].getAttribute('rel');
		var titleattr = linkelements[a].getAttribute('title');
		if (relattr && relattr.indexOf('style') != -1 && titleattr) {
			if (founddefault) {
				linkelements[a].disabled = (titleattr != defaulttitle);
			}
			else if (relattr.indexOf('alt') == -1)
			{
				founddefault = true;
				defaulttitle = titleattr;
				linkelements[a].disabled = false;
			}
			else
			{
				linkelements[a].disabled = true;
			}
			stylelinkelements[stylelinkelements.length] = linkelements[a];
		}
	}

	var cookies = document.cookie.split(';');
	for (var a=0; a < cookies.length; a++)
	{
		while (cookies[a].substr(0,1) == ' ') // silly opera!
			cookies[a] = cookies[a].substr(1);
		if (cookies[a].substr(0,cookiename.length) == cookiename)
		{
			setActiveStyleSheet(unescape(cookies[a].substring(cookiename.length+1)));
			break;
		}
	}
	
	if (CheckSearchTerms() && document.getElementById('stylesheetlinklist'))
	{
		var newlink = document.createElement('a'), newli = document.createElement('li');
		newlink.href = '';
		newlink.onclick = function() {togglehighlights(); return false;};
		newlink.appendChild(document.createTextNode('toggle search term highlighting'));
		newli.appendChild(newlink)
		document.getElementById('stylesheetlinklist').insertBefore(newli, document.getElementById('stylesheetlinklist').firstChild);
	}
}

window.onunload = function () {
	if (typeof(stylelinkelements) == 'undefined') return;
	
	var titleattr = '';
	for (var a=0; a < stylelinkelements.length; a++)
	{
		if (!stylelinkelements[a].disabled)
		{
			titleattr = stylelinkelements[a].getAttribute('title');
			break;
		}
	}
	if (titleattr == '') return; // just in case
	
	var expires = new Date();
	expires.setTime(expires.getTime() + 1000*60*60*24*360);
	document.cookie = cookiename + '=' + escape(titleattr) + '; expires=' + expires.toGMTString() + '; path=/';
}

function outputSidebarContent()
{
	var thelist;
	if (location.pathname != '/' && document.getElementById && (thelist=document.getElementById('insidelist')))
	{
		var homelink = document.createElement('li');
		var link = document.createElement('a');
		link.href = '/';
		link.appendChild(document.createTextNode('home'));
		homelink.appendChild(link);
		thelist.insertBefore(homelink,thelist.firstChild);
	}

	document.write('<div class="section">');
	document.write('<h1>Style Sheets</h1>');
	document.write('<ul id="stylesheetlinklist">');
	var linkelements = document.getElementsByTagName('link');
	var prevtitleattr = '';
	for (var b=0; b < linkelements.length; b++) {
		var relattr = linkelements[b].getAttribute('rel');
		var titleattr = linkelements[b].getAttribute('title');
		if ((titleattr != prevtitleattr) && relattr && (relattr.indexOf('style') != -1) && titleattr)
			document.write(' '+lt+'li>'+lt+'a href="" onclick="setActiveStyleSheet(\'' + titleattr + '\'); return false;" title="Switch to slimeland\'s '+a+'quot;'+titleattr+a+'quot; style sheet.">'+titleattr+lt+'/a>'+lt+'/li>');
		prevtitleattr = titleattr;
	}
	document.write('</ul></div>');
}

var highlightson = true;
function togglehighlights()
{
	highlightson = !highlightson;
	var body;
	for (var a=0; a < document.documentElement.childNodes.length; a++) {
		if (document.documentElement.childNodes[a].tagName && document.documentElement.childNodes[a].tagName.toLowerCase() == 'body') {
			body = document.documentElement.childNodes[a];
			break;
		}
	}
	toggleelementhighlights(body);
}
function toggleelementhighlights(element)
{
	if (element.className && element.className.indexOf('search-term') != -1)
	{
		if (highlightson)
			element.className = element.className.replace(/not-search-term/,'search-term');
		else
			element.className = element.className.replace(/search-term/,'not-search-term');
	}
	for (var a=0; a < element.childNodes.length; a++)
	{
		toggleelementhighlights(element.childNodes[a]);
	}
}
