function is_numeric(input) {
   return (input - 0) == input && input.length > 0;
}

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

var Fontsize = {
	
	setCookie: function(name,value,days) {
		if (days) { 
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = ";expires="+date.toGMTString();
		} else { 
			expires = "";
		}
		document.cookie = name+"="+value+expires+";path=/";
	}, 
	
	readCookie: function(name) {
		var needle = name + "=";
		var cookieArray = document.cookie.split(';');
		for(var i=0;i <cookieArray.length;i++) {
			var pair = cookieArray[i];
			while (pair.charAt(0)==' ') {
				pair = pair.substring(1, pair.length);
		 }
			if (pair.indexOf(needle) == 0) {
				return pair.substring(needle.length, pair.length);
		 }
		}
		return null;
	}, 
	
	setFont: function(value,tagArray) {
		for (i=0; i<tagArray.length; i++) {
			var tag = document.getElementsByTagName(tagArray[i]);
			var size = 0;
			for(n=0; n<tag.length; n++) {
				if (trim(tag[n].innerHTML).charAt(0) != "<" && tag[n].parentNode.style.fontSize == "") {
					tag[n].style.fontSize = "";
			    	var who= document.createElement('div');
					var atts= {fontSize:'1em',padding:'0',position:'absolute',lineHeight:'1',display:'block',visibility:'hidden'};
					for(var p in atts){
						who.style[p]= atts[p];
					}
					who.appendChild(document.createTextNode('M'));
					tag[n].appendChild(who);
					if (who.offsetHeight > 0) {
						size = who.offsetHeight;
					}
					tag[n].removeChild(who);
					if (eval(size) > 0) {
						var newSize = eval(size) + eval(value);
						tag[n].style.fontSize = newSize + 'px';
					}
				}
		   	}
	   	}
		Fontsize.setCookie("fontsize", value, 365);
	},
	
	enlargeFont: function() {
		var value = Fontsize.readCookie("fontsize");
		value++;
		Fontsize.setFont(value, ['body', 'h1', 'h2', 'h3', 'h4', 'td', 'div', 'span', 'p', 'a', 'li', 'font']);
	},
	
	shrinkFont: function() {
		var value = Fontsize.readCookie("fontsize");
		value--;
		Fontsize.setFont(value, ['body', 'h1', 'h2', 'h3', 'h4', 'td', 'div', 'span', 'p', 'a', 'li', 'font']);
	},
	
	cycleFont: function() {
		var value = Fontsize.readCookie("fontsize");
		var steps = 2;
		if (value < steps) {
			Fontsize.enlargeFont();
		} else {
			Fontsize.setFont(0, ['body', 'h1', 'h2', 'h3', 'h4', 'td', 'div', 'span', 'p', 'a', 'li', 'font']);
		}
	}

}

window.onload=function() { 
	if (Fontsize.readCookie("fontsize")) {
		var value = Fontsize.readCookie("fontsize");
		Fontsize.setFont(value, ['body', 'h1', 'h2', 'h3', 'h4', 'td', 'div', 'span', 'p', 'a', 'li', 'font']);
	}
}
