///////////////////////////////////////////////////////////////////////////////////////
//The purpose of this script file is to contain the internal working of the cbox player
//Winnov - J DOMOTO
///////////////////////////////////////////////////////////////////////////////////////



//BEGIN VARS
var g_RecXmlLoaded=false;
var g_RecXml=null;
var g_CurrentPosition=0;
var g_MostAdvancedPosition=0;
var g_Completed=false;
var g_CurrentEvent=0;
var g_CurrentView=0;
var g_Events;
var g_IsUnix;
var g_IsWindows;
var g_IsMac;
var g_IsIE;
var g_IsFireFox;
var g_IsNetscape;
var g_IsSafari;
//END VARS

///////////////////////////////////////////////////////////////////////////////////////

//BEGIN CORE FUNCTIONS

function CbxCore_Initialize()
{
	var platform = navigator["userAgent"].toLowerCase(); 
	g_IsUnix = platform.indexOf("x11") != -1; 
	g_IsWindows = platform.indexOf("win") != -1; 
	g_IsMac = platform.indexOf("mac") != -1; 

	var browser = navigator["userAgent"].toLowerCase(); 
	g_IsIE = browser.indexOf("msie") != -1; 
	g_IsFireFox = browser.indexOf("firefox") != -1; 
	g_IsNetscape = browser.indexOf("netscape") != -1; 
	g_IsSafari = browser.indexOf("safari") != -1; 

	g_Events=g_RecXml.getElementsByTagName("RecordingEvent");


}


function CbxCore_IsIE()
{
	if(window.ActiveXObject)
		return true;
	else
	return false;
}

function CbxCore_GetXmlNodeText(node)
{
	return node.firstChild.nodeValue;
}



function CbxCore_LoadRecordingXml()
{
	//ie firefox	
	if(navigator.appName)
	{
		if (window.ActiveXObject)
		{
			g_RecXml = new ActiveXObject("Microsoft.XMLDOM");
			g_RecXml.onreadystatechange = function () {
				if (g_RecXml.readyState == 4) CbxCore_RecordingXmlLoaded()
			};
			g_RecXml.load("cbx_recording.xml");
		}
		else if( window.XMLHttpRequest ) 
		{
			var xmlHttpReq;
			xmlHttpReq = new XMLHttpRequest();
			xmlHttpReq.onreadystatechange = function(){CbxCore_HandleLoadRecordingXml(xmlHttpReq.responseXML);};
			
			xmlHttpReq.open("GET", "cbx_recording.xml",true);

			xmlHttpReq.send(null);
		}
		else if (document.implementation && document.implementation.createDocument)
		{	
			var xmlDocHttp;
			xmlDocHttp = document.implementation.createDocument("", "", null);
			xmlDocHttp.async=false; 
			var loaded = xmlDocHttp.load("cbx_recording.xml"); 
			if (loaded)
			{
				g_RecXml=xmlDocHttp;
				CbxCore_RecordingXmlLoaded();
			}
		}
		else
		{
			alert('Your browser can\'t handle this script');
			return;
		}
	}
	//assume mac
	else 
	{
		if (document.implementation && document.implementation.createDocument)
		{	
			var xmlDocHttp;
			xmlDocHttp = document.implementation.createDocument("", "", null);
			xmlDocHttp.async=false; 
			var loaded = xmlDocHttp.load("cbx_recording.xml"); 
			if (loaded)
			{
				g_RecXml=xmlDocHttp;
				CbxCore_RecordingXmlLoaded();
			}
		}
		else if( window.XMLHttpRequest ) 
		{
			var xmlHttpReq;
			xmlHttpReq = new XMLHttpRequest();
			xmlHttpReq.onreadystatechange = function(){CbxCore_HandleLoadRecordingXml(xmlHttpReq.responseXML);};
			xmlHttpReq.open("GET", "cbx_recording.xml",true);
			xmlHttpReq.send(null);
		}
		else if (window.ActiveXObject)
		{
			g_RecXml = new ActiveXObject("Microsoft.XMLDOM");
			g_RecXml.onreadystatechange = function () {
				if (g_RecXml.readyState == 4) CbxCore_RecordingXmlLoaded()
			};
			g_RecXml.load("cbx_recording.xml");
		}
		else
		{
			alert('Your browser can\'t handle this script');
			return;
		}
	}

}

