var episodes, sorted, current;

preloadImage("/images/loader.gif");

function search(string) {
	var searched = new Array();
	for (var i = 0; i < episodes.length; i++) {
		if (((episodes[i].tags).toLowerCase()).indexOf(string.toLowerCase()) > -1
			|| ((episodes[i].title).toLowerCase()).indexOf(string.toLowerCase()) > -1
			|| ((episodes[i].commentators).toLowerCase()).indexOf(string.toLowerCase()) > -1) {
			searched.push(episodes[i]);
		}
	}
	
	sorted = searched;
	
	var $selected = $(".selected");
	var sortobject = $selected.attr("id");
	var sortby = "";
	
	if (sortobject = "sort_release") {
		sortby = "id";
	} else if (sortobject = "sort_title") {
		sortby = "title";
	} else if (sortobject = "sort_year") {
		sortby = "releasedate";
	} else if (sortobject = "sort_rating") {
		sortby = "rating";
	}
	
	if ($selected.hasClass("asc")) {
		sortEpisodes(sortby, "asc");
	} else if ($selected.hasClass("desc")) {
		sortEpisodes(sortby, "desc");
	}
	
	$("#archive_top_spacer").css("height", "120px");
	$("#archive_bottom_spacer").css("height", "50px");
	$("#archivebox").mCustomScrollbar("vertical",400,"easeOutCirc",1.05,"fixed","yes", "yes", 10);
}

function loadShareLinks() {
	gapi.plusone.go();
}

function sortEpisodes(sortby, dir) {
	if (dir == "desc") {
		sorted.sort(function(a, b) {
			if (a[sortby] > b[sortby]) return -1;
			if (a[sortby] < b[sortby]) return 1;
			return 0;
		});
	} else {
		sorted.sort(function(a, b) {
			if (a[sortby] < b[sortby]) return -1;
			if (a[sortby] > b[sortby]) return 1;
			return 0;
		});
	}

	var data = "<div id='archive_top_spacer'></div>";

	for (var i = 0; i < sorted.length; i++) {
		data += "<div class='episode' id='" + sorted[i].id +"'>"
			+ "<img align='left' class='poster' src='/images/posters/poster-" + sorted[i].id + ".jpg' />"
			+ "<div class='space_down'>" + sorted[i].title + "</div>"
			+ sorted[i].commentators + "<br /></div>"
			+ "<img class='divider' src='/images/archive/database-divider.jpg' /><br />";
	}
	data += "<div id='archive_bottom_spacer'></div>";

	$("#archivebox .content").html(data);
	$(".episode").click(function() {
		setEpisode($(this).attr("id"));
	});
	
	var os = navigator.userAgent;
	
	if (os.indexOf("Chrome") > -1 || os.indexOf("Safari") > -1) {
		$("#archive_bottom_spacer").css("height", "300px");
	} else {
		$("#archive_bottom_spacer").css("height", "50px");
	}
	
	$("#archivebox").mCustomScrollbar("vertical",400,"easeOutCirc",1.05,"fixed","yes", "yes", 10);
}

function setEpisode(id) {		
	preloadImage("/images/episodes/release-" + id + ".jpg");
	$("#episodebox").fadeOut("slow", function() {
		$("#episodebox").css("background-image", "url(/images/episodes/release-" + id + ".jpg)");
		episodeInfo(id - 1);
		$("#episodebox").fadeIn("slow");
	});

	current = id - 0;
}

