/**
* Font resizer
* @author a.weeber, Wisdom
* @date 03-2009
* @namespace YAHOO.widgets 
* @module fontResizer
* @static
* @requires yahoo, dom, event,cookie (optional) from YUI Library 2.x
*/ 


YAHOO.namespace("widgets");
YAHOO.widgets.fontResizer = (function() {
		
	/**
	* Yui shortcut variables 
	* @final 
	*/
	
	var Dom = YAHOO.util.Dom,
		Event = YAHOO.util.Event;
	
	/**
	* Module settings object 
	* @final 
	*/
	
	var settings = {

		containerId		: "container",
		moduleId		: "fontResizer",
		fontResizeClass	: "fontResize",
		activeClass		: "active",
		storeInCookie	: true,
		cookieName		: "baseFontSize"
	};
	
	/**
	* Initializes the module based on CSS context 
	* @method init
	*/

	var init = function() {
		
		var fontResizeControls = Dom.getElementsByClassName(settings.fontResizeClass, "a", settings.containerId);
		Event.on(fontResizeControls,"click",resizeFont);

		if(settings.storeInCookie) {
			loadCookieState();
		}
	};
	
	/**
	* Resizes the base font size based on size (%) stored in 'rel' attribute
	* If cookie store is enabled, it also writes a cookie with the selected size
	* @method resizeFont
	* @param e {Object} Event
	* @private
	*/

	var resizeFont = function(e) {	
		Event.preventDefault(e);
		var targetPerc = this.rel;
		
		if(targetPerc) {
			Dom.setStyle(settings.containerId, "font-size", targetPerc);	
			var fontResizeNodes = Dom.get(settings.moduleId).getElementsByTagName("li");
			Dom.removeClass(fontResizeNodes, settings.activeClass);
			Dom.addClass(this.parentNode, settings.activeClass);

			// store in cookie
			if(settings.storeInCookie) {
				YAHOO.util.Cookie.set(settings.cookieName, targetPerc, { expires: new Date("January 12, 2099"),path: "/" });	
			}
		}
	};
	
	/**
	* Set font-size based on cookie state value 
	* @method loadCookieState
	* @private
	*/

	var loadCookieState = function() {
		var cookieVal = YAHOO.util.Cookie.get(settings.cookieName);
		Dom.setStyle(settings.containerId, "font-size", cookieVal);

		var controlNode = Dom.getElementsBy(function(el){return el.rel == cookieVal;}, "a", settings.containerId)[0];
		if(controlNode) {
			var fontResizeNodes = Dom.get(settings.moduleId).getElementsByTagName("li");
			Dom.removeClass(fontResizeNodes, settings.activeClass);
			Dom.addClass(controlNode.parentNode, settings.activeClass);
		}
	};

	/**
	* @return {Object} collection of public methods
	*/

	return {
		init:init
	};

})();

YAHOO.util.Event.onDOMReady(YAHOO.widgets.fontResizer.init, YAHOO.widgets.fontResizer, true);

