//File: Util.js
//Desc: Application Functions
//Copyright: MicroVideo Learning Systems  2003
var MSG_UNSUPORTED_BROWSER = "This application does not work in your current browser version.";
var MSG_MISSING_MEDIAPLAYER = "This application requires Windows Media Player 6.4 or later.";
var m_HTTP = new ActiveXObject("Microsoft.XMLHTTP");
var m_HTTP_FRM = new ActiveXObject("Microsoft.XMLHTTP");
var m_WMPVersion;

function GetWMPVersion()
{
	var WMPVersion;
	top.window.document.body.style.behavior = "url(#default#clientCaps)";				
	WMPVersion = top.window.document.body.getComponentVersion("{6BF52A52-394A-11d3-B153-00C04F79FAA6}","componentid");
	WMPVersion = WMPVersion ? parseInt(WMPVersion.split(",")[0]) : 6.4;
	m_WMPVersion = WMPVersion;
	return WMPVersion;
}
function GetObject(obj)
{
	if(typeof obj == "string")
	{
		if(document.getElementById)
		{
			//netscape 6+ and IE 5+
			return document.getElementById(obj);
		}
		else if(document.all)
		{
			//ie 4+
			return document.all[obj];
		}
		else if(document.layers)
		{
			//netscape 4+
			return document.layers[obj];
		}
	}
	else
	{
		return obj;
	}
}

function GetStyleAttribute(att, properties)
{
	var aElements, i, item, iPos;
	aElements = properties.split(";");
	for(i =0;i<aElements.length;i++)
	{
		item = aElements[i].split(":");
		if (item[0].toLowerCase() == att.toLowerCase())
		{
			iPos = aElements[i].indexOf("expression(");
			
			if(iPos>-1)
			{	
				return aElements[i].substring(iPos + 11, aElements[i].length -1);
			}
			return item[1];
		}
	}
	return "";
}

function QueryString(sQueryString, item)
{
	var i;
	var qStrings;
	qStrings = sQueryString.split("&");
	for (i=0; i < qStrings.length; i++)
	{
		if(qStrings[i].split("=")[0].search(item) >=0)
		{
			return qStrings[i].split("=")[1];
		}
	}
	return null;
}

function GetUserRequestParameter(sParameter)
{
	return QueryString(document.location.search, sParameter);
}

function HoverRow(oRow)
{
	var hoverColor = "#FFFFCC";
	if (!oRow.rowColor)
	{
		if (oRow.bgColor.length ==0)
		{
			oRow.rowColor = "#FFFFFF"
		}
		else
		{
			oRow.rowColor = oRow.bgColor;
		}		
	}
	if (oRow.bgColor.toUpperCase() == hoverColor)
	{
		oRow.bgColor = oRow.rowColor;
	}
	else
	{
		oRow.bgColor = hoverColor;
	}
}

function CopyAttributes(oSource, oDestination)
{
	var oAtt, i;
	for (i=0;i<oSource.attributes.length;i++)
	{
		oAtt = oSource.attributes.item(i);
		oDestination.attributes.setNamedItem(oAtt.cloneNode(true))
	}
}

function CheckSystemRequirements()
{
	var myBrowser = new CBrowserInfo();
	
	//ie
	if(!myBrowser.isPlatformSupported())
	{
		var sDownloadURL = '<br><a href="http://www.microsoft.com/ie">Click here to download the latest Internet Explorer</a>';
		var oMessage = GetObject('Message');	
		if(oMessage)
		oMessage.innerHTML = MSG_UNSUPORTED_BROWSER + sDownloadURL;
		else
		alert(MSG_UNSUPORTED_BROWSER + sDownloadURL);
		return false;
	}
	//media player
	document.body.style.behavior = "url(#default#clientCaps)";
	//{6BF52A52-394A-11d3-B153-00C04F79FAA6} 
	//{22D6F312-B0F6-11D0-94AB-0080C74C7E95}
	try
	{
	if (!document.body.getComponentVersion("{22D6F312-B0F6-11D0-94AB-0080C74C7E95}","componentid") &&
	    !document.body.getComponentVersion("{6BF52A52-394A-11d3-B153-00C04F79FAA6}","componentid"))
	{
		var sDownloadURL = '<br><a href="http://www.microsoft.com/windowsmedia">Click here to download the latest Windows Media Player</a>';
		var oMessage = GetObject('Message');
		oMessage.innerHTML = MSG_MISSING_MEDIAPLAYER + sDownloadURL;
		return false;
	}
	}catch(e)
	{
		var oMessage = GetObject('Message');
		oMessage.innerHTML = '<br/><br/>Please make sure your Internet security settings for "Binary and script behaviors" is enabled.';
		return false;
	}
	return true;
}

