/**************************************************
Trivantis (http://www.trivantis.com)
**************************************************/
function saveVariable(name,value,days,title,lms) {
  var titleMgr = getTitleMgrHandle();
  var expires = "";

  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    expires = "; expires="+date.toGMTString();
  }

  var encValue = escape( value );

  // Find the cookie
  var myCookie = (days ? 'LectoraPermCookie' : 'LectoraTempCookie' );
  if( title )
    {myCookie += '_' + title;}

  var nameEQ = '|' + name + "=";
  var ca = document.cookie.split(';');
  var i,j;
  var last = 0;
  var lastVal = null;
  var saveId = -1;

  for(i=0;i<ca.length;i++)
  {
    var c = ca[i];
    for( j = 0;j<c.length;j++)
    {
      if( c.charAt(j) != ' ' )
        {break;}
    }
    c = c.substring(j);
    if( c.indexOf(myCookie) === 0 )
    {
      var ce=c.indexOf('=');
      last = parseInt( c.substring( myCookie.length, ce ), 10 );
      var vo = c.indexOf(nameEQ) ;
      if( vo >= 0 )
      {
        var start=c.substring(ce+1,vo);
        var mid=c.substring(vo+nameEQ.length);
        var end=mid.indexOf( '|' );
        mid = mid.substring( end );
        lastVal = start + mid;
        saveId = last;
        break;
      }
      else
      {
        lastVal = c.substring( ce + 1 );
      }
    }
  }

  trivLogMsg( 'saveVariable for ' + name + ' to [' + unescape(encValue) + ']' );
  if( titleMgr )
  {
    titleMgr.setVariable(name,encValue,days);
    if( (!days || lms) && !document.titleMgr && !window.jTitleManager )
      {return;}
  }

  var newVal = nameEQ+encValue+"|";
  var cookieName = null;
  if( lastVal !== null && (lastVal.length + newVal.length < 4000) )
  {
      if( lastVal )
        {lastVal = lastVal.substring( 0, lastVal.length - 1 );}
      if( days < 0 )
        {newVal = null;}
      cookieName = myCookie + last;
      document.cookie = cookieName+"="+lastVal+newVal+expires+"; path=/";
  }
  else
  {
      if( lastVal !== null && saveId != -1 ) {
        var oldCookie = myCookie + saveId;
        document.cookie = oldCookie+"="+lastVal+expires+"; path=/";
      }
      cookieName = myCookie + (last+1);
      document.cookie = cookieName+"="+newVal+expires+"; path=/";
  }
}

function readVariable(name,defval,days,title) {
  var titleMgr = getTitleMgrHandle();
  if( titleMgr === null || titleMgr.findVariable( name ) < 0 )
  {
    var myCookie = (days ? 'LectoraPermCookie' : 'LectoraTempCookie' );
    if( title )
      {myCookie += '_' + title;}
    var nameEQ = '|' + name + "=";
    var ca = document.cookie.split(';');
    var i,j;

    for(i=0;i<ca.length;i++)
    {
      var c = ca[i];
      for( j = 0;j<c.length;j++)
      {
        if( c.charAt(j) != ' ' )
          {break;}
      }
      c = c.substring(j);
      if( c.indexOf(myCookie) === 0 )
      {
        var vo = c.indexOf(nameEQ);
        if( vo >= 0 )
        {
          var val=c.substring(vo+nameEQ.length);
          var ve =val.indexOf( '|' );

          val = val.substring(0,ve);
          var valUn = unescape( val );

          if( titleMgr )
            {titleMgr.setVariable(name,val,days);}
          trivLogMsg( 'readVariable for ' + name + ' = [' + unescape(val) + ']' );
          return valUn;
        }
      }
    }
  }

  if( titleMgr ) {
    var res = titleMgr.getVariable(name,defval,days);
    defval = unescape( res );
  }
  trivLogMsg( 'readVariable for ' + name + ' = [' + unescape(defval) + ']' );
  return defval;
}

