/*!
 * fontResize JavaScript 
 * http://simplersolutions.biz
 *
 * modified by Antoine Peyres
 */


( function($) {
	$.cookie = function(name, value){
		if (document.cookie && document.cookie != '') {
			if (typeof value == 'undefined') {
				value = document.cookie.substring(document.cookie.indexOf(name))
				var start = value.indexOf('=') + 1;
				var end = value.indexOf(';');
				if(end == -1)
					end = value.length;
				return value.substring(start, end);
			}
			else {
				document.cookie = name+'='+value;
			}
		}
	};


	$.fn.fontResize = function(params) {
	
		var settings = $.extend({
			workingTest:  function() { return true; },
			targetNode: "body",
			percent: 0.1,
			labels: '<div class="font-resize"><a href="" class="decrease" rel="resize-1">-A</a><a href="" rel="resize0">A</a><a href="" class="increase" rel="resize1">+A</a></div>',
			callback: function() {}
		}, params);
		
		
		var resize = function(changeFactor) {
			var newSize;
			
			// if setting absolute value use that rather than calculating new value
			if (changeFactor == 0) {
				newSize = $(settings.targetNode).data('defaultFontSize');
			}
			else {
				// find existing target element to resize
				var currentSize = $(settings.targetNode).css("font-size");
		
				// split out the numeric element
				var currentSizeValue = parseInt(currentSize);
				var currentSizeUnits = currentSize.replace(currentSizeValue, "");
	
				// if we got garbage leave now
				if (isNaN(currentSizeValue)) {
					return;
				}

				// calculate new font size
				var changeFactor = 1 + changeFactor*settings.percent;
				newSize = Math.round(currentSizeValue * changeFactor) + currentSizeUnits;
			}
			
			// resize
			$(settings.targetNode).css("font-size", newSize);
			$.cookie('fontsize', newSize);
	
		};


		this.each( function() {
			var defaultSize = $(settings.targetNode).css("font-size");
			$(settings.targetNode).data('defaultFontSize', defaultSize);
			if($.cookie('fontsize') == null) {
				$.cookie('fontsize', initSize);
			}
			
			// create the node with the links
			$(this).append(settings.labels);

			$('.font-resize a', this).click(function() {
				if(settings.workingTest()) {
					resize(parseInt(this.rel.substr(6)));
					settings.callback();
				}
				return false;
			});
			
			if($.cookie('fontsize')) {
				$(settings.targetNode).css("font-size", $.cookie('fontsize'));
				settings.callback();
			}
			
		});
	};

})(jQuery);

