
var pager = {
	
	init : function()
	{
		if(isHome) pager.collectSlides();
		pager.setStylingReady();
		pager.initLinks();
		
		if(isHome) if(!window.location.hash) window.location.hash = "/fairtrade"
		if(isHome) setInterval(pager.linkInterval,300);
	},
	
	slides : new Object(),
	
	collectSlides : function()
	{
		pager.contentWindows = Dom.getElementsByClassName("content-window","div");
		
		pager.slides.content = Dom.getElementsByClassName("page-slide","div","content-primary");
		pager.slides.headers = Dom.getElementsByClassName("page-slide","div","header");
		pager.menuLinks = Dom.get("spotlight").getElementsByTagName("a");
		
		// loop menu-items
		for(var i=0; i<pager.menuLinks.length; i++)
		{
			// convert title-attributes to lowercase and remove all non-word characters
			pager.menuLinks[i].title = pager.convertTitleToLowerCase(pager.menuLinks[i].title);
			pager.menuLinks[i].number = i;
			
			// inside menu-loop, loop through the content-items to find the match and bind them all together
			for(var j=0; j<pager.slides.content.length; j++)
			{	
				if(pager.slides.content[j].id == pager.menuLinks[i].title)
				{
					pager.slides.content[j].menuItem = pager.menuLinks[i];
					pager.menuLinks[i].contentItem = pager.slides.content[j];
				}
			}
		}
	},
	
	convertTitleToLowerCase : function(name)
	{
		return name.toLowerCase().replace(/[^a-z]/g,"");
	},
	
	setStylingReady : function()
	{
		
		Dom.addClass(document.getElementsByTagName("body")[0],"js");
		
		for(var i=0; i<pager.contentWindows.length; i++)
		{
			var slideCount = Dom.getElementsByClassName("page-slide","div",pager.contentWindows[i]);
			var slideWidth = Dom.getStyle(slideCount[0],"width");
				slideWidth = Number(slideWidth.substring(0, slideWidth.length-2));
			
			// header has no 50px marge extra.
			var windowWidth = (pager.contentWindows[i].parentNode.id == "flash-header") ? slideCount.length*(slideWidth) : slideCount.length*(slideWidth+50);

			Dom.setStyle(pager.contentWindows[i],"width",(windowWidth+200)+"px")
		}
				
		//Dom.setStyle("content-window","width",els.length*753+"px") // 753 = width (703px) + margin-right(50px);
		//Dom.setStyle(els,"float","left");
		//Dom.setStyle("hideslide","display","block");
	},
	
	initLinks : function()
	{
		Event.on(pager.menuLinks, "click", pager.linkClickEvent);
		
		// init home logo link
		var goHome = Dom.get("go-home");
		goHome.title = pager.convertTitleToLowerCase(goHome.title);
		Event.on(goHome,"click", pager.linkClickEvent);
		
	},
	
	linkClickEvent : function(e)
	{
		Event.preventDefault(e);
		if(pager.slides.content.length != 0) document.location.hash = "/"+this.title;
		else document.location = "http://" + document.location.host + "/#/" + this.title;
		return false;
	},
	
	linkInterval : function()
	{
		pager.showSlide();
	},
	
	urlHash : function()
	{
		return document.location.hash.substr(2,document.location.hash.length);
	},
	
	getSlideWidth : function(el)
	{
		var a = Dom.getStyle(el,"width");
		var a = Number(a.substring(0, a.length-2));
		return a;
	},
	
	showSlide : function(e)
	{
		if(e) Event.preventDefault(e);
		
		if(!pager.showSlide.current) pager.showSlide.current = "";
		var curHash = pager.urlHash();
		
		// check if hash differs from current one, if not: cancel the whole operation and go home.
			if(pager.showSlide.current == curHash) return false;
		
		// else continue the animation to new content		
			var slide = Dom.get(curHash);
			if(!slide) return false;
	
		
		// switch class of active menu-items
			pager.switchClasses(slide.menuItem);
			
		// animate the height of the header 
			pager.animHeaderHeight(slide.menuItem.number);
		
		for(var i=0; i<pager.contentWindows.length; i++)
		{
			var slideWidth = pager.getSlideWidth(pager.contentWindows[i].parentNode);
				slideWidth = (pager.contentWindows[i].parentNode.id == "flash-header") ? slide.menuItem.number * (slideWidth) : slide.menuItem.number * (slideWidth+50);
			
			var animContent = new YAHOO.util.Anim(pager.contentWindows[i], {left: {to:-slideWidth}}, .8, YAHOO.util.Easing.easeBothStrong);
				animContent.animate();
		}
		
		Dom.get("content-secondary").className = curHash;
		pager.showSlide.current = curHash;

		
		var contentWindow = Dom.getElementsByClassName("content-window")[0];
		Dom.setStyle(contentWindow, "zoom", "1");
		
	},
	
	
	getFlashMovie : function(movieName) 
	{
		var isIE = navigator.appName.indexOf("Microsoft") != -1;
		return (isIE) ? window[movieName] : document[movieName];
	},

	animHeaderHeight : function(nr)
	{
		var newHeight = Dom.getRegion(pager.slides.headers[nr]);
			newHeight = Number(newHeight.height);
		
		pager.animHeaderHeight.anim = new YAHOO.util.Anim("flash-header", {height: {to:newHeight}}, .8, YAHOO.util.Easing.easeBothStrong);
		
		pager.flashControl(nr);
			
		pager.animHeaderHeight.anim.animate();
	},
	
	flashControl : function(nr)
	{
		var prevNumber = (pager.showSlide.current) ? Dom.get(pager.showSlide.current).menuItem.number : 0;
		
		var flashLeaving = (!pager.showSlide.current || prevNumber == 0 || prevNumber == 1) ? true : false;
		var flashComing  = (nr == 0 || nr == 1) ? true : false;
		
		if(flashLeaving)
		{	
			if(prevNumber == 0 && pager.flashAvailable("mainPig"))
			{
				pager.getFlashMovie("mainFish").optimizeForExternalAnimation(true);
				pager.getFlashMovie("mainPig").optimizeForExternalAnimation(false);
				
			}else if(prevNumber == 1 && pager.flashAvailable("mainPig"))
			{
				pager.getFlashMovie("mainPig").optimizeForExternalAnimation(true);
				pager.getFlashMovie("mainFish").optimizeForExternalAnimation(false);
			}
			
		}else if(flashComing)
		{
			
			if(nr == 0 && pager.flashAvailable("mainPig"))
			{
				pager.animHeaderHeight.anim.onComplete.subscribe(function()
				{
					pager.getFlashMovie("mainFish").optimizeForExternalAnimation(false);
					pager.getFlashMovie("mainPig").optimizeForExternalAnimation(true);
				});
			
			}else if(nr == 1 && pager.flashAvailable("mainPig"))
			{
				pager.animHeaderHeight.anim.onComplete.subscribe(function()
				{
					pager.getFlashMovie("mainPig").optimizeForExternalAnimation(false);
					pager.getFlashMovie("mainFish").optimizeForExternalAnimation(true);
				});
			};

		}else
		{
			if(pager.flashAvailable("mainPig") ) pager.getFlashMovie("mainPig").optimizeForExternalAnimation(true);
			if(pager.flashAvailable("mainFish")) pager.getFlashMovie("mainFish").optimizeForExternalAnimation(true);
		}
			
	},
	
	flashAvailable : function(f)
	{
		if(pager.getFlashMovie(f) && pager.getFlashMovie(f).optimizeForExternalAnimation) return true;
		else return false;
	},
	
	switchClasses : function(el)
	{
		for(var i=0; i<pager.menuLinks.length; i++) 
		{
			Dom.removeClass(pager.menuLinks[i],"current_page_item");
			Dom.removeClass(pager.menuLinks[i].parentNode,"current_page_item");
		}
		Dom.addClass(el,"current_page_item");
		Dom.addClass(el.parentNode,"current_page_item");
		
	}
};
	
Event.onDOMReady(pager.init);
