function PhotoSet(photoPath_large, photoPath_small, pageSize, thumbId, largeId, navId)
{
	this.photoPath_large = photoPath_large;
	this.photoPath_small = photoPath_small;
	this.pageSize = pageSize;
	this.thumbId = thumbId;
	this.largeId = largeId;
	this.navId = navId;
	this.photoPages = new Array(new Array());
	this.currentPage = 1;
	this.me = this;
	
	function PhotoPage()
	{						
		this.photos = new Array();
		this.pageSize = function()
		{
			return this.photos.length;
		}
	}
	
	this.getLastPage = function()
	{
		return this.photoPages[this.photoPages.length-1];
	}
	
	this.createNewPage = function()
	{
		this.photoPages[this.photoPages.length] = new Array();
		return this.getLastPage();
	}
	
	this.addPhoto = function(photoFile)
	{
		// get current page, but create a new one if the current one is full
		var page = this.getLastPage();
		if(page.length >= this.pageSize)
			page = this.createNewPage();
		
		// add photo
		page[page.length] = photoFile;
	}
	
	this.loadPage = function(pageNum)
	{
		// unload current photos
		document.getElementById(this.thumbId).innerHTML = "";
		
		// populate thumb container with new images
		this.currentPage = pageNum;
		var photoPage = this.photoPages[pageNum-1];
		for(var i=0; i<photoPage.length; i++)
		{
			var img = document.createElement("img");
			img.photoFile = photoPage[i];
			img.me = this;
			img.id = "photoPage_thumb_" + pageNum + i;
			img.className = "photoPage_thumbs";
			img.style.opacity = .7;
			img.style.filter = "alpha(opacity:70)";
			img.style.marginRight = "1px";
			img.style.marginBottom = "1px";
			img.src = this.photoPath_small + photoPage[i];
			img.onmouseover = function() { highlightImage(this.id, true); };
			img.onmouseout = function() { highlightImage(this.id, false); };
			img.onclick = function(e) { 
				var targetObj = window.event ? window.event.srcElement : e.target;
				targetObj.me.selectImage(targetObj.photoFile);
			}
			document.getElementById(this.thumbId).appendChild(img);
		}
		
		
		// bold current page navigator
		for(i=0; i<this.photoPages.length; i++)
		{
			document.getElementById("nav_page_" + (i+1)).style.fontWeight = ((i+1) == pageNum) ? "bold" : "normal";
			document.getElementById("nav_page_" + (i+1)).style.backgroundColor = ((i+1) == pageNum) ? "#ddd" : "transparent";
		}
	}
	
	this.loadPage_direction = function(direction)
	{
		var newPage = this.currentPage + direction;
		if(newPage >= 1 && newPage <= this.photoPages.length)
			this.loadPage(this.currentPage + direction);
	}
	
	this.selectImage = function(photoFile)
	{
		document.getElementById(largeId).src = this.photoPath_large + photoFile;
	}
	

	this.init = function()
	{	
	
		// setup navigation
		var nav_back = document.createElement("span");
		nav_back.me = this;
		nav_back.style.paddingRight = "5px"
		nav_back.style.cursor = "pointer";
		nav_back.style.fontWeight = "bold";
		nav_back.innerHTML = "«";
		nav_back.onclick = function(e)
		{
			var targetObj = window.event ? window.event.srcElement : e.target;
			targetObj.me.loadPage_direction(-1);
		}
		document.getElementById(this.navId).appendChild(nav_back);
		
		for(i=0; i<this.photoPages.length; i++)
		{
			var span = document.createElement("span");
			span.id = "nav_page_" + (i + 1);
			span.me = this;
			span.style.cursor = "pointer";
			span.pageNum = (i + 1);
			span.innerHTML = "&nbsp;" + (i + 1) + "&nbsp;";
			span.onclick = function(e)
			{
				var targetObj = window.event ? window.event.srcElement : e.target;
				targetObj.me.loadPage(targetObj.pageNum);
			}
			document.getElementById(this.navId).appendChild(span);
		}
		
		var nav_next = document.createElement("span");
		nav_next.me = this;
		nav_next.style.paddingLeft = "5px"
		nav_next.style.cursor = "pointer";
		nav_next.style.fontWeight = "bold";
		nav_next.innerHTML = "»";
		nav_next.onclick = function(e)
		{
			var targetObj = window.event ? window.event.srcElement : e.target;
			targetObj.me.loadPage_direction(1);
		}
		document.getElementById(this.navId).appendChild(nav_next);
		
		this.loadPage(1);
	}
}