Event.observe(window,"load",function(){
	setupClientChanger();
	setupPageSlider();
});

function setupClientChanger()
{
	var parent = $(document.body).down(".slide_clients")
	
	if(!parent) return;
	
	parent.select(".client_list a").invoke("observe","click",changeClient);
}

function changeClient(event)
{
	var parent = $(document.body).down(".slide_clients");
	var open = parent.down(".client_details .client_show");
	if(open){
		open.fade()
			.removeClassName("client_show")
			.addClassName("client_hide");
	}
	
	var client = this.up("div").className.replace("client_show","").replace("client_hide","");
	parent.down(".client_details ."+client)
			.setOpacity(0)
			.appear()
			.addClassName("client_show")
			.removeClassName("client_hide");
	
	//	Update the menu to show the correct client
	parent.down(".client_list .client_show").removeClassName("client_show");
	parent.down(".client_list ."+client).addClassName("client_show");
	
	event.stop();
	return false;
}

function setupPageSlider()
{
	var pages		=	new Array();
	var parent		=	$(document.body).down(".slide_container");
	var currentPage	=	parent.down(".page_current");
	var menu		=	$(document.body).down(".menu");
	
	$(document.body).select(".menu li").each(function(item){
		pages.push({
			name:	item.identify(),
			active:	item.hasClassName("active"),
			node:	false
		});
	});
	
	var pageBefore	=	"page_before";
	var pageAfter	=	"page_after";
	var pageClass	=	pageBefore;
	var pageCurrent	=	parent.down(".page_current");
	
	//	Loop through all the pages and creates the necessary structures to build the page
	pages.each(function(p){
		if(p.active){
			pageClass	=	pageAfter;
			p.node		=	currentPage;
			return;
		}
		
		var options = {
			onSuccess: function(t){
				parent.insert(t.responseText);
				this.node = parent.down(".container:last-child");
				
				resizePages();
				
				pageCurrent.setStyle({position:"absolute"});
				
				//	Setup the animation for changing the clients
				if(this.name == "Vi_Clients"){
					setupClientChanger();
				}
				
				if(this.name == "Vi_Services"){
					//	Need to attach the animations here
					Amslib_Simple_Fader_Slideshow.autoload();
					Amslib.UI.Accordion.autoload();
					
					//	Attach all new accordions with the afterFinish handler
					$$("."+Amslib.UI.Accordion.config.auto).each(function(a){
						a.retrieve(Amslib.UI.Accordion.config.nodeStorage).observe("afterFinish",resizePages);
					});
				}
			}.bind(p),
			onFailure: function(t){
				location.reload();
			}
		}
		
		//	We have to load the page
		var request = new Ajax.Request("/slide-loader/"+p.name+"/"+pageClass,options);
	});
	
	$(document.body).select(".menu li a").invoke("observe","click",function(event){
		var node	=	this.up("li");
		var id		=	node.identify();
		
		//	Only slide to the page, when it's not the current page
		if(!node.hasClassName("active")){
			//	The home background needs to fade in/out when it's selected
			var bk	=	$(document.body).down(".amslib_fullscreen_image");
			if(id == "Vi_Home") bk.appear();
			else bk.fade();
			
			slideTo(id);
			
			//	Change the border colours at the top/bottom
			var border = new Hash();
			border.set("Vi_Home","border-color: #4FB649");
			border.set("Vi_Services","border-color: #F1732E");
			border.set("Vi_Clients","border-color: #EC008C");
			border.set("Vi_About_Us","border-color: #6FD3F7");
			border.set("Vi_Contact","border-color: #2FFB87");
			$(document.body).down(".header").morph(border.get(id));
			$(document.body).down(".footer").morph(border.get(id));

		}
		
		event.stop();
		return false;
	});
	
	var slideTo = function(id){
		var func = {"left": slideLeft, "right": slideRight};
		var direction = "left";
		pages.each(function(p){
			if(p.active){
				direction = "right";
				p.active = false;
			}else if(p.name == id && p.node){
				menu.down("li.active").removeClassName("active");
				menu.down("#"+id).addClassName("active");
					
				p.active = true;
				func[direction](p.node);
			}
		});
	}
	
	var slideLeft = function(prevPage)
	{
		currentPage.morph("left:100%");
		prevPage.morph("left:0%",{afterFinish:rearrangeSlides});
		currentPage = prevPage;
	};
	
	var slideRight = function(nextPage)
	{
		currentPage.morph("left:-100%");
		nextPage.morph("left:0%",{afterFinish:rearrangeSlides});
		currentPage = nextPage;
	};
	
	var rearrangeSlides = function()
	{
		var position = "-100%";
		pages.each(function(p){
			if(p.active){
				position = "100%";
				p.node.setStyle({left:"0%"});
			}else{
				p.node.setStyle({left:position});
			}
		});
	}
}

function resizePages()
{
	var parent = $(document.body).down(".slide_container");
	
	//	Resize the height to the maximum slide height
	var maxHeight = parent.select(".page_content").map(function(node){
		return node.getDimensions().height;
	}).max();
	
	parent.setStyle({height:maxHeight+"px"});
}
