/* ----------------------------- [ player ] -----------------------------*/
skatic.player = {};

skatic.player.currentPlayed = {
	'id': null,
	'type': null
};
skatic.player.currentPlaylist = null;

/*skatic.player.addPlayer = function(){
	return;
		AC_FL_RunContent(
			'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0',
			'width', '438',
			'height', '63',
			'src', '/flash/audio_player',
			'quality', 'high',
			'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
			'align', 'middle',
			'play', 'true',
			'loop', 'true',
			'scale', 'showall',
			'wmode', 'window',
			'devicefont', 'false',
			'id', 'audio_player',
			'bgcolor', '#ffffff',
			'name', 'audio_player',
			'menu', 'true',
			'allowFullScreen', 'false',
			'allowScriptAccess','sameDomain',
			'movie', '/flash/audio_player',
			'salign', ''
			); //end AC code

//	if ($('#playerObjectId').length == 0 || $('#playerObjectId').find('embed').length == 0) {
//		$('#divPlayer').html('<object id="playerObjectId" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="438" height="63" name="playerObjectName"><param name="movie" value="/flash/audio_player.swf"><param name="quality" value="high"><param name="wmode" value="transparent"><param name="allowScriptAccess" value="sameDomain" /><embed src="/flash/audio_player.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="438" height="63" allowScriptAccess="sameDomain" id="playerEmbedId"></embed></object>');
//	}
}*/

/*skatic.player.embedPlayer = function(){
	var flashvars = {'test':'test'};
	var params = {
		'movie':'/flash/audio_player.swf',
		'quality':'high',
		'wmode':'transparent',
		'allowScriptAccess':'sameDomain'
	};
	var attributes = {
		'id': "playerObjectId",
	  	'name': "playerObjectName"
	};
//	if ($.browser.msie || $.browser.opera) {
//		swfobject.embedSWF("/flash/audio_player.swf", "divPlayer", "438", "63", "9.0.0", false, flashvars, params, attributes, function(result){
//			skatic.player.addPlayer();
//		});
//	} else {
//		skatic.player.addPlayer();
//	}
};*/

skatic.player.callback = function(callback, params) {
//	if (typeof console.log != 'undefined') {
//		console.log('skatic.player.callback called with ', callback, '', params);
//	}
	
	switch (callback) {
		case 'mplayerState':
			skatic.player.onFlashPlayerIsReady(params);
			break;
		case 'onDownloadSoundtrack':
			skatic.player.onDownloadSoundtrack(params);
			break;
		case 'onRemoveSoundtrack':
			skatic.player.onRemoveSoundtrack(params);
			break;
		case 'trackInitialized':
			skatic.player.onTransmitStatisticalData(params);
			break;
		case 'screenMode': //new
			skatic.player.changeFlashSize(params);
			break;
		case 'playlistButtonState': //new
			skatic.player.playlistMenuButtonOverOrOut(params);
			break;
		case 'gotoTrackPage':
			skatic.player.gotoTrackPage(params);
			break;
		default:
			alert(callback);
			break;
	}
};

skatic.player.changeFlashSize = function(screenMode) {
	switch (screenMode) {
		case 'audio'://650x100
			$('#divPlayer').css('height', '100px');
			$('#header').css('height', $('#header').data('defaultHeight')+'px');
			break;
		case 'video'://650x394
			if ($('#header').data('defaultHeight') === null) {
				$('#header').data('defaultHeight', $('#header').height());
		}
			$('#divPlayer').css('height', '394px');
			$('#header').css('height', '394px');
			break;
		case 'full':
			//console.log('skatic.player.changeFlashSize', screenMode);
			break;
	}
};

skatic.player.playlistMenuButtonOverOrOut = function(overOrOut) {
	//console.log('skatic.player.playlistMenuButtonOverOrOut', overOrOut, skatic.menu.editPlaylists.showTimeout);
	if (overOrOut == 'over') {
		skatic.menu.editPlaylists.mouseOverElem = true;
		setTimeout(function(){
			skatic.menu.editPlaylists.over();
		}, 200);
	} else if (overOrOut == 'out') {
		skatic.menu.editPlaylists.mouseOverElem = false;
		setTimeout(function(){
			skatic.menu.editPlaylists.out();
		}, 1000);
	}
};

skatic.player.gotoTrackPage = function(params){
	switch (params.type) {
		case 'audio':
			document.location.hash = '/songs/viewById/'+params.id+'/';
			loadPage('/songs/viewById/'+params.id+'/');
			break;
		case 'video':
			document.location.hash = '/video/view/'+params.id+'/';
			loadPage('/video/view/'+params.id+'/');
			break;
	}
};

skatic.player.play = function(song){
	song.trackName = htmlspecialchars_decode(html_entity_decode(html_entity_decode(song.trackName)));
	song.artistName = htmlspecialchars_decode(html_entity_decode(html_entity_decode(song.artistName)));
	
	try {
		var res = skatic.player.getMovie().addNewPlaylist([song], false, true);
	} catch (e) {
		setTimeout(function(){
			var res = skatic.player.getMovie().addNewPlaylist([song], false, true);
		}, 500);
	}
};

