/** * eLms Objeto para control e interacción del contenido con el usuario * albergando informacion a la plataforma LMS bajo el estandar scorm 1.2 * Requiere el framework jquery * * @author Martin R. Mondragon - martin@aquainteractive.com * @version 1.0 * +Marzo 05/2013 implementacion de diplomas+ +Agosto 19/08/2013 * Evitar el bloquedo en modo estricto al iniciar +Febrero 11/02/2014 * Permitir evaluaciones parciales y finales en modo estricto */ var eLms = { /** * Se activa cuando cuando incuentra el api de la plataforma */ isApi : false, /** * Objeto que hace referencia al api sco de la plataforma */ api : null, /** * Objeto dom que hace referencia al area de contenido */ eBody : null, /** * Identificador unico */ serial : "", /** * Contador de intentos de busqueda de API sco de la plataforma */ tries : 0, /** * Codido de error bajo el estandar scorm 1.2 */ errCode : "0", /** * Cadena de error bajo el standar scorm 1.2 */ errString : "", /** * Registra el tiempo al inicializar la comunicacion */ initTime : 0, /** * Registra el tiempo al finalizar la comunicacion */ endTime : 0, /** * Ruta relativa o url de la carpeta contenedora del curso */ course : "", /** * Bandera que se activa cuando termina la comunicacion */ isClose : false, /***************************************************************************** * Tipo de retroalimentacion de evaluacion */ exTy : 0, /** * Identificador de la evaluacion final */ idExFinal : 0, /** * Identificador unico de la evaluacion actual */ idEva : 0, /** * Bandera que indica que por lo menos existe una evaluacion */ isExam : false, /** * Arreglo que contiene las preguntas de las evaluaciones */ exArr : new Array(), /** * Preguntas aleatorias de la evaluacion actual */ exApp : new Array(), /** * Opciones de respuestas aleatorias de las preguntas */ exApr : new Array(), /** * Opciones de respuestas del usuario */ exArs : new Array(), /** * Opciones de respuestas del usuario */ exArr : new Array(), /** * Modo estricto de aplicacion de evaluación, no permite avanzar si no se * acredita */ exMode : 0, /** * Numero de intentos permitidos para aplicar una misma evaluacion */ scoreTries : 0, /** * Arreglo de cadenas con las evaluaciones */ exData : new Array(), /** * Tiempo como plazo para realizacion de la evalucion */ exTime : 0, /** * Numero de preguntas por evaluacion */ exPreg : 10, /** * Calificacion de la evaluacion actual */ scoreRaw : 0, /** * Calificacion minima aprobatoria para la evaluacion */ scoreMin : 70, /** * Calificacion maxima para una evaluacion */ scoreMax : 100, /** * Modo para el despliege de lecciones, 1=Modo estricto */ lessonMode : 0, /** * Arreglo con todas las lecciones */ lessons : new Array(), /** * Arreglo con el tiempo en que un usuario le dedica a cada leccion */ lessonsTimes : new Array(), /** * Tiempo requerido para leccion actual */ lessonTime : 0, /** * Formato del contenido actual */ lessonFormat : 0, /** * Estatus actual de leccion actual */ lessonSatus : "", /** * Tipo de contenido de la leccion actual: C = Contenido, A = Autoevaluación P = * Evaluación parcial E = Evaluación final * Se registra Raw O = Objetos de * contenido */ lessonType : '', /** * Indice de la leccion actual */ idLesson : 0, /** * Inidice de la leccion anterior */ idLessonAnt : 0, /** * Cadena de identificacion para la leccion actual (lesson_location) */ lesson : '', /** * Visualiza/Oculta boton de inicio */ btInicio : 0, /** * Visualiza/Oculta menu principal de lecciones */ btMenu : 0, /** * Visualiza/Oculta boton de salir */ btExit : 0, /** * Visualiza/Oculta boton de actualizar contenido */ btRefresh : 0, /** * Visualiza/Oculta boton de ayuda */ btHelp : '', /** * Visualiza/Oculta boton de Glosario + ruta del recurso */ btGlossary : '', /** * Visualiza/Oculta boton de Biografia + ruta del recurso */ btBiography : '', /** * Visualiza/Oculta boton de Material + ruta del recurso */ btMaterial : '', /** * Visualiza/Oculta controles de medicio del tiempo por leccion */ ctTime : 0, /** * Visualiza/Oculta controles para contenido SWF */ ctSwf : 0, /** * Tipografia pordefault */ ctFont : 'Verdana,Geneva,sans-serif', /** * Mostrar el nombre del curso como titulo */ isTitle : false, /** * Elementos del suspend_data */ /** * Arreglo que contiene parametros de configuracion y resultados */ cfgData : new Array(), /** * Arreglo con los estatus de todas las lecciones */ arrData : new Array(), /** * Arreglo con los tiempos acumulados de todas las lecciones */ tmData : new Array(), /** * Arreglo con los resultados de las evaluaciones */ evData : new Array(), /** * Bandera que se activa cuando se carga el suspend_data */ isData : false, /** * Constantes */ isStyleDiploma : true, STATUS_INCOMPLETE : 1, STATUS_COMPLETED : 2, FORMAT_CONTENT : 0, FORMAT_OBJECT : 1, FORMAT_EVAL : 2, FORMAT_DIPLOMA : 3, /** * Devuelve el error bajo el estandar scorm 1.2 * * @param String name Nombre del parametro scorm 1.2 * @param String ee Tipo de tratamiento de error */ errHandle : function(name, ee) { ee = (ee == null || typeof (ee) == 'undefined') ? "fun" : ee; if (eLms.api == null) { desc = ""; switch (ee) { case "err": desc = "No se encuentra implementado esta accion/Not this action is implemented\n" + name; break; case "get": desc = "LMSGetValue(" + name + ") failed. \n" + eLms.api.LMSGetErrorString(eLms.errCode); break; default: eLms.errCode = api.LMSGetLastError().toString(); if (eLms.errCode != "0") { desc = eLms.api.LMSGetErrorString(eLms.errCode); } } if (desc != "") { eLms.errString = desc; alert(eLms.jsText(eLms.errString)); } return ""; } alert(eLms .jsText("Posiblemente existe un error de pérdida de session/There is probably a mistake session loss.")); return; }, /** * Busqueda del objeto API de la plataforma servidor LMS * * @param Object win Objeto window actual * @return Object API Objeto api */ findApi : function(win) { while ((win.API == null) && (win.parent != null) && (win.parent != win)) { if (eLms.tries++ > 7) { return null; } win = win.parent; } return win.API; }, /** * Devuel el objeto API, si no existe inicializa la busqueda para obtenerlo * * @return Object API */ getApi : function() { if (eLms.api == null) { eLms.api = eLms.findApi(window); if ((eLms.api == null) && (window.opener != null) && (typeof (window.opener) != 'undefined')) { eLms.api = eLms.findApi(window.opener); } if (eLms.api == null) { alert(eLms .jsText("No se encontro el adaptador API/Unable to find an API adapter")); } } return eLms.api; }, /** * Inicializa la comunicacion con el servidor LMS, devuelve una cadena "true" * si se tiene exito, de lo contrario "false" * * @return String Valor que representa un boolean */ initialize : function() { if (!eLms.isApi) return "true"; if (eLms.getApi()) { var result = eLms.api.LMSInitialize(""); if (result.toString() != "true") { eLms.errHandle(); } return result.toString(); } eLms.errHandle("LMSInitialize", "err"); return "false"; }, /** * Finaliza la comunicacion con el servidor LMS, devuelve una cadena "true" si * se tiene exito, de lo contrario "false" * * @return String Valor que representa un boolean */ finish : function() { if (!eLms.isApi) return "true"; if (eLms.getApi()) { var result = eLms.api.LMSFinish(""); if (result.toString() != "true") { eLms.errHandle(); } return result.toString(); } eLms.errHandle("LMSFinish", "err"); return "false"; }, /** * Devuelve el valor del elemento scorm solicitado al servidor LMS, Si no * tiene exito devuelve un "false" * * @param String Elemento scorm * @return String Valor del elemento solicitado */ getValue : function(name) { if (!eLms.isApi) return ""; if (eLms.getApi()) { var value = eLms.api.LMSGetValue(name); eLms.errCode = eLms.api.LMSGetLastError().toString(); if (eLms.errCode != "0") { return eLms.errHandle(name, "get"); } return value.toString(); } return eLms.errHandle("LMSGetValue", "err"); }, /** * Asigna el valor del elemento Scorm solicitado al servidor LMS, Si no tiene * exito devuelve un "false" * * @param String Elemento scorm * @return String Valor del elemento solicitado */ setValue : function(name, value) { if (!eLms.isApi) return "true"; if (eLms.getApi()) { var result = eLms.api.LMSSetValue(name, value); if (result.toString() != "true") { eLms.errHandle(); } return result.toString(); } return eLms.errHandle("LMSSetValue", "err"); }, /** * Envia una interaccion al servidor LMS */ setInteraction : function(ee, id, vl) { eLms.setValue('cmi.interactions.' + id + '.' + ee, vl); }, /** * Devuelve la cadena de error registrado * * @return String Cadena del error */ getErrorString : function() { if (!eLms.isApi) return ""; if (eLms.getApi()) { return eLms.api.doLMSGetErrorString().toString(); } return eLms.errHandle("LMSGetErrorString", "err"); }, /** * Devuelve una cadena del ultimo error registrado * * @return String Cadena del ultimo error */ getLastError : function() { if (!eLms.isApi) return ""; if (eLms.getApi()) { return eLms.api.LMSGetLastError().toString(); } return eLms.errHandle("LMSGetLastError", "err"); }, /** * Clase para Decodificacion de una cadena de UTF8 */ utf8 : { decode : function(utftext) { var string = ""; var i = 0; var c = c1 = c2 = 0; while (i < utftext.length) { c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++; } else if ((c > 191) && (c < 224)) { c2 = utftext.charCodeAt(i + 1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = utftext.charCodeAt(i + 1); c3 = utftext.charCodeAt(i + 2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } } return string; } }, /** * Decodificacion de unaca cadena en base 64 */ bs64 : { _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", decode : function(input) { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (i < input.length) { enc1 = eLms.bs64._keyStr.indexOf(input.charAt(i++)); enc2 = eLms.bs64._keyStr.indexOf(input.charAt(i++)); enc3 = eLms.bs64._keyStr.indexOf(input.charAt(i++)); enc4 = eLms.bs64._keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) output = output + String.fromCharCode(chr2); if (enc4 != 64) output = output + String.fromCharCode(chr3); } return eLms.utf8.decode(output); } }, /** * Limpia la cadena de caracteres especiales y reemplaza los espacios por * guiones bajos, los caracteres ãàáäâèéëêìíïîòóöôùúüûÑñÇç se convierten a el * carecter ASCII equivalente * * @param String str Cadena de texto * @return String Cadena de texto limpia */ cvText : function(str) { var text = str.toLowerCase(); text = text.replace(/[ãàáäâ]/g, 'a'); text = text.replace(/[èéëê]/g, 'e'); text = text.replace(/[ìíïî]/g, 'i'); text = text.replace(/[òóöô]/g, 'o'); text = text.replace(/[ùúüû]/g, 'u'); text = text.replace(/[ýÿ]/g, 'y'); text = text.replace(/[ñ]/g, 'n'); text = text.replace(/[ç]/g, 'c'); text = text.replace(/['"]/g, ''); text = text.replace(/\s+/g, '_'); text = text.replace(/[^a-zA-Z0-9_]/g, ''); text = text.replace(/(_)$/g, ''); text = text.replace(/^(_)/g, ''); return text; }, jsText : function(str) { return str; text = str.replace('Á', '\u00C1'); text = text.replace('á', '\u00E1'); text = text.replace('É', '\u00C9'); text = text.replace('é', '\u00E9'); text = text.replace('Í', '\u00CD'); text = text.replace('í', '\u00ED'); text = text.replace('Ó', '\u00D3'); text = text.replace('ó', '\u00F3'); text = text.replace('Ú', '\u00DA'); text = text.replace('ú', '\u00FA'); text = text.replace('Ü', '\u00DC'); text = text.replace('ü', '\u00FC'); text = text.replace('Ñ', '\u00D1'); text = text.replace('ñ', '\u00F1'); return text; }, /** * Revuelve de forma aleatoria el contenido de un arreglo * * @param Array arr Arreglo de elementos * @return Arreglo con los elementos revueltos */ shuffle : function(arr) { for (var i = arr.length - 1; i > 0; i--) { var j = Math.floor(i * Math.random()); var tmp = arr[j]; arr[j] = arr[i]; arr[i] = tmp; } return arr; }, /** * Agregar ceros a la izquierdaa un numero * * @param Integer p1 Numero * @param Integer p2 Numero de ceros a colocar a la Izq. Max:4 * @return String Cadena con el numero + ceros a la izquierda */ addZeros : function(p1, p2) { return p2 == 4 ? p1 < 10 ? '000' + p1 : p1 < 100 ? '00' + p1 : p1 < 1000 ? '0' + p1 : p1 : p1 < 10 ? '0' + p1 : p1; }, /** * Formato en minutos y segundos 00:00 * * @param Integer time Numero de segundos * @return String Formato en minutos y segundo 00:00 */ formatTimeMin : function(time) { var min = Math.floor(time / 60); var seg = Math.floor(time - (min * 60)); return (eLms.addZeros(min, 2) + ":" + eLms.addZeros(seg, 2)); }, /** * Formato en Horas, minutos y segundos 00:00:00 * * @param Integer t1 Micro segundos * @param Integer t2 Micro segundos * @return String Cadena en formato 00:00:00 */ formatTime : function(t1, t2) { var time = Math.floor((t2 - t1) / 1000); var hrs = Math.floor(time / 3600); var min = Math.floor((time - (hrs * 3600)) / 60); var seg = Math.floor(time - (hrs * 3600) - (min * 60)); return (eLms.addZeros(hrs, 4) + ":" + eLms.addZeros(min, 2) + ":" + eLms .addZeros(seg, 2)); }, /** * Actualiza el tiempo al servidor LMS */ updTime : function() { var d = new Date(); eLms.setValue("cmi.core.session_time", eLms.formatTime(eLms.initTime, d .getTime())); eLms.initTime = d.getTime(); }, /** * Inicializa el proceso para establecer comunicacion con el servidor LMS * * @return String Valor Boolean "true" si se tiene exito */ init : function() { var d = new Date(); eLms.initTime = d.getTime(); if (eLms.initialize() == "true") { eLms.lessonSatus = eLms.getValue("cmi.core.lesson_status"); switch (eLms.lessonSatus) { case "passed": case "completed": case "failed": case "incomplete": case "browsed": /* se queda el mismo estatus */ break; case "not attempted": default: eLms.setValue("cmi.core.lesson_status", "incomplete"); } return "true"; } return "false"; }, /** * Obtiene la cadena del suspend_data * * @param String Cadena con el valor completo del suspend_data */ getSuspendData : function() { return $.trim(eLms.getValue("cmi.suspend_data")); }, /** * Envia la cadena suspend_data con los elementos que la integran */ setSuspendData : function() { // alert(eLms.tmData.toString()); eLms.setValue("cmi.suspend_data", eLms.arrData.join('-') + '|' + eLms.cfgData.join('-') + '|' + eLms.tmData.join('-') + '|' + eLms.evData.join('-')); }, /** * Asigna valores e Inicializa la cadena suspend_data * * @param Integer id Identificador de la leccion * @param Integer st Estatus de la lecicion */ suspendData : function(id, st) { if (!eLms.arrData.length) { str = eLms.getSuspendData(); if (eLms.getLastError() == "0") { eLms.isData = true; if (str != '') { ar1 = str.split('|'); if (typeof (ar1[2]) == undefined) { for (var i = 0; i < eLms.lessons.length; i++) { eLms.tmData[i] = 0; } ar1[2] = eLms.tmData.join('-'); } if (typeof (ar1[3]) == undefined) { ar1[3] = ''; } eLms.arrData = ar1[0].split('-'); eLms.cfgData = ar1[1].split('-'); eLms.tmData = ar1[2].split('-'); eLms.evData = ar1[3].split('-'); } else { for (var i = 0; i < eLms.lessons.length; i++) { eLms.arrData[i] = 0; eLms.tmData[i] = 0; } eLms.cfgData = new Array(0, 0, 0, 0, 0, 0); eLms.setSuspendData(); } } } }, /** * Obtiene la leccion desde el servidor LMS (lesson_location) * * @return String Cadena de la leccion */ getLesson : function() { return eLms.getValue("cmi.core.lesson_location"); }, /** * Asigna la leccion al servidor LMS (lesson_location) * * @param String pp Cadena de la leccion actual * @return String Valor boolean d ela operacion */ setLesson : function(pp) { return eLms.setValue("cmi.core.lesson_location", pp); }, /** * Identificador de la pregunta actual */ idPreg : 0, /** * Total de opciones de respuesta de la pregunta actual */ exTotRs : 0, /** * Registra la opcion de respuesta seleccionada por le usuario */ onResp : function(op) { if (typeof (eLms.exArs[eLms.idPreg]) == 'undefined') { eLms.exTotRs++; } var d = new Date(); eLms.exRspTime[eLms.idPreg][1] = d.getTime(); eLms.exArs[eLms.idPreg] = eLms.exApr[eLms.idPreg][op.value]; eLms.exActiveFin(); eLms.exRetro(op.value); }, exActiveFin : function() { if (eLms.exTotRs >= eLms.exApp.length) $('#idExBtFin', eLms.ifm).show(); else $('#idExBtFin', eLms.ifm).hide(); }, idPregAnt : 0, exToolBar : function() { if (eLms.idPreg < 1) $('#idExBtPrv', eLms.ifm).hide(); else $('#idExBtPrv', eLms.ifm).show(); if (eLms.idPreg >= (eLms.exApp.length - 1)) $('#idExBtNxt', eLms.ifm).hide(); else $('#idExBtNxt', eLms.ifm).show(); $('#idPr' + eLms.idPregAnt).removeClass(); for (var i = 0; i < eLms.exArs.length; i++) { if (typeof (eLms.exArs[i]) != 'undefined') { $('#idPr' + i).removeClass().addClass("ok"); } else { $('#idPr' + i).removeClass(); } } $('#idPr' + eLms.idPreg).removeClass().addClass("on"); eLms.exActiveFin(); }, exPrevious : function() { if (eLms.idPreg > 0) { eLms.loadPreg(eLms.idPreg - 1); } }, exNext : function() { if (eLms.idPreg < (eLms.exApp.length - 1)) { eLms.loadPreg(eLms.idPreg + 1); } }, exReset : function() { eLms.exApp = new Array(); eLms.exApr = new Array(); eLms.exArs = new Array(); eLms.exArr = new Array(); eLms.exRspTime = new Array(); eLms.isOkExam = false; eLms.exTotRs = 0; eLms.idPreg = 0; if (eLms.idEva == eLms.idExFinal) { eLms.scoreRaw = 0; } // eLms.cfgData[1]++; /* Numero de intentos */ // eLms.setSuspendData(); eLms.showControl(false); eLms.runExam(); }, /** * */ lessonTitle : '', exResult : function() { var retro = ''; acc = eLms.ex.aciert; var isDiploma = false; var txtDiloma = ''; if (eLms.ex.calif >= eLms.scoreMin) { if (typeof (eLms.lessons[eLms.idLesson + 1]) != undefined) { ar = eLms.lessons[eLms.idLesson + 1].split('~'); if (ar[0] == 'D') { txtDiloma = ar[3]; isDiploma = true; } } } eLms.eBody .html('
' + '

' + eLms.lessonTitle + '

' + '

Resultados de la evaluación

' + '
Aciertos: ' + eLms.ex.aciert + ' de ' + eLms.exPreg + '
' + '
Su calificación: ' + '' + eLms.ex.calif + '' + '
' + '
Calificación mínima aprobatoria ' + '' + eLms.scoreMin + '' + '
' + retro + '
' + (eLms.ex.calif < eLms.scoreMin ? '' : (isDiploma ? '' : '')) + '
'); }, /* * Valida el status */ validSatus : function() { switch (eLms.lessonSatus) { case "passed": case "completed": return true; break; default: for (var i = 0; i < eLms.lessons.length; i++) { var ar = eLms.lessons[i].split('~'); if (ar[0] == 'C' || ar[0] == 'O') { if (typeof (eLms.arrData[i]) != 'undefined') { if (eLms.arrData[i] < eLms.STATUS_COMPLETED) { return false; } } else { return false; } } else { if (ar[0] == 'A' || ar[0] == 'P' || ar[0] == 'E') { if (typeof (eLms.exCalif[parseInt(ar[2])]) == 'undefined') { return false; } else { // alert(eLms.exCalif[parseInt(ar[2])]); } } } } } eLms.lessonSatus = "completed"; // alert(eLms.lessonSatus); eLms.setValue('cmi.core.lesson_status', eLms.lessonSatus); return true; }, exCalif : new Array(), exRspTime : new Array(), /** * Finaliza la evaluacion */ exFin : function(tyAccion) { if (eLms.iniLoading('Espere un momento porfavor...')) { if (typeof (tyAccion) == 'undefined') { $('#eExTool').hide(); setTimeout(function() { eLms.exFin(true); }, 1000); return; } var tot = eLms.exPreg; var acc = 0; var arr = new Array(); var idResp = 0; var isFinal = eLms.idEva == eLms.idExFinal ? true : false; isFinal = isFinal && eLms.lessonType == 'E' ? true : false; var exTime = 0; for (var id = 0; id < tot; id++) { idPreg = eLms.exApp[id]; idResp = eLms.exArs[id]; acc += (idResp ? 0 : 1); exTime += ((eLms.exRspTime[id][1] - eLms.exRspTime[id][0]) / 1000); if (isFinal) { arr = eLms.exArr[idPreg].split('~'); eLms.setInteraction('id', id, eLms.idLesson + '-' + idPreg + '-' + eLms.cvText(eLms.bs64.decode(arr[0]))); eLms.setInteraction('type', id, 'choice'); /* weighting, peso de evaluacion */ eLms.setInteraction('student_response', id, eLms.cvText(eLms.bs64 .decode(arr[idResp + 1]))); eLms.setInteraction('result', id, idResp ? 'wrong' : 'correct'); eLms.setInteraction('latency', id, eLms.formatTime( eLms.exRspTime[id][0], eLms.exRspTime[id][1])); } } eLms.ex.aciert = parseInt(acc); eLms.ex.calif = Math.round((acc / tot) * 100); eLms.ex.seg = parseInt(exTime); eLms.ex.tries = parseInt(eLms.ex.tries) + 1; eLms.exCalif[eLms.idEva] = eLms.ex.calif; if (isFinal) { eLms.scoreRaw = Math.round((acc / tot) * 100); eLms.setValue('cmi.core.score.max', eLms.scoreMax); eLms.setValue('cmi.core.score.min', eLms.scoreMin); eLms.setValue('cmi.core.score.raw', eLms.scoreRaw); if (eLms.scoreRaw < eLms.scoreMin) { eLms.validSatus(); } else { // eLms.validSatus(); eLms.setValue('cmi.core.lesson_status', 'passed'); } } eLms.evData[eLms.idEva] = eLms.idEva + ';' + eLms.ex.calif + ';' + eLms.ex.aciert + ';' + eLms.ex.tries + ';' + eLms.ex.seg; // eLms.suspendData((eLms.exLesson-1),eLms.STATUS_COMPLETED); eLms.onCompleted(true); eLms.setSuspendData(); eLms.exLesson = 0; eLms.exResult(); eLms.showControl(true); eLms.finLoading(); } }, /** * Cargar pregunta de la evaluacion * * @para integer id indetificador de la pregunta */ loadPreg : function(id) { eLms.idPregAnt = eLms.idPreg; if (typeof (id) != 'undefined') eLms.idPreg = id; var arr = eLms.exArr[eLms.exApp[eLms.idPreg]].split('~'); if (typeof (eLms.exApr[eLms.idPreg]) == 'undefined') { var arp = new Array(); for (var i = 1; i < arr.length; i++) arp[i - 1] = (i - 1); eLms.exApr[eLms.idPreg] = eLms.shuffle(arp); } if (typeof (eLms.exRspTime[eLms.idPreg]) == 'undefined') { var d = new Date(); eLms.exRspTime[eLms.idPreg] = new Array(d.getTime(), d.getTime()); } $('#idExPrName').html( '' + (eLms.idPreg + 1) + '.- ' + eLms.bs64.decode(arr[0])); var div = $('
', { 'class' : 'exRespuestas' }); var isPrg = false; var idOp = -1; for (i = 0; i < eLms.exApr[eLms.idPreg].length; i++) { rp = ''; rr = eLms.exApr[eLms.idPreg][i]; isPrg = isPrg == true ? isPrg : (typeof (eLms.exArs[eLms.idPreg]) == 'undefined' ? false : true); if (typeof (eLms.exArs[eLms.idPreg]) != 'undefined' && eLms.exArs[eLms.idPreg] == rr) { idOp = i; rp = ' checked="checked"'; } div.after('
' + (String.fromCharCode(65 + i)) + '' + '
'); } $('#idExResps').html(div); if (isPrg) eLms.exRetro(idOp); eLms.exToolBar(); }, exRetro : function(val) { if (eLms.exTy) { $('#idExRsp' + val).removeClass().addClass( eLms.exArs[eLms.idPreg] == 0 ? 'opBien' : 'opMal'); $('input[name="exRsp"]').attr('disabled', 'disabled'); } }, /** * Crear los controles para la evaluacion */ exCreate : function() { var strPrg = ''; for (var i = 0; i < eLms.exApp.length; i++) { strPrg += '' + (i + 1) + ''; } eLms.eBody.html('

' + eLms.lessonTitle + '

' + '
' + '
' + '
' + '
' + '
' + '
'); $('#eExTool') .html( '
' + '
' + '' + strPrg + ' ' + '' + '
'); }, exLesson : 0, /** * Corre el proceso de aplicacion de evaluacion actual */ runExam : function() { eLms.exLesson = eLms.idLesson + 1; eLms.showControl(false); if (eLms.idEvaActual != eLms.idEva) { eLms.exArr = new Array(); } eLms.idEvaActual = eLms.idEva; if (eLms.exArr.length == 0) { eLms.exArr = eLms.exData[eLms.idEva].split('|'); var arr = new Array(); for (var i = 0; i < eLms.exArr.length; i++) arr[i] = i; arr = eLms.shuffle(arr); eLms.exApp = arr.slice(0, eLms.exPreg); } eLms.exCreate(); eLms.loadPreg(); }, /** * Generar mensaje de confirmacion para aplicar la evaluacion al usuario */ exAplicar : function() { eLms.eBody .html('
' + '

' + eLms.lessonTitle + '

' + '

Una vez que inicie este proceso no podrá interrumpirlo.

' + ('') + '

¿Estás seguro de iniciar en este momento?

' + '
' + '' + '' + '
' + '
'); }, /** * Objeto con valores de la evaluacion actual */ isOkExam : false, ex : { id : 0, tries : 0, seg : 0, calif : 0, aciert : 0 }, /** * Inicializar parametros para aplicar evaluacion al usuario */ initExam : function(isOk) { if (typeof (isOk) != 'undefined') { eLms.isOkExam = isOk; } else { if (eLms.idEva != eLms.idEvaActual && eLms.exLesson) { alert(eLms.jsText('Existe una evaluaci\u00D3n en proceso, (') + eLms.idEvaActual + ')'); eLms.onCall(eLms.exLesson + 1); return; } } if (!eLms.isData) { eLms.suspendData(); eLms.setSuspendData(); } if (typeof (eLms.evData[eLms.idEva]) == 'undefined') { eLms.evData[eLms.idEva] = ''; } if (eLms.evData[eLms.idEva] == '') { if (eLms.isOkExam) { eLms.ex.id = eLms.idEva; eLms.ex.calif = 0; eLms.ex.tries = 0; eLms.ex.seg = 0; eLms.ex.aciert = 0; eLms.exReset(); } else { eLms.exAplicar(); } } // Ya existe else {// validar el formato id~calif~tries~seg var ar = eLms.evData[eLms.idEva].split(';'); eLms.ex.id = parseInt(ar[0]); if (eLms.ex.id == eLms.idEva) { eLms.ex.calif = parseInt(ar[1]); eLms.ex.aciert = parseInt(ar[2]); eLms.ex.tries = parseInt(ar[3]); eLms.ex.seg = parseInt(ar[4]); eLms.exResult(); } else { alert(eLms.jsText('Ocurrio un problema...')); eLms.onCall(eLms.idLessonAnt); return; } } eLms.finLoading(); return; }, /* * Actualiza los controles */ showControl : function(ty) { if (ty) { $('#eBody').removeClass(); $('#eExTool').hide(); $('#eTools').show(); $('#eExit').show(); } else { $('#eBody').addClass("exBgBody"); $('#eExTool').show(); $('#eTools').hide(); $('#eExit').hide(); } }, updControl : function() { }, /***************************************************************************** * ****************************************************************************/ winHeight : function() { if (self.innerHeight) return self.innerHeight; else if (document.documentElement && document.documentElement.clientHeight) return document.documentElement.clientHeight; else if (document.body) return document.body.clientHeight; else if (screen.height) return screen.height; else return; }, winWidth : function() { if (self.innerWidth) return self.innerWidth; else if (document.documentElement && document.documentElement.clientWidth) return document.documentElement.clientWidth; else if (document.body) return document.body.clientWidth; else if (screen.width) return screen.width; else return; }, tyLoad : 0, swfCourse : null, isLoad : false, eLoad : null, iniLoading : function(text) { if (eLms.isLoad) { eLms.eBody.hide(); eLms.eBody.html('
loading...
'); eLms.eLoad.css('height', eLms.eBody.height() + 23); eLms.eLoad.css('top', '97px'); $('#idLoadText').text(text); eLms.eLoad.show(); } return true; }, finLoading : function() { if (!eLms.isLoad) { eLms.isLoad = true; eLms.eLoad.addClass("content"); // eLms.eLoad.hide(); } eLms.eBody.show(); eLms.eLoad.hide(); return true; }, ifm : null, /* * Carga los controles */ loadControl : function(wd, wh) { var wd = $(window).width(); var wh = $(window).height(); var hd = $('#eHead').height(); var ft = $('#eFoot').height(); if (!wh || !wd) { wd = wd ? wd : eLms.winWidth(); wh = wh ? wh : eLms.winHeight(); } if (wd < 800 || wh < 600) { } var wdt = wd - ((eLms.pos + 10) + $('#txSlider').width() + $('.bgNav').width() + $('#eFtRight').width() + 15); var sds = $('#sdSlider'); var hg = (wh - (hd + ft)); var tm = $('#eLeft').width(); eLms.eBody.css('left', tm).css('width', wd - (($('#eLeft').width() + tm + 10))).css('top', hd).css('height', hg - 20); $('#eFoot').css('width', wd - ($('#eFtLeft').width() + $('#eFtRight').width())); $('#eLeft').css('top', hd).css('height', hg); $('#eRight').css('top', hd).css('height', hg); $('#eBarTime').css('left', (eLms.pos + 10)).css('width', wdt); if (eLms.ctTime) { var wdd = (eLms.pos + 10 + Math.round(wdt / 2)) - 50; sds.css('bottom', 7); $('#txSlider').css('bottom', 6); $('#idTexTime').css('left', wdd + 12 + 10).html( '00:00/'); $('#idTexTime em').text(eLms.formatTimeMin(eLms.lessonTime)); $('#eTime').removeClass().addClass("bg-ctrl"); } $('#eMenu').css('height', (wh - (hd + ft + 3))); sds.css('left', (eLms.pos + 10)).css('width', wdt); /* if ($.browser.msie)parseInt($.browser.version, 10); */ }, pos : 0, incPos : function(pos, wd) { pos = eLms.pos + pos; eLms.pos = pos + wd; return pos; }, /* * Inicializa los controles */ toolHeight : 0, indexWidth : 0, toolWidth : 0, onSetLessonStatus : function(st) { if (eLms.arrData[eLms.idLesson] < eLms.STATUS_COMPLETED) { eLms.arrData[eLms.idLesson] = st; $("#idLecc" + eLms.idLesson).removeClass(); $("#idLecc" + eLms.idLesson).addClass("ok" + st); } }, onSetStatus : function(st) { eLms.onSetLessonStatus(st); if (st == eLms.STATUS_COMPLETED) { $('#idBtnNext').show(); eLms.updTime(); eLms.loadTime(eLms.idLesson); eLms.validSatus(); eLms.setSuspendData(); } else $('#idBtnNext').hide(); }, onInCompleted : function() { if (eLms.arrData[eLms.idLesson] < eLms.STATUS_COMPLETED) { eLms.onSetStatus(eLms.STATUS_INCOMPLETE); } else $('#idBtnNext').show(); }, onCompleted : function(ty) { if (eLms.arrData[eLms.idLesson] < eLms.STATUS_COMPLETED) { if (eLms.lessonFormat == eLms.FORMAT_OBJECT) { if (typeof (ty) != 'undefined') { eLms.onSetStatus(eLms.STATUS_COMPLETED); } } else { if (eLms.lessonFormat == eLms.FORMAT_EVAL) { if (typeof (ty) != 'undefined') { switch (eLms.lessonType) { case 'A': eLms.onSetStatus(eLms.STATUS_COMPLETED); break; case 'P': case 'E': if (eLms.exCalif[eLms.evExLesson[eLms.idLesson][1]] >= eLms.scoreMin) { eLms.onSetStatus(eLms.STATUS_COMPLETED); } break; } } } else { eLms.onSetStatus(eLms.STATUS_COMPLETED); } } } }, initControl : function() { $('body') .append( '
' + '' + '
' + '
' + (eLms.btExit ? '
' : '') + '
' + '
'); /** Detectar los tamaños desde css */ $('#eBody').html( ''); eLms.indexWidth = $('#btIndice').width() + 5; eLms.toolHeight = $('#btRefresh').height(); eLms.toolWidth = $('#btRefresh').width() + $('#eLeft').width(); $('#eBody').html(''); /***/ $('body') .append( '
' + '
' + '' + '
' + (eLms.btInicio ? '' + '' : '') + (eLms.btMenu ? '' : '') + (eLms.btRefresh ? '' : '') + (eLms.btHelp ? '' : '') + (eLms.btGlossary ? '' : '') + (eLms.btBiography ? '' : '') + (eLms.btMaterial ? '' : '') + (eLms.pos ? '' : '') + ' ' + (eLms.ctTime ? (// ''+ '') : '') + '' + '' + '' + '' + '
' + '
'); /* * Ajuste de los elementos */ eLms.eBody = $("#eBody"); eLms.eLoad = $('#eLoad'); eLms.loadControl(); $(window.top).resize(function() { eLms.loadControl(); }); }, isMenu : false, hiddenMenu : function(ty) { eLms.isMenu = ty; $('#eMenu').css('display', ty ? 'block' : 'none'); }, onMenu : function() { eLms.hiddenMenu(!eLms.isMenu); }, updAvance : function() { var aa = Math.round(((eLms.idLesson + 1) / eLms.lessons.length) * 100); $('#idAvance').css('width', aa + '%'); $('#txSlider').text((eLms.idLesson + 1) + '/' + eLms.lessons.length); }, lcTimeId : null, lcTime : 0, lcTimeTmp : 0, lcType : 0, runTime : function() { if (eLms.lcTimeId) eLms.stopTime(); if (typeof (eLms.lessonsTimes[eLms.idLesson]) == undefined) eLms.lessonsTimes[eLms.idLesson] = 0; else { if (isNaN(eLms.lessonsTimes[eLms.idLesson])) eLms.lessonsTimes[eLms.idLesson] = 0; else if (eLms.lessonsTimes[eLms.idLesson] == '' || eLms.lessonsTimes[eLms.idLesson] == 'NaN') eLms.lessonsTimes[eLms.idLesson] = 0; } eLms.lcTimeTmp = 0; eLms.lcTime = eLms.lessonsTimes[eLms.idLesson]; $('#idTexTime em').text(eLms.formatTimeMin(eLms.lessonTime)); eLms.playTime(); }, playTime : function() { eLms.lcTime++; eLms.lcTimeTmp++; var av = 100; var tm = eLms.lcType ? eLms.lcTimeTmp : eLms.lcTime; if (tm < eLms.lessonTime) { av = Math.round((tm / eLms.lessonTime) * 100); } $('#eTime').css('width', av + '%'); if (tm) { $('#idTexTime span').text( eLms.formatTimeMin(tm > eLms.lessonTime ? eLms.lessonTime : tm)); } if (eLms.lcTime >= eLms.lessonTime) { eLms.onCompleted(); } eLms.lessonsTimes[eLms.idLesson] = eLms.lcTime; eLms.lcTimeId = setTimeout(function() { eLms.playTime(); }, 1000); }, loadTime : function(id) { if (typeof (eLms.tmData[id]) != undefined) { if (eLms.lessonsTimes[id] != undefined) { eLms.tmData[id] = eLms.lessonsTimes[id]; } else { eLms.tmData[id] = eLms.ctTime; } } }, stopTime : function() { eLms.loadTime(eLms.idLessonAnt); if (eLms.lcTimeId) { clearTimeout(eLms.lcTimeId); eLms.lcTimeId = null; } }, /* * Inicializa la comunicacion con el LMS */ updCmpMenu : function() { var id = 0; for (var i = 0; i < eLms.arrData.length; i++) { id = $("#idLecc" + i); if (id) { id.addClass("ok" + eLms.arrData[i]); } } }, /** * Evaluaciones disponibles en la evaluacion */ evExLesson : new Array(), onModeEx : function(id) { for (var i = 0; i < id; i++) { if (eLms.evExLesson[i][0] == 'E' || eLms.evExLesson[i][0] == 'P') { if (eLms.exCalif[eLms.evExLesson[i][1]] < eLms.scoreMin) { return false; } } } return true; }, /** * Inicialiar valores de lecciones para el control stricto de evaluaciones */ initEval : function() { var ar; var ev = new Array(); for (var i = 0; i < eLms.lessons.length; i++) { ar = eLms.lessons[i].split('~'); eLms.evExLesson[i] = new Array(ar[0], parseInt(ar[2])); if (ar[0] == 'E') { // console.log(ar[2]); ev[parseInt(ar[2])] = ''; } } if (!eLms.evData.length) eLms.evData = ev; // Inicializar las evaluaciones console.log(eLms.evData.length); for (var i = 1; i < eLms.evData.length; i++) { if (eLms.evData[i] != '' && eLms.evData[i] != undefined) { console.log(eLms.evData[i]); ar = eLms.evData[i].split(';'); eLms.exCalif[i] = parseInt(ar[1]); } else { eLms.exCalif[i] = 0; } } }, onInit : function() { if (eLms.init() == "true") { eLms.lesson = eLms.getLesson(); if (eLms.lesson == "") { eLms.idLesson = 0; eLms.lesson = eLms.idLesson + '~' + eLms.lessons[eLms.idLesson]; eLms.setLesson(eLms.lesson); eLms.suspendData(eLms.idLesson, eLms.STATUS_INCOMPLETE); eLms.setSuspendData(); } else { if (eLms.idLesson) { eLms.suspendData(eLms.idLesson, eLms.STATUS_INCOMPLETE); } ar = eLms.lesson.split('~'); eLms.idLesson = parseInt(ar[0]); eLms.suspendData(eLms.idLesson, eLms.STATUS_INCOMPLETE); eLms.lessonsTimes = eLms.tmData; // eLms.lesson = ar[1]; eLms.setSuspendData(); eLms.updCmpMenu(); } eLms.initEval(); eLms.initControl(); eLms.onCall(eLms.idLesson); return; } alert(eLms .jsText("Ocurrio un error con la comunicaci\u00D3n del contenido con el servidor")); }, /* * Finaliza la comunicacion con el LMS */ onFinish : function() { if (!eLms.isClose) { eLms.isClose = true; eLms.updTime(); // eLms.stopTime(); eLms.loadTime(eLms.idLesson); // Validar que se guarde bien el tieme eLms.setSuspendData(); eLms.finish(); } }, onClose : function() { eLms.onFinish(); if (window.top) window.top.close(); else window.close(); }, onRefresh : function() { eLms.onCall(eLms.idLesson); }, loadVideo : function(url) { var ht = url.indexOf('http:\\') == -1 ? '../../' : ''; eLms.loadSwf('js/swf/videoplayer_lms.swf?', { "src" : ht + url, "autoplay" : "true", "preload" : "true" }, "?src=" + ht + url + "&autoplay=true&preload=true"); }, loadAudio : function(url) { eLms.finLoading(); }, loadDocument : function(url) { eLms.finLoading(); }, loadImage : function(url) { var img = $('', { src : url, alt : eLms.lesson, load : function() { eLms.finLoading(); } }); if (img) { eLms.eBody.empty(); eLms.eBody.html(img); } else eLms.eBody.html(''
          + eLms.lesson + ''); }, getJsonUrl : function(param) { var t = new Array(); for (x in param) { t.push(x + "=" + encodeURI(param[x])); } return t.join("&"); }, getUrlJson : function(url) { var obj = {}; if (url && url.length != 0) { var arr = url.split('&'); var idx = new Array(); for (var i = 0; i < arr.length; i++) { idx = arr[i].split('='); obj[idx[0]] = idx[1]; } } return obj; }, getUrlVars : function(url) { var vars = {}; var parts = url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) { vars[key] = value; }); return vars; }, onSwfCaptive : function(toolBar) { alert(toolBar); }, isUrlHttp : function(url) { return false; }, loadSwf : function(url, param, param2) { var path = ''; if (typeof (param) == 'undefined' || param2 == 'swf') { if (!eLms.isUrlHttp(url)) { ar = url.split('/'); if (ar.length > 1) { url = ar.pop(); path = ar.join('/') + '/'; } } if (typeof (param) == 'object') { param['urlSwf'] = url; param['urlPath'] = path; } else { param = { urlSwf : '' + url, urlPath : path }; } url = "js/swf/aiLms.swf"; } // param = typeof(param)!="'undefined'"?param:{}; if (typeof (swfobject) != undefined) { var idSwf = 'eSwf'; eLms.eBody.html('
'); swfobject.embedSWF(url, idSwf, "100%", "100%", "10.3", "js/swf/expressInstall.swf", param, { wmode : "transparent", base : path }, {}, function(e) { if (e.success) { eLms.finLoading(); } }); } else { param2 = typeof (param2) != 'undefined' ? param2 : ''; // Agregalo con HTML } }, loadHtml : function(url) { eLms.eBody.html(''); }, extFiles : '|7Z|AAC|ACCDB|AI|ARJ|AVI|BMP|BZ2|CSS|DOC|DOCX|EML|EPS|EXE' + '|FLA|GIF|GZ|IND|INI|JPEG|JS|JSF|M4V|MIDI|MOV|MP3|MPEG|MPG' + '|PDF|PNG|PPTX|PROJ|PSP|PST|PUB|RAR|RTF|SET|SIT|SVG|SWF|TEXT' + '|TIFF|URL|VSD|WAV|WMA|WMV|XLS|XLSX|ZIP|', loadNoContend : function(url, ext) { eLms.eBody.html('
' + '

' + eLms.lessonTitle + '

' + '
' + '' + 'Para descargar este archivo debe hacer clic en el siguiente enlace:' + '
Descargar archivo
' + '
' + // ''++''+ '
' + '
'); eLms.finLoading(); }, loadFile : function(url, ty) { ty = typeof (ty) == 'undefined' ? true : ty; if (!ty) eLms.stopTime(); var ee = url.split('.'); var ext = ee.pop(); var param = ''; if (ext.indexOf('?') != -1) { // Parametros ee = ext.split('?'); ext = ee[0]; param = eLms.getUrlJson(ee[1]); } ext = ext.toUpperCase(); switch (ext) { case 'SVG': case 'GIF': case 'JPG': case 'PNG': case 'JPEG': case 'BMP': eLms.loadImage(url); break; case 'SWF': if (ty) eLms.lessonFormat = eLms.FORMAT_OBJECT; eLms.loadSwf(url, param, 'swf'); break; case 'MP4': case 'FLV': eLms.loadVideo(url); break; // case 'PM3': case 'WAV': eLms.loadAudio(url); break; case 'HTML': case 'HTM': eLms.loadHtml(url); break; case 'PDF': eLms.loadHtml(url); break; default: if (eLms.extFiles.indexOf(ext) != -1) { eLms.loadNoContend(url, ext); // eLms.loadDocument(url); } else { eLms.loadNoContend(url); } } }, showDiploma : function(img, jo, url) { var width = img ? img.width : 800; var height = img ? img.height : 618; jo.tX = jo.tX ? jo.tX : 0; jo.tY = jo.tY ? jo.tY : parseInt(height / 3); jo.uX = jo.uX ? jo.uX : 0; jo.uY = jo.uY ? jo.uY : parseInt(height / 2); /* alert(jo.tX+' : '+jo.tY+' / ' +jo.uX+' : '+jo.uY ); */ var user = eLms.getValue("cmi.core.student_name"); var title = document.title; user = user ? user : '[**NOMBRE DE ALUMNO**]'; eLms.eBody.html(''); eLms.finLoading(); var frame = $("#frameDiploma")[0].contentWindow.document; frame.open(); if (eLms.isStyleDiploma) { frame.write('' + title + '' + '' + '
' + (url ? '' + title + '' : '') + '

' + title + '

' + '

' + user + '

' + '
'); } else { frame.write('' + title + '' + '' + '
' + (url ? '' + title
              + '' : '') + '

