window.onload = initAll;
menuArray = new Array("home", "about", "archive", "contact");
menuActive = null;
function initAll() {
	$('home').observe('click', home);
	$('about').observe('click', about);
	$('archive').observe('click', archive);
	$('contact').observe('click', contact);
	//stopObserving(element, eventName);
}
function home() {
	if(menuActive != menuArray.indexOf("home")) {
		updateContent("home.txt");
	}
	menuActive = menuArray.indexOf("home");
}
function about() {
	if(menuActive != menuArray.indexOf("about")) {
		updateContent("about.txt");
	}
	menuActive = menuArray.indexOf("about");
}
function archive() {
	if(menuActive != menuArray.indexOf("archive")) {
		updateContent("archive.txt");
	}
	menuActive = menuArray.indexOf("archive");
}
function contact() {
	if(menuActive != menuArray.indexOf("contact")) {
		updateContent("contact.txt");
	}
	menuActive = menuArray.indexOf("contact");
}
function addContent(url) {
	new Ajax.Request(url,
	{
		method:'get',
		onSuccess: function(transport) {
			var response = transport.responseText || "no response text";
			item = $('Content');
			buildTempContent(response);
			//$('Content').update(response);
		},
		onFailure: function(){ alert('Something went wrong...') }
	});
}
function buildTempContent(innerContent) {
	tempDiv = $('ContentWrapper').insert('<div id="tempContent">' + innerContent + '</div>');
	tempDiv.hide();
	$('Content').remove();
	$('tempContent').setAttribute("id", "Content");
	$('ContentWrapper').show();
	new Effect.AddRight($('Content'));
}
function updateContent(url) {
	item = $('Content');
	new Effect.DropRight(item, url);
}
Effect.DropRight = function(element, url) {
	element = $(element);
	var oldStyle = {
		top: element.getStyle('top'),
		left: element.getStyle('left'),
		opacity: element.getInlineOpacity()
	};
	return new Effect.Parallel([
		new Effect.Move(element, {x: 100, y: 0, sync: true }), 
		new Effect.Opacity(element, { sync: true, to: 0.0 }),
		new Effect.Morph(element, {sync: true})
	],
	Object.extend( {
		duration: 1,
		beforeSetup: function(effect) {
			effect.effects[0].element.makePositioned();
		},
		afterFinishInternal: function(effect) {
			effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);
			addContent("content/" + url);
		}
	}, arguments[1] || { }));
};
Effect.AddRight = function(element) {
	//alert("addright called");
	element = $(element);
	element.setOpacity(0.0);
	element.setStyle({'left': '-100%'});
	var oldStyle = {
		top: 0,
		left: 0,
		opacity: 1.0,
		display: 'block'
	};
	return new Effect.Parallel([
		new Effect.Move(element, {x: 100, y: 0, sync: true }), 
		new Effect.Opacity(element, { sync: true, from: 0, to: 1 }) 
	],
	Object.extend( {
		duration: 1,
		beforeSetup: function(effect) {
			effect.effects[0].element.makePositioned();
			effect.effects[0].element.setOpacity(0.0);
			effect.effects[0].element.setStyle("left: -100pt");
		},
		afterFinishInternal: function(effect) {
			effect.effects[0].element.undoPositioned().setStyle(oldStyle);
		}
	}, arguments[1] || { }));
};
