var videosPerLoad = 90;
var playerWidth = 430;
var playerHeight = 268;
var autoScrollDelay = 6;
var scrollableFadeDuration = 100;

// Player object

var playerCreated = false;
function createPlayer(videoId) {
	if (playerCreated) { return; } else { playerCreated = true; }
	
	var params = { allowScriptAccess: "always" };
	var atts = { id: "playerObject" };
	swfobject.embedSWF("http://www.youtube.com/v/" + videoId + "&rel=0&enablejsapi=1&playerapiid=ytplayer", "youtubePlayer", playerWidth, playerHeight, "8", null, null, params, atts);
}
function playVideo(videoId) {
	createPlayer(videoId);
	
	var player = document.getElementById("playerObject");
	if (player) {
		player.loadVideoById(videoId);
	}
}

function openPopup(addr, width, height) {
	window.open(addr, 'popup', 'width=' + width + ',height=' + height + ',scrollbars=yes,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0');
}

// Filter
function toggleFilter() {
	$("#filter-expanded").slideToggle();
}
function doFilter() {
	loadResults(0, true);
	toggleFilter();
}

function createCarousel() {
	$("#carousel .scrollable").scrollable({circular:true}).navigator({navi:"#carousel .navi"}).autoscroll({interval:autoScrollDelay*1000});
}
function clearCarousel() {
	$("#carousel").contents().remove();
	$("#carousel-base").clone().css("display", "block").appendTo("#carousel");
	$("#carousel .items").contents().remove();
}

function noResultsHtml() {
	$("#carousel .items").append()
}

function retrieveResults(params, callback) {	
	$.ajax({
		url: "getvideos.php",
		data: params,
		dataType: "json",
		success: callback
	});
}

var start = 0;
function loadResults(offset, reset, noResults) {
	if (reset == true) start = 0;
	
	if (!noResults) noResults = false;
	
	var city = $("#city").val();
	var state = $("#state").val();
	
	if (noResults) {
		city = "";
		state = "";
	}
	
	start = start + offset;
	retrieveResults(
		{
			movetype: getOptions("movetype", true, noResults),
			service: getOptions("service", true, noResults),
			notservice: getOptions("service", false, noResults).length,
			resdcomm: getOptions("resdcomm", false, noResults),
			start: start,
			num: videosPerLoad,
			city: city,
			state: state
		},
		function(videos) {
			if (videos.length == 0 && !noResults) {
				loadResults(0, true, true);
				return;
			}
			
			if (noResults) {
				videos.splice(0, 0, '<img src="images/no-results.png" title="No Results" class="link" />');
			}
			
			for (k in videos) {
				createPlayer(videos[k]["id"]);
				break;
			}
			
			clearCarousel();
			
			// Form pages of three videos each
			var numVids = videos.length;
			for (i = 0; true; i += 3) {
				if (i >= numVids) break;
				
				var div = "<div>";
				if (i < numVids) div += itemHtml(videos[i]);
				if (i + 1 < numVids) div += itemHtml(videos[i + 1]);
				if (i + 2 < numVids) div += itemHtml(videos[i + 2]);
				$("#carousel .items").append(div + "</div>");
			}
			
			createCarousel();
			bindHover();
			resizeNavi();
		}
	)
}

function getOptions(name, checked, returnAll) {
	var options = []
	var chks = $("input[name='"+name+"']");
	chks.each(function() { if (this.checked == checked || returnAll) options.push($(this).val()); })
	if (checked == false && returnAll) { return ""; }
	return options.join(",");
}

function zeroPad(i, l) {
	i = i.toString();
	while (i.length < l) { i = "0" + i; }
	return i;
}
function itemHtml(v) {
	if (typeof(v) == "string") { return v; }
	
	var minutes = Math.floor(v.length / 60);
	var seconds = v.length % 60;
	return '<img src="http://i.ytimg.com/vi/' + v.id + '/2.jpg" title="' + v.description + '\n\rLength: ' + zeroPad(minutes, 2) + ':' + zeroPad(seconds, 2) + '" class="link" onclick="playVideo(\'' + v.id + '\');">';
}

function setFaded(except) {
	$(".scrollable img").not(".hovered").stop(true).fadeTo(scrollableFadeDuration, 0.6);
}
function resetFaded(except) {
	$(".scrollable img").stop(true).fadeTo(scrollableFadeDuration, 1.0);
}
function bindHover() {
	$(".scrollable img").unbind('mouseenter', onHover).unbind('mouseleave', unHover);
	$(".scrollable img").bind('mouseenter', onHover).bind('mouseleave', unHover);
	$(".scrollable").hover(setFaded, resetFaded);
}
function onHover() {
		$(this).stop(true).fadeTo(scrollableFadeDuration, 1.0);
		$(this).addClass("hovered");
	}
function unHover() {
		$(this).stop(true).fadeTo(scrollableFadeDuration, 0.6);
		$(this).removeClass("hovered");
}
function resizeNavi() {
	jQuery('div.navi').each(function() {		
		var totalNavW = $(this).children("a").length * $(this).children("a").outerWidth(true);
		$(this).width(totalNavW);     
	});
}
jQuery(document).ready(function() {
	addVideoCountTo("#videocount");
	loadResults(0);
});

