if (typeof soundManager != "undefined") {
    soundManager.url = 'swf';
    soundManager.flashVersion = 9;
    soundManager.debugMode = false;
}

var initialLoad = true;
// Holds the initial page; this is needed in case the user clicks back enough times to return to /
var initialPage = "";
var curTab = undefined;

var playerData = undefined;
var bgdPlayerData = undefined;
var isPlaying = false;
var soundReady = undefined;
var curPlayingIndex = 0;
var bgdIndex = 0;
var soundObject = undefined;
var songLoadedPercent = 0;
var songDuration = 0;
var playingPlaylist = false;
var soundObject = undefined;
var waitAttempts = 0;
var waitTimeout = undefined;
var ajaxUrlCleanRegex = new RegExp("[^A-z_-\d/~\.+]", "g");

var fnames = new Array();var ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';var err_style = '';
try{
  err_style = mc_custom_error_style;
} catch(e){
  err_style = 'margin: 1em 0 0 0; padding: 1em 0.5em 0.5em 0.5em; background: ERROR_BGCOLOR none repeat scroll 0% 0%; font-weight: bold; float: left; z-index: 1; width: 80%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: ERROR_COLOR;';
}

// If this is a load from a bookmark, or an email link, or etc., redirect to a non-AJAX-y URL.
if (window.location.hash.indexOf("#") > -1 && initialLoad) {
    var actualPage = window.location.hash.replace("#/", "");
    if (actualPage != "") {
        window.location = actualPage;
        preventOperation = true;
    }
}
else
{
	// We're on index.html if we're on /
    var sPath = window.location.pathname;
    curPage = sPath.substring(sPath.lastIndexOf('/') + 1);
    if (curPage.indexOf("http") > -1 || curPage == "")
        curPage = "index.html";

    initialPage = curPage;
}

$(".downloadButton").live("mouseover", function() {
	if(!$.browser.msie || ($.browser.msie && (($.browser.version + "").indexOf("7.") == -1) && (($.browser.version + "").indexOf("6.") == -1)))
		$(this).find("span").stop(true, true).fadeIn();
	else
		$(this).find("span").show();
}).live("mouseout", function() {
	if(!$.browser.msie || ($.browser.msie && (($.browser.version + "").indexOf("7.") == -1) && (($.browser.version + "").indexOf("6.") == -1)))
		$(this).find("span").stop(true, true).fadeOut("slow");
	else
		$(this).find("span").hide();
});


$(document).ready(function() {
	// Get the player's songs.
	var date = new Date();
	var ticks = date.getTime(); // cachebusting.

	$.ajax({
		url: "bgdPlayer.txt?h=" + ticks,
		success: function(msg) {
	        bgdPlayerData = eval('(' + msg + ')');
			SetUpPlayer();
      	}
    });

	$("#menu li").hover(function() {
		if(!$(this).hasClass("active")) {
			if(!$.browser.msie || ($.browser.msie && (($.browser.version + "").indexOf("7.") == -1) && (($.browser.version + "").indexOf("6.") == -1)))
				$(this).find("span").stop(true, true).fadeIn();
			else
				$(this).find("span").show();
		}	
	}, function() {
		if(!$(this).hasClass("active"))
		{
			if(!$.browser.msie || ($.browser.msie && (($.browser.version + "").indexOf("7.") == -1) && (($.browser.version + "").indexOf("6.") == -1)))
				$(this).find("span").stop(true, true).fadeOut("slow");
			else
				$(this).find("span").hide();
		}
	});
	

	
	curTab = $("#menu li.active");
	$(".tbEmail").watermark("Email address");
	
	// Set up our glow pulse...
	setTimeout(function() { LogoGlowIn(); }, 20);
	
	// and our bling...
	StartLogoBling();
	
	var options = { errorClass: 'mce_inline_error', errorElement: 'div', errorStyle: err_style, onkeyup: function(){}, onfocusout:function(){}, onblur:function(){} };
	var mce_validator = $("#mc-embedded-subscribe-form").validate(options);	
 	options = {
 			url: 'http://dinomobrecords.us2.list-manage.com/subscribe/post-json?u=45a7aba10b9d2472d7c916822&id=de47fc14e3&c=?', type: 'GET', dataType: 'json', contentType: "application/json; charset=utf-8",
	        beforeSubmit: function(){
	          $('#mce_tmp_error_msg').remove();
	          $('.datefield','#mc_embed_signup').each(function(){

	              var txt = 'filled';
	              var fields = new Array();
	              var i = 0;
	              $(':text', this).each(
	                function(){
	                  fields[i] = this;
	                  i++;
	                });
	              $(':hidden', this).each(
	                function(){
	                	if ( fields[0].value=='MM' && fields[1].value=='DD' && fields[2].value=='YYYY' ){
	                		this.value = '';
										} else if ( fields[0].value=='' && fields[1].value=='' && fields[2].value=='' ){
	                		this.value = '';
										} else {
		                  this.value = fields[0].value+'/'+fields[1].value+'/'+fields[2].value;
		                }
	                });
	            });
	          	var r = mce_validator.form();
	          	if(r)
	          		SubmittedMailList();
	          	return r;
        	}, 
        	success: mce_success_cb
      	};
		
 	$('#mc-embedded-subscribe-form').ajaxForm(options);
	$("#mce-responses .response").click(function() {
		$(this).fadeOut();
	});
});