function CbxCore_HandleLoadRecordingXml(xml)
{
	if(xml)
	{
		g_RecXml=xml;
		CbxCore_RecordingXmlLoaded(); 
	}


}

function CbxCore_RecordingXmlLoaded()
{
	g_RecXmlLoaded=true;
	
}

function CbxCore_IsRecordingXmlLoaded()
{
	return g_RecXmlLoaded;
}

function CbxCore_GetRecordingXml()
{
	return g_RecXml;
}

function CbxCore_GetMode()
{
	return CbxCore_GetXmlNodeText(g_RecXml.getElementsByTagName("Mode")[0]);
}

function CbxCore_GetVersion()
{
	return CbxCore_GetXmlNodeText(g_RecXml.getElementsByTagName("Version")[0]);
}

function CbxCore_GetResourceCount()
{
	return CbxCore_GetXmlNodeText(g_RecXml.getElementsByTagName("ResourceCount")[0]);
}

function CbxCore_GetResourceAttribute(rIndex,rAttributeName)
{
	var rscs;
	rscs=g_RecXml.getElementsByTagName("Resources")[0];
	
	return CbxCore_GetXmlNodeText(rscs.getElementsByTagName(rAttributeName)[rIndex]);
}

function CbxCore_GetViewCount() 
{
	return CbxCore_GetXmlNodeText(g_RecXml.getElementsByTagName("ViewCount")[0]);
}

function CbxCore_GetViewAttribute(viewIndex,viewAttributeName)
{
	var vs;
	vs=g_RecXml.getElementsByTagName("Views")[0];
	
	return CbxCore_GetXmlNodeText(vs.getElementsByTagName(viewAttributeName)[viewIndex]);
}

function CbxCore_GetMetaDataAttribute(metaDataAttributeName)
{
	try
	{
		return CbxCore_GetXmlNodeText(g_RecXml.getElementsByTagName(metaDataAttributeName)[0]);
	}
	catch(ex)
	{
		return "";
	}
}

function CbxCore_GetPassword()
{
	try
	{
		return CbxCore_GetXmlNodeText(g_RecXml.getElementsByTagName("Password")[0]);
	}
	catch(ex)
	{
		return "";
	}
}

function CbxCore_HasQuestionAndAnswer()
{
	return CbxCore_GetXmlNodeText(g_RecXml.getElementsByTagName("HasQuestionAndAnswer")[0]);
}

function CbxCore_GetQuestionAndAnswerUrl()
{
	return CbxCore_GetXmlNodeText(g_RecXml.getElementsByTagName("QuestionAndAnswerUrl")[0]);
}


function CbxCore_HasPolling()
{
	return CbxCore_GetXmlNodeText(g_RecXml.getElementsByTagName("HasPolling")[0]);
}

function CbxCore_AutoChangeView()
{
	return CbxCore_GetXmlNodeText(g_RecXml.getElementsByTagName("AutoChangeView")[0]);
}

function CbxCore_ShowTranscript()
{
	return CbxCore_GetXmlNodeText(g_RecXml.getElementsByTagName("ShowTranscript")[0]);
}

function CbxCore_ShowChapters()
{
	return CbxCore_GetXmlNodeText(g_RecXml.getElementsByTagName("ShowChapters")[0]);
}

function CbxCore_ShowResources()
{
	return CbxCore_GetXmlNodeText(g_RecXml.getElementsByTagName("ShowResources")[0]);
}

function CbxCore_GetPollingUrl()
{
	return CbxCore_GetXmlNodeText(g_RecXml.getElementsByTagName("PollingUrl")[0]);
}

function CbxCore_GetEventCount()
{
	return g_Events.length;
}

function CbxCore_GetEventAttribute(eventIndex,eventAttributeName)
{
	return CbxCore_GetXmlNodeText(g_Events.item(eventIndex).getElementsByTagName(eventAttributeName)[0]);
}

