// JavaScript Document

MMM.Index = (function () {
	function setup() {
		if (typeof featuredMbitId != 'undefined' && typeof featuredMbitData != 'undefined') {
			var s = new Song(featuredMbitId, featuredMbitData, true /* isStem */, Song.style.small);
			$('#featuredSong').append(s);
		}
	}
	
	$(document).ready(setup);
}());

var Flash = function () {
	var _tries = 0, _maxTries = 2,
		_playing = "",
		_playClicked = false,
		_func = noop,
		_playingFunc = noop,
		self = {
			curID: '',
			getFlashMovie: function (movieName) {
				var isIE = navigator.appName.indexOf("Microsoft") !== -1;
				return (isIE) ? window[movieName] : document[movieName];
			},
			update: function (name, id) {
				if (self.curID !== id) {
					self.curID = id;
					var movie = self.getFlashMovie(name);
					if (movie && movie.switchSound) {
						self.stop(name);
						movie.switchSound(id);
						if (_playClicked) {
							self.play(name);
							_playClicked = false;
						}
						_tries = 0;
						return true;
					} else if (_tries++ < _maxTries) {
						// the embed is probably still loading, give it some time and try again!
						window.setTimeout(Flash.update.bind(Flash, name, id), 500);
					}
				}
			},
			changePlayer: function (name) {
				if (_playing && _playing !== name) { self.stop(_playing); }
				_playing = name;
				return name;
			},
			play: function (name) {
				var movie = self.getFlashMovie(name), retval = false;
				if (movie && movie.playSound) {
					_playClicked = true;
					retval = movie.playSound();
				}
				//console.log("can't play");
				return retval;
			},
			stop: function (name) {
				try {
					var movie = self.getFlashMovie(name), retval = false;
					if (movie && movie.stopSound) {
						self.playClicked = false;
						retval = movie.stopSound();
					}
					var f = _func;
					_func = noop;
					if (typeof(f)==="function") { f(); }
					return retval;
				} catch (e) {
					return false;
				}
			},
			getCookies: function () {
				return document.cookie || '';
			},
			loadMbit: function (id) {
				var movie = self.getFlashMovie("mmmSequencer"), retval = false;
				if (movie && movie.loadMbit) { retval = movie.loadMbit(id); }
				return retval;
			},
			loadSession: function (id) {
				var movie = self.getFlashMovie("mmmSequencer"), retval = false;
				if (movie && movie.loadSession) {
					retval = movie.loadSession(id);
				} else {
					window.alert("Sorry, this isn't supported yet");
				}
				return retval;
			},
			isDirty: function () {
				var movie = self.getFlashMovie("mmmSequencer"), retval = null;
				if (movie && movie.isDirty) { retval = movie.isDirty(); }
				return retval;
			},
			setCallback: function(f) {
				_func = typeof(f) === "function" ? f : noop;
			},
			setPlayingCallback: function(f) {
				_playingFunc = typeof(f) === "function" ? f : noop;
			},
			soundPlaying: function() {
				var f = _playingFunc;
				_playingFunc = noop;
				if (typeof(f)==="function") { f(); }
			}
		};
	return self;
}();