/*
 * 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 instance = $;
    var oldinstance = null;        
		var defaults = {
      name : 'p1',
      factorX : 1,
      factorY : 1,
      initFontHeight:-1,      
      initCurStep : 3,
      curStep : 0,
      originalSize: -1,
      maxStep : 6,
			sizeType: 'px',
			minFont: 12,
			maxFont: 16,
			fontSet: 14,
      fontHeight: 14,
			setFontOn: 'ON',
			increment: 2,
			incrementDisable: 'DISABLED',
			$increaseClickItem: $('.increaseClickItem'),
			$decreaseClickItem: $('.decreaseClickItem'),
			$setFontButton: $('.setFontSize'),
			cookieName: 'fontResizer'+options.name,
			cookieExpire: cExpireDate,
			cookiePath: '/',
			cookieSet: options.cookieName + '=' + options.fontSet + '-' + options.fontHeight + '-' + options.curStep + ';path=' + options.cookiePath + ' ;expires=' + options.cookieExpire,
			endClick: function () {
				blur;
				return false;
			},
			increaseFontSize: function () {
        if (options.curStep<options.maxStep) {        
          options.fontSet += options.factorX;
          options.fontHeight += options.factorY;          
          options.curStep++;
        } else {
          options.endClick();
        }        
        $content.css('fontSize',options.fontSet + options.sizeType);
        $content.css('line-height',options.fontHeight + options.sizeType);
				document.cookie = options.cookieName + '=' + options.fontSet + '-' + options.fontHeight + '-' + options.curStep + ';path=' + options.cookiePath + ' ;expires=' + options.cookieExpire;
        options.setCurrentFontButton();              
			},
			decreaseFontSize: function () {
        if (options.curStep>0) {        
          options.fontSet -= options.factorX;
          options.fontHeight -= options.factorY;
          options.curStep--;
        } else {
          options.endClick();
        }
				$content.css('fontSize',options.fontSet + options.sizeType);
        $content.css('line-height',options.fontHeight + options.sizeType);
				document.cookie = options.cookieName + '=' + options.fontSet + '-' + options.fontHeight + '-' + options.curStep + ';path=' + options.cookiePath + ' ;expires=' + options.cookieExpire;
        options.setCurrentFontButton();        
			},
			setFontSize: function ( fSize ) {
        fSize=options.originalSize;
        options.fontSet = fSize;
        options.curStep = 3;//options.initCurStep;
        options.fontHeight = options.initFontHeight;        
        $content.css('fontSize',fSize + options.sizeType);
        $content.css('line-height',options.initFontHeight + options.sizeType);
				document.cookie = options.cookieName + '=' + options.fontSet + '-' + options.initFontHeight + '-' + options.curStep + ';path=' + options.cookiePath + ' ;expires=' + options.cookieExpire;
			},
			checkfontSetCookie: function () {            
				var results = document.cookie.match( '(^|;) ?' + options.cookieName + '=([^;]*)(;|$)' );
				if (results) {
          var rozmiary = unescape(results[2]);
          var fonty = rozmiary.split("-");  
					$content.css('fontSize', fonty[0] + options.sizeType);
          $content.css('line-height', fonty[1] + options.sizeType);
          options.curStep = fonty[2]; 
					options.setCurrentFontButton();
				} else {
          options.curStep = options.initCurStep;
        }
			},
			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.fontHeight = parseInt($(this).css('line-height').replace(options.sizeType,''));                
				options.fontSet = parseInt($(this).css('fontSize').replace(options.sizeType,''));                       
        var mnoznik=3-options.curStep;
        options.initFontHeight = options.fontHeight+(options.factorY*mnoznik);
        options.originalSize = options.fontSet+(options.factorX*mnoznik);          
				var minReached = options.fontSet <= options.minFont;

				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);
			}
      
      return false;
      
		});
	};
})(jQuery);
$(document).ready(function() {
    $('#content').fontResizer({});
});