function CbxCore_GetNextImageName(eventIndex)
{	
	try
	{
	for(i=eventIndex+1;i<CbxCore_GetEventCount();i++)
	{
		if(CbxCore_GetEventAttribute(i,"Type")=="image")
			return CbxCore_GetEventAttribute(i,"Parameter");	
	}	
	return "";
	}
	catch(ex)
	{
	return "";
	}
}

function CbxCore_DoSearch(searchText)
{
	//look at searchable text of events
	var returnHtml;
	returnHtml="<br>";
	if(searchText!="")
	{
		if(CbxCore_GetEventCount()!=0)
		{
		for(i=0;i<CbxCore_GetEventCount();i++)
		{
			var eventSearchableText="";
			var eventOriginalSearchText="";
			var eventTime="";
			var eventTimeText="";
			var eventType="N/A";
			var eventTitle="N/A";

			try
			{
			eventOriginalSearchText=CbxCore_GetEventAttribute(i,"SearchableText");
			
			searchText=searchText.toLowerCase();
			eventSearchableText=eventOriginalSearchText.toLowerCase();
			if(!(eventSearchableText.indexOf(searchText)==-1))
			{
				var temp;
				eventType=CbxCore_GetEventAttribute(i,"Type");
				try
				{
				eventTitle=CbxCore_GetEventAttribute(i,"Title");
				}
				catch(ex)
				{

				}
				eventTime=CbxCore_GetEventAttribute(i,"TimeInSeconds");
				eventTimeText=CbxCore_GetEventAttribute(i,"TimeAsString");
				if(eventType=="image")
				{
					var eventParam;
					eventParam=CbxCore_GetEventAttribute(i,"Parameter");
					temp='<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0"><tr width="100%"><td valign="top"><input type="button" value="View" onclick="ShowPlayer('+eventTime+');"><br><br><b>Time:</b> '+eventTimeText+'<br><b>Type:</b> '+eventType+'</td><td valign="top"></td><td valign="top" align="right"><span onclick="ShowPlayer('+eventTime+');"><img src="'+eventParam+'_thumb.JPG"></span></td></tr><tr width="100%"><td colspan="3" width="100%"><b>Search Text:</b><br>'+eventOriginalSearchText+'</td></tr></table><br><hr><br>';
				}
				else
				{
					temp='<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0"><tr width="100%"><td valign="top"><span onclick="ShowPlayer('+eventTime+');"><a href="#">View</a></span><br><br><b>Time:</b> '+eventTimeText+'<br><b>Type:</b> '+eventType+'</td><td valign="top"></td><td valign="top" align="right"></td></tr><tr width="100%"><td colspan="3" width="100%"><b>Search Text:</b><br>'+eventOriginalSearchText+'</td></tr></table><br><hr><br>';
				}		
				returnHtml=returnHtml+temp;

			}

			}
			catch(ex)
			{

			}			

		}
		}
	}
	if(returnHtml=="<br>")
		returnHtml="No matches."
		
	return returnHtml;
}

function CbxCore_ShowImageInWindow(img)
{
window.open(img,"largeimage","width=900,height=700,status=yes,toolbar=no,menuMainBar=no,location=no,scrollbars=yes,resizable=yes");

}


function CbxCore_ShowUrlInWindow(url)
{
window.open(url,"url","width=900,height=700,status=yes,toolbar=no,menuMainBar=no,location=no,scrollbars=yes,resizable=yes");

}

