/* Utility functions */

//http://ejohn.org/projects/flexible-javascript-events/
function addEvent( obj, type, fn ) {
  if ( obj.attachEvent ) {
    obj['e'+type+fn] = fn;
    obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
    obj.attachEvent( 'on'+type, obj[type+fn] );
  } else
    obj.addEventListener( type, fn, false );
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

function getEventTarget(e) {
  e = e || window.event;
  return e.target || e.srcElement;
}

/* Cookie helpers from http://www.quirksmode.org/js/cookies.html */
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

/* Text size changer *********************************/
/* Creates links then sets body class to id of links */
var setupTextSizer = {
	ids:		['small','normal','large','extraLarge'],
	text:		['Small','Normal','Large','Extra large'],
	targetId:	'footer',
	cookieName:	'gadTextSize',
	labelText:	'Adjust text size:'
}
	setupTextSizer.pattern = new RegExp(setupTextSizer.ids.join('|'));

var initTextSizer = function(){
	
	//build the html
	//create wrapper	
	var wrapper = document.createElement('SPAN');
		wrapper.id = 'textSizer';
		addEvent(wrapper,'click',doSizer); //call the doSizer function on click to resize the text.
		wrapper.innerHTML = setupTextSizer.labelText + " ";
			
	
	//add the links
	for(i in setupTextSizer.ids){

		var a = document.createElement('A');
			a.href = '#';
			a.id = setupTextSizer.ids[i];
			if(setupTextSizer.text[i]){
				var img = document.createElement('IMG');
					img.src = '/images/textSizer/' + setupTextSizer.ids[i] + '.gif';
					img.title = img.alt = setupTextSizer.text[i];
				a.appendChild(img);
			}				
			else
				continue;
			wrapper.appendChild(a);		
	}
	
	document.getElementById(setupTextSizer.targetId).appendChild(wrapper);

	var cookieValue = readCookie(setupTextSizer.cookieName);
	
	if(cookieValue && cookieValue.match(setupTextSizer.pattern)){
		doSizer(null, readCookie(setupTextSizer.cookieName));
	}	
}

var doSizer = function(e, size){
	
	if(e){
		var target = getEventTarget(e);
		if(target.parentNode.tagName != 'A') return false;
	}
	
	var size = (target) ? target.parentNode.id : size;
	
	if(!document.body.className || !document.body.className.match(setupTextSizer.pattern))
		document.body.className = document.body.className + ' ' + size;
	else
		document.body.className = document.body.className.replace(setupTextSizer.pattern,size)

	//set cookie to record size
	createCookie(setupTextSizer.cookieName,size,365);

	return false;
}

//adds the function so it's called onload.
addLoadEvent(initTextSizer);













