oo.ringtonePlayerClass = new Class({
	currentlyPlaying: '',
	classes: {
		playing: 'ringtonePlayer-playing',
		playingHover: 'ringtonePlayer-playing-hover',
		hover: 'ringtonePlayer-hover'
	},
	embed: function(elementId) {
	 	this.player = new Swiff('typo3conf/ext/oo/viewer/resources/ringtone-player/ringtone-player-2.0.swf', {
			id: 'Swiff_' + elementId,
			width: 1,
			height: 1,
			container: elementId,
			callBacks: {
				soundComplete: function() { 
					if ($(oo.ringtonePlayer.currentlyPlaying).hasClass(this.classes.playingHover)) {
						$(oo.ringtonePlayer.currentlyPlaying).removeClass(this.classes.playingHover);
						$(oo.ringtonePlayer.currentlyPlaying).addClass(this.classes.hover);
					} else {
						$(oo.ringtonePlayer.currentlyPlaying).removeClass(this.classes.playing);
					}
					oo.ringtonePlayer.currentlyPlaying = '';
				}.bind(this),
				msg: function(text) {
					alert(text);
				}
			}
		});
	},
	play: function(audioFile, elementId) {
		this.player.toElement().startPlaying(audioFile);
		this.currentlyPlaying = elementId;
		// add event to pause the player if the user presses space, esc or enter
		document.addEvent('keydown', this.pauseOnKeydown);
		// track play using google analytics
		if (typeof pageTracker != 'undefined') {
			pageTracker._trackEvent('oo ringtone-player', 'play', audioFile);
		}
	},
	pause: function() {
		this.player.toElement().pausePlaying();
		this.currentlyPlaying = '';
		// remove keydown event listener
		document.removeEvent('keydown', this.pauseOnKeydown);
	},
	pauseOnKeydown: function(e) {
		if (e.key == 'space' || e.key == 'esc' || e.key == 'enter') {
			e.stop();
			// change state of playing element
			var playingElement = $(oo.ringtonePlayer.currentlyPlaying);
			if (playingElement.hasClass(this.classes.playingHover)) {
				playingElement.removeClass(this.classes.playingHover).addClass(this.classes.hover);
			} else {
				playingElement.removeClass(this.classes.playing);
			}
			oo.ringtonePlayer.pause();
		}
	}
});
oo.ringtonePlayer = new oo.ringtonePlayerClass;