$(document).ready(function(){
	var playItem = 0;
	var activePlayerID = "none";
	var recentPlayerID = "none";
	var trackStartedWithClick = 0;
	var isIphone = 0;
	var outboundLinkActive = 0;
	
	if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i)))
	{ 
	   //if( document.cookie.indexOf( "iphone_redirect=false" ) == -1 ) window.location = "URL";
		isIphone = 1;
		//alert(navigator.userAgent);
	}
	
	// Diese Eigenschaften werden hier als "default" gesetzt, anstatt in jeder Instanz individuell	
	$.jPlayer.defaults.oggSupport = false;
	$.jPlayer.defaults.customCssIds = true;
	
	// Variable zum Zählen der Instanzen
	var i = 0;
	var playerID;
	
	// Funktion zum Erzeugen der Player-Instanzen 
	function createPlayerInstance()
	{
	if(typeof players != 'undefined' && players.length > 0 && typeof players[ i ] != 'undefined' ) {
		playerID = players[ i ][ 0 ];
		//eval("playerID = players[ i ][ 0 ]"); 
		eval("jpPlayTime" + playerID + " = $('#jplayer_play_time' + players[ playerID ][ 0 ]  )");
		eval("jpTotalTime" + playerID + " = $('#jplayer_total_time' + players[ playerID ][ 0 ] )");
		
		$("#jquery_jplayer" + playerID ).jPlayer({
			ready: function () {
				for( q = 0; q < players[ i ][ 1 ].length; q++ )
				{
					displayPlayList( i, playerID, players[ i ][ 1 ][ q ][ 0 ], q );
					//playListInit(false); // Parameter is a boolean for autoplay.
					playListConfigINIT( playerID, players[ i ][ 1 ][ q ][ 1 ] );
				}
				//displayPlayList( i, playerID );
				//this.element.jPlayer( "setFile", players[ i ][ 2 ], players[ i ][ 3 ] );
				if( i < players.length )
				{
					i++;
					createPlayerInstance();
				}
			}
		})
		
		.jPlayer( "cssId", "play", "jplayer_play" + playerID )
		.jPlayer( "cssId", "pause", "jplayer_pause" + playerID )
		.jPlayer( "cssId", "stop", "jplayer_stop" + playerID )
		.jPlayer( "cssId", "loadBar", "jplayer_load_bar" + playerID )
		.jPlayer( "cssId", "playBar", "jplayer_play_bar" + playerID )
		.jPlayer( "cssId", "volumeMin", "jplayer_volume_min" + playerID )
		.jPlayer( "cssId", "volumeMax", "jplayer_volume_max" +  playerID )
		.jPlayer( "cssId", "volumeBar", "jplayer_volume_bar" + playerID )
		.jPlayer( "cssId", "volumeBarValue", "jplayer_volume_bar_value" + playerID )
		.jPlayer( "cssId", "previous", "jp-previous" + playerID )
		.jPlayer( "cssId", "next", "jp-next" + playerID )
		
		.jPlayer( "onProgressChange", function(loadPercent, playedPercentRelative, playedPercentAbsolute, playedTime, totalTime) {
			eval( "jpPlayTime" + playerID + ".text($.jPlayer.convertTime(playedTime))" );
			eval( "jpTotalTime" + playerID + ".text($.jPlayer.convertTime(totalTime))" );
		})
		
		.jPlayer("onSoundComplete", function() {
			playListNextOnSoundComplete( playerID );
		});
		
		
		if( players[ playerID ][ 1 ].length > 1 )
		{
			
			$("#jplayer_play" + playerID ).click( function() {
				return false;
			});
			
			$("#jplayer_previous" + playerID ).click( function() {
				playListPrev( playerID );
				return false;
			});
			
			$("#jplayer_next" + playerID ).click( function() {
				playListNext( playerID );
				return false;
			});
			
		}
		else
		{
			$("#jplayer_previous" + playerID ).css( 'visibility', 'hidden' );
			$("#jplayer_next" + playerID ).css( 'visibility', 'hidden' );
		}
		
		
		// Wenn man einen Player startet, werden die restlichen Instanzen angehalten
		$("#jplayer_play" + playerID ).click( function(event)
		{
			deselectPlayers( "#jquery_jplayer" + playerID, playerID );
			event.preventDefault();
		} );
		$("#jquery_load_bar" + playerID ).click( function(event)
		{
			deselectPlayers( "jplayer_player" + playerID, playerID );
			event.preventDefault();
		} );
		$("#jplayer_play_bar" + playerID ).click( function(event){
			deselectPlayers( "#jquery_jplayer" + playerID, playerID );
			event.preventDefault();
		} );
		
	}	
	}
	
	
	function displayPlayList( which, id, title, whichTrack )
	{
		var playlist_item = 'jplayer_playlist_item_' + id + '_' + whichTrack;
		$("#jplayer_playlist" + id + " ul").append("<li id="+ playlist_item +">"+ title +"</li>");
		
		$('#' + playlist_item).click( function() {
			if( outboundLinkActive != 1 )
			{
				trackStartedWithClick = 1;
				deselectPlayers( "#jquery_jplayer" + id, id);
				//event.preventDefault();
			
				playListChange( whichTrack );
			}
		});
		
		if( isIphone == 0 )
		{
			$('#' + playlist_item).hover( 
				function () {
					$(this).find('#buy-btn').removeClass("hide-buy-btn");
			    	$(this).find('#buy-btn').addClass("show-buy-btn");
			  	},
			  	function () {
			    	$(this).find('#buy-btn').removeClass("show-buy-btn");
					$(this).find('#buy-btn').addClass("hide-buy-btn");
			  	}
			);
		}
		
		$('#' + playlist_item).find("a").hover( 
			function () {
				outboundLinkActive = 1;
			  },
			  function () {
			    outboundLinkActive = 0;
			  }
		);
		
		$('#' + playlist_item).find("a").click( function() {
			outboundLink = $( this ).attr( "href" );
			//pageTracker._trackPageview( '/outbound/music/' + outboundLink )
			pageTracker._trackEvent( 'outbound', 'soundcheck', outboundLink, 1 );
		});
		

	}
	
	function playListInit(autoplay) {
		if(autoplay) {
			playListChange( playItem );
		} else {
			playListConfig( playItem );
		}
	}
    
	function playListConfigINIT( id, mp3 ) {
		$("#jquery_jplayer" + id).jPlayer("setFile", mp3 );
	}
	
	function playListConfig( index ) {
		if( recentPlayerID == "none" )
		{
			recentPlayerID = activePlayerID;
		}
		$("#jplayer_playlist_item_" + recentPlayerID + "_" + playItem).removeClass("jplayer_playlist_current");
		
		playItem = index; 
		
		//alert( trackStartedWithClick );
		if( isIphone == 0 )
		{
			//alert("isIphone" + isIphone );
			$("#jplayer_playlist_item_" + activePlayerID + "_" + index).addClass("jplayer_playlist_current");
			//playItem = index;
			$("#jquery_jplayer" + activePlayerID).jPlayer("setFile", players[ activePlayerID ][ 1 ][ playItem ][ 1 ], players[ activePlayerID ][ 1 ][ playItem ][ 2 ] );
			
			// google analytics 
			pageTracker._trackEvent( 'music', 'play', players[ 0 ][ 1 ][ playItem  ][ 1 ], 1 );
			//googleAnalyticsInfo = 'music' + ' / play / ' + players[ 0 ][ 1 ][ playItem  ][ 1 ] + ' / 1';
			//alert( googleAnalyticsInfo );
		}
		else if( isIphone == 1 && trackStartedWithClick == 1 )
		{
			//alert("was: " + trackStartedWithClick ); 
			$("#jplayer_playlist_item_" + activePlayerID + "_" + index).addClass("jplayer_playlist_current");
			//playItem = index;
			$("#jquery_jplayer" + activePlayerID).jPlayer("setFile", players[ activePlayerID ][ 1 ][ playItem ][ 1 ], players[ activePlayerID ][ 1 ][ playItem ][ 2 ] );
		}
		else if( isIphone == 1 && trackStartedWithClick == 0 )
		{
			$("#jquery_jplayer" + activePlayerID).jPlayer("setFile", players[ activePlayerID ][ 1 ][ playItem ][ 1 ], players[ activePlayerID ][ 1 ][ playItem ][ 2 ] );
			$("#jquery_jplayer" + activePlayerID).jPlayer("pause");
		}
	}
    
	function playListChange( index ) {
		playListConfig( index );
		if( isIphone != 1 && trackStartedWithClick != 0 )
		{
			$("#jquery_jplayer" + activePlayerID).jPlayer("play");
		}
		else if( isIphone == 1 && trackStartedWithClick == 1 )
		{
			$("#jquery_jplayer" + activePlayerID).jPlayer("play");
		}
	}

	function playListNext( player_id ) {
		if( playItem+1 < players[ player_id ][ 1 ].length )
		{
			var index = playItem+1;
		}
		else
		{
			var index = 0;
		}
		playListChange( index );
	}

	function playListPrev( player_id ) {
		if( playItem-1 >= 0 )
		{
			var index = playItem-1;
		}
		else
		{
			var index = players[ player_id ][ 1 ].length-1;
		}
		playListChange( index );
	}
	
	function playListNextOnSoundComplete( player_id ) {
		if( isIphone != 0 )
		{
			trackStartedWithClick = 0;
		}
		if( playItem+1 < players[ player_id ][ 1 ].length )
		{
			var index = playItem+1;
			playListChange( index );
		}
	}

	
	// Funktion zum Stoppen('pause') der Instanzen
	function deselectPlayers( whichPlayer, player_id )
	{
		for( k=0; k<players.length; k++ )
		{
			if( whichPlayer != "#jquery_jplayer" + players[ k ][ 0 ] )
			{
				$("#jquery_jplayer" + players[ k ][ 0 ] ).jPlayer( "pause" );
			}
		}
		
		recentPlayerID = activePlayerID;
		activePlayerID = player_id;
	}
	
	// Initaler Aufruf zum Erzeugen der Player-Instanzen
	if(typeof players != 'undefined' && players.length > 0 )
	{
		//alert(players[ 0 ][ 0 ]);
		createPlayerInstance();
	}
	
});