function episodeInfo(id) {
	$("#people").html(episodes[id].commentators);
	$("#desc").html(episodes[id].description);
				
	var $download = $("#downloads");
	var $append = "";

	$append = "<a href='" + episodes[id].ntsclink.replace("http://", "//") + "' target='_blank'>"
		+ "<img src='/images/episodes/button-ntsc-mp3.png' alt='NTSC MP3 Download' />"
		+ "</a>";

	if (episodes[id].pallink != "" && episodes[id].pallink != null) {
		$append += "<a href='" + episodes[id].pallink.replace("http://", "//") + "' target='_blank'>"
			+ "<img src='/images/episodes/button-pal-mp3.png' alt='PAL MP3 Download' />"
			+ "</a>";
	}

	if (episodes[id].m4alink != "" && episodes[id].m4alink != null) {
		$append += "<a href='" + episodes[id].m4alink.replace("http://", "//") + "' target='_blank'>"
			+ "<img src='/images/episodes/button-ntsc-m4a.png' alt='NTSC M4A Download' />"
			+ "</a>";
	}

	$append += "<a href='//www.downinfront.net/dif3/index.php?id=" + episodes[id].id + "' target='_blank'>"
		+ "<img src='/images/episodes/button-permalink.png' alt='Permalink' /></a>";

	$append += "<a href='" + episodes[id].forumlink.replace("http://", "//") + "' target='_blank'>"
		+ "<img src='/images/episodes/button-forum.png' alt='Forum Discussion' />"
		+ "</a>";
		
	$("#downloads").html($append);
		
	$("#share").html("<div id='fb-root'><a href=\"https://www.facebook.com/sharer/sharer.php?u=https://www.downinfront.net/index.php?id=" + episodes[id].id + "\" target='_blank'>"
		+ "<img src='images/fb-like.jpg' alt='Like This Commentary on Facebook' /></a></div>"
		+ "<div id='twitter-root'><a href=\"http://twitter.com/intent/tweet?text=Listening to @DowninFront's commentary for " + episodes[id].title + ".&url=https://www.downinfront.net/index.php?id=" + episodes[id].id + "\"  target='_blank'>"
		+ "<img src='images/twitter-tweet.jpg' alt='Tweet This Commentary' /></a></div>"
		+ "<div id='gplus-root'><g:plusone size='medium' annotation='none' href='https://www.downinfront.net/index.php?id=" + episodes[id].id + "'></g:plusone></div>");
	loadShareLinks();
		
	$("#player").html("<div class='jp-audio'>"
		+ "<div class='jp-type-single'>"
			+ "<div id='jPlayer' class='jp-jplayer'></div>"
				+ "<div id='jp_interface_1' class='jp-interface'>"
					+ "<ul class='jp-controls'>"
						+ "<li><a href='#' class='jp-play' tabindex='1'>play</a></li>"
						+ "<li><a href='#' class='jp-pause' tabindex='1'>pause</a></li>"
					+ "</ul>"
					+ "<div class='jp-progress'>"
						+ "<div class='jp-seek-bar'>"
							+ "<div class='jp-play-bar'></div>"
						+ "</div>"
					+ "</div>"
					+ "<div class='jp-current-time'></div>"
					+ "<div class='jp-duration'></div>"
				+ "</div>"
			+ "</div>"
		+ "</div>");
		
	$("#jPlayer").jPlayer({
		ready: function () {
			$(this).jPlayer("setMedia", {
				mp3: episodes[id].link
			});
		},
		swfPath: "js",
		supplied: "mp3"
	});

	if (current == episodes.length) {
		$("#arrowright").hide();
		$("#arrowleft").fadeIn("slow");
	} else if (current == 1) {
		$("#arrowleft").hide();
		$("#arrowright").fadeIn("slow");
	} else {
		$("#arrowleft").fadeIn("slow");
		$("#arrowright").fadeIn("slow");
	}
}

function slideEpisode(dir) {
	if (dir == "left" && current > 1) {
		current -= 1;
		var opp = "right";
	} else if (dir == "right" && current < episodes.length) {
		current += 1;
		var opp = "left";
	} else {
		return 0;
	}

	preloadImage("/images/episodes/release-" + current + ".jpg");
	$("#episodebox").hide("slide", { direction: opp }, function() {
		$(this).css("background-image", "url(/images/episodes/release-" + current + ".jpg)")
		episodeInfo(current - 1);
		$(this).show("slide", { direction: dir });
	});
}

function preloadImage(source) {
	$('<img/>').attr("src", source);
}

