/*

These functions allow user adjustments of text sizing. Use as follows:

Call this file in the HTML <head>.
Initialise using onLoad="Javascript:void(setFont(0));" in <body> tag.
Call functions in HTML <body>, e.g.:
	<form>
	<input type="button" value="Larger" onclick="Javascript:void(setFont(+10));">
	<br>
	<input type="button" value="Smaller" onclick="Javascript:void(setFont(-10));">
	<br>
	<input type="button" value="Reset" onclick="Javascript:void(resetFont(100));">
	</form>

Note, text sizes are set in %. Do not specify any text sizes in CSS or HTML for elements
that should be affected by this script.

Initially this script sets all text sizes to the value specified by the declaration of initialSize 
(below at bottom), except for those tags specified in the sizeTag() function (mainly heading tags).

The setFont() function argument is a value in % (+ or -), by which the font size will be changed.
The resetFont() function argument is a value in %, to which the font size will be reset (normally 100).

*/



function sizeTag(elem){

	var elem;

	for (x=0;x<elem.length;x++){

		switch (elem[x].tagName){
			case 'H1':
				var size2 = size + 40;
				elem.item(x).style.fontSize=size2+'%';
				break    
			case 'H2':
				var size2 = size + 20;
				elem.item(x).style.fontSize=size2+'%';
				break
			default:
				//elem.item(x).style.fontSize=size+'px';
				elem.item(x).style.fontSize=size+'%';
		}

	}

}



function setFont(sz,charge){

	if (!document.all && !document.getElementById){
		return;
	}else{

		size = 0;                                           
		size = ReadCookie("sizeFont");
		size = parseInt(size);
		sizeRead = size;

		if(!size){size=100;}

		if(!charge){
			size = size + sz;
		}else{
			size = parseInt(100 + sz);
		}

		window.document.body.style.fontSize=size+'%';

		var sit = document.getElementsByTagName("p");
		sizeTag(sit);
		var sit = document.getElementsByTagName("li");
		sizeTag(sit);
		var sit = document.getElementsByTagName("td");
		sizeTag(sit);
		var sit = document.getElementsByTagName("h1");
		sizeTag(sit);
		var sit = document.getElementsByTagName("h2");
		sizeTag(sit);
		var sit = document.getElementsByTagName("h3");
		sizeTag(sit);
		var sit = document.getElementsByTagName("h4");
		sizeTag(sit);
		var sit = document.getElementsByTagName("h5");
		sizeTag(sit);
		var sit = document.getElementsByTagName("h6");
		sizeTag(sit);
		var sit = document.getElementsByTagName("input");
		sizeTag(sit);

		if (sizeRead != size){
			DeleteCookie("sizeFont");				
			date=new Date();
			date.setFullYear(date.getFullYear()+10);
			WriteCookie("sizeFont", size, date,"/");
		}
	
	}

}



function resetFont(sz){

	if (!document.all && !document.getElementById){
		return;
	}else{
		size = sz;                                        

		window.document.body.style.fontSize=size+'%';
		//window.document.body.style.fontSize=size+'px';

		var sit = document.getElementsByTagName("p");
		sizeTag(sit);
		var sit = document.getElementsByTagName("li");
		sizeTag(sit);
		var sit = document.getElementsByTagName("td");
		sizeTag(sit);
		var sit = document.getElementsByTagName("h1");
		sizeTag(sit);
		var sit = document.getElementsByTagName("h2");
		sizeTag(sit);
		var sit = document.getElementsByTagName("h3");
		sizeTag(sit);
		var sit = document.getElementsByTagName("h4");
		sizeTag(sit);
		var sit = document.getElementsByTagName("h5");
		sizeTag(sit);
		var sit = document.getElementsByTagName("h6");
		sizeTag(sit);
		var sit = document.getElementsByTagName("input");
		sizeTag(sit);

		DeleteCookie("sizeFont");				
		date=new Date();
		date.setFullYear(date.getFullYear()+10);
		WriteCookie("sizeFont", size, date,"/");

	}
}



function getCookieVal(offset)
{
   var endstr=document.cookie.indexOf (";", offset);
   if (endstr==-1) endstr=document.cookie.length;
   return unescape(document.cookie.substring(offset, endstr));
}

function ReadCookie(name)
{
   var arg=name+"=";
   var alen=arg.length;
   var clen=document.cookie.length;
   var i=0;
   while (i<clen)
   {
      var j=i+alen;
      if (document.cookie.substring(i, j)==arg) return getCookieVal(j);
      i=document.cookie.indexOf(" ",i)+1;
      if (i==0) break;
   }   
   return null;
}

function WriteCookie(name, value)
{
   var argv=WriteCookie.arguments;
   var argc=WriteCookie.arguments.length;
   var expires=(argc > 2) ? argv[2] : null;
   var path=(argc > 3) ? argv[3] : null;
   var domain=(argc > 4) ? argv[4] : null;
   var secure=(argc > 5) ? argv[5] : false;
   document.cookie=name+"="+escape(value)+
      ((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
      ((path==null) ? "" : ("; path="+path))+
      ((domain==null) ? "" : ("; domain="+domain))+
      ((secure==true) ? "; secure" : "");
}

function DeleteCookie(name)
{
   date=new Date;
   date.setFullYear(date.getFullYear()-1);
   WriteCookie(name,null,date);
}



// Binds error event to "displayError" routine - uncomment next line to activate
onerror=displayError;

function displayError(msg, url, line)
{
	// Error handling routine
	// alert("Information : " + msg);
	// Suppresses Internet Explorer error

	return true;
}



cookVal = ReadCookie("sizeFont");

// Set the value of the following var for the initial text size in % (usually 100)
var initialSize = 90;

if (cookVal!=null){

	cookVal = parseInt(cookVal);

	//if (cookVal != 11)
	if (cookVal != initialSize){ 
		var charge = 1;
		//value = parseInt(cookVal -11);
		value = parseInt(cookVal - initialSize);
		setFont(value,charge);
	}
}

