/*
 * Dynamic script loading helper
 * Normalizes good browser onload() vs. IE readyState weirdness
 */
function loadScript(sURL, onLoad) {

  function loadScriptHandler() {
    var rs = this.readyState;
    if (rs == 'loaded' || rs == 'complete') {
      this.onreadystatechange = null;
      this.onload = null;
      if (onLoad) {
        onLoad();
      }
    }
  }

  function scriptOnload() {
    this.onreadystatechange = null;
    this.onload = null;
    window.setTimeout(onLoad,20);
  }

  var oS = document.createElement('script');
  oS.type = 'text/javascript';
  if (onLoad) {
    oS.onreadystatechange = loadScriptHandler;
    oS.onload = scriptOnload;
  }
  oS.src = sURL;
  document.getElementsByTagName('head')[0].appendChild(oS);

}

// Wait for window load, then load soundmanager2.js, let it start and play a test sound
window.onload = function() {
	setTimeout(function() {
    	loadScript('/js/soundmanager2.js', function() {
			soundManager.url = '/sm2/swf/';
			soundManager.flashVersion = 9;
			soundManager.useHTML5Audio = true;
			soundManager.debugMode = false;
			soundManager.defaultOptions.volume = 100;	  

			soundManager.onready(function() {
				
				//alert('soundManager.supported(); --> ' + soundManager.supported());
				
			});
			soundManager.beginDelayedInit(); // ensure start-up in case document.readyState and/or DOMContentLoaded are unavailable
   		});
	},1000);
}


trackNumber = 1;
loadedNumber = 1;

playerVisible = false;
playerVisibleAnimation = false;

playerPlaylist = new Array(); //
playlistId = 0;
setUid = 0;



//var mySound;

$(document).ready(function() {
	
	mpPlayPauseControl = document.getElementById('botao');
	mpLoaded = document.getElementById('carregado');
	mpNotLoaded = document.getElementById('naocarregado');
	mpPlaying = document.getElementById('tocando');

	
	
	//tempSongArray = new Array();
	//songPlaylistArray = new Array();
	//songArray = new Array();// [id,titulo,src,playlist]	
	
});

function showPlayer() {
	playerVisibleAnimation = true;
	$("#Player").addClass("playerShow", 1000, onPlayerShow);
	$(".togglePlayerButton").addClass("togglePlayerButtonOn", 1000);
}
function onPlayerShow() {
	playerVisibleAnimation = false;
	playerVisible = true;
}
function hidePlayer() {
	playerVisibleAnimation = true;
	$("#Player").removeClass("playerShow", 1000, onPlayerHide);
	$(".togglePlayerButton").removeClass("togglePlayerButtonOn", 1000);
}
function onPlayerHide () {
	playerVisibleAnimation = false;
	playerVisible = false;
}
function togglePlayerVisibility (){
	
	if (!playerVisibleAnimation){
		if (playerVisible){
			//document.getElementById('Player').style.top = '-100px';
			//onPlayerHide();
			hidePlayer();
		}else{
			//document.getElementById('Player').style.top = '0px';
			//onPlayerShow();
			showPlayer();
		}		
	}
}

function getNewOnPlaylist(pid,autoplay){
	
	//alert(pid)
	
	var url = "/ajaxSetInfo.php";
	var params = "UID="+pid;
	var req = ajaxReq();
	req.open("POST", url, true);
	req.setRequestHeader('Content-Type', "application/x-www-form-urlencoded; charset=utf-8");
	req.setRequestHeader("Content-length", params.length);
	req.setRequestHeader("Connection", "close");
	req.onreadystatechange = function() {	
		if(req.readyState == 4 && req.status == 200) {
			var resposta = req.responseText;
			
			var set = JSON.parse(resposta);			
			putNewOnPlaylist(set,autoplay);
			
			//alert(set['src']);
			//setNewContent(resposta);
		}
	}
	req.send(params);	
	
	
}


function putNewOnPlaylist(set,autoplay){
	
	//playerPlaylist.push(set);
	playerPlaylist[0] = set;
	
	if (autoplay){
		
		var id = set['uid'];
		var src = set['src'];
		var titulo = set['setmix'];
		var waveform = set['waveform'];
		var friendlyurl = set['friendlyurl'];
		var playlist = set['playlist'];
		
		document.getElementById('titulo').innerHTML = titulo;
		
		document.getElementById('waveformImg').src = 'http://www.jonathanmartins.com.br/timthumb/timthumb.php?w=580&h=80&zc=0&src=http://www.jonathanmartins.com.br/waveform/' + waveform;
		
		try{mySound.destruct();}catch(e){}
		
		setUid = id;
		
		createNewSound(id,src,true);
		showPlayer();	
		
		trackNumber = 0;
			
	}
	
	//alert('playlist -> ' + playlist);
	
	
}

