//TODO: Non č Threads-Safe
//Si occupa di allestire la chiamata e non ripetere le chiamate in attesa
function updateSong(){

	if (updatingSong == true){
		badtry++;
		if (badtry == 9) {
			showNetworkProblem(true);
			updatingSong = false;
		}
		return;
	}
	
	badtry = 0;
	updatingSong = true;
	
	var url = 'lastfm/getCurrentTrack.php?username=' + encodeURIComponent(username); 
 
 	var successo = function(transport) { 
	
						var retObj = transport.responseText.evalJSON(); 
						showNetworkProblem(false);
						showSong(retObj);										
						updatingSong = false;
						
					} 
					
	doQuery(url, successo);	

}

function showSong(objSong) {

	if (objSong.track == false) {
		if (curReady != ""){
			//La canzone potrebbe essere in scrobbling...diamo un polling in pių per sicurezza 
			curReady = "";
		} else {		
			//Nessuna canzone in esecuzione
			noSong();
		}
	} else {
		//Allora stai ascoltando qualcosa eh :P
		if (curArtist != objSong.artist) {
			curArtist = objSong.artist;
			curTrack = objSong.track;
			curReady = objSong.artist;  //Nei fatti basterebbe qualsiasi cosa differente dalla stringa vuota.
			curMilestones = Array();
			curRandoms = Array();
			lastPoint = null;
			images = 0;
			hideimages = 0;
			nextEnabled = false;
			prevEnabled = false;
			map.clearOverlays();
			$("preDownload").update("");
			clearImagesHolder();
			maxLat = maxLon = -999999;
			minLat = minLon = 999999;
			toggleWaitingMessage(true);
			getArtistMeta();
			getArtistTappa(1);
			getRandomImages(maxRandomImages);
		} else 
			if (curTrack != objSong.track){
				curTrack = objSong.track;
				curReady = curArtist; //flag scrobbling
				showArtistMeta(curArtistMeta);
			} else {
				//Stessa canzone, rimetto solo il flag per lo scrobbling
				curReady = curArtist;
			}
	}
	
	showSongs();
	
}

function noSong() {
	//Nessuna canzone in esecuzione
	curArtist = "";
	curTrack = "";
	curArtistMeta = "";
	clearImagesHolder();
}