blob: 572eb6d99d1e953b5df64e4f8977c1dd02d210b8 [file] [log] [blame]
/*********************************************************************
--- flashcommand : fscommand handler functions ---
version 5.0.0
This is the general fscommand handler for ALL output formats
*********************************************************************/
///////////////////////////////////////////////////////////////////////////
// Global Vars
///////////////////////////////////////////////////////////////////////////
var DATA_PATH = "data/swf/";
var FLASH_WND_WIDTH = 40;
var FLASH_WND_HEIGHT = 30;
var SWF_BASE_WIDTH = 980;
var SWF_BASE_HEIGHT = 640;
var WEBOBJ_LEFT = 254;
var WEBOBJ_TOP = 36;
if (FF1 || NS6plus)
{
WEBOBJ_LEFT = 253;
WEBOBJ_TOP = 34;
}
if (!g_bScaleSwf)
{
WEBOBJ_LEFT -= 8;
WEBOBJ_TOP -= 4;
strSwfWidth = 992;
strSwfHeight = 652;
}
var WEBOBJ_DISPLAY3_XPOS_ADJUST = 150;
var WEBOBJ_DISPLAY3_YPOS_ADJUST = 20;
var WEBOBJ_DISPLAY2_XPOS_ADJUST = 119;
// Browser Resize
var g_ResizeTimeout;
var g_strQMPath;
///////////////////////////////////////////////////////////////////////////
// Utility Functions
///////////////////////////////////////////////////////////////////////////
function Click()
{
alert("Test");
}
function CreateBookmark(args, bSlide)
{
if (!Opera7plus && IE4plus)
{
var nSlideNum = args.substring(0,args.indexOf("|"));
var strTitle = args.substring((args.indexOf("|")+1),args.length);
var _proto = document.location.protocol;
var _host = document.location.host;
var _pathname = document.location.pathname;
var _search = document.location.search;
var newpath = "";
var newUrl = "";
var nPos = 0;
nPos = _pathname.lastIndexOf("/");
if (nPos <= 0)
{
nPos = _pathname.lastIndexOf("\\");
}
if ( nPos < _pathname.length)
{
// if / is not the last char grab the trailing "/"
nPos++;
}
if (_search.indexOf("akpDocumentID",0) < 0)
{
newpath = _pathname.substr(0, nPos) + "player.html";
newUrl = _proto + "//" + _host + newpath +"?slide=" + nSlideNum;
}
else
{
did = _search.substring((_search.lastIndexOf("akpDocumentID") + ("akpDocumentID").length+1), _search.length);
newpath = "/Portal/Storage/DownloadDocument.aspx?DocumentID=" + did;
newUrl = _proto+"//"+ _host + newpath + "?slide="+ nSlideNum;
}
if (bSlide)
{
strTitle = strTitle + " - Powered by Articulate ";
}
else
{
strTitle = strTitle + " Slide "+ nSlideNum +" - Powered by Articulate ";
}
window.external.AddFavorite(newUrl, strTitle);
}
else
{
var strErr = "Your browser does not support automatic bookmarking.\nTo bookmark this presentation, please create a bookmark \non the web page that launched this window.";
alert(strErr);
}
}
function OpenFlashObjectWnd(args)
{
str = args;
params = str.split("|");
var strContainerType = params[0]; // Unused
var strFilename = params[1];
var nXPos = parseInt(params[2]); // Unused
var nYPos = parseInt(params[3]); // Unused
var nWidth = parseInt(params[4]);
var nHeight = parseInt(params[5]);
var strBrowserOptions = params[6];
var re = /width=0/gi;
ww = strBrowserOptions.search(re);
re = /height=0/gi;
wh = strBrowserOptions.search(re);
// If the width and height are 0 set to Full screen
if ((ww >= 0 && wh >= 0) || (nWidth ==0 && nHeight==0))
{
nWidth = window.screen.availWidth;
nHeight = window.screen.availHeight;
}
else
{
nWidth += FLASH_WND_WIDTH;
nHeight += FLASH_WND_HEIGHT;
}
// Put the width,height settings into opener options here,
strBrowserOptions += ", width=" + nWidth + ",height=" + nHeight;
// Get the HTML filename
var filebase = strFilename.substring(0,strFilename.toLowerCase().indexOf(".swf"));
// Display the Flash Object
var wndFlashObj = window.open(DATA_PATH + filebase + ".html", "flashobjectwin", strBrowserOptions);
wndFlashObj.focus();
}
function OpenWebObjectWnd(args)
{
str = args;
params = str.split("|");
var strContainerType = params[0]; // Unused
var strObjectType = params[1]; // Unused
var nXPos = params[2]; // Unused
var nYPos = params[3]; // Unused
var nWidth = params[4];
var nHeight = params[5];
var strBrowserOptions = params[6];
var strMode = params[7]; // Unused
var strUrl = params[8];
//Check for repository:
if (strUrl.toLowerCase().indexOf("repository://") == 0)
{
strUrl = "/Portal/Storage/Viewers/ArtPlayer/FollowLink.aspx?file=" + strUrl;
}
var re = /width=0/gi;
ww = strBrowserOptions.search(re);
re = /height=0/gi;
wh = strBrowserOptions.search(re);
// If the width and height are 0 set to Full screen
if ((ww >= 0 && wh >= 0) || (nWidth ==0 && nHeight==0))
{
nWidth = window.screen.availWidth;
nHeight = window.screen.availHeight;
strBrowserOptions += ",width="+nWidth+",height="+nHeight+",left=0,top=0,screenX=0,screenY=0";
}
else
{
strBrowserOptions += ",width=" + nWidth + ",height=" +nHeight;
}
//--Setup the Window.open Target Url to popup and populate:
var wndWebObj = window.open(strUrl, "mediaobjectwin", strBrowserOptions);
wndWebObj.focus();
}
function ShowWebObjectDiv(args)
{
str = args;
params = str.split("|");
var strContainerType = params[0]; // Unused
var strObjectType = params[1]; // Unused
var nXPos = parseInt(params[2]);
var nYPos = parseInt(params[3]);
var nWidth = parseInt(params[4]);
var nHeight = parseInt(params[5]);
var strBrowserOptions = params[6];
var strMode = params[7]; // scale modes
var strUrl = params[8];
//Check for repository:// string//
if (strUrl.toLowerCase().indexOf("repository://") == 0)
{
strUrl = "/Portal/Storage/Viewers/ArtPlayer/FollowLink.aspx?file=" + strUrl;
}
//- (iframe) -//
if (g_bWebObject)
{
// Set the global values
g_bWebObjDisplay = true;
g_nWebXPos = nXPos;
g_nWebYPos = nYPos;
g_nWebWidth = nWidth;
g_nWebHeight = nHeight;
g_strWebMode = strMode;
// Set the URL
var myIFrame = document.getElementById("eIFContent");
myIFrame.src = strUrl;
// Adjust the Size and position
ResizeWebObject();
}
else
{
//alert("Can't find a media layer. Opening in a new window instead.");
window.open(strUrl, "webobjectwin", "width=700,height=500,"+strBrowserOptions);
}
}
function HideWebObjectDiv(args)
{
//clear the iframe
if (g_bWebObject)
{
g_bWebObjDisplay = false;
// Make the WebObject Small for Firefox
g_nWebWidth = 5;
g_nWebHeight = 5;
ResizeWebObject();
// Set the layer to be invisible
var layerWebObject = document.getElementById("eLayer1");
layerWebObject.style.visibility = 'hidden';
// Fill with blank page
var myIFrame = document.getElementById("eIFContent");
myIFrame.src = "player/blank.html";
}
}
function SetDisplayMode(args)
{
var params = args.split("|");
currentDisplayMode = params[0];
if (g_bWebObjDisplay)
{
ResizeWebObject();
}
}
function ShowMediaObject(args)
{
//rightclick insert webobject, display in new window//
str = args;
params = str.split("|");
var _url = params[0];
var _options = params[1];
//--Launch a new window with the specifed parameters and content:
window.open(_url, "mediaobjectwin", _options);
}
function SendQuiz()
{
g_strQuizResults = g_strQuizResults.replace(/'/g,"&#39;");
var sHTML = "";
sHTML += '<FORM id="formQuiz" method="POST" action="mailto:' + g_strEmail + '?subject=' + g_strSubject + '" enctype="text/plain">';
sHTML += '<INPUT TYPE="hidden" NAME="Quiz Results" VALUE=\'' + g_strQuizResults + '\'>';
sHTML += '<br><input type="submit"><br>';
sHTML += '</FORM>';
document.getElementById("divQuiz").innerHTML = sHTML;
document.getElementById("divQuiz").document.getElementById("formQuiz").submit();
}
function GetBasePath()
{
var strFullPath = document.location.href;
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);
}
///////////////////////////////////////////////////////////////////////////
// Resize Event
///////////////////////////////////////////////////////////////////////////
var g_resizeTimer;
var g_nWebXPos = 0;
var g_nWebYPos = 0;
var g_nWebWidth = 0;
var g_nWebHeight = 0;
var g_bWebObjDisplay = false;
var g_strWebMode = "scaleall";
function ResizeWebObject()
{
var layerWebObject = document.getElementById("eLayer1");
var myIFrame = document.getElementById("eIFContent");
var nWidth = g_nWebWidth;
var nHeight = g_nWebHeight;
var nXPos = g_nWebXPos;
var nYPos = g_nWebYPos;
// Calculate the Ratio and Offsets
var swfMovie = thisMovie('player');
if (!swfMovie.clientHeight)
{
swfMovie = document.getElementById("player");
}
var nSwfXPos = swfMovie.offsetLeft;
var nSwfYPos = swfMovie.offsetTop;
var nSwfHeight = swfMovie.clientHeight;
var nSwfWidth = swfMovie.clientWidth;
if (isMac && IE5)
{
nSwfWidth = swfMovie.width;
if (swfMovie.width == "100%")
{
nSwfWidth = document.body.clientWidth;
}
nSwfHeight = swfMovie.height;
if (swfMovie.height == "100%")
{
nSwfHeight = document.body.clientHeight;
}
}
var nWRatio = nSwfWidth / SWF_BASE_WIDTH;
var nHRatio = nSwfHeight / SWF_BASE_HEIGHT;
var nRatio = 1;
var nLeftOffset = 0;
var nTopOffset = 0;
// Adjust the Width and the height for firefox
if (FF1 || NS6plus)
{
nWidth -= 5;
nHeight -= 5;
}
//Handle special Mode 2 and 3 cases:
if (currentDisplayMode == 3)
{
nXPos -= WEBOBJ_DISPLAY3_XPOS_ADJUST;
nYPos -= WEBOBJ_DISPLAY3_YPOS_ADJUST;
nXPos *= 1.13;
nYPos *= 1.13;
nWidth *= 1.13;
nHeight *= 1.13;
}
else if (currentDisplayMode == 2)
{
nXPos -= WEBOBJ_DISPLAY2_XPOS_ADJUST;
}
if (nHRatio < nWRatio)
{
nRatio = nHRatio;
nLeftOffset = (nSwfWidth - (SWF_BASE_WIDTH * nRatio)) / 2;
}
else
{
nRatio = nWRatio;
nTopOffset = (nSwfHeight - (SWF_BASE_HEIGHT * nRatio)) / 2;
}
strMode = "scaleall";
if ((g_strWebMode == "") || (g_strWebMode == "scaleall"))
{
factorSize = nRatio;
factorPosition = nRatio;
}
if (g_strWebMode =="scaleposition")
{
factorSize = 1;
factorPosition = nRatio;
}
if (g_strWebMode == "scalesize")
{
factorSize = nRatio;
factorPosition = 1;
}
if (g_strWebMode == "absolute")
{
factorSize = 1;
factorPosition = 1;
}
iLeft = (WEBOBJ_LEFT + nXPos) * factorPosition + nLeftOffset;
iTop = (WEBOBJ_TOP + nYPos) * factorPosition + nTopOffset;
iWidth = nWidth * factorSize;
iHeight = nHeight * factorSize;
//Resize the layer
layerWebObject.style.left = nSwfXPos + iLeft;
layerWebObject.style.top = nSwfYPos + iTop;
layerWebObject.style.width = iWidth;
layerWebObject.style.height = iHeight;
layerWebObject.style.visibility = 'visible';
// Resize the IFrame
myIFrame.style.width = iWidth;
myIFrame.style.height = iHeight;
}
function WindowResize()
{
// Notify the swf that we have resized. This is for
// text that does not scale properly
if (g_bScaleSwf)
{
// Make sure that we don't send 100 resize messages in a row
clearTimeout(g_ResizeTimeout);
g_ResizeTimeout = setTimeout("NotifySwfResize()", 200);
}
// Resize the Web Object
if (g_bWebObjDisplay)
{
ResizeWebObject();
}
}
function NotifySwfResize()
{
var swfMovie = thisMovie('player');
swfMovie.SetVariable("g_Resize.Trigger", "1");
}
function SetBgColor(strColor)
{
var strTemp = "";
if (IE4 && !Opera && !isMac)
{
strTemp = "0x" + strColor;
document.bgColor = parseInt(strTemp);
}
else
{
strTemp = "#" + strColor;
document.bgColor = strTemp;
}
}
window.onresize = WindowResize;
var g_strAttachment = "";
function OpenAttachment()
{
if (IESP2)
{
try
{
window.open('player/attach.html?' + GetBasePath() + g_strAttachment,"attach")
}
catch (e)
{
if (e.number == -2147024891)
{
alert("For viewing attachments when presentation is not playing from a website, view the Knowledge Base article located at http://kb.articulate.com/kb/000669.php")
}
}
}
else
{
window.open(GetBasePath() + g_strAttachment);
}
}
////////////////////////////////////////////////////////////////////////////////
// Results Screen Code
////////////////////////////////////////////////////////////////////////////////
var g_arrResults = new Array();
var g_oQuizResults = new Object();
function QuestionResult(nQuestionNum, strQuestion, strResult, strCorrectResponse, strStudentResponse, nPoints)
{
if (nPoints < 0)
{
nPoints = 0;
}
if (strCorrectResponse == "")
{
strCorrectResponse = "&nbsp;";
}
this.nQuestionNum = nQuestionNum
this.strQuestion = strQuestion;
this.strCorrectResponse = strCorrectResponse;
this.strStudentResponse = strStudentResponse;
this.strResult = strResult;
this.nPoints = nPoints;
this.bFound = false;
}
function StoreResult(args)
{
var arrParams = args.split("|$:$|");
var oQuestionResult = new QuestionResult(parseInt(arrParams[0]) + 1, arrParams[1], arrParams[2], arrParams[3], arrParams[4] ,arrParams[5]);
var nIndex = g_arrResults.length;
// Lets see if we have answered the question before
for (var i = 0; i < g_arrResults.length; i++)
{
if (g_arrResults[i].nQuestionNum == oQuestionResult.nQuestionNum)
{
nIndex = i;
break;
}
}
g_arrResults[nIndex] = oQuestionResult;
}
function StoreQuizResult(args)
{
var arrParams = args.split("|$:$|");
g_oQuizResults.dtmFinished = new Date();
g_oQuizResults.strResult = arrParams[0];
g_oQuizResults.strScore = arrParams[1];
g_oQuizResults.strPassingScore = arrParams[2];
}
function ShowResult(args)
{
var arrData = args.split(";");
if (!g_oQuizResults.oOptions)
{
g_oQuizResults.oOptions = new Object();
}
g_oQuizResults.oOptions.bShowUserScore = (arrData[0] == "1");
g_oQuizResults.oOptions.bShowPassingScore = (arrData[1] == "1");
g_oQuizResults.oOptions.bShowShowPassFail = (arrData[2] == "1");
g_oQuizResults.oOptions.bShowQuizReview = (arrData[3] == "1");
g_oQuizResults.oOptions.strResult = arrData[4];
g_oQuizResults.oOptions.strName = arrData[5];
window.open(GetBasePath() + g_strQMPath + "report.html", "Reports")
}
////////////////////////////////////////////////////////////////////////////////
// Zoom code
////////////////////////////////////////////////////////////////////////////////
var g_oZoomInfo = new Object();
var g_wndZoom;
function PopZoomImage(strFileName, nWidth, nHeight)
{
var strScroll = "0";
g_oZoomInfo.strFileName = strFileName;
g_oZoomInfo.nWidth = parseInt(nWidth);
g_oZoomInfo.nHeight = parseInt(nHeight);
if (g_oZoomInfo.nWidth > screen.availWidth)
{
g_oZoomInfo.nWidth = screen.availWidth;
strScroll = "1";
}
if (g_oZoomInfo.nHeight > screen.availHeight)
{
g_oZoomInfo.nHeight = screen.availHeight;
strScroll = "1";
}
var strOptions = "width=" + g_oZoomInfo.nWidth +",height=" + g_oZoomInfo.nHeight + ", status=0, toolbar=0, location=0, menubar=0, scrollbars=" + strScroll;
if (g_wndZoom)
{
try
{
g_wndZoom.close()
}
catch (e)
{
}
}
g_wndZoom = window.open(GetBasePath() + g_strQMPath + "zoom.html", "Zoom", strOptions);
}
///////////////////////////////////////////////////////////////////////////
// Flash Command Handler
///////////////////////////////////////////////////////////////////////////
function player_DoFSCommand(command, args)
{
switch (command)
{
case "bookmark_presentation":
CreateBookmark(args, false);
break;
case "bookmark_slide":
CreateBookmark(args, true);
break;
case "hyper_flashobject":
OpenFlashObjectWnd(args);
break;
case "hyper_webobject_newwindow":
OpenWebObjectWnd(args);
break;
case "hyper_webobject_inplayer":
ShowWebObjectDiv(args);
break;
case "hyper_webobject_inplayer_hide":
HideWebObjectDiv(args);
break;
case "ART_displaymode":
SetDisplayMode(args);
break;
case "hyper_mediaobject":
ShowMediaObject(args);
break;
case "ART_CloseAndExit":
if (!g_bLMS)
{
top.window.close();
}
break;
case "ART_SetBgBolor":
SetBgColor(args);
break;
case "ART_Attachment":
g_strAttachment = args;
if (IESP2)
{
OpenAttachment()
}
else
{
setTimeout("OpenAttachment()", 100)
}
break;
// Email Handlers
case "emailEmail":
g_strEmail = args;
break;
case "QuizResults":
case "Quiz Results":
g_strQuizResults = args;
break;
case "emailSubject":
g_strSubject = args;
break;
case "emailSubmit":
SendQuiz();
break;
// QM Handlers
case "SetQMPath":
g_strQMPath = args;
break;
case "StoreQuestionResult":
StoreResult(args);
break;
case "StoreQuizResult":
StoreQuizResult(args);
break;
case "DisplayPrintScreen":
ShowResult(args);
break;
case "ART_QMAttachment":
g_strAttachment = g_strQMPath + args;
if (IESP2)
{
OpenAttachment()
}
else
{
setTimeout("OpenAttachment()", 100)
}
break;
case "QM_ZoomImage":
var arrData = args.split(";");
PopZoomImage(arrData[0], arrData[1], arrData[2]);
break;
}
if (g_bLMS)
{
customFScommandHandler(command, args); //found in Lms.js
}
}