/*
SPEVision Web Player Release 2.7 - Application functions script ("application.js")
Author: Enrico Griso
Company: SPEsperia
Version: 2.7.1
Date of release: 22/08/2003
*/

/*
This file contains the code of the functions used by the application.
*/

//"ExportedSequence" reader object
function XMLObj(xmlFile)
	{
	oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	oXmlDoc.async = false;
	oXmlDoc.load(xmlFile);
	if(oXmlDoc.parseError.errorCode != 0)
		{
		alert("errorCode: " + oXmlDoc.parseError.errorCode + "\n" +
	          "filepos: " + oXmlDoc.parseError.filepos + "\n" +
	          "line: " + oXmlDoc.parseError.line + "\n" +
	          "linepos: " + oXmlDoc.parseError.linepos + "\n" +
	          "reason: " + oXmlDoc.parseError.reason + "\n" +
	          "srcText: " + oXmlDoc.parseError.srcText + "\n" +
	          "url: " + oXmlDoc.parseError.url);
		}
	else
		{
		return oXmlDoc;
		}		
	}

//"Playlist" reader object	
function WVXObj(playlistFile)
	{
	oWvxDoc = new ActiveXObject("Microsoft.XMLDOM");
	oWvxDoc.async = false;
	oWvxDoc.load(playlistFile);
	if(oWvxDoc.parseError.errorCode != 0)
		{
		alert("errorCode: " + oWvxDoc.parseError.errorCode + "\n" +
	          "filepos: " + oWvxDoc.parseError.filepos + "\n" +
	          "line: " + oWvxDoc.parseError.line + "\n" +
	          "linepos: " + oWvxDoc.parseError.linepos + "\n" +
	          "reason: " + oWvxDoc.parseError.reason + "\n" +
	          "srcText: " + oWvxDoc.parseError.srcText + "\n" +
	          "url: " + oWvxDoc.parseError.url);
		}
	}
	
//Playlist creation
function CreatePlaylist()
	{
	var oPlaylist = oWvxDoc.documentElement.selectSingleNode("//asx");
	var oClip = oPlaylist.getElementsByTagName("entry");
	var nTempClipId;
	var oTempClip;
	var sTempClipNameValue;
	var sTempClipNameSplitted;
	var sTempClipCapTitleId = "";
	var sTempClipDuration;
	var sTempClipDurationValue;
	var nClipsCount;
	for(nClipsCount = 0;nClipsCount < oClip.length;nClipsCount ++)
		{
		nTempClipId = nClipsCount;
		oTempClip = oClip[nClipsCount].getElementsByTagName("ref");
		sTempClipNameValue = oTempClip[0].getAttribute("href");
		sTempClipNameSplitted = sTempClipNameValue.split("_");
		var nTempClipNameSplittedCounter;
		for(nTempClipNameSplittedCounter = 0;nTempClipNameSplittedCounter < sTempClipNameSplitted.length;nTempClipNameSplittedCounter ++)
			{
			if(sTempClipNameSplitted[nTempClipNameSplittedCounter] == "tendina" || sTempClipNameSplitted[nTempClipNameSplittedCounter] == "capitolo")
				{
				sTempClipCapTitleId = sTempClipNameSplitted[nTempClipNameSplittedCounter + 1];
				if(sTempClipCapTitleId.substring(0,1) == "0")
					{
					sTempClipCapTitleId = sTempClipCapTitleId.substring(1,2);
					}
				}
			}
		sTempClipDuration = oClip[nClipsCount].getElementsByTagName("duration");
		sTempClipDurationValue = sTempClipDuration[0].getAttribute("value");
		if(parseInt(sTempClipCapTitleId - 1) > 0)
			{
			sTempClipCapTitleId = parseInt(sTempClipCapTitleId - 1);
			}
		else
			{
			sTempClipCapTitleId = 0;
			}
		aClips[nClipsCount] = new clip(nTempClipId,sTempClipCapTitleId,sTempClipDurationValue);
		}
	}
	