function CbxCore_BuildMediaPlayerHtml(viewIndex,startPosition)
{
	var mediaUrl;
	var mediaBaseUrl;
	mediaUrl=CbxCore_GetXmlNodeText(g_RecXml.getElementsByTagName("FileName")[viewIndex]);
	mediaBaseUrl=window.location.href;
	mediaBaseUrl=mediaBaseUrl.replace("player.htm","");
mediaBaseUrl=mediaBaseUrl.replace("player.HTM#","");
mediaBaseUrl=mediaBaseUrl.replace("PLAYER.HTM#","");
mediaBaseUrl=mediaBaseUrl.replace("player.HTM","");
mediaBaseUrl=mediaBaseUrl.replace("PLAYER.HTM","");


	
	var playerHtml="";
	if(g_IsIE)
	{
		playerHtml="<OBJECT id='MediaPlayer' width='100%' height='100%' CLASSID='CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6' type='application/x-oleobject'><PARAM NAME='autoStart' VALUE'='true'><PARAM NAME='URL' VALUE='" + mediaUrl + "'><PARAM name='invokeURLs' value='false'><PARAM name='defaultFrame' value='wmframe'><PARAM name='uiMode' value='full'><PARAM name='currentPosition' value='" +startPosition+ "'><PARAM name='windowlessVideo' value='false'></OBJECT>";
	}
	else if(g_IsFireFox)
	{
		playerHtml="<OBJECT id='MediaPlayer' width='100%' height='100%' type='video/x-ms-wmv' data='" + mediaUrl + "'><PARAM NAME='autoStart' VALUE'='true'><PARAM NAME='src' VALUE='" + mediaUrl + "'><PARAM name='invokeURLs' value='false'><PARAM name='defaultFrame' value='wmframe'><PARAM name='uiMode' value='full'><PARAM name='currentPosition' value='" +startPosition+ "'><PARAM name='windowlessVideo' value='false'></OBJECT>";
	}
	else
	{
		playerHtml="<EMBED TYPE='application/x-mplayer2' SRC='" + mediaUrl + "' BASEURL='" + mediaBaseUrl + "' AUTOSIZE=1 ENABLEPOSITIONCONTROLS=1 CURRENTPOSITION="+startPosition+" RATE=1 ENABLECONTEXTMENU=1 ALLOWCHANGEDISPLAYSIZE=0 DEFAULTFRAME='wmframe' INVOKEURLS=1 SHOWAUDIOCONTROLS=1 SHOWCAPTIONING=0 SHOWCONTROLS=1 SHOWDISPLAY=0 SHOWGOTOBAR=0 SHOWPOSITIONCONTROLS=0 SHOWSTATUSBAR=1 SHOWTRACKER=1 NAME='MediaPlayer' TRANSPARENTATSTART=0 WIDTH=100% HEIGHT=100%></EMBED>";
	}	
	g_CurrentView=viewIndex;
	return playerHtml;
}

function CbxCore_BuildMediaPlayerHtmlFull(viewIndex,startPosition)
{
	var mediaUrl;
	var mediaBaseUrl;
	mediaUrl=CbxCore_GetXmlNodeText(g_RecXml.getElementsByTagName("FileName")[viewIndex]);
	mediaBaseUrl=window.location.href;
	mediaBaseUrl=mediaBaseUrl.replace("player.htm","");
mediaBaseUrl=mediaBaseUrl.replace("player.HTM#","");
mediaBaseUrl=mediaBaseUrl.replace("PLAYER.HTM#","");
mediaBaseUrl=mediaBaseUrl.replace("player.HTM","");
mediaBaseUrl=mediaBaseUrl.replace("PLAYER.HTM","");

	var playerHtml="";





	
	if(CbxCore_IsIE())
	{
		playerHtml="<OBJECT id='MediaPlayer' width='100%' height='100%' CLASSID='CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6' type='application/x-oleobject'><PARAM NAME='autoStart' VALUE'='true'><PARAM NAME='URL' VALUE='" + mediaUrl + "'><PARAM name='invokeURLs' value='false'><PARAM name='defaultFrame' value='wmframe'><PARAM name='uiMode' value='full'><PARAM name='currentPosition' value='" +startPosition+ "'><PARAM name='windowlessVideo' value='false'><PARAM name='fullScreen' value='true'></OBJECT>";
		//playerHtml="<EMBED TYPE='application/x-mplayer2' SRC='" + mediaUrl + "' BASEURL='" + mediaBaseUrl + "' STRETCHTOFIT=-1 ENABLEPOSITIONCONTROLS=1 CURRENTPOSITION="+startPosition+" RATE=1 ENABLECONTEXTMENU=1 ALLOWCHANGEDISPLAYSIZE=0 DEFAULTFRAME='wmframe' INVOKEURLS=0 SHOWAUDIOCONTROLS=1 SHOWCAPTIONING=0 SHOWCONTROLS=1 SHOWDISPLAY=0 SHOWGOTOBAR=0 SHOWPOSITIONCONTROLS=0 SHOWSTATUSBAR=1 SHOWTRACKER=1 NAME='MediaPlayer' TRANSPARENTATSTART=0 WIDTH=100% HEIGHT=100%></EMBED>";
	}
	else
	{
		playerHtml="<EMBED TYPE='application/x-mplayer2' SRC='" + mediaUrl + "' BASEURL='" + mediaBaseUrl + "' AUTOSIZE=1 ENABLEPOSITIONCONTROLS=1 CURRENTPOSITION="+startPosition+" RATE=1 ENABLECONTEXTMENU=1 ALLOWCHANGEDISPLAYSIZE=0 DEFAULTFRAME='wmframe' INVOKEURLS=1 SHOWAUDIOCONTROLS=1 SHOWCAPTIONING=0 SHOWCONTROLS=1 SHOWDISPLAY=0 SHOWGOTOBAR=0 SHOWPOSITIONCONTROLS=0 SHOWSTATUSBAR=1 SHOWTRACKER=1 NAME='MediaPlayer' TRANSPARENTATSTART=0 WIDTH=100% HEIGHT=100%></EMBED>";

	}	


	g_CurrentView=viewIndex;
	return playerHtml;
}

