/*********************************************************************
--- 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 WriteSwfObject(strSwfWidth, strSwfHeight, strFlashVars, bWebObject, strTransparent, strScale)
{
        document.write("<OB"+"JECT classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' ");
        document.write("codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,79,0' ");
        document.write("WIDTH='" + strSwfWidth + "' HEIGHT='" + strSwfHeight + "' ID='player' ALIGN=''> ");
        document.write("<PARAM NAME=movie VALUE='player/playershell.swf'> ");
        document.write("<PARAM NAME=quality VALUE='best'> ");
        if (bWebObject)
        {
                document.write("<PARAM NAME=WMODE VALUE='transparent'> ");
        }
        document.write("<PARAM NAME=scale VALUE='" + strScale + "'> ");
        document.write("<PARAM NAME=menu VALUE='false'>");
        document.write("<PARAM NAME=FlashVars VALUE='" + strFlashVars + "'>");
        document.write("<EM"+"BED WIDTH='"+ strSwfWidth +"' HEIGHT='"+ strSwfHeight +"' src='player/playershell.swf' NAME='player' quality='best' " + strTransparent + " scale='" + strScale + "'  ALIGN='' ");
        document.write("FlashVars='" + strFlashVars + "'");
        document.write(" TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/go/getflashplayer' swLiveConnect='true' menu='false'></EM"+"BED>");
        document.write("</OB"+"JECT> ");
}


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()
{
        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()
{
        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.nScore = parseInt(arrParams[1]);
        g_oQuizResults.nPassingScore = parseInt(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;
                                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;
                        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
        }
}