function initSamplePlayers() {
  function createSamplePlayer(elt) {
    var trackLink = $('a.track-link', elt)[0];
    var sampleLink = $('a.sample-link', elt)[0];
    var sound;

    $(elt).html('<div id="album-sample-player" class="sample-player">'
      + '<a class="player-track-title"></a>'
      + '<div class="player-progress-bg"></div>'
      + '<div class="player-progress-bar"></div>'
      + '<a href="#" class="play-stop-button"></a>');

    var playStopButton = $(".play-stop-button", elt);
    var progressBar = $(".player-progress-bar", elt)[0];
    var title = $('.player-track-title', elt)[0];

    var samplePlayer = { };
    samplePlayer.setTitle = function (title) {
      $('.player-track-title', elt).text(title);
    };

    function onstop() {
      progressBar.style.width = 0 + "px";
      playStopButton.removeClass('playing');
    }

    function updatePosition() {
      var px = 322 * (sound.position / sound.duration);
      progressBar.style.width = px + "px";
      playStopButton.addClass('playing');
    }

    samplePlayer.initSound = function (url) {
      var newSound = soundManager.createSound({
	id: url,
	url: url,
	onstop: onstop,
	onfinish: onstop,
	whileplaying: updatePosition
      });
      return newSound;
    };

    samplePlayer.play = function (url, title) {
      sound = soundManager.getSoundById(url);
      samplePlayer.setTitle(title);
      soundManager.stopAll();
      sound.play();
    };

    playStopButton.bind('click', function(event) {
      var wasPlaying = playStopButton.hasClass('playing');
      event.preventDefault();
      soundManager.stopAll();
      if (!wasPlaying && sound) {
	sound.play();
      }
    });

    if (sampleLink) {
      sound = samplePlayer.initSound(sampleLink.href);
      samplePlayer.setTitle(sampleLink.title);
      title.href = trackLink.href;
    } else {
      samplePlayer.setTitle('Select a track');
    }

    return samplePlayer;
  }

  $(".sample-player").each(function() { createSamplePlayer(this); });

  var sp = document.getElementById('sample-player');
  if (sp) {
    var samplePlayer = createSamplePlayer(sp);

    function initTrackSample(track) {
      var a = $("a.track-sample", track)[0];
      if (!a) return;
      var sound = samplePlayer.initSound(a.href);
      $(a).bind('click', function(event) {
	event.preventDefault();
	samplePlayer.play(a.href, a.title);
      });
    };

    $(".track").each(function() { initTrackSample(this); });
  }
}
