
///////////////////////////
// Gallery Class
///////////////////////////




function CurrentSelection() {
	this.MenuItem;
	this.SubMenuItem;
}

function SubMenuItem(imgSrc) {
	this.imgSrc = imgSrc;
}

function AddSubMenuItem(position, imgSrc) {
		this.SubMenuItems[position] = new SubMenuItem(imgSrc);
}


function MenuItem(imgSrc,imgSrcOver, captionTitle,captionBody) {
	this.imgSrc = imgSrc;
	this.imgSrcOver = imgSrcOver;
	this.CaptionTitle = captionTitle;
	this.CaptionBody = captionBody;
	this.SubMenuItems= new Array();
	this.AddSubMenuItem = AddSubMenuItem;
}

function AddMenuItem(position, imgSrc, imgSrcOver, captionTitle,captionBody) {
		var menuItem = new MenuItem(imgSrc, imgSrcOver, captionTitle,captionBody);
		this.MenuItems[position] = menuItem;
	return menuItem;
}


function ScrollMenu(direction) {
	var newOffset = this.Offset + direction;
	if (newOffset >= 0 && newOffset <= this.MenuItems.length - this.VisibleCount) {
		this.Offset = newOffset;
		return true;
	}
	else
		return false;
}
	

function Gallery(visibleCount) {

	this.VisibleCount = visibleCount;
	this.Offset = 0;
	this.MenuItems = new Array();
	this.AddMenuItem = AddMenuItem;
	this.ScrollMenu = ScrollMenu;
	this.CurrentSelection = CurrentSelection;
	this.CurrentSelection.MenuItem = 0;
	this.CurrentSelection.SubMenuItem = 0;
}



//////////////////////////
// End Gallery Class
//////////////////////////



	
	
////////////////////////////////////
//  page events	
////////////////////////////////////

function oNLoad()
{
	portfolio = new Gallery(6);
	loadPortfolioData(portfolio);	
	InitializePortfolio(portfolio);
}

function InitializePortfolio(tmpPortfolio)
{
	UpdateMenuSelectedItem(tmpPortfolio,0);
}


// scrolling nav events
function onNavUpClick() {
	if(portfolio.ScrollMenu(-1))
		UpdateMenuDisplay(portfolio);
}

function onNavDownClick() {
	if(portfolio.ScrollMenu(1))
		UpdateMenuDisplay(portfolio);
}

function onNavUpOver() {
	if (portfolio.Offset > 0) {
		var imgUpNode = document.getElementById("imgUpArrow");
		imgUpNode.src = "images/arrow_up_over.gif";
	}
}

function onNavUpOut() {
	if (portfolio.Offset > 0) {
		var imgUpNode = document.getElementById("imgUpArrow");
		imgUpNode.src = "images/arrow_up.gif";
	}
}

function onNavDownOver() {
	if (portfolio.Offset < portfolio.MenuItems.length - portfolio.VisibleCount) {
		var imgDownNode = document.getElementById("imgDownArrow");
		imgDownNode.src = "images/arrow_down_over.gif";
	}
}

function onNavDownOut() {
	if (portfolio.Offset < portfolio.MenuItems.length - portfolio.VisibleCount) {
		var imgDownNode = document.getElementById("imgDownArrow");
		imgDownNode.src = "images/arrow_down.gif";
	}
}

// scrolling nav item events
function onNavOver(menuItemNumber) {
		var elementId = "menuImage"+menuItemNumber;
		var imgNode = document.getElementById(elementId);
		var portfolioItemNumber = portfolio.Offset+menuItemNumber-1;
		imgNode.src = portfolio.MenuItems[portfolioItemNumber].imgSrcOver;
}

function onNavOut(menuItemNumber) {
		var elementId = "menuImage"+menuItemNumber;
		var imgNode = document.getElementById(elementId);
		var portfolioItemNumber = portfolio.Offset+menuItemNumber-1;
		
		if(menuItemNumber !=(portfolio.CurrentSelection.MenuItem-portfolio.Offset+1))
			imgNode.src = portfolio.MenuItems[portfolioItemNumber].imgSrc;
}


function onMenuClick(menuItem) {
	var itemNumber = menuItem-1+portfolio.Offset;
	
	// update gallery selected item
	portfolio.CurrentSelection.MenuItem = itemNumber;
	portfolio.CurrentSelection.SubMenuItem = 1;

	UpdateMenuSelectedItem(portfolio,itemNumber);
}

