﻿var MEview = {
	setupClipHover: function() {
		$(".clip").unbind();
		$(".clip").hover(function(event) { // over
			$(".play", event.currentTarget)[0].src = "/img/thumb/thumb_play_over.png";
			$(event.currentTarget).addClass("slct");
		},
		function(event) { //out
			$(".play", event.currentTarget)[0].src = "/img/thumb/thumb_play.png";
			$(event.currentTarget).removeClass("slct");
		});

		$("#editors-choice-video a.image").unbind();
		$("#editors-choice-video a.image").hover(function(event) {
			$(".play", event.currentTarget)[0].src = "/img/thumb/thumb_play_over.png";
		},
		function(event) {
			$(".play", event.currentTarget)[0].src = "/img/thumb/thumb_play.png";
		});
	},
	setupQuicklistHover: function() {
		$("#QuickListOutput a.image").unbind();
		$("#QuickListOutput a.image").hover(function(event) {
			$(".play", event.currentTarget)[0].src = "/img/thumb/thumb_play_over.png";
		},
		function(event) {
			$(".play", event.currentTarget)[0].src = "/img/thumb/thumb_play.png";
		});
	},
	limitSize: function(target, maxLength, counter) {
		if (target.val().length > maxLength)
			target.val(target.val().substring(0, maxLength));
		counter.html((maxLength - target.val().length) + " characters remaining");
	},

	selectAllText: function(element) {
		element.focus();
		element.select();
	},
	startwaiting: function() {
		document.body.style.cursor = "wait";
	},
	finishwaiting: function() {
		document.body.style.cursor = "";
	},
	setupUIQuicklistEdit: function() {
		createQuicklist = true;
	},
	startChangePlaylist: function() {
		MEview.startwaiting();
		MEview.showHidePanel("EditCliplistLoading", true);
		MEview.showHidePanel("EditCliplist", false);
	},
	finishChangePlaylist: function() {
		MEview.finishwaiting();
		MEview.showHidePanel("EditCliplistLoading", false);
		MEview.showHidePanel("EditCliplist", true);
	},
	showCreatePlaylist: function() {
		MEview.showHidePanel("pnlCreatePlaylist", true);
		MEview.showHidePanel("pnlSelectPlaylist", false);
		MEview.showHidePanel("EditCliplist", false);
		return false;
	},
	hideCreatePlaylist: function() {
		if (createQuicklist) {
			createQuicklist = false;
			MEview.startwaiting();
			return true;
		}
		MEview.showHidePanel("pnlCreatePlaylist", false);
		MEview.showHidePanel("pnlSelectPlaylist", true);
		MEview.showHidePanel("EditCliplist", true);
		return false;
	},
	startCreatePlaylist: function() {
		MEview.startwaiting();
		MEview.showHidePanel("SavingPlaylist", true);
	},
	finishCreatePlaylist: function() {
		MEview.finishwaiting();
		MEview.showHidePanel("SavingPlaylist", false);
		MEview.showHidePanel("pnlCreatePlaylist", false);
		MEview.showHidePanel("pnlSelectPlaylist", true);
		MEview.showHidePanel("EditCliplist", true);
	},
	showRenamePlaylist: function() {
		MEview.showHidePanel("pnlRenamePlaylist", true);
		MEview.showHidePanel("pnlSelectPlaylist", false);
		MEview.showHidePanel("EditCliplist", false);
		return false;
	},
	hideRenamePlaylist: function() {
		MEview.showHidePanel("pnlRenamePlaylist", false);
		MEview.showHidePanel("pnlSelectPlaylist", true);
		MEview.showHidePanel("EditCliplist", true);
		return false;
	},
	startRenamePlaylist: function() {
		MEview.startwaiting();
		MEview.showHidePanel("SavingPlaylist", true);
	},
	finishRenamePlaylist: function() {
		MEview.finishwaiting();
		MEview.showHidePanel("SavingPlaylist", false);
		MEview.hideRenamePlaylist();
	},
	playlistDeleteClicked: function() {
		var result = confirm('Are you sure you want to delete this playlist? You will not be able to undo this action.');
		if (result) MEview.startwaiting();
		return result;
	},
	toggleSocialPanel: function() {
		$("#pnlSharePlaylist").toggle();
		$("#EditCliplist .dropdown").toggleClass("over");
	},
	showHidePanel: function(id, show, style) {
		if (!style)
			if (show)
			style = "block";
		else
			style = "none";
		if (document.getElementById(id) != null) {
			if (show)
				document.getElementById(id).style.display = style;
			else
				document.getElementById(id).style.display = style;
		}
	},
	changeStars: function(parent, value, defaultclass, fullclass, emptyclass, out) {
		var children = parent.childNodes;
		for (var i = 0; i < children.length; i++) {
			if (children[i].nodeName == "a" || children[i].nodeName == "A") {
				if (children[i].attributes.title.value > value) {
					children[i].className = defaultclass + " " + emptyclass;
				}
				else {
					children[i].className = defaultclass + " " + fullclass;
				}
				if (out == false) {
					switch (value) {
						case "1":
							{
								document.getElementById("ratingOriginal").innerHTML = "Poor";
								break;
							}
						case "2":
							{
								document.getElementById("ratingOriginal").innerHTML = "Ok";
								break;
							}
						case "3":
							{
								document.getElementById("ratingOriginal").innerHTML = "Good";
								break;
							}
						case "4":
							{
								document.getElementById("ratingOriginal").innerHTML = "Great";
								break;
							}
						case "5":
							{
								document.getElementById("ratingOriginal").innerHTML = "Amazing";
								break;
							}
						default:
							{
								document.getElementById("ratingOriginal").innerHTML = "Click stars to rate the video";
								break;
							}

					}
				}
				else {
					document.getElementById("ratingOriginal").innerHTML = "Click stars to rate the video";
				}
			}
		}
	},

	rate: function(parent, value, defaultclass, fullclass, emptyclass) {
		var children = jQuery("a", parent);

		$.each(children, function(i, item) {
			if (item.attributes.title.value > value)
				item.className = defaultclass + " " + emptyclass;
			else
				item.className = defaultclass + " " + fullclass;

			item.onmouseover = null;
			item.onmouseout = null;
			item.onclick = new function() { return null; };
		});
		document.getElementById("ratingOriginal").innerHTML = "Sending your rating...";
		var ratingURL = "/logevent.aspx?mid=" + currentMediaID + "&rate=" + value;
		$.get(ratingURL, function(result) {
			$("#ratingOriginal").text("Thanks for rating.");
		});

	},
	setFavourite: function(isFavourite) {
		useAdd = !isFavourite;
	},
	toggleFavourite: function(mediaid) {
		var favouriteUrl = "/json/ToggleFavourite.aspx?mediaid=" + mediaid;
		var status = $("#addToFaviouriteStatus")[0];
		var tabHead = $("#addToFaviouriteTab")[0];

		if (useAdd)
			status.textContent = "Adding this clip to your favourites..."
		else
			status.textContent = "Removing this clip from your favourites..."
		useAdd = !useAdd;

		$.get(favouriteUrl, function(result) {
			if (result == "1") {
				status.innerHTML = "This video was added to your favourites.  You can <a href=\"/ProfileDetails.aspx?at=1\">view your favourites here</a>.";
				tabHead.textContent = "Remove from Favourites";
			}
			else if (result == "0") {
				status.textContent = "This clip has clip has been removed from your favourites";
				tabHead.textContent = "Add to Favourites";
			}
			else {
				status.innerHTML = "There was a problem with your request. <a href=\"#\" onclick=\"MEview.toggleFavourite(" + mediaid + "," + add + ");\">Click here to try again.</a>";
			}
		});
	},
	absorbEnter: function(event) {
		if (event.keyCode == 13) {
			event.preventDefault();
			return false;
		}
	},
	toggleAutoPlay: function() {
		autoPlayQuicklist = !autoPlayQuicklist;
		if (!autoPlayQuicklist) {
			quicklistPointer = null;
			MEview.setupQuicklistUI();
		}
		else {
			MEview.quicklistMove(0);
		}
	},
	setupQuicklistUI: function() {
		if (quicklist == null || quicklist == '') {
			// quicklist not defined or empty
			$("#QuickListControls").css("display", "none");
		}
		else {
			// show controls
			$("#QuickListControls").css("display", "block");

			// if autoplay show nav controls (back and forward)
			$("#QuickListControlsNav").css("display", autoPlayQuicklist ? "block" : "none");

			var elAutoPlay = $("#QuickListAutoplay");
			if (elAutoPlay.length > 0) {
				elAutoPlay.toggleClass("playing", autoPlayQuicklist);
				elAutoPlay[0].textContent = autoPlayQuicklist ? "Stop Autoplaying" : "Play All";
			}

			if (quicklistPointer != null) {
				if (quicklistPointer == 0)
					$("#QuickListControlsNav a.prev").css("display", "none");
				else
					$("#QuickListControlsNav a.prev").css("display", "inline");

				if (quicklistPointer >= quicklist.length - 1)
					$("#QuickListControlsNav a.next").css("display", "none");
				else
					$("#QuickListControlsNav a.next").css("display", "inline");
			}
		}
	},
	setQuicklistPointer: function(value) {
		quicklistPointer = value;
		if (value != null) {
			autoPlayQuicklist = true;
		}
	},
	addToQuicklist: function(mediaId, sender) {
		MEview.startwaiting();
		MEview.updateQuicklist(mediaId, null, sender);
	},
	clearQuicklist: function(mediaId) {
		MEview.startwaiting();
		MEview.updateQuicklist(null, true);
		$(".quicklistAdd").css("display", "block");
	},
	quicklistMove: function(direction) {
		var newIndex = quicklistPointer + direction;
		if (!newIndex) newIndex = 0;
		if (quicklist.length > newIndex && newIndex >= 0 && quicklist[newIndex]) {
			MEview.redirectToVideo(quicklist[newIndex].id, null, newIndex);
		}
		else {
			MEview.toggleAutoPlay();
		}
	},
	updateQuicklist: function(addMediaID, clear, sender) {
		var requestAddress = "/json/quicklist.aspx";
		if (addMediaID) requestAddress += "?add=" + addMediaID;
		if (clear) requestAddress += "?clear=1";
		$.getJSON(requestAddress, function(json) {
			quicklist = json.quickList;
			if ($('#QuickListTemplate')) {
				var output = $('#QuickListTemplate').parseTemplate(json);
				$('#QuickListOutput').html(output);
			}
			MEview.setupQuicklistUI();
			MEview.setupQuicklistHover();
			if (sender)
				sender.parentNode.style.display = "none";
			MEview.finishwaiting();
		});
	},
	endRequestHandler: function(sender, args) {
		setTimeout(function() { document.body.scrollTop = scrollTop }, 0);
	},
	/// redirects to a new video page
	redirectToVideo: function(mediaID, playlistID, quicklistIndex) {

		var newLocation = "/video.aspx?id=" + mediaID;

		if (playlistID)
			newLocation += "&pid=" + playlistID;

		if (quicklistIndex != null)
			newLocation += "&ql=" + quicklistIndex;

		MEview.redirectToAddress(newLocation);
	},
	/// redirects to an address
	redirectToAddress: function(address) {
		if (isRedirecting) return;

		isRedirecting = true;

		document.location = address;
		MEview.startwaiting();
	}
}

var createQuicklist = false;
var isRedirecting = false;
var quicklist;
var quicklistPointer = null;
var scrollTop;
/*
Causes AJAX postbacks to stay at the previous scroll location
*/

$(function() {
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(MEview.endRequestHandler);
});
//Blow away this function - block validation scroll
window.scrollTo = function(x, y) { return true; }
//Hook up search hints + bottom search form in all it's dodgy glory...
$(function() {
	//------ load quicklist on startup ------//
	MEview.updateQuicklist();

	MEview.setupClipHover();

	$('.search input[type=text]').hint('hint');

	box = $('#bottomsearch input[type=text]');
	if ($.browser.mozilla) $(box).keypress(MEview.absorbEnter);
	else $(box).keydown(MEview.absorbEnter);

	$(box).keyup(function(event) {
		if (event.keyCode == 13) {
			if ($(this).val() != "")
				window.location = "/Search.aspx?term=" + escape($(this).val());
			event.preventDefault();
			return false;
		}
	});
	$('#bottomsearch input.btn').click(function() {
		textbox = $('#bottomsearch input[type=text]:not(.hint)');
		if (textbox.length > 0) window.location = "/Search.aspx?term=" + escape(textbox.val());
		return false;
	});
});