' + title + '

' + '

' + user + '

' + '
'); } frame.close(); }, onDiploma : function(url) { if (eLms.ex.calif >= eLms.scoreMin || !eLms.isApi) { var jo = { title : '', user : '', tX : 0, tY : 0, uX : 0, uY : 0 }; if (url.indexOf('?') != -1) { jo = eLms.getUrlVars(url); if (typeof (jo.title) != undefined && jo.title != '') { if (jo.title.indexOf(':')) { ar = jo.title.split(':'); jo.tX = parseInt(ar[0]); jo.tY = parseInt(ar[1]); } else { jo.tY = parseInt(jo.title); jo.tX = 0; } } else { jo.tX = 0; jo.tY = 0; } if (typeof (jo.user) != undefined && jo.user != '') { if (jo.user.indexOf(':')) { ar = jo.user.split(':'); jo.uX = parseInt(ar[0]); jo.uY = parseInt(ar[1]); } else { jo.uY = parseInt(jo.user); jo.uX = 0; } } else { jo.uX = 0; jo.uY = 0; } } var img = new Image(); if (img) { img.src = url; img.onload = function() { eLms.showDiploma(this, jo, url); }; img.onerror = function() { eLms.showDiploma(null, jo, 'visual/image/diploma.png'); }; } else { eLms.showDiploma(null, jo, url); } } else { if (eLms.ex.calif == '0' || eLms.ex.calif <= 0) { eLms.onPrevious(); } else { eLms.eBody.html('
' + '