function onSubMenuClick(menuItemNumber,subMenuItemNumber) {
	portfolio.CurrentSelection.SubMenuItem = subMenuItemNumber+1;
	var menuItem = portfolio.MenuItems[menuItemNumber];
	var mainImageElementId = "mainImage";
	var mainImageNode = document.getElementById(mainImageElementId);
	mainImageNode.src = menuItem.SubMenuItems[subMenuItemNumber].imgSrc;
	
	UpdateSubMenuDisplay(portfolio);
}


///////////////////////////////////
// page update code
///////////////////////////////////

function UpdateMenuDisplay(tmpPortfolio) {
	UpdateScrollNavigation(tmpPortfolio);
	
	// update menu items
	for (var i=1; i< tmpPortfolio.VisibleCount+1; i++) {
		var elementId = "menuImage"+i;
		var imgNode = document.getElementById(elementId);
		var portfolioItemNumber = tmpPortfolio.Offset+i-1;
		
		if(i!=(portfolio.CurrentSelection.MenuItem-portfolio.Offset+1)) 
			imgNode.src = tmpPortfolio.MenuItems[portfolioItemNumber].imgSrc;
		else
			imgNode.src = tmpPortfolio.MenuItems[portfolioItemNumber].imgSrcOver;
	}
}


function UpdateSubMenuDisplay(tmpPortfolio) {
		
	var subMenuCount = tmpPortfolio.MenuItems[tmpPortfolio.CurrentSelection.MenuItem].SubMenuItems.length;
	if(subMenuCount>1) {
		for (var i=1; i< subMenuCount+1; i++) {
			var elementId = "subNav" + i;
			var imgNode = document.getElementById(elementId);
		
			if(i!=tmpPortfolio.CurrentSelection.SubMenuItem) 
				imgNode.src = "images/button.gif";
			else
				imgNode.src = "images/button_over.gif"
		}
	}
}


function UpdateScrollNavigation(tmpPortfolio) {
	var imgUpNode = document.getElementById("imgUpArrow");
	var imgDownNode = document.getElementById("imgDownArrow");
	
	if(tmpPortfolio.Offset ==0)
		imgUpNode.src = "images/arrow_up_disable.gif";  // disable up nav
	else
		imgUpNode.src = "images/arrow_up.gif";  // enable up nav
	
	if(tmpPortfolio.Offset == tmpPortfolio.MenuItems.length - tmpPortfolio.VisibleCount)
		imgDownNode.src = "images/arrow_down_disable.gif"; // disable down nav
	else
		imgDownNode.src = "images/arrow_down.gif"; // enable down nav
}

function UpdateMenuSelectedItem(tmpPortfolio,menuItemNumber) {
	var menuItem = tmpPortfolio.MenuItems[menuItemNumber];
	
	var mainImageElementId = "mainImage";
	var mainImageNode = document.getElementById(mainImageElementId);
	mainImageNode.src = menuItem.SubMenuItems[0].imgSrc;
	
	UpdateMenuDisplay(tmpPortfolio);
	UpdateMenuSelectedItemCaption(menuItem);
	UpdateSubMenu(tmpPortfolio,menuItemNumber);
	UpdateSubMenuDisplay(tmpPortfolio);
	
	
}


function UpdateMenuSelectedItemCaption(menuItem) {
	var captionNode = document.getElementById("clientTitle");
							
	if(captionNode != null) {
		var captionText = "<b>" + menuItem.CaptionTitle + "</b><br>" + menuItem.CaptionBody;
		captionNode.innerHTML = captionText; 			
	}
}


function UpdateSubMenu(tmpPortfolio,menuItemNumber) {
	var menuItem = tmpPortfolio.MenuItems[menuItemNumber];
	var subMenuText ="";
	
	if(menuItem.SubMenuItems.length > 1) {
		
		for(var i=0; i< menuItem.SubMenuItems.length; i++) {
			var subNavItemNumber = i+1;
			subMenuText += "<a href='javascript:onSubMenuClick(" + menuItemNumber + "," + i + ")'>";
			subMenuText += "<img id='subNav" + subNavItemNumber + "' src='images/button.gif' alt='button' class='SubNavButton' border='0'  /></a>";
		}
	}
	
	var subMenuNode = document.getElementById("PortfolioSubNav"); 
	subMenuNode.innerHTML = subMenuText;
}








//////////////////////////////////
// utility code
//////////////////////////////////

function newImage(arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}


