| /********************************************************************* |
| --- 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,"'"); |
| |
| 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 = " "; |
| } |
| |
| 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 |
| } |
| } |