var constants = {};
constants.defaultSection = 'home';

function log(value) {
	if (typeof console == 'undefined') {
		return false;
	}
	console.log(value);
}

function isNumber(n) {
	return !isNaN(parseFloat(n)) && isFinite(n);
}

function fixTheFooter(){
	// set the footer height to ensure it's always at the bottom 
	// of the viewport regardless of the height of the window.
	if($('footer').position().top - ($('#contact').position().top + $('#contact').height()) < $(window).height()){
		var footerCss = {
				'margin-top' : $(window).height() - $('#contact').outerHeight() - $('footer').outerHeight() - 85
			};		
		$('footer').css(footerCss);		
	}
}

function setNav() {
	urlParts = window.location.href.split('#');
	var section = false;
	if (urlParts.length > 1) {
		section = urlParts[urlParts.length - 1];
	} else {
		section = constants.defaultSection;
	}
	$('nav a').each(function () {
		if ($(this).attr('href').slice(1, $(this).attr('href').length) === section) {
			$(this).addClass('current');
		}
	});
	
	return section;
}

function setScrollingNav() {
	log('got called');
	$('section').each(function () {
			if (Math.abs($(window).scrollTop() - $(this).position().top) < 60 && !$(this).hasClass('current')) {
				$('a.current').removeClass('current clicked');
				log($(this).attr('id') + ' difference = ' + Math.abs($(window).scrollTop() - $(this).position().top));
				$('#' + $(this).attr('id') + 'Link').addClass('current');
				return;
			}
		});
}

function togglePlay(container) {
	var trackId = $(container).find('.trackId');
	var player = $(container).find('audio').get(0);
	
	// if this isn't the active player, deactivate other active ones
	if (!$(container).hasClass('active')) {
		$('li.active').each(function () {
			var thisAudioPlayer = $(this).removeClass('active').find('audio').get(0);
			thisAudioPlayer.pause();
			thisAudioPlayer.currentTime = 0;
			$(this).find('.trackId').text($(this).data('trackId'));
		});
		
	}
	
	if (player.paused) {
		$(container).addClass('active');
		if (!isNumber($(container).data('trackId'))) {
			$(container).data('trackId', $(trackId).text());
		}
		$(trackId).text('PLAYING');
		container.removeClass('paused');
		player.play();
	} else {
		$(trackId).data('trackId', $(trackId).text()).text('PAUSED');
		player.pause();
		container.addClass('paused');
	}
}

function setScrub(container, event) {
	if ($(container).hasClass('active')) {
		var offset = event.layerX - $(container).find('.trackTitle').position().left;
		var player = $(container).find('audio').get(0);
		var duration = player.duration;
		var scrubberWidth = $(container).find('.trackTitle').width();
		var scrubValue = (offset / scrubberWidth * 100);
		var scrubTo = duration / 100 * scrubValue;
		player.currentTime = scrubTo;
		updatePlayBar(player);
	}
}

function updatePlayBar(player) {
	var container = $(player).parent('li');
	var trackTitle = $(player).parent('li').find('div.trackTitle');
	var trackDuration = $(player).parent('li').find('span.trackDuration');
	var duration = player.duration;
	var time = player.currentTime;
	var fraction = time / duration;
	var percent = (fraction * 100);
	var backgroundPosition = parseInt((trackTitle.width() / 100 * percent) - 650) + 'px 0';
	var containerCss = {
		'background-position' : backgroundPosition
	};
	$(container).css(containerCss);
	
	var remaining = duration - time;
	if (remaining === 0) {
		trackEnded(player);
		player.pause();
		player.currentTime = 0;
		remaining = player.duration;
	}
	var mins = Math.floor(remaining / 60);
	var seconds = remaining % 60;
	
	if (mins < 10) {
		mins = '0' + mins.toString();
	}
	
	seconds = seconds.toFixed(0).toString();
	if (seconds < 10) {
		seconds = '0' + seconds;
	}
	$(trackDuration).text(mins + '.' + seconds);
}

function trackEnded(player) {
	var container = $(player).parent('li');
	$(container)
	.removeClass('active')
	.find('.trackId')
	.text($(container).data('trackId'));
}
 
