// When the document loads do everything inside here ...
$(document).ready(function(){
	crumbs();	
	suggest_bands();
	widgets();
	home_search();
	scroller();

$("#relation-tabs + .relation-list").show();
// When a link is clicked
$("#relation-tabs li").click(function () {
		if (!$(this).hasClass("active") ) {
			// switch all tabs off
			$(".active").removeClass("active");
			// switch this tab on
			$(this).addClass("active");
		}
		
		// slide all content up
		$(".relation-list").hide();
		
		// slide this content up
		var content_show = $(this).attr("title");
		$("#"+content_show).show();
		
		return false;
	});

	//trigger form animation
	$("#tags_link").click(function() {
		$("#tags_form").toggle('slide');
		return false;
	});

	//ajax submit
	$("#tags_form").submit(function() {
		//loading...
		$("#tags_form input[name=submit]").hide();
		var formdata = $(this).serialize();
		$("#tags_form input").attr("disabled", "disabled");
		$.ajax({
			type: "POST",
			url: "/post_ajax.php",
			data: formdata,
			timeout: 2000,
			error: function (XMLHttpRequest, textStatus, errorThrown) {
				ajaxSubmitError(XMLHttpRequest, textStatus, errorThrown);
			},
			success: function (data) {
				ajaxSubmitSuccess(data);
			}
		});
		
		return false;
	});

/*
	$('.jump .up').click(function() {
			var obj = $(window);
			var pos = obj.position().top;
			if (pos > -600) {
					pos = pos - 300;
					log.add(pos);
					obj.animate({scrollTo: pos }, 1000);
			}
	});

	$('.jump .down').click(function() {
			var obj = $('.jump');
			var pos = obj.position().bottom;
			if (pos < 0) {
					pos = pos + 300;
					obj.animate({bottom: pos + "px"}, 1000);
			}
	});
*/
});

var suggest_bands = function(){
	$('#footer ol a').hover(function(e){
		$.doTimeout('suggest', 150, function(){
			var suggest = $('#suggest');
			suggest.html('<span class="progress">Loading...</span>').fadeIn('slow').load(e.target.href + ' #releases li:last-child > *', function(){
				$(this).find('.summary').prepend('<h4>Latest Album from <q>'+$(e.target).text()+'</q></h4>');
				//$(this).fadeIn('slow');
			});
		});
	}, function(){
		$.doTimeout('suggest', 10000, function(){
			$('#suggest').fadeOut('slow')
		});
	});
};

var crumbs = function(){
	$('.crumbs a').hover(function(){
		var cl = $(this).attr('class');
		if ( cl == 'search' ) $(this).addClass('alt');
		$(this).append('<em id="crumb">'+cl+'</em>');
		$(this).find('#crumb').fadeIn();
	}, function(){
		var crumb = $(this).find('#crumb');
		crumb.fadeOut(function(){
			if ( $(this).parent('a').hasClass('search') )
				$(this).parent('a').removeClass('alt');
			$(this).remove()
		});
	});
};

var widgets = function(){
	$('h2').click(function(){
		if ( $(this).hasClass('closed') ) {
			$(this).next().slideDown();
			$(this).removeClass('closed');
		} else {
			$(this).addClass('closed');
			$(this).next().slideUp();
		}
	});
	//clickable result items
	$('#artists li:has(a)').click(clickable_box);
	$('#releases li:has(a)').click(clickable_box);
};

var clickable_box = function(e){
		if ( $(e.target).is('a') ) return;
		window.location = $('a:first-child', this).attr('href');
		return false;
};

var home_search = function(){
	$('#home_search .types a').click(function(){
		$(this).parent().siblings().removeClass('active');
		$(this).parent().attr('class', 'active');
		$(this).prev().attr('checked', 'checked');
		return false;
	});
};

function ajaxSubmitError(XMLHttpRequest, textStatus, errorThrown) {
	$("#messages").html("<p class='save_error'>Error while saving your data.</p><p class='save_error'>Please try submitting again.</p><p class='save_error'>If error continues please contact support at...</p>");
	// Send error details in a support email
	$("#tags_form input").removeAttr("disabled");
	$("#tags_form input[name=submit]").show();
}

function ajaxSubmitSuccess(data) {
	var mbid = $("#tags_form input#id").attr('value');
	var entity = $("#tags_form input#entity").attr('value');
	//$("#messages").html("<p class='save_success'>Your data has been saved</p>").fadeOut(3000);
	$("#messages").html("<p class='save_success'>Your data has been saved</p>").fadeOut(3000);
	$("#tags_form input").removeAttr("disabled");
	$("#tags_form input[name=submit]").show();
	$("#tags_form").toggle('blind');
	//alert(mbid);
	$.ajax({
		type: 'GET',
		url: '/get_ajax.php',
		data: 'id=' + mbid + '&entity=' + entity,
		timeout: 2000,
		error: function (XMLHttpRequest, textStatus, errorThrown) {
				ajaxSubmitError(XMLHttpRequest, textStatus, errorThrown);
		},
		success: function (data) {
			$("#tag-list").html(data).slideDown();
		}
	});
}

var scroller = function(){
	var scrollers = $('#layout .scrollable');
	$.each(scrollers, function(i, scrollable){
		var type = scrollable.className.split(' ')[1];
		var widget = $(scrollable).parents('.widget').attr('id');
		var items = $(scrollable).find('.items');
		var length = items.find('li').length;
		var height = 100;
		var size = 1;
		
		if ( widget == 'news' ) {
			height = length > 5 ? 800 : 400;
			size = length > 5 ? 3 : 2;
		} else if ( widget == 'albums' ) {
			height = 275;
			size = 2;
		} else if ( widget == 'reviews' ) {
			height = 470;
			size = 3;
		} else if ( widget == 'events' ) {
			height = 400;
			size = 3;
		} else if ( widget == 'events' ) {
		} else {
			height = 370;
			size = 4;
		}
		
		scrollable.style.height = height + 'px';
		$(scrollable).scrollable({
			vertical: ( type == 'vertical' ? true : false ),
			size: size,
			onBeforeSeek: maps.update
		});
	});
};

var maps = function(){
	var setTriggers=function(){
		$('#events li').click(function(){
			var gps = $(this).find('address').attr('rel').split(':');
			loadMap(gps);
		});
	};

	var loadMap=function(gps){
		var map = new google.maps.Map2(document.getElementById("map"));
		var point = new google.maps.LatLng(gps[0], gps[1]);
		var marker = new google.maps.Marker(point);
		map.setCenter(point, 13);
		map.addOverlay(marker);
		map.setUIToDefault();
	};

	return {
		init: function(){
			google.load("maps", "2");
			google.setOnLoadCallback(function(){
				if ( !$('#events address').length ) return;
				var section = $('#events .section');
				var first = $('#events li:first'); 
				var gps = first.find('address').attr('rel').split(':');
				first.addClass('active');
				section.append('<div id="map"></div>');
				loadMap(gps);
				setTriggers();
			});
		},
		update: function(e, i){
			//loadMap(e, i);
		}
	}
}();


var log = function(){
	return {
		add: function(m){
			window.console && console.log(m);
		}
	}
}();