$("#playerBar").live("click", function(e) {
	if(isPlaying)
	{
		// Calculate the mouse position in relation to the song.
		var x = e.pageX - $(this).offset().left;
		var itemPercent = x / $(this).width();
		soundObject.setPosition(itemPercent * songDuration);
	}
});


function SetUpPlayer()
{
	$("#player").html("<span id='songTitle'>Player stopped.</span><span id='songRuntime'></span><span id='playerBar'><span></span></span><span id='btnPrev'></span><span id='btnStop'></span><span id='btnPlayPause' class='play'></span><span id='btnNext'></span>");
	$("#btnStop").css("opacity","0.5");
	$("#songTitle").text(bgdPlayerData.songs[bgdIndex].title + " - " + bgdPlayerData.songs[bgdIndex].name);
	// Get the player's songs.
	var date = new Date();
	var ticks = date.getTime(); // cachebusting.

	$.ajax({
		url: "player.txt?h=" + ticks,
		success: function(msg) {
	        playerData = eval('(' + msg + ')');
        	SetUpSongs();
      	}
    });
}

function SetUpSongs()
{
	// And the song lists.
	for(var i = 0; i<playerData.songs.length; i++)
	{
		var song = playerData.songs[i];
		$(".article#" + song.artist + " ul").append("<li><a class=\"songPlayer\" song=\"" + i + "\" >" + song.title + "</a></li>");
	}
	TryToAutoPlay();
}

function TryToAutoPlay()
{
	if(soundReady) {
		var btn = $("#btnPlayPause.play");
		$(btn).fadeOut("fast", function() {
			if(isPlaying) {
				soundManager.resumeAll();
				$(btn).removeClass("play").addClass("pause").fadeIn("fast");
			}
			else
			{			     	
				PlayTrack(btn, bgdPlayerData.songs[bgdIndex].file);
		    	$("#songTitle").text(bgdPlayerData.songs[bgdIndex].title + " - " + bgdPlayerData.songs[bgdIndex].name);
		    }
	    });
	}
	else
	{
		if(waitAttempts <= 3)
		{
			waitTimeout = setTimeout(TryToAutoPlay, waitAttempts * waitAttempts * 200);
			waitAttempts++;
		}
		else
		{
			$("#player").hide().html("<div>You need Flash to use this player. Please install Flash or disable any Flash blockers.</div>").fadeIn("fast");
		}
	}
}
$("#btnPlayPause.play").live("click", function() {
	if(soundReady) {
		var btn = $(this);
		$(btn).fadeOut("fast", function() {
			if(isPlaying) {
				soundManager.resumeAll();
				$(btn).removeClass("play").addClass("pause").fadeIn("fast");
			}
			else
			{			     	
				PlayTrack(btn, bgdPlayerData.songs[bgdIndex].file);
		    	$("#songTitle").text(bgdPlayerData.songs[bgdIndex].title + " - " + bgdPlayerData.songs[bgdIndex].name);
		    }
	    });
	}
});

