/*!
 * fontResize JavaScript 
 * http://simplersolutions.biz
 *
 * resize the font
 * 
 * LICENSE:   Creative Commons – Attribution required
 *
 * author    simpler solutions <info@simplersolutions.biz>
 * license   Creative Commons – Attribution required
 * version   CVS: $Id$
 * link      http://simplersolutions.biz
 */

/**
 * Resize the font on your page
 * 
 * @example $('#fontResizer').fontResize();
 * @desc Add the font resizer logic into node 'fontResizer'.
 * @example $('#fontResizer).fontResize({defaultLabels :'<a href="" class="decreaseFont fontresize">smaller</a><a href="" class="normalizeFont fontresize">normal</a><a href="" class="increaseFont fontresize">bigger</a>'});
 * @desc Add the font resizer logic into node 'fontResizer' and change how the html looks
 * @example $('#fontResizer').fontResize({defaultSize :'16px'});
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author simplersolutions.biz
 */
( function($) {
	$.fn.fontResize = function(parms) {

		// set the options include any overrides
		var opts = $.extend( {}, $.fn.fontResize.defaults, parms);
		
		this.each( function() {
			
				// create the node with the links
				$(this).append(opts.defaultLabels);

				// if the cookie exists then use it
				if ($.cookie(opts.defaultCookieName)) {
					$.fn.fontResize.reSize(false, $.cookie(opts.defaultCookieName));
				}

				// bind increases
				$('.' + opts.defaultIncreaseClass).click( function() {
					$.fn.fontResize.reSize(true);
					return false;
				});

				// bind decreases
				$('.' + opts.defaultDecreaseClass).click( function() {
					$.fn.fontResize.reSize(false);
					return false;
				});

				// bind reset to default size
				$('.' + opts.defaultNormalizeClass).click( function() {
					$.fn.fontResize.reSize(false, opts.defaultSize);
					return false;
				});
			});
	};

	$.fn.fontResize.reSize = function(increase, absoluteValue) {
		

		var newFontSize = 0;
		var min = 0;
		var max = 0;
		var unitsPart = "";

		// if setting absolute value use that rather than calculating new value
		if (absoluteValue) {
			newFontSize = parseInt(absoluteValue);
			unitsPart = absoluteValue.replace(newFontSize, "");
			min = newFontSize;
			max = newFontSize;
		} else {

			// calculate change factor
			var changeFactor = increase ? 1 + ($.fn.fontResize.defaults.defaultChangePercent / 100)
					: 1 - ($.fn.fontResize.defaults.defaultChangePercent / 100);
	
			// find existing target element to resize
			var nodeCurrentSize = $($.fn.fontResize.defaults.defaultTargetNode).css(
					"font-size");
	
			// split out the numeric element
			var numericPart = parseInt(nodeCurrentSize);
	
			// if we got garbage leave now
			if (isNaN(numericPart)) {
				return;
			}
	
			// split out the units eg %,px,em
			unitsPart = nodeCurrentSize.replace(numericPart, "");
	
			// calculate new font size
			newFontSize = Math.round(parseInt(nodeCurrentSize) * changeFactor);

			min = parseInt($.fn.fontResize.defaults.defaultMinSize);
			max = parseInt($.fn.fontResize.defaults.defaultMaxSize);
		}

		if ((newFontSize <= max) && (newFontSize >= min)) {
			// resize
			$($.fn.fontResize.defaults.defaultTargetNode)
						.css("font-size", newFontSize + unitsPart);
			
			return $.cookie($.fn.fontResize.defaults.defaultCookieName, newFontSize + unitsPart,
					$.fn.fontResize.defaults.defaultCookieParms);
		}
		
		return;

	};
})(jQuery);

  /*
	 * ! Abstract defaults into properties, change if you wish note that
	 * available defaultCookieParms are { expires: n, path: '/abc', domain:
	 * 'yourdomain', secure: boolean }
	 * place function outside of closure so that it can be overriden
	 * 
	 */
	$.fn.fontResize.defaults = {

		defaultTargetNode :"body",
		defaultChangePercent :20,
		defaultSize :"100%",
		defaultMinSize:"9px",
		defaultMaxSize:"25px",
		defaultLabels :'<a href="" class="decreaseFont fontresize">A-</a><a href="" class="normalizeFont fontresize">A</a><a href="" class="increaseFont fontresize">A+</a>',
		defaultDecreaseClass :"decreaseFont",
		defaultIncreaseClass :"increaseFont",
		defaultNormalizeClass :"normalizeFont",
		defaultInsertionNode :"fontResizer",
		defaultCookieName :"metrogroupFontResizer",
		defaultCookieParms : {
			expires :3,
			path :'/'
			}
	};
	

