$(document).ready(function() {
  audioLoaded = true;
});

var audioLoaded = false;
soundManager.url = "/flash";
// soundManager.flashVersion = 9;
soundManager.waitForWindowLoad = true;
soundManager.useHighPerformance = true;
soundManager.useFastPolling = true;
soundManager.defaultOptions.whileplaying = whileplaying;
soundManager.defaultOptions.whileloading = whileloading;
soundManager.debugMode = false;

var playingSound = null;
var fileName = null;
var duration = 0;
var sid = null;
var audioPlayStart = null;
var audioPlayCount = null;

function whileplaying() {    
    var max = 540;
    var posx = -540 + Math.ceil((playingSound.position * max) / duration);
    var pos = posx + "px 0px";
    $("#layer2_" + sid).css("background-position", pos);
    var hours = Math.floor(playingSound.position / (1000 * 60 * 60));
    var minutes = Math.floor((playingSound.position % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor(((playingSound.position % (1000 * 60 * 60)) % (1000 * 60)) / 1000);
    var timeString = (hours < 10 ? "0" + hours : hours);
    timeString = timeString + ":" + (minutes < 10 ? "0" + minutes : minutes);
    timeString = timeString + ":" + (seconds < 10 ? "0" + seconds : seconds);
    $("#track_play_time_" + sid).text(timeString);
}

function durationString(s) {
    var hours = Math.floor(s / (1000 * 60 * 60));
    var minutes = Math.floor((s % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor(((s % (1000 * 60 * 60)) % (1000 * 60)) / 1000);
    var timeString = (hours < 10 ? "0" + hours : hours);
    timeString = timeString + ":" + (minutes < 10 ? "0" + minutes : minutes);
    timeString = timeString + ":" + (seconds < 10 ? "0" + seconds : seconds);
    return timeString;
}

function whileloading() {
    var max = 540;
    var posx = -540 + Math.ceil((playingSound.duration * max) / duration);
    var pos = posx + "px 0px";
    $("#layer1_" + sid).css("background-position", pos);
}

function seek(e) {
    var offset = $("#layer2_" + sid).offset();
    var relativeX = Math.ceil(e.pageX - offset.left);
    var pos = Math.ceil((relativeX * duration) / 540);
    if(pos < playingSound.duration) {
        playingSound.setPosition(pos);        
    }
    return false;
}

function mouseout(e) {
    var pos = "-550px 0px";
    $("#seek_" + sid).css("background-position", pos);
    $("#track_seek_time_" + sid).hide();
}

function mousemove(e) {
    $("#track_seek_time_" + sid).show();
    var offset = $("#layer2_" + sid).offset();
    var relativeX = Math.ceil(e.pageX - offset.left);
    var pos = Math.floor((relativeX * duration) / 540);
    var hours = Math.floor(pos / (1000 * 60 * 60));
    var minutes = Math.floor((pos % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor(((pos % (1000 * 60 * 60)) % (1000 * 60)) / 1000);
    var timeString = (hours < 10 ? "0" + hours : hours);
    timeString = timeString + ":" + (minutes < 10 ? "0" + minutes : minutes);
    timeString = timeString + ":" + (seconds < 10 ? "0" + seconds : seconds);
    $("#track_seek_time_" + sid).text("> " + timeString + " < ");
    var max = 540;
    var posx = -540 + relativeX;
    var pos = posx + "px 0px";
    $("#seek_" + sid).css("background-position", pos);
}

function play(_fileName, _duration, _sid) {
  if(audioLoaded) {
    if((fileName == null) || (fileName != _fileName)) {
        if(playingSound != null) {
            playingSound.stop();
            playingSound.unload();        
            playingSound = null;
            var now = new Date();
            audioPlayCount = (now.getTime() - audioPlayStart.getTime()) / 1000;
            $.post("/bin/ajax/audio/log", { sid: sid, duration: audioPlayCount, complete: true }, function(json) {
            }, "json");    
            try {
              $("#layer2_" + sid).unbind('click');        
              $("#layer2_" + sid).unbind('mousemove');
              $("#layer2_" + sid).unbind('mouseout');
              $("#track_play_" + sid).css("background-image", "url(/css/images/play.png)");   
              $("#track_play_time_" + sid).text(durationString(duration));
            } catch(e) {
            }
        }
        audioPlayStart = new Date();
        fileName = _fileName;
        duration = _duration;
        sid = _sid;
        playingSound = soundManager.createSound( { 
          id: fileName, 
          url: fileName,
          onfinish: function () {
            $("#layer2_" + sid).unbind('click');        
            $("#layer2_" + sid).unbind('mousemove');
            $("#layer2_" + sid).unbind('mouseout');
            $("#track_play_" + sid).css("background-image", "url(/css/images/play.png)");   
            var now = new Date();
            audioPlayCount = (now.getTime() - audioPlayStart.getTime()) / 1000;
            $.post("/bin/ajax/audio/log", { sid: sid, duration: audioPlayCount, complete: true }, function(json) {
            }, "json");    
          }
        });
        var result = playingSound.play();
        $("#layer2_" + sid).bind('click', seek);
        $("#layer2_" + sid).bind('mousemove', mousemove);
        $("#layer2_" + sid).bind('mouseout', mouseout);
        $("#track_play_" + sid).css("background-image", "url(/css/images/pause.png)");
        ajax_audio_add_play(sid);
    } else {
        if(playingSound.paused) {
          audioPlayStart = new Date();
          playingSound.play();
          $("#track_play_" + sid).css("background-image", "url(/css/images/pause.png)");   
        } else {
          if(playingSound.playState == 0) {
            $("#track_play_" + sid).css("background-image", "url(/css/images/pause.png)");   
            $("#layer2_" + sid).bind('click', seek);
            $("#layer2_" + sid).bind('mousemove', mousemove);
            $("#layer2_" + sid).bind('mouseout', mouseout);
            audioPlayStart = new Date();
            playingSound.play();
            ajax_audio_add_play(sid);
          } else {
            playingSound.pause();
            var now = new Date();
            audioPlayCount = (now.getTime() - audioPlayStart.getTime()) / 1000;
            $.post("/bin/ajax/audio/log", { sid: sid, duration: audioPlayCount, complete: true }, function(json) {
            }, "json");    
            $("#track_play_" + sid).css("background-image", "url(/css/images/play.png)");   
          }
        }
    }
  } else {
    return false;
  }
}

