/**************************************************************

	Script		: mooSize
	Version		: 1.0
	Usage		: window.addEvent('domready', function(){
					  //call mooSwitch
					  if($$('.mooSwitch').length > 0)//only triggered if 'mooSwitch' id is found on page
					  {
							var initSwitch = new mooSwitch({
								container: $(document.body),//inline font-size style will be applied to this
								linksContainer: $('ChangeTextSize'),//container that holds the text size links (error message will be output here)
								templateContainer: $('ChangeTemplate'),//container that holds the template links (error message will be output here)
								smallSize: '90%',//small font size
								mediumSize: '100%',//medium font size(should be your default size)
								largeSize: '110%',//large font size
								speed: 400//duration the transition will take
					  		}).start();
					  };
				});

**************************************************************/

//start mooSwitch class
var mooSwitch = new Class({
	
	//implements
	Implements:[Options],

	//options
	options:{
		container: $('Container'),//inline font-size style will be applied to this
		linksContainer: $('AccessMenu'),//container that holds the links (error message will be output here)
		templateContainer: $('ChangeTemplate'),//container that holds the template links (error message will be output here)
		smallSize: '90%',//small font size
		mediumSize: '100%',//medium font size(should be your default size)
		largeSize: '110%',//large font size
		speed: 400//duration the transition will take
	},
	
	//initialization
	initialize:function(options)
	{
		//set options
		this.setOptions(options);
	},
	
	//detect whether or not cookies are enabled
	start:function()
	{
		//set font size to small as default
		var myCookieSizeSet = Cookie.write('mooSizeTest','1',{duration:365});
		var myCookieSizeRead = Cookie.read('mooSizeTest');
		var myCookieSaved = Cookie.read('mooSizeSaved');
			
		//if cookie above was not successfully set then display error div but only if first visit
		if(myCookieSizeRead == 1 && myCookieSaved == null)
		{
			//build div
			if(this.options.linksContainer != null)//prevent an error if linksContainer isnt specified
			{
				/*var cookieAlert = new Element('div').inject(this.options.linksContainer.getParent(),'inside');
				cookieAlert.addClass('mooSizeAlertGreen');
				cookieAlert.set('html','<p>Your settings will be saved from now on!</p>');*/
			};
				
			//set cookie so this loop isnt triggered for another year
			Cookie.write('mooSizeSaved','1',{duration:365});
		}
		else if(myCookieSizeRead == null)
		{
			//build enable cookie alert div
			if(this.options.linksContainer != null)//prevent an error if linksContainer isnt specified
			{
				/*var cookieAlert = new Element('div').inject(this.options.linksContainer.getParent(),'after');
				cookieAlert.addClass('mooSizeAlertRed');
				cookieAlert.set('html','<p>You need to enable cookies for settings to be saved!</p>');*/
			};
		};
		
		//call next function
		this.setCookies();
	},
	
	//start building the collapsibles
	setCookies:function()
	{
		//set up size variables
		var myCookieSize = Cookie.read("mooSize");
		var myCookieTemplate = Cookie.read("mooTemplate");
		var smallA = $$(".mooSwitch li.small a");
		var mediumA = $$(".mooSwitch li.medium a");
		var largeA = $$(".mooSwitch li.large a");
		var morphTextSize = new Fx.Morph(this.options.container,{duration:this.options.speed,transition:Fx.Transitions.linear,'unit':'%'});
		
		//check to see if a template was ever set
		if(myCookieTemplate == null)
		{
			//set cookie to default template one so rest of class will work
			Cookie.write('mooTemplate','One',{duration:365});
		};
		
		//set link selected class to selected depending on cookie value
		if(myCookieSize == "large")
		{
			//change selected states
			smallA.removeClass('selected');
			mediumA.removeClass('selected');
			largeA.addClass('selected');
			
			//change text size
			this.options.container.setStyle('font-size',this.options.largeSize);
		}
		else if(myCookieSize == "medium")
		{
			//change selected states
			smallA.removeClass('selected');
			mediumA.addClass('selected');
			largeA.removeClass('selected');
			
			//change text size
			this.options.container.setStyle('font-size',this.options.mediumSize);
		}
		else if(myCookieSize == "small")
		{
			//change selected states
			smallA.addClass('selected');
			mediumA.removeClass('selected');
			largeA.removeClass('selected');
			
			//change text size
			this.options.container.setStyle('font-size',this.options.smallSize);
		}
		else if(myCookieSize != null)
		{
			//change text size since it must be a percentage value for second template
			this.options.container.setStyle('font-size',myCookieSize+'%');
		}
		else
		{
			//if its default template & no cookie size set middle A selected and set cookie
			if(Cookie.read("mooTemplate") == 'One')
			{
				mediumA.addClass('selected');
				Cookie.write('mooSize','medium',{duration:365});
			};
		};
		
		//set up events for each link to set cookie value
		//small
		smallA.addEvents
		({
			'click': function(event)
			{
				//prevent default
				event.preventDefault();
				
				//morph text size and set cookie
				if(Cookie.read("mooTemplate") == 'One')
				{
					//set cookie
					Cookie.write('mooSize','small',{duration:365});
					
					//set font size
					morphTextSize.start({
						'font-size': this.options.smallSize
					});
					
					//change selected states
					smallA.addClass('selected');
					mediumA.removeClass('selected');
					largeA.removeClass('selected');
				}
				else
				{
					if(this.options.container.getStyle('font-size').toInt() > 45)
					{
						//set cookie
						Cookie.write('mooSize',this.options.container.getStyle('font-size').toInt()-5,{duration:365});
						
						//set font size
						morphTextSize.start({
							'font-size': this.options.container.getStyle('font-size').toInt()-5+'%'
						});
					};
				};
			}.bind(this)
		},this);

		//medium
		mediumA.addEvents
		({
			'click': function(event)
			{
				//prevent default
				event.preventDefault();
				
				//morph text size and set cookie
				if(Cookie.read("mooTemplate") == 'One')
				{
					//set cookie
					Cookie.write('mooSize','medium',{duration:365});
					
					//set font size
					morphTextSize.start({
						'font-size': this.options.mediumSize
					});
					
					//change selected states
					smallA.removeClass('selected');
					mediumA.addClass('selected');
					largeA.removeClass('selected');
				};
			}.bind(this)
		},this);
		
		//large
		largeA.addEvents
		({
			'click': function(event)
			{
				//prevent default
				event.preventDefault();
				
				//morph text size and set cookie
				if(Cookie.read("mooTemplate") == 'One')
				{
					//set cookie
					Cookie.write('mooSize','large',{duration:365});
					
					//set font size
					morphTextSize.start({
						'font-size': this.options.largeSize
					});
					
					//change selected states
					smallA.removeClass('selected');
					mediumA.removeClass('selected');
					largeA.addClass('selected');
				}
				else
				{
					if(this.options.container.getStyle('font-size').toInt() < 75)
					{
						//set font size
						morphTextSize.start({
							'font-size': this.options.container.getStyle('font-size').toInt()+5+'%'
						});
						
						//set cookie
						Cookie.write('mooSize',this.options.container.getStyle('font-size').toInt()+5,{duration:365});
					};
				};
			}.bind(this)
		},this);
		
		//set up template variables
		var myCookieTemplate = Cookie.read("mooTemplate");
		var templateOne = $$(".mooSwitch li.TemplateOne a");
		var templateTwo = $$(".mooSwitch li.TemplateTwo a");
		
		//set link to selected depending on cookie value
		if(myCookieTemplate == "Two")
		{
			//change selected states
			templateOne.removeClass('selected');
			templateTwo.addClass('selected');
			
			//change template
			var myCSS = new Asset.css('./styles/TemplateTwo.css',{id:'TemplateTwo',title:'TemplateTwo'});
		}
		else
		{
			//change selected states
			templateOne.addClass('selected');
			templateTwo.removeClass('selected');
		};
		
		//set up events for each link to set cookie value
		//template one
		templateOne.addEvents
		({
			'click': function()
			{
				//set cookie
				Cookie.write('mooTemplate','One',{duration:365});
				
				//set template
				var myCSS = new Asset.css('./styles/TemplateOne.css',{id:'TemplateOne'});
				
				//change selected states
				templateOne.addClass('selected');
				templateTwo.removeClass('selected');
				
				//refresh page
				window.location.reload();
			}
		});
		
		//template two
		templateTwo.addEvents
		({
			'click': function()
			{
				//set cookie
				Cookie.write('mooTemplate','Two',{duration:365});
				
				//set template
				var myCSS = new Asset.css('./styles/TemplateTwo.css',{id:'TemplateTwo'});
				
				//change selected states
				templateOne.removeClass('selected');
				templateTwo.addClass('selected');
				
				//refresh page
				window.location.reload();
			}
		});
	}
});