$(document).ready(function() {
	initPlayer();
	initSignInMenu();
	initForms();
	initGallery();
	// initNav();
	// initSubNav();
	initSearch();
	initTracking();
});

// album sampler

function initPlayer()
{
	var playing = 0;

	var playlist = [
		{name:"Sigh No More",mp3:"http://www.mumfordandsons.com/data/mp3/sigh-no-more.mp3"},
		{name:"The Cave",mp3:"http://www.mumfordandsons.com/data/mp3/the-cave.mp3"},
		{name:"Winter Winds",mp3:"http://www.mumfordandsons.com/data/mp3/winter-winds.mp3"},
		{name:"Little Lion Man",mp3:"http://www.mumfordandsons.com/data/mp3/little-lion-man.mp3"},
		{name:"Dust Bowl Dance",mp3:"http://www.mumfordandsons.com/data/mp3/dust-bowl-dance.mp3"}
	];

	$('#audio').jPlayer({
		ready: function() {
			initPlaylist(false);
		},
		swfPath: "2.0/scripts/jquery.jplayer",
		customCssIds: true
	})
	.jPlayer("onSoundComplete", function(){
		playerNext();
	});

	$('#sampler a#prev').click(function(event){
		playerPrev();
		$(this).blur();
		event.PreventDefault;
		return false;
	});

	$('#sampler a#next').click(function(event){
		playerNext();
		$(this).blur();
		event.PreventDefault;
		return false;
	});
	
	$('#sampler a#play').click(function(event){
		playerPlay();
		$(this).blur();
		event.PreventDefault;
		return false;
	});

	$('#sampler a#stop').click(function(event) {
		playerStop();
		$(this).blur();
		event.PreventDefault;
		return false;
	});

	function initPlaylist(autoplay) {
		$('#sampler').fadeIn(50);
		if(autoplay) {
			playerChange(playing);
		} else {
			playerConfig(playing);
		}
	}

	function playerConfig(index) {
		playing = index;
		$('#audio').jPlayer("setFile", playlist[playing].mp3, playlist[playing].ogg);
		$('#meta span').text(playlist[playing].name);
	}

	function playerChange(index) {
		playerConfig(index);
		$('#audio').jPlayer("play");
	}

	function playerPrev() {
		var index = (playing-1 >= 0) ? playing-1 : playlist.length-1;
		playerChange(index);
	}

	function playerPlay() {
		if (!$('#sampler').hasClass('playing')){
			$('#sampler').addClass('playing');
			$('#audio').jPlayer("play");
		} else {
			$('#sampler').removeClass('playing');
			$('#audio').jPlayer("pause");
		};	
	}

	function playerStop() {
		$('#sampler').removeClass('playing');
		$('#audio').jPlayer("stop");
	}
	
	function playerNext() {
		var index = (playing+1 < playlist.length) ? playing+1 : 0;
		playerChange(index);
	}
}

function initForms()
{
	$('#register').validate({
		rules: {
			username: 'required',
			password: 'required',
			password2: {
				required: true,
				equalTo: "#password"
			},
			firstName: 'required',
			lastName: 'required',
			email: {
				required: true,
				email: true
			},
			days: 'required',
			months: 'required',
			years: 'required',
			gender: 'required',
			countrycode: 'required'
		},
		messages: {
			username: "",
			password: "",
			password2: "",
			firstName: "",
			lastName: "",
			email: "",
			days: "",
			months: "",
			years: "",
			gender: "",
			countrycode: ""
		},
		submitHandler: function(form) {
			form.submit();
		}
	});

	$('#searchForm').validate({
		rules: {
			search: 'required'
		},
		messages: {
			search: ""
		},
		submitHandler: function(form) {
			form.submit();
		}
	});
}

// sign in

function initSignInForms()
{
	$('#signin').validate({
		rules: {
			user: 'required',
			pass: 'required'
		},
		messages: {
			user: "",
			pass: ""
		},
		submitHandler: function(form) {
			$('#signin').find(':submit').attr('value','Processing');
			form.submit();
		}
	});

	$('#forgotten').validate({
		rules: {
			email: {
				required: true,
				email: true
			}
		},
		messages: {
			email: ""
		},
		submitHandler: function(form) {
			$('#forgotten').find(':submit').attr('value','Processing');
			form.submit();
		}
	});		
}

function resetSignInForms()
{
	var signin = $('#signin').validate();
	signin.resetForm();
	var forgotten = $('#forgotten').validate();
	forgotten.resetForm();
}

function toggleSignInForm(hide,show)
{
	$(hide).fadeOut(function(){
		$(show).fadeIn(function(){
			initSignInForms();
			resetSignInForms();
		});
	});	
}

function hideSignInMenu()
{
	resetSignInForms();
	$('#signin_menu').hide();
	$('#overlay').unbind().fadeOut();
}