//Refreshes media infos
function LoadVideoInfo()
	{
	var oTitleGlobal = oXmlDoc.documentElement.selectSingleNode("//title");
	document.getElementById("TitoloLezioneDiv").innerHTML = oTitleGlobal.text;			
	var oTime = oXmlDoc.documentElement.selectSingleNode("//duration");
	nTotalTime = Math.round(oTime.text * 1000);
	var nTempCurrentClip;
	var nClipsCount;	
	switch(nPlayerMajVerNumber)
		{
		case "6":
			nTempCurrentClip = Player.GetCurrentEntry() - 1;
			break;
		default:
			for(nClipsCount = 0;nClipsCount < aClips.length;nClipsCount ++)
				{
				if(Player.currentMedia.isIdentical(Player.currentPlaylist.item(nClipsCount)))
					{
					nTempCurrentClip = nClipsCount;
					break;
					}
				}
			break;
		}
	var nTempTime = new Number();
	for(nClipsCount = 0;nClipsCount < aClips.length;nClipsCount ++)
		{
		if(aClips[nClipsCount].id == nTempCurrentClip)
			{
			var nPreviousClips;
			for(nPreviousClips = 0;nPreviousClips < nClipsCount;nPreviousClips ++)
				{
				nTempTime = nTempTime + Math.round(aClips[nPreviousClips].duration * 1000);
				}
			switch(nPlayerMajVerNumber)
				{
				case "6":
					nTempTime = nTempTime + Math.round(Player.CurrentPosition * 1000);
					break;
				default:
					nTempTime = nTempTime + Math.round(Player.controls.currentPosition * 1000);
					break;
				}
			document.getElementById("counter").innerHTML = ConvertMilliseconds(nTempTime) + " / " + ConvertMilliseconds(nTotalTime);				
			}
		}
	switch(nPlayerMajVerNumber)
		{
		case "6":
			if(bAppStarted == true)
				{
				document.getElementById("bandwidth").innerHTML = Math.round(Player.Bandwidth / 1024) + "k";
				}
			break;
		default:
			if(bAppStarted == true)
				{				
				document.getElementById("bandwidth").innerHTML = Math.round(Player.network.Bandwidth / 1024) + "k ver.";
				}							
			break;
		}
	var LoadVideoInfoTimer = setTimeout("LoadVideoInfo()",1000);
	}
	
//Milliseconds to string
function ConvertMilliseconds(ms)
	{
	var dateObj = new Date(0,0,0,0,0,0,ms);
	var hours = dateObj.getHours();
	hours = hours.toString();
	if(hours.length < 2)
		{
		hours = "0" + hours;
		}
	var minutes = dateObj.getMinutes();
	minutes = minutes.toString();
	if(minutes.length < 2)
		{
		minutes = "0" + minutes;
		}
	var seconds = dateObj.getSeconds();
	seconds = seconds.toString();
	if(seconds.length < 2)
		{
		seconds = "0" + seconds;
		}
	var timeObj = hours + ":" + minutes + ":" + seconds;
	return (timeObj);
	}
	
//items collection creation
function CreateElementsArray()
	{
	var tempElementId;
	var tempElementType;
	var tempElementSource;
	var tempElementDestination;	
	var oContent = oXmlDoc.documentElement.selectSingleNode("//content");
	var oElements = oContent.childNodes;
	var elementsCount;
	for(elementsCount = 0;elementsCount < oElements.length;elementsCount ++)
		{
		tempElementId = oElements[elementsCount].getAttribute("id");
		tempElementType = oElements[elementsCount].getAttribute("type");
		tempElementSource = oElements[elementsCount].text;
		tempElementDestination = oElements[elementsCount].getAttribute("dest");
		aElements[elementsCount] = new element(tempElementId,tempElementType,tempElementSource,tempElementDestination);
		//alert("Nuovo Elemento creato: \n" + "ID: " + aElements[elementsCount].id + "\n" + "Tipo: " + aElements[elementsCount].type + "\n"+ "Contenuto: " + aElements[elementsCount].source + "\n"+ "Destinazione: " + aElements[elementsCount].destination + "\n");
		}	
	}
	
