﻿$(function () {

	var gridView = sf.gridView,
		apiHandler = sf.api,
		mediaViewer = sf.mediaViewer;

	function addApiListeners() {
		apiHandler.on("receiveMediaItems", function (mediaItems) {
			gridView.render(mediaItems);
		});
		apiHandler.on("receiveEmbedCode", function (embedCode) {
			//alert("receiveEmbedCode " + embedCode);
			mediaViewer.renderPlayer(embedCode);
		});
		apiHandler.on("receivePlaylistItems", function (mediaItems) {
			gridView.renderPlaylist(mediaItems);
		});
		apiHandler.on("receivePlaylistEmbedCode", function (embedCode) {
			mediaViewer.renderPlaylist(embedCode);
		});
	}

	function addGridViewListeners() {
		gridView.on("mediaItemClicked", function (mediaItem, type) {
			if (type === "playlist") {
				apiHandler.getPlaylist(mediaItem.id);
				mediaViewer.display(mediaItem);
			} else {
				mediaViewer.display(mediaItem);
			}
		});
		gridView.on("playlistItemClicked", function (playlistItemId) {
			mediaViewer.playItem(playlistItemId);
		});
	}

	function addMediaViewerListeners() {
		mediaViewer.on("leftClicked", function () {
			gridView.selectPrevItem();
		});
		mediaViewer.on("rightClicked", function () {
			gridView.selectNextItem();
		});
	}

	// attach the event listeners to each of the modules
	addApiListeners();
	addGridViewListeners();
	addMediaViewerListeners();

	// initialize the modules we are using (if required)
	gridView.init();
	mediaViewer.init();

	apiHandler.getMediaItems(gridView.getFilterObject());
	$(window).bind('hashchange', function () {

	});

});


