var lastXmlDoc = null;   // le document XML de backend de last.fm.
var globalUserName;
var globalShort;


function lastDocumentLoaded () {
    var jukeboxDiv = document.getElementById('jukebox');
    var songTitle = '*coin coin*';
    var htmlRes; 

    if (lastXmlDoc == null) {
	htmlRes = "le jukebox est casse. last.fm est mort ou votre browser renacle du fion.";
    } else {
        var root = lastXmlDoc.lastChild;
        var track1 = root.getElementsByTagName ('track')[0];
	songTitle = getSongTitle (track1);
        if (songTitle == null) {
	    htmlRes = '<p>Le jukebox de ' + globalUserName + ' est eteint pour le moment</p>';
        } else {
            htmlRes = '<p>Le jukebox de ' + globalUserName + ' est en train de jouer <b>' + songTitle + '</b></p>';
        }
        if (root.getElementsByTagName ('track').length > 1) {
            htmlRes += "<p>mais auparavent, il y a eut :<br/>";
	    track1 = track1.nextSibling;
            while (track1 != null) {
	        if (track1.tagName  == 'track') {
		    songTitle = getSongTitle (track1);
		    htmlRes += songTitle+'<br/>';
                }
		track1 = track1.nextSibling ;
            }
	    htmlRes +="</p>";
        }
	
    }

    jukeboxDiv.innerHTML = htmlRes;

}

function loadLastFMDocument (username) {
    var url = "/last.php?username=" + username;
    if (document.implementation && document.implementation.createDocument) {       
	lastXmlDoc = document.implementation.createDocument("", "", null);
	lastXmlDoc.onload = lastDocumentLoaded;
    } else if (window.ActiveXObject) {
	lastXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        lastXmlDoc.async=false;
    } else {
	alert('Your browser can\'t handle this script');
	return NULL;
    }
    lastXmlDoc.load(url);

    lastDocumentLoaded (); // si qqun est en synchrone ...
}

    function textobj(objet) {
        var TextInObject = (objet.text) ? objet.text : (objet.textContent) ? objet.textContent : "";
        return TextInObject;
    }

function getSongTitle (trackNode) {
     try {
         var trackName = trackNode.getElementsByTagName ('name')[0];
         var trackArtist = trackNode.getElementsByTagName ('artist')[0];
	 var url = trackNode.getElementsByTagName ('url')[0];
         if (globalShort) {
	      var text = textobj (trackName);
 	      return text.link (textobj (url));		
         } else {
	      var text = textobj (trackArtist) +  ' - ' + textobj (trackName);
         
 	      return text.link (textobj (url));
         }
     } catch (error) {
         //gros caca ionside...   
        return null;
    }

}

function displayJukeBox (userName) {
    globalUserName = userName;
    globalShort = false;
    var lastXmlDoc = loadLastFMDocument (userName);
    // La suite sera asynchtone ....

}

function displayShortJukeBox (userName) {
    globalUserName = userName;
    globalShort = true;
    var lastXmlDoc = loadLastFMDocument (userName);
    // La suite sera asynchtone ....

}

