	// ***************************************
	// Loading progress bar
	// ***************************************
	var itemsLoaded = 0;
	var itemsTotal = 6;
	
	function showLoaded()
	{
		// If running for the first time show box
		if (itemsLoaded == 0)
		{
			$('progressBar').className = 'progressBarVisible';
			new Effect.Highlight($('progressBar'));
		}
				
		itemsLoaded++;		
		$('progressBar').innerHTML = '<img src="./img/loading-s.gif" border="0" alt="" style="vertical-align: middle; margin-right: 5px;"/><b>Loading: </b>'+Math.round((itemsLoaded*100)/(itemsTotal+1))+'%';
		
		// If all items processed make the progressBar disappear
		if (itemsLoaded == (itemsTotal+1))
		{
			Tooltip.setup();
			$('progressBar').innerHTML = '<b>Finished Loading!</b>';
			hideStatus();			
		}
	}
	
	// Hiding progress bar
	function hideStatus()
	{
		new Effect.Fade($('progressBar'));
	}


	// ***************************************
	// Flickr photo ajax functions
	// ***************************************
	function requestFlickr(artist)
	{	
		var url = './ajax.php';
		var pars = 'mode=flickr&query='+artist+'&style='+style;
		var myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 
				onComplete: updateFlickrContainer
			});
	}
	
	function updateFlickrContainer(response)
	{
		$('flickrContainer').innerHTML = response.responseText;
		new Effect.Highlight($('flickrContainer'), {startcolor:HighlightStartColor, endcolor:HighlightEndColor});
		initLightbox();
		showLoaded();
	}
	
	// ***************************************
	// Lastfm toptags ajax functions
	// ***************************************
	function requestLastfmTags(artist)
	{	
		var url = './ajax.php';
		var pars = 'mode=lastfm_toptags&query='+artist+'&style='+style;
		var myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 
				onComplete: updateTagsContainer
			});
	}
	
	function updateTagsContainer(response)
	{
		$('tagsContainer').innerHTML = response.responseText;
		new Effect.Highlight($('tagsContainer'), {startcolor:HighlightStartColor, endcolor:HighlightEndColor});
		showLoaded();
	}
	
	// ***************************************
	// Lastfm similar artists ajax functions
	// ***************************************
	function requestLastfmSimilar(artist)
	{	
		var url = './ajax.php';
		var pars = 'mode=lastfm_similar&query='+artist+'&style='+style;
		var myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 
				onComplete: updateSimilarContainer
			});
	}
	
	function updateSimilarContainer(response)
	{
		$('similarContainer').innerHTML = response.responseText;
		new Effect.Highlight($('similarContainer'), {startcolor:HighlightStartColor, endcolor:HighlightEndColor});
		showLoaded();
	}
	
	// ***************************************
	// Artists Releases from musicbrainz/amazon ajax functions
	// ***************************************
	function requestMbReleases(mbid)
	{	
		var url = './ajax.php';
		var pars = 'mode=mb_releases&query='+mbid+'&style='+style;
		var myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 
				onComplete: updateReleaseContainer
			});
	}
	
	function updateReleaseContainer(response)
	{
		$('releaseContainer').innerHTML = response.responseText;
		new Effect.Highlight($('releaseContainer'), {startcolor:HighlightStartColor, endcolor:HighlightEndColor});
		showLoaded();
	}
	
	// ***************************************
	// Blog entry search at technorati.com
	// ***************************************
	function requestTechnoratiEntries(artist)
	{	
		var url = './ajax.php';
		var pars = 'mode=technorati&query='+artist+'&style='+style;
		var myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 
				onComplete: updateBlogContainer
			});
	}
	
	function updateBlogContainer(response)
	{
		$('blogContainer').innerHTML = response.responseText;
		new Effect.Highlight($('blogContainer'), {startcolor:HighlightStartColor, endcolor:HighlightEndColor});
		showLoaded();
	}
	
	// ***************************************
	// Youtube video ajax functions
	// ***************************************
	function requestYouTube(artist)
	{	
		var url = './ajax.php';
		var pars = 'mode=youtube&query='+artist+'&style='+style;
		var myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 
				onComplete: updateVideoContainer
			});
	}
	
	function updateVideoContainer(response)
	{
		$('videoContainer').innerHTML = response.responseText;
		new Effect.Highlight($('videoContainer'), {startcolor:HighlightStartColor, endcolor:HighlightEndColor});
		showLoaded();
	}
	
	// ***************************************
	// Vote for an artist
	// ***************************************
	function vote(id, rating)
	{	
		var url = './ajax.php';
		var pars = 'mode=vote&id='+id+'&rating='+rating+'&style='+style;
		var myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 
				onComplete: updateRatingBar
			});
	}
	
	function updateRatingBar(response)
	{
		$('ratingContainer').innerHTML = response.responseText;
		new Effect.Highlight($('ratingContainer'), {startcolor:HighlightStartColor, endcolor:HighlightEndColor});
	}