// This handles song playback clicks from the song list.
$(".songPlayer").live("click", function() {
	playingPlaylist = true;
	curPlayingIndex = $(this).attr("song");
	soundManager.stopAll();
	$("#playerBar span").fadeOut("fast", function() {
		$(this).css("width", "0%").show();
	});
	$("#songRuntime").text("");

   	$("#songTitle").text(playerData.songs[curPlayingIndex].title + " - " + playerData.songs[curPlayingIndex].name);
	PlayTrack($("#btnPlayPause"), playerData.songs[curPlayingIndex].file);
});

// This handles free download playing clicks.
$(".listenNow").live("click", function() {
	playingPlaylist = false;
	bgdIndex--;
	soundManager.stopAll();
	$("#playerBar span").fadeOut("fast", function() {
		$(this).css("width", "0%").show();
	});
	$("#songRuntime").text("");

   	$("#songTitle").text($(this).attr("title").replace("Play ",""));
	PlayTrack($("#btnPlayPause"), $(this).attr("file"));
});


function PlayTrack(btn, file) {
	var date = new Date();
	var ticks = date.getTime(); // cachebusting.
	soundObject = soundManager.createSound({
	    id: 'playerSound' + ticks,
	    url: "songs/" + file,
	    onplay: function() {
	    	$("#btnNext,#btnStop,#btnPrev").animate({"opacity":"1.0"});
	    	isPlaying = true;
			$(btn).removeClass("play").addClass("pause").fadeIn("fast");
	    },
	    whileloading: function() {
	    	// get the total amount loaded.
		    songLoadedPercent = (bytesLoaded / bytesTotal);
		    songDuration = duration;
		    console.log(songLoadedPercent);
		    // position & duration may be relative!
		    var realSongDuration = 0;
		    if (songLoadedPercent == 1)
		    {
		        realSongDuration = songDuration;
		    }
		    else
		        realSongDuration = songDuration / songLoadedPercent;
		
		    var realPositionPercent = (this.position / realSongDuration) * 100;
	    	$("#playerBar span").css("width", realPositionPercent + "%");

	    },
	    whileplaying: function() {
	    	$("#songRuntime").text(PrettyTime(this.position));
	    	
	    	// position & duration may be relative!
		    var realSongDuration = 0;
		    if (songLoadedPercent == 1)
		        realSongDuration = songDuration;
		    else
		        realSongDuration = songDuration / songLoadedPercent;
		
		    var realPositionPercent = (this.position / realSongDuration) * 100;
	    	$("#playerBar span").css("width", realPositionPercent + "%");
	    },
	    onfinish: function() {
	    	SkipToNextTrack();
		},
	    onload: function() {
	    	songLoadedPercent = 1;
		    songDuration = this.duration;
		    this.play();
	    }
	});
	soundObject.load();
}

$("#btnPlayPause.pause").live("click", function() {
	soundManager.pauseAll();
	$(this).fadeOut("fast", function() {
		$(this).removeClass("pause").addClass("play").fadeIn("fast");
	});
});
$("#btnStop").live("click", function() {
	if(isPlaying) {
		soundManager.stopAll();
		isPlaying = false;
		playingPlaylist = false;
		$("#btnPlayPause.pause").fadeOut("fast", function() {
			$(this).removeClass("pause").addClass("play").fadeIn("fast");
		});
    	$(this).animate({"opacity":"0.4"});
    	$("#playerBar span").fadeOut("fast", function() {
    		$(this).css("width", "0%").show();
   		});
   		$("#songRuntime").text("");
	}
});
$("#btnNext").live("click", function() {
	SkipToNextTrack();
});

