

	// on dom ready
	window.addEvent('domready', function() {

		// initialize menu and intern links
		initMenu();
		ajaxifyLinks();
		// make external links open in a new window
		targetLinks();

	});


	// on load
	window.addEvent('load', function() {

		var image1 = new Image(), image2 = new Image(), image3 = new Image(), image4 = new Image();

		image1.src = "images/sidebarCircles.jpg";
		image2.src = "images/sidebarGears.jpg";
		image3.src = "images/sidebarStars.jpg";
		image4.src = "images/sidebarLeafs.jpg";

	});


	// let the menu work with ajax and create mouseover effects for the menu items
	function initMenu()
	{
		windowScrollFx = new Fx.Scroll(window, {
			link: 'cancel',
			duration: 400
		});
		sidebarFadeFx = new Fx.Tween('sidebar', {
			property: 'opacity',
			link: 'chain',
			duration: 600
		});


		$('menuMap').getElements('area').each(function(area, index){

			// get menuItem
			var menuItem = $('menuItem' + (index + 1)).getElement('img');

			// set styles of menuItem
			if (!menuItem.hasClass('active'))
			{
				menuItem.setStyles({
					opacity: '0',
					display: 'block'
				});
			}
			else
			{
				menuItem.setStyles({
					opacity: '1',
					display: 'block'
				});
			}


			// create menuitem fx
			window['menuItem' + (index + 1) + 'Fx'] = new Fx.Tween(menuItem, {
				property: 'opacity',
				link: 'cancel',
				duration: 400
			});

			// set events
			area.onmouseover = function(){
				if (!menuItem.hasClass('active'))
				{
					window['menuItem' + (index + 1) + 'Fx'].start(1);
				}
			}
			area.onmouseout = function(){
				if (!menuItem.hasClass('active'))
				{
					window['menuItem' + (index + 1) + 'Fx'].start(0);
				}
			}
			area.addEvent('click', getContent.bindWithEvent(null, [menuItem, area]));

		})
	}


	// fetch content through AJAX
	function getContent(e, menuItem, target)
	{
		if (menuItem.hasClass('active')) return false;

		target.setStyle('cursor', 'wait');

		if (target.tagName.toLowerCase() == 'a')
		{
			windowScrollFx.start(0, 285);
		}

		sidebarFadeFx.start(0).chain(function(){
			new Request.HTML({
				data: 'action=getFileContents&target=../../' + target.href.match(/[^\/\\]+$/) + '&requestElementId=content',
				autoCancel: true,
				update: $('content'),
				onSuccess: function(responseText, responseXML){
					target.setStyle('cursor', 'pointer');
					var previousActiveMenuItem = $$('#menu img.active')[0];
					previousActiveMenuItem.removeClass('active');
					window[previousActiveMenuItem.getParent().id + 'Fx'].start(1, 0);
					menuItem.addClass('active');
					window[menuItem.parentNode.id + 'Fx'].start(1); // making sure the menuitem is highlighted (i.e. when mousedout in the meantime)
					$('sidebar').className = target.href.match(/[^\/\\]+$/)[0].replace(/\.[^\.]*$/, '');
					ajaxifyLinks();
					targetLinks();
					sidebarFadeFx.start(1);
				}
			}).get('scripts/adaptor/adapterLoad.php');
		});

		return false;
	}


	// let intern links work with ajax
	function ajaxifyLinks()
	{
		$$('a.internLink').each(function(internLink){

			var index = internLink.className.replace(/.*index\[([0-9]*)\].*/, '$1');
			var menuItem = $('menuItem' + index).getElement('img');

			// set events
			internLink.onmouseover = function(){
				if (!menuItem.hasClass('active'))
				{
					window['menuItem' + index + 'Fx'].start(1);
				}
			}
			internLink.onmouseout = function(){
				if (!menuItem.hasClass('active'))
				{
					window['menuItem' + index + 'Fx'].start(0);
				}
			}
			internLink.addEvent('click', getContent.bindWithEvent(null, [menuItem, internLink]));

		});
	}


	// let external links open in a new window
	function targetLinks()
	{
		$$('a.externLink').each(function(externLink){
			externLink.target = '_blank';
		});
	}

