﻿/*
	jQuery Text Resizer plugin.
	*** This is a beta version of the plugin. For latest version, please visit website below.
	
	Author: Mario J Vargas (angstrey at hotmail dot com)
	Website: http://angstrey.com/
	Documentation: TBA
	
	Copyright 2009 Mario J Vargas. All rights reserved.
	License: TBD
	
	Version: 1.0 Beta
	Revision History:
		* 2009-07-20: Version 1.0 Beta. Initial Release
*/
(function($){$.fn.textresizer=function(options)
{if(this.size()==0)
return;var defaultSizes=buildDefaultFontSizes(this.size());var settings=$.extend({sizes:defaultSizes,selectedIndex:-1},$.fn.textresizer.defaults,options);if(this.size()>settings.sizes.length)
{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);});});}
$.fn.textresizer.defaults={type:"fontSize",target:"body"};function applyFontSize(newSize,settings)
{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)
{$(".textresizer-active").removeClass("textresizer-active");$(sizeButton).addClass("textresizer-active");}
function jqCookie(target,prop,value)
{var id="JQUERY.TEXTRESIZER["+target+"]."+prop;if(jqCookie.arguments.length<3)
{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;}
else
{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);}
else
{$.cookie(id,value,cookieOpts);}}}
function loadPreviousState(settings)
{if($.cookie)
{var selectedIndex=jqCookie(settings.target,"selectedIndex");if(selectedIndex)
settings.selectedIndex=selectedIndex;var prevSize=jqCookie(settings.target,"size");if(prevSize)
applyFontSize(prevSize,settings);}
else
{}}
function saveState(newSize,settings)
{if($.cookie)
{jqCookie(settings.target,"size",newSize);jqCookie(settings.target,"selectedIndex",settings.selectedIndex);}
else
{}}
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();for(var i=0;i<numElms;i++)
{var value=size0+(i*2);mySizes.push(value+"px");}
return mySizes;}})(jQuery);