/********************************************************/
/* FBA Audio Player										*/
/* Version 1.4											*/
/*														*/
/* Changelog											*/
/* ---------											*/
/*														*/
/* 1.41 tweak for search page							*/
/* 1.4 add extra loading note for long tracks			*/
/* 1.3 error capture									*/
/* 1.2 adapt for search results page					*/
/* 1.1 increase time between tracks						*/
/*														*/
/********************************************************/


// HTML5 audio controls

function pause(milliseconds) {
	var dt = new Date();
	while ((new Date()) - dt <= milliseconds) { /* Do nothing */ }
}


function changeButton(currenttrack, playpause) {
	document.getElementById('controls-track' + currenttrack).innerHTML = '<a  class="html5-' + playpause + '-button" onclick="' + playpause + 'Track(' + currenttrack + ');"></a>';	
}


function changeSearchButton(currenttrack, playpause) {
	document.getElementById('controls-track' + currenttrack).innerHTML = '<a  class="html5-' + playpause + '-button" onclick="' + playpause + 'SearchTrack(' + currenttrack + ');"></a>';	
}


function initTrack(filename, talkid) {
	var totaltracks = document.getElementById('totaltracks').value;
	button = '';
	button += '<audio id="track' + talkid + '" preload = "none" onloadeddata="loaded(' + talkid + ');" onTimeUpdate="updateTime(' + talkid + ', ' + totaltracks + ');" onEnded="nextTrack(' + talkid + ', ' + totaltracks + ');">';
	filename = filename.replace("\'","'");
	ogg = filename.replace(".mp3",".ogg");
	ogg = ogg.replace("/mp3/","/ogg/");
	button += '<source src="' + ogg + '" />';
	button += '<source src="' + filename + '" />';		
	button += '</audio>';
	button += '<div class="audio-control" id="controls-track' + talkid + '">';
	button += '<a class="html5-pause-button" onclick="pauseTrack(' + talkid + ');"></a></div>';
	
	document.getElementById('html5-track' + talkid).innerHTML = button;

	playTrack(talkid);
}


function playTrack(talkid, main_talks_page) {
	if(!main_talks_page) { //If the optional argument is not there, create a new variable with that name.
	var main_talks_page = false;
	}
	var track_played = false;
	if (document.getElementById('trackplayed').value == "yes") {
		track_played = true;
		// change currently playing track image to play
		var currenttrack = document.getElementById('currenttrack').value;
		changeButton(currenttrack, "play");
		// fade volume out of current track
		var timeplayed = document.getElementById('track' + currenttrack).currentTime;
		var vol = document.getElementById('track' + currenttrack).volume;
		for (i = vol; i>0; i=i-0.01) {
			document.getElementById('track' + currenttrack).volume = i;	
			pause(1);
			if (i< 0.5) pause(30);
		}
		//pause(300);

		// pause current track
		document.getElementById('track' + currenttrack).pause();
		if (main_talks_page) {
			var restart_time = timeplayed - 1.5;
			if (restart_time < 0) restart_time = 0;  
			document.getElementById('track' + currenttrack).currentTime = restart_time;
		}
		//pause(500);
	}
	/*if (document.getElementById('track' + talkid).buffered && document.getElementById('buffered').value == 'no') {
		document.getElementById('buffer' + talkid).innerHTML = ' loading...';
	} else document.getElementById('buffer' + talkid).innerHTML = '';*/
	//document.getElementById('buffer' + talkid).innerHTML = '';
	if (main_talks_page) {
		var totalMins = document.getElementById('totalmins' + talkid).value;
		var timeplayed = document.getElementById('track' + talkid).currentTime;	
		if (totalMins > 30) patience = ' (long tracks can take a while to load)'; else patience = '';
	} else {
		patience = '';
		var timeplayed = 0;
	}
	if (timeplayed == 0) document.getElementById('buffer' + talkid).innerHTML = ' loading...' + patience;
	changeButton(talkid, "pause");
	document.getElementById('track' + talkid).play();
	// fade volume in

	if (document.getElementById('trackplayed').value == "yes" && timeplayed > 1) {
		for (i = 0; i<1; i=i+0.001) {
			document.getElementById('track' + talkid).volume = i;
			if (i< 0.4) pause(1); else pause(0.1);			
		}	
	}
	document.getElementById('track' + talkid).volume = 1;
	document.getElementById('currenttrack').value = talkid;
	document.getElementById('trackplayed').value = "yes";
}