function showSignInMenu()
{
	$('#signin_menu').fadeIn(function(){
		initSignInForms();
	});
	$('#overlay').fadeIn().bind('click', function() {
		hideSignInMenu();
	});	
}

function initSignInMenu()
{
	$('#signin_nav a.popSignIn').click(function(event){
		showSignInMenu();	
		event.PreventDefault;
		return false;
	});
	
	$('#signin_menu a#retrieve').click(function(event) {
		toggleSignInForm('#signin','#forgotten');
		event.PreventDefault;
		return false;
	});
	
	$('#signin_menu a#cancel').click(function(event) {
		toggleSignInForm('#forgotten','#signin');
		event.PreventDefault;
		return false;
	});

}

// align modal window

function initModal(div, msg, delay){
	$(div).text(msg);
    var windowWidth = document.documentElement.clientWidth;
    var windowHeight = document.documentElement.clientHeight;
    var modalHeight = $(div).height();
    var modalWidth = $(div).width();
    $(div).css({
        "position": "absolute",
        "top": windowHeight/2-modalHeight/2,
        "left": (windowWidth-modalWidth) / 2
    }).show().delay(delay).fadeOut(function() {
		$(this).hide().parent().fadeOut();
	});
}

// async loading

function asyncLoad(url, name)
{	
	$('#overlay').addClass('loading').fadeIn();
	$('#async, #asyncsub').fadeOut(650, function() {
		$('#maincol').load(url + ' #async', function(response, status, xml) {
			if (status == 'error') {
				$('#overlay').removeClass('loading');
				initModal('#status', xml.statusText, 2500);
			} else {
				$('body').attr('id', name);
				section = $('#async h2:first').text();
				document.title = 'Mumford & Sons - ' + section;
				$('#async').hide();
				$('#module').load(url + ' #asyncsub', function() {
					$('#asyncsub').hide();
					$('#async, #asyncsub').fadeIn(1000, function() {
						$('#overlay').fadeOut().removeClass('loading');
						$.scrollTo('#nav', 450);
						initSearch();
						initForms();
						initSubNav();
						ajaxid = $('body').attr('id');
						if (ajaxid == "live") {
							initGallery();
						};
					});
				});
			}
		});
	});
}

function asyncLoadSub(url)
{	
	$('#overlay').addClass('loading').fadeIn();
	$('#async').fadeOut(650, function() {
		$('#maincol').load(url + ' #async', function(response, status, xml) {
			if (status == 'error') {
				$('#overlay').removeClass('loading');
				initModal('#status', xml.statusText, 2500);
			} else {
				$('body').attr('id', name);
				section = $('#async h2:first').text();
				document.title = section + ' - Mumford & Sons';
				$('#async').hide();
				$('#async').fadeIn(1000, function() {
					$('#overlay').fadeOut().removeClass('loading');
					$.scrollTo('#nav', 450);
					initForms();
				});
			}
		});
	});
}

function initNav()
{
	$('a.int, #nav li a:not(.video, .store, .forum)').click(function(event){
		if ($('body').attr('id') != $(this).attr('class')) {
			asyncLoad($(this).attr('href'), $(this).attr('class'));
		};
		event.PreventDefault;
		return false;
	});

	$('a#scrollTop').click(function(event){
		$.scrollTo('body', 800);
		event.PreventDefault;
		return false;
	})	
}

function initSubNav()
{
	$('ul.sub a, ul.sub.archive a, #maincol a:not(.ext, [href^=#])').click(function(event){
		asyncLoadSub($(this).attr('href'));
		event.PreventDefault;
		return false;
	});
}

// search

function initSearch()
{
	$('#searchBar').css('opacity', '0.5');
	$('#searchBar').hoverIntent(function() {
		$(this).animate({
	    	opacity: 1
 		}, 600 );
	}, function() {
		$(this).animate({ 
	    	opacity: 0.5
 		}, 600 );
		var search = $('#searchForm').validate();
		search.resetForm();
	});
}

// gallery

function initCarousel(carousel)
{
	$('#carousel #galleryprev').bind('click', function(event) {
        carousel.prev();
		event.PreventDefault;
        return false;
    });

    $('#carousel #gallerynext').bind('click', function(event) {
        carousel.next();
		event.PreventDefault;
        return false;
    });
}

function initGallery()
{
	$('#thumbs').jcarousel({
		scroll:5,
		auto:0,
		initCallback:initCarousel,
		buttonNextHTML:null,
		buttonPrevHTML:null,
		easing:'easeInSine',
		wrap: 'none'
    });

	$('#thumbs li a.thumb').fancybox({
		'type' : 'image',
		'overlayOpacity' : 0.75,
		'overlayColor' : '#000',
		'titleShow' : false
	});

}

// google tracking

function initTracking()
{
	$.ga.load("UA-4370007-55");
}

// eof

