﻿(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);
