\n');
}
//-->
MI FAMILIA
\n');
}
// Gestionar mensajes de FSCommand desde una película Flash, reasignando
// todos los comandos de plantilla Flash de AICC a SCORM si es necesario
function fstest_DoFSCommand(command, args){
var fstestObj = g_bIsInternetExplorer ? interface : document.interface;
// no funciona si no hay disponible una API de SCORM
var myArgs = new String(args);
var cmd = new String(command);
var v = "";
var err = "true";
var arg1, arg2, n, s, i;
var sep = myArgs.indexOf(",");
if (sep > -1){
arg1 = myArgs.substr(0, sep); // Nombre de elemento de datos para obtener desde API
arg2 = myArgs.substr(sep+1) // Nombre de variable de película Flash para establecer
} else {
arg1 = myArgs
}
//if (!APIOK()) return;
if (cmd.substring(0,3) == "LMS"){
// Gestionar FSCommands "LMSxxx" (compatible con plantilla html fsSCORM)
if ( cmd == "LMSInitialize" ){
err = (APIOK() + "")
// El LMSInitialize real lo llama automáticamente la plantilla
} else if ( cmd == "LMSSetValue" ){
alert('LMSSetValue: \r\rArg1: ' + arg1 + '\rArg2: ' + arg2);
err = SCOSetValue(arg1,arg2)
} else if ( cmd == "LMSFinish" ){
err = SCOFinish()
// Gestionado automáticamente por la plantilla, aunque la película
// puede llamarlo antes.
} else if ( cmd == "LMSCommit" ){
err = SCOCommit()
} else if ( cmd == "LMSFlush" ){
// no-op
// LMSFlush no está definido en SCORM y si se llama causa errores de prueba
} else if ((arg2) && (arg2.length > 0)){
if ( cmd == "LMSGetValue") {
alert('LMSSetValue: \r\rArg1: ' + arg1 + '\rArg2: ' + arg2);
fstestObj.SetVariable(arg2, SCOGetValue(arg1));
} else if ( cmd == "LMSGetLastError") {
fstestObj.SetVariable(arg2, SCOGetLastError(arg1));
} else if ( cmd == "LMSGetErrorString") {
fstestObj.SetVariable(arg2, SCOGetLastError(arg1));
} else if ( cmd == "LMSGetDiagnostic") {
fstestObj.SetVariable(arg2, SCOGetDiagnostic(arg1));
} else {
// para una extensión LMSGetxxxx desconocida
v = eval('g_objAPI.' + cmd + '(\"' + arg1 + '\")');
fstestObj.SetVariable(arg2,v);
}
} else if (cmd.substring(0,3) == "LMSGet") {
err = "-2: No Flash variable specified"
}
// fin de control de comandos "LMSxxx"
} else if ((cmd.substring(0,6) == "MM_cmi")||(cmd.substring(0,6) == "CMISet")) {
// Gestionar FSCommands de componentes de aprendizaje de Macromedia.
// Utilizan convenciones del modelo de datos AICC HACP,
// por lo que hay que reasignar datos de AICC a SCORM según sea necesario.
var F_intData = myArgs.split(";");
if (cmd == "MM_cmiSendInteractionInfo") {
n = SCOGetValue("cmi.interactions._count");
s = "cmi.interactions." + n + ".";
// Captura errores graves para evitar fallos de prueba de conformidad SCORM
// Si no se proporciona un ID para esta interacción, no podemos registrarla
v = F_intData[2]
if ((v == null) || (v == "")) err = 201; // Si no hay ID, no tiene sentido registrar
if (err =="true"){
err = SCOSetValue(s + "id", v)
}
if (err =="true"){
var re = new RegExp("[{}]","g")
for (i=1; (i<9) && (err=="true"); i++){
v = F_intData[i];
if ((v == null) || (v == "")) continue
if (i == 1){
err = SCOSetValue(s + "timestamp", formatTimestamp(v))
} else if (i == 3){
err = SCOSetValue(s + "objectives.0.id", v)
} else if (i == 4){
err = SCOSetValue(s + "type", normalizeInteractionType(v))
} else if (i == 5){
// strip out "{" and "}" from response
v = v.replace(re, "");
err = SCOSetValue(s + "correct_responses.0.pattern", checkInteractionResponse(v))
} else if (i == 6){
// strip out "{" and "}" from response
v = v.replace(re, "");
err = SCOSetValue(s + "learner_response", checkInteractionResponse(v))
} else if (i == 7){
err = SCOSetValue(s + "result", normalizeInteractionResult(v))
} else if (i == 8){
err = SCOSetValue(s + "weighting", v)
} else if (i == 9){
err = SCOSetValue(s + "latency", v)
}
}
}
} else if (cmd == "MM_cmiSendObjectiveInfo"){
err = SCOSetObjectiveData(F_intData[1], ".score.raw", F_intData[2])
if (err=="true"){
SCOSetObjectiveData(F_intData[1], ".status", normalizeStatus(F_intData[3]))
}
} else if ((cmd=="CMISetScore") ||(cmd=="MM_cmiSendScore")){
err = SCOSetValue("cmi.score.raw", F_intData[0]);
} else if ((cmd=="CMISetStatus") || (cmd=="MM_cmiSetLessonStatus")){
var strTempStatus = normalizeStatus(F_intData[0]);
if (strTempStatus == "passed" || strTempStatus == "failed")
{
err = SCOSetValue("cmi.success_status", normalizeStatus(F_intData[0]))
} else {
err = SCOSetValue("cmi.completion_status", normalizeStatus(F_intData[0]))
}
} else if (cmd=="CMISetTime"){
err = SCOSetValue("cmi.session_time", formatTime(F_intData[0]))
} else if (cmd=="CMISetCompleted"){
err = SCOSetStatusCompleted()
} else if (cmd=="CMISetStarted"){
err = SCOSetValue("cmi.completion_status", "incomplete")
} else if (cmd=="CMISetPassed"){
SCOSetValue("cmi.completion_status", "completed");
err = SCOSetValue("cmi.success_status", "passed")
} else if (cmd=="CMISetFailed"){
SCOSetValue("cmi.completion_status", "completed");
err = SCOSetValue("cmi.success_status", "failed")
} else if (cmd=="CMISetData"){
err = SCOSetValue("cmi.suspend_data", F_intData[0])
} else if (cmd=="CMISetLocation"){
err = SCOSetValue("cmi.location", F_intData[0])
} else if (cmd=="CMISetTimedOut"){
err = SCOSetValue("cmi.exit", "time-out")
}// Otros FSCommands del componente de aprendizaje no funcionan en este contexto
} else {
if (cmd=="CMIFinish" || cmd=="CMIExitAU"){
err = SCOFinish()
} else if (cmd=="CMIInitialize" || cmd=="MM_StartSession"){
err = SCOInitialize()
} else {
// Comando desconocido; puede estar invocando una extensión de API
// Si los comandos vienen con un segundo argumento, asumir que se espera un valor
// en caso contrario, asumir que se trata sólo de un comando
if (eval('g_objAPI.' + cmd)) {
v = eval('g_objAPI.' + cmd + '(\"' + arg1 + '\")');
if ((arg2) && (arg2.length > 0)){
fstestObj.SetVariable(arg2,v)
} else {
err = v
}
} else {
err = "false"
}
}
}
// Fin de conversión y procesamiento de comandos
// gestionar errores detectados, como devoluciones de errores de LMS
if ((g_bShowApiErrors) && (err != "true")) {
AlertUserOfAPIError(ExpandString(g_strFSAPIError, err, cmd, args))
}
//return err
}
//-->