var PlayerManager;

(function($) {

	PlayerManager = function(opts) {
		this.playlistUrl = opts.playlistUrl;
		//setup soundManager
		soundManager = new SoundManager();
		soundManager.flashVersion = 9;
		soundManager.url = '/flash/sfm_soundmanager2c.swf?serverUrl='+opts.serverUrl;
		soundManager.popupUrl = opts.popupUrl;
		if(opts.pollInterval) {soundManager.url += "&pollInterval="+opts.pollInterval;}
		soundManager.allowPolling = true;
		soundManager.useHighPerformance = true;
		soundManager.allowFullScreen = false;
		soundManager.useMovieStar = true;
		soundManager.debugMode = false;
		soundManager.waitForWindowLoad = true;
		soundManager.beginDelayedInit();
	};

	PlayerManager.prototype.playlist = function(sid, callback) {
		$.get(this.playlistUrl, {mid:sid.replace("#",""),i:1}, function(r) {
			var track = $(r).find("track:first");
			var location = track.children("location").text();
			if(track.children("meta[rel=nag]").text()) {
				//nag/delay
				var pos = $("a[href*="+sid+"]").closest("div.player").offset();
				$("div.register_nag").css("top", pos.top+"px").css("left", pos.left+"px").show();
				return false;
			}
			callback(location);
		}, "xml");
	};

	PlayerManager.prototype.play = function(opts) {
		var sid = opts.sid;
		var s = soundManager.getSoundById(sid);
		if(!s) {
			pos = opts.position*opts.duration;
			soundManager.pauseAll();
			this.playlist(sid, function(r) {
				s = soundManager.createSound({
					id: sid,
					url: r,
					onplay: function() {
						opts.onplay();
					},
					onpause: function() {
						opts.onpause();
					},
					onresume: function() {
						opts.onplay();
					},
					onconnect: function() {
						s.play({position:pos});
						opts.onconnect();
					},
					whileplaying: function() {
						opts.whileplaying(this.position/this.duration);
					},
					onfinish: function() {
						setTimeout(function() {
							soundManager.destroySound(sid);
							opts.onfinish();
						}, 90000);
					}
				});
			});
		} else {
			if(opts.position) {
				s.setPosition(opts.position*s.duration)
				if(s.paused) {
					soundManager.pauseAll();
					s.resume();
				}
			} else {
				if(s.paused) {
					soundManager.pauseAll();
					s.resume();
				} else {
					s.pause();
				}
			}
		}
	};

	PlayerManager.prototype.vol = function(sid, delta, callback) {
		var s = soundManager.getSoundById(sid);
		if(!s) {return false;}
		var vol = s.volume + delta;
		if(vol >= 0 && vol <= 120) {
			soundManager.setVolume(sid, vol);
		}
	};

	PlayerManager.prototype.popUp = function(sid) {
		var s = soundManager.getSoundById(sid);
		var pos = s ? parseInt(s.position/1000) : 0;
		if(s) {s.destruct();}
		window.open(soundManager.popupUrl+'?pid='+sid.replace('#','')+'&pos='+pos, 'sfm_player', 'width=480,height=480,location=0,toolbar=0,status=0,scrollbars=0');
	};

})(jQuery);
