soundManager.url = '/swf/soundmanager2.swf'
soundManager.debugMode = false;
soundManager.nullURL = 'music/empty.mp3';

var song_loaded = false;
var song_loading = false;
var song_playing = false;
var image_loaded = false;
var current_song_id = null;
var song_length = 0;
var use_spacebar = false;

// Detect if the browser is IE or not.
// If it is not IE, we assume that the browser is NS.
var IE = document.all?true:false


// to capture the spacebar during playback
Event.observe(document, 'keypress', pause_from_space_bar, false);


soundManager.onerror = function() {
    // soundManager failed to initialise (security restrictions, no support, missing SWF etc.)
    // Notify user if needed, disable sound-specific functionality etc.
    //alert("Soundmanager failed to load");
}

soundManager.onload = function() {
}

function mouse_over(song_id) {	
	//Effect.Appear("track_player_" + song_id);
	var div = $("track_player_" + song_id);
	div.style.display = 'block';
}

function mouse_out(song_id) {
	if (current_song_id != song_id) {
		//Effect.Fade("track_player_" + song_id);
		var div = $("track_player_" + song_id);
		div.style.display = 'none';
	}
}

function disable_spacebar() {
	use_spacebar = false;
}

function enable_spacebar() {
	use_spacebar = true;
}

function play_song(song_id, song_url) {
	//alert ("PosY: " + posy + " loc: " + locy);
    if (current_song_id != song_id && !song_loading) {
    	if (current_song_id != null) {
    		Effect.Fade("track_player_" + current_song_id);
    		$("slider_" + current_song_id).style.left = "1px";
    		$("track_pos_" + current_song_id).style.width = "1px";
		    Element.update('loading_pct_' + current_song_id, "Click to Listen!");
	    	soundManager.destroySound(current_song_id);
    	}
    	
	    current_song_id = song_id;
	    var div = document.getElementById("track_player_" + song_id);
   		Effect.Appear("track_player_" + song_id);
	    var img_loader = document.getElementById('track_pos_' + song_id);

		var sound = soundManager.getSoundById(song_id);
		enable_spacebar();
		if (sound) {
		    soundManager.play(current_song_id);
		} else {
	        soundManager.createSound({
	            'id': current_song_id,
	            'stream':true,
	            'url': song_url,
	            'autoLoad':true,
	            'autoPlay':true,
	            'whileloading':on_song_loading,
	            'onid3':id3loaded,
	            'onload':on_song_load,
	            'whileplaying':play_update
	        });
	        song_loading = true;
	        Element.update('loading_pct_' + song_id, "   loading..please wait");
		}	    
	        
	    var slider = document.getElementById('slider');
	    slider.style.left = '1px';
	    img_loader.style.width = '1px';
    } else {
    	//alert("Are same or song is loading with " + current_song_id + " loading " + song_loading);
    }
}

function on_song_loading() {

    //var sound = soundManager.getSoundById(current_song_id);
    var pct = this.bytesLoaded / this.bytesTotal;
    var pct_display = Math.floor(pct * 100);
    var actual_pct = pct_display * 2;
	//alert("Loaded " + this.bytesLoaded + " / " + this.bytesTotal + " = " + actual_pct);
    display_pos = (pct * 100);
    var img_loader = document.getElementById('track_pos_' + current_song_id);
    //img_loader.style.left = pct_display + 'px';
    img_loader.style.width = actual_pct + 'px';
    Element.update('loading_pct_' + current_song_id, "loading " + pct_display + "%");
}

function on_song_load() {
	song_loading = false;
    var sound = soundManager.getSoundById(current_song_id);
    if (sound.duration == 4075) {
	    var img_loader = document.getElementById('track_pos_' + current_song_id);
	    img_loader.style.width = 0 + 'px';
	    Element.update('loading_pct_' + current_song_id, "no track found");
    } else {
	    Element.update('loading_pct_' + current_song_id, "");
		//soundManager.play(current_song_id);
    }
 }

