var SharedHandler = new Class
(
	{
		initialize: function(options)
		{
			// set options
			this.setOptions(options);

			// set tabs actions
			this.addTabEvents();

			// set menu collapse/expand events
			this.build_menu($$('div#tree p'));
		},
		build_menu: function(menu)
		{
			// Collapse/Expand menu
			menu.each(
				function(p)
				{
					p.addEvents(
						{
							click: function(e)
							{
								this.toggle(p, p.getNext());
								
									new Event(e).stop();
							}.bind(this),
							mouseenter: function(e)
							{
								new Event(e).stop();
								
								if(p.hasClass('lvl2'))
								{
									p.addClass('lvl2-hover');
								}
								else
								{
									p.addClass('hover');
								}
							},
							mouseleave: function(e)
							{
								new Event(e).stop();
								
								if(p.hasClass('lvl2'))
								{
									p.removeClass('lvl2-hover');
								}
								else
								{
									p.removeClass('hover');
								}
							}
						}
					);
				}, this
			);
		},
		addTabEvents: function()
		{
			this.options.ACME.addEvent('click',
				function()
				{
					this.options.ACME.getElement('img').setProperty('src', './media/images/acme-on.png');
					this.options.GNT.getElement('img').setProperty('src', './media/images/gnt-off.png');
					this.options.ELKO.getElement('img').setProperty('src', './media/images/elko-off.png');
					
					// garbage collection
					$$('div#tree p').removeEvents();
					$('tree').setText('Kraunasi...');

					var url  = "/ajax/load_acme/";
					var ajax = 	new Ajax(url,
									{
										method: 'get',
										update: $('tree'),
										onComplete: function()
										{
											this.build_menu($$('div#tree p'));
										}.bind(this)
									});
									
					ajax.request();
				}.bind(this)
			);
			
			this.options.GNT.addEvent('click',
				function()
				{
					this.options.ACME.getElement('img').setProperty('src', './media/images/acme-off.png');
					this.options.GNT.getElement('img').setProperty('src', './media/images/gnt-on.png');
					this.options.ELKO.getElement('img').setProperty('src', './media/images/elko-off.png');
					
					// garbage collection
					$$('div#tree p').removeEvents();
					$('tree').setText('Kraunasi...');

					var url  = "/ajax/load_gnt/";
					var ajax = 	new Ajax(url,
									{
										method: 'get',
										update: $('tree'),
										onComplete: function()
										{
											this.build_menu($$('div#tree p'));
										}.bind(this)
									});
									
					ajax.request();
				}.bind(this)
			);
			
			this.options.ELKO.addEvent('click',
				function()
				{
					this.options.ACME.getElement('img').setProperty('src', './media/images/acme-off.png');
					this.options.GNT.getElement('img').setProperty('src', './media/images/gnt-off.png');
					this.options.ELKO.getElement('img').setProperty('src', './media/images/elko-on.png');
					
					// garbage collection
					$$('div#tree p').removeEvents();
					$('tree').setText('Kraunasi...');

					var url  = "/ajax/load_elko/";
					var ajax = 	new Ajax(url,
									{
										method: 'get',
										update: $('tree'),
										onComplete: function()
										{
											this.build_menu($$('div#tree p'));
										}.bind(this)
									});
									
					ajax.request();
				}.bind(this)
			);
		},
		toggle: function(p, div)
		{
			if(div.hasClass('collapsed'))
			{
				div.removeClass('collapsed');
				div.addClass('expanded');
				
					if(p.hasClass('lvl2'))
					{
						p.addClass('lvl2-open');
					}
					else
					{
						p.addClass('open');
					}
			}
			else
			{
				div.removeClass('expanded');
				
					if(p.hasClass('lvl2'))
					{
						p.removeClass('lvl2-open');
					}
					else
					{
						p.removeClass('open');
					}

				div.addClass('collapsed');
			}
		}
	}
);
window.addEvent('domready',
	function()
	{
		new Asset.images(
			[
				'./media/images/gnt-on.png',
				'./media/images/elko-on.png',
				'./media/images/acme-off.png',
				'./media/images/loading.gif'
			]
		);
	
		SharedHandler.implement(new Options);

		var Shared = new SharedHandler(
			{
				ACME: $('acme_tab'),
				GNT:  $('gnt_tab'),
				ELKO: $('elko_tab')
			}
		);
	}
);