// GLOBALS
var wrapper = "wrapper"; // This will be the id of the site wrapper
var pages = "pages"; // This will be the class of the site's sections
var hidden = "hiddenPages"; // This will be the container for the pages that are not being viewed
var sub = "subpages"; // This will be the class for the subpages of the site's sections
var subHidden = "hiddenSubpages"; // This will be the class for the container for the subpages that are not being viewed
var startPage = "intro"; // Id of the page the site starts on
var homePage = "home"; // Id of the home page

var secret = "upupdowndownleftrightleftrightbackspaceenter"; // Secret key code
var secretPage = "secret"; // Secret page to skip

var speed = 750; // Time it takes page to change in miliseconds

var keyDoc;
var pageShift = new Array();
var subs = new Array();
var subHiddens = new Array();
var allowShift = true;
var currentPage = startPage;
var currentSect = new Array();
var nextPage = homePage;

var secretPress = "";

// Create Keyboard Controls
function createKeys()
{
	document.addEvent('keydown', function(event){
		dir = false;
		if(event.key == "left") dir = "left";
		if(event.key == "right") dir = "right";
		if(event.key == "up") dir = "up";
		if(event.key == "down") dir = "down";
		if(dir) 
		{
			if(allowShift)
			{
				if(wrapper.getElement("#"+startPage)) 
				{
					$(leftNavContainer).fade('hide');
					$(leftNavContainer).fade(1);
					$(topNavContainer).fade('hide');
					$(topNavContainer).fade(1);
					shiftContent(currentPage,homePage,dir,wrapper,hidden);
					currentPage = homePage;
					HistoryManager.addState(currentPage +"/"+ currentSect[currentPage]);
				}
				else 
				{
					if(dir == "up" || dir == "down")
					{
						if(dir == "down") 
						{
							if($("left_"+currentPage).getNext().id != leftNavActive) nextPage = $("left_"+currentPage).getNext().id.replace("left_","");
							else nextPage = $(leftNavContainer).getFirst("."+leftNavButtons).id.replace("left_","");
						}
						else 
						{
							if($("left_"+currentPage).getPrevious()) nextPage = $("left_"+currentPage).getPrevious().id.replace("left_","");
							else nextPage = $(leftNavActive).getPrevious().id.replace("left_","");
						}
						shiftContent(currentPage,nextPage,dir,wrapper,hidden);
						currentPage = nextPage;
					}
					else if(dir == "left")
					{
						if(subs[currentPage][currentSect[currentPage]-1])
						{
							shiftContent(subs[currentPage][currentSect[currentPage]],subs[currentPage][currentSect[currentPage]-1],dir,$(currentPage),subHiddens[currentPage]);
							currentSect[currentPage]--;
						}
					}
					else if(dir == "right")
					{
						if(subs[currentPage][currentSect[currentPage]+1])
						{
							shiftContent(subs[currentPage][currentSect[currentPage]],subs[currentPage][currentSect[currentPage]+1],dir,$(currentPage),subHiddens[currentPage]);
							currentSect[currentPage]++;
						}
					}
					HistoryManager.addState(currentPage +"/"+ currentSect[currentPage]);
				}
			}
			event.stop();
		}
		secretPress += event.key;
		if(secretPress != secret.substr(0,secretPress.length)) secretPress = "";
		else if(secretPress == secret) 
		{
			secretPress = "";
			allowShift = true;
			shiftContent(currentPage,secretPage,"down",wrapper,hidden);
			currentPage = secretPage;
			HistoryManager.addState(currentPage +"/"+ currentSect[currentPage]);
		}
	});
}