$("#btnPrev").live("click", function() {
	if(playingPlaylist)
	{
		curPlayingIndex--;
		if(curPlayingIndex < 0)
			curPlayingIndex = playerData.songs.length - 1;
	}
	else
	{
		bgdIndex--;
		if(bgdIndex < 0)
			bgdIndex = bgdPlayerData.songs.length - 1;
	}
		
	HandleNextPrev();
});

function SkipToNextTrack()
{
	if(playingPlaylist)
	{
		curPlayingIndex++;
		if(curPlayingIndex > playerData.songs.length - 1)
		{
			curPlayingIndex = 0;
			playingPlaylist = false;
		}
	}
	else
	{
		bgdIndex++;
		if(bgdIndex > bgdPlayerData.songs.length - 1)
			bgdIndex = 0;
	}
		
	HandleNextPrev();
}

function HandleNextPrev()
{		
	soundManager.stopAll();
	$("#playerBar span").fadeOut("fast", function() {
		$(this).css("width", "0%").show();
	});
	$("#songRuntime").text("");
	if(playingPlaylist)
		$("#songTitle").text(playerData.songs[curPlayingIndex].title + " - " + playerData.songs[curPlayingIndex].name);
	else
		$("#songTitle").text(bgdPlayerData.songs[bgdIndex].title + " - " + bgdPlayerData.songs[bgdIndex].name);

	if(isPlaying)
	{
		if(playingPlaylist)
			PlayTrack($("#btnPlayPause"), playerData.songs[curPlayingIndex].file);
		else
			PlayTrack($("#btnPlayPause"), bgdPlayerData.songs[bgdIndex].file);
	}
}
soundManager.onready(function() {
    CheckSoundStatus();
});

function PrettyTime(msecs) {
    var time = new Date(msecs);
    var min = time.getUTCMinutes();
    var secs = time.getUTCSeconds();
    if ((secs + "").length == 1) {
        secs = "0" + secs;
    }
    return min + ":" + secs;
}

function CheckSoundStatus() {
    if (typeof soundManager != "undefined") {
        if (soundManager.supported()) { // Hooray! SM2 loaded.
            soundReady = true;
        } else { // BOO
        	soundReady = false;
//			$("#player").hide().html("<div>You need Flash to use this player. Please install Flash or disable any Flash blockers.</div>").fadeIn("fast");
		}
    }
}

$("#menu li, #artists li, #return").live("click", function() {
	if(!$(this).hasClass("active"))
	{
	    initialLoad = false;
	    curTab = $(this);
		$.address.value($(this).find("a").attr('href'));
	}
	return false;
});

