(function($) {
	var player;
	var ready = false;
	var readyFuncs = [];
	var stateCallback = null;
	var currentSrc;
	var currentState = "idle";

	$.player = $.player || {}
	$.fn.extend($.player, {
		stop: function() {
			player.sendEvent("STOP");
		},

		play: function(url, stateChange) {
			if (currentState != "idle" && currentState != "completed") {
				player.sendEvent("STOP");
			}
			currentSrc = url;
			stateCallback = stateChange;
			player.sendEvent("LOAD", url);
			player.sendEvent("PLAY");
		},

		playing: function(url) {
			return currentState == "playing"
				  && (url === undefined || url == currentSrc);
		},

		stateChange: function(state) {
			currentState = state;
			if (stateCallback) {
				stateCallback(state);
			}
		},

		ready: function(callback) {
			if (callback === undefined) {
				ready = true;
				while (readyFuncs.length) {
					readyFuncs.pop()();
				}
			} else if (!ready) {
				readyFuncs.push(callback);
			} else {
				callback();
			}
		}
	});

	window.playerReady = function(obj) {
		player = document.getElementById("player");
		player.addModelListener("STATE", "trackState");
		$.player.ready();
	};

	window.trackState = function(obj) {
		$.player.stateChange(obj.newstate.toLowerCase());
	};

})(jQuery);

