/*
*********************************************
* Font Resizer - v1
* (c) by Daniel Rabe / Heike Eckes - 091125 - http://www.edicos.de

*********************************************

* use (with default values)
*  <script type="text/javascript">
*     $('document').ready(function() {$('.fontResize').fontResizer();});
*  </script>
*  <div class="fontResize"></div>
*
* use (with customized values)
*  <script type="text/javascript">
*     $('document').ready(function() {$'.fontResize').fontResizer({
*		targetNode :"body, p, div, span, input, textarea, select, a, td, th, h1, h2, h3, h4, h5, em, b, strong, i",
*		changePercent : 100,
*		maxDecreaseSteps: 1,
*		maxIncreaseSteps: 1
*	})
*  </script>
* <div class="fontResize"></div>
*
*/

//TODO: an mehreren Stellen in einer Seite abfange/ keine doppelte anmeldung
( function($) {
	$.fn.fontResizer = function(parms) {
	
		var defaults = {
			targetNode :"body *",
			changePercent : 100,
			maxDecreaseSteps: 2,
			maxIncreaseSteps: 5,
			buttons :'<span class="fr_decrease">-</span><span class="fr_normal">0</span><span class="fr_increase">+</span>',
			cookieName :"fontResizer",
			cookieParms : {
				expires :3,
				path :'/'
			}
		};

	    var currentStep = 0;
        var opts = $.extend( {}, defaults, parms);
		
		this.each( function() { 
				$(this).append(opts.buttons);
				if ( !isNaN( parseInt( $.cookie(opts.cookieName) ) ) ) { // if there is a number - use it
					$.fn.fontResizer.resizeFont( opts, 0 );
				}
				// increase current Font size
				$('.fr_increase').click( function() { 
					$.fn.fontResizer.resizeFont( opts, +1 );
					return false;
				});
				// decrease current Font size
				$('.fr_decrease').click( function() {
					$.fn.fontResizer.resizeFont( opts, -1 );
					return false;
				});
				// reset to original Font size
				$('.fr_normal').click( function() {
					$.fn.fontResizer.resetFonts( opts );
					return false;
				});
			});
	};   
	
	// current Font size reset function 
	$.fn.fontResizer.resetFonts = function( opts ) {
		$( opts.targetNode ).each( function(){
			var element = $(this);
			if ( element.data('resizeFontsOriginalValue') != null ){
				element.css( 'font-size', element.data('resizeFontsOriginalValue') );
			}
		})
		return  $.cookie(opts.cookieName, 0, opts.cookieParms);
	} 
	
	// current Font size resize function
	$.fn.fontResizer.resizeFont = function( opts, resizeValue ) {
		var currentStep = parseInt( $.cookie(opts.cookieName) ); 
		if ( isNaN( currentStep ) ) currentStep = 0;  
		
 		var nextStep = currentStep + resizeValue; 
			 
		// resize step  
		if ( -1 * opts.maxDecreaseSteps > nextStep ){  
			return   //TODO deactivate & reactivate status hinzufügen
		} 
		if ( opts.maxIncreaseSteps < nextStep ){ 
			return;  
		} //TODO deactivate & reactivate status hinzufügen  
  
		currentStep = nextStep;		
		 
		// actual resizing
        $( opts.targetNode ).each( function(){  
		    var element = $(this)
			var cssFontSize = element.css('font-size')  // with unit. 11px oder 1.2em
			var size = parseInt( cssFontSize )
			if (isNaN( size )) {
			    return;
		    }			
			if ( element.data('resizeFontsOriginalValue') == null ){
				element.data('resizeFontsOriginalValue', size);
			}
			var orginal = parseInt(element.data('resizeFontsOriginalValue'));
			var newSize =  orginal + Math.round( ( opts.changePercent / 100 ) * currentStep );
			cssFontSize = cssFontSize.replace( size, newSize );
			element.css('font-size', cssFontSize); 
		})
		// store step in cookie
		// alert( "NEW currentStep: " + currentStep )
		$.cookie(opts.cookieName, currentStep, opts.cookieParms);
	};
})(jQuery);