function GetItems()
{
	if (document.selItems==null)
	{
		document.allItems= CreateItems();
		document.selItems= document.allItems;
	}
	return document.selItems;
}

function SearchItems()
{
	var items = document.allItems;
	var searchText = document.all('search').value.toUpperCase();
	if (searchText.length>0) {
		var sItems=new Array();
		for (var i=0;i<items.length;i++) {
			if (items[i].keywords.indexOf(searchText)>=0) {
				sItems[sItems.length] = items[i];
			}
		}
		if (sItems.length==0) {
			alert("No items matched search criteria.");
			return;
		}
		items = sItems;
	}
	document.selItems = items;
	SetTBMode();
	WriteItems();
}

function GetPageInfo(itemsLength) 
{
	if (document.gPageInfo==null) {
		var pageInfo = new Object();
		pageInfo.colsPerRow=2;
		pageInfo.itemsPerPage=10;
		pageInfo.pageNumber=1;
		pageInfo.tbMode = true;
		document.gPageInfo = pageInfo;
	}
	if (itemsLength!=null) {
		UpdatePageInfo(document.gPageInfo, itemsLength);
	}
	return document.gPageInfo;
}

function UpdatePageInfo(pageInfo, itemsLength) {
	pageInfo.itemCount = itemsLength;
	pageInfo.pageCount = Math.floor((itemsLength-1)/pageInfo.itemsPerPage)+1;
	if (pageInfo.pageNumber>pageInfo.pageCount) {
		pageInfo.pageNumber = 1;
	}
	pageInfo.startIndex= (pageInfo.pageNumber-1)*pageInfo.itemsPerPage;
	pageInfo.endIndex = pageInfo.pageNumber*pageInfo.itemsPerPage;
	if (pageInfo.endIndex>itemsLength) {
		pageInfo.endIndex= itemsLength;
	}
}

function WriteItems()
{
	var items= GetItems();
	var pageInfo = GetPageInfo(items.length);
	var html='';
	html+=GetPageNav(pageInfo);
	html+='<TABLE CELLPADDING="2" CELLSPACING="0" WIDTH="740">';
	for (var i=pageInfo.startIndex;i<pageInfo.endIndex;i++)
	{
		if (i%pageInfo.colsPerRow==0) {
			if (i!=pageInfo.startIndex) {
				html+='</TR>';
			} 
			html+='<TR  valign="top">';
		}		
		var item= items[i];
		html+='<TD><TABLE><TR valign="top"><TD>';
		if (pageInfo.tbMode) {
			html+='<A HREF="javascript: ShowItem('+i+')"><IMG ALT="Click to Enlarge" SRC="'+item.tb+'" CLASS="imgTb"/></A>';
		} else {
			html+='<IMG ALT="'+item.desc+'" SRC="'+item.img+'" CLASS="img"/>';
		}
		html+='</TD><TD><SPAN class="itemTitle">Item # '+item.type+item.id+'</SPAN><BR/>';
		html+='<SPAN class="itemDesc">'+item.desc+'</SPAN><BR/>';
		html+='<SPAN class="itemTitle">'+item.price+'</SPAN></TD>';
		html+='</TR></TABLE></TD>';
	}
	html+='</TR></TABLE>';
	html+=GetPageNav(pageInfo);
	SetText('itemContent', html);
}

function GetPageNav(pageInfo) {
	var html='<TABLE CELLPADDING="0" CELLSPACING="0"><TR>';
	html+='<TD class="pageNav" WIDTH="170"> ';
	if (pageInfo.tbMode) {
		html+='Showing items '+(pageInfo.startIndex+1)+' - '+pageInfo.endIndex+' of '+pageInfo.itemCount;
	} else {
		html+='Showing item '+(pageInfo.startIndex+1)+' of '+pageInfo.itemCount;
	}
	html+='</TD><TD class="pageNav" WIDTH="100" align="right"> ';
	if (!pageInfo.tbMode) {
		html+='<A class="pageNav" HREF="javascript: ShowGallery()">Back to Gallery</A>&nbsp;';
	}
	html+='</TD><TD class="pageNav" WIDTH="60" align="right"> ';
	if (pageInfo.pageNumber>1) {
		html+='<A class="pageNav" HREF="javascript: ChangePage('+(pageInfo.pageNumber-1)+')">&lt;Previous</A>&nbsp;';
	}
	html+='</TD><TD class="pageNav">';
	if (pageInfo.pageCount>1 && pageInfo.tbMode) {
		html+=GetPageNumbers(pageInfo);
	}
	html+='</TD><TD class="pageNav" WIDTH="60"> ';
	if (pageInfo.pageNumber<pageInfo.pageCount) {
		html+='<A class="pageNav" HREF="javascript: ChangePage('+(pageInfo.pageNumber+1)+')">Next&gt;</A>';
	}
	html+='</TD></TR><TABLE>';
	return html;
}


function GetPageNumbers(pageInfo) {
	var html='';
	for (var i=1;i<=pageInfo.pageCount;i++) {
		if (pageInfo.pageNumber!=i) {
			html+='<A class="pageNav" HREF="javascript: ChangePage('+i+')">'+i+'</A>&nbsp;';
		} else {
			html+='<B>'+i+'</B>&nbsp;';
		}	
	}
	return html;
}

function SetImgSrc(id, url)
{
	document.all(id).src=url; 
}

function SetText(id, text)
{
	document.all(id).innerHTML=text; 
}

function ChangePage(i)
{
	var pageInfo = GetPageInfo();
	pageInfo.pageNumber =i;
	WriteItems();
}

function ShowItem(i)
{
	var pageInfo = GetPageInfo();
	pageInfo.pageNumber =i+1;
	pageInfo.tbMode=false;
	pageInfo.itemsPerPage=1;	
	WriteItems();
}

function ShowGallery() 
{
	SetTBMode();
	WriteItems();
}

function SetTBMode() 
{
	var pageInfo = GetPageInfo();
	if (!pageInfo.tbMode) {
		pageInfo.itemsPerPage=10;	
		pageInfo.pageNumber =Math.floor((pageInfo.pageNumber-1)/10)+1;
		pageInfo.tbMode=true;
	}
}