function createNewSound (pid,psrc,pautoplay) {

	mySound = soundManager.createSound({
		id: pid,
		url: '/mp3/' + psrc,
		whileplaying: seekPlaying,
		whileloading: seekLoading,
		onplay: onPlay,
		onpause: onPause,
		onstop: onStop,
		onresume: onResume
	});
	if (pautoplay) mySound.play();
	
}


function goPosition(obj,event){	
	var w = obj.style.width.split("px");w = w[0];
	var recuar = obj.offsetLeft;
	var pcto = (event.clientX - recuar) * 100 / w;
	seekPosition(pcto,obj);
}
function seekPosition(pcto,obj){
	var w = obj.style.width.split("px");w = w[0];
	
	var total = mySound.duration;
	var seekLocal = Math.round((total / 100) * pcto);
	//soundManager.setPosition('mySound',50000);
	mySound.setPosition(seekLocal);
	
	//soundManager._writeDebug('total-> ' + total + ' | seekLocal -> ' + seekLocal);
	
	var largura = pcto * w / 100;
	mpPlaying.style.width = largura + 'px';
}
function seekPlaying(){
	
	var w = document.getElementById('waveform').style.width.split("px");w = w[0];

	var pcto = mySound.position * 100 / mySound.durationEstimate;
	var largura = pcto * w / 100;
	
	mpPlaying.style.width = largura + 'px';
	
	if (largura > 429){
		document.getElementById('tempo').style.marginLeft = '380px';
	}else{
		document.getElementById('tempo').style.marginLeft = (largura + 2 - 50) + 'px';
	}	
	
	// relogio contador
	var tS = Math.floor(this.durationEstimate / 1000) %60;  if (tS < 10){var tSF = '0' + tS}else{var tSF = String(tS)}
	var tH = Math.floor(this.durationEstimate / 1000 / 60 / 60); if (tH < 10){var tHF = '0' + tH}else{var tHF = String(tH)}
	var tM = Math.floor(this.durationEstimate / 1000 / 60) %60; if (tM < 10){var tMF = '0' + tM}else{var tMF = String(tM)}
	var pH = Math.floor(this.position / 1000 / 60 / 60);if (pH < 10){var pHF = '0' + pH}else{var pHF = String(pH)}
	var pM = Math.floor(this.position / 1000 / 60) %60;if (pM < 10){var pMF = '0' + pM}else{var pMF = String(pM)}
	var pS = Math.floor(this.position / 1000) % 60;if (pS < 10){var pSF = '0' + pS}else{var pSF = String(pS)}
	var ttotal = tHF + ':' + tMF + ':' + tSF;
	var pparcial = pHF + ':' + pMF + ':' + pSF;
	document.getElementById('tempo').innerHTML = '' + pparcial + ' - ' + ttotal;
	
	var segundo = mySound.position / 1000;
	var initimeArray = playerPlaylist[playlistId].playlist;	
	if (trackNumber != getTrackNumber(segundo,initimeArray)) setNowTrack(getTrackNumber(segundo,initimeArray));

	
	
	//soundManager._writeDebug('new uid: ' + playerPlaylist[playlistId].uid);
	
}
function setNowTrack(p) {
	try{
		
		if (trackNumber != p) $('#track_' + playerPlaylist[playlistId].uid + '_' + trackNumber).removeClass("playlistItemNow", 333);		
		var classname = document.getElementById('track_' + playerPlaylist[playlistId].uid + '_' + p).className;
		
		if (classname != 'playlistItemLoaded') document.getElementById('track_' + playerPlaylist[playlistId].uid + '_' + p).className = 'playlistItemLoaded';		
		$('#track_' + playerPlaylist[playlistId].uid + '_' + p).addClass("playlistItemNow", 333);
		
	}catch(e){}
	trackNumber = p;
}
function getTrackNumber(segundo,initimeArray){
	for(i=0;i<initimeArray.length;i++){
		if (segundo < initimeArray[i]){
			return (i);
		}else{
			if (segundo > initimeArray[initimeArray.length-1]) return (initimeArray.length);
		}
	}
}