$(document).ready(function() {	
	$.getScript("https://apis.google.com/js/plusone.js", function() {
		gapi.plusone.go();
	});
	
	$("#arrowleft").click(function() {
		slideEpisode("left");
	}).hide();
	
	$("#arrowright").click(function() {
		slideEpisode("right");
	}).hide();
	
	$("#logobox").click(function() {
		window.location = "//www.downinfront.net/";
	});
	
	$(".nav").mouseover(function() {
		var source = $(this).attr("src");
		$(this).attr("src", source.replace("off", "on"));
	}).mouseout(function() {
		var source = $(this).attr("src");
		$(this).attr("src", source.replace("on", "off"));
	});
	
	$(".sort").mouseover(function() {
		var source = $(this).attr("src");
		$(this).attr("src", source.replace("off", "on"));
	}).mouseout(function () {
		var source = $(this).attr("src");
		if ($(this).hasClass("selected") == false) {
			$(this).attr("src", source.replace("on", "off"));
		}
	}).click(function () {
		var $item = $(this);
		$(".sort").each(function() {
			var source = $(this).attr("src");
			
			if($(this).attr("src") == $($item).attr("src")) {
				$(this).attr("src", source.replace("off", "on"));
				if ($($item).attr("id") != "sort_search") {
					$(this).addClass("selected");
				}
			} else {
				$(this).attr("src", source.replace("on", "off"));
				if ($($item).attr("id") != "sort_search") {
					$(this).removeClass("selected");
				}
			}						
		});
	});
	
	$("#sort_title").click(function() {
		$("#searchbox").slideUp("slow");
		$("#archive_top_spacer").css("height", "50px");

		if ($(this).hasClass("desc")) {
			sortEpisodes("id", "desc");
			sortEpisodes("title", "desc");
			$(".sort").removeClass("desc").addClass("asc");
			$("#sort_release").removeClass("asc").addClass("desc");
		} else {
			sortEpisodes("id", "desc");
			sortEpisodes("title", "asc");
			$(".sort").removeClass("desc").addClass("asc");
			$("#sort_release").removeClass("asc").addClass("desc");
			$(this).removeClass("asc").addClass("desc");
		}
	});
	
	$("#sort_release").click(function() {
		$("#searchbox").slideUp("slow");
		$("#archive_top_spacer").css("height", "50px");

		if ($(this).hasClass("desc")) {
			sortEpisodes("id", "desc");
			$(".sort").removeClass("desc").addClass("asc");
		} else {
			sortEpisodes("id", "asc");
			$(".sort").removeClass("desc").addClass("asc");
			$(this).removeClass("asc").addClass("desc");
		}
	});
	
	$("#sort_rating").click(function() {
		$("#searchbox").slideUp("slow");
		$("#archive_top_spacer").css("height", "50px");

		if ($(this).hasClass("desc")) {
			sortEpisodes("id", "desc");
			sortEpisodes("rating", "asc");
			$(".sort").removeClass("desc").addClass("asc");
			$("#sort_release").removeClass("asc").addClass("desc");
		} else {
			sortEpisodes("id", "desc");
			sortEpisodes("rating", "desc");
			$(".sort").removeClass("desc").addClass("asc");
			$("#sort_release").removeClass("asc").addClass("desc");
			$(this).removeClass("asc").addClass("desc");
		}
	});
	
	$("#sort_year").click(function() {
		$("#searchbox").slideUp("slow");
		$("#archive_top_spacer").css("height", "50px");

		if ($(this).hasClass("desc")) {
			sortEpisodes("id", "desc");
			sortEpisodes("releasedate", "desc");
			$(".sort").removeClass("desc").addClass("asc");
			$("#sort_release").removeClass("asc").addClass("desc");
		} else {
			sortEpisodes("id", "desc");
			sortEpisodes("releasedate", "asc");
			$(".sort").removeClass("desc").addClass("asc");
			$("#sort_release").removeClass("asc").addClass("desc");
			$(this).removeClass("asc").addClass("desc");
		}
	});
	
	$("#searchinput").keyup(function() {
		search($(this).val());
	});
	
	$("#sort_search").click(function() {
		$("#searchbox").slideToggle("slow");
		
		if ($("#archive_top_spacer").css("height") == "50px") {
			$("#archive_top_spacer").css("height", "120px");
			$("#archive_bottom_spacer").css("height", "50px");
		} else {
			$("#archive_top_spacer").css("height", "50px");
			$("#archive_bottom_spacer").css("height", "50px");
		}
		
		$("#archivebox").mCustomScrollbar("vertical",400,"easeOutCirc",1.05,"fixed","yes", "yes", 10);
	});
});