function play_update() {
	//alert("Playing me");
	song_loading = false;
    var slider = document.getElementById('slider_' + current_song_id);
    var sound = soundManager.getSoundById(current_song_id);
    if (sound.duration == 4075) {
    
    } else {
	    var pct = (sound.position/sound.duration);
	    var pct_display = Math.floor(pct * 100);        
	    var actual_pct = pct_display * 2;
	    Element.update('loading_pct_' + current_song_id, "spacebar to pause " + getSongTime(sound.position));
	    slider.style.left = actual_pct + 'px';
    }
}

function seek_to() {
    var track_place = document.getElementById('track_player_' + current_song_id);
	var pct = ((posx - 760) * .5) * .01;
	//alert("Going to " + pct);
	
    var sound = soundManager.getSoundById(current_song_id);
    var pos = Math.floor((pct * sound.duration));
    if (sound.playState == false) {
        play_song();
    }
    
    soundManager.setPosition(current_song_id, pos);
	
}

function getSongTime(nMSec) {
    // convert milliseconds to mm:ss, return as object literal or string
    var nSec = Math.floor(nMSec/1000);
    var min = Math.floor(nSec/60);
    var sec = nSec-(min*60);
    var nanosec = (nMSec - (min * 60 * 1000) - (sec * 1000));
    nanosec_display = nanosec;
    if (nanosec < 10) {
        nanosec_display = "00" + nanosec;
    } else if (nanosec > 10 && nanosec < 100) {
        nanosec_display = "0" + nanosec;
    }
    
    var sec_display = sec;
    if (sec < 10) {
        sec_display = "0" + sec;
        
    }
    if (min == 0 && sec == 0) return "0:00"; // return 0:00 as null
    return min + ":" + sec_display + ":" + nanosec_display;
}

function id3loaded() {
	var prop = null;
	var data = '';
	for (prop in this.id3) {
	  data += prop+': '+this.id3[prop]+','; // eg. title: Loser, artist: Beck
	}	
	//alert(data);
}



function pause_from_space_bar(e) {

	if (use_spacebar == false) {
		//alert("its false");
		return true;
	}
    var code;
    if (!e) var e = window.event;
    if (e.keyCode) code = e.keyCode;
    else if (e.which) code = e.which;
    //alert(code);
    if (code == 32) {
    	if (!IE) {
    		e.preventDefault();
    	}
        // alert ("Hit spacebar");
        var sound =  soundManager.getSoundById(current_song_id);
        // alert(sound.paused + "-" + sound.playState);
        if (sound.paused || sound.playState == false) {
            soundManager.play(current_song_id);
		    Element.update('loading_pct_' + current_song_id, "spacebar to pause " + getSongTime(sound.position));
        } else {
            soundManager.pause(current_song_id);
		    Element.update('loading_pct_' + current_song_id, "spacebar to play " + getSongTime(sound.position));
        }
    }

    // left arrow
    if (code == 37) {
        e.preventDefault();
        var sound =  soundManager.getSoundById(current_song_id);
        var new_pos = sound.position - Math.round(sound.duration * .10);
        //alert("first: " + sound.position + ", new one:" + new_pos);
        soundManager.setPosition(current_song_id, new_pos);        
    }
    
    // right arrow
    if (code == 39) {
        var sound =  soundManager.getSoundById(current_song_id);
        var new_pos = sound.position + Math.round(sound.duration * .10);
        //alert("first: " + sound.position + ", new one:" + new_pos);
        soundManager.setPosition(current_song_id, new_pos);        
    }
    
    
    return false;
}



// If NS -- that is, !IE -- then set up for mouse capture
if (!IE) document.captureEvents(Event.MOUSEMOVE)

// Set-up to use getMouseXY function onMouseMove
document.onmousemove = getMouseXY;

// Temporary variables to hold mouse x-y pos.s
var posx = 0;
var posy = 0;

// Main function to retrieve mouse x-y pos.s

function getMouseXY(e) {

	if (!e) var e = window.event;
	if (e.pageX || e.pageY) {
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}

  return true;
}