function seekLoading(){
	
	var w = document.getElementById('waveform').style.width.split("px");w = w[0];
	
	var pcto = this.bytesLoaded * 100 / this.bytesTotal;
	var largura = pcto * w / 100;
	
	var segundo = mySound.duration / 1000;
	var initimeArray = playerPlaylist[playlistId].playlist;
	if (loadedNumber != getLoadedTrackNumber(segundo,initimeArray)) setLoadedTrack(getLoadedTrackNumber(segundo,initimeArray));
	
	mpLoaded.style.width = largura + 'px';
	mpLoaded.style.filter = "alpha(opacity=0)";
	
	mpNotLoaded.style.marginLeft = largura + 'px';
	mpNotLoaded.style.width = (w - largura + 2) + 'px';
	if (pcto < 100){
		mpNotLoaded.innerHTML = '<div style="color:#FFF;margin-left:5px;margin-top:3px;">' + Math.round(pcto) + '%</div>';	
	}else{
		mpNotLoaded.innerHTML = '';
	}
	
	//soundManager._writeDebug('new largura: ' + largura);
	
}

function updateTrackSettings(pid){
	

	
	if (pid){
		try{
			if (playerPlaylist[playlistId].uid == pid){
				var total = playerPlaylist[playlistId].playlist.length;
				setLoadedTrack(total);		
			}		
		}catch(e){}
	}
	trackNumber = 0;	
}

/*
function updateSetList(){
	
	var elem = document.getElementsByTagName('a');
	for(var i = 0; i < elem.length; i++){
		var id = elem.item(i).id;
		var tempId = id.split('_');
		if (tempId[0] == 'set'){
			addClickListener(id);
			//alert(tempId[1])
		}
	} 
}
*/
function getLoadedTrackNumber(segundo,initimeArray){
	for(i=0;i<initimeArray.length;i++){
		if (segundo < initimeArray[i]){
			return (i);
		}else{
			if (segundo > initimeArray[initimeArray.length-1]) return (initimeArray.length);
		}
	}
}

function setLoadedTrack(p) {

	var total = playerPlaylist[playlistId].playlist.length;
	for (var i=p; i<=total; i++){
		try{
			document.getElementById('track_' + playerPlaylist[playlistId].uid + '_' + i).className = 'playlistItemNotLoaded';
		}catch(e){}
	}	
	
	for (var i=p;i>0;i--){
		try{
			var classname = document.getElementById('track_' + playerPlaylist[playlistId].uid + '_' + (i)).className;
			if (classname != 'playlistItemLoaded' && classname != 'playlistItemLoaded playlistItemNow'){
				document.getElementById('track_' + playerPlaylist[playlistId].uid + '_' + (i)).className = 'playlistItemLoaded';
			}
		}catch(e){}
	}

	loadedNumber = p;	
}
function setNewTrackNumber(obj){
	if (obj.className == 'playlistItemLoaded'){
		var id = obj.id.split("_");
		var initimeArray = playerPlaylist[playlistId].playlist;		
		seekToNewPosition(initimeArray[(id[2] - 1)]);
	}
}
function seekToNewPosition(segundo){
	mySound.setPosition((segundo * 1000));
}

function onClickPlayPause(){ mySound.togglePause();  }

function onPlay() {  mpPlayPauseControl.style.backgroundImage = 'url(/images/player/pause_tine.png)'; plusOneHit(); setNowTrack(trackNumber); }
function onPause() { mpPlayPauseControl.style.backgroundImage = 'url(/images/player/play_tine.png)'; }
function onStop() { mpPlayPauseControl.style.backgroundImage = 'url(/images/player/play_tine.png)'; }
function onResume() { mpPlayPauseControl.style.backgroundImage = 'url(/images/player/pause_tine.png)'; }

function onPlaylistClickFromPlayer(){
	
	var friendlyurl = playerPlaylist[playlistId].friendlyurl;
	var uid = playerPlaylist[playlistId].uid;
	
	var url = '/dj/set/' + uid + '/' + friendlyurl + '.html';
	
	getAjaxPage(url);
	history.pushState(null, 'DJ-SET', url);
	
	//alert(url);
	
	//e.preventDefault();	
	
}

function onDownloadClickFromPlayer(){
	try{
		var uid = playerPlaylist[playlistId].uid;
		onDownloadClick(uid);
	}catch(e){}
}

function onDownloadClick(uid){ location.href = "/download.php?tipo=set&uid=" + uid;  }
function plusOneHit() {
	var req = ajaxReq();
	var url = "http://www.jonathanmartins.com.br/plays.php?uid="+mySound.sID;
	req.open("Get", url, true);	
	req.send(null);
}