function PostXML(oXML)
{
	var oHTTP = new ActiveXObject("Microsoft.XMLHTTP");
	oHTTP.open("POST", "cmd.asp?page=xml&cmd=ProcessXMLCommands", false);
	oHTTP.send(oXML);

	if (oHTTP.status == 200)
	{
		if (oHTTP.responseXML)
		{
			try
			{
				var sStatus = oHTTP.responseXML.documentElement.getAttribute("status");
				if (sStatus == "OK")
				{
					var bRequireRefresh = oHTTP.responseXML.documentElement.getAttribute("require_refresh");
					if(bRequireRefresh == 'yes')
				    parent.window.location.reload();
				}
				else
				{
					alert(sStatus);
				}
			}
			catch(e){}
		}
	}
	else
	{

		alert("Problem posting command to server.");
	}
	oHTTP.abort();													
}

function DoCommand(sCmd)
{
	switch(sCmd)
	{
		case 'user_preferences':
			var oActionPanel = GetObject('APFrame');
			if(oActionPanel)
			{
				if(!GetObject('dsoUserPrefs'))
				{
					document.appendChild(document.createElement("<XML id='dsoUserPrefs' src='cmd.asp?page=user_video_options&cmd=GetUserOptions' ondatasetcomplete='APFrame.innerHTML=this.xml'></XML>"));
				}
				else
				{
					dsoUserPrefs.outerHTML = "<XML id='dsoUserPrefs' src='cmd.asp?page=user_video_options&cmd=GetUserOptions' ondatasetcomplete='APFrame.innerHTML=this.xml'></XML>";
//					oActionPanel.innerHTML = dsoUserPrefs.xml;
				}	
			
			}
			break;
		case 'license_request':
			window.location.href = "cmd.asp?page=course_license&cmd=GetLicenseRequest&challenge=" + DoCommand.arguments[1] + "&course_id=" + DoCommand.arguments[2] + "&language_id=" + DoCommand.arguments[3];
			break;
		case 'save_options':
			var oHTTP = new ActiveXObject("Microsoft.XMLHTTP");
			oHTTP.open("GET", "cmd.asp?page=xml&cmd=SetUserOptions&option=VIDEO_SOURCE&value=" + DoCommand.arguments[1] + "&t=" + Math.random(), false);
			oHTTP.send();			
			oHTTP.abort();
			break;
		case 'reports':
			var oActionPanel = GetObject('APFrame');
			if(oActionPanel)
			{
				if(!GetObject('dsoReportForm'))
				{
					document.appendChild(document.createElement("<XML id='dsoReportForm' src='cmd.asp?page=course_reports&cmd=GetSubscriptions' ondatasetcomplete='APFrame.innerHTML=this.xml'></XML>"));
				}
				else
				{
					oActionPanel.innerHTML = dsoReportForm.xml;
				}				
				
			}
			break;
		case 'contents':
			window.location.href="cmd.asp?page=content_manager";
			break;		
			
		case 'clients':
			window.location.href="cmd.asp?page=client_manager&cmd=Monsoon.GetClients";
			break;		
		case 'users':
			if(DoCommand.arguments.length >1)
			{

				window.open('cmd.asp?page=user_manager&cmd=Monsoon.ShowClient', 'UserManager', 'location=no,menubar=yes,toolbar=no,resizable=yes');
			}
			else
			{
				var oContentArea = GetObject("ContentArea")
				if (oContentArea)
				{
					oContentArea.innerHTML = '<IFRAME id="myClient" frameborder="0" SCROLLING="yes" NORESIZE="1" style="width:100%;height:100%" src="' + 'cmd.asp?page=user_manager&cmd=Monsoon.ShowClient' + '"></IFRAME>';
				}
			}
			break;
		case 'show_user_info':
			if(DoCommand.arguments.length >3)
			{
				window.open('cmd.asp?page=user_info&cmd=Monsoon.ShowClient&account_id=' + DoCommand.arguments[1] + '&user=' + DoCommand.arguments[2], 'UserManager', 'location=no,menubar=yes,toolbar=no,resizable=yes');
			}
			else
			{
				var oContentArea = GetObject("ContentArea")
				if (oContentArea)
				{
					oContentArea.innerHTML = '<IFRAME id="myUser" frameborder="0" SCROLLING="yes" NORESIZE="1" style="width:100%;height:100%" src="' + 'cmd.asp?page=user_info&cmd=Monsoon.ShowClient&account_id=' + DoCommand.arguments[1] + '&user=' + DoCommand.arguments[2] + '"></IFRAME>';
				}
			}
			break;				
		case 'show_help':
			if(DoCommand.arguments[1].length)
			{
				window.open("cmd.asp?page=" + DoCommand.arguments[1], "Help", "location=no,menubar=yes,toolbar=no,resizable=yes");
			}
			else
			{
				alert("Help is not available for current page.");
			}
			break;
		case 'download_exercise':
			//var sURL = DoCommand.arguments[1];
			//if(sURL.toLowerCase().indexOf("courseware"))
			
			window.open(DoCommand.arguments[1], "Download");
			break;
		
		//--------------------------------
		case 'logout':
			window.location.href ="cmd.asp?cmd=logout";
			break;

	}
}

