/*	JavaScript for Page Styles

	Copyright 2007 by Brian Sexton

 	Created: Wednesday, January 24, 2007

 	Modified: Friday, February 2, 2007


	* * *  This is a work in progress.  * * *

*/



function beginStyleScript()
{

	var titledScreenStylesheetLinkElements = getTitledScreenStylesheetLinkElements();


	if (titledScreenStylesheetLinkElements.length > 0)
	{

		createStyleControlPanel(titledScreenStylesheetLinkElements);

	}

}



function createStyleControlPanel(titledScreenStylesheetLinkElements)
{

	var panel = document.createElement('div');

	panel.setAttribute('style', 'border: 1px solid #f00; padding: 8px');

	document.body.appendChild(panel);


	var list = document.createElement('ul');

	panel.appendChild(list);


	for (var i = 0; i < titledScreenStylesheetLinkElements.length; i++)
	{

		var title = titledScreenStylesheetLinkElements[i].getAttribute('title');


		if (typeof title === 'string')
		{

			var escapedTitle = title.replace(/'/, '\\\'');


			var li = document.createElement('li');

			//li.innerHTML = '[ Testing . . . ] ' + title;

			list.appendChild(li);


			var a = document.createElement('a');

			a.innerHTML = '[ Testing . . . ] ' + title;

			a.setAttribute('href', 'javascript:setPageStyle(\'' + escapedTitle + '\');');

			//a.setAttribute('onclick', function() { alert('!'); });

			li.appendChild(a);


			//titledScreenStylesheetLinkElements[i].disabled = true;

		}

	}

}



function getTitledScreenStylesheetLinkElements()
{

	var titledScreenStylesheetLinkElements = new Array();


	var linkElements = document.getElementsByTagName("link");


	writeTestData('Link Elements Found: ' + linkElements.length);


	for (var i = 0; i < linkElements.length; i++)
	{

		var rel = linkElements[i].getAttribute("rel");

		var media = linkElements[i].getAttribute("media");

		var title = linkElements[i].getAttribute("title");

		//var disabled = linkElements[i].disabled;


		writeTestData('Link Element ' + i.toString() + ' rel: ' + typeof rel + ' / ' + rel);

		writeTestData('Link Element ' + i.toString() + ' media: ' + typeof media + ' / ' + media);

		writeTestData('Link Element ' + i.toString() + ' title: ' + typeof title + ' / ' + title);


		//  * * *  Note: Firefox 2.0 reports object for null values of media and title; IE 7 reports string, possibly with empty string values rather than null.


		if (typeof rel === 'string' && (rel.toLowerCase() === 'stylesheet' || rel.toLowerCase() === 'alternate stylesheet' ) && ((typeof media === 'string' && media.toLowerCase() === 'screen') || (typeof media === 'string' && media === '') || (typeof media === 'object' && media === null)) && typeof title === 'string' && title.length > 0)
		{

			titledScreenStylesheetLinkElements[titledScreenStylesheetLinkElements.length] = linkElements[i];

		}

	}


	writeTestData('Titled Screen Stylesheet Link Elements Found: ' + titledScreenStylesheetLinkElements.length);


	return titledScreenStylesheetLinkElements;

}



function setPageStyle(title)
{

	var unescapedTitle = title.replace(/\'/, '\'');


	var titledScreenStylesheetLinkElements = getTitledScreenStylesheetLinkElements();


	for (var i = 0; i < titledScreenStylesheetLinkElements.length; i++)
	{

		if (titledScreenStylesheetLinkElements[i].getAttribute('title') === unescapedTitle)
		{

			titledScreenStylesheetLinkElements[i].disabled = false;

		}

		else
		{

			titledScreenStylesheetLinkElements[i].disabled = true;

		}

	}

}



function writeTestData(text)
{

	var target = document.getElementById('TestData');


	if (target !== null)
	{

		var p = document.createElement('p');

		p.innerHTML = text;

		target.appendChild(p);

	}

}



window.onload = function()
{

	//beginStyleScript();

}