home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2 (Special) / PCPro-2b.iso / Demos / Macromedia / CourseBuilder / CourseBuilderInstaller.exe / Disk1 / data1.cab / Dreamweaver-unInstalled / Configuration / Commands / CourseBuilder Interaction.js < prev    next >
Encoding:
JavaScript  |  1999-12-06  |  11.5 KB  |  367 lines

  1. // Copyright 1998,1999 Macromedia, Inc. All rights reserved.
  2.  
  3. //*************** GLOBALS  *****************
  4.  
  5. var HELP_DOC = '';
  6.  
  7. var W = ''; //wizard object
  8. var PERSISTANCE = ''; // the global persistance object
  9. var PAGE = '';
  10.  
  11. var ID_defaultInt = "G01";
  12.  
  13. // Argument constants
  14.  
  15. //interaction args
  16. var ARG_intSelf = 0;
  17. var ARG_intJudgeOnSel = 1;
  18. var ARG_intAllowMultiSel = 2;
  19. var ARG_intAllThatApply = 3;
  20. var ARG_intUnknownIsCorrect = 4;
  21. var ARG_intDisabled = 5;
  22. var ARG_intTriesLimit = 6;
  23. var ARG_intTimeLimit = 7;
  24. var ARG_intIntId = 8;
  25. var ARG_intTObjId = 9;
  26. var ARG_intTType = 10;
  27. var ARG_intTWeight = 11;
  28. var ARG_intDoTracking = 12;
  29. var ARG_dontCare0 = "";
  30.  
  31. //element args
  32. var ARG_elementName = 1;
  33. var ARG_elementInitialValue = 2;
  34. var ARG_elementExpectedValue = 3;
  35. var ARG_elementIsCorrect = 4;
  36. var ARG_elementScore = 5;
  37.  
  38. var ARG_ibtnIsToggle = 6;
  39. var ARG_ibtnStateMask = 7;
  40.  
  41. var ARG_timrNumberOfFrames = 3;
  42. var ARG_timrTimeLimit = 4;
  43. var ARG_timrReverseFrames = 5;
  44.  
  45. var ARG_sldrIValue = 2;
  46. var ARG_sldrMin = 3;
  47. var ARG_sldrMax = 4;
  48. var ARG_sldrUseFloat = 5;
  49. var ARG_sldrIsVertical = 6;
  50.  
  51. var ARG_dragIsDraggable = 3;
  52. var ARG_dragIsTarget = 4;
  53. var ARG_dragSnapsOnMiss = 5;
  54. var ARG_dragSnapsOnIncorrect = 6;
  55.  
  56. //choice args
  57. var ARG_choiceName = 2;
  58. var ARG_choiceExpectedValue = 3;
  59. var ARG_choiceIsCorrect = 4;
  60. var ARG_choiceScore = 5;
  61.  
  62. var ARG_textCompMatchCase = 6;
  63. var ARG_textCompMatchAll = 7;
  64.  
  65. var ARG_dragTargElement = 1;
  66. var ARG_dragTargTarget = 2;
  67. var ARG_dragTargIsCorrect = 3;
  68. var ARG_dragTargScore = 4;
  69. var ARG_dragTargTolerance = 5;
  70. var ARG_dragTargAlignment = 6;
  71. var ARG_dragTargOffset = 7;
  72. var ARG_dragTargSnapsTo = 8;
  73.  
  74. var ARG_actionMgrType = 0;
  75. var ARG_actionMgrName = 1;
  76. var ARG_actionMgrData = 2;
  77.   
  78.   
  79. // Extension Constants
  80. var EXT_sldrHorz   = "_hor";
  81. var EXT_sldrVert   = "_ver";
  82. var EXT_sldrThumb  = "_thm";
  83. var EXT_sldrTrack  = "_trk";
  84.  
  85. var EXT_ibtnSel    = "_sel";
  86. var EXT_ibtnHlt    = "_hlt";
  87. var EXT_ibtnDis    = "_dis";
  88. var EXT_ibtnSelHlt = "_sel_hlt";
  89. var EXT_ibtnSelDis = "_sel_dis";
  90.  
  91. var EXT_thumbnail  = "_tnail";
  92.  
  93.  
  94. // Function Name Constants
  95. var FN_intName = "new MM_interaction";
  96. var FN_elemName = "add";
  97. var FN_actionMgrName = "am";
  98. var FN_callStart = "(";
  99. var FN_callEnd   = ");";
  100. var FN_callQuote = "'";
  101.  
  102.  
  103. // Tag Name Constants
  104. var TAGNAME_defaultElem = "elem";
  105. var TAGNAME_imageCode = "Img";
  106. var TAGNAME_sldrThumbCode = "Thm";
  107. var TAGNAME_sldrTrackCode = "Trk";
  108. var TAGNAME_buttonCode = "Btn"
  109. var TAGNAME_inputCode = "Inp";
  110. var TAGNAME_inputRadioCode = "RadioInp";
  111.  
  112. // Menu data arrays
  113. var MENUDATA_SnapTo = new Array('Center','Left','Right','Top','Bottom');
  114. var MENUDATA_ChoiceIs = new Array('null',1,0);
  115.  
  116. // Action Manager constants
  117. var MENUDATA_amAddType = new Array("segm", "cond", "else", "stop");
  118.  
  119.  
  120.  
  121. //******************* API **********************
  122.  
  123. function commandButtons(){
  124.   return new Array(BTN_OK,"wizardOk()",
  125.                    BTN_Cancel,"wizardCancel()",
  126.                    BTN_Help,"displayHelp()");
  127. }
  128.  
  129.  
  130. function wizardOk() {
  131.   window.close();
  132.   W.finish();  
  133.   PAGE.insertBehaviorFns(W.src);
  134.   PAGE.removeRedundantFns();
  135.   PAGE.removeEmptyAttainObjs();
  136.   W.setSelection();
  137.   PERSISTANCE.save(); // save the persistance values
  138.   //W = null; // causes onBlur problems on the Mac
  139.   garbageCollect(false);
  140. }
  141.  
  142.  
  143. function wizardCancel() {
  144.   window.close();
  145.   if (W) {
  146.     W.finish();
  147.     PERSISTANCE.save(); // save the persistance values
  148.     W.revert();
  149.   }
  150.   //W = null;  // causes onBlur problems on the Mac
  151.   garbageCollect(false);
  152. }
  153.  
  154.  
  155. function canAcceptCommand() {
  156.   var retVal = false;
  157.   if (DWAext.GALLERY_PAGE) {
  158.     retVal = true;
  159.   } else {
  160.     retVal = (getEnclosingAttainObj() != null);
  161.   }
  162.   return retVal;
  163. }
  164.  
  165.  
  166. //improve performance, this hardcodes the expected window size. Without
  167. //this fn, or if WIZARDSIZE_Autosize is false, DW will render the UI dynamically.
  168. //IMPORTANT: for internationalization and other UI changes, update the globals.
  169.  
  170. function WindowDimensions(platform) {
  171.   if (!WIZARDSIZE_Autosize) {
  172.     if (platform.charAt(0) == "m" || platform.charAt(0) == "M") //if Mac
  173.       return WIZARDSIZE_Mac;
  174.     else                //else Windows 95 or NT
  175.       return WIZARDSIZE_Win;
  176.   }
  177.   return false;
  178. }
  179.  
  180. //***************** LOCAL FUNCTIONS  ******************
  181.  
  182. function initializeUI() {
  183.   var attainObj, theSel;
  184.   var docDOM = dw.getDocumentDOM();
  185.   
  186.   if (!regCheck()) {
  187.     window.close();
  188.     return;
  189.   }
  190.     
  191.   setNewline(); //ensure NEWLINE global matches page
  192.  
  193.   // create and load the global persistance object
  194.   PERSISTANCE = new Persistance(FILE_persist);
  195.   PERSISTANCE.load();
  196.  
  197.   // create the page object
  198.   PAGE = new AttainDOM();
  199.  
  200.   // Initialize the wizard
  201.   W = new AoWizard();
  202.   //Define new layers. Pass the layer name, and adds that name as a hash to the W.p array.
  203.   //These names can then be placed in the order arrays.
  204.   W.p['gallery'] = new pgGallery('gallery');
  205.   W.p['inptInt'] = new pgInt('inptInt');
  206.   W.p['dragInt'] = new pgInt('dragInt');
  207.   W.p['hotaInt'] = new pgInt('hotaInt');
  208.   W.p['textInt'] = new pgInt('textInt');
  209.   W.p['timrInt'] = new pgInt('timrInt');
  210.   W.p['sldrInt'] = new pgInt('sldrInt');
  211.   W.p['ibtnInt'] = new pgInt('ibtnInt');
  212.   W.p['actnInt'] = new pgInt('actnInt');
  213.   W.p['inptElements'] = new pgElements('inptElements');
  214.   W.p['ibt2Elements'] = new pgElements('ibt2Elements');
  215.   W.p['dragElements'] = new pgElements('dragElements');
  216.   W.p['hotaElements'] = new pgElements('hotaElements');
  217.   W.p['textChoices'] = new pgElements('textChoices');
  218.   W.p['timrChoices'] = new pgElements('timrChoices');
  219.   W.p['sldrChoices'] = new pgElements('sldrChoices');
  220.   W.p['dragChoices'] = new pgChoices('dragChoices');
  221.   W.p['checkbox'] = new pgInt('checkbox');
  222.   W.p['actionMgr'] = new pgActionMgr('actionMgr');
  223.   W.p['intTrack'] = new pgTrack('intTrack');
  224.   //Create new orderings for walking through the wizard.
  225.   //Templates request which ordering to be used by setting their ELEMTYPE
  226.   //attribut to one of the following:
  227.   //  - inpt (form buttons, radios, and checkboxes)
  228.   //  - ibtn (image buttons and images)
  229.   //  - hota (hot area layers)
  230.   //  - text (form text input)
  231.   //  - sldr (slider layers)
  232.   //  - timr (timers - visible or invisible)
  233.   //  - drag (drag and drop layers)
  234.   //  - actn (action manager only - no elements)
  235.   //Type "gall" is the dummy until a template has been read in.
  236.   W.order['gall'] = new Array("gallery");
  237.   W.order['inpt'] = new Array("gallery", "inptInt", "inptElements","actionMgr");
  238.   W.order['ibt2'] = new Array("gallery", "inptInt", "ibt2Elements", "actionMgr");
  239.   W.order['drag'] = new Array("gallery", "dragInt", "dragElements", "dragChoices", "actionMgr");
  240.   W.order['hota'] = new Array("gallery", "hotaInt", "hotaElements", "actionMgr");
  241.   W.order['text'] = new Array("gallery", "textInt", "textChoices", "actionMgr");
  242.   W.order['timr'] = new Array("gallery", "timrInt", "timrChoices", "actionMgr");
  243.   W.order['sldr'] = new Array("gallery", "sldrInt", "sldrChoices", "actionMgr");
  244.   W.order['ibtn'] = new Array("gallery", "ibtnInt", "actionMgr");
  245.   W.order['actn'] = new Array("gallery", "actnInt", "actionMgr");
  246.  
  247.   if (!DWAext.GALLERY_PAGE) { 
  248.     attainObj = getEnclosingAttainObj();
  249.     theSel = docDOM.nodeToOffsets(attainObj);
  250.     W.editSelection(theSel);
  251.   } else { 
  252.     if (!isValidIp()) {
  253.       alert(MSG_invalidIP);
  254.       window.close();
  255.       return;
  256.     }
  257.     DWAext.GALLERY_PAGE = false;
  258.     W.loadGallery();
  259.   }
  260.   W.start();
  261. }
  262.  
  263. function isValidIp() {
  264.   var docSel, currElem, retVal = false;
  265.   var docDOM = dw.getDocumentDOM();
  266.   docSel = docDOM.getSelection();
  267.   currElem = docDOM.offsetsToNode(docSel[0],docSel[1]);
  268.   while (currElem != null && !retVal) {
  269.     retVal = (currElem.nodeType == Node.ELEMENT &&
  270.               currElem.tagName == "BODY");
  271.     currElem = currElem.parentNode;
  272.   }
  273.   return retVal;
  274. }
  275.  
  276.  
  277. function getResource(resCode, p1, p2, p3, p4, p5, p6, p7, p8, p9) {
  278.   var retVal = false;
  279.  
  280.   if (resCode == "TAG_newImage")
  281.     retVal = "<IMG NAME=\"%1\" SRC=\"%2\"" + (PREF_imageAttributes?" ":"") +
  282.              PREF_imageAttributes + ">";
  283.   else if (resCode == "NAME_newElem")
  284.     retVal = PREF_newElemName + "%1";
  285.   else if (resCode == "VALUE_defaultTriesLimit")
  286.     retVal = PREF_defaultTriesLimit.toString();
  287.   else if (resCode == "VALUE_defaultTimeLimit")
  288.     retVal = PREF_defaultTimeLimit.toString();
  289.   else if (resCode == "VALUE_defaultJudgeBtnName")
  290.     retVal = PREF_defaultJudgeBtnName;
  291.   else if (resCode == "VALUE_defaultResetBtnName")
  292.     retVal = PREF_defaultResetBtnName;
  293.   else if (resCode == "ATTR_layerStyle")
  294.     retVal = "position:absolute;" + (PREF_layerStyle?" ":"") + PREF_layerStyle;
  295.   else if (resCode == "TAG_newBackdropLayer")
  296.     retVal = "<DIV id=\"%1\" style=\"position:absolute;" + 
  297.              (PREF_backdropLayerStyle?" ":"") + PREF_backdropLayerStyle + "\">" +
  298.               NEWLINE + "<IMG NAME=\"%2\" SRC=\"%3\"></DIV>";
  299.   else if (resCode == "FN_newAmTree")
  300.     retVal = "am(\'segm\',\'Segment\',1,0)";
  301.   else if (resCode == "FN_newAmCond")
  302.     retVal = "am(\'cond\',\'Condition\',\'\',0)";
  303.   else if (resCode == "FN_newAmElse")
  304.     retVal = "am(\'cond\',\'else\',\'true\',0)";
  305.   else if (resCode == "FN_newAmStop")
  306.     retVal = "am(\'actn\',\'stop\',\'stop\',\'\')";
  307.   else if (resCode == "FN_newAmActn")
  308.     retVal = "am(\'actn\',\'Action\',\'\',\'\')";
  309.   else if (resCode == "FN_newAmEnd")
  310.     retVal = "am(\'end\')";
  311.   else if (resCode == "FN_newElemDistCond")
  312.     retVal = "G01.e[\\'%1\\'].selected == true";
  313.   else if (resCode == "FN_newChoiceDistCond")
  314.     retVal = "G01.e[\\'%1\\'].c[\\'%2\\'].selected == true";
  315.   else if (resCode == "FN_newDistractor")
  316.     retVal = "    G01.am(\'segm\',\'Segment: %1 Feedback\',%3,0);"+NEWLINE+
  317.              "    G01.am(\'cond\',\'%1 Selected\',\'%2\',0);"+NEWLINE+
  318.              "    G01.am(\'end\');"+NEWLINE;
  319.   else if (resCode == "FN_newDragPair")
  320.     retVal = "    G01.add(\'dragTarg\',\'Drag1\',\'Target1\',null,0,75,\'Center\',\'0:0\',1);"+NEWLINE;
  321.   else if (resCode == "FN_indent")
  322.     retVal = "    ";   
  323.   else if (resCode == "TAG_newJudgeBtn")
  324.     retVal = '<INPUT NAME="%1" TYPE="button" VALUE="' + 
  325.              PREF_defaultJudgeBtnName + '" onClick="MM_judgeInt(\'%2\')">';
  326.   else if (resCode == "TAG_newResetBtn")
  327.     retVal = '<INPUT NAME="%1" TYPE="button" VALUE="' + 
  328.              PREF_defaultResetBtnName + '" onClick="MM_resetInt(\'%2\',\'reset\')">';
  329.   else if (resCode == "TAG_newControlFrm")
  330.     retVal = '<FORM NAME="%1"></FORM>';
  331.   else if (resCode == "TAG_newBackdropImg")
  332.     retVal = '<IMG NAME="%1" SRC="%2">';    
  333.   else if (resCode == "NAME_newJudgeBtn")
  334.     retVal = '%1judge';
  335.   else if (resCode == "NAME_newResetBtn")
  336.     retVal = '%1reset';
  337.   else if (resCode == "NAME_newControlFrm")
  338.     retVal = '%1controls';
  339.   else if (resCode == "NAME_newBackdropImg")
  340.     retVal = '%1backdropImg';
  341.   else if (resCode == "NAME_newBackdropLayer")
  342.     retVal = '%1backdrop';
  343.   else if (resCode == "NAME_newQuestionCnt")
  344.     retVal = '%1question';
  345.  
  346.   retVal = replaceSub(retVal, "%1", p1?p1:"");
  347.   retVal = replaceSub(retVal, "%2", p2?p2:"");
  348.   retVal = replaceSub(retVal, "%3", p3?p3:"");
  349.   retVal = replaceSub(retVal, "%4", p4?p4:"");
  350.   retVal = replaceSub(retVal, "%5", p5?p5:"");
  351.   retVal = replaceSub(retVal, "%6", p6?p6:"");
  352.   retVal = replaceSub(retVal, "%7", p7?p7:"");
  353.   retVal = replaceSub(retVal, "%8", p8?p8:"");
  354.   retVal = replaceSub(retVal, "%9", p9?p9:"");
  355.  
  356.   return retVal
  357. }
  358.  
  359.  
  360. function setResource(resCode) {
  361.   var retVal = false;
  362.   return retVal
  363. }
  364.  
  365.  
  366.  
  367.