skatic.player.playBySongId = function(songId) {
	$.ajax({
		'url':' /songs/play/'+songId+'/',
		'type':'GET',
		'success':function(response){
			if (typeof response.error != 'undefined') {
				return ;
				//stub
			}
			skatic.player.currentPlayed = {
				'id': response.id,
				'content_type': 'audio'
			}
			skatic.player.currentPlaylist = null;
			var result = skatic.player.play(response);
		},
		'cache':true,
		'dataType':'json'
	});
};

skatic.player.loadPlaylist = function(playlist, repeat, autoStart){
	if (typeof playlist.flash != 'undefined') {
		return skatic.ajaxResponse(playlist);
	}
	if (typeof repeat == 'undefined') {
		var repeat = true;
	}
	if (typeof autoStart == 'undefined') {
		var autoStart = true;
	}
	
	if (playlist.length > 0) {
//		console.log(playlist);
		for (var i = 0; i < playlist.length; i++) {
			playlist[i].trackName = htmlspecialchars_decode(html_entity_decode(html_entity_decode(playlist[i].trackName)));
			playlist[i].artistName = htmlspecialchars_decode(html_entity_decode(html_entity_decode(playlist[i].artistName)));
		}
		
		skatic.player.getMovie().addNewPlaylist(playlist, repeat, autoStart);
		
		skatic.player.currentPlayed = {
			'id': playlist[0].id,
			'content_type': playlist[0].type
		}
	}
};



skatic.player.history = [];

skatic.player.onFlashPlayerIsReady = function() {
	setTimeout(function(){
		if(typeof skatic.player.history == 'string' && skatic.player.history.isJSON()) {
			skatic.player.history = JSON.parse(skatic.player.history);
		}
		skatic.player.loadPlaylist(skatic.player.history, true, false); //no autostart
		
	}, 100);
};

skatic.player.onDownloadSoundtrack = function(songId) {
	document.location.href = '/songs/download/'+songId+'/';
};



skatic.player.onTransmitStatisticalData = function (params) {
	var id = params.id;
	var type = params.type;
	
	if (skatic.player.currentPlayed.content_type == type && skatic.player.currentPlayed.id == id) {
		return false;
	}

	skatic.player.currentPlayed = {
		'id': id,
		'content_type': type
	}

	if (!skatic.user.isLoggedIn()) {
		return false;
	}
	
	//console.log(skatic.player.currentPlayed, id);

	if (skatic.menu.editPlaylists.mouseOverElem) {
		skatic.menu.editPlaylists.ajaxLoadMenu();
	}
	
	switch (type) {
		case 'audio':
			setTimeout(function(){
				//ajax put statististic if after 10 playing secongs song is still current
				if (skatic.player.currentPlayed.content_type != type || skatic.player.currentPlayed.id != id) {
					return false;
				}
				$.ajax({
					'url':'/songs/played/'+id+'/',
					'type':'GET',
					'success':function(response){
					},
					'cache':false,
					'dataType':'json'
				});
			}, 10000);
			break;
		case 'video':
			setTimeout(function(){
				//ajax put statististic if after 10 playing secongs song is still current
				if (skatic.player.currentPlayed.content_type != type || skatic.player.currentPlayed.id != id) {
					return false;
				}
				$.ajax({
					'url':'/video/played/'+id+'/',
					'type':'GET',
					'success':function(response){
					},
					'cache':false,
					'dataType':'json'
				});
			}, 10000);
			break;
	}
};

skatic.player.getMovie = function() {
    var M$ =  navigator.appName.indexOf("Microsoft") != -1;
    return (M$ ? window : document)["playerObject"];
};

/*skatic.player.getCurrentSongId = function() {
	var result = skatic.player.getMovie().getCurrentSoundtrackUID();
	console.log(result);
}*/

/*---------------------------------------------------------------------------------------------------*/


/*$('#divPlayer').ready(function(){ //player


//	skatic.player.addPlayer();
//	skatic.player.embedPlayer();



});*///#player ready


$(function(){
	
	try {
		
	$('.playlink').live('click', function(){

		var relData = $(this).attr('rel').split('_');

		if (relData[0] == 'song') {
			var url = '/songs/play/'+relData[1]+'/' 
		} else if (relData[0] == 'user') {
			var url = '/songs/playUser/'+relData[1]+'/';
		} else if (relData[0] == 'playlist') {
			var url = '/playlists/play/'+relData[1]+'/';
		} else if (relData[0] == 'genre') {
			var url = '/genres/play/'+relData[1]+'/';
		} else if (relData[0] == 'video') {
			var url = '/video/play/'+relData[1]+'/';
		}
		
		$.ajax({
			'url':url,
			'type':'GET',
			'success':function(response){
				
				if (typeof response.error != 'undefined') {
					return ;
					//stub
				}
				
				if (relData[0] == 'video') {
					skatic.player.currentPlayed.content_type = 'video';
				} else {
					skatic.player.currentPlayed.content_type = 'audio';
				}
				
				if (relData[0] == 'song' || relData[0] == 'user' || relData[0] == 'video') {
					skatic.player.currentPlayed.id = response.id;
					skatic.player.currentPlaylist = null;
					var result = skatic.player.play(response);
				} else {
					skatic.player.currentPlaylist = relData[1];
					var result = skatic.player.loadPlaylist(response);
				}
				
				//console.log(result);
				
			},
			'cache':true,
			'dataType':'json'
		});
		
		return false;
	});
	
	} catch (e) {
		//pass
	}
	
});