The Box

$(function() {
  $("body").addClass("listen");
  $("#nav-listen a").click(showListen);
  $("#nav-archive a").click(showArchive);
  $("#nav-info a").click(showInfo);
  $("#nav-rss a[href='#rss']").click(toggleRSS);
  initAudio();
  addPopupLink();
  $("a.popup").popupWindow({
    height: 150,
    width: 400
  });
});

function showListen() {
  $("body").removeClass("archive");
  $("body").removeClass("info");
  $("body").addClass("listen");
  return false;
}

function showArchive() {
  $("body").removeClass("listen");
  $("body").removeClass("info");
  $("body").addClass("archive");
  return false;
}

function showInfo() {
  $("body").removeClass("listen");
  $("body").removeClass("archive");
  $("body").addClass("info");
  return false;
}

function toggleRSS() {
  $("#nav-rss").toggleClass("open");
  return false;
}

function addPopupLink() {
  var episodeID = $('body')[0].id;
  $(".default .player").append("<a class='popup' href='http://thebox.maxvoltar.com/" + episodeID + "?audio'>Popup</a>");
}

function initAudio() {

  var supportsAudio = !! document.createElement('audio').canPlayType,
    audio, loadingIndicator, positionIndicator, timeleft, loaded = false,
    manualSeek = false;

  if (supportsAudio) {

    var episodeTitle = $('body')[0].id;

    var player = '<p class="player">\
									  <span id="playtoggle" />\
									  <span id="gutter">\
									    <span id="loading" />\
									    <span id="handle" class="ui-slider-handle" />\
									  </span>\
									  <span id="timeleft" />\
									  <audio preload="metadata">\
									    <source src="http://maxvoltar.s3.amazonaws.com/thebox/' + episodeTitle + '.ogg" type="audio/ogg"></source>\
											<source src="http://maxvoltar.s3.amazonaws.com/thebox/' + episodeTitle + '.mp3" type="audio/mpeg"></source>\
												<source src="http://maxvoltar.s3.amazonaws.com/thebox/' + episodeTitle + '.wav" type="audio/x-wav"></source>\
										</audio>\
									</p>';

    $(player).insertAfter("#listen .photo");

    audio = $('.player audio').get(0);
    loadingIndicator = $('.player #loading');
    positionIndicator = $('.player #handle');
    timeleft = $('.player #timeleft');

    if ((audio.buffered != undefined) && (audio.buffered.length != 0)) {
      $(audio).bind('progress', function() {
        var loaded = parseInt(((audio.buffered.end(0) / audio.duration) * 100), 10);
        loadingIndicator.css({
          width: loaded + '%'
        });
      });
    } else {
      loadingIndicator.remove();
    }

    $(audio).bind('timeupdate', function() {

      var rem = parseInt(audio.duration - audio.currentTime, 10),
        pos = (audio.currentTime / audio.duration) * 100,
        mins = Math.floor(rem / 60, 10),
        secs = rem - mins * 60;

      timeleft.text('-' + mins + ':' + (secs < 10 ? '0' + secs : secs));
      if (!manualSeek) {
        positionIndicator.css({
          left: pos + '%'
        });
      }
      if (!loaded) {
        loaded = true;

        $('.player #gutter').slider({
          value: 0,
          step: 0.01,
          orientation: "horizontal",
          range: "min",
          max: audio.duration,
          animate: true,
          slide: function() {
            manualSeek = true;
          },
          stop: function(e, ui) {
            manualSeek = false;
            audio.currentTime = ui.value;
          }
        });
      }

    }).bind('play', function() {
      $("#playtoggle").addClass('playing');
    }).bind('pause ended', function() {
      $("#playtoggle").removeClass('playing');
    });

    $("#playtoggle").click(function() {
      if (audio.paused) {
        audio.play();
      } else {
        audio.pause();
      }
    });

  }


}
$(function() {
	$("body").addClass("listen");
	$("#nav-listen a").click(showListen);
	$("#nav-archive a").click(showArchive);
	$("#nav-info a").click(showInfo);
	$("#nav-rss a[href='#rss']").click(toggleRSS);
	initAudio();
	addPopupLink();
	$("a.popup").popupWindow({height:150, width:400});
});

function showListen() {
	$("body").removeClass("archive");
	$("body").removeClass("info");
	$("body").addClass("listen");
	return false;
}

function showArchive() {
	$("body").removeClass("listen");
	$("body").removeClass("info");
	$("body").addClass("archive");
	return false;
}

function showInfo() {
	$("body").removeClass("listen");
	$("body").removeClass("archive");
	$("body").addClass("info");
	return false;
}

function toggleRSS() {
	$("#nav-rss").toggleClass("open");
	return false;
}

function addPopupLink() {
	var episodeID = $('body')[0].id;
	$(".default .player").append("<a class='popup' href='http://thebox.maxvoltar.com/" + episodeID + "?audio'>Popup</a>");
}

function initAudio() {
	
	var supportsAudio = !!document.createElement('audio').canPlayType,
			audio,
			loadingIndicator,
			positionIndicator,
			timeleft,
			loaded = false,
			manualSeek = false;

	if (supportsAudio) {
		
		var episodeTitle = $('body')[0].id;
		
		var player = '<p class="player">\
									  <span id="playtoggle" />\
									  <span id="gutter">\
									    <span id="loading" />\
									    <span id="handle" class="ui-slider-handle" />\
									  </span>\
									  <span id="timeleft" />\
									  <audio preload="metadata">\
									    <source src="http://maxvoltar.s3.amazonaws.com/thebox/' + episodeTitle + '.ogg" type="audio/ogg"></source>\
											<source src="http://maxvoltar.s3.amazonaws.com/thebox/' + episodeTitle + '.mp3" type="audio/mpeg"></source>\
												<source src="http://maxvoltar.s3.amazonaws.com/thebox/' + episodeTitle + '.wav" type="audio/x-wav"></source>\
										</audio>\
									</p>';									
		
		$(player).insertAfter("#listen .photo");
		
		audio = $('.player audio').get(0);
		loadingIndicator = $('.player #loading');
		positionIndicator = $('.player #handle');
		timeleft = $('.player #timeleft');
		
		if ((audio.buffered != undefined) && (audio.buffered.length != 0)) {
			$(audio).bind('progress', function() {
				var loaded = parseInt(((audio.buffered.end(0) / audio.duration) * 100), 10);
				loadingIndicator.css({width: loaded + '%'});
			});
		}
		else {
			loadingIndicator.remove();
		}
		
		$(audio).bind('timeupdate', function() {
			
			var rem = parseInt(audio.duration - audio.currentTime, 10),
					pos = (audio.currentTime / audio.duration) * 100,
					mins = Math.floor(rem/60,10),
					secs = rem - mins*60;
			
			timeleft.text('-' + mins + ':' + (secs < 10 ? '0' + secs : secs));
			if (!manualSeek) { positionIndicator.css({left: pos + '%'}); }
			if (!loaded) {
				loaded = true;
				
				$('.player #gutter').slider({
						value: 0,
						step: 0.01,
						orientation: "horizontal",
						range: "min",
						max: audio.duration,
						animate: true,					
						slide: function(){							
							manualSeek = true;
						},
						stop:function(e,ui){
							manualSeek = false;					
							audio.currentTime = ui.value;
						}
					});
			}
			
		}).bind('play',function(){
			$("#playtoggle").addClass('playing');		
		}).bind('pause ended', function() {
			$("#playtoggle").removeClass('playing');		
		});		
		
		$("#playtoggle").click(function() {			
			if (audio.paused) {	audio.play();	} 
			else { audio.pause(); }			
		});

	}
	
	
}