// Create Back/Forward Browser Controls
function createHistory()
{
	HistoryManager.addEvent('onHistoryChange', function(){
		if(allowShift && HistoryManager.getCurrentHash())
		{
			var pageSects = HistoryManager.getCurrentHash().split("/");
			if(pageSects[0] != currentPage)
			{
				nextPage = $(hidden).getFirst(".pages").id;
				if(nextPage == secretPage) nextPage = $(nextPage).getNext(".pages").id;
				if(nextPage == pageSects[0]) dir = "down";
				else dir = "up";
				shiftContent(currentPage,pageSects[0],dir,wrapper,hidden);
				currentPage = pageSects[0];
			}
			else if(pageSects[1] != currentSect[currentPage])
			{
				if(pageSects[1] < currentSect[currentPage]) dir = "left";
				else dir = "right";
				shiftContent(subs[currentPage][currentSect[currentPage]],subs[currentPage][pageSects[1]],dir,$(currentPage),subHiddens[currentPage]);
				currentSect[currentPage] = pageSects[1];
			}
			if(pageSects[0] == startPage)
			{
				$(leftNavContainer).fade(0);
				$(topNavContainer).fade(0);
			}
		}
	});
}

// Move content
function shiftContent(org,end,dir,sec,hid)
{
	allowShift = false;
	if(dir == "left") move = viewW;
	else if(dir == "right") move = -viewW;
	else if(dir == "up") move = viewH;
	else if(dir == "down") move = -viewH;
	if(dir == "left" || dir == "right")
	{
		if($("top_"+end)) topActiveSlider.start({"left":$("top_"+end).offsetLeft + $(topNavBack).offsetWidth +"px","width":$("top_"+end).offsetWidth+"px"});
		if(topNavAnim[org]) topNavAnim[org].start({"backgroundColor":"#CCCCCC"});
		if(topNavAnim[end]) topNavAnim[end].start({"backgroundColor":"#00AEEF"});
		$(end).style.left = -move +"px";
		$(end).style.top = "0";
		sec.appendChild($(end));
		pageShift[end].start({"left":"0"});
		pageShift[org].start({"left":move +"px"}).chain(function(){
			hid.appendChild($(org));
			allowShift = true;
		});
	}
	else
	{
		if($("left_"+end)) activeSlider.start({"top":$("left_"+end).offsetTop+"px","height":$("left_"+end).offsetHeight+"px"});
		if(leftNavAnim[org]) leftNavAnim[org].start({"backgroundColor":"#CCCCCC"});
		if(leftNavAnim[end]) leftNavAnim[end].start({"backgroundColor":"#00AEEF"});
		
		if($("top_"+end).getElements("."+topNavButtonsClass).length < $("top_"+org).getElements("."+topNavButtonsClass).length)
		{
			if($("top_"+end)) $("top_"+end).inject($(topNavWrap),"top");
			topNavWrapAnim.start({'width':topButtonsWidth * $("top_"+end).getElements("."+topNavButtonsClass).length +"px"}).chain(function(){
				if($("top_"+org)) $(topNavHidden).appendChild($("top_"+org));
				if($("top_"+end)) $("top_"+end).inject($(topNavWrap),"top");
			});
		}
		else
		{
			if($("top_"+end)) $("top_"+end).inject($(topNavWrap),"top");
			topNavWrapAnim.start({'width':topButtonsWidth * $("top_"+end).getElements("."+topNavButtonsClass).length +"px"}).chain(function() {
				if($("top_"+org)) $(topNavHidden).appendChild($("top_"+org));
			});
		}

		if($("top_"+end+"_"+currentSect[end])) {
			if(currentSect[end] > 0) {
				offsetLeft = currentSect[end] * 54;
			} else {
				offsetLeft = 0;
			}
			topActiveSlider.start({"left":offsetLeft+ $(topNavBack).offsetWidth +"px","width":"50px"});
			//topActiveSlider.start({"left":$("top_"+end+"_"+currentSect[end]).offsetLeft + $(topNavBack).offsetWidth +"px","width":$("top_"+end+"_"+currentSect[end]).offsetWidth+"px"});
		} else {
			topActiveSlider.start({"left":$(topNavBack).offsetWidth +"px","width":50+"px"});
		}
		
		$(end).style.top = -move +"px";
		$(end).style.left = "0";
		sec.appendChild($(end));
		pageShift[end].start({"top":"0"});
		pageShift[org].start({"top":move +"px"}).chain(function(){
			if(dir == "up") $(org).inject(hid, "top");
			else $(org).inject(hid, "bottom");
			allowShift = true;
		});
	}
}
