/*Fluid Text Resizer (June 27th, 2010)* This notice must stay intact for usage * Author: Dynamic Drive at http://www.dynamicdrive.com/* Visit http://www.dynamicdrive.com/ for full source code*/jQuery.noConflict()function fluidtextresizer(setting){	fluidtextresizer.count=(fluidtextresizer.count)? ++fluidtextresizer.count : 1	this.cookiename="fluidtextsizer"+fluidtextresizer.count //name of cookie to use to store persistence for this text resizer instance	this.setting=setting	this.selectors=[] //array translating setting.targets into array of jquery selectors	this.$controls=null	this.defaultfontsizes=[]	this.curfontlevel=0	var thisobj=this	jQuery(function($){ //on document.ready		var els=setting.targets		for (var i=0; i<els.length; i++){			if ($(els[i]).length==0){ //if selector doesn't yield any matched elements				els.splice(i, 1) //delete it from setting.targets[]				i-=1				continue			}			var curfontsize=$(els[i]).css('fontSize')			thisobj.defaultfontsizes.push({val:parseFloat(curfontsize), unit:curfontsize.slice(-2)}) //remember default font sizes of target elements			thisobj.selectors.push($(els[i])) //cache selector		}		if (setting.controlsdiv){ //if special container for resize controls defined			thisobj.$controls=$('#'+setting.controlsdiv).find('a[href^=#fontsize], a[href=#bigger], a[href=#smaller]')			thisobj.$controls.each(function(){				var $target=$(this)				$target.data('level', $target.attr('href').replace(/(#)|(fontsize)/ig, '')) //remove "#" and "fontsize" from href to derive level				$target.click(function(){				thisobj.setFontLevel($target.data('level'))				return false				})			})		}		if (setting.persisttype!="none"){			var curfontlevel=fluidtextresizer.routines.getCookie(thisobj.cookiename) || 0 //get persisted font level, or 0 to indicate no change in font size			curfontlevel=parseInt(curfontlevel)			if (curfontlevel>=-setting.levels && curfontlevel<=setting.levels){ //if font level within range				thisobj.setFontLevel(curfontlevel, true)			}		}	})}fluidtextresizer.prototype={	setFontLevel:function(level, disableanim){		var s=this.setting		var $els=this.selectors		var level=(level=="bigger")? this.curfontlevel+1 : (level=="smaller")? this.curfontlevel-1 : parseInt(level) //calculate new font size level		if (s.controlsdiv){ //if special container for resize controls defined			this.$controls.filter('.selectedcontrol').removeClass('selectedcontrol').end()  //deselect previously selected control				.filter('[href=#fontsize'+level+']').addClass('selectedcontrol') //apply "selectedcontrol" CSS class to corresponding control		}		if (level<-s.levels || level>s.levels || level==this.curfontlevel) //if target level is out or range (range is int from -s.levels to +s.levels) or is current level already			return		for (var i=0; i<$els.length; i++){			var abslevel=Math.abs(level)			var valchange=Math.pow(1.2, abslevel) //calculate fontlevel^1.2			//calculate new font size, which is default font size multiply or divided by valchange:			var newfontsize=this.defaultfontsizes[i].val * (level<0? 1/valchange : level>0? valchange : 1) + this.defaultfontsizes[i].unit			$els[i].animate({fontSize: newfontsize}, disableanim? 0 : this.setting.animate)		}		if (s.persist=="session"){			fluidtextresizer.routines.setCookie(this.cookiename, level)		}		this.curfontlevel=level	}}fluidtextresizer.routines={	getCookie:function(Name){ 		var re=new RegExp(Name+"=[^;]*", "i"); //construct RE to search for target name/value pair		return (document.cookie.match(re))? document.cookie.match(re)[0].split("=")[1] : null //return cookie value if found or null	},		setCookie:function(name, value, days){		var expirestr=''		if (typeof days!="undefined") //if set persistent cookie			expirestr="; expires="+expireDate.setDate(new Date().getDate()+days).toGMTString()		document.cookie = name+"="+value+"; path=/"+expirestr	}}
