﻿var FontResizer = new Class({
	
	//implements
	Implements: [Options],

	//options
	options: {
		container: 'textSizeButtons',
		minimum: 3,
		maximum: 3,
		defaultSize: 12
	},
	
	//initialization
	initialize: function(options) {
		//set options
		this.setOptions(options);
		this.elements = $$('.middle p, .middle a, .header p, .header a');
		this.smallerButton = $(this.options.container).getElement('.small').setStyle('fontSize',this.options.defaultSize - 2)
		this.largerButton = $(this.options.container).getElement('.large').setStyle('fontSize',this.options.defaultSize + 2)
		this.mediumButton = $(this.options.container).getElement('.medium').setStyle('fontSize',this.options.defaultSize)
		this.elements.each(function(thisElement){
			if($chk(thisElement.style.fontSize) == false) {thisElement.setStyle("fontSize",this.options.defaultSize)}
			thisElement.store('defaultSize',thisElement.getStyle("fontSize").toInt())							
		}.bind(this))
		this.largerButton.addEvent('click',this.increase.bind(this))
		this.smallerButton.addEvent('click',this.decrease.bind(this))
		this.mediumButton.addEvent('click',this.reset.bind(this))
		
	},
	
	increase: function() {
		this.elements.each(function(thisElement){
			if(thisElement.style.fontSize) {
			   var size = parseInt(thisElement.style.fontSize.replace("px", ""));
			} else {
			   var size = this.options.defaultSize;
			}
			if(size < thisElement.retrieve('defaultSize') + this.options.maximum)
			thisElement.setStyle('fontSize',size+1)
		}.bind(this))	
	},
	decrease: function() {
		this.elements.each(function(thisElement){
			if(thisElement.style.fontSize) {
			   var size = parseInt(thisElement.style.fontSize.replace("px", ""));
			} else {
			   var size = this.options.defaultSize;
			}
			if(size > thisElement.retrieve('defaultSize') - this.options.maximum)
			thisElement.setStyle('fontSize',size-1)
		}.bind(this))	
	},
	
	reset: function(){
		this.elements.each(function(thisElement){thisElement.setStyle("fontSize",thisElement.retrieve('defaultSize'))}.bind(this))
	}
	
});
