var errorCode = "0";
function underscore(str) {
- str = str.replace(/.N/g,".");
+ str = String(str).replace(/.N/g,".");
return str.replace(/\./g,"__");
}
if (Initialized) {
if (element !="") {
expression = new RegExp(CMIIndex,'g');
- elementmodel = element.replace(expression,'.n.');
+ elementmodel = String(element).replace(expression,'.n.');
if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
if (eval('datamodel["'+elementmodel+'"].mod') != 'w') {
- element = element.replace(expression, "_$1.");
+ element = String(element).replace(expression, "_$1.");
elementIndexes = element.split('.');
subelement = 'cmi';
i = 1;
if (Initialized) {
if (element != "") {
expression = new RegExp(CMIIndex,'g');
- elementmodel = element.replace(expression,'.n.');
+ elementmodel = String(element).replace(expression,'.n.');
if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
if (eval('datamodel["'+elementmodel+'"].mod') != 'r') {
expression = new RegExp(eval('datamodel["'+elementmodel+'"].format'));
} else {
element = parent+'.'+property;
expression = new RegExp(CMIIndex,'g');
- elementmodel = element.replace(expression,'.n.');
+ elementmodel = String(element).replace(expression,'.n.');
if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
if (eval('datamodel["'+elementmodel+'"].mod') != 'r') {
elementstring = '&'+underscore(element)+'='+escape(data[property]);
//
function SCORMapi1_2() {
// Standard Data Type Definition
- CMIString256 = '^.{0,255}$';
- CMIString4096 = '^.{0,4096}$';
- //CMIString256 = '^[\.|\\n|\\r]{0,255}$';
- //CMIString4096 = '^[\.|\\n|\\r]{0,4095}$';
+ CMIString256 = '^[\\u0000-\\uffff]{0,255}$';
+ CMIString4096 = '^[\\u0000-\\uffff]{0,4096}$';
CMITime = '^([0-2]{1}[0-9]{1}):([0-5]{1}[0-9]{1}):([0-5]{1}[0-9]{1})(\.[0-9]{1,2})?$';
CMITimespan = '^([0-9]{2,4}):([0-9]{2}):([0-9]{2})(\.[0-9]{1,2})?$';
CMIInteger = '^\\d+$';
if (Initialized) {
if (element !="") {
expression = new RegExp(CMIIndex,'g');
- elementmodel = element.replace(expression,'.n.');
+ elementmodel = String(element).replace(expression,'.n.');
if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
if (eval('datamodel["'+elementmodel+'"].mod') != 'w') {
- element = element.replace(expression, "_$1.");
+ element = String(element).replace(expression, "_$1.");
elementIndexes = element.split('.');
subelement = 'cmi';
i = 1;
if (Initialized) {
if (element != "") {
expression = new RegExp(CMIIndex,'g');
- elementmodel = element.replace(expression,'.n.');
+ elementmodel = String(element).replace(expression,'.n.');
if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
if (eval('datamodel["'+elementmodel+'"].mod') != 'r') {
expression = new RegExp(eval('datamodel["'+elementmodel+'"].format'));
} else {
element = parent+'.'+property;
expression = new RegExp(CMIIndex,'g');
- elementmodel = element.replace(expression,'.n.');
+ elementmodel = String(element).replace(expression,'.n.');
if (elementmodel != "cmi.core.session_time") {
if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
if (eval('datamodel["'+elementmodel+'"].mod') != 'r') {
if ((Initialized) && (!Terminated)) {
if (element !="") {
var expression = new RegExp(CMIIndex,'g');
- var elementmodel = element.replace(expression,'.n.');
+ var elementmodel = String(element).replace(expression,'.n.');
if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
if (eval('datamodel["'+elementmodel+'"].mod') != 'w') {
- element = element.replace(/\.(\d+)\./, ".N$1.");
+ element = String(element).replace(/\.(\d+)\./, ".N$1.");
element = element.replace(/\.(\d+)\./, ".N$1.");
var elementIndexes = element.split('.');
if ((Initialized) && (!Terminated)) {
if (element != "") {
var expression = new RegExp(CMIIndex,'g');
- var elementmodel = element.replace(expression,'.n.');
+ var elementmodel = String(element).replace(expression,'.n.');
if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
if (eval('datamodel["'+elementmodel+'"].mod') != 'r') {
if (eval('datamodel["'+elementmodel+'"].format') != 'CMIFeedback') {
// Use cmi.interactions.n.type value to check the right dataelement format
if (elementIndexes[elementIndexes.length-2] == eval(parentelement+'._count')) {
- var interactiontype = eval(parentelement.replace('correct_responses','type'));
+ var interactiontype = eval(String(parentelement).replace('correct_responses','type'));
if ((typeof correct_responses[interactiontype].limit == 'undefined') ||
(eval(parentelement+'._count') < correct_responses[interactiontype].limit)) {
if (correct_responses[interactiontype].pre != '') {
return element;
} else {
var expression = new RegExp(CMIIndex,'g');
- var elementmodel = element.replace(expression,'.n.');
+ var elementmodel = String(element).replace(expression,'.n.');
if (typeof datamodel[elementmodel] != "undefined") {
return elementmodel;
}
} else {
var element = parent+'.'+property;
var expression = new RegExp(CMIIndexStore,'g');
- var elementmodel = element.replace(expression,'.n.');
+ var elementmodel = String(element).replace(expression,'.n.');
if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
if (eval('datamodel["'+elementmodel+'"].mod') != 'r') {
var elementstring = '&'+underscore(element)+'='+encodeURIComponent(data[property]);