// ************************************************************************************************
// *** AJAX FUNCTIONS TO ADD AND PARSE MEDIAS TO PLAYLIST
// ************************************************************************************************

//ajax medias url
//var mediasUrl = pathXmlUrl;
//var proxyUrl = "Proxy.aspx";

//Ajax manager
var mediasManager = new AjaxManager("mediasManager", false);

//adds media to playlist
function Get_RAIPlaylistPali(raiChannel,tipoConfigurazione,tipoDistribuzione,tipoPlaylist)
{
	//var url = raiUri + pathXmlUrl + raiChannel + ".xml";
	var url = raiUri + pathXmlWebTV + raiChannel + "^"+tipoConfigurazione+"^"+tipoDistribuzione+"^"+tipoPlaylist+",00.html";

	AjaxGet_RAIPlaylist(url);
}

//adds media to playlist
function Get_RAIPlaylistMedia(raiMedia,ObjectType,tipoConfigurazione,tipoDistribuzione,tipoPlaylist)
{
	var url = raiUri + pathXmlMedia + raiMedia + "^"+ObjectType+"^"+tipoConfigurazione+"^"+tipoDistribuzione+"^"+tipoPlaylist+",00.html";
	
	AjaxGet_RAIPlaylist(url);
}

//calls ajax url
function AjaxGet_RAIPlaylist(url)
{
	
	// Avoids loading before playlist is ready
	if(playlistRai)
	{
		mediasManager.Add(url, AjaxMedias_Parse, null, null, null, null, null);
	}
	else
	{
		window.setTimeout("AjaxGet_RAIPlaylist('" + url + "');",1);
	}
}

// Parses the return of the medias XML
function AjaxMedias_Parse()
{
	if(this.httpRequest.status == 200)
	{
		// XML loaded properly, parses it
		//Questo funziona solo con Firefox e Template Vignette settato come .jsp
		//dato che Vignette ha problemi a scachare i file .jsp abbiamo dovuto mettere .html
		//e quindi usare direttamente l'altro metodo
		//var xml = this.httpRequest.responseXML; 
			
		var	xml = this.tools.CreateXmlDocumentFromContent(this.httpRequest.responseText);
		
		// Gets the root node
		var root = this.tools.SelectSingleNode(xml,'playlist');
		
		var playlistNode = this.tools.SelectSingleNode(root, 'testata');
		
		var playlistType = this.tools.GetNodeValue(this.tools.SelectSingleNode(playlistNode,'tipoPlaylist'));
		playlistRai.setPlaylistType(playlistType);
		
		//parses playlist details
		AjaxMedias_PlaylistParse(playlistNode, this.tools);
		
		// Gets the list of medias from the XML
		var mediasList = this.tools.SelectSingleNode(xml,'playlist');
		mediasList = this.tools.SelectSingleNode(mediasList,'lista');
		mediasList = this.tools.SelectNodes(mediasList,'oggetto');
		
		// Runs through the medias performing the addition
		for(var i = 0; i < mediasList.length; i++)
		{
			var mi = AjaxMedias_MediaParse(xml, mediasList[i], this.tools);
			
			// Adds the item to the playlist
			playlistRai.appendItem(mi);
		}
	}
}

//parses each media node
function AjaxMedias_MediaParse(xml, node, tools)
{
	var mi = new MediaItem();
	mi.date = node.getAttribute("data");
	mi.contentId = node.getAttribute("idmedia");
	mi.imageUrl = node.getAttribute("pathimg");
	mi.title = tools.GetNodeValue(tools.SelectSingleNode(node,'titolo'));
	mi.headline = tools.GetNodeValue(tools.SelectSingleNode(node,'testolancio'));
	mi.description = tools.GetNodeValue(tools.SelectSingleNode(node,'descrizione'));
	mi.duration = tools.GetNodeValue(tools.SelectSingleNode(node,'durata'));
	mi.setUrl(0, tools.GetNodeValue(tools.SelectSingleNode(node,'link')));

	// Player's config controls by media
	mi.playerConfigControls = tools.GetNodeValue(tools.SelectSingleNode(node,'tipoConfigurazione_Player'));
	
	// MediaType	
	var tipoMedia = tools.GetNodeValue(tools.SelectSingleNode(node,'tipoMedia'));
	var mediaType = new MediaType();

	switch(parseInt(tipoMedia)) {
		case 1: 
			mi.type = mediaType.WindowsMedia;
			break;
		case 2: 
			mi.type = mediaType.Real;
			break;
		case 3:
			mi.type = mediaType.Quicktime;
			break;
		case 4: 
			mi.type = mediaType.Flash;
			break;
	}
	
	return(mi);
}

//parses playlist details
function AjaxMedias_PlaylistParse(node, tools)
{
	playlistRai.title = tools.GetNodeValue(tools.SelectSingleNode(node,'titolo'));
	playlistRai.description = tools.GetNodeValue(tools.SelectSingleNode(node,'descrizione'));
	playlistRai.logo = tools.GetNodeValue(tools.SelectSingleNode(node,'logo'));
}