function CbxCore_CurrentView()
{
	return g_CurrentView;
}


function CbxCore_GetThumbnailGroupCount()
{
	var groupCnt;
	groupCnt=0;
	
	var thmbCnt;
	thmbCnt=0;
	if(CbxCore_GetEventCount()>0)
	{
		for(i=0;i<CbxCore_GetEventCount();i++)
		{
			
			var eventType="N/A";
			eventType=CbxCore_GetEventAttribute(i,"Type");
			
			if(eventType=="image")
			{
				thmbCnt++;	
			}	
		
			
		}
	}
	
	groupCnt=Math.floor(thmbCnt/9)+1;
	return groupCnt;
}

function CbxCore_GetThumbnailGroupHtml(groupIndex)
{
	var groupHtml;
	groupHtml="";

	var thmbCnt;
	thmbCnt=0;
	
	if(CbxCore_GetEventCount()>0)
	{
		for(i=0;i<CbxCore_GetEventCount();i++)
		{
			var eventTime="";
			var eventTimeText="";
			var eventType="N/A";
		
			var temp="";
			eventType=CbxCore_GetEventAttribute(i,"Type");
			eventTime=CbxCore_GetEventAttribute(i,"TimeInSeconds");
			eventTimeText=CbxCore_GetEventAttribute(i,"TimeAsString");
			if(eventType=="image")
			{
				thmbCnt++;
				var imagePath;
				imagePath=CbxCore_GetEventAttribute(i,"Parameter")+"_thumb.JPG";		
				temp='<span onclick="ShowPlayer('+eventTime+');"><img title="' +eventTimeText+ '" alt="' +eventTimeText+ '" src="'+imagePath+'"></span> ';
		
			}
			else
			{

			}

			var thmbGrp;
			thmbGrp=Math.ceil(thmbCnt/9)-1;
			if(thmbGrp==groupIndex)
			{		
				groupHtml=groupHtml+temp;
			}
		}
	}
	return groupHtml;
}



function CbxCore_SetCurrentPosition(position)
{
	g_CurrentPosition=position;

	if(g_CurrentPosition>g_MostAdvancedPosition)
		g_MostAdvancedPosition=g_CurrentPosition;
}

function CbxCore_GetCurrentPosition()
{
	return g_CurrentPosition;
}

function CbxCore_GetMostAdvancedPosition()
{
	return g_MostAdvancedPosition;
}

function CbxCore_SetCompleted()
{
	g_Completed=true;
}

function CbxCore_IsCompleted()
{
	return g_Completed;
}

function CbxCore_SetCurrentEvent(evt)
{
	g_CurrentEvent=evt;
}

function CbxCore_GetCurrentEvent()
{
	return g_CurrentEvent;
}

function CbxCore_StartPlayer(viewIndex,startPosition)
{
	//StartPlayer must be implemented by the specific player
	StartPlayer(viewIndex,startPosition);
}
//END CORE FUNCTIONS

