if (typeof AvPlayer == "undefined") {
	var AvPlayer = function() {

		var avPlayer = {
			init: function() {
				this.currentAVData = {id: null, caption: null, playOnLoad: false};
				this.player = null;

				this.jWPlayerInitialized = false;
				this.initializingJWPlayer = false;
				this._initOverlay();
				this.loadHandler = null;
			},
			
			log: jwplayer.utils.log,

			_initOverlay: function() {
				//	<div class="simple_overlay" id="av_overlay">
				//		<div id="rbbheadTitle"></div>
				//		<div id="av_player"></div>
				//		<span id="audio_caption"></span>
				//	</div>

				jQuery("body").append('<' + 'div class="simple_overlay" id="av_overlay">'
						+ '<' + 'div id="rbbheadTitle"></div>'
						+ '<' + 'div id="av_player"></div>'
						+ '<' + 'span id="av_caption"></span>'
						+ '<' + '/div>');

				jQuery("#av_overlay").overlay({
					top: 100, // Abstand vom oberen Rand der Seite
					mask: {
						color: '#000',
						loadSpeed: 200,
						opacity: 0.5
					}, // Formatierung des Overlays
					closeOnClick: true, // Klick neben das Overlay schliesst den Player
					load: false,
					onLoad: function(event) {
						// In einigen Browsern (IE) wird beim Anzeigen der Überlagerungsebene nicht der Flash-Player aktiviert
						// und somit dessen onReady-Event nicht ausgeführt. Deshalb  muss in diesem Fall von hier aus
						// das Aktualisieren der Mediendatei angestoßen werden. Verzögerung, damit Player bereits ladefähig
						// ist.
						avPlayer.loadHandler = setTimeout(function(){avPlayer._loadFile(), 2000});
					},
					onClose: function() {
						try {
							if (avPlayer.player != null) {
								avPlayer.player.stop();
							}
						}
						catch (e) {
							avPlayer.log(e);
						}
						return true;
					}
				});
			},

			open: function(id, callerObj) {
				this.currentAVData.id = id;
				this.currentAVData.caption = jQuery(callerObj).text();

				var player;
				if (!this.jWPlayerInitialized && !this.initializingJWPlayer) {
					this.initializingJWPlayer = true;
					player = jwplayer("av_player").setup({
						'modes': [
							{
								type: 'flash',
								src: '/cqbase/jwplayer/5_6/player.swf',
								config: {
									'provider': 'rtmp',
									'streamer': 'rtmp://ondemand.rbb-online.de/ondemand',
									file: "/cdw/" + id + ".mp3"
								}
							}
						],
						'image': null,
						'skin': '/cqbase/jwplayer/skins/classic/classicA.xml',
						'width': '512',
						'height': '19',
						'bufferlength': '5',
						'smoothing': 'true',
						'controlbar': 'bottom',
						'icons': 'true',
						'idlehide': 'false',
						'stretching': 'uniform',
						'autostart': 'true',
						'autoplay': 'true',
						'dock': 'false',
						events: {
							onReady: function() {
								// Beim onLoad-Event der Überlagerungsebene wird _loadFile verzögert gestartet, falls dieses
								// Event hier (onReady) nicht eintritt. Da es doch eingetreten ist, kann hier die verzögerte
								// Ausführung abgebrochen und der normale Aufruf ausgeführt werden. Vorteil: Player ist bereits
								// bereit, also kann das Laden der aktuellen Mediendatei sofort beginnen.
								if (avPlayer.loadHandler != null) {
									var handler = this.loadHandler;
									avPlayer.loadHandler = null;
									clearTimeout(handler);
								}
								// Player ist geladen, jetzt erst neue Mediendatei hineinladen
								avPlayer._loadFile();
							},
							onPlaylist: function(playlist) {
								if (avPlayer.currentAVData.playOnLoad) {
									avPlayer.currentAVData.playOnLoad = false;
									this.play(true);
								}
							},
							onError: function(error) {
								jQuery("#av_caption").html("Ein Fehler ist aufgetreten: " + error.message);
								avPlayer.log("Error: " + error.message);
							}
						}
					});
					this.currentAVData.playOnLoad = true;
					this.player = player;
					this.jWPlayerInitialized = true;
					this.initializingJWPlayer = false;
				}
				// Hier noch nicht laden, da Player noch nicht sichtbar und dadurch das Laden keinen Effekt hat (wird nicht ausgeführt)
//				else {
//					this._loadFile();
//				}

				if (jwplayer("pp_" + id) != null) { // Previewplayer stoppen
					jwplayer("pp_" + id).stop();
				}
				jQuery("#av_overlay").overlay().load();
			},

			_loadFile: function() {
				if (this.currentAVData.id != null) {
					jQuery("#av_caption").html(this.currentAVData.caption);
					var player = this.player;
					if (player) {
						var audioFile = "/cdw/" + this.currentAVData.id + ".mp3";
						var currentFile = player.config.modes[0].config.file;
						if (audioFile !== currentFile) {
							player.load({file:audioFile, streamer:"rtmp://ondemand.rbb-online.de/ondemand"});
						}
						this.currentAVData.playOnLoad = true;
					}
				}
			}
		};
		avPlayer.init();
		return avPlayer;
	};
}