//Course Interfaces
function LoadCourse(sCourseID, iLangID, iState)
{	
	if (iState <=2)
	window.location.href = "cmd.asp?page=course_loader&cmd=LoadCourse&course_id=" + sCourseID + "&language_id=" + iLangID + "&state=" + iState;
	else
	{
		try
		{
		document.location.href = "cmd.asp?page=course_presentation&cmd=LoadCourse&course_id=" + sCourseID + "&language_id=" + iLangID + "&state=" + iState;
		}
		catch(e){}
	}
}

function LoadContent(sRefType, sCourseID, iLangID, sContentID, iItemID, iState, bIncludeSiblings)
{
	var oContentArea = GetObject('ContentArea');
	var oContainerTopic = GetObject("topic");
	var sCriteria = "&course_id=" + sCourseID + "&language_id=" + iLangID + "&content_id=" + sContentID + "&item_id=" + iItemID + "&include_siblings=" + bIncludeSiblings;
	if(LoadContent.arguments.length ==10)
	{
		sCriteria += "&section=" + LoadContent.arguments[7] + "&attributes=" + LoadContent.arguments[8] + "&querystring=" + LoadContent.arguments[9];
	}
	else if(LoadContent.arguments.length > 7)
	{
		sCriteria += "&section=" + LoadContent.arguments[7] + "&attributes=" + LoadContent.arguments[8];
	}
	else
	{
		if (sRefType.length && oContainerTopic)
		{
			if(sRefType == 'video')
			{
				var myPlayer = document.frames("topic").document.all.MediaPlayer;
				if (myPlayer)
				{
					myPlayer.content = new Array(sCourseID, iLangID, sContentID, iItemID, iState, bIncludeSiblings);
					//myPlayer.FileName = myPlayer.FileName.split("?")[0] + "?page=ASX&cmd=LoadContent&course_id=" + sCourseID + "&language_id=" + iLangID + "&content_id=" + sContentID + "&item_id=" + iItemID + "&state=2&include_siblings=" + bIncludeSiblings + "&t=" + Math.random();
					return true;
				}
			}
			else
			{
				var myHTMLViewer = document.frames("topic").document.all.HTMLViewer;
				
				if (myHTMLViewer)
				{
					if(navigator.platform.indexOf("Win") >=0)
					{
					document.frames("topic").document.all.dsoPages.src = "cmd.asp?page=XML&cmd=LoadContent&course_id=" + sCourseID + "&language_id=" + iLangID + "&content_id=" + sContentID + "&item_id=0&state=2&include_siblings=-1";
					return true;
					}
					else
					{
					document.frames("topic").document.location.href = "cmd.asp?page=course_html_viewer&cmd=LoadContent&course_id=" + sCourseID + "&language_id=" + iLangID + "&content_id=" + sContentID + "&item_id=0&state=2&include_siblings=-1";
					return true;
					}
				}
			}
		}
	}
	var sDetach = QueryString(document.location.search, 'detach');
	sCriteria += sDetach ? sDetach.length ? "&detach=" + sDetach : '' : '';
	
	var sHTML = '<IFRAME id="topic" NAME="topic" CLASS="topic" SCROLLING="no" frameborder="0" NORESIZE="1" src="cmd.asp?cmd=LoadContent&state=1' + sCriteria + '" style="width:100%;height:100%"></IFRAME>';
	oContentArea.innerHTML = sHTML;
}

function UnloadCourse(sCourseID, iLangID)
{

}