No cumple los requisitos para obtener "' + eLms.lessonTitle + '"

' + '
'); eLms.finLoading(); } } eLms.updAvance(); }, onHelp : function() { eLms.loadFile(eLms.course + eLms.btHelp, false); }, onGlossary : function() { eLms.loadFile(eLms.course + eLms.btGlossary, false); }, onBiography : function() { eLms.loadFile(eLms.course + eLms.btBiography, false); }, onMaterial : function() { eLms.loadFile(eLms.course + eLms.btMaterial, false); }, /* * Llamar contenido para las lecciones @param id integer Id de la leccion * Usted no podrá avanzar a la siguiente Lección si no ha pasado el tiempo * necesario en cada lección Usted no podrá avanzar a la siguiente Lección si * no ha visto la anterior */ onCall : function(id) { if (typeof (eLms.lessons[id]) != undefined) { if (eLms.lessonMode && id && (eLms.arrData[id - 1] < eLms.STATUS_COMPLETED)) { alert(eLms.jsText('A\u00FAn no puede abrir esta p\u00E1gina')); if (eLms.idLessonAnt == 0) { eLms.idLesson = 0; eLms.onCall(eLms.idLesson); } return; } if (eLms.exMode) { if (eLms.onModeEx(id) == false) { alert(eLms .jsText('Para poder avanzar debe acreditar la evaluaci\u00D3n con un minimo de ' + eLms.scoreMin)); if (eLms.idLessonAnt == 0) { eLms.idLesson = 0; eLms.onCall(eLms.idLesson); } return; } } // alert(eLms.jsText('áéíóúñÁÚÉÍÓÚÑ')); eLms.iniLoading("Espere un momento por favor, Cargando el contenido..."); eLms.hiddenMenu(false); ar = eLms.lessons[id].split('~'); eLms.idLessonAnt = eLms.idLesson; eLms.idLesson = id; eLms.lesson = id + '~' + ar[1] + '~' + eLms.cvText(ar[3]); eLms.lessonType = ar[0]; eLms.lessonTime = (isNaN(ar[4]) ? 0 : parseFloat(ar[4])) * 60; if (eLms.idLesson == 0) { $("#idBtnPrev").hide(); } else { $("#idBtnPrev").show(); } eLms.updTime(); eLms.setLesson(eLms.lesson); eLms.lessonTitle = ar[3]; $('#idTitulo').text(eLms.lessonTitle); $("#idLecc" + eLms.idLessonAnt).removeClass("sActive"); $("#idLecc" + eLms.idLesson).addClass("sActive"); // lesson_status: completed eLms.validSatus(); if (eLms.idLessonAnt != eLms.idLesson) { eLms.stopTime(); eLms.setSuspendData(); } if (eLms.lessonType == 'E' || eLms.lessonType == 'P' || eLms.lessonType == 'A') { /* Evaluaciones */ if (eLms.lessonMode) eLms.onInCompleted(); else eLms.onSetLessonStatus(eLms.STATUS_INCOMPLETE); eLms.idEva = parseInt(ar[2]); if (eLms.idEva && eLms.isExam && typeof (eLms.exData[eLms.idEva]) != undefined && eLms.exData[eLms.idEva] != '') { eLms.iniLoading("Espere mientras se carga el examen..."); eLms.lessonFormat = eLms.FORMAT_EVAL; eLms.initExam(); eLms.updAvance(); eLms.runTime(); } else { alert(eLms.jsText('Evaluaci\u00D3n con identificador:' + eLms.idEva + ' no disponible...')); eLms.onPrevious(); return; } } else { if (eLms.lessonMode) eLms.onInCompleted(); else eLms.onSetLessonStatus(eLms.STATUS_COMPLETED); url = eLms.course + ar[2]; if (eLms.lessonType == 'D') { eLms.lessonFormat = eLms.FORMAT_DIPLOMA; eLms.onDiploma(url); if ($.browser.msie) { /* eLms.finLoading(); */ } } else { eLms.lessonFormat = eLms.FORMAT_CONTENT; eLms.loadFile(url); eLms.runTime(); eLms.updAvance(); if ($.browser.msie) { eLms.finLoading(); } } } } else { alert(eLms.jsText('No existe lecci\u00D3n:' + id)); if (eLms.idLesson) eLms.onCall(0); } eLms.updControl(); }, /* * leccion siguiente */ onNext : function() { if (eLms.idLesson < (eLms.lessons.length - 1)) { eLms.onCall(eLms.idLesson + 1); } }, /* * Leccion anterior */ onPrevious : function() { if (eLms.idLesson > 0) { eLms.onCall(eLms.idLesson - 1); } } }; $(document).ready(function() { $(function() { $("#tree").treeview({ collapsed : false, animated : "medium", persist : "location" }); }); $(window).load(function() { eLms.isApi = eLms.getApi() ? true : false; if (!eLms.isApi) { eLms.lessonMode = 0; eLms.exMode = 0; } eLms.onInit(); }); $(window).unload(function() { eLms.onFinish(); }); });