
var ytplayer, yt_video_id ;
var play_album = 0 ;

$(document).ready(function(){

	
	$("#btn-discos-more a.more").click(btn_more) ;
	$("#btn-bio-more a.more").click(btn_more) ;
	$("#btn-lyr-more a.more").click(btn_more) ;
	$("#btn-sim-more a.more").click(btn_more) ;

	// search
	$("#searchbox input.t").focus(function() {
		$(this).val('') ;
	})
	$("#searchbox input.t").blur(function() {
		if ($(this).val().length == 0)
			$(this).val('procurar artista') ;
	})
	
	// short-url on focus select
	$("#shorturl input.s").focus(function() {
		$(this).select();
	})
	$("#shorturl input.s").mouseup(function(e){
		e.preventDefault();
	});


	if (window.location.hash.length) {
		band_slug = plink_to_slug (window.location.hash) ;
	}
	else if (band_slug.length) {
		load_band (band_slug) ;
		band_slug = '' ;
	}



	$("#searchbox input.t").autocomplete({
		source: function (request, response) {
			$.ajax({
				url: "http://lastfm-api-ext.appspot.com/2.0/",
				dataType: "jsonp",
				data: {
					method: "artist.search",
					api_key: "b25b959554ed76058ac220b7b2e0a026",
					outtype: "js",
					limit: "5",
					artist: request.term
				},
				success: function(data) {
					response($.map(data.artistmatches, function(item) {
						return {
							label: item.name,
							mbid: item.mbid
						}
					}))
				}
			})
		},
		minLength: 2,
		select: function(event, ui) {
			reset_artist() ;
			reset_album() ;
			reset_song() ;
			reset_lyrics() ;

			if (ui.item.mbid || ui.item.label) {
				var call_url = '' ;
				if (ui.item.mbid)
					call_url = 'jsonsys/search.php?mbid='+ui.item.mbid ;
				else if (ui.item.label)
					call_url = 'jsonsys/search.php?q='+ui.item.label ;

				$.getJSON(call_url, function (data) {
					if (data.slug) {
						load_band (data.slug) ;
						$("#artist span.load").removeClass('on') ;
					}
				}) ;
			}
		},
		open: function() {
			$(this).removeClass("ui-corner-all").addClass("ui-corner-top");
		},
		close: function() {
			$(this).removeClass("ui-corner-top").addClass("ui-corner-all");
		}

	});


	$("a.login").click (fb_login) ;
	$("#fbshare a.on").click (fb_share) ;
	$("#comments a.on").click (fb_share) ;
});





function fb_login() {

	FB.login(function(response) {
	  if (response.session) {
	    if (response.perms) {
	      // user is logged in and granted some permissions.
	      // perms is a comma separated list of granted permissions

		  	$("#fbshare a").addClass ('on') ;
			$("#fbshare a.on").click (fb_share) ;

			$("#fbconnect a.login").addClass ('off') ;
			$("#fbconnect a.login").unbind ('click') ;
			$("#fbconnect a.login").removeClass ('login') ;
			
			fb_uid = response.session.uid ;
			var mug_src = 'http://graph.facebook.com/' + fb_uid + '/picture?size=square' ;
			$("#comments img.user-mug").attr ('src', mug_src) ;
			$("#comments a.login").addClass ('on') ;
			$("#comments a.on").removeClass ('login') ;
			$("#comments a.on").click (fb_share) ;
			

	    } else {
	      // user is logged in, but did not grant any permissions
	    }
	  } else {
	    // user is not logged in
	  }
	}, {perms:'publish_stream'});
}