//events collection creation
function CreateEventsArray()
	{
	var tempEventId;
	var tempElementsList = new Array();
	var oSequence = oXmlDoc.documentElement.selectSingleNode("//sequence");
	var oEvents = oSequence.childNodes;
	var oElements;
	var itemsCount;
	var itemsCount2;
	for(itemsCount = 0;itemsCount < oEvents.length;itemsCount ++)
		{
		tempEventId = oEvents[itemsCount].getAttribute("id");
		oElements = oEvents[itemsCount].childNodes;
		for(itemsCount2 = 0;itemsCount2 < oElements.length;itemsCount2 ++)
			{
			tempElementsList[itemsCount2] = oElements[itemsCount2].text;
			}
		aEvents[itemsCount] = new playerEvent(tempEventId,tempElementsList.toString());
		//alert("ID Evento rilevato: " + aEvents[itemsCount].id + "\n" +  "Elementi chiamati: " + "\n" + aEvents[itemsCount].elements);
		//tempElementsList.splice(0,tempElementsList.length);
		tempElementsList = null;
		tempElementsList = new Array();
		}
	}
	
//images collection creation	
function PreloadImages()
	{
	aSlides[0] = new Image();
	aSlides[0].src = "images/caricamento.gif";
	var elementsCounter;
	var slidesCounter;
	slidesCounter = 0;
	for(elementsCounter = 0; elementsCounter <= aElements.length;elementsCounter ++)
		{
		try
			{
			if(aElements[elementsCounter].type == 1)
				{
				aSlides[slidesCounter] = new Image();
				aSlides[slidesCounter].src = "slide/" + aElements[elementsCounter].source;
				slidesCounter = slidesCounter + 1;
				}
			}
		catch(e)
			{
			//alert(e.number + " - " + e.description);
			}
		}
	return;
	}

//Test on images preload	
function CheckPreload()
	{
	var SlidesCounter;
	for(SlidesCounter = 0;SlidesCounter < aSlides.length;SlidesCounter ++)
		{
		if(aSlides[SlidesCounter].complete == 0)
			{
			var timer = setTimeout("CheckPreload();", 5000);
			return;
			}
		}
	document.getElementById("caricamento").style.visibility = "hidden";
	switch(nPlayerMajVerNumber)
		{
		case "6":
			Player.Play();
			break;
		default:
			Player.controls.Play();
			break;									
		}
	bAppStarted = true;
	return;
	}

//Manages additional contents changes
function SetContent(newContent)
	{
	if(bAppStarted == true)
		{
		var oContentIframe = document.getElementById("contenuti");
		switch (newContent)
			{
			case "Biografia" :
				oContentIframe.src = "bio.htm";
				oContentIframe.style.visibility = "visible";
				closeContentLink.innerHTML = "<img id=\"closeContent\" src=\"images/img07B.gif\" width=\"18\" height=\"16\" border=\"0\" onmouseover=\"this.src = 'images/img07C.gif';this.style.cursor = 'hand'\" onmouseout=\"this.src = 'images/img07B.gif'\" alt=\"Chiudi\">";				
				TitoloCapitoloDiv.style.visibility = "hidden";
				slide.style.visibility = "hidden";
				break;
			case "Link" :
				oContentIframe.src = "link.htm";
				oContentIframe.style.visibility = "visible";
				closeContentLink.innerHTML = "<img id=\"closeContent\" src=\"images/img07B.gif\" width=\"18\" height=\"16\" border=\"0\" onmouseover=\"this.src = 'images/img07C.gif';this.style.cursor = 'hand'\" onmouseout=\"this.src = 'images/img07B.gif'\" alt=\"Chiudi\">";
				TitoloCapitoloDiv.style.visibility = "hidden";
				slide.style.visibility = "hidden";
				break;
			case "Approfondimenti" :
				oContentIframe.src = "appro.htm";
				oContentIframe.style.visibility = "visible";
				closeContentLink.innerHTML = "<img id=\"closeContent\" src=\"images/img07B.gif\" width=\"18\" height=\"16\" border=\"0\" onmouseover=\"this.src = 'images/img07C.gif';this.style.cursor = 'hand'\" onmouseout=\"this.src = 'images/img07B.gif'\" alt=\"Chiudi\">";
				TitoloCapitoloDiv.style.visibility = "hidden";
				slide.style.visibility = "hidden";
				break;
			case "Close" :
				oContentIframe.src = "";
				oContentIframe.style.visibility = "hidden";
				closeContentLink.innerHTML = "<img id=\"closeContent\" src=\"images/img07A.gif\" width=\"18\" height=\"16\" border=\"0\" onmouseover=\"this.style.cursor = 'default'\" alt=\"\">";
				TitoloCapitoloDiv.style.visibility = "visible";
				slide.style.visibility = "visible";
			default :
				//
			}
		}
	}

