﻿var sf = {};

sf.api = km.createModule(function (base, exports) {

	// sets up calls to pianola MVC proxy 
	function apiCall(type, method, data, callback) {
		try {
			$.ajax({
				type: type,
				url: method,
				data: data,
				dataType: "json",
				traditional: true,
				success: callback
				/* only available in jquery 1.5
				statusCode: {
				504: function () {
				if (confirm('Not logged in, please log in to continue')) {
				window.location = "/Account";
				}
				},
				500: function () {
				alert("There was an error, please try again");
				}
				}
				*/
			});
		} catch (err) {
			km.trace("ajax error, message = " + err);
		}
	}

	// PUBLIC METHODS
	exports.getMediaItems = function (filter) {
		apiCall("Get", "/MediaProxy/GetItems", filter, function (mediaResult) {
			base.dispatch("receiveMediaItems", mediaResult.MediaItems);
			//don't render embed code if image list ***HACK***
			if (mediaResult.MediaItems[0].type !== "image") {
				base.dispatch("receiveEmbedCode", mediaResult.EmbedCode);
			}
		});
	};

	exports.getPlaylist = function (id) {
		apiCall("Get", "/MediaProxy/GetPlaylist", { id: id }, function (mediaResult) {
			base.dispatch("receivePlaylistItems", mediaResult.MediaItems);
			base.dispatch("receivePlaylistEmbedCode", mediaResult.EmbedCode);
		});
	};

	exports.sendContactMessage = function (formObject) {
		apiCall("Post", "/MessageProxy/Contact", formObject, function (message) {
			base.dispatch("receiveContactResult", message);
		});
	};

	exports.sendEmailMessage = function (formObject) {
		apiCall("Post", "/MessageProxy/Share", formObject, function (message) {
			base.dispatch("receiveEmailResult", message);
		});
	};

});
