/**
 * Text Resize
 *
 * Resize text of any element within a page, extensible and sexy
 * @author: Rick Lannan, based on original Text Resize plugion authored by Tim Connell
 * @example: $("#resizable-area").textResize($("#increaseFontLink"), $("#decreaseFontLink"), $("#resetFontLink"), {baseFontSize: 12px, maxZoom: 1.5, steps: 3});
 *
 */

(function($) {
	$.extend($.fn, {
		textResize : function(decreaseLink, increaseLink, resetLink, options) {
			// Settings
			defaults = {
				baseFontSize: parseFloat(this.css("font-size")),
				maxZoom: 2,
				steps: 5
			};
			var settings = $.extend(defaults, options),
				resizableArea = this,
				currStep = 1;
						
			// Have we got a cookie? Nom nom
			if ($.cookie != undefined) {
				currStep = $.cookie('fontZoomStep');
				if (currStep == null) currStep = 1;
			}
			
			// Set the default font size
			resizableArea.css('font-size', parseFloat(settings.baseFontSize * $(resizableArea).textResizeGetZoom(settings, currStep)));
			
			// Call check to disable links as appropriate
			$(resizableArea).textResizeCheckControls(settings, currStep, decreaseLink, increaseLink, resetLink);
			
			// Increase Font Size
			if (increaseLink != null) increaseLink.click(function(){
				if (currStep < settings.steps) {
					currStep++;
					resizableArea.css('font-size', parseFloat(settings.baseFontSize * $(resizableArea).textResizeGetZoom(settings, currStep)));
					// Set Cookie
					$(document).textResizeSetCookie(currStep);
				}
				// Call check to disable links as appropriate
				$(resizableArea).textResizeCheckControls(settings, currStep, decreaseLink, increaseLink, resetLink);
				return false;
			});
			
			
			// Decrease Font Size
			if (decreaseLink != null) decreaseLink.click(function(){
				if (currStep > 1) {
					currStep--;
					resizableArea.css('font-size', parseFloat(settings.baseFontSize * $(resizableArea).textResizeGetZoom(settings, currStep)));
					// Set Cookie
					$(document).textResizeSetCookie(currStep);
				}
				// Call check to disable links as appropriate
				$(resizableArea).textResizeCheckControls(settings, currStep, decreaseLink, increaseLink, resetLink);
				return false;
			});
			
			
			// Reset Font Size
			if (resetLink != null) resetLink.click(function(){
				$(resizableArea).css('font-size', settings.baseFontSize);
				currStep = 1;
				// Set Cookie
				$(document).textResizeSetCookie(currStep);
				// Call check to disable links as appropriate
				$(resizableArea).textResizeCheckControls(settings, currStep, decreaseLink, increaseLink, resetLink);
			});
		},
		textResizeGetZoom : function(settings, currStep) {
			return 1 + (settings.maxZoom * ((currStep - 1) / (settings.steps - 1)));
		},
		textResizeSetCookie : function(currStep) {
			if ($.cookie != undefined) {
				$.cookie('fontZoomStep', currStep);
			}
		},
		textResizeCheckControls : function(settings, currStep, decreaseLink, increaseLink, resetLink) {			
			if (decreaseLink != null) decreaseLink.removeClass("link-disabled");
			if (increaseLink != null) increaseLink.removeClass("link-disabled");
			if (resetLink != null) resetLink.removeClass("link-disabled");
			
			if (decreaseLink != null && currStep == 1) {
				decreaseLink.addClass("link-disabled");
			}
			if (increaseLink != null && currStep == settings.steps) {
				increaseLink.addClass("link-disabled");
			}
			if (resetLink != null && currStep == 1) {
				resetLink.addClass("link-disabled");
			}
		}
	})
})(jQuery);