//Manages index contents changes
function SetIndex(newContent)
	{
	if(bAppStarted == true)
		{
		var oIndexIframe = document.getElementById("capitoli");		
		switch (newContent)
			{
			case "Index" :
				oIndexIframe.src = "cap.htm";			
				break;
			case "Search" :
				oIndexIframe.src = "search.htm";
				break;
			default:
				//
			}
		}
	}

function StreamEvent(eventId)
	{
	var eventsCount;
	var elementsCount;
	var tempElementsArray;
	var eventElements;
	for(eventsCount = 0;eventsCount < aEvents.length;eventsCount ++)
		{
		if(aEvents[eventsCount].id == eventId)
			{
			//alert("ID Evento salvato: " + aEvents[eventsCount].id);
			//alert(aEvents[eventsCount].id + " - " + aEvents[eventsCount].elements);
			tempElementsArray = aEvents[eventsCount].elements;
			eventElements = tempElementsArray.split(",");
			for(elementsCount = 0;elementsCount < eventElements.length;elementsCount ++)
				{
				//alert("ID Elemento appartenente all'Evento: " + eventElements[elementsCount]);
				ActivateEvent(eventElements[elementsCount]);				
				}
			}
		}
	}

function ScriptEvent(eventId)
	{
	var eventsCount;
	var elementsCount;
	var tempElementsArray;
	var eventElements;
	for(eventsCount = 0;eventsCount < aEvents.length;eventsCount ++)
		{
		if(aEvents[eventsCount].id == eventId)
			{
			//alert("ID Evento salvato: " + aEvents[eventsCount].id);
			//alert(aEvents[eventsCount].id + " - " + aEvents[eventsCount].elements);
			tempElementsArray = aEvents[eventsCount].elements;
			eventElements = tempElementsArray.split(",");
			for(elementsCount = 0;elementsCount < eventElements.length;elementsCount ++)
				{
				//alert("ID Elemento appartenente all'Evento: " + eventElements[elementsCount]);
				ActivateEvent(eventElements[elementsCount]);				
				}
			}
		}
	}

function ActivateEvent(element)
	{
	//alert(element);
	var elementsCount;
	for(elementsCount = 0;elementsCount < aElements.length;elementsCount ++)
		{
		if(aElements[elementsCount].id == element)
			{
			//alert("Tipo elemento: " + aElements[elementsCount].type + "\n" + "Destinazione elemento: " + aElements[elementsCount].destination + "\n" + "Contenuto elemento: " + aElements[elementsCount].source + "\n");
			switch (aElements[elementsCount].destination)
				{
				case "1":
					TitoloCapitoloDiv.innerHTML = aElements[elementsCount].source;
					break;
				case "2":
					RelatoreDiv.innerHTML = aElements[elementsCount].source;
					break;
				case "3":
					slide.innerHTML = "<img src=\"slide/" + aElements[elementsCount].source + "\">";
					break;
				default:
					//
				}
			}
		}
	}
	
function UpdateLayout()
	{
	RelatoreDiv.innerHTML = "";
	TitoloCapitoloDiv.innerHTML = "";
	slide.innerHTML = "";
	}
