/* CONFIG START */
var maxLimit 					= 6;	//How many pixels that can be added to the ordinary font-size.
var minLimit 					= -2;   //How many pixels that can be subracted from the ordinary font-size.
var intervalConst 				= 2;	//How many pixels to add/subtract on each click.
/* CONFIG END */

var mainElementId				= "";
var cookieName 					= "nyteknikfontsize";
var useCookieValue				= true;
var intervalDynamic 			= 0;
var cookieAddToFontSize 		= 0;

var BROWSER_INTERNET_EXPLORER 	= 1;
var BROWSER_NETSCAPE 			= 2;
var BROWSER_OPERA 				= 3;
var BROWSER_NE6 				= 4;

//Make text bigger. 
function increaseCssFontSize()
{
	if (document.getElementById(mainElementId) == null)
	{
		window.alert("Inte tillgängligt på detta uppslag");
		return false;	
	}
	intervalDynamic = intervalConst;

	changeCssFontSize();
}

//Make text smaller.
function decreaseCssFontSize()
{
	if (document.getElementById(mainElementId) == null)
	{
		window.alert("Inte tillgängligt på detta uppslag");
		return false;	
	}

	intervalDynamic = intervalConst * -1;
	
	changeCssFontSize();
}

//This function should be called from outside this file at the bottom of your html page. 
//The only required input, is the main elements id. The main element contains all other elements.
function TextResize(elementId)
{
	mainElementId = elementId;
	
	if (document.getElementById(mainElementId) == null)
	{
		window.alert("Inte tillgängligt på detta uppslag");
		return false;	
	}
		
	var cookie = GetCookie(cookieName);
	cookie = GetCookie(cookieName);
	
	if (cookie != null)
	{
		cookieAddToFontSize = parseInt(cookie);
		
		try
		{
			changeCssFontSize();
		}
		catch (error)
		{
		}		
	}

	//Do only read the font-size from the cookie at every page load.	
	useCookieValue = false;
}

//Changes the font-size of all elements.
function changeCssFontSize()
{
	if (useCookieValue == true)
	{
		intervalDynamic = cookieAddToFontSize;
	}
	else
	{	
		if ((cookieAddToFontSize + intervalDynamic) > maxLimit || (cookieAddToFontSize + intervalDynamic) < minLimit)
		{
			//Font-size limits exceeded.
			return false;
		}
		else
			cookieAddToFontSize = cookieAddToFontSize + intervalDynamic;
	}
	
	var expireDate = new Date();
	expireDate.setYear(2100); //expireDate.getFullYear() + 100;
	
	//DeleteCookie(cookieName);
	SetCookie(cookieName, cookieAddToFontSize, expireDate);
	var Element = document.getElementById(mainElementId);
	
	if (Element != null)
	{
		var ElementStyle = Element.style;
		SetElementFontSize(Element, ElementStyle);
		UpdateElement(Element.firstChild)	
	}
}

//Returns an element style font-size.
function GetFontSizeByElement(Element)
{
	if (getBrowser() == BROWSER_INTERNET_EXPLORER)	
	{
		var sizeStr = new String(getStyleByElement(Element,"fontSize"));
	}
	else
	{
		var sizeStr = new String(getStyleByElement(Element,"font-size"));
	}
	sizeStr = sizeStr.replace("px", "");
	
	if (parseInt(sizeStr) != NaN)
		return parseInt(sizeStr);
	else
	{
		return 0;
	}
}

function getStyleByElement(element, prop) 
{
    if (typeof(element) == 'string') 
    	element = document.getElementById(element);
	
	if (element.style[prop]) 
	{
		// inline style property
		return element.style[prop];
	} 
	else if (element.currentStyle) 
	{
		// external stylesheet for Explorer
		return element.currentStyle[prop];
	} 
	else if (document.defaultView && document.defaultView.getComputedStyle) 
	{
		// external stylesheet for Mozilla and Safari 1.3+
		prop = prop.replace('/([A-Z])/g', '\"-$1\"');
		prop = prop.toLowerCase();
		return document.defaultView.getComputedStyle(element,'\"\"').getPropertyValue(prop);
	} 
	else 
	{
		return null;
	}
}

//Recursive function that updates all child elements with a new font-size.
function UpdateElement(Element)
{
	if (Element.nodeType == 1) //1 is an element node.
	{
		
		if (Element != null)
		{
			var ElementStyle = Element.style;
			//alert('set fontsize');
			
			if (ElementStyle != null)
			{
				if (GetFontSizeByElement(Element) != 0)
				{
					SetElementFontSize(Element, Element.style);
				}
			}
		}
	}
	

	/*
	if (Element != "[object script]")
	{
	}
	*/
	
	if (Element.firstChild != null)
		UpdateElement(Element.firstChild);
		
	if (Element.nextSibling != null)
		UpdateElement(Element.nextSibling);
}

function SetElementFontSize(Element, ElementStyle)
{
	if (Element.nodeType != 1) //1 is an element node.
		return false;
	
	if (getBrowser() == BROWSER_INTERNET_EXPLORER && Element != "[object]")
		return false;
		
	var finalSize = parseInt(GetFontSizeByElement(Element)) + parseInt(intervalDynamic);
	
	if (finalSize <= 0)
		return false;
			
	try
	{
		ElementStyle.fontSize = finalSize + "px";
	}
	catch (error)
	{
	}
	
	return true;
}

//To decide which browser type.
function getBrowser()
{
	if (window.opera) 
	{
		return BROWSER_OPERA;
	} 
	else if (document.layers) 
	{
		return BROWSER_NETSCAPE;
	} 
	else if (document.all) 
	{
		return BROWSER_INTERNET_EXPLORER;
	} 
	else 
	{
		return BROWSER_NE6;
	}	
}