var videoBrowser_enableDebug = false;
var videoBrowser = {};

function videoBrowser_init() {
	videoBrowser.view = document.getElementById("videoThumbsView");
	if(!videoBrowser.view) return;
	videoBrowser.thumbTable = document.getElementById("videoThumbs");

	videoBrowser.thumbCount = videoBrowser.thumbTable.rows[0].cells.length;
	var firstThumb = common_getSize(videoBrowser.thumbTable.rows[0].cells[0].firstChild);
	videoBrowser.thumbWidth = firstThumb.width;

	videoBrowser.visibleArea = common_getSize(videoBrowser.view);
	videoBrowser.thumbScrollWidth = videoBrowser.thumbWidth + 10; // +10 for the 5 pixel margin x2
	videoBrowser.thumbsVisible = Math.floor(videoBrowser.visibleArea.width / videoBrowser.thumbScrollWidth);

	videoBrowser.currentScroll = 0;
	videoBrowser.currentOffset = 0;
	videoBrowser.slideSpeed = 3.0;
	videoBrowser.scrollDestinationX = 0;

	// we have to add [thumbsVisible] thumbs to the beginning and end to be able to do a looping scroll
	var row1 = videoBrowser.thumbTable.rows[0];
	var row2 = videoBrowser.thumbTable.rows[1];
	for(var i = 0; i < videoBrowser.thumbsVisible; i++) {
		var clone = row1.cells[i].cloneNode(true);
		row1.appendChild(clone);
		clone = row2.cells[i].cloneNode(true);
		row2.appendChild(clone);
	}
	for(var i = 0; i < videoBrowser.thumbsVisible; i++) {
		var clone = row1.cells[videoBrowser.thumbCount-1].cloneNode(true);
		row1.insertBefore(clone, row1.firstChild);	// lisätään ekaksi
		clone = row2.cells[videoBrowser.thumbCount-1].cloneNode(true);
		row2.insertBefore(clone, row2.firstChild);	// lisätään ekaksi
	}
	videoBrowser.view.scrollLeft = videoBrowser.currentScroll + videoBrowser.thumbsVisible*videoBrowser.thumbScrollWidth;
}

function videoBrowser_open(href) {
	document.location.href = href;
}

function videoBrowser_previous() {
	if(videoBrowser.isScrolling) return;
	var offset = videoBrowser.currentOffset;
	offset -= videoBrowser.thumbsVisible;
	videoBrowser_scrollTo(offset);
}

function videoBrowser_next() {
	if(videoBrowser.isScrolling) return;
	var offset = videoBrowser.currentOffset;
	offset += videoBrowser.thumbsVisible;
	videoBrowser_scrollTo(offset);
}

function videoBrowser_scrollTo(newOffset) {
	if(videoBrowser.isScrolling) return;
	videoBrowser.currentOffset = newOffset;
	videoBrowser_scroll();
}

function videoBrowser_scroll() {
	var newPos = 0;
	var currentScroll = Number(videoBrowser.currentScroll);
	var destinationDelta = videoBrowser.currentOffset*videoBrowser.thumbScrollWidth-currentScroll;
	if((Math.abs(destinationDelta)/videoBrowser.slideSpeed) < 1.0) {
		newPos = videoBrowser.currentOffset*videoBrowser.thumbScrollWidth;
		videoBrowser.isScrolling = false;
	} else {
		newPos = currentScroll + destinationDelta / videoBrowser.slideSpeed;
		videoBrowser.isScrolling = true;
		videoBrowser.timeOut = window.setTimeout(videoBrowser_scroll, 20);
	}
	newPos = Math.floor(newPos);

	var wrapPos = videoBrowser.thumbCount * videoBrowser.thumbScrollWidth;
	var negativeWrapPos = -videoBrowser.thumbsVisible*videoBrowser.thumbScrollWidth;

	if(newPos >= wrapPos) {
		newPos = newPos - wrapPos;
		videoBrowser.currentOffset = videoBrowser.currentOffset - videoBrowser.thumbCount;
	}

	if(newPos <= negativeWrapPos) {
		newPos = (videoBrowser.thumbCount - videoBrowser.thumbsVisible) * videoBrowser.thumbScrollWidth + (newPos - negativeWrapPos);
		videoBrowser.currentOffset = Math.floor(newPos / videoBrowser.thumbScrollWidth);
	}

	videoBrowser.currentScroll = Math.floor(newPos);
	videoBrowser.view.scrollLeft = videoBrowser.currentScroll + videoBrowser.thumbsVisible*videoBrowser.thumbScrollWidth;
}
