// Copyright 1998 Macromedia, Inc. All rights reserved. var MM_SID="", MM_TURL="", MM_CMIDOC="", aicd = "aicc_data", co = "[core]", ls="Lesson_Status", cmnd="command", cmdArray; var IE3 = ((navigator.appName.indexOf("Microsoft") != -1) && (parseFloat(navigator.appVersion) < 3)); if (window.cmdQueue == null) window.cmdQueue = new CmdQueue() function CmdQueue() { this.cmd = new Array(); this.cmdData = new Array(); this.sIDs = new Array(); this.qLen = 0; this.latency = (navigator.appName.indexOf('Microsoft') != -1)?1250:1000; this.addCmd = cmdQAddCmd; this.delCmd = cmdQDelCmd; } function cmdQAddCmd(command, sid, cmddata) { this.cmd[this.qLen] = command; this.sIDs[this.qLen] = sid; this.cmdData[this.qLen] = cmddata; this.qLen++; if (this.qLen == 1) { if (!IE3 && (window.CmdSubmit == null)) window.CmdSubmit = CmdSubmit; setTimeout("CmdSubmit()", this.latency); } } function cmdQDelCmd() { var i, len; if (this.qLen == 0) return; else if (this.qLen == 1) this.cmd.length = this.sIDs.length = this.cmdData.length = 0; else { for (i=1, len=this.qLen; i= 1) { if (!IE3) window.CmdSubmit = CmdSubmit; setTimeout("CmdSubmit()", cmdQueue.latency); } } function MM_SGet() {document.command.elements["command"].value = "getparam";} function MM_SPut() {document.command.elements["command"].value = "putparam";} function MM_SPInt() {document.command.elements["command"].value = "putinteractions";} function MM_SVal(idx, val0, sub) { document.command.elements[idx].value=val0; if (sub) MM_Sub(); } function MM_ApndVal(val0) {document.command.elements[aicd].value += '\r\n'+val0;} function MM_Sub() { if (MM_SID.length > 0) { var frm = document.command; cmdQueue.addCmd(frm.elements[cmnd].value,MM_SID,frm.elements[aicd].value); } } function MM_CMISetParms(url) { var prms="", tmpp; pos=url.indexOf("#") if (pos==-1) pos=url.indexOf("?") if (pos>-1) prms=url.substring(pos+1,url.length) tmpp=prms.toUpperCase() if (tmpp.indexOf("AICC-SID")>-1) { alert("Lesson Server version incompatible. Your administrator must upgrade to the latest version."); return false; } if ((pos=tmpp.indexOf("AICC_SID="))>-1) { MM_SID=prms.substring(pos+8,prms.length) if (MM_SID.indexOf("&")>0) MM_SID=unescape(MM_SID.substring(1,MM_SID.indexOf("&"))) } if ((pos=tmpp.indexOf("AICC_URL"))>-1) { MM_TURL=prms.substring(pos+9,prms.length) if (MM_TURL.indexOf("&")>0) MM_TURL=MM_TURL.substring(1,MM_TURL.indexOf("&")) MM_TURL=unescape(MM_TURL) } return (MM_TURL=="" || MM_SID=="")?false:true; } function findcmidocument(win) { if (MM_CMISetParms(win.document.location+"") == false) { if (win == window.top) return null return findcmidocument(win.parent) } else { MM_CMIDOC = win.document; return win.document; } } function cmiinit(win) { frm=findcmiframe(null); if (frm!=null) frm.installcmi(win); findcmidocument(win); window.CMITURL = MM_TURL; return CMIIsPresent(); } function CMIInitialize() { if ((MM_CMIDOC!=null) && (MM_CMIDOC.length!=0)){ MM_SVal("session_id",MM_SID); retVal = true; } else retVal = false; return retVal; } function CMIIsPresent() { return MM_SID.length != 0; } function CMIAddInteraction(date, time, intid, objid, intrtype, correct, student, result, weight, latency) { MM_SVal("command","putinteractions") MM_SVal(aicd,'"date", "time", "interaction_id", "objective_id", "type_interaction", "correct_response", "student_response", "result", "weighting", "latency"\r\n' + '"' + date + '", ' + '"' + time + '", ' + '"' + intid + '", ' + '"' + objid + '", ' + '"' + intrtype + '", ' + '"' + correct + '", ' + '"' + student + '", ' + '"' + result + '", ' + '"' + weight + '", ' + '"' + latency+ '"',1); } function CMISetCompleted() { CMISetStatus("C"); } function CMISetData(data) { MM_SPut() MM_SVal(aicd,"[Core_Lesson]\r\n"+data,1) } function CMISetFailed() { CMISetStatus("F"); } function CMISetLocation(loc) { MM_SPut() MM_SVal(aicd,co+"\r\nLesson_Location="+loc,1) } function CMISetObj(index, id, score, status, started, completed, passed, failed) { MM_SPut() MM_SVal(aicd,"[Objectives_Status]\r\nJ_ID."+index+"="+id) // if objective info isn't there already need to write a not-started flag if (status=="") MM_ApndVal("J_STATUS."+index+"="+started?'I':completed?'C':passed?'P':'F'); else MM_ApndVal("J_STATUS."+index+"="+status); MM_ApndVal("J_SCORE."+index+"="+score); MM_Sub(); } function CMISetPassed() { CMISetStatus("P"); } function CMISetScore(score) { MM_SPut() MM_SVal(aicd,co+"\r\nscore="+score,1) } function CMISetStarted() { CMISetStatus("I"); } function CMISetStatus(stat) { MM_SPut() MM_SVal(aicd,co+"\r\n"+ls+"="+stat,1) } function CMISetTime(t) { var x=3600; var y=60; var h=Math.round(t/x - t%x/x)+''; var m=Math.round((t-h*x)/y-(t-h*x)%y/y)+''; var s=Math.round(t-h*x-m*y)+''; if (h.toString().length == 1) h='0'+h; if (m.toString().length == 1) m='0'+m; if (s.toString().length == 1) s='0'+s; MM_SPut() MM_SVal(aicd,co+"\r\nTime="+h+":"+m+":"+s,1) } function CMISetTimedOut() { MM_SPut() MM_SVal(aicd,co+"\r\n"+ls+"=incomplete,time-out",1) } function installcmi(win) { if ((win.CMIInitialize == null) && !IE3) { win.CMIInitialize = CMIInitialize; win.CMIIsPresent = CMIIsPresent; win.CMIAddInteraction =CMIAddInteraction win.CMISetCompleted =CMISetCompleted win.CMISetData =CMISetData win.CMISetFailed =CMISetFailed win.CMISetLocation =CMISetLocation win.CMISetObj =CMISetObj win.CMISetPassed =CMISetPassed win.CMISetScore =CMISetScore win.CMISetStarted =CMISetStarted win.CMISetStatus =CMISetStatus win.CMISetTime =CMISetTime win.CMISetTimedOut =CMISetTimedOut win.CMITURL = MM_TURL } }