// JavaScript Document	

document.observe('dom:loaded' , function() {
artistid = qp_artist();
albumid = qp_album();

var urlhash = document.location.hash.substring(1);
if (!urlhash){urlhash='about';}

flash_playlist_embed('php/xml_songlist.php?artistid='+artistid);
	
$('artistmenu').observe('click', artist_menu_options.bindAsEventListener(this));	
$('albummenu').observe('click', album_menu_options.bindAsEventListener(this));

//if album is chosen from album listing
$('albumlist').observe('click', function(e){
	Event.stop(e);
	var clickelt = Event.element(e).id;
	var clickid = $(clickelt).up(1).id;
	if ($(clickid).match('li')){
		album_display(clickid, option='albuminfo');
	}
});

//detremine what type of center content to dispaly.
if (albumid > 0){album_display(albumid, urlhash);}else{artist_display(artistid, urlhash);}



});
//places the flash file in place on the page
function flash_playlist_embed(xmlfile){
	var flashvars = {};
	flashvars.xmlFile = xmlfile;
	var params = {};
	var attributes = {};
	swfobject.embedSWF("demos/stSongPlayer.swf", "playlistcol", "202", "380", "8.0.0", "demos/expressInstall.swf", flashvars, params, attributes);	
	
}
var artist_menu_options = function(e){
	var clickname = Event.element(e).name;
	artist_display(artistid, clickname);

}

var album_menu_options = function(e){
	var clickname = Event.element(e).name;
	//album_display(albumid, clickname);
	center_show_hide(clickname);
}

var center_show_hide = function(option){
	option = option.gsub('menu','');
	
	$('albuminfo').hide();
	$('lyrics').hide();	
	$('reviews').hide();
	$('about').hide();	
	$('schedule').hide();
	if($(option)){
	$(option).show();
	$('menu'+option).addClassName('active');
	}
		
	$$('a.active').invoke('removeClassName','active');
	

}

var artist_display = function (artistid, option){
	if($('albummenu')){$('albummenu').hide();}
	if($('albumoptions')){$('albumoptions').hide();}
	if($('artistoptions')){$('artistoptions').show();}	
	center_show_hide(option);

}
var album_display = function (albumid, option){
	if($('artistoptions')){$('artistoptions').hide();}
	if($('albumoptions')){$('albumoptions').show();}	
	if($('albummenu')){$('albummenu').show();}	
	//center_show_hide(option);
	switch_album(albumid);
}



var switch_album = function(albumid){

	ajax_get_album_info(albumid);
	ajax_get_lyricslist(albumid);
	ajax_get_reviewlist(albumid);
	
	//$('albumid').value=aid;
	
	
	center_show_hide('albuminfo');
	
	
}//end switch album function

function ajax_get_album_info(albumid){
	$('albuminfo').update('');
	var url = 'php/get_album_info.php';
	var pars = 'albumid='+albumid;
	new Ajax.Request(url, {
		parameters: pars,
		onFailure : function(resp) {alert("Oops, there's been an error.");},
		onSuccess: function(transport) {
			var t = transport.responseText.evalJSON();
			//alert(t.ai);
			$('albuminfo').update(t.ai);
			$('albumcover').replace(t.albumcover);
			flash_playlist_embed("php/xml_songlist.php?albumid="+albumid);
			//trying to find a way to store album and artist data in a hash so that you another ajax call does not have to be made.
			//var h = $H(t);
			//aihash.update(h);		
					
					//aihash.each(function(pair) {
					//alert(pair.key + ' = "' + pair.value + '"' );
					//	});
			
			
			//$('test').update(aihash.inspect());
			
			//alert (songlist);
			//insert_playlist(t.id);
			
		}
});
}

function ajax_get_lyricslist(albumid){
	//albumid = albumid.gsub('album','');
	//$('lyrics').update('');
	var url = 'php/get_lyricslist.php';
	var pars = 'albumid='+albumid;
	new Ajax.Request(url, {
		parameters: pars,
		onFailure : function(resp) {alert("Oops, there's been an error.");},
		onSuccess: function(transport) {
			var t = transport.responseText.evalJSON();
			$('lyrics').update(t.list);
			$$('.accordionpar').invoke('hide');
			$$('.accordionheadlyric').invoke( 'observe', 'click', function(e) {showaccordionpar(e);});

		}
});
}

function ajax_get_reviewlist(albumid){
	//albumid = albumid.gsub('album','');
	$('reviews').update('');
	var url = 'php/get_reviews.php';
	var pars = 'albumid='+albumid;
	new Ajax.Request(url, {
		parameters: pars,
		onFailure : function(resp) {alert("Oops, there's been an error.");},
		onSuccess: function(transport) {
			var t = transport.responseText.evalJSON();
			if (t.review=='No Reviews'){
				$('menureviews').hide();
			}else{
				$('menureviews').show();
				$('reviews').update(t.review);
				$$('.accordionpar').invoke('hide');
				$$('.accordionheadreview').invoke( 'observe', 'click', function(e) {showaccordionpar(e);});
			}
		}
});
}




function showaccordionpar(e){

	if (Event.element(e).id.startsWith('lyric')){
		id = Event.element(e).id.gsub('lyrichead','');
		var ds = ($('lyricspar'+id).getStyle('display'));
		$$('.accordionpar').invoke('hide');
		if (ds=='none'){
		$('lyricspar'+id).show();
		}
	}else if (Event.element(e).id.startsWith('review')){
		id = Event.element(e).id.gsub('reviewhead','');
		var ds = ($('reviewpar'+id).getStyle('display'));
		//$$('.accordionpar').invoke('hide');//set this to hide if there are many reviews and you want to let people choose a review.
		//if (ds=='none'){
		$('reviewpar'+id).toggle();
		//}
	}

}

//qp = query parameter
function qp_artist(){
	var aid	= document.URL.toQueryParams();	
	if (aid){
	aid = aid['artist'];
	return aid;
	}
}
function qp_album(){
	var aid	= document.URL.toQueryParams();	
	if (aid['album']){
		albumid = aid['album'];
		return albumid;
	}
}
