var content = null;
var largeImage = null;
var thumbsDiv = null;
var title = null;
var numberDiv = null;
var thumbWindow = null;
var leftArrow = null;
var rightArrow = null;
var debugDiv = null;
var debugDiv2 = null;
var scrollTarget = 0;
var scrollCurrent = 0;
var imageOpacity = -1;
var thumbs = [];
var imageIndex = 0;
var scrollIndex = 0;
var thumbTrackHeight = 500;
var thumbTrackSlop = 25;
var preloads = [];
var disabledOpacity = 0.4;
var velocity = 0;

//--------------------------------------------------------------------------
function start()
{
	content = document.getElementById('content');
	largeImage = document.getElementById('large_image');
	thumbsDiv = document.getElementById('thumbs');
	title = document.getElementById('page_title');
	numberDiv = document.getElementById('image_number');
	thumbWindow = document.getElementById('thumb_window');
	leftArrow = document.getElementById('left_arrow');
	rightArrow = document.getElementById('right_arrow');
	debugDiv = document.getElementById('debug');
	debugDiv2 = document.getElementById('debug2');

	largeImage.onload = imageLoad;
	largeImage.onerror = imageError;
	largeImage.onabort = imageError;

	var requestedSet = getURLParam('set');
	if(!requestedSet)
		requestedSet = 'kashmir/prayers';
	
	var b;
	for(b = 0; b < data.length; b++)
	{
		var set = data[b];
		var setName = set[0];
		if(setName == requestedSet)
		{
			var base = 'img/photos/' + setName;
			var setTitle = set[1];
			title.innerHTML = setTitle;
			var items = set[2];
			var count = items.length;
			var a;
			for (a = 0; a < count; a++)
			{
				var item = items[a];
				var image = document.createElement('img');
				
				// index item by its thumb name
				
				image.src = base + '/thumbs/' + item + '.jpg';
				image.className = 'gallery_thumb';
				image.onclick = thumbClick;
				image.scName = base + '/' + item;
				image.scIndex = a;
		//				image.style.left = (0) + 'px';
		//				image.style.top = (16 * a) + 'px';
		//				image.title = item.title;
				
				thumbs.push(image);
				thumbsDiv.appendChild(image);
		
				var br = document.createElement('br');
				thumbsDiv.appendChild(br);
			}
		}
	}

	switchTo(0);
	preload(1, 1);
	
	window.setInterval(update, 67); // 15 fps
}

//------------------------------------------------------------------------------
function update()
{
	if(velocity)
	{
		scrollCurrent += velocity;
		if(scrollCurrent > 0)
		{
			scrollCurrent = 0;
			velocity = 0;
		}
		else if(scrollCurrent < -(thumbsDiv.offsetHeight - thumbWindow.offsetHeight))
		{	
			scrollCurrent = -(thumbsDiv.offsetHeight - thumbWindow.offsetHeight);
			velocity = 0;
		}

//		console.log(thumbsDiv.offsetHeight - thumbWindow.offsetHeight);

		thumbsDiv.style.top = scrollCurrent + 'px';
	}
	
//	var now = getMilliseconds();
	
	if(imageOpacity > -1 && imageOpacity < 1)
	{
		imageOpacity += 0.1;
		setOpacity(largeImage, imageOpacity);
	}
}

//------------------------------------------------------------------------------
function updateNumberDiv()
{
	numberDiv.innerHTML = (imageIndex + 1) + ' / ' + thumbs.length;
}

//------------------------------------------------------------------------------
function switchTo(index)
{
	var thumb = thumbs[index];
	if(thumb)
	{
		var name = thumb.scName;
		if(name)
		{
			var url = name + '.jpg';
			setOpacity(largeImage, 0);
			imageOpacity = -1;
			largeImage.src = url;
			imageIndex = index;
			updateNumberDiv();
		}
	}
}

//--------------------------------------------------------------------------
function imageLoad()
{
	imageOpacity = 0;
}

//--------------------------------------------------------------------------
function imageError()
{
	imageOpacity = 0;
}

//------------------------------------------------------------------------------
function thumbClick(event)
{
	event = getEvent(event);
	var img = getEventTarget(event);
	if(img && typeof(img.scIndex) != 'undefined')
		switchTo(img.scIndex);
}

//------------------------------------------------------------------------------
function leftButtonClick(event)
{
	event = getEvent(event);
	
	var index = imageIndex - 1;
	if(index < 0)
		index = thumbs.length - 1;
		
	switchTo(index);
	
	index--;
	if(index < 0)
		index = thumbs.length - 1;
	
	preload(index, index);
}

//------------------------------------------------------------------------------
function rightButtonClick(event)
{
	event = getEvent(event);
	
	var index = imageIndex + 1;
	if(index >= thumbs.length)
		index = 0;
		
	switchTo(index);
	
	index++;
	if(index >= thumbs.length)
		index = 0;
		
	preload(index, index);
}

//------------------------------------------------------------------------------
function handleMouseOver(event)
{
	handleMouseMove(event);
}

//------------------------------------------------------------------------------
function handleMouseOut(event)
{
	velocity = 0;
}

//------------------------------------------------------------------------------
function handleMouseMove(event)
{
	event = getEvent(event);
	var p = getEventMouse(event);
	var ref = findPos(thumbWindow);
	p.y -= ref.y;
	var height = parseInt(thumbWindow.style.height);
	var halfheight = height / 2;
	velocity = ((p.y - halfheight) / halfheight) * -8; 
}

//------------------------------------------------------------------------------
function preload(from, through)
{
	preloads.length = 0;
	var a;
	for(a = from; a <= through; a++)
	{	
		var otherImage = document.createElement('img');
		otherImage.onload = function() {};
		otherImage.src = thumbs[a].scName + '.jpg';
//				thumbsDiv.appendChild(otherImage);
		preloads.push(otherImage);
	}
}


