var Page = new Object(); 
var _curPage 	= -1; 
var _curSubPage = -1; 

Page.HomeBase 				= 0; 
Page.FullMenu 				= 1; 
Page.ContactUs 				= 2; 

Page.User 			= 100; 
Page.ContentPage	= 101; 
Page.UserLogin 		= 102; 

function GoToPage(page, subpage, subpage2, arg1, arg2, arg3, arg4, arg5)
{	
	Globals.UI.Navigation.Reset(); 
    Globals.ShowSpinner("MiddleBody", "Loading...", true)        
	
	switch(page)
	{
		case Page.HomeBase:
		{
			dhtmlHistory.add("p" + Page.HomeBase);
			HomePage.Load(subpage); 
			break; 
		}
		case Page.User:
		{
			dhtmlHistory.add("p" + Page.User);
			UserPage.Load(subpage, subpage2, arg1, arg2, arg3, arg4); 
			break; 
		}
		case Page.UserLogin:
		{
			dhtmlHistory.add("p" + Page.UserLogin, subpage);		
			UserLoginPage.LoadPage(subpage, arg1, arg2, arg3, arg4, arg5); 
			break; 
		}
		case Page.ContentPage:
		{
			ContentPages.LoadPage(subpage); 
			dhtmlHistory.add("p" + Page.ContentPage + "|" + subpage, subpage);		
			break; 
		}
		default:
		{
			Error.DebugWrite("Cannot load page: " + page + ". This is most likely caused from a missing definition in the Page.enum."); 
		}
	}
	
	$("LeftNavSep").style.display = "none"; 
	$("LeftNavBack").style.display = "none"; 
	$("LeftNav").style.display = "none"; 
	$("SubNavMenu").style.display = "none"; 
	$("RightNav").style.display = "none"; 
	$("SubNavTitle").style.display = "none"; 
	$("PageTitle").style.display = "none"; 
	$("NavCrumb").style.display = "none"; 
	
}

HandleHistory = function(page, data) 
{
	Globals.UI.Navigation.Reset(); 
	var pageObj = page.split("|"); 
	
	if(pageObj.length > 1)
	{
		page = pageObj[0];
		data = pageObj[1];
		
		if(!Layouts.Get(data).Loaded)
		{
			//Globals.ShowSpinner("spinnerSpan",HomePage.ProgressCount + " Loading Templates..."); 
			setTimeout("HandleHistory(\"" + page + "|" + data + "\")", 40); 
			return; 
		}
	}
	
 	switch(page)
	{
		case "p" + Page.HomeBase:
		{
			GoToPage(Page.HomeBase, data);
			break; 
		}
		case "p" + Page.UserLogin:
		{
			GoToPage(Page.User, data);
			break; 
		}
		case "p" + Page.UserLogin:
		{
			GoToPage(Page.UserLogin, data);
			break; 
		}
		case "p" + Page.ContentPage:
		{
			GoToPage(Page.ContentPage, data);
			break; 
		}		
	}
}


Page._pages = new Array(); 

Page.Get = function(page)
{
	for(var i = 0; i < Page._pages.length; i++)
	{
		if(Page._pages[i].Name == page)
		{
			return Page._pages[i]; 
		}
	}
	
	return null; 
}

Page.Add = function(pageName, pageCategory, pageTitle, crumbText, url)
{
	Page._pages[Page._pages.length] = new PageObject(pageName, pageCategory, pageTitle, crumbText, url); 
}

function PageObject(pageName, pageCategory, pageTitle, crumbText, url )
{
	this.Name = pageName; 
	this.Category = pageCategory; 
	this.Title = pageTitle; 
	this.CrumbText = crumbText; 
	this.URL = url; 
	
	Layouts.AddURL(this.Name, this.URL); 
	
	this.GetContent = function()
	{
		var layout = Layouts.Get(this.Name); 
		return layout.Content; 
	};
	
	this.SetContent = function(newContent)
	{
		var layout = Layouts.Get(this.Name); 
		layout.Content = newContent; 
	};
}