  var scalePX = 2;
  var scaleEM = .1;
  var scalePer = 5;
  var timesScaled = 0;
  var dir = 0;
  
function changeFontSize(){

  var eleArray = new Array();
  
  //check for cookies
  if(getCookie('arts_access_font_change')!=""){
    timesScaled = getCookie('arts_access_font_change')*1;
  }
  
  if(getCookie('arts_access_font_elements')!=""){
    var eleString = getCookie('arts_access_font_elements');
    
    eleArray = eleString.split("|");
    
    //resize font based on cookies
    for(var i=0; i<timesScaled;i++){
      doChange(eleArray);
    }
    eleArray = new Array();
  }
  for(var i=0; i<arguments.length; i++){
      eleArray.push(arguments[i]);
  } 
  
  //create event listeners
  if(document.getElementById('increase_font').addEventListener){
    document.getElementById('increase_font').addEventListener('click',function(){timesScaled = timesScaled*1;timesScaled+=1;dir=0;doChange(eleArray);},false);
  }else{
    document.getElementById('increase_font').attachEvent('onclick',function(){timesScaled = timesScaled*1;timesScaled+=1;dir=0;doChange(eleArray);});
  }
  
  if(document.getElementById('decrease_font').addEventListener){
    document.getElementById('decrease_font').addEventListener('click',function(e){timesScaled = timesScaled*1;timesScaled-=1;dir=1;doChange(eleArray);},false);
  }else{
    document.getElementById('decrease_font').attachEvent('onclick',function(e){timesScaled = timesScaled*1;timesScaled-=1;dir=1;doChange(eleArray);});
  }
}

function doChange(){
  //the element currently working with.
  var ele;
  //px, em or percent
  var scaleType;
  //amount to increase the font by.
  var scale;
  //stored in the cookie.  Contains all the ids for the elements.
  var eleString="";
  
  //don't allow for a smaller font size than the original font size.
  if(timesScaled<0 && dir==1){
    timesScaled = 0;
  }else{
    //get ids for the elements that should be changed.
    for(var i=0; i<arguments[0].length; i++){
        ele = arguments[0][i];
       if(document.getElementById(ele)){
          eleString += ele;
          if(i<arguments[0].length-1){
            eleString+="|";
          }
      
          //get the element
          ele = document.getElementById(ele);
          
          //font size before modification.
          var size = getOriginalSize(ele);
          
          scaleType = getScaleType(size);
          scale = getScale(size);
          scale = (dir==0)?scale:-scale;
          
          size = size+"";		 
          size=size.replace(scaleType,'');
          
          //change font size.
          ele.style.fontSize=(size*1+scale)+scaleType;
        
          //check if element has any children.  If yes, change thier font sizes too.
          if(ele.childNodes.length>0){
            for(var ii=0;ii<ele.childNodes.length;ii++){
              
              size = getOriginalSize(ele.childNodes[ii]);
              
              scaleType = getScaleType(size);
              scale = getScale(size);
              scale = (dir==0)?scale:-scale;
              
              size = size+"";
              size=size.replace(scaleType,'');
              
              if(ele.childNodes[ii].style!=null){
                ele.childNodes[ii].style.fontSize=(size*1+scale)+scaleType;
              }//end if child's style is not null.
            }//end for loop for children
          }//end if children exist
        }//end if element exists
      }//end for loop for argument array
  }//end else statement
  setCookie('arts_access_font_change',timesScaled,180);
  setCookie('arts_access_font_elements',eleString,180);
}//end function do change

function getScaleType(size){
    var scaleType;
    //check to see what type of measurement we are using.
    if(typeof size == "String"){
    if(size.indexOf('px')==size.length-2){
      scaleType = "px";
    }else if(size.indexOf('em')==size.length-2){
      scaleType = "em";
    }else if(size.indexOf('%')==size.length-1){
      scaleType = "%";
    }
    return scaleType;
    }else{
    return "px";
    }
}//end function getScaleType

function getScale(size){
    var scale;
    if(typeof size == "String"){
    //get current font size
    if(size.indexOf('px')==size.length-2){
      scale = scalePX;
    }else if(size.indexOf('em')==size.length-2){
      scale = scaleEM;
    }else if(size.indexOf('%')==size.length-1){
      scale = scalePer;
    }
        return scale;
    }else{
    return 2;
    }
}//end getScale function

function setCookie(c_name,value,expiredays){
  //set cookie
  var exdate=new Date();
  exdate.setDate(exdate.getDate()+expiredays);
  document.cookie=c_name+ "=" +escape(value)+
  ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}//end setCookie function

function getCookie(c_name){
//gets cookie
  if (document.cookie.length>0){
    c_start=document.cookie.indexOf(c_name + "=");
    if (c_start!=-1)
      { 
      c_start=c_start + c_name.length+1; 
      c_end=document.cookie.indexOf(";",c_start);
      if (c_end==-1) c_end=document.cookie.length;
      return unescape(document.cookie.substring(c_start,c_end));
    } 
  }
  return "";
}//end getCookie function

function getOriginalSize(ele){
  var tempEle = ele;
  var size=0;
  
  //try to get element font size
  try{
    //tempEle.style.fontSize = tempEle.style.fontSize;
    size = tempEle.style.fontSize;
    //alert(ele+" "+size);
  }catch(e){
  }
    //if no font size from try block, check all parents until a font size is found.
  while(size==0 || typeof(size)=="undefined"){
    //if parent has font size, set size and exit loop.
    if(!typeof(tempEle.parentNode.style.fontSize)=="undefined"){
      size = tempEle.parentNode.style.fontSize;
      break;
    }else{
      //if all parents have been searched and no font size found, exit while loop.
      if(ele==tempEle.parentNode){
        break;
      }
      //if a parent exists, make it the current element.
      if(document.getElementById(tempEle.parentNode)!=null){
        tempEle = document.getElementById(tempEle.parentNode);
      }else{
        //if parent does not exist, exit while loop
        break;
      }
    }
  }
  //if no style set, use last resort

  if(size==0){
    size=lastResortSize(tempEle);
  }
    
  
  return size;
}//end getOriginalSize function

function lastResortSize(pa){
	pa= pa || document.body;
	var who= document.createElement('span');
	var atts= {fontSize:'1em',padding:'0',position:'absolute',lineHeight:'1',visibility:'hidden'};
	for(var p in atts){
		who.style[p]= atts[p];
	}
	who.appendChild(document.createTextNode('M'));
	try{
  pa.appendChild(who);
  var fs= who.offsetHeight;
	pa.removeChild(who);
  }catch(e){
	}

	return fs;
}