// Handler for the jQuery address plugin
$.address.change(function(event) {
    var l = "";
    if (event.pathNames.length == 0)
        l = initialPage;
    else {
        l = event.path.replace(/^#/, '').replace('/', '');
    }
    var t = $.address.hash();
    if (curPage == initialPage && initialLoad && l == "") {
        return;
    }
    l = (l == "") ? initialPage : l;
    if (curPage != l) {
		$("#loader").fadeIn(100, function() {
	        pageNum = 0;
	
	        curPage = l;
	        $("#ajaxLoad").load(l + " .pageLeaf", function() {
	        	LogAnalytics(l);
				if(curPage.indexOf("index") > -1)
	        		SetUpSongs();
	        	if(!$(curTab).hasClass("artistLink"))
	        	{
		        	var oldTab = $("#menu li.active");
		        	$(curTab).addClass("active").find("span").fadeIn(100);
		        	$(oldTab).removeClass("active").find("span").fadeOut(100);
		        }
		       	$("#loader").fadeOut("medium");
	        });
        });
    }
});

function LogoGlowIn()
{
	if(!$.browser.msie || ($.browser.msie && (($.browser.version + "").indexOf("7.") == -1) && (($.browser.version + "").indexOf("6.") == -1)))
	{
		$(".logoGlow").fadeIn(123, function() {
			setTimeout(function() { LogoGlowOut(); }, 20);
		});
	}
	else
	{
		$(".logoGlow").show();
		setTimeout(function() { LogoGlowOut(); }, 140);
	}
}
function LogoGlowOut()
{
	if(!$.browser.msie || ($.browser.msie && (($.browser.version + "").indexOf("7.") == -1) && (($.browser.version + "").indexOf("6.") == -1)))
	{
		$(".logoGlow").fadeOut(123, function() {
			setTimeout(function() { LogoGlowIn(); }, 20);
		});
	}
	else
	{
		$(".logoGlow").hide();
		setTimeout(function() { LogoGlowIn(); }, 140);
	}

}

function StartLogoBling()
{
	setTimeout(function() { LogoBlingIn(".logoBling1"); }, 300);
	setTimeout(function() { LogoBlingIn(".logoBling2"); }, 800);
	setTimeout(function() { LogoBlingIn(".logoBling3"); }, 1100);
	setTimeout(function() { LogoBlingIn(".logoBling4"); }, 1500);
}

function LogoBlingIn(b)
{
	$(b).fadeIn(500, function() {
		setTimeout(function() { LogoBlingOut(b); }, 30);
	});
}
function LogoBlingOut(b)
{
	$(b).fadeOut(400, function() {
		setTimeout(function() { LogoBlingIn(b); }, 2000);
	});
}

// Helper for hidden MailChimp button
$("#emailSubmitButton").live("click", function() {
	return($(this).attr("clicked") != "true");
});

// MailChimp helpers.
function ResetMailList() {
    $("#emailSubmitButton").attr("clicked", "").animate({ "opacity": "1.0" });
}
function SubmittedMailList() {
	$("#emailSubmitButton").attr("clicked", "true").animate({ "opacity": "0.3" });
}

function mce_success_cb(resp){
  $('#mce-success-response').hide();
  $('#mce-error-response').hide();
  if (resp.result=="success"){
    $('#mce-'+resp.result+'-response').show();
    $('#mce-'+resp.result+'-response').html(resp.msg);
    $('#mc-embedded-subscribe-form').each(function(){
      this.reset();
  	});
  } else {
    var index = -1;
    var msg;
    try {
      var parts = resp.msg.split(' - ',2);
      if (parts[1]==undefined){
        msg = resp.msg;
      } else {
        i = parseInt(parts[0]);
        if (i.toString() == parts[0]){
          index = parts[0];
          msg = parts[1];
        } else {
          index = -1;
          msg = resp.msg;
        }
      }
    } catch(e){
      index = -1;
      msg = resp.msg;
    }
    try{
      if (index== -1){
        $('#mce-'+resp.result+'-response').show();
        $('#mce-'+resp.result+'-response').html(msg);      
      } else {
        err_id = 'mce_tmp_error_msg';
        html = '<div id="'+err_id+'" style="'+err_style+'"> '+msg+'</div>';
        
        var input_id = '#mc_embed_signup';
        var f = $(input_id);
        if (ftypes[index]=='address'){
          input_id = '#mce-'+fnames[index]+'-addr1';
          f = $(input_id).parent().parent().get(0);
        } else if (ftypes[index]=='date'){
          input_id = '#mce-'+fnames[index]+'-month';
          f = $(input_id).parent().parent().get(0);
        } else {
          input_id = '#mce-'+fnames[index];
          f = $().parent(input_id).get(0);
        }
        if (f){
          $(f).append(html);
          $(input_id).focus();
        } else {
          $('#mce-'+resp.result+'-response').show();
          $('#mce-'+resp.result+'-response').html(msg);
        }
      }
    } catch(e){
      $('#mce-'+resp.result+'-response').show();
      $('#mce-'+resp.result+'-response').html(msg);
    }
  }
  ResetMailList();
}
function LogAnalytics(url) {
    var pageTracker = _gat._getTracker("UA-668538-5");
    if (pageTracker) {
        pageTracker._trackPageview("/" + CleanUrl(url));
    }
}
function CleanUrl(str) {
    return str.replace(ajaxUrlCleanRegex, "-").toLowerCase();
}
