window.onload = initTextSizeChanger;


String.prototype.escapeRxSpecials = function()
{
	return this.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
}

function hasClass(node, className)
{
	return new RegExp('\\b' + className.escapeRxSpecials() + '\\b').exec(node.className);
}

function setClass(node, className)
{
	if (!hasClass(node, className))
		node.className = className + (node.className.length > 0 ? ' ': '') + node.className;
	
	return node;
}

function removeClass(node, className)
{
	var classNames = node.className.split(/\s+/);
	
	for (var i = 0; i < classNames.length; i++) {
		if (classNames[i] == className) {
			classNames.splice(i, 1);
			node.className = classNames.join(' ');
			break;
		}
	}
	
	return node;
}

function setCookie( name, value, expires, path, domain, secure ) {

	var today = new Date();
	today.setTime( today.getTime() );

	if ( expires )
	{
	expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );

	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
	( ( path ) ? ";path=" + path : "" ) +
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );

}

function getCookie( name ) {

	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) &&
	( name != document.cookie.substring( 0, name.length ) ) )
	{
	return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );

}

function deleteCookie( name, path, domain ) {

	if ( getCookie( name ) ) document.cookie = name + "=" +
	( ( path ) ? ";path=" + path : "") +
	( ( domain ) ? ";domain=" + domain : "" ) +
	";expires=Thu, 01-Jan-1970 00:00:01 GMT";

}

var textSizeSteps = 3;
var textSizeCurrent = 1;

function initTextSizeChanger() {

	
	if (getCookie('textsize')) {
		
		textSizeCurrent = parseInt(getCookie('textsize'));
		textSizeCurrent = Math.min(textSizeCurrent, textSizeSteps);
		textSizeCurrent = Math.max(textSizeCurrent, 1);
	}

	
	setClass(document.body, "text-size-" + textSizeCurrent);

	var links = document.getElementsByTagName('a');

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

		if(hasClass(links[i], "decrease")) {
			links[i].onclick = function(e) {
				return changeTextSize(-1);
			};

		}

		if(hasClass(links[i], "increase")) {
			links[i].onclick = function(e) {
				return changeTextSize(1);
			};
		}

	}
        changeTextSize(0);

	function changeTextSize(adjustment)
	{
		var newSize = textSizeCurrent + adjustment;

		newSize = Math.min(newSize, textSizeSteps); 
		newSize = Math.max(newSize, 1);  

		removeClass(document.body, "text-size-" + textSizeCurrent);
		setClass(document.body, "text-size-" + newSize);

		var links = document.getElementsByTagName('a');

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

			if(hasClass(links[i], "decrease")) {
				if(newSize > 1) {
					removeClass(links[i], "text-size-disabled");
				}
				else {
					setClass(links[i], "text-size-disabled");
					links[i].blur();
				}

			}

			if(hasClass(links[i], "increase")) {
				if(newSize < textSizeSteps) {
					removeClass(links[i], "text-size-disabled");
				}
				else {
					setClass(links[i], "text-size-disabled");
					links[i].blur();
				}
			}

		}

		textSizeCurrent = newSize;
		setCookie( 'textsize', textSizeCurrent, '', '/', '', '' );

		return false;
	}

}