function Search()
{
	if(!Search.arguments.length)
	{
		var oActionPanel = GetObject('APFrame');
		if(oActionPanel)
		{
			if(!GetObject('dsoSearchForm'))
			{
				document.appendChild(document.createElement("<XML id='dsoSearchForm' src='cmd.asp?page=course_keyword_search' ondatasetcomplete='APFrame.innerHTML=this.xml'></XML>"));
			}
			else
			{
				oActionPanel.innerHTML = dsoSearchForm.xml;
			}				
		}
	}
	else if(Search.arguments[0] == 'show_result')
	{
		if(m_HTTP_FRM.readyState == 4)
		{
			if(m_HTTP_FRM.status == 200)
			{
				if (m_HTTP_FRM.responseXML)
				{
					try
					{
						var oResultPanel = GetObject("SearchResult");
						if (oResultPanel)
						{
							BTNSearch.stickyState = 1;
							SearchProgress.innerHTML = m_HTTP_FRM.responseXML.documentElement.childNodes.length + " Found.";
							oResultPanel.innerHTML = m_HTTP_FRM.responseXML.documentElement.xml;
						}
					}
					catch(e){}
				}
				m_HTTP_FRM.abort();	
			}
			else
			{
				m_HTTP_FRM.abort();	
				SearchProgress.innerHTML = "";
			}	
		}
		else
		{
			SearchProgress.innerHTML = "<MARQUEE DIRECTION='right' BEHAVIOR='SCROLL' SCROLLDELAY='200'>.....</MARQUEE>";
		}
	}
	else if(Search.arguments[0] =='stop')
	{
		m_HTTP_FRM.abort();
		BTNSearch.stickyState = 1;
	}
	else
	{
		if(Search.arguments[2].length)
		{
			m_HTTP_FRM.onreadystatechange = new Function("Search('show_result')");
			m_HTTP_FRM.open("POST", "cmd.asp?page=course_keyword_search&cmd=Search&course_id=" + Search.arguments[0] + "&language_id=" + Search.arguments[1] + "&keyword=" + Search.arguments[2] + "&t=" + Math.random, true);
			m_HTTP_FRM.send();
		}
		else
		{
			BTNSearch.stickyState = 1;
			alert("Enter a keyword.");
		}
	}					
}

function MakeCookie(sCookie, sValue)
{
	var oHTTP = new ActiveXObject("Microsoft.XMLHTTP");
	if(typeof(sValue) == 'object')
	sValue = sValue.length ? sValue.join(",") : sValue;
	oHTTP.open("POST", "cmd.asp?page=xml&cmd=MakeCookie&cookie=" + sCookie + "&value=" + sValue + "&t=" + Math.random(), false);
	oHTTP.send();
	oHTTP.abort();
}

function GetCookie(sCookie)
{
	//get client cookies first
	// cookies are separated by semicolons
	var aCookie = document.cookie.split("; ");
	for (var i=0; i < aCookie.length; i++)
	{
	      // a name/value pair (a crumb) is separated by an equal sign
	      var aCrumb = aCookie[i].split("=");
	      if (sCookie == aCrumb[0]) 
	        return unescape(aCrumb[1]);
	}
	//from server	
	var oHTTP = new ActiveXObject("Microsoft.XMLHTTP");
	var sValue = "";
	oHTTP.open("POST", "cmd.asp?page=xml&cmd=GetCookie&cookie=" + sCookie + "&t=" + Math.random(), false);
	oHTTP.send();
	if (oHTTP.status == 200)
	{
		if (oHTTP.responseXML)
		{
			try
			{
				var sStatus = oHTTP.responseXML.documentElement.getAttribute("cookie");
				if (sStatus)
				{
					sValue = sStatus;
				}
			}
			catch(e){}
		}
	}
	oHTTP.abort();	
	return sValue;
}

function SetCookie(sName, sValue, expires)
{
	  document.cookie = sName + "=" + escape(sValue)
							  + ((expires) ? "; expires=" + expires : "");
}

function SmashCookie(sCookie)
{
	var oHTTP = new ActiveXObject("Microsoft.XMLHTTP");
	oHTTP.open("POST", "cmd.asp?page=xml&cmd=SmashCookie&cookie=" + sCookie + "&t=" + Math.random(), false);
	oHTTP.send();
	oHTTP.abort();
}

function LogUsage(sCommand, sCourseID, iLangID, sSectionID, sContentID, iType, sValue)
{
	if(typeof(sValue) == 'object')
	sValue = sValue.join(",");

	m_HTTP.onreadystatechange = new Function("if(m_HTTP.readyState == 4){if(m_HTTP.status){m_HTTP.abort();}}");
	m_HTTP.open("POST", "cmd.asp?page=xml&cmd=LogUsage&action=" + sCommand + "&course_id=" + sCourseID + "&language_id=" + iLangID + "&section_id=" + sSectionID + "&content_id=" + sContentID + "&type=" + iType + "&value=" +  sValue + "&t=" + Math.random(), true);
	m_HTTP.send();
}

