(function($){var DEBUG_MODE=false;$.fn.textresizer=function(options)
{if(DEBUG_MODE)
debug(this);if(this.size()==0)
return;var defaultSizes=buildDefaultFontSizes(this.size());var settings=$.extend({selector:$(this).selector,sizes:defaultSizes,selectedIndex:-1},$.fn.textresizer.defaults,options);if(this.size()>settings.sizes.length)
{if(DEBUG_MODE)
{debug("ERROR: Number of defined sizes incompatible with number of buttons => elements: "+this.size()
+"; defined sizes: "+settings.sizes.length
+"; target: "+settings.target);}
return;}
loadPreviousState(settings);return this.each(function(i){var $this=$(this);var currSizeValue=settings.sizes[i];if(settings.selectedIndex==i)
$(this).addClass("textresizer-active");$this.bind("click",{index:i},function(e){settings.selectedIndex=e.data.index;applyFontSize(currSizeValue,settings);saveState(currSizeValue,settings);markActive(this,settings);});});}
$.fn.textresizer.defaults={type:"fontSize",target:"body"};function applyFontSize(newSize,settings)
{if(DEBUG_MODE)
debug(["target: "+settings.target,"newSize: "+newSize,"type: "+settings.type].join(", "));var targetElm=$(settings.target);switch(settings.type)
{case"css":targetElm.css(newSize);break;case"cssClass":var cssClasses=settings.sizes;$.each(cssClasses,function(i,value){targetElm.each(function(){if($(this).hasClass(value))
$(this).removeClass(value);});});targetElm.addClass(newSize);break;default:targetElm.css("font-size",newSize);break;}}
function markActive(sizeButton,settings)
{$(settings.selector).removeClass("textresizer-active");$(sizeButton).addClass("textresizer-active");}
function buildCookieID(selector,target,prop)
{return"JQUERY.TEXTRESIZER["+selector+","+target+"]."+prop;}
function getCookie(selector,target,prop)
{var id=buildCookieID(selector,target,prop);var cookieValue=$.cookie(id);if($.cookie(id+".valueType")=="dict"&&cookieValue)
{var dict={};var dictValues=cookieValue.split("|");for(var i=0;i<dictValues.length;i++)
{var keyValuePair=dictValues[i].split("=");dict[keyValuePair[0]]=unescape(keyValuePair[1]);}
return dict;}
return cookieValue;}
function setCookie(selector,target,prop,value)
{var id=buildCookieID(selector,target,prop);var cookieOpts={expires:365,path:"/"};if(typeof(value)=="object")
{$.cookie(id+".valueType","dict",cookieOpts);var dict=value;var dictValues=new Array();for(var key in dict)
{dictValues.push(key+"="+escape(dict[key]));}
var serializedVals=dictValues.join("|");$.cookie(id,serializedVals,cookieOpts);if(DEBUG_MODE)
debug("In setCookie: Cookie: "+id+": "+serializedVals);}
else
{$.cookie(id,value,cookieOpts);if(DEBUG_MODE)
debug("In setCookie: Cookie: "+id+": "+value);}}
function loadPreviousState(settings)
{if($.cookie)
{if(DEBUG_MODE)
debug("In loadPreviousState(): jquery.cookie: INSTALLED");var selectedIndex=getCookie(settings.selector,settings.target,"selectedIndex");if(DEBUG_MODE)
debug("In loadPreviousState: selectedIndex: "+selectedIndex+"; type: "+typeof(selectedIndex));if(selectedIndex)
settings.selectedIndex=selectedIndex;var prevSize=getCookie(settings.selector,settings.target,"size");if(DEBUG_MODE)
debug("In loadPreviousState: prevSize: "+prevSize+"; type: "+typeof(prevSize));if(prevSize)
applyFontSize(prevSize,settings);}
else
{if(DEBUG_MODE)
debug("In loadPreviousState(): jquery.cookie: NOT INSTALLED");}}
function saveState(newSize,settings)
{if($.cookie)
{if(DEBUG_MODE)
debug("In saveState(): jquery.cookie: INSTALLED");setCookie(settings.selector,settings.target,"size",newSize);setCookie(settings.selector,settings.target,"selectedIndex",settings.selectedIndex);}
else
{if(DEBUG_MODE)
debug("In saveState(): jquery.cookie: NOT INSTALLED");}}
function debug($obj)
{if(window.console&&window.console.log)
{if(typeof($obj)=="string")
window.console.log("jquery.textresizer => "+$obj);else
window.console.log("jquery.textresizer => selection count: "+$obj.size());}}
function buildDefaultFontSizes(numElms)
{var size0=8;var mySizes=new Array();if(DEBUG_MODE)
debug("In buildDefaultFontSizes: numElms = "+numElms);if(DEBUG_MODE)
{for(var i=0;i<numElms;i++)
{var value=(size0+(i*2))/10;mySizes.push(value+"em");if(DEBUG_MODE)
debug("In buildDefaultFontSizes: mySizes["+i+"] = "+mySizes[i]);}}
else
{for(var i=0;i<numElms;i++)
{var value=(size0+(i*2))/10;mySizes.push(value+"em");}}
return mySizes;}})(jQuery);