function cleanupTitle( title ) {
  if( window.name.indexOf( 'Trivantis_' ) == -1 ) {
    var date = new Date();
    date.setTime(date.getTime()+(-1*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();

    var myCookie = 'LectoraTempCookie';
    if( title )
      {myCookie += '_' + title;}
    for( var i = 1; i < 21; i++ )
    {
      var name = myCookie + i;
      if( readCookie( name, '' ) !== '' )
        {document.cookie = name + "=" + expires + "; path=/";}
      else
        {break;}
    }
    return 1;
  }
  else
    {return 0;}
}

// Variable Object
function Variable(name,defval,f,cm,frame,days,title) {
  var THIS = this;
  THIS.origAICC = false;
  THIS.bSCORM = false;
  THIS.of=f;
  THIS.f=f;
  THIS.eTS=null;
  THIS.tV=null;
  THIS.aiccframe=frame;
  THIS.aiccgroup=null;
  THIS.aicccore=false;
  THIS.exp=days;
  if( defval ) {THIS.defVal = defval.toString();}
  else {THIS.defVal=null;}
  THIS.cm=0;
  THIS.title=title;
  THIS.lastUT = null;
  if( cm ) {
    THIS.cm = -1 * cm;
    if(name=='CM_Course_ID'){THIS.name='TrivantisCourse';}
    else if(name=='CM_Course_Name'){THIS.name='TrivantisCourseName';}
    else if(name=='CM_Student_ID'){THIS.name='TrivantisLogin';}
    else if(name=='CM_Student_Name'){THIS.name='TrivantisLoginName';}
    else {
      THIS.name=name;
      THIS.cm = cm;
    }
  }
  else if( frame ) {
    var underPos = name.indexOf('AICC_');
    if( underPos === 0 ) {
      THIS.origAICC = true;
      THIS.name=name.substring(5);
      var core_check = null;
      if( frame == 'scorm' ) {
        THIS.bSCORM = true;
        THIS.aiccgroup = 'cmi';
        THIS.name = THIS.name.toLowerCase();
        core_check = THIS.name.substring(0,5);
        if( core_check == 'core_' ) {THIS.name = THIS.name.substring(5);}
        if(THIS.name=='lesson') {THIS.name='cmi.suspend_data';}
        else if(THIS.name=='vendor') {THIS.name='cmi.launch_data';}
        else if(THIS.name=='time') {THIS.name='cmi.core.total_time';}
        else if(THIS.name=='score') {THIS.name='cmi.core.score.raw';}
        else {THIS.name = 'cmi.core.' + THIS.name;}
      }
      else if( frame == 'scorm2004' ) {
        THIS.bSCORM = true;
        THIS.aiccgroup = 'cmi';
        THIS.name = THIS.name.toLowerCase();
        core_check = THIS.name.substring(0,5);
        if( core_check == 'core_' ) {THIS.name = THIS.name.substring(5);}
        if(THIS.name=='lesson') {THIS.name='cmi.suspend_data';}
        else if(THIS.name=='vendor') {THIS.name='cmi.launch_data';}
        else if(THIS.name=='time') {THIS.name='cmi.total_time';}
        else if(THIS.name=='score') {THIS.name='cmi.score.raw';}
        else if(THIS.name=='course_id'){THIS.name='cmi.evaluation.course_id';}
        else if(THIS.name=='lesson_id'){THIS.name='cmi.core.lesson_id';}
        else if(THIS.name=='student_id'){THIS.name='cmi.learner_id';}
        else if(THIS.name=='student_name'){THIS.name='cmi.learner_name';}
        else if(THIS.name=='lesson_location'){THIS.name='cmi.location';}
        else if(THIS.name=='lesson_status'){THIS.name='cmi.success_status';}
        else {THIS.name = 'cmi.' + THIS.name;}
      }
      else if(THIS.name=='Core_Lesson') {
        THIS.aiccgroup='[CORE_LESSON]';
      }
      else if(THIS.name=='Core_Vendor') {
        THIS.aiccgroup='[CORE_VENDOR]';
      }
      else if(THIS.name=='Course_ID') {
        THIS.aiccgroup='[EVALUATION]';
      }
      else {
        THIS.aiccgroup='[CORE]';
        THIS.aicccore=true;
      }
      if( !THIS.bSCORM ) {THIS.update();}
    }
    else {
      if( frame == 'scorm' ) {THIS.bSCORM = true;}
      if( name.indexOf('CMI_Core') === 0 ) {
        THIS.origAICC = true;
        THIS.aiccgroup='cmi';
        if( name == 'CMI_Core_Entry' ) {
          THIS.name='cmi.core.entry';
          THIS.update();
        }
        else {
          THIS.name='cmi.core.exit';
          THIS.value=THIS.defVal;
        }
      }
      else if ( name == 'CMI_Completion_Status' ) {
        if( frame == 'scorm2004' ) {THIS.bSCORM = true;}
        THIS.origAICC = true;
        THIS.aiccgroup='cmi';
        THIS.name='cmi.completion_status';
        THIS.update();
      }
      else {
        THIS.name = name;
      }
    }
  }
  else {
    THIS.name=name;
  }
  if( THIS.f == 4 ) {THIS.uDT();}
}

var p=Variable.prototype;

p.save=function() {
  var THIS = this;
  var titleMgr = null;
  if(THIS.cm) {
    titleMgr = getTitleMgrHandle();
    if( titleMgr ) {titleMgr.setVariable(THIS.name,THIS.value,THIS.exp);}
  }
  else if(THIS.aiccframe){
    titleMgr = getTitleMgrHandle();
    if( THIS.bSCORM ) {
	  var lmsVal = THIS.value;
	  if( lmsVal == '~~~null~~~' )
	    {lmsVal = null;}
      if( THIS.name == 'cmi.core.total_time' || THIS.name == 'cmi.total_time' ) {
        if( THIS.aiccframe == 'scorm' ) {
          LMSSetValue( 'cmi.core.session_time', lmsVal );
          if( titleMgr ) {titleMgr.setVariable('cmi.core.session_time',THIS.value,THIS.exp);}
        }
        else {
          LMSSetValue( 'cmi.session_time', lmsVal );
          if( titleMgr ) {titleMgr.setVariable('cmi.session_time',THIS.value,THIS.exp);}
        }
      }
      else {
        if( titleMgr ) {titleMgr.setVariable(THIS.name,THIS.value,THIS.exp);}
        if( THIS.aiccgroup ) {
          LMSSetValue( THIS.name, lmsVal );
          if( THIS.name == 'cmi.score.raw' ){
            var scaled = THIS.value / 100;
            LMSSetValue( 'cmi.score.scaled', scaled );
          }
        }
        else {
          var nameEQ = THIS.name + "=";
          var newData= nameEQ + escape(THIS.value) + ';';
          var bErr = false;
          var data= LMSGetValue( 'cmi.suspend_data' );
          if( data !== '' ) {
            var ca = data.split(';');
            for(var i=0;i<ca.length;i++) {
              var c = ca[i];
              if (c !== '' && c.indexOf(nameEQ) !== 0) {
                if( newData.length + c.length + 1 < 4096 )
                  {newData = newData + c + ';';}
                else
                  {bErr = true;}
              }
            }
          }
          if( bErr ) {
            var errMsg = 'Some of the persistent data was not able to be stored';
            trivLogMsg( errMsg );
            alert( errMsg );
          }
          LMSSetValue( 'cmi.suspend_data', newData );
        }
      }
    }
    else {
      if(THIS.aicccore) {putParam(THIS.aiccgroup,THIS.name+'='+THIS.value,THIS.aiccframe);}
      else if( THIS.aiccgroup ) {putParam(THIS.aiccgroup,THIS.value,THIS.aiccframe);}
      else {
        if( titleMgr ) {titleMgr.setVariable(THIS.name,THIS.value,THIS.exp);}
        saveVariable(THIS.name,THIS.value,THIS.exp,THIS.title,THIS.aiccframe);
      }
    }
  }
  else{
    if( THIS.f !== 0 && THIS.tV >= 0 ) {
      if( THIS.f == 4 ) {saveVariable(THIS.name,"~~f=4~~"+THIS.tV+'#'+THIS.value,THIS.exp,THIS.title,THIS.aiccframe);}
      else if ( THIS.f == 2 ) {saveVariable(THIS.name,"~~f=2~~"+THIS.tV+'#'+THIS.value,THIS.exp,THIS.title,THIS.aiccframe);}
      else if ( THIS.f == 1 ) {saveVariable(THIS.name,"~~f=1~~"+THIS.tV+'#'+THIS.value,THIS.exp,THIS.title,THIS.aiccframe);}
    }
    THIS.value = EncodeNull( THIS.value );
    saveVariable(THIS.name,THIS.value,THIS.exp,THIS.title,THIS.aiccframe);
  }
};

p.set=function(setVal) {
  var THIS = this;
  THIS.value = EncodeNull( setVal );
  THIS.f = 0;
  THIS.eTS = null;
  THIS.tV = null;
  THIS.save();
};

p.add=function(addVal) {
  var THIS = this;
  this.update();
  if ( THIS.f > 0 && !isNaN( addVal )) {
    THIS.tV += CalcTD( THIS.f, addVal );
    THIS.uDTV();
  }
  else if( THIS.value == "~~~null~~~" ) {
    THIS.f = 0;
    if( addVal !== null && addVal !== '' ) {THIS.value = addVal;}
  }
  else {
    THIS.f = 0;
    if( addVal !== null && addVal !== '' ) {
      if(!isNaN(THIS.value)&&!isNaN(addVal)&&!isNaN( parseFloat(addVal))&&!isNaN( parseFloat(THIS.value)) ) {
        var val=parseFloat(THIS.value)+parseFloat(addVal);
        if( addVal.indexOf( "." ) != -1 && THIS.value.indexOf( "." ) != -1 )
            {val = (parseInt(val*100000000,10))/100000000;}
        THIS.value=val.toString();
      }
      else {THIS.value+=addVal;}
    }
  }
  THIS.save();
};

p.sub=function(subVal) {
  var THIS = this;
  THIS.update();
  var val = null;
  if ( THIS.f > 0 && !isNaN( subVal )) {
    THIS.tV -= CalcTD( THIS.f, subVal );
    THIS.uDTV();
  }
  else if( THIS.value == "~~~null~~~" ) {
    THIS.f = 0;
    if( !isNaN(subVal)&&!isNaN(parseFloat(subVal) ) ) {
      THIS.value=parseFloat("-"+subVal);
      val=THIS.value;
      THIS.value=val.toString();
    }
  }
  else {
    THIS.f = 0;
    if( subVal !== null && subVal !== "" ) {
      if(!isNaN(THIS.value)&&!isNaN(subVal)&&!isNaN( parseFloat(subVal))&&!isNaN( parseFloat(THIS.value)) ) {
        val=parseFloat(THIS.value)-parseFloat(subVal);
        if( subVal.indexOf( "." ) != -1 && THIS.value.indexOf( "." ) != -1 )
            {val = (parseInt(val*100000000,10))/100000000;}
        THIS.value=val.toString();
      }
      else if( THIS.value.length >= subVal.length && THIS.value.substr( THIS.value.length - subVal.length) == subVal ) {
        THIS.value=THIS.value.substr( 0, THIS.value.length - subVal.length );
      }
    }
  }
  THIS.save();
};

p.mult=function(multVal) {
  var THIS = this;
  THIS.update();
  if( THIS.value != "~~~null~~~" ) {
    if(!isNaN(THIS.value)&&!isNaN(multVal)&&!isNaN( parseFloat(multVal))&&!isNaN( parseFloat(THIS.value)) ) {
      var val=parseFloat(THIS.value)*parseFloat(multVal);
      if( multVal.indexOf( "." ) != -1 && THIS.value.indexOf( "." ) != -1 )
        {val = (parseInt(val*100000000,10))/100000000;}
      THIS.value=val.toString();
    }
    THIS.save();
  }
};

p.div=function(divVal) {
  var THIS = this;
  THIS.update();
  if( THIS.value != "~~~null~~~" ) {
    if(!isNaN(THIS.value)&&!isNaN(divVal)&&!isNaN( parseFloat(divVal))&&!isNaN( parseFloat(THIS.value)) ) {
      if( parseFloat(divVal) !== 0 ) {
        var val=parseFloat(THIS.value)/parseFloat(divVal);
        val = parseInt( val*100, 10 );
        val = parseFloat( val/100 );
        if( divVal.indexOf( "." ) != -1 && THIS.value.indexOf( "." ) != -1 )
          {val = (parseInt(val*100000000,10))/100000000;}
        THIS.value=val.toString();
      }
    }
    THIS.save();
  }
};

p.setByVar=function(setVar) {
  var THIS = this;
  if( setVar.f > 0 ) {setVar.uDT();}
  else {setVar.update();}
  THIS.value = setVar.value;
  THIS.f = setVar.f;
  THIS.eTS = setVar.eTS;
  THIS.tV = setVar.tV;
  THIS.save();
};

p.addByVar=function VarAddVar(addVar) {
  var THIS = this;
  if( addVar.f > 0 ) {
    addVar.uDT();
    if( THIS.f > 0 ) {
      THIS.tV += addVar.tV;
      if( addVar.f == 1 ) {THIS.f = 1;}
        THIS.uDTV();
    }
    else {THIS.add( addVar.value );}
  }
  else {
    addVar.update();
    THIS.add( addVar.value );
  }
};

p.subByVar=function(subVar) {
  var THIS = this;
  if( subVar.f > 0 ) {
    subVar.uDT();
    if( THIS.f > 0 ) {
      THIS.tV -= subVar.tV;
      if( subVar.f == 1 ) {THIS.f = 1;}
      THIS.uDTV();
    }
    else {THIS.sub( subVar.value );}
  }
  else {
    subVar.update();
    THIS.sub( subVar.value );
  }
};

p.contains=function(strCont) {
  var THIS = this;
  THIS.update();
  if( THIS.value == "~~~null~~~" || THIS.value === "" ) {return 0;}
  var result=THIS.value.indexOf( strCont );
  return (result >= 0);
};

p.equals=function(strEquals) {
  this.update();
  return (this.value == strEquals);
};

p.lessThan=function(strTest) {
  var THIS = this;
  THIS.update();
  if( THIS.value == "~~~null~~~" || THIS.value === "" ) {
    if( strTest == "~~~null~~~" || strTest === "" ) {return 0;}
    else {return 1;}
  }
  if(isNaN(THIS.value)||isNaN(strTest)){return THIS.value<strTest;}
  else {return parseFloat(THIS.value)<parseFloat(strTest);}
};

p.greaterThan=function(strTest) {
  var THIS = this;
  THIS.update();
  if( THIS.value == "~~~null~~~" || THIS.value === "" ) {
    if( strTest == "~~~null~~~" || strTest === "" ) {return 1;}
    else {return 0;}
  }
  if(isNaN(THIS.value)||isNaN(strTest)) {return THIS.value>strTest;}
  else {return parseFloat(THIS.value)>parseFloat(strTest);}
};

p.uDT=function() {
  var THIS = this;
  var now = new Date();
  if( THIS.f == 1 ) {
    THIS.tV = now.getTime();
    THIS.value = FormatDS( now );
  }
  else if( THIS.f == 2 ) {
    THIS.tV = now.getTime();
    THIS.value = FormatTS( now );
  }
  else if( THIS.of == 4 ) {
    // Only the original Elapsed Time variable gets updated
    var dT = 0;
    if( THIS.eTS === null ) {
      var val = readVariable( THIS.name, "", THIS.exp, THIS.title );
      if( val ) {
        var hours = parseInt( val, 10 );
        var loc   = val.indexOf( ':' );
        val       = val.substring( loc + 1 );
        var mins  = parseInt( val, 10 );
        loc       = val.indexOf( ':' );
        val       = val.substring( loc + 1 );
        var secs  = parseInt( val, 10 );
        dT        = (((hours * 60) + mins) * 60 + secs) * 1000;
      }
      THIS.eTS = now.getTime() - dT;
    }
    THIS.tV = now.getTime() - THIS.eTS;
    THIS.value = FormatETS( THIS.tV );
  }
  THIS.save();
};

p.uDTV=function() {
  var THIS = this;
  if( THIS.f == 1 ) {THIS.value = FormatDS( new Date( THIS.tV ));}
  else if( THIS.f == 2 ) {THIS.value = FormatTS( new Date( THIS.tV ));}
  else if( THIS.f == 4 ) {THIS.value = FormatETS( THIS.tV );}
  THIS.save();
};

p.update=function() {
  var THIS = this;
  var now = new Date().getTime();
  if( THIS.lastUT >= now - 500 ) {return;}
  else {THIS.lastUT = now;}
  var titleMgr = null;
  if( THIS.cm ) {
    if( THIS.cm < 0 ) {
      THIS.defVal=readCookie(THIS.name,THIS.defVal);
      THIS.cm *= -1;
    }
    titleMgr = getTitleMgrHandle();
    if( titleMgr ) {THIS.value=titleMgr.getVariable(THIS.name,THIS.defVal,THIS.exp);}
    else {THIS.value=THIS.defVal;}
  }
  else if( THIS.aiccframe ) {
    titleMgr = getTitleMgrHandle();
    if( THIS.origAICC ) {
      if( THIS.bSCORM ) {
        if( THIS.name=='cmi.evaluation.course_id' ) {THIS.value=THIS.defVal;}
        else if( THIS.name=='cmi.core.lesson_id' ) {THIS.value=THIS.defVal;}
        else
            if( THIS.name!='cmi.core.exit' && THIS.name != 'cmi.exit' )
                THIS.value= LMSGetValue( THIS.name );
        if( titleMgr ) {
          titleMgr.setVariable(THIS.name,THIS.value,THIS.exp);
          if( THIS.name=='cmi.learner_id' ) {titleMgr.setVariable('cmi.core.student_id',THIS.value,THIS.exp);}
          if( THIS.name=='cmi.learner_name' ) {titleMgr.setVariable('cmi.core.student_name',THIS.value,THIS.exp);}
          if( THIS.name=='cmi.core.total_time' || THIS.name=='cmi.total_time' ) {THIS.value = UpdateSCORMTotalTime( THIS.value );}
        }
      }
      else if(THIS.name=='Core_Lesson') {
        THIS.value=getParam(THIS.aiccgroup);
      }
      else if(THIS.name=='Core_Vendor') {
        THIS.value=getParam(THIS.aiccgroup);
      }
      else if(THIS.name=='Course_ID') {
        THIS.value=getParam(THIS.name);
      }
      else {
        THIS.value=getParam(THIS.name);
      }
    }
    else {
      if( THIS.bSCORM ) {
        THIS.value=THIS.defVal;
        if( titleMgr && titleMgr.findVariable( THIS.name ) != -1 ){
            THIS.value=titleMgr.getVariable(THIS.name,THIS.defVal,THIS.exp);
       } else {
          var data= LMSGetValue( 'cmi.suspend_data' );
          if( data === '' ) {
            if( titleMgr ) {titleMgr.setVariable(THIS.name,THIS.value,THIS.exp);}
          }
          else {
            var ca = data.split(';');
            for(var i=0;i<ca.length;i++) {
              var c = ca[i];
              if( c.indexOf('=') >= 0 ) {
                ce = c.split('=');
                if( THIS.name == ce[0] ) {THIS.value = unescape(ce[1]);}
                if( titleMgr ) {titleMgr.setVariable(ce[0],unescape(ce[1]),THIS.exp);}
              }
            }
          }
        }
      }
      else {
        if( titleMgr ) {THIS.value=titleMgr.getVariable(THIS.name,THIS.defVal,THIS.exp);}
        else {THIS.value = THIS.defVal;}
      }
    }
  }
  else if( THIS.f > 0 ) {
    THIS.uDT();
  }
  else {
    var val = readVariable(THIS.name,THIS.defVal,THIS.exp,THIS.title);
    var subval = val ? val.substr( 0, 7 ) : null;
    if( subval == "~~f=1~~" ) {
      THIS.tV = parseInt( val.substr( 7, val.length-7 ), 10 );
      THIS.f = 1;
      THIS.uDTV();
    }
    else if( subval == "~~f=2~~" ) {
      THIS.tV = parseInt( val.substr( 7, val.length-7 ), 10 );
      THIS.f = 2;
      THIS.uDTV();
    }
    else if( subval == "~~f=4~~" ) {
      now = new Date();
      THIS.tV = parseInt( val.substr( 7, val.length-7 ), 10 );
      THIS.eTS = now.getTime() - THIS.tV;
      THIS.f = 4;
      THIS.uDTV();
    }
    else {THIS.value=val;}
  }
  THIS.value = EncodeNull( THIS.value );
};

p.getValue=function(){
  this.update();
  return this.value;
};

p.mailTo=function() {
  this.update();
  ObjLayerActionGoTo( 'mailto:' + this.value );
};

p.isCorr=function(ans) {
  this.update();
  if( this.value == ans )
    {return true;}
  else
    {return false;}
};

p.isCorrSub=function(ans,idx) {
  this.update();
  var answers = ans.split(",");
  if( this.value.indexOf( answers[idx] ) >= 0 )
    {return true;}
  else
    {return false;}
};

p.isAnsSub=function(idx) {
  this.update();
  var subtest = ',' + (idx+1) + '-';
  var test = ',' + this.value;
  if( test.indexOf( subtest ) >= 0 )
    {return true;}
  else
    {return false;}
};

p.isCorrFIB=function(ans) {
  this.update();
  var val = this.value.toLowerCase();
  var answers = ans.split("~;~");
  for(var i=0;i<answers.length;i++) {
    if( val == answers[i] )
      {return true;}
  }
  return false;
};

function saveTestScore( varTestName, score, title, frame )
{
  saveVariable( varTestName, score, null, title, frame );
}

var titleMgrHandle = null;
var getFn = null;

function getTitleMgrHandle()
{
   if( theApp.is.ieMac || (theApp.is.ns4 && theApp.is.nsMac))
   	return titleMgrHandle;

   if (titleMgrHandle === null)
   {
		try {
			titleMgrHandle = getTitleMgr( window, 0 );
		} catch(error){ titleMgrHandle = null; }
	}
   return titleMgrHandle;
}

function getTitleMgr( testWnd, level )
{
   if( !testWnd )
     {return null;}

    if( testWnd.jTitleManager )
    	return testWnd.jTitleManager;
    else if( testWnd.document.titleMgr )
    	return testWnd.document.titleMgr;
    else
    {
      var target = testWnd.parent.titlemgrframe;
      if( target ) {
         if( target.jTitleManager ){
           return target.jTitleManager;
         }else{
           return target.document.titleMgr;
         }
      } else {
         if( testWnd.name.indexOf( 'Trivantis_' ) === 0 ){
           return getTitleMgr( testWnd.opener, level+1 );
         }else if( level < 2 ){
           return getTitleMgr( testWnd.parent, level+1 );
         }
      }
    }

   return null;
}

function readCookie(name,defval) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i<ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') {c = c.substring(1);}
    if (c.indexOf(nameEQ) === 0) {return c.substring(nameEQ.length);}
  }
  return defval;
}

function afterProcessTest( score, name ) {
}

function UpdateSCORMTotalTime( currTime ) {
  var startDate = readVariable( 'TrivantisSCORMTimer', 0 );
  if ( startDate === 0 ) {return currTime;}

  var currentDate = new Date().getTime();
  var elapsedMills = currentDate - startDate;
  var hours = parseInt( currTime, 10 );
  var loc   = currTime.indexOf( ':' );
  currTime  = currTime.substring( loc + 1 );
  var mins  = parseInt( currTime, 10 );
  loc       = currTime.indexOf( ':' );
  currTime  = currTime.substring( loc + 1 );
  var secs  = parseInt( currTime, 10 );
  loc       = currTime.indexOf( '.' );
  currTime  = currTime.substring( loc + 1 );
  var mills = parseInt( currTime, 10 ) * 100;
  var total = (((hours * 60) + mins) * 60 + secs) * 1000 + mills;
  return convertTotalMills( total + elapsedMills );
}

function EncodeNull( chkStr ) {
    if( chkStr === null ) {return "~~~null~~~";
    }else if( String( chkStr ) === "0" ){ return 0;
    }else if ( chkStr === "" ) {return "~~~null~~~";}
    return chkStr;
}

