/**
 * 
 * @param {Object} local_conf
 */
jQuery.fn.fontSizeSwitch = function(local_conf) {
	//
    var conf = {};

	conf.contentJQ = jQuery([]);

	conf.sizes = {
		standard: true,
		medium: true,
		big: true};

	conf.cookiePrefix = 'FontSizeSwitch_';
	conf.cookieDays = 7;

	//
	var standard = {};
	
	standard.sizes = {
        standard: {
            contentClass: 'fontSize-standard',
			buttonJQ: jQuery([])},
        medium: {
            contentClass: 'fontSize-medium',
			buttonJQ: jQuery([])},
        big: {
            contentClass: 'fontSize-big',
			buttonJQ: jQuery([])}};

	//
	var boxJQ = jQuery(this);
	
	var contentClasses = '';

	/**
	 * 
	 */
	var init = function (local_conf) {
		conf = jQuery.extend(conf, local_conf);

		//
		for(var size in conf.sizes) {
			if(typeof(standard.sizes[size]) !== 'undefined') {
				if(typeof(conf.sizes[size]) === 'object' || conf.sizes[size] === true) {
					conf.sizes[size] = jQuery.extend(true, standard.sizes[size], conf.sizes[size]);
				}
				else {
					delete conf.sizes[size];
					continue;
				}
			}
			
			contentClasses += contentClasses.length ? ' ' : '';
			contentClasses += conf.sizes[size].contentClass;
		}

		//
	    var activeSize = null;
	    var defaultSize = null;

		for(var size in conf.sizes) {
			if(conf.contentJQ.hasClass(conf.sizes[size].contentClass)) {
				activeSize = size;
				defaultSize = size;

				break;
			}
			
			if(defaultSize === null) {
				defaultSize = size;
			}
		}

		if(activeSize === null) {
		    activeSize = jQuery.cookie(conf.cookiePrefix + 'activeSize');
		}

		if(activeSize === null) {
		    activeSize = defaultSize;
		}

	    conf.contentJQ.addClass(conf.sizes[activeSize].contentClass);
	    conf.sizes[activeSize].buttonJQ.addClass('active');

		//
		for(var size in conf.sizes) {
			conf.sizes[size].buttonJQ.click(function(){
				var activeSize = null;

				for(var size in conf.sizes) {
					if(this == conf.sizes[size].buttonJQ.get(0)) {
						activeSize = size;
						conf.sizes[size].buttonJQ.addClass('active');
					}
					else {
						conf.sizes[size].buttonJQ.removeClass('active');
					}
				}

		        conf.contentJQ
		            .removeClass(contentClasses)
		            .addClass(conf.sizes[activeSize].contentClass);
		
		        jQuery.cookie(conf.cookiePrefix + 'activeSize', activeSize, {expires: conf.cookieDays, path: '/'});
		
		    	return false;
			});
		}
		
		//
		boxJQ.show();
	}
	
	//
	jQuery(document).ready(
    	function () {
        	init(local_conf);
    	}
    );			
}

