function setCookie(name,value,days,path,domain,secure) {
  var expires, date;
  if (typeof days == "number") {
    date = new Date();
    date.setTime( date.getTime() + (days*24*60*60*1000) );
		expires = date.toGMTString();
  }
  document.cookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}

function getCookie(name) {
  var nameq = name + "=";
  var c_ar = document.cookie.split(';');
  for (var i=0; i<c_ar.length; i++) {
    var c = c_ar[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameq) == 0) return unescape( c.substring(nameq.length, c.length) );
  }
  return null;
}
 
function deleteCookie(name,path,domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

/* text resize code: */

var textResizer = {
    sizeUnit:       "px",
    defaultSize:    14,
    maxSize:        24,
    minSize:        10,
    //queryName:      "dw_fsz",   // name to check query string for when passing size in URL
    queryNum:       true,       // check query string for number only (eg. index.html?18 )
    ready:			true,
    state:			"medium",
	adjustList:[],
	
setDefaults:

function(unit,dflt,mn,mx,sels,state)
{

	this.sizeUnit=unit;
	this.defaultSize=dflt;
	this.maxSize=mx;
	this.minSize=mn;
	if(sels)
		this.set(dflt,mn,mx,sels);
	st = getCookie("state");
	if (st != null) {		
		this.state = st;		
	}
	else {
		this.state = state;
		setCookie("state",this.state,180,"/");
	}
	this.setState(this.state);
}

,set:

function(dflt,mn,mx,sels){
	var ln=this.adjustList.length;
	for(var i=0;sels[i];i++){
		this.adjustList[ln+i]=[];
		this.adjustList[ln+i]["sel"]=sels[i];
		this.adjustList[ln+i]["dflt"]=dflt;
		this.adjustList[ln+i]["min"]=mn || this.minSize;
		this.adjustList[ln+i]["max"]=mx || this.maxSize;
		this.adjustList[ln+i]["ratio"]=this.adjustList[ln+i]["dflt"]/this.defaultSize;
	}
}

,init:

function(){	
	
	if (!document.getElementById || !document.getElementsByTagName || !textResizer.ready)
		return;
	var size,sizerEl,i;
	
	//size=getValueFromQueryString(this.queryName,this.queryNum);
	if(isNaN(parseFloat(size))||size>this.maxSize||size<this.minSize){
		size=getCookie("fontSize");
		if(isNaN(parseFloat(size))||size>this.maxSize||size<this.minSize){
			size=this.defaultSize;
		}
	}
	this.curSize=this.defaultSize;
	sizerEl=document.getElementById('sizer');
	if(sizerEl)
		sizerEl.style.display="block";
	if(this.adjustList.length==0){
		this.setDefaults(this.sizeUnit,this.defaultSize,this.minSize,this.maxSize,['body','td']);
	}
	if(size!=this.defaultSize)
		this.adjust(size-this.defaultSize);
}
,adjust:

function(n){	
	if(!this.curSize||!textResizer.ready)
		return;
	var alist,size,list,i,j;
	
	if(n>0){
		if(this.curSize+n>this.maxSize)
			n=this.maxSize-this.curSize;
	}
	else 
		if(n<0){
			if(this.curSize+n<this.minSize)
				n=this.minSize-this.curSize;
		}
		if(n==0)
			return;
	this.curSize+=n;
	
	alist=this.adjustList;
	for(i=0;alist[i];i++){
		size=this.curSize*alist[i]['ratio'];
		size=Math.max(alist[i]['min'],size);
		size=Math.min(alist[i]['max'],size);
		list=dw_getElementsBySelector(alist[i]['sel']);
		for(j=0;list[j];j++){
			list[j].style.fontSize=size+this.sizeUnit;
		}
	}
	deleteCookie("fontSize","/");
	setCookie("fontSize",this.curSize,180,"/");
}

,reset:

function(){
	if(!this.curSize||!textResizer.ready)
		return;
	var alist=this.adjustList,list,i,j;
	for(i=0;alist[i];i++){
		list=dw_getElementsBySelector(alist[i]['sel']);
		for(j=0;list[j];j++){
			list[j].style.fontSize='';
		}
	}
	this.curSize=this.defaultSize;
	deleteCookie("fontSize","/");
}

,setState:

function (st) {
	if (st != 'medium' && st != 'small' && st != 'large') {
		st = 'medium';
	}
	if (st == 'medium') {
		this.reset();
		setEnabled('sizer_normal_button_off',true);
		setEnabled('sizer_normal_button_on',false);
		setEnabled('sizer_min_button_off',false);
		setEnabled('sizer_min_button_on',true);
		setEnabled('sizer_plus_button_on',true);
		setEnabled('sizer_plus_button_off',false);
	}
	if (st == 'small') {
		this.reset();
		this.adjust(-2);
		setEnabled('sizer_min_button_off',true);
		setEnabled('sizer_min_button_on',false);
		setEnabled('sizer_normal_button_off',false);
		setEnabled('sizer_plus_button_off',false);
		setEnabled('sizer_normal_button_on',true);
		setEnabled('sizer_plus_button_on',true);
	}
	
	if (st == 'large') {
		this.reset();
		this.adjust(+2);
		
		setEnabled('sizer_plus_button_off',true);
		setEnabled('sizer_plus_button_on',false);
		setEnabled('sizer_min_button_on',true);
		setEnabled('sizer_normal_button_on',true);
		setEnabled('sizer_min_button_off',false);
		setEnabled('sizer_normal_button_off',false);
	}
}

};

function setEnabled(id,enabled) {
	var item = document.getElementById(id);
	if (enabled) {
		item.style.display = 'inline';
	}
	else {
		item.style.display = 'none';
	}
}


function dw_getElementsBySelector(selector){
	if(!document.getElementsByTagName)
		return[];
	var nodeList=[document],tokens,bits,list,col,els,i,j,k;
	
	selector=selector.normalize();
	tokens=selector.split(' ');
	for(i=0;tokens[i];i++){
		if(tokens[i].indexOf('#')!=-1){
			bits=tokens[i].split('#');
			var el=document.getElementById(bits[1]);
			if(!el)
				return[];
			if(bits[0]){
				if(el.tagName.toLowerCase()!=bits[0].toLowerCase())
					return[];
			}
			for(j=0;nodeList[j];j++){
				if(nodeList[j]==document||dw_contained(el,nodeList[j]))
					nodeList=[el];
				else 
					return[];
			}
		}
		else 
			if(tokens[i].indexOf('.')!=-1){
				bits=tokens[i].split('.');
				col=[];
				for(j=0;nodeList[j];j++){
					els=dw_getElementsByClassName(bits[1],bits[0],nodeList[j]);
					for(k=0;els[k];k++){
						col[col.length]=els[k];
					}
				}
				nodeList=[];
				for(j=0;col[j];j++){
					nodeList.push(col[j]);
				}
			}
			else{
				els=[];
				for(j=0;nodeList[j];j++){
					list=nodeList[j].getElementsByTagName(tokens[i]);
					for(k=0;list[k];k++){
						els.push(list[k]);
					}
				}
				nodeList=els;
			}
		}
		return nodeList;
	};
	
	function dw_getElementsByClassName(sClass,sTag,oCont){
		var result=[],list,i;
		var re=new RegExp("\\b"+sClass+"\\b","i");
		
		oCont=oCont?oCont:document;
		
		if(document.getElementsByTagName){
			if(!sTag||sTag=="*"){
				list=oCont.all?oCont.all:oCont.getElementsByTagName("*");
			}
		else{
			list=oCont.getElementsByTagName(sTag);
		}
		for(i=0;list[i];i++)
			if(re.test(list[i].className))
				result.push(list[i]);
		}
		return result;
	};
	
	function getValueFromQueryString(varName,bReturn){
		var val="";
		if(window.location.search){
			var qStr=window.location.search.slice(1);
			var ar=qStr.split("&");
			var get=[],ar2;
			for(var i=0;ar[i];i++){
				if(ar[i].indexOf("=")!=-1){
					ar2=ar[i].split("=");
					get[ar2[0]]=ar2[1];
				}
			}
			val=get[varName];
			if(!val&&bReturn){
				val=qStr;
			}
		}
		return val;
	};
	
	function dw_contained(oNode,oCont){
		if(!oNode)
			return;
		while(oNode=oNode.parentNode)
			if(oNode==oCont)
				return true;
		return false;
	};
	
	if (!Array.prototype.push){
		Array.prototype.push=function(){
			for(var i=0;arguments[i];i++)
				this[this.length]=arguments[i];
			return this[this.length-1];
		}
	};
	
	String.prototype.normalize=function(){
		var re=/\s\s+/g;
		return this.trim().replace(re," ");
	};
	
	String.prototype.trim=function(){
		var re=/^\s+|\s+$/g;
		return this.replace(re,"");
	};