function fb_share() {
	var yt_id, a_name, a_caption, a_desc, yt_url, thumb_src, a_caption ;

	$("#fbshare span.load").addClass('on') ;
	$("#comments span.load").addClass('on') ;

	var b_plink = $("#artist span.plink").text() ;
	var ag_url = 'http://' + window.location.hostname + '/musica/' + b_plink ;
	
	a_name = $("#artist h2").text() ;
	a_desc = $("#bio p.summary").text() ;
	a_desc = a_desc.substr(0, 360) + '...' ;
	thumb_src = $("#artist img.mug").attr('src') ;
	a_caption = $("#artist .tags").text() ;

	var is_song_on = $("#track-list li a.on").parent().index() ;
	if (is_song_on > -1) {
		var s_link = $("#track-list li:eq("+is_song_on+") span.plink").text() ;
		ag_url += '/' + s_link ;
		a_caption = $("#album h2").text() ;
		a_name = $("#track-list li:eq("+is_song_on+") a").attr('title') ;
		thumb_src = $("#album img.cover").attr('src') ;
		var a_letra = $("#cifra p").html() ;

		// takes out br, newlines
		if (a_letra.length>1) {
			a_letra = a_letra.replace (/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '') ; // \n
			a_desc = a_letra.replace (/<br\s*\/?>/mg, ' - ') ; // <br>
		}

		var album_name = $("#album h2").text() ;
		var album_cy = $("#album p.cy").text() ;
		var split = album_cy.split (' / ') ;
		var ymatch = /^\d{4}$/ ;
		if (split[0].match(ymatch))
			album_y = split[0] ;

		a_caption = '<b>'+ album_name + ' (' + album_y + ')' +'</b>' ;
	}
	
	ytid = $(".song span.ytid").text() ;

	var message = $("#comments textarea").val() ;


	var a_attach = {
		"name": a_name,
		"href": ag_url,
		"caption": a_caption,
		"description": a_desc,
		"media": [{
			"type": "video",
			"preview_img": thumb_src,
			"video_src": "http://www.youtube.com/v/"+ ytid +"&autoplay=1"
		}]
	}

	var stream_publish = {
		"method": "stream.publish",
		"message": message,
		"uid": fb_uid,
		"attachment": a_attach,
		"action_links": [
			{"text": "Partilhar", "href": "http://www.facebook.com/sharer.php?u="+encodeURIComponent(ag_url)}
		]
	}
	
	


	FB.api (stream_publish, function (response) {
		if (response.error_msg) {
			$("#fbshare span.load").removeClass('on') ;
			$("#comments span.load").removeClass('on') ;
			$("#social p.er").html (response.error_msg) ;
		}
		else {
			$("#fbshare span.load").addClass('check') ;
			$("#fbshare span.load").removeClass('on') ;
			$("#fbshare span.check").removeClass('load') ;

			$("#comments span.load").addClass('check') ;
			$("#comments span.load").removeClass('on') ;
			$("#comments span.check").removeClass('load') ;
		}
	})

}



