File "interaction.js"
Full path: /var/www/vhosts/msproyectoscloud.cl/siadrecursos.msproyectoscloud.cl/RECURSOS/recursos.siadspsminsal.cl/Migracion/u3/Normativas/interaction_content/interaction.js
File size: 43.38 KiB (44419 bytes)
MIME-type: text/plain
Charset: utf-8
// Browser Sniffing
var IE = ((document.all)&&(navigator.appVersion.indexOf("MSIE")!=-1)) ? true : false;
var IE6 = ((document.all)&&(navigator.appVersion.indexOf("MSIE 6.")!=-1)) ? true : false;
var FF = (navigator.userAgent.indexOf("Firefox")!=-1) ? true : false;
var Safari3 = (navigator.appVersion.indexOf("Safari") && navigator.appVersion.indexOf("Version/3"));
// Message Delimitors
var g_strDelim = "|~|";
var g_strInteractionDelim = "|#|";
var g_oContentResults = new ContentResults();
var g_listQuizzes = new Object();
var g_oPrintOptions = new Object();
// LMS Support
var g_bLMSPresent = false;
if (g_bLMS)
{
document.write("<SCR" + "IPT LANGUAGE='JavaScript1.2' SRC='lms/lms.js' TYPE='text/javascript'><\/SCR" + "IPT>");
}
if (g_bAOSupport)
{
document.write("<SCR" + "IPT LANGUAGE='JavaScript1.2' SRC='" + g_strContentFolder + "/AOComm.js' TYPE='text/javascript'><\/SCR" + "IPT>");
}
var g_strQuery = document.location.search.substr(1);
// Write the swf object
function WriteSwfObject(strSwfFile, nWidth, nHeight, strScale, strAlign, strQuality, strBgColor, bCaptureRC, strWMode, strFlashVars)
{
var strHtml = "";
var strWidth = nWidth + "px";
var strHeight = nHeight + "px";
var strPublishSize = "&vPublishWidth=" + nWidth + "&vPublishHeight=" + nHeight;
if (strScale == "show all")
{
strWidth = "100%";
strHeight = "100%";
}
// If there are flashvars defined append a delimitor
if (strFlashVars != "")
{
strFlashVars += "&";
}
strFlashVars += "vHtmlContainer=true";
strFlashVars += "&TinCan=" + (g_bTinCan ? "true" : "false");
if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0 && strWMode != "transparent")
{
strWMode = "opaque";
}
if (bCaptureRC && strWMode == "window")
{
strFlashVars += "&vCaptureRC=true";
if(strWMode != "transparent")
{
strWMode = "opaque";
}
}
if (g_strQuery.indexOf("artcommid") >= 0 && strWMode == "window" && !FF)
{
strWMode = "opaque";
}
// Whether or not we are loaded by an LMS
strFlashVars += "&vLMSPresent=" + g_bLMSPresent;
// Whether or not we are loaded by AO
strFlashVars += "&vAOSupport=" + g_bAOSupport;
// Set the publish width and height
strFlashVars += strPublishSize;
// Set the LMS Resume data
if (g_bLMSPresent)
{
RetrieveStateData();
strFlashVars += "&vResumeData=" + encodeURI(g_strResumeData);
}
strFlashVars += GetHostVars();
var strLocProtocol = location.protocol;
if (strLocProtocol.indexOf("file") >= 0)
{
strLocProtocol = "http:";
}
strHtml += "<div style='width:" + strWidth + "; height:" + strHeight + ";' id='divSwf'>";
strHtml += "<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='" + strLocProtocol + "//fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0' width='" + strWidth + "' height='" + strHeight + "' align='" + strAlign + "' id='player'>";
strHtml += "<param name='scale' value='" + strScale + "' />";
strHtml += "<param name='movie' value='" + strSwfFile + "' />";
strHtml += "<param name='quality' value='" + strQuality + "' />";
strHtml += "<param name='name' value='player' />";
strHtml += "<param name='allowFullScreen' value='true' />";
strHtml += "<param name='bgcolor' value='" + strBgColor + "' />";
strHtml += "<param name='flashvars' value='" + strFlashVars + "' />";
strHtml += "<param name='wmode' value='" + strWMode + "'/>";
strHtml += "<param name='AllowScriptAccess' value='always'>";
strHtml += "<embed id='eplayer' name='player' allowFullScreen='true' wmode='" + strWMode + "' src='" + strSwfFile +"' flashvars='" + strFlashVars + "' scale='" + strScale + "' quality='" + strQuality + "' bgcolor='" + strBgColor + "' width='" + strWidth + "' height='" + strHeight + "' align='" + strAlign + "' swLiveConnect='true' type='application/x-shockwave-flash' pluginspage='" + strLocProtocol + "//www.macromedia.com/go/getflashplayer' AllowScriptAccess='always'/>";
strHtml += "</object>";
strHtml += "</div>";
document.write(strHtml);
if (bCaptureRC)
{
AddRightClickListener();
}
}
////////////////////////////////////////////////////////////////////////////////
// Flash Comm
////////////////////////////////////////////////////////////////////////////////
function onBWEvent(command, args)
{
args = unescape(args);
command = String(command);
var arrArgs = args.split(g_strDelim);
switch(command)
{
case "BW_UpdateViewStatus":
g_oContentResults.strStatus = arrArgs[0];
g_oContentResults.strType = arrArgs[1];
break;
case "BW_UpdateStatus":
g_oContentResults.strStatus = arrArgs[0];
g_oContentResults.nScore = arrArgs[1];
// Min Score - arrArgs[2]
// Max Score - arrArgs[3]
g_oContentResults.nPassingScore = arrArgs[4];
g_oContentResults.strType = arrArgs[5];
g_oContentResults.dtmFinished = new Date();
break;
case "BW_StoreQuestionResult":
var strQuizId = arrArgs[0];
var strId = arrArgs[1];
var strLMSId = arrArgs[2];
var strType = arrArgs[3];
var strCorrectResponse = arrArgs[4];
var strUserResponse = arrArgs[5];
var nLatency = arrArgs[6];
var strStatus = arrArgs[7];
var nPoints = arrArgs[8];
var strCompletedTime = arrArgs[9];
var nWeight = arrArgs[10];
var nQuestionNumber = arrArgs[11];
var strDescription = arrArgs[12];
var strQuizName = arrArgs[13];
var bTracked = (arrArgs[14] == "true");
if (g_listQuizzes[strQuizId] == null)
{
g_listQuizzes[strQuizId] = new QuizData(strQuizId, strQuizName);
}
var oResult = new QuestionResults(strId, strLMSId, strType, strCorrectResponse, strUserResponse, nLatency, strStatus, nPoints, strCompletedTime, nWeight, nQuestionNumber, strDescription, bTracked);
g_listQuizzes[strQuizId].AddQuestionResult(oResult);
break;
case "BW_UpdateQuizResults":
var strQuizId = arrArgs[0];
var strQuizName = arrArgs[1];
var nPassScore = arrArgs[2];
var nPassPercent = arrArgs[3];
var nScore = arrArgs[4];
var nPercentScore = arrArgs[5];
if (g_listQuizzes[strQuizId] == null)
{
g_listQuizzes[strQuizId] = new QuizData(strQuizId, strQuizName);
}
g_listQuizzes[strQuizId].nPassingScore = nPassPercent;
g_listQuizzes[strQuizId].nPtScore = nPercentScore;
g_listQuizzes[strQuizId].dtmFinished = new Date();
break;
case "BW_PrintResults":
g_oPrintOptions.bShowUserScore = (arrArgs[0] == "true");
g_oPrintOptions.bShowPassingScore = (arrArgs[1] == "true");
g_oPrintOptions.bShowShowPassFail = (arrArgs[2] == "true");
g_oPrintOptions.bShowQuizReview = (arrArgs[3] == "true");
g_oPrintOptions.strName = arrArgs[4];
g_oPrintOptions.strMainQuizId = arrArgs[5];
g_oPrintOptions.arrQuizzes = arrArgs[6].split(",");
g_oPrintOptions.bSurvey = (arrArgs[7] == "true");
window.open(GetBasePath() + g_strContentFolder + "/report.html", "Reports")
break;
case "BW_EmailResults":
EmailResults(arrArgs[0] == "true", arrArgs[1] == "true", arrArgs[2] == "true", arrArgs[3] == "true", arrArgs[4], arrArgs[5], arrArgs[6].split(","));
break;
case "BW_UpdateWebObjects":
UpdateWebObjects(parseInt(arrArgs[0]), parseInt(arrArgs[1]));
break;
case "BW_UpdateWebObjectPosition":
UpdateWebObjectPosition(arrArgs[0], parseInt(arrArgs[1]), parseInt(arrArgs[2]), parseInt(arrArgs[3]), parseInt(arrArgs[4]));
break;
case "BW_OpenWebObject":
OpenWebObject(arrArgs[0], arrArgs[1], parseInt(arrArgs[2]), parseInt(arrArgs[3]), parseInt(arrArgs[4]), parseInt(arrArgs[5]), parseInt(arrArgs[6]), parseInt(arrArgs[7]))
break;
case "BW_CloseWebObject":
CloseWebObject(arrArgs[0]);
break;
case "BW_MailTo":
MailTo(arrArgs[0]);
break;
case "BW_OpenUrl":
OpenUrl(arrArgs[0], arrArgs[1], arrArgs[2], arrArgs[3], arrArgs[4], arrArgs[5], arrArgs[6], arrArgs[7], arrArgs[8], arrArgs[9], arrArgs[10], arrArgs[11]);
break;
case "BW_CloseAllWebObjects":
CloseAllWebObjects(arrArgs[0]);
break;
case "BW_RestoreWebObjects":
RestoreWebObjects();
break;
case "BW_ExecuteJavascript":
ExecuteScript(arrArgs[0]);
break;
case "BW_OpenSwf":
OpenSwfWindow(arrArgs[0], arrArgs[1], arrArgs[2], arrArgs[3], arrArgs[4], arrArgs[5], arrArgs[6], arrArgs[7], arrArgs[8]);
break;
case "BW_ResizeSwf":
ResizeSwf(arrArgs[0], arrArgs[1]);
break;
case "BW_ClosePlayer":
if (!g_bLMS)
{
if (FF)
{
setTimeout("CloseWindow()", 100);
}
else
{
CloseWindow();
}
}
break;
case "BW_OpenVideo":
OpenVideo(arrArgs[0], arrArgs[1], arrArgs[2], arrArgs[3], arrArgs[4], arrArgs[5], arrArgs[6], arrArgs[7], arrArgs[8], arrArgs[9], arrArgs[10], arrArgs[11], arrArgs[12], arrArgs[13], arrArgs[14], arrArgs[15], arrArgs[16])
break;
case "BW_RestoreFocus":
var oPlayer = GetPlayer();
try
{
oPlayer.tabIndex = 0;
oPlayer.focus();
}
catch (e)
{
}
break;
case "BW_TincanConfigError":
TinCanConfigError();
break;
case "BW_SetWebObjectZIndex":
SetWebObjectZIndex(arrArgs[0], arrArgs[1]);
break;
}
if (g_bLMS)
{
lms_DoFSCommand(command, args);
}
if (g_bAOSupport)
{
AO_DoFSCommand(command, args);
}
}
function GetHostVars()
{
var strResult = "";
var arrArgs = g_strQuery.split("&");
for (var i = 0; i < arrArgs.length; i++)
{
var arrPair = arrArgs[i].split("=");
switch(arrPair[0])
{
case "artcommid":
strResult += "&vCommId=" + arrPair[1];
break;
case "arthostresume":
strResult += "&vResumeOverride=" + arrPair[1];
break;
case "artvolume":
strResult += "&InitVolume=" + arrPair[1];
break;
}
}
return strResult;
}
////////////////////////////////////////////////////////////////////////////////
// Retrieve the player object
////////////////////////////////////////////////////////////////////////////////
function GetPlayer()
{
var player = null;
if (IE)
{
player = document.getElementById("player");
}
else
{
player = document.getElementById("eplayer");
}
return player;
}
////////////////////////////////////////////////////////////////////////////////
// Close the player
////////////////////////////////////////////////////////////////////////////////
function CloseWindow()
{
top.window.close();
}
////////////////////////////////////////////////////////////////////////////////
// Browser Resize
////////////////////////////////////////////////////////////////////////////////
var g_nWindowWidth = 0;
var g_nWindowHeight = 0;
var g_nSizeInterval = null;
var g_nIntervalCount = 0;
function ResizeBrowser(strBrowserSize)
{
switch (strBrowserSize)
{
case "fullscreen":
ResizeFullScreen();
break;
case "optimal":
ResizeOptimal();
break;
}
}
function ResizeFullScreen()
{
top.moveTo(0, 0);
top.window.resizeTo(screen.availWidth, screen.availHeight);
}
function ResizeOptimal()
{
var nFrameWidth = 0;
var nFrameHeight = 0;
var nXPos = GetXPos();
var nYPos = GetYPos();
var bMove = false;
g_nWindowWidth = g_nWidth + 30;
g_nWindowHeight = g_nHeight + 30;
if (screen.availWidth > g_nWindowWidth && screen.availHeight > g_nWindowHeight)
{
if (GetContentWidth() != g_nWidth || GetContentHeight() != g_nHeight)
{
// First we need to reposition the browser so that it can actually grow to the appropiate size.
// When positioning, we will overestimate the browser height by 160 if possible to accomadate the toolbar and statusbar
if (nXPos + g_nWindowWidth > screen.availWidth)
{
bMove = true;
nXPos = screen.availWidth - g_nWindowWidth - 5;
}
if (nYPos + g_nWindowHeight + 160 > screen.availHeight)
{
bMove = true;
nYPos = screen.availHeight - g_nWindowHeight - 165;
}
if (nXPos < 0)
{
nXPos = 0;
}
if (nYPos < 0)
{
nYPos = 0;
}
if (bMove)
{
top.window.moveTo(nXPos, nYPos);
}
// Resize the window so we know what the actual size is
top.window.resizeTo(g_nWindowWidth, g_nWindowHeight);
// Since we know the actual browser size, and we can query the cliet dim, lets get the frame dim
nFrameWidth = (g_nWindowWidth) - GetContentWidth();
nFrameHeight = (g_nWindowHeight) - GetContentHeight();
// Not lets resize it to the correct size
g_nWindowWidth = g_nWidth + nFrameWidth;
g_nWindowHeight = g_nHeight + nFrameHeight;
top.window.resizeTo(g_nWindowWidth, g_nWindowHeight);
if (IE)
{
// ok, sometimes there is a third party toolbar that doesn't load until after we have finish resizing everything, so we will do a check for this (this only seems to effect IE, FF behaves correctly)
g_nSizeInterval = setInterval(CheckSize, 500);
}
}
}
else
{
// If the screen isn't big enough, we are bailing and defaulting to Full Screen
ResizeFullScreen();
}
}
function CheckSize()
{
var nContentWidth = GetContentWidth();
var nContentHeight = GetContentHeight();
var nFrameWidth = 0;
var nFrameHeight = 0;
g_nIntervalCount++;
if (nContentWidth != g_nWidth || nContentHeight != g_nHeight)
{
nFrameWidth = g_nWindowWidth - nContentWidth;
nFrameHeight = g_nWindowHeight - nContentHeight;
g_nWindowWidth = g_nWidth + nFrameWidth;
g_nWindowHeight = g_nHeight + nFrameHeight;
top.window.resizeTo(g_nWindowWidth, g_nWindowHeight);
clearInterval(g_nSizeInterval);
}
if (g_nIntervalCount > 4)
{
clearInterval(g_nSizeInterval);
}
}
function GetContentWidth()
{
var nResult = 0;
if (IE || Safari3)
{
nResult = document.body.clientWidth;
}
else
{
nResult = window.innerWidth;
}
return nResult;
}
function GetContentHeight()
{
var nResult = 0;
if (IE || Safari3)
{
nResult = nContentHeight = document.body.clientHeight;
}
else
{
nResult = nContentHeight = window.innerHeight;
}
return nResult
}
function GetXPos()
{
var nResult = 0;
if (IE)
{
nResult = window.screenLeft;
}
else
{
nResult = window.screenX;
}
return nResult;
}
function GetYPos()
{
var nResult = 0;
if (IE)
{
nResult = window.screenTop;
}
else
{
nResult = window.screenY;
}
return nResult;
}
function ResizeSwf(nWidth, nHeight)
{
var oPlayer = GetPlayer();
oPlayer.width = nWidth;
oPlayer.height = nHeight;
var divPlayer = document.getElementById("divSwf");
divPlayer.style.width = nWidth;
divPlayer.style.height = nHeight
}
////////////////////////////////////////////////////////////////////////////////
// On Close Handling
////////////////////////////////////////////////////////////////////////////////
var g_bCloseExecuted = false;
function DoOnClose(evt)
{
if (!g_bCloseExecuted)
{
g_bCloseExecuted = true;
if (g_bLMS)
{
LMSUnload();
}
if (g_bAOSupport)
{
DoAOOnUnload();
}
if (g_bTinCan)
{
CheckTinCanComplete();
}
}
}
////////////////////////////////////////////////////////////////////////////////
// WebObject support
////////////////////////////////////////////////////////////////////////////////
var g_oWebObjects = new Object();
var g_arrStoredWebObjects = new Array();
function UpdateWebObjects(nSlideXOffset, nSlideYOffset)
{
for (var items in g_oWebObjects)
{
var oWebObject = g_oWebObjects[items];
oWebObject.Position.SlideXOffset = nSlideXOffset;
oWebObject.Position.SlideYOffset = nSlideYOffset;
}
// setTimeout("RepositionDivs()", 100);
RepositionDivs();
}
function UpdateWebObjectPosition(strId, nXPos, nYPos, nWidth, nHeight)
{
var oWebObject = g_oWebObjects[strId];
var oPosition = new Object();
oPosition.XPos = nXPos;
oPosition.YPos = nYPos;
oPosition.Width = nWidth;
oPosition.Height = nHeight;
oPosition.SlideXOffset = oWebObject.Position.SlideXOffset;
oPosition.SlideYOffset = oWebObject.Position.SlideYOffset;
oWebObject.Position = oPosition;
var oRect = GetDivRect(oPosition);
oWebObject.Div.style.left = oRect.left + "px";
oWebObject.Div.style.top = oRect.top + "px";
oWebObject.Div.style.width = oRect.width + "px";
oWebObject.Div.style.height = oRect.height + "px";
oWebObject.contentWindow.scrollTop = nScrollPosition;
}
function OpenWebObject(strId, strUrl, nXPos, nYPos, nWidth, nHeight, nSlideXOffset, nSlideYOffset)
{
var oWebObject = g_oWebObjects[strId];
if (!oWebObject)
{
oWebObject = new Object();
oWebObject.strId = strId;
oWebObject.strInitUrl = strUrl;
// Create the DIV
oWebObject.Div = document.createElement('div');
oWebObject.Div.style.position = "absolute";
// Create the iframe
var oIFrame = document.createElement('iframe');
oIFrame.frameBorder = "0";
oIFrame.id = "div" + strId;
oIFrame.style.border = "0";
oIFrame.style.width = "100%";
oIFrame.style.height = "100%";
oIFrame.allowtransparency = "true";
oWebObject.Div.appendChild(oIFrame);
oWebObject.IFrame = oIFrame;
// Append Child
var oTarget = document.getElementById('divWebObjects');
oTarget.appendChild(oWebObject.Div);
g_oWebObjects[strId] = oWebObject;
oIFrame.src = strUrl;
setTimeout("RepositionDivs()", 100);
}
else
{
var oTarget = document.getElementById('divWebObjects');
oTarget.removeChild(oWebObject.Div);
oTarget.appendChild(oWebObject.Div);
}
oWebObject.Open = true;
if (oWebObject.strUrl != strUrl || oWebObject.Div.style.visibility != "visible")
{
oWebObject.IFrame.src = strUrl;
oWebObject.strUrl = strUrl;
var oPosition = new Object();
oPosition.XPos = nXPos;
oPosition.YPos = nYPos;
oPosition.Width = nWidth;
oPosition.Height = nHeight;
oPosition.SlideXOffset = nSlideXOffset;
oPosition.SlideYOffset = nSlideYOffset;
oWebObject.Position = oPosition;
var oRect = GetDivRect(oPosition);
oWebObject.Div.style.left = oRect.left + "px";
oWebObject.Div.style.top = oRect.top + "px";
oWebObject.Div.style.width = oRect.width + "px";
oWebObject.Div.style.height = oRect.height + "px";
oWebObject.Div.style.visibility = "visible";
oWebObject.Div.style.zIndex = "-1";
}
else
{
var oPosition = new Object();
oPosition.XPos = nXPos;
oPosition.YPos = nYPos;
oPosition.Width = nWidth;
oPosition.Height = nHeight;
oPosition.SlideXOffset = nSlideXOffset;
oPosition.SlideYOffset = nSlideYOffset;
oWebObject.Position = oPosition;
var oRect = GetDivRect(oPosition);
oWebObject.Div.style.left = oRect.left + "px";
oWebObject.Div.style.top = oRect.top + "px";
oWebObject.Div.style.width = oRect.width + "px";
oWebObject.Div.style.height = oRect.height + "px";
}
}
function RestoreWebObjects()
{
var oWebObject = null;
for (var i = 0; i < g_arrStoredWebObjects.length; i++)
{
oWebObject = g_oWebObjects[g_arrStoredWebObjects[i]];
OpenWebObject(oWebObject.strId, oWebObject.strInitUrl, oWebObject.Position.XPos, oWebObject.Position.YPos, oWebObject.Position.Width, oWebObject.Position.Height, oWebObject.Position.SlideXOffset, oWebObject.Position.SlideYOffset)
}
g_arrStoredWebObjects = new Array();
}
function CloseAllWebObjects(strStore)
{
var bStore = (strStore == "true");
for (var items in g_oWebObjects)
{
var oWebObject = g_oWebObjects[items];
if (bStore && oWebObject.Open)
{
g_arrStoredWebObjects.push(items);
}
CloseWebObject(items);
}
}
function CloseWebObject(strId)
{
var oWebObject = g_oWebObjects[strId];
oWebObject.Div.style.visibility = "hidden";
oWebObject.IFrame.src = g_strContentFolder + "/blank.html";
oWebObject.strUrl = "";
oWebObject.Open = false;
}
function SetWebObjectZIndex(strId, zId)
{
var oWebObject = g_oWebObjects[strId];
oWebObject.Div.style.zIndex = zId;
}
function GetDivRect(oPosition)
{
var oRect = new Object();
var nClientWidth = GetContentWidth();
var nClientHeight = GetContentHeight();
var nLeftMargin = 0;
var nSwfWidth = parseInt(g_nWidth);
var nSwfHeight = parseInt(g_nHeight);
if (g_strScale == "noscale")
{
nLeftMargin = (nClientWidth - nSwfWidth) / 2;
nTopMargin = (nClientHeight - nSwfHeight) / 2;
if (nLeftMargin < 0)
{
nLeftMargin = 0;
}
if (nTopMargin < 0)
{
nTopMargin = 0;
}
oRect.left = nLeftMargin + oPosition.XPos;
oRect.top = nTopMargin + oPosition.YPos;
oRect.width = oPosition.Width;
oRect.height = oPosition.Height;
}
else
{
var nXScale = nClientWidth / nSwfWidth;
var nYScale = nClientHeight / nSwfHeight;
var nScale = nXScale;
var bXScale = true;
var nTopMargin = 0;
var nLeftMargin = 0;
if (nYScale < nScale)
{
nScale = nYScale;
}
nTopMargin = (nClientHeight - nSwfHeight * nScale) / 2;
nLeftMargin = (nClientWidth - nSwfWidth * nScale) / 2;
oRect.left = nLeftMargin + oPosition.XPos * nScale;
oRect.top = nTopMargin + oPosition.YPos * nScale;
oRect.width = Math.floor(oPosition.Width * nScale);
oRect.height = Math.floor(oPosition.Height * nScale);
}
return oRect;
}
function RepositionDivs()
{
for (items in g_oWebObjects)
{
var oWebObject = g_oWebObjects[items];
var oRect = GetDivRect(oWebObject.Position);
oWebObject.Div.style.left = oRect.left + "px";
oWebObject.Div.style.top = oRect.top + "px";
oWebObject.Div.style.width = oRect.width + "px";
oWebObject.Div.style.height = oRect.height + "px";
}
}
window.onresize = RepositionDivs;
////////////////////////////////////////////////////////////////////////////////
// Open Url
////////////////////////////////////////////////////////////////////////////////
function OpenUrl(strUrl, strWindow, strWindowSize, strWidth, strHeight, strUseDefaultControls, strStatus, strToolbar, strLocation, strMenubar, strScrollbars, strResizable)
{
var bChrome = (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0);
var nWndWidth = parseInt(strWidth);
var nWndHeight = parseInt(strHeight);
var bUseDefaultSize = (strWindowSize.toLowerCase() == "default");
var bUseDefaultControls = (strUseDefaultControls.toLowerCase() == "true");
var bFullScreen = (strWindowSize.toLowerCase() == "fullscreen");
strUrl = ReplaceAll(strUrl, "%25", "?");
var strOptions = "";
if (!bUseDefaultControls && !bUseDefaultSize)
{
if (bFullScreen)
{
nWndWidth = screen.availWidth;
nWndHeight = screen.availHeight;
strOptions="left=0, top=0,";
}
else
{
if (nWndWidth > screen.availWidth)
{
nWndWidth = screen.availWidth;
}
if (nWndHeight > screen.availHeight)
{
nWndHeight = screen.availHeight;
}
}
if (!bUseDefaultSize)
{
strOptions += "width=" + nWndWidth + ", ";
strOptions += "height=" + nWndHeight + ", ";
}
if (bUseDefaultControls)
{
strToolbar = "true";
strScrollbars = "true";
strResizable = "true";
strMenubar = "true";
}
if (bChrome)
{
if (bFullScreen || !bUseDefaultSize)
{
strMenubar = "false";
}
else
{
strOptions += "status=1, ";
}
}
strOptions += "toolbar=" + ((strToolbar.toLowerCase() == "true") ? 1 : 0);
strOptions += ", scrollbars=" + ((strScrollbars.toLowerCase() == "true") ? 1 : 0);
strOptions += ", resizable=" + ((strResizable.toLowerCase() == "true") ? 1 : 0);
strOptions += ", menubar=" + ((strMenubar.toLowerCase() == "true") ? 1 : 0);
strOptions += ", location=" + ((strLocation.toLowerCase() == "true") ? 1 : 0);
}
g_wndLast = window.open(strUrl, strWindow, strOptions);
}
function ReplaceAll(strTarget, strChar, strNew)
{
var arrRemoved = strTarget.split(strChar);
return arrRemoved.join(strNew);
}
////////////////////////////////////////////////////////////////////////////////
// Open Swf Window
////////////////////////////////////////////////////////////////////////////////
var g_oSwfInfo = new Object();
var g_wndSwf;
var g_wndLast;
function OpenSwfWindow(strFileName, nWidth, nHeight, strStatus, strToolbar, strLocation, strMenubar, strScrollbars, strResizable)
{
var strScroll = "0";
g_oSwfInfo.strContentFolder = g_strContentFolder;
g_oSwfInfo.strFileName = strFileName;
g_oSwfInfo.nWidth = parseInt(nWidth);
g_oSwfInfo.nHeight = parseInt(nHeight);
if (g_oSwfInfo.nWidth > screen.availWidth)
{
g_oSwfInfo.nWidth = screen.availWidth;
strScroll = "1";
}
if (g_oSwfInfo.nHeight > screen.availHeight)
{
g_oSwfInfo.nHeight = screen.availHeight;
strScroll = "1";
}
var strSearch = "";
strSearch += "path=" + g_strContentFolder + "&";
strSearch += "file=" + strFileName + "&";
strSearch += "w=" + nWidth + "&";
strSearch += "h=" + nHeight;
var strOptions = "";
strOptions += "width=" + g_oSwfInfo.nWidth;
strOptions += ", height=" + g_oSwfInfo.nHeight;
strOptions += ", status=" + ((strStatus.toLowerCase() == "true") || true ? 1 : 0);
strOptions += ", toolbar=" + ((strToolbar.toLowerCase() == "true") || true ? 1 : 0);
strOptions += ", location=" + ((strLocation.toLowerCase() == "true") || true ? 1 : 0);
strOptions += ", menubar=" + ((strMenubar.toLowerCase() == "true") || true ? 1 : 0);
strOptions += ", scrollbars=" + ((strScrollbars.toLowerCase() == "true") || true ? 1 : 0);
strOptions += ", resizable=" + ((strResizable.toLowerCase() == "true") || true ? 1 : 0);
if (g_wndSwf)
{
try
{
g_wndSwf.close()
}
catch (e)
{
}
}
g_wndSwf = window.open(GetBasePath() + g_strContentFolder + "/swf.html?" + strSearch, "SwfWnd", strOptions);
g_wndLast = g_wndSwf;
}
function GetBasePath()
{
var strFullPath = document.location.href;
var nPosHash = strFullPath.indexOf("#");
if (nPosHash > 0)
{
strFullPath = strFullPath.substring(0, nPosHash);
}
var nPos1 = -1;
var nPos2 = -1;
nPos1 = strFullPath.lastIndexOf("\\");
nPos2 = strFullPath.lastIndexOf("/");
if (nPos2 > nPos1)
{
nPos1 = nPos2;
}
if (nPos1 >= 0)
{
strFullPath = strFullPath.substring(0, nPos1 + 1);
}
return(strFullPath);
}
////////////////////////////////////////////////////////////////////////////////
// Video
////////////////////////////////////////////////////////////////////////////////
function OpenVideo(strUrl, strWndWidth, strWndHeight, strVidWidth, strVidHeight, strDuration, strPlaybar, strVolume, strAutoPlay,
strStatus, strToolbar, strLocation, strMenubar, strScrollbars, strResizable, strType, strASVersion)
{
var nWndWidth = parseInt(strWndWidth);
var nWndHeight = parseInt(strWndHeight);
var strSearch = "exUrl=" + strUrl +
"&exWndWidth=" + strWndWidth +
"&exWndHeight=" + strWndHeight +
"&exWidth=" + strVidWidth +
"&exHeight=" + strVidHeight +
"&exDuration=" + strDuration +
"&exPlaybar=" + strPlaybar +
"&exVolume=" + strVolume +
"&exAutoPlay=" + strAutoPlay +
"&exType=" + strType +
"&exASVersion=" + strASVersion;
if (nWndWidth > screen.availWidth)
{
nWndWidth = screen.availWidth;
}
if (nWndHeight > screen.availHeight)
{
nWndHeight = screen.availHeight;
}
// Force chrome to open in a new window
if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0)
{
strMenubar = "false";
}
var strOptions = "";
strOptions += "width=" + nWndWidth;
strOptions += ", height=" + nWndHeight;
strOptions += ", status=" + ((strStatus.toLowerCase() == "true") ? 1 : 0);
strOptions += ", toolbar=" + ((strToolbar.toLowerCase() == "true") ? 1 : 0);
strOptions += ", menubar=" + ((strMenubar.toLowerCase() == "true") ? 1 : 0);
strOptions += ", scrollbars=" + ((strScrollbars.toLowerCase() == "true") ? 1 : 0);
strOptions += ", resizable=" + ((strResizable.toLowerCase() == "true") ? 1 : 0);
if (g_wndSwf)
{
try
{
g_wndSwf.close()
}
catch (e)
{
}
}
var nXPos = 0;
var nYPos = 0;
var nWidth = screen.availWidth;
var nHeight = screen.availHeight;
if (window.screenX != undefined)
{
nXPos = window.screenX;
nYPos = window.screenY;
nWidth = window.innerWidth;
nHeight = window.innerHeight;
}
else if (window.screenLeft != undefined)
{
nXPos = window.screenLeft;
nYPos = window.screenTop;
nWidth = document.body.offsetWidth;
nHeight = document.body.offsetHeight;
}
strOptions += ", left=" + (nXPos + (nWidth - nWndWidth)/2);
strOptions += ", screenX=" + (nXPos + (nWidth - nWndWidth)/2);
strOptions += ", top=" + (nYPos + (nHeight - nWndHeight)/2);
strOptions += ", screenY=" + (nYPos + (nHeight - nWndHeight)/2);
g_wndSwf = window.open(GetBasePath() + g_strContentFolder + "/VideoPlayer.html?" + strSearch, "Video", strOptions);
g_wndLast = g_wndSwf;
}
////////////////////////////////////////////////////////////////////////////////
// Right click support
////////////////////////////////////////////////////////////////////////////////
var g_bSetCapture = false;
function AddRightClickListener()
{
if (IE)
{
divSwf.onmousedown = IEMouseDown;
divSwf.onmouseup = IEMouseUp
divSwf.oncontextmenu = DivContextMenu;
}
else
{
window.addEventListener('mousedown', NSMouseDown(), true);
window.addEventListener('mouseup', NSMouseUp(), true);
}
}
function IEMouseDown(evt)
{
if (event.button == 2)
{
if (NotifyRightDown("player"))
{
divSwf.setCapture();
g_bSetCapture = true;
}
}
}
function IEMouseUp()
{
if (event.button == 2)
{
NotifyRightUp("player");
}
if (g_bSetCapture)
{
g_bSetCapture = false;
divSwf.releaseCapture();
}
}
function DivContextMenu()
{
return false;
}
function NSMouseDown()
{
return function(evt)
{
if (evt.button == 2)
{
if (NotifyRightDown(evt.target.id))
{
evt.stopPropagation();
evt.preventDefault();
}
}
}
}
function NSMouseUp()
{
return function(evt)
{
if (evt.button == 2)
{
if (NotifyRightUp(evt.target.id))
{
evt.stopPropagation();
evt.preventDefault();
}
}
}
}
function NotifyRightDown(strId)
{
var bResult = false;
if (strId == "player" || strId == "eplayer")
{
var oPlayer = GetPlayer();
bResult = oPlayer.NotifyRightMouseDown();
}
return bResult;
}
function NotifyRightUp(strId)
{
var bResult = false;
if (strId == "player" || strId == "eplayer")
{
var oPlayer = GetPlayer();
bReuslt = oPlayer.NotifyRightMouseUp();
}
return bResult;
}
function MailTo(strAddress)
{
document.location = "mailto:" + strAddress;
}
function EmailResults(bShowUserScore, bShowPassingScore, bShowPassFail, bShowQuizReview, strAddress, strMainQuizId, arrQuizzes)
{
var strNewLine = "\n";
if (IE)
{
strNewLine = "%0D%0A";
}
var strTitle = g_listQuizzes[strMainQuizId].strQuizName;
var g_strSubject = "Quiz Results: " + strTitle;
var strQuizResults = "";
var strMainHeader = " " + strTitle + strNewLine + "Status, Score, Passing Score, Max Score, Min Score, Time" + strNewLine;
var strLineHeader = strNewLine + strNewLine + "Date, Time, Score, Quiz Name, Interaction ID, Interaction Type, Student Response, Result, Weight, Latency" + strNewLine;
var strMainData = strNewLine;
var strLineData = strNewLine;
var oQuizResult = g_listQuizzes[strMainQuizId];
// Status
var nPtScore = Number(oQuizResult.nPtScore);
var nPassScore = Number(oQuizResult.nPassingScore);
var strStatus = (nPtScore >= nPassScore) ? "Pass" : "Fail";
strMainData += strStatus
strMainData += ",";
// Score
strMainData += nPtScore + ",";
// Passing Score
strMainData += nPassScore + ",";
// Max Score
strMainData += 100 + ",";
// Min Score
strMainData += 0 + ",";
// Time
strMainData += GetTime(oQuizResult.dtmFinished);
// for (strQuizId in g_listQuizzes)
for (var j = 0; j < arrQuizzes.length; j++)
{
strQuizId = arrQuizzes[j];
oQuizData = g_listQuizzes[strQuizId];
var arrQuestions = oQuizData.arrQuestions;
for (var i = 0; i < arrQuestions.length; i++)
{
//Date
strLineData += GetDate(new Date()) + ",";
// Time
strLineData += arrQuestions[i].strCompletedTime + ",";
// Score
strLineData += arrQuestions[i].nPoints + ",";
// Quiz Name
strLineData += oQuizData.strQuizName + ",";
// Objective Id
strLineData += arrQuestions[i].strLMSId + ",";
// Interaction Type
strLineData += arrQuestions[i].strType + ",";
// Student Response
var strResponse = arrQuestions[i].strUserResponse;
strResponse = ReplaceAll(strResponse, "'", "%27");
strLineData += strResponse + ",";
// Result
strLineData += arrQuestions[i].strStatus + ",";
// Weight
strLineData += arrQuestions[i].nWeight + ",";
// Latency
strLineData += arrQuestions[i].nLatency;
strLineData += strNewLine;
}
}
strQuizResults = strMainHeader + strMainData + strLineHeader + strLineData;
var sHTML = "";
if (IE)
{
sHTML += '<FORM id="formQuiz" method="POST" action="mailto:' + strAddress + '?subject=' + g_strSubject + '&body=' + strQuizResults + '" enctype="text/plain">';
}
else
{
sHTML += '<FORM id="formQuiz" method="POST" action="mailto:' + strAddress + '?subject=' + g_strSubject + '" enctype="text/plain">';
sHTML += '<INPUT TYPE="hidden" NAME="Quiz Results" VALUE=\'' + strQuizResults + '\'>';
}
sHTML += '<br><input type="submit"><br>';
sHTML += '</FORM>';
document.getElementById("divEmail").innerHTML = sHTML;
document.getElementById("formQuiz").submit();
}
////////////////////////////////////////////////////////////////////////////////
// Get Time
////////////////////////////////////////////////////////////////////////////////
function GetTime(dtmDate)
{
var strResult = "";
var nHours = dtmDate.getHours();
var strAM = "am";
var nMinutes = dtmDate.getMinutes();
var strMinutes = "" + nMinutes;
var nSeconds = dtmDate.getSeconds();
var strSeconds = "" + nSeconds;
if (nMinutes < 10)
{
strMinutes = "0" + nMinutes;
}
if (nSeconds < 10)
{
strSeconds = "0" + nSeconds;
}
strResult = nHours + ":" + strMinutes + ":" + strSeconds;
return strResult;
}
function GetDate(dtmDate)
{
var strResult = "";
strResult = (dtmDate.getMonth() + 1) + "/" + dtmDate.getDate() + "/" + dtmDate.getFullYear();
return strResult;
}
////////////////////////////////////////////////////////////////////////////////
// Results data
////////////////////////////////////////////////////////////////////////////////
function QuizData(strQuizId, strQuizName)
{
this.strQuizId = strQuizId;
this.strQuizName = strQuizName;
this.arrQuestions = new Array();
this.dtmFinished = new Date();
this.strStatus = "";
this.nScore = 0;
this.nPassingScore = 80;
this.nMinScore = 0;
this.nMaxScore = 100;
this.nPtScore = 0;
this.nPtMax = 100;
this.AddQuestionResult = function(oQuestionResult)
{
var bFound = false;
for (var i = 0; i < this.arrQuestions.length; i++)
{
if (this.arrQuestions[i].nQuestionNumber == oQuestionResult.nQuestionNumber)
{
this.arrQuestions[i] = oQuestionResult;
bFound = true;
}
}
if (!bFound)
{
this.arrQuestions.push(oQuestionResult);
}
}
}
function ContentResults()
{
this.dtmFinished = new Date();
this.nPassingScore = 80;
this.nScore = 0;
this.strStatus = "incomplete";
this.strType = "quiz";
}
function QuestionResults(strId, strLMSId, strType, strCorrectResponse, strUserResponse, nLatency, strStatus, nPoints, strCompletedTime, nWeight, nQuestionNumber, strDescription, bTracked)
{
this.strId = strId;
this.strLMSId = strLMSId;
this.strType = strType;
this.strCorrectResponse = strCorrectResponse;
this.strUserResponse = strUserResponse;
this.nLatency = nLatency;
this.strStatus = strStatus;
this.nPoints = nPoints;
this.strCompletedTime = strCompletedTime;
this.nWeight = nWeight;
this.nQuestionNumber = nQuestionNumber;
this.strDescription = strDescription;
this.bTracked = bTracked;
/* this.AlertResults = function()
{
var strTemp = "Id: " + strId + "\nType: " + strType + "\nCorrectResponse: " + strCorrectResponse + "\nUserResponse: " + strUserResponse + "\nLatency: " + nLatency + "\nStatus: " + strStatus + "\nPoints: " + nPoints + "\nCompletedTime: " + strCompletedTime + "\nWeight: " + nWeight + "\nQuestionNumber: " + nQuestionNumber + "\nDescription: " + strDescription;
alert(strTemp);
}*/
}
/****************************************************/
// Tin Can
/****************************************************/
var TYPE_RESUME_SAVE = 1;
var TYPE_RESUME_RESTORE = 2;
var TYPE_TRACKING = 3;
var g_bWaitingTinCanResponse = false;
var g_arrTinCanMsgQueue = new Array();
var g_oCurrentRequest = null;
var g_bStopPosting = false;
var g_bFatalError = false;
function GetTinCanData()
{
return decodeURIComponent(g_strQuery);
}
function SendTinCanRequest(nMessageType, strMethod, strData, strUrl, arrHeaders)
{
var oTinCanRequest = new Object();
oTinCanRequest.MessageType = nMessageType;
oTinCanRequest.Method = strMethod;
oTinCanRequest.Data = unescape(strData);
oTinCanRequest.Url = strUrl;
oTinCanRequest.Headers = arrHeaders;
SendRequest(oTinCanRequest)
}
function SendRequest(oTinCanRequest)
{
if (g_bWaitingTinCanResponse || g_bStopPosting)
{
g_arrTinCanMsgQueue.push(oTinCanRequest);
}
else
{
g_oCurrentRequest = oTinCanRequest;
PostAsyncRequest(oTinCanRequest.MessageType, oTinCanRequest.Method, oTinCanRequest.Data, oTinCanRequest.Url, oTinCanRequest.Headers)
}
}
function PostAsyncRequest(nMessageType, strMethod, strData, strUrl, arrHeaders)
{
try
{
if (UseXDomainRequest(strUrl))
{
PostXDomainRequest(nMessageType, strMethod, strData, strUrl, arrHeaders, false);
}
else
{
PostXmlHttp(nMessageType, strMethod, strData, strUrl, arrHeaders);
}
}
catch (error)
{
if (confirm("Unable to connect to server. Please verify that you are connected to the internet. Retry?"))
{
g_bWaitingTinCanResponse = false;
SendRequest(g_oCurrentRequest);
return;
}
else
{
g_bStopPosting = true;
g_bFatalError = true;
GetPlayer().FatalTinCanError(0);
}
}
}
function PostXDomainRequest(nMessageType, strMethod, strData, strUrl, arrHeaders, bSync)
{
var xDomain = new XDomainRequest();
xDomain.open(strMethod, strUrl);
xDomain.MessageType = nMessageType;
xDomain.status = 0;
xDomain.onload = function()
{
xDomain.status = 200;
if (!bSync)
{
OnSendComplete(xDomain);
}
}
xDomain.onerror = function()
{
xDomain.status = -1;
if (!bSync)
{
OnSendError(xDomain);
}
}
xDomain.send(strData);
if (bSync)
{
var nStartTime = (new Date).getTime();
while ((new Date).getTime() - nStartTime < 5000 && xDomain.status == 0)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", window.location + "?" + (new Date).getTime(), false);
xmlHttp.send(null);
}
}
return xDomain.status;
}
function PostXmlHttp(nMessageType, strMethod, strData, strUrl, arrHeaders)
{
var xmlHttp = CreateXmlHttp();
if (xmlHttp != null)
{
g_bWaitingTinCanResponse = true;
xmlHttp.MessageType = nMessageType;
xmlHttp.onreadystatechange = function()
{
if (xmlHttp.readyState == 4)
{
if (xmlHttp.status >= 400 && !(IE && xmlHttp.status == 1223))
{
OnSendError(xmlHttp);
}
else
{
OnSendComplete(xmlHttp);
}
}
}
xmlHttp.open(strMethod, strUrl, true);
if (arrHeaders != null && arrHeaders.length > 0)
{
for (var i = 0; i < arrHeaders.length; i++)
{
xmlHttp.setRequestHeader(arrHeaders[i].name, arrHeaders[i].value);
}
}
xmlHttp.send(strData);
}
}
function OnSendComplete(commObj)
{
if (commObj.MessageType == TYPE_RESUME_RESTORE)
{
GetPlayer().SetTinCanResume(commObj.responseText);
}
g_bWaitingTinCanResponse = false;
g_oCurrentRequest = null;
if (g_arrTinCanMsgQueue.length > 0 && !g_bStopPosting)
{
SendRequest(g_arrTinCanMsgQueue.shift());
}
}
function OnSendError(commObj)
{
if (commObj.MessageType == TYPE_RESUME_RESTORE)
{
GetPlayer().SetTinCanResume("");
g_bWaitingTinCanResponse = false;
g_oCurrentRequest = null;
if (g_arrTinCanMsgQueue.length > 0 && !g_bStopPosting)
{
SendRequest(g_arrTinCanMsgQueue.shift());
}
}
else
{
if (confirm("Unable to connect to server. Please verify that you are connected to the internet. Retry? "))
{
g_bWaitingTinCanResponse = false;
SendRequest(g_oCurrentRequest);
}
else
{
g_bStopPosting = true;
g_bFatalError = true;
if (commObj.status)
{
GetPlayer().FatalTinCanError(commObj.status);
}
}
}
}
function CheckTinCanComplete()
{
g_bStopPosting = true;
while (g_arrTinCanMsgQueue.length > 0)
{
var oRequest = g_arrTinCanMsgQueue.shift();
PostSyncRequest(oRequest.Method, oRequest.Data, oRequest.Url, oRequest.Headers)
}
}
function CreateXmlHttp()
{
var xmlHttp = null;
var arrCtrlName = new Array("MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp");
var nIndex = 0;
if (window.XMLHttpRequest)
{
try
{
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
xmlHttp = null;
}
}
if (xmlHttp == null && window.ActiveXObject)
{
// Use the ActiveX Control
while (xmlHttp == null && nIndex < arrCtrlName.length)
{
try
{
xmlHttp = new ActiveXObject(arrCtrlName[nIndex]);
}
catch (e)
{
xmlHttp = null;
}
nIndex++;
}
}
return xmlHttp;
}
function PostSyncRequest(strMethod, strData, strUrl, arrHeaders)
{
try
{
var nStatus = 0;
if (UseXDomainRequest(strUrl))
{
nStatus = PostXDomainRequest(0, strMethod, strData, strUrl, arrHeaders, true);
}
else
{
nStatus = PostSyncXmlHttp(strMethod, strData, strUrl, arrHeaders);
}
if (nStatus != 200)
{
if(confirm("Could not save the result data. You may need to login again. Retry?"))
{
PostSyncRequest(strMethod, strData, strUrl, arrHeaders);
return;
}
else
{
g_bFatalError = true;
}
}
}
catch (error)
{
if (confirm("Unable to connect to server. Please verify that you are connected to the internet. Retry?"))
{
PostSyncRequest(strMethod, strData, strUrl, arrHeaders);
return;
}
else
{
g_bFatalError = true;
}
}
}
function PostSyncXmlHttp(strMethod, strData, strUrl, arrHeaders)
{
var xmlHttp = CreateXmlHttp();
var nStatus = 200;
if (xmlHttp != null)
{
xmlHttp.open(strMethod, strUrl, false);
for (var i = 0; i < arrHeaders.length; i++)
{
xmlHttp.setRequestHeader(arrHeaders[i].name, arrHeaders[i].value);
}
xmlHttp.send(strData);
if(xmlHttp.status >= 400 && !(IE && xmlHttp.status == 1223))
{
nStatus = -1;
}
}
return nStatus;
}
function UseXDomainRequest(strUrl)
{
var bResult = false;
if (IE)
{
var xmlHttp = CreateXmlHttp();
var anchorDest = (document.createElement("a"));
var anchorSource = (document.createElement("a"));
anchorDest.href = strUrl;
anchorSource.href = window.location;
bResult = (anchorDest.hostname != anchorSource.hostname || anchorDest.protocol != anchorSource.protocol || anchorDest.port != anchorSource.port);
}
return bResult;
}