function pauseTrack(talkid) {
	document.getElementById('track' + talkid).pause();
	changeButton(talkid, "play");
	document.getElementById('trackplayed').value = "no";
	document.getElementById('buffered').value == 'no'
}


function playAll(total_tracks) {
	// first stop current tracks and reset to beginning
	document.getElementById('trackplayed').value = "no";
	var currenttrack = document.getElementById('currenttrack').value;
	document.getElementById('track' + currenttrack).pause();
	document.getElementById('track' + currenttrack).currentTime = 0;
	changeButton(currenttrack, "play");

	document.getElementById('playingall').value = "yes";
	document.getElementById('playall').innerHTML = '<a class="stopall" onclick="stopAll(' + total_tracks + ');"></a><p>Previewing All</p>';
	playTrack(1);
}


function stopAll(total_tracks) {
	// stop all tracks and reset to beginning
	for (i = 1; i<=total_tracks;i++) {
		document.getElementById('track' + i).pause();
		document.getElementById('track' + i).currentTime = 0;
		changeButton(i, "play");
	}	
	document.getElementById('playingall').value = "no";
	document.getElementById('trackplayed').value = "no";
	document.getElementById('playall').innerHTML = '<a onclick="playAll(' + total_tracks + ');"></a><p>Play All</p>';
}


function nextTrack(talkid, total_tracks) {
	if (document.getElementById('playingall').value == "yes") {
		document.getElementById('controls-track' + talkid).innerHTML = '<a onclick="playTrack(' + talkid + ');"><img src="/images/buttons/talkplay.png" class="play" alt="play" /></a>';
		if (talkid != total_tracks) {
			nextid = talkid + 1;
			document.getElementById('track' + nextid).play();
			changeButton(nextid, "pause");
		}
	} else {
		changeButton(talkid, "play");
		document.getElementById('time' + talkid).innerHTML = '(' + document.getElementById('origtime' + talkid).value + ')';
	}
}


function updateTime(track, total_tracks) {
	document.getElementById('buffered').value = 'yes';
	var trackLength = document.getElementById('track' + track).duration;
	var secs = document.getElementById('track' + track).currentTime;
	if (document.getElementById('buffer' + track).innerHTML != '' && (trackLength - secs > 1)) document.getElementById('buffer' + track).innerHTML = '';
	if (secs == 'Nan' || secs == 0) time = document.getElementById('origtime' + track).value; // error capture
	else {
		secs = Math.floor(trackLength) - secs;
		if (secs < 0) secs = 0;
		var hours = Math.floor(secs / (60 * 60));
		var divisor_for_minutes = secs % (60 * 60);
		var minutes = Math.floor(divisor_for_minutes / 60);
		var divisor_for_seconds = divisor_for_minutes % 60;
		var seconds = Math.ceil(divisor_for_seconds);
		if (seconds == 60) {
			seconds = 0;
			minutes = minutes + 1;
		}	
		if (seconds < 10) seconds = '0' + seconds;
		var time;
		//if (minutes < 10) minutes = '0' + minutes;
		if (hours > 0) {
			if (minutes < 10) minutes = '0' + minutes;
			time = hours + ':' + minutes + ':' + seconds;
		} else {
			time = minutes + ':' + seconds;
		}
	}
	document.getElementById('time' + track).innerHTML = '(' + time + ')';
	
	// reset time of other tracks
	for (i=1;i<=total_tracks;i++) {
		if (track != i && document.getElementById('origtime' + i)) document.getElementById('time' + i).innerHTML = '(' + document.getElementById('origtime' + i).value + ')';
	}
}


function showBuffer(track) {
	var buffer = document.getElementById('track' + track).buffered;
	document.getElementById('buffer' + track).innerHTML = ' loading...';
}


function loaded(track) {
	//var buffer = document.getElementById('track' + track).buffered;
	document.getElementById('buffer' + track).innerHTML = '';
}


