/*
 * fontResizer - jQuery Plugin
 *
 * Examples and documentation at: <http://paperplanesdesign.com/cubed/Font-Resizer/fontResizer.html>
 *
 * Copyright (c) 2011 Justin 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: 'ON',
	increment: 2,
	incrementDisable: 'DISABLED',
	$increaseClickItem: $('#navServiceMetaZoom li.btnPlus a'),
	$decreaseClickItem: $('#navServiceMetaZoom li.btnMinus a'),
	$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);
