/*
 * fontResizer - jQuery Plugin
 *
 * Examples and documentation at: <http://paperplanesdesign.com/cubed/Font-Resizer/fontResizer.html>
 *
 * Copyright (c) 2011 Justin Robert Wehrman
 *
 * Version: 2.0.0 (11/11/2010)
 * Requires: jQuery v1.3+
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
(function($) {
	$.fn.fontResizer = function ( options ) {
		var date = new Date();
		var currYear = date.getFullYear();
		var currMonth = date.getMonth();
		var currDay = date.getDate();
		var cExpire = new Date(currYear + 1, currMonth, currDay);
		var cExpireDate = cExpire.toUTCString();
		var defaults = {
			sizeType: 'px',
			minFont: 12,
			maxFont: 16,
			fontSet: 14,
			setFontOn: 'OFF',
			increment: 2,
			incrementDisable: 'DISABLED',
			$increaseClickItem: $('.increaseClickItem'),
			$decreaseClickItem: $('.decreaseClickItem'),
			$setFontButton: $('.setFontSize'),
			cookieName: 'fontResizer',
			cookieExpire: cExpireDate,
			cookiePath: '/',
			cookieSet: options.cookieName + '=' + options.fontSet + ';path=' + options.cookiePath + ' ;expires=' + options.cookieExpire,
			endClick: function () {
				blur;
				return false;
			},
			increaseFontSize: function () {
				if (options.fontSet < options.maxFont) {
					options.fontSet += options.increment;
				} else {
					options.endClick();
				}
				$content.css('fontSize',options.fontSet + options.sizeType);
				document.cookie = options.cookieName + '=' + options.fontSet + ';path=' + options.cookiePath + ' ;expires=' + options.cookieExpire;
				options.setCurrentFontButton();
			},
			decreaseFontSize: function () {
				if (options.fontSet > options.minFont) {
					options.fontSet -= options.increment;
				} else {
					options.endClick();
				}
				$content.css('fontSize',options.fontSet + options.sizeType);
				document.cookie = options.cookieName + '=' + options.fontSet + ';path=' + options.cookiePath + ' ;expires=' + options.cookieExpire;
				options.setCurrentFontButton();
			},
			setFontSize: function ( fSize ) {
				fSize = $(this).attr('title');
				fSize = parseInt(fSize);
				options.fontSet = fSize;
				$content.css('fontSize',fSize + options.sizeType);
				document.cookie = options.cookieName + '=' + options.fontSet + ';path=' + options.cookiePath + ' ;expires=' + options.cookieExpire;
			},
			checkfontSetCookie: function () {
				var results = document.cookie.match( '(^|;) ?' + options.cookieName + '=([^;]*)(;|$)' );
				if (results) {
					$content.css('fontSize',unescape(results[2]) + options.sizeType);
					options.setCurrentFontButton();
				}
			},
			setCurrentFontButton: function () {
				if (options.$setFontButton.length !== 0) {
					options.$setFontButton.each(function() {
						$(this).attr('title') == options.fontSet ? $(this).addClass(options.setFontOn) : $(this).removeClass(options.setFontOn);
					});
					options.setIncreaseDecreaseVisibility();
				}
			},
			setIncreaseDecreaseVisibility: function () {
				var maxReached = options.fontSet >= options.maxFont;
				var minReached = options.fontSet <= options.minFont;
				maxReached ? options.$increaseClickItem.addClass(options.incrementDisable) : options.$increaseClickItem.removeClass(options.incrementDisable);
				minReached ? options.$decreaseClickItem.addClass(options.incrementDisable) : options.$decreaseClickItem.removeClass(options.incrementDisable);
			}
		};
		var options = $.extend(defaults, options);
		var $content = this;
		return this.each(function() {
			options.checkfontSetCookie();
			if ($(this).css('fontSize')) {
				options.fontSet = parseInt($(this).css('fontSize').replace(options.sizeType,''));
				options.$increaseClickItem.click(options.increaseFontSize).click(options.setIncreaseDecreaseVisibility).click(options.endClick);
				options.$decreaseClickItem.click(options.decreaseFontSize).click(options.setIncreaseDecreaseVisibility).click(options.endClick);
				options.$setFontButton.click(function(event){
					options.$setFontButton.each(function() {
						if ($(this).hasClass(options.setFontOn)) { $(this).removeClass(options.setFontOn); }
					});
					$(this).addClass(options.setFontOn);
				}).click(options.setFontSize).click(options.setIncreaseDecreaseVisibility).click(options.endClick);
			}
		});
	};
})(jQuery);
