// Add the resize function to the page load event
	function smt_fontsizeAddEvent(obj, evType, fn){
		if (obj.addEventListener){
			obj.addEventListener(evType, fn, false);
			return true;
		} else if (obj.attachEvent){
			var r = obj.attachEvent("on"+evType, fn);
			return r;
		} else {
			return false;
		}
	}
	// Triggers a resize on page load 
	smt_fontsizeAddEvent(window, 'load', smt_fontsizeInit);
	
	// Enables/disables buttons
	function smt_fontsizeBtnStatus(btnId,status){
		btnId = "smt_fontsize_" + btnId;
		
			if(document.getElementById(btnId)){
				document.getElementById(btnId).src='images/smt_fontsize/' + status;
			}
		
	}
	// Initialize the page
	function smt_fontsizeInit(){
		// Compute the font sizes for all tags whose style.fontSize is undefined.
		
		if(document.getElementById('content')){
			if(element=document.getElementById('content').getElementsByTagName('*')){
				for(var i=0; i<element.length; i++){
					element[i].style.fontSize = smt_fontsizeGetCurrentFontSize(element[i]);
				}
			}
		}
		/*
		for(var i=0; element = document.getElementsByTagName("*")[i]; i++){
			element.style.fontSize = smt_fontsizeGetCurrentFontSize(element);
		}
		*/
		
		 // Set the font to the last saved value (in the cookie.)
			if(smt_fontsizeGetCookie() != ""){
				smt_fontsizeIncrement(smt_fontsizeGetCookie(),true);
			} else { // Cookie doesn't exist. Create it and set the font size.
				smt_fontsizeIncrement('0',true);
				smt_fontsizeSetCookie('0');
			}
		
		
			if(smt_fontsizeGetCookie() == 2){
				smt_fontsizeBtnStatus('increase','increase_.gif');
			}
			if(smt_fontsizeGetCookie() == -2){
				smt_fontsizeBtnStatus('decrease','decrease_.gif');
			}
		
	}
	// function to set the value of the cookie.
	function smt_fontsizeSetCookie(value) { 
		var name = "smt_fontsize_relative";
		
		var curCookie = name + "=" + escape(value);
		
		document.cookie = curCookie;
	}
	// function to get the cookie value.
	function smt_fontsizeGetCookie(){
		var name = "smt_fontsize_relative";
		if (document.cookie.indexOf(name) != -1) {
			cs=document.cookie.indexOf(name+"=");
			if(cs!=-1){
				cs=cs + name.length+1;
				ce=document.cookie.indexOf(";",cs);
				if(ce==-1) ce=document.cookie.length
				return parseInt(unescape(document.cookie.substring(cs,ce)));
			} else {
				return "";
			}
		} else {
			return "";
		} 
	}
	// A function to compute the current font size as rendered by the browser.
	function smt_fontsizeGetCurrentFontSize(elem){
		
		
		var ieFontScale	=	new Array ("10","11","12","14","18","24","30","36","48","60","72");
		if ( elem == null )
			return null;
		
		// if the style isn't defined inline, then ask the browser to compute the current size	
		if ( elem.style.fontSize == "")
		{
			var browserName=navigator.appName; 
			var browserVer=parseInt(navigator.appVersion); 
			if (browserName=="Microsoft Internet Explorer" && browserVer>=4) 
				//font element was deprecated in HTML 4.01
				//IE does not handle the increments well without this
				if(elem.tagName == "FONT"){
					var ieFontIndex = elem.getAttribute("size");
					if(ieFontIndex == "" || ieFontIndex < 0){
						return '12';
					} else {
						return ieFontScale[ieFontIndex];
					}
				} else {
					return elem.currentStyle.fontSize;
				}
			else
				if(navigator.vendor.indexOf('Apple') != 0){
					return document.defaultView.getComputedStyle(elem, '').getPropertyValue("font-size");
				} else {
					return '12';
				}
		}
		// else return the current fontsize.
		else
		{
			return elem.style.fontSize;
		}
		
	}
	// Checks if an element is a child of a filtered node (one that should be resized.)
	function smt_fontsizeParentIsFiltered(elem_temp){
		var elem = elem_temp;
		var classname;
		while ( elem.parentNode != null && elem.parentNode.tagName != "HTML")
		{
			elem = elem.parentNode;
			try
			{
				if ( elem.getAttribute('class') != null )
					classname = elem.getAttribute('class');
				else
					classname = elem.className;
			
				var isResizable = classname.indexOf('content') >= 0;
			
				if (classname == "content" | isResizable)
					return true;
			} catch(err) {/*alert(elem + ": " + err.description + " ");*/}
		}
		
	
		return false;
	}
	// Increments the fontsize of an element.
	function smt_fontsizeIncrementElement(elem,size){

		var currentSize;
		var currentVal;
		var currentUnit;
		var unitPattern = /[A-Z]+$/i;
		
		
		if ( smt_fontsizeParentIsFiltered(elem) )
		{
		
			currentSize = smt_fontsizeGetCurrentFontSize(elem);
			currentVal = currentSize.substring(0,currentSize.search(unitPattern));
			currentUnit = currentSize.substring(currentSize.search(unitPattern),currentSize.length);

			if ( size + parseFloat(currentVal) > 0)
				elem.style.fontSize = (size + parseFloat(currentVal)) + currentUnit;
		
		}
		
		
	}
	// Increments the font size of every element on the page by "size."
	// Size can be either +,-,default, or an integer value between the max and min allowed.
	// the dontUpdateCookie flag prevents the function from updating the cookie after the font resize.
	function smt_fontsizeIncrement(size,dontUpdateCookie){
		if( size == "+" )
			size = 2;	
		else if ( size == "-" )
			size = -2;
		else if ( size == "default" ){
			size = -smt_fontsizeGetCookie();
			
				smt_fontsizeBtnStatus('increase','increase.gif');
				smt_fontsizeBtnStatus('decrease','decrease.gif');
			
		}
		else
			size = parseInt(size);
			
		if ( dontUpdateCookie == null )
			smt_fontsizeSetCookie( size + smt_fontsizeGetCookie() );
		
		/*
		for ( var i=0; element = document.getElementsByTagName("*")[i]; i++ )
			smt_fontsizeIncrementElement(element,size);
		*/
		if(document.getElementById('content')){
			if(element=document.getElementById('content').getElementsByTagName('*')){
				for(var i=0; i<element.length; i++){
					var currentSize;
					var currentVal;
					var currentUnit;
					var unitPattern = /[A-Z]+$/i;
					currentSize = smt_fontsizeGetCurrentFontSize(element[i]);
					currentVal = currentSize.substring(0,currentSize.search(unitPattern));
					currentUnit = currentSize.substring(currentSize.search(unitPattern),currentSize.length);
					if ( size + parseFloat(currentVal) > 0)
						element[i].style.fontSize = (size + parseFloat(currentVal)) + currentUnit;
				}
			}
		}
		
			if(smt_fontsizeGetCookie() <= -2){
				smt_fontsizeBtnStatus('decrease','decrease_.gif');
			}
			if(smt_fontsizeGetCookie() >= 2){
				smt_fontsizeBtnStatus('increase','increase_.gif');
			}
		
	}