function plink_to_slug (plink) {
	// plink = #!/musica/crasy-horse
	plink = plink.replace(/#!\/musica\//ig, '') ;
	
	var call_plink = "/jsonsys/plink_to_slug.php?plink="+plink ;
	$.getJSON(call_plink, function (data) {
		if (data) {
			load_band (data.band) ;
			if (data.album)
				album_slug = data.album ;
			if (data.song)
				song_slug = data.song ;
			if (data.song_name)
				song_name = data.song_name ;
		}
	}) ;		
}

function go_search () {
	if ($("#searchbox input.t").val() != 'procurar música') {
		$("#searchbox button.b").addClass('load') ;
		reset_artist() ;
		reset_album() ;
		reset_song() ;
		reset_lyrics() ;
		var call_url = 'jsonsys/search.php?q='+$("#searchbox input.t").val() ;
		$.getJSON(call_url, function (data) {
			if (data && data.slug) {
				load_band (data.slug) ;
				$("#searchbox input.t").val('') ;
				$("#searchbox button.b").removeClass('load') ;
				$("#artist span.load").removeClass('on') ;
			}
		}) ;
	}
}

function search_band() {
	var idx = $(this).index() ;
	var band_name = $(".sims li:eq("+idx+") p").html() ;
	var band_mbid = $(".sims li:eq("+idx+") span.mbid").html() ;

	reset_artist() ;
	reset_album() ;
	reset_song() ;
	reset_lyrics() ;
	var call_url = '' ;
	
	if (band_mbid)
		call_url = 'jsonsys/search.php?mbid='+band_mbid ;
	else 
		call_url = 'jsonsys/search.php?q='+encodeURIComponent (band_name) ;

	$.getJSON(call_url, function (data) {
		if (data.slug) {
			load_band (data.slug) ;
			$("#artist span.load").removeClass('on') ;
		}
	}) ;
		
}


function load_band (band_slug) {
	// load data
	if (band_slug) {
		$.getJSON('json/music/bands/' + band_slug + '.json', function (data) {
			if (data) {
				first_query = data.n ;
				// artist bio
				$("#artist h2").html (data.n) ;
				$("#artist span.plink").html(data.plink) ;
				$("#artist p.summary").html (data.summary) ;
				$("#artist p.bio-text").html (data.fullbio) ;
				$("#artist img.mug").removeClass('blank') ;
				$("#artist img.mug").attr('src', data.p[0]) ;
				$(".artist .box-source a").attr('href', data.src) ;
				$(".disco .box-source a").attr('href', data.src+'/+albums') ;
				$(".bio .box-source a").attr('href', data.src+'/+wiki') ;
				$("#similar .box-source a").attr('href', data.src+'/+similar') ;
				$("#album .box-source a").attr('href', 'http://musicbrainz.org') ;
	
		
				// changes url state
//				if (window.location.href.search(/musica/) == -1)
					window.location.hash = "!/musica/"+ data.plink ;
					
				// changes fb-like button
				var url_fblike = "http://www.facebook.com/plugins/like.php?href=http://"+window.location.hostname+
					"/musica/"+data.plink+"&layout=button_count&show_faces=false&width=150&action=like&"+
					"colorscheme=light&height=20&locale=pt_PT" ;
				$("#fblike iframe").attr('src', url_fblike) ;
				$("#fblike iframe").load();
				
				// shorturl
				if (data.surl)
					$("#shorturl input.s").val('http://'+window.location.hostname+'/v-'+data.surl) ;
				else
					$("#shorturl input.s").val('') ;
				
				// tags
				$("#artist span.tags").html('') ;
				if (data.tg) {
					for (i=0 ; i<data.tg.length ; i++) {
						$("#artist span.tags").append(data.tg[i]) ;
						if (i<data.tg.length-1)
							$("#artist span.tags").append(' - ') ;
					}
				}
				
				// discography
				if (data.d) {
					for (i=0 ; i<data.d.length ; i++) {
						var li = document.createElement('li') ;
						$("#artist ul.discos").append(li) ;
						var pic = document.createElement('img') ;
						if (data.d[i].pic)
							pic.setAttribute('src', data.d[i].pic) ;
			
						$("#artist ul.discos li:eq("+i+")").append(pic) ;
						$("#artist ul.discos li:eq("+i+")").append('<p>'+data.d[i].nm+'</p>') ;
						$("#artist ul.discos li:eq("+i+")").append('<span class="slug">'+data.d[i].slug+'</span>') ;
						$("#artist ul.discos li:eq("+i+")").append('<span class="id">'+data.d[i].id+'</span>') ;
						// clicks on album
						$("#artist ul.discos li:eq("+i+")").click (pick_album) ;	
					}
				}
				
				// similars
		//		for (i=0 ; i<data.sims.length ; i++) {
				if (data.sims) {
					for (i=0 ; i<19 ; i++) {
						var li = document.createElement('li') ;
						li.setAttribute('class', 'on') ;
						$("ul.sims").append(li) ;
						var pic = document.createElement('img') ;
						pic.setAttribute('src', data.sims[i].p) ;
						pic.setAttribute('alt', data.sims[i].n) ;
						$("ul.sims li:eq("+i+")").append(pic) ;
						$("ul.sims li:eq("+i+")").append('<p>'+data.sims[i].n+'</p>') ;
						$("ul.sims li:eq("+i+")").append('<span class="mbid">'+data.sims[i].mbid+'</span>') ;
						$("ul.sims li:eq("+i+")").click(search_band) ;
					}
				}
				
				// album
				var idx_album = 0 ;
				if (album_slug.length) {
					if (data.d) {
						for (i=0 ; i<data.d.length ; i++) {
							var bslug = $("#artist ul.discos li:eq("+i+") span.slug").html() ;
							if (bslug == album_slug) {
								album_slug = '' ;
								idx_album = i ;
								break ;
							}
						}
					}
				}
				pick_album (idx_album) ;
		
				// song + video
				if (song_slug.length || song_name.length) {
					var query = '"'+data.n+'"+"'+song_name+'"' ;
					load_ytvideo(query) ;
				}
				else
					load_ytvideo(data.n) ;
			}
		})
	}
}

function pick_album (idx_album) {
	if ($(this).index() != -1)
		idx_album = $(this).index() ;
		
	
	reset_album() ;
	$("ul.discos li").unbind ('click') ;
	
	$("ul.discos li").removeClass('on') ;
	$("ul.discos li:eq("+idx_album+")").addClass('on') ;
	var id_album = $("ul.discos li:eq("+idx_album+") span.id").text() ;
	var slug_album = $("ul.discos li:eq("+idx_album+") span.slug").text() ;


	var url_call = '' ;
	if (id_album || slug_album) {
		if (slug_album && slug_album.length) 
			url_call = 'json/music/albums/' + slug_album + '.json' ;
		else
			url_call = 'jsonsys/get-album.php?id=' + id_album ;
	
		$.getJSON (url_call, load_album) ;
	}
	else {
		play_album = 0 ;
		$("#album span.load").removeClass('on') ;
		$("#artist ul.discos li").click (pick_album) ;	
	}
}

function load_album(data) {
	if (data.id) {
		$("#album h2").html (data.nm) ;
		if (data.pic)
			$("#album img.cover").attr ('src', data.pic) ;
	
		var n_discos = $("ul.discos li").length ;
		for (var i=0 ; i<n_discos ; i++) {
			var id = $("ul.discos li:eq("+i+") span.id").html() ;
			if (id == data.id)
				$("ul.discos li:eq("+i+") span.slug").html(data.slug) ;
		}
		
		if (data.trks) {
			for (i=0 ; i<data.trks.length ; i++ ) {
				var pattern = /\(feat.(.*)\)/ ;
				var songname = data.trks[i].nm.replace (pattern, '') ;
				pattern = /featuring (.*)/ ;
				songname = songname.replace (pattern, '') ;
				pattern = /\(Album Version\)/ ;
				songname = songname.replace (pattern, '') ;

				var li = document.createElement('li') ;
				$("ul#track-list").append(li) ;
				var song = document.createElement('a') ;
				song.setAttribute('title', $("#artist h2").text() + " | " + songname) ;
				$("ul#track-list li:eq("+i+")").append(song) ;


				$("ul#track-list li:eq("+i+") a").append((i+1)+'. ' + songname) ;
				$("ul#track-list li:eq("+i+")").append('<span class="id">'+data.trks[i].id+'</span>') ;
				$("ul#track-list li:eq("+i+")").append('<span class="slug">'+data.trks[i].slug+'</span>') ;
				$("ul#track-list li:eq("+i+")").append('<span class="plink">'+data.trks[i].plink+'</span>') ;
				$("ul#track-list li:eq("+i+")").append('<span class="surl">'+data.trks[i].surl+'</span>') ;
				$("ul#track-list li:eq("+i+")").append('<span class="ytid"></span>') ;
				$("ul#track-list li:eq("+i+")").click(vdo_play) ;
				
				// as musicas q veem pre-escolhidas no url
				if (song_slug.length) {
					if (song_slug == data.trks[i].slug) {
						$("ul#track-list li:eq("+i+") a").addClass('on') ;
					}
				}
				
				if (song_name.length) {
					if (song_name == data.trks[i].nm) {
						$("ul#track-list li:eq("+i+") a").addClass('on') ;
	
						var band_plink = $("#artist span.plink").html() ;
						var song_plink = data.trks[i].plink ;
						var band_song = data.trks[i].nm ;
					
					}
				}
			}
		}
		
		var cpy_text = album_mdata_py_text (data) ;
		$("div#album p.cy").html (cpy_text) ;
		$("div#album span.box-source a").attr ('href', data.src_url) ;
		$("div#album span.box-source a").text (data.src_nm) ;
	}
	
	play_album = 0 ;
	$("#album span.load").removeClass('on') ;
	$("#artist ul.discos li").click (pick_album) ;	
}

function album_mdata_py_text (album) {
	var cpy_text = new Array() ;
	var i=0 ;
	if (album.dt) {
		cpy_text[i] = album.dt ;
		i++ ;
	}

	if (album.cnt) {
		cpy_text[i] = album.cnt ;	
		i++ ;
	}

	if (album.lbl) {
		cpy_text[i] = album.lbl ;
		i++ ;
	}
		
	var cpy_str = '' ;
	if (cpy_text.length) {
		for (i=0 ; i<cpy_text.length ; i++) {
			cpy_str += cpy_text[i] + " / " ;
		}
		cpy_str = cpy_str.substr (0, cpy_str.length-2) ;
	}	

	if (!cpy_str.length)
		cpy_str = '&nbsp;' ;
	
	return cpy_str ;
}


function load_ytvideo (query) {
	if (query.length && query != 'undefined') {
		query = encodeURIComponent(query) ;
		var url_youtube_search = 'http://gdata.youtube.com/feeds/api/videos?q='+query+
			'&start-index=1&max-results=25&v=2&strict=true&alt=json-in-script&callback=load_video' ;
			
		get_jsonp (url_youtube_search) ;
	}
}


function load_video (data) {
	// loads data from incoming youtube JSON data, only embedable
	var idx_vdo = 0 ;
	if (data.feed.entry) {
		var yt_vdo_list_i = 0 ;
		yt_vdo_list = new Array() ;
		for (var i=0 ; i<data.feed.entry.length ; i++) {
			var alowd = 1 ;
			var access_control = data.feed.entry[i].yt$accessControl ;
			for (var j=0 ; j<access_control.length ; j++) {
				if (access_control[j].action == 'embed') {
					if (access_control[j].permission == 'denied')
						alowd = 0 ;
				}
			}
			
			if (alowd) {
				yt_vdo_list[yt_vdo_list_i] = data.feed.entry[i] ;
				yt_vdo_list_i ++ ;
				if (!idx_vdo)
					idx_vdo = i ;
			}
		}
		
		// o primeiro da serie de resultados
		yt_video_id = yt_vdo_list[0].media$group.yt$videoid.$t ;
		yt_video_title = yt_vdo_list[0].media$group.media$title.$t ;
		yt_video_desc = yt_vdo_list[0].media$group.media$description.$t ;

		if (ytplayer)
			ytplayer.loadVideoById(yt_video_id);
		else {
			var params = { allowScriptAccess: "always", autoPlay: "false" };
			var atts = { id: "ytPlayer" };
			swfobject.embedSWF("http://www.youtube.com/v/" + yt_video_id + "&enablejsapi=1&playerapiid=player1", 
			                   "video", "433", "344", "8", null, null, params, atts);
		}
		
		// a navegacao nos resultados da pesquisa
		$("#vdo-nav a.next").unbind ('click', vdo_list_next) ;
		$("#vdo-nav a.next").unbind ('click', vdo_list_prev) ;
		$("#vdo-nav a.next").click (vdo_list_next) ;
		$("#vdo-nav a.prev").click (vdo_list_prev) ;
		$("#vdo-nav").removeClass('off') ;
		
		
		// grava na cache
		var idx = $("#track-list li a.on").parent().index() ;
		if (idx > -1) {
			var url_call, id_song, slug_song ;
			id_song = $("#track-list li:eq("+idx+") span.id").text() ;
			if (!id_song) {
				slug_song = $("#track-list li:eq("+idx+") span.slug").text() ;
				url_call = 'jsonsys/save-ytid.php?slug=' + slug_song ;
			}
			else
				url_call = 'jsonsys/save-ytid.php?id='+id_song ;
		
			url_call += '&ytid=' + yt_video_id ; 
			$.getJSON (url_call, function() {}) ;
		}

		
		// youtube title
		$("#song #vdo-metadata h1").text(yt_video_title) ;
		$("#song #vdo-metadata p").text(yt_video_desc) ;
		
		var yt_url = "http://www.youtube.com/watch?v=" + yt_video_id ;

		$(".song span.box-source a").attr('href', yt_url) ;
		$(".song span.ytid").text(yt_video_id) ;
		if (fb_uid) {
		  	$("#fbshare a").addClass('on') ;
			$("#fbshare a.on").unbind('click') ;
			$("#fbshare a.on").click(fb_share) ;
		}
	  	$("#fbshare span.check").addClass('load') ;
	 	$("#fbshare span.load").removeClass('check') ;
	  	$("#comments span.check").addClass('load') ;
	 	$("#comments span.load").removeClass('check') ;

	}
	

	get_lyrics() ;
	$("#song span.load").removeClass('on') ;
}


function vdo_play (btn) {
	var idx = 0 ;
	$("#song h2").html('&nbsp;') ;
	// clicka na album-bar
	if ($(this).attr('class') == 'play' || $(this).attr('class') == 'next' || $(this).attr('class') == 'prev') {
		if (play_album)
			idx = play_album-1 ;
		else {
			play_album = 1 ;
			idx = play_album-1 ;
		}
	}
	// clika em cima da track para tocar
	else if ($(this).index()+1) {
		idx = $(this).index() ;
		if (idx == -1)
			idx = play_album ;
	}
	else if (btn.attr('class') == 'next' || btn.attr('class') == 'prev') {
		if (play_album)
			idx = play_album-1 ;
		else {
			play_album = 1 ;
			idx = play_album-1 ;
		}
	}
	

	var band_song = $("#track-list li:eq("+idx+") a").attr('title') ;
	var split = band_song.split(' | ') ;
	var band_name = split[0] ;
	var song_name = split[1] ;

	
	// se ja tivemos feito esta pesquisa
	var yt_videoid_cache = $("#track-list li:eq("+idx+") span.ytid").html() ;
	if (yt_videoid_cache) {
		$("#vdo-list ul").addClass('off') ;
		$("#vdo-list ul#"+yt_videoid_cache).removeClass('off') ;
		ytplayer.loadVideoById (yt_videoid_cache);
	}
	else {
		var query = '"'+band_name+'"+"'+song_name+'"' ;
		load_ytvideo (query) ;
	}


	$("#track-list a").removeClass('on') ;
	$("#track-list li:eq("+idx+") a").addClass('on') ;

	$("#song h2").html(song_name) ;

	
	// changes url state
	var band_plink = $("#artist span.plink").text() ;
	var song_plink = $("#track-list li:eq("+ idx +") span.plink").text() ;
	window.location.hash = "!/musica/"+ band_plink +"/"+ song_plink ;


	// shorturl
	var song_surl = $("#track-list li:eq("+ idx +") span.surl").text() ;
	if (song_surl)
		$("#shorturl input.s").val('http://'+window.location.hostname+'/v-'+song_surl) ;
	else
		$("#shorturl input.s").val('') ;

	
	$("#album-bar a.play").addClass('play-on') ;
	$('#album-bar a.play').unbind('click');
	$("#album-bar a.play").removeClass('play') ;
	$("#album-bar a.play-on").click(vdo_pause) ;
	$("#album-bar a.stop").click (vdo_stop) ;

	song_name = '' ;
	song_slug = '' ;
}


function onYouTubePlayerReady(playerId) {
	ytplayer = document.getElementById("ytPlayer");
	ytplayer.addEventListener('onStateChange', "vdo_state_change") ;
}


function get_lyrics () {
	reset_lyrics() ;
	
	var lyrics_search = '' ;

	var track_on = $("#track-list a.on") ;

	if (song_slug.length) {
		lyrics_search = 'json/music/songs/'+song_slug+'.json' ;
		song_slug = '' ;
		song_name = '' ;
	}
	else if (song_name.length) {
		var band_name = encodeURIComponent ($("#artist h2").html()) ;
		var song = encodeURIComponent (song_name) ;
		lyrics_search = "jsonsys/get-lyrics.php?a="+band_name+"&t="+song ;
	}
	else if (track_on.index() > -1) {
		var i = track_on.parent().index() ;
		var id = $("#track-list li:eq("+i+") span.id").html() ;
		var slug = $("#track-list li:eq("+i+") span.slug").html() ;

		if (slug.length) {
			lyrics_search = 'json/music/songs/'+slug+'.json' ;
		}	
		else if (id.length) {
			var query = $("#track-list li:eq("+i+") a").attr('title') ;
			var split = query.split(' | ') ;
			var artist = encodeURIComponent (split[0]) ;
			var song = encodeURIComponent (split[1]) ;
			lyrics_search = "jsonsys/get-lyrics.php?id="+id+"&a="+artist+"&t="+song ;
		}
	}
	else {
		// searchs lyrics based on youtube title
		var band_name = encodeURIComponent ($("#artist h2").html()) ;
		var yt_title = encodeURIComponent ($("#song h1").html()) ;
		song = trim (yt_title) ;
		lyrics_search = "jsonsys/get-lyrics.php?a="+band_name+"&t="+song ;
	}

	$.getJSON (lyrics_search, load_lyrics) ;

}

function load_lyrics (data) {
	if (data.slug) {
		$("#cifra span.load").removeClass('on') ;
		$("#cifra p").html (data.tx) ;
		$("#cifra h2").html (data.tt) ;
		$("#song h2").html (data.tt) ;
		$("#lyrics #btn-lyr-more").addClass('on') ;

		if (data.slug.length) {
			$("#track-list li:eq("+i+") span.slug").html(data.slug) ;
		}

		var tracks = ("#track-list li") ;
		for (var i=0 ; i<tracks.length ; i++) {
			var song_name = $("#track-list li:eq("+i+") a").attr('title') ;
			var this_song_name = data.ar + " | " + data.tt ;
			if (song_name == this_song_name)
				$("#track-list li:eq("+i+") span.slug").html(data.slug) ;
		}
	}	
	
	$("#lyrics span.box-source a").attr('href', data.src) ;
	$("#lyrics span.box-source a").html(data.src_name) ;

	$("#cifra span.load").removeClass('on') ;
}






function vdo_pause() {
	ytplayer.pauseVideo() ;
	$("#album-bar a.play-on").addClass('pause') ;
	$('#album-bar a.play-on').unbind('click');
	$("#album-bar a.play-on").removeClass('play-on') ;
//	$("#album-bar a.play-on").attr('id', 'pause') ;
	$("#album-bar a.pause").click (vdo_resume) ;
	$("#album-bar a.pause").addClass('on') ;
}

function vdo_resume() {
	ytplayer.playVideo() ;
	$("#album-bar a.pause").addClass('play-on') ;
	$('#album-bar a.pause').unbind('click');
	$("#album-bar a.pause").removeClass('on') ;
	$("#album-bar a.pause").removeClass('pause') ;
	$("#album-bar a.play-on").click (vdo_pause) ;
}

function vdo_stop() {
	ytplayer.stopVideo() ;
	// se estiver em play
	$("#album-bar a.play-on").addClass('play') ;
	$('#album-bar a.play-on').unbind('click');
	$("#album-bar a.play-on").removeClass('play-on')
	// se estiver paused
	$("#album-bar a.pause").addClass('play') ;
	$('#album-bar a.pause').unbind('click');
	$("#album-bar a.pause").removeClass('pause') ;

	$("#album-bar a.play").click (vdo_play) ;

	$("#track-list li:eq("+(play_album-1)+") a").removeClass('on') ;
	// caching do resultado da pesquisa
	$("#track-list li:eq("+(play_album-1)+") span.ytid").html (yt_video_id) ;
	play_album = 0 ;	
}

function vdo_next() {
	// caching do resultado da pesquisa
	$("#track-list li:eq("+(play_album-1)+") span.ytid").html (yt_video_id) ;
	
	var n = $("#track-list li").size() ;
	if (play_album < n) {
		play_album ++ ;
		vdo_play ($("#album-bar a.next")) ;
	}
	else
		play_album = 0 ;
}

function vdo_prev() {
	// caching do resultado da pesquisa
	$("#track-list li:eq("+(play_album-1)+") span.ytid").html (yt_video_id) ;
	
	var n = $("#track-list li").size() ;
	if (play_album) {
		play_album -- ;
		vdo_play ($("#album-bar a.prev")) ;
	}
	else
		play_album = n ;
}


function vdo_state_change (new_state) {
	if (new_state == 0) {
		vdo_next() ;
	}
	// user pauses in yt-button
	else if (new_state == 2) {
		$("#album-bar a.play-on").addClass('pause') ;
		$('#album-bar a.play-on').unbind('click');
		$("#album-bar a.play-on").removeClass('play-on') ;
	//	$("#album-bar a.play-on").attr('id', 'pause') ;
		$("#album-bar a.pause").click (vdo_resume) ;
		$("#album-bar a.pause").addClass('on') ;
	}
	// user plays in yt-button
	else if (new_state == 1) {
		$("#album-bar a.pause").addClass('play-on') ;
		$('#album-bar a.pause').unbind('click');
		$("#album-bar a.pause").removeClass('on') ;
		$("#album-bar a.pause").removeClass('pause') ;
		$("#album-bar a.play-on").click (vdo_pause) ;
	}
}


function vdo_list_next() {
	var n_vdos = yt_vdo_list.length ;
	
	if (yt_vdo_list_idx < n_vdos-1)
		yt_vdo_list_idx ++ ;
	
	var this_vdo_id = yt_vdo_list[yt_vdo_list_idx].media$group.yt$videoid.$t ;
	var this_vdo_title = yt_vdo_list[yt_vdo_list_idx].media$group.media$title.$t ;
	var this_vdo_desc = yt_vdo_list[yt_vdo_list_idx].media$group.media$description.$t ;
	var yt_url = "http://www.youtube.com/watch?v=" + this_vdo_id ;

	$("#song #vdo-metadata h1").text (this_vdo_title) ;
	$("#song #vdo-metadata p").text (this_vdo_desc) ;
	$(".song span.box-source a").attr('href', yt_url) ;
	$(".song span.ytid").text(this_vdo_id) ;
	
	ytplayer.loadVideoById (this_vdo_id);
}

function vdo_list_prev() {
	
}

function reset_artist() {
	// artist
	$("#artist span.load").addClass('on') ;
	$("#artist h2").html('&nbsp;') ;
	$("#artist img.mug").attr('src', 'css2/sp.png') ;
	$("#artist img.mug").addClass('blank') ;
	$("#artist span.tags").html('&nbsp;') ;
	$("#artist ul.discos li").remove() ;
	$("#artist p.bio-text").html('&nbsp;') ;
	$("ul.sims li").remove() ;
	play_album = 0 ;
}

function reset_album() {
	$("#album h2").html ('&nbsp;') ;
	$("#album p.cy").html('&nbsp;') ;
	$("#album span.load").addClass('on') ;
	$("#album img.cover").attr ('src', 'css2/sp.png') ;
	$("ul#track-list li").remove() ;


	play_album = 0 ;

	// se estiver em play
	$("#album-bar a.play-on").addClass('play') ;
	$('#album-bar a.play-on').unbind('click');
	$("#album-bar a.play-on").removeClass('play-on')
	// se estiver paused
	$("#album-bar a.pause").addClass('play') ;
	$('#album-bar a.pause').unbind('click');
	$("#album-bar a.pause").removeClass('pause') ;


	$('#album-bar a.play').unbind('click');
	$("#album-bar a.play").click (vdo_play) ;
	$("#album-bar a.next").click (vdo_next) ;
	$("#album-bar a.prev").click (vdo_prev) ;
}

function reset_song() {
	$("#song h2").html ("&nbsp;") ;
	$("#song span.load").addClass('on') ;
	$("#vdo-list ul li").remove() ;	
	
  	$("#fbshare span.check").addClass('load') ;
 	$("#fbshare span.load").removeClass('check') ;
	$("#fbshare span.load").removeClass('on') ;


  	$("#comments span.check").addClass('load') ;
 	$("#comments span.load").removeClass('check') ;
	$("#comments span.load").removeClass('on') ;


	$("#vdo-metadata h1").html('') ;
	$("#vdo-metadata p").html('') ;
}

function reset_lyrics() {
	$("#cifra h2").html('&nbsp;') ;
	$("#cifra p").html('&nbsp;') ;
	$("#cifra span.load").addClass('on') ;
	$("#lyrics #btn-more").removeClass('on') ;
}



function get_jsonp (url) {
	var script = document.createElement('script');
	script.type = "text/javascript" ;
	script.src = url ;
	document.body.appendChild(script) ;		
}

function btn_more() {
	var list = $(this).parent().attr('id') ;
	if (list == 'btn-discos-more')
		$("#disco ul.discos").removeClass('fold').addClass('open') ;
	else if (list == 'btn-bio-more')
		$("#bio p.bio-text").removeClass('fold').addClass('open') ;
	else if (list == 'btn-lyr-more')
		$("#cifra p").removeClass('fold').addClass('open') ;
	else if (list == 'btn-sim-more')
		$("#similar ul.sims").removeClass('fold').addClass('open') ;

	
	$("#"+ list +" a.more span").html('menos') ;
	$("#"+ list +" a.more").removeClass('more').addClass('less') ;
	$("#"+ list +" a").click(btn_less) ;
}

function btn_less() {
	var list = $(this).parent().attr('id') ;
	if (list == 'btn-discos-more')
		$("#disco ul.discos").removeClass('open').addClass('fold') ;
	else if (list == 'btn-bio-more')
		$("#bio p.bio-text").removeClass('open').addClass('fold') ;
	else if (list == 'btn-lyr-more')
		$("#cifra p").removeClass('open').addClass('fold') ;
	else if (list == 'btn-sim-more')
		$("#similar ul.sims").removeClass('open').addClass('fold') ;

	$("#"+ list +" a.less span").html('mais') ;
	$("#"+ list +" a.less").removeClass('less').addClass('more') ;
	$("#"+ list +" a").click(btn_more) ;
}

function is_num (sText) {
	var ValidChars = "0123456789.";
	var IsNumber=true;
	var Char;
 
	for (i = 0; i < sText.length && IsNumber == true; i++) { 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
		}
	}
	return IsNumber;
}

function br2nl( str ) {
	return str.replace(/<br(\s+)?\/?>/ig, "\n");
}

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}