// The original version of this code can be found at "http://www.white-hat-web-design.co.uk/articles/js-fontsize.php".

var interfaceElement;

//var sizeMin = -5;
var sizeCurrent = 0;
//var sizeMax = 5;

var debug = "";
var debugSizeBefore = 0;
var debugSizeAfter = 0;

function writeSizeOption(size)
{
	var element;
	var attributeClass
	var text;
	
	if (size == sizeCurrent)
	{
		element = document.createElement("bdo");
		element.className = "fontresizer-sizeoption fontresizer-fontsize-fixed link-disabled";
	}
	else
	{
		element = document.createElement("a");
		element.className = "fontresizer-sizeoption fontresizer-fontsize-fixed";
		element.href = "javascript:setSize(" + size + ")";
	}
	
	element.style.fontSize = (16 + size) + "px";
	text = document.createTextNode("Aa");
	element.appendChild(text);
	interfaceElement.appendChild(element);
	interfaceElement.appendChild(document.createTextNode(" "));
	
	//document.write("<a id=\"fontresizer-sizeoption-" + size + "\" class=\"fontresizer-sizeoption fontresizer-fontsize-fixed\" style=\"font-size: " + (16 + size) + "px;\" href=\"javascript:setSize(" + size + ")\">Aa</a> ");
}

function insertInterface()
{
	document.write("<div id=\"font-resizer-interface\"></div>");
	interfaceElement = document.getElementById("font-resizer-interface");
	
	refreshInterface();
}

function refreshInterface()
{
	while (interfaceElement.firstChild)
		interfaceElement.removeChild(interfaceElement.firstChild);
	
	writeSizeOption(-4);
	writeSizeOption(-3);
	writeSizeOption(-2);
	writeSizeOption(-1);
	writeSizeOption( 0);
	writeSizeOption( 1);
	writeSizeOption( 2);
	writeSizeOption( 3);
	writeSizeOption( 4);
}

function setSizeElementType(sizeChange, elementType, elementClass, defaultSize)
{
	var elementsOriginal = document.getElementsByTagName(elementType);
	var elements = [];
	
	// Remove Elements of Class "fontresizer-fontsize-fixed".
	for (i = 0; i < elementsOriginal.length; i++)
	{
		if (elementsOriginal[i].className.search("fontresizer-fontsize-fixed") == -1)
		{
			if (elementsOriginal[i].className.search(elementClass) != -1)
			{
				elements.push(elementsOriginal[i]);
			}
		}
	}
	
	for (i = 0; i < elements.length; i++)
	{
		for (i = 0; i < elements.length; i++)
		{
			var elementSize = defaultSize;
			if (elements[i].style.fontSize)
			{
				elementSize = parseInt(elements[i].style.fontSize.replace("px",""));
			}
			elementSize += sizeChange;
			elements[i].style.fontSize = elementSize + "px"
		}
	}
}

function setSize(size)
{
	//if (size >= sizeMin && size <= sizeMax)
	//{
		var sizeChange = size - sizeCurrent;
		if (sizeChange != 0)
		{
			setSizeElementType(sizeChange, 'h1', "sidebar", 18);
			setSizeElementType(sizeChange, 'h1', "", 32);
			setSizeElementType(sizeChange, 'h2', "", 24);
			setSizeElementType(sizeChange, 'p', "", 16);
			setSizeElementType(sizeChange, 'li', "", 16);
			setSizeElementType(sizeChange, 'body', "", 16);
			
			sizeCurrent = size;
			
			refreshInterface();
		}
	//}
}
