function flms_check_access(tmp_dir)
{
  if (!flms_check_user())
  	flms_run_error("access",tmp_dir);
}

function flms_check_user()
{
  var tmp_return = false;
  USERNAME = get_cookie_value("username","");
  if (USERNAME != "")
  	tmp_return = true;
    
  KARTA_USER = get_cookie_value("KU_" + PROG_ID + "_" + USERNAME + "_user","");
  FIRST_NAME = get_sub_cookie_value("fn",KARTA_USER,"");
  LAST_NAME = get_sub_cookie_value("ln",KARTA_USER,"");
  
  return tmp_return
}

function flms_check_url()
{
  //check URL for username and password
  USERNAME = get_url_value('username');
  PASSWORD = decrypt(get_url_value('password'), generate_key(),122,48);

  if ((USERNAME != null) && (PASSWORD != null)) {
  	//need to log in user
  	if (flms_verify_user())  {
  		flms_set_session_cookie();
  		location.href="menu.htm";
  	}
  	else
  		flms_run_error("login","");
  }
}

function flms_do_login()
{
  USERNAME = document.f.username.value;
  PASSWORD = document.f.password.value;
  //enc_mod_key = document.f.modulekey.value;
  enc_mod_key = "";
  
  PASSED_CHECKS = true;
  
  //verify fields are not blank
  if (USERNAME == '') {
  	PASSED_CHECKS = false;
  	//flms_run_error("empty","an Username");
  }
  if (PASSWORD == '') {
  	PASSED_CHECKS = false;
  	//flms_run_error("empty","a Password");
  }
  
  if (flms_verify_user())  {
  	flms_set_session_cookie();
  	if (enc_mod_key != "")
  		flms_dec_module(enc_mod_key);
      location.href="menu.htm";
  }
  else  {
    if (FLMS_USE_ENC_UTIL)  {
  	  var outputTypeID = ENC_UTIL_OUTPUT.createOutputType(CONST_METHOD_FUNCTION,"flms_enc_util_validate_pwd","");
      ENC_UTIL.validatePassword(USERNAME,PASSWORD,outputTypeID);
    }
    else
      flms_run_error("login","");
  }
}

function flms_enc_util_validate_pwd(pid,result)
{
  var tmp_username = ENC_UTIL.getEmployeeID(pid);
  if (tmp_username == USERNAME) {
    if (result == "true") {
      FIRST_NAME = "UNKNOWN";
      LAST_NAME = "UNKNOWN";
      flms_register_user(USERNAME, FIRST_NAME, LAST_NAME, encrypt(PASSWORD, generate_key(),122,48));
      flms_do_login();
    }
    else
      flms_run_error("login","");
  }
  else
    flms_run_error("login","");
}

function flms_set_session_cookie()
{
  document.cookie = "username=" + USERNAME +"; path=" + COOKIE_PATH + ";"; 
}

function flms_verify_user()
{
  //get cookie record for this user
  KARTA_USER = get_cookie_value("KU_" + PROG_ID + "_" + USERNAME + "_user","");
  if (KARTA_USER != "")
  {
  	//found user, now need to verify password and parse data
  	if (PASSWORD != decrypt(get_sub_cookie_value("pwd",KARTA_USER,""), generate_key(),122,48))
  		return false;
  	FIRST_NAME = get_sub_cookie_value("fn",KARTA_USER,"");
  	LAST_NAME = get_sub_cookie_value("ln",KARTA_USER,"");
  	return true;
  }
  else  {
    if (FLMS_NO_REGISTER) {
      /*   
      if (PASSWORD == "karta") {
        FIRST_NAME = "UNKNOWN";
        LAST_NAME = "UNKNOWN";
        flms_register_user(USERNAME, FIRST_NAME, LAST_NAME, encrypt(PASSWORD, generate_key(),122,48));
        return true;
      }
      */
    }
  }
  return false;
}

function flms_do_register()
{
  
  PASSED_CHECKS = true;
  
  //get reg info from form
  if (FLMS_AUTO_REGISTER) {
    FIRST_NAME = tmp_first_name;
    LAST_NAME = tmp_last_name;
  }
  else {
    FIRST_NAME = document.f.first_name.value;
    LAST_NAME = document.f.last_name.value;
  }
  
  //verify fields are not blank
  if (FIRST_NAME == '') {
  	PASSED_CHECKS = false;
  	flms_run_error("empty","your First Name");
  }
  if (LAST_NAME == '')  {
  	PASSED_CHECKS = false;
  	flms_run_error("empty","your Last Name");
  }
 		
  //save info to cookie if passed checks
  if (FLMS_AUTO_LOGIN)  {
    var tmp_user_id = get_url_value('user_id'); 
    USERNAME = tmp_user_id;
    PASSWORD1 = encrypt(USERNAME, generate_key(),122,48);
    PASSWORD2 = PASSWORD1;
  }
  else  {
    USERNAME = document.f.username.value;
    if (USERNAME == '')
		{
			PASSED_CHECKS = false;
			flms_run_error("empty","an Username");
		}
    PASSWORD1 = document.f.password1.value;
		PASSWORD2 = document.f.password2.value; 
		if ((PASSWORD1 == '') || (PASSWORD2 == ''))
		{
			PASSED_CHECKS = false;
			flms_run_error("empty","a Password");
		}
		
		//verify passwords
		if (PASSWORD1 != PASSWORD2)
		{
			PASSED_CHECKS = false;
			flms_run_error("passwords","");
			document.f.password1.value = "";
			document.f.password2.value = "";
		}
		//encode password
		PASSWORD1 = encrypt(PASSWORD1, generate_key(),122,48);
    var tmp_user_id = USERNAME;
  }
  
  
  //verify username is not in use
  if (flms_dup_username(USERNAME)) {
  	PASSED_CHECKS = false;
  	flms_run_error("dupUser","");
  }
  if (PASSED_CHECKS && tmp_user_id != null)  {
    //register user
    flms_register_user(tmp_user_id, FIRST_NAME, LAST_NAME, PASSWORD1);
    location.href="relogin.htm?username=" + USERNAME + "&password=" + PASSWORD1;
  }
  else  {
    alert("Registration Failed!");
  }
}

function flms_register_user(tmp_username, tmp_fn, tmp_ln, tmp_password)
{
  //set general user cookie
  flms_set_cookie_data(PROG_ID,tmp_username,"user","&fn|" + tmp_fn + "&ln|" + tmp_ln + "&pwd|" + tmp_password + "&time|0");
  
  //set bookmark/location cookie
  flms_set_cookie_data(PROG_ID,tmp_username,"loc",flms_add_sco_locs(NUMSCOS,NUMSUBSCOS));
      
  //set status cookie
  flms_set_cookie_data(PROG_ID,tmp_username,"status",flms_add_sco_status(NUMSCOS,NUMSUBSCOS));
}

function flms_dup_username(tmp_username)
{
  //check to see if this user is in cookie, return true if so.
  if (get_cookie_value("KU_" + PROG_ID + "_" + tmp_username + "_user","") == null)
  	return true;
  else
  	return false;
}

function flms_get_sco_status(tmp_sco,tmp_sub_sco)
{
  //get sco or sub sco status
  tmp_status = "n";
  if (!flms_get_browse())  {
    tmp_status_list = get_cookie_value("KU_" + PROG_ID + "_" + get_cookie_value("username","") + "_status","");
    if (tmp_status_list != "")
    {		
    	tmp_status = get_item_in_list(get_item_in_list(tmp_status_list,tmp_sco,"&"),tmp_sub_sco,"|");
    }
  }
  return tmp_status;
}

function flms_get_sco_loc(tmp_sco,tmp_sub_sco)
{
  //get sco or sub sco status
  tmp_loc = "0";
  if (!flms_get_browse())  {
    tmp_loc_list = get_cookie_value("KU_" + PROG_ID + "_" + get_cookie_value("username","") + "_loc","");
    if (tmp_loc_list != "")
    {		
    	tmp_loc = get_item_in_list(get_item_in_list(tmp_loc_list,tmp_sco,"&"),tmp_sub_sco,"|");
    }
  }
  else
    tmp_loc = MAX_PAGE_NUM;
    
  return tmp_loc;
}

function flms_get_mod_complete(tmp_start_sco, tmp_end_sco)
{
  var tmp_return = true;
  if (!flms_get_browse())  {
    for (b = tmp_start_sco; b < tmp_end_sco + 1; b++) {
      var tmp_value = flms_get_sco_status(b,"1");
    	if ((tmp_value != "c") && (tmp_value != "p")) {
    		tmp_return = false;
      }
    }
  }
  else
    tmp_return = false;
    
  return tmp_return;
}

function flms_get_mod_started(tmp_start_sco, tmp_end_sco)
{
  var tmp_return = false;
  if (!flms_get_browse())  {
    for (b = tmp_start_sco; b < tmp_end_sco + 1; b++) {
      var tmp_value = flms_get_sco_status(b,"1");
    	if (tmp_value != "n") {
    		tmp_return = true;
      }
    }
  }
  else
    tmp_return = true;
 
 
  return tmp_return;
}

function flms_set_mod_complete(tmp_start_sco, tmp_end_sco)
{
  if (!flms_get_browse())  {
    for (b = tmp_start_sco; b < tmp_end_sco + 1; i++) {
      flms_set_sco_status(b,"1","c");
    }
  }
}

function flms_set_sco_status(tmp_sco,tmp_sub_sco,tmp_status)
{
  if (!flms_get_browse())  {
    var tmp_val = "";
    var tmp_usr = "";
    
    //get sco status cookie
    tmp_usr = get_cookie_value("username","");
    tmp_val = flms_get_cookie_data(PROG_ID,tmp_usr,"status");
    if (tmp_val != "")  {
      tmp_val = set_item_in_list(tmp_val,set_item_in_list(get_item_in_list(tmp_val,tmp_sco,"&"),tmp_status,tmp_sub_sco,"|"),tmp_sco,"&");
    	flms_set_cookie_data(PROG_ID,tmp_usr,"status",tmp_val);
    }
    else  {
    	alert(flms_run_error("lms"));
    }
  }
}

function flms_set_sco_loc(tmp_sco,tmp_sub_sco,tmp_loc)
{
  if (!flms_get_browse())  {
    var tmp_val = "";
    var tmp_usr = "";
    //get sco loc cookie
    tmp_usr = get_cookie_value("username","");
    tmp_val = flms_get_cookie_data(PROG_ID,tmp_usr,"loc");
    if (tmp_val != "")  {
      tmp_val = set_item_in_list(tmp_val,set_item_in_list(get_item_in_list(tmp_val,tmp_sco,"&"),tmp_loc,tmp_sub_sco,"|"),tmp_sco,"&");
      flms_set_cookie_data(PROG_ID,tmp_usr,"loc",tmp_val);
    }
    else  {
    	alert(flms_run_error("lms"));
    }
  }
}

function flms_add_session_time(session_time)
{
  //note all times are in minutes
  
  //replace session time in cookie
  var tmp_key = "KU_" + PROG_ID + "_" + get_cookie_value("username","") + "_user";
  var tmp_val = get_cookie_value(tmp_key,"");
  if (tmp_val != "")  {
    //add previous session time to this session
    var total_session_time = session_time + parseInt(get_sub_cookie_value("time",tmp_val,""));
    tmp_pos = tmp_val.indexOf("time|");
    if (tmp_pos > -1) {
  		tmp_front_part = tmp_val.substring(0,(tmp_pos+5));
  		tmp_last_part = tmp_val.substring((tmp_pos+5),tmp_val.length);
      
  		//clear out old value and add new
  		if (tmp_last_part.indexOf('&') > 0)
  			tmp_last_part = total_session_time.toString() + tmp_last_part.substring(tmp_last_part.indexOf('&'),tmp_last_part.length);
  		else
  			tmp_last_part = total_session_time.toString();
  		
  		//put tmp_value back together
  		tmp_val = tmp_front_part + tmp_last_part;
  	}
  	tmp_cookie = tmp_key + "=" + tmp_val;
  	document.cookie = tmp_cookie + "; expires=" + EXPIRE_TIME + "; path=" + COOKIE_PATH;
  }
}

function flms_set_session_time(session_time)
{
  //note all times are in minutes
  
  //replace session time in cookie
  var tmp_key = "KU_" + PROG_ID + "_" + get_cookie_value("username","") + "_user";
  var tmp_val = get_cookie_value(tmp_key,"");
  if (tmp_val != "")  {
    //add previous session time to this session
    var total_session_time = session_time;
    tmp_pos = tmp_val.indexOf("time|");
    if (tmp_pos > -1) {
  		tmp_front_part = tmp_val.substring(0,(tmp_pos+5));
  		tmp_last_part = tmp_val.substring((tmp_pos+5),tmp_val.length);
      
  		//clear out old value and add new
  		if (tmp_last_part.indexOf('&') > 0)
  			tmp_last_part = total_session_time.toString() + tmp_last_part.substring(tmp_last_part.indexOf('&'),tmp_last_part.length);
  		else
  			tmp_last_part = total_session_time.toString();
  		
  		//put tmp_value back together
  		tmp_val = tmp_front_part + tmp_last_part;
  	}
  	tmp_cookie = tmp_key + "=" + tmp_val;
  	document.cookie = tmp_cookie + "; expires=" + EXPIRE_TIME + "; path=" + COOKIE_PATH;
  }
}

function flms_add_sco_locs(tmp_num_scos, tmp_num_sub_scos)
{
  var tmp_value = "";
  for (i = 0; i < tmp_num_scos; i++)  {
    //add master sco location
    tmp_value += "0|";
    //add subsco locations
    for (j = 0; j < tmp_num_sub_scos[i]; j++) {
    	tmp_value += "0|";
    }
    //add list delimiter
    tmp_value += "&";
  }
  return tmp_value
}

function flms_add_sco_status(tmp_num_scos, tmp_num_sub_scos)
{
  var tmp_value = "";
  for (i = 0; i < tmp_num_scos; i++)  {
    //add master sco status (n = not attempted, i = incomplete, c = complete, p = passed, f = failed)
    tmp_value += "n|";
    //add subsco status
    for (j = 0; j < tmp_num_sub_scos[i]; j++) {
    	tmp_value += "n|";
    }
    //add list delimiter
    tmp_value += "&";
  }
  return tmp_value
}

function flms_run_sco(tmp_dir,tmp_sco_num)
{
  
  if (check_preq("SCOLINK" + convert_num_to_str(tmp_sco_num)))  {
    location.href = tmp_dir + "/start.htm?filelms=1&sco=" + tmp_sco_num;
  }
  else
    alert("You must complete the modules in the order presented.");
}

function flms_enc_module()
{
  mod_key = "";
  num_comp = 0;
  
  for (k=0;k<6;k++) {
  	var start_sco = eval("cMod" + k + "End") + 1;
  	var end_sco = eval("cMod" + (k+1) + "End");
  
  	if (flms_get_mod_complete(start_sco, end_sco)) {
  		mod_key += "C";
  		num_comp += 1;
  	}
  	else
  		mod_key += "I";
  }
  
  return encrypt(mod_key.substr(0,num_comp) + "Z" + mod_key.substr(num_comp,mod_key.length), LAST_NAME + "KARTAUSER" + PROG_ID,90,65);
}

function flms_dec_module(enc_mod_key)
{
  var tmp_error = false;
  var tmp_num_comp = 0;
  
  //decrypt key
  var mod_key = decrypt(enc_mod_key,LAST_NAME + "KARTAUSER" + PROG_ID,90,65);
  
  //get numcomp
  var num_comp = mod_key.indexOf("Z",0);
  
  //get completion w/o validator		
  mod_key = mod_key.substr(0,num_comp) + mod_key.substr(num_comp+1,mod_key.length);
  
  //Validate key
  for (i=0;i<6;i++) {
  	tmp_char = mod_key.substr(i,1);
  	if (tmp_char == "C")
  		tmp_num_comp += 1
  	else  {
  		if (tmp_char != "I")
  			tmp_error=true;
  	}
  }
  if (tmp_num_comp != num_comp)
  	tmp_error = true;
  
  if (tmp_error)  {
  	alert("Error! Invalid Module Key!\nModule info not updated!");
  	//parent.location.href = "login.htm";
  }
  else  {
  	//update sco status for modules
  	var start_sco = 0;
  	var end_sco = 0;	
  	for (k=0;k<6;k++) {
  		tmp_char = mod_key.substr(k,1);
  		if (tmp_char == "C")  {
  			start_sco = eval("cMod" + k + "End") + 1;
  			end_sco = eval("cMod" + (k+1) + "End");
  			flms_set_mod_complete(start_sco, end_sco);
  		}
  	}
  }
}

function flms_show_cert()
{
  if (COURSE_COMPLETE)  {
    var tmp_username = get_cookie_value("username","");
    var tmp_pwd = get_sub_cookie_value("pwd",get_cookie_value("KU_"+PROG_ID+"_"+tmp_username + "_user",""),"");
		
    //show cert
CertWin=open("certificate.htm","CerttWin","scrollbars=no,resizeable=no,width=700,height=400,toolbar=no,directories=no,menubar=yes,status=yes,");
			location.href="relogin.htm?username=" + tmp_username + "&password=" + tmp_pwd;
	}
}

function flms_show_code()
{
  var tmp_username = get_cookie_value("username","");
  var tmp_key = tmp_username.toUpperCase() + KEY_VALUE;
  alert("Your completion code is: " + convertDecStrToStr(encrypt(COMPSTR+convert_num_to_char(get_sub_cookie_value("time",get_cookie_value("KU_"+PROG_ID+"_"+tmp_username + "_user",""),"")),tmp_key,VALUE_HI,VALUE_LO)) + "\nWrite this code down, log onto the " + LMS_NAME + ", take the " + COURSE_TITLE + " (CD Version) Course\nand enter the code when prompted. This will complete the course.");
}

function flms_auto_login()
{
  //check url for user_id
  if (FLMS_AUTO_LOGIN) {
    var tmp_user_id = get_url_value('user_id');  
    if ((tmp_user_id == null) || (isNaN(tmp_user_id))) {
      //use default user_id
      tmp_user_id = PROG_ID;
    }
    //check to see if this user is registered
    var tmp_key = "KU_" + PROG_ID + "_" + tmp_user_id + "_user";
    if (get_cookie_value(tmp_key,"") == "") {
      location.href = "register.htm?user_id=" + tmp_user_id;
    }
    else  {
      USERNAME = tmp_user_id;
      PASSWORD1 = encrypt(USERNAME, generate_key(),122,48);
      PASSWORD2 = PASSWORD1;
      //do auto login
      location.href = "relogin.htm?username=" + USERNAME + "&password=" + PASSWORD1;
    }
  }
}

function flms_run_error(tmp_error, tmp_arg)
{
  if (tmp_error == "login") {
  	alert("Login Invalid! Please try again.");
  	//document.f.password.value='';
    location.href = tmp_arg + "login.htm";
  }
  if (tmp_error == "access")  {
  	alert("You have not logged into the training.  Please do so.");
  	if (tmp_arg == "close")
  		window.close();
  	else
  		location.href = tmp_arg + "login.htm";
  }
  if (tmp_error == "empty") {
  	alert("You must supply " + tmp_arg + ".");
  }
  if (tmp_error == "passwords") {
  	alert("Your passwords do not match, try again.");
  }
  if (tmp_error == "dupUser") {
  	alert("There is already an user with this username.  Please select another username.");
  	document.f.username.value = '';
  }
  if (tmp_error == "lms") {
  	alert("There has been an error with the LMS system.  Student Tracking is not working correctly.");
  }
}

function flms_sco_finish(tmp_href)
{
  close_child_windows("exit_sco");
  
  var END_TIME = new Date();
  var BEGIN_TIME = new Date(get_cookie_value("BEGIN_TIME"));
  var min_date_diff = ((END_TIME - BEGIN_TIME) / 1000) / 60;
  min_date_diff = Math.floor(min_date_diff);
  if (min_date_diff == 0)
    min_date_diff = 1;
  
  var tmp_cur_sco = get_cookie_value("CUR_SCO")
  if (tmp_cur_sco != null)  {
    //add current time to session time
    if (!flms_get_course_complete())
      flms_add_session_time(min_date_diff);
  }
  
  //document.cookie = "CUR_SCO=; path=" + COOKIE_PATH + ";";
  document.cookie = "SCO_STATUS=; path=" + COOKIE_PATH + ";";
  document.cookie = "BEGIN_TIME=; path=" + COOKIE_PATH + ";";
  
  if (RUN_TYPE == "flms")  {
    //get all the FLMS cookie data and save it to suspend_data
    get_flms_cookie_data(PROG_ID,get_user_name());
    //if SCO is complete, set it to "completed"
    if (flms_get_mod_complete(1,NUMSCOS)) {
      var tmp_run_type = RUN_TYPE;
      RUN_TYPE = "";
      set_sco_status("1","c");
      RUN_TYPE = tmp_run_type;
    }
    if (CONTENT_WIN != null)  {
      /*
      if (tmp_cur_sco != null)  {
        var tmp_mod_num = 0;
        for (w=1;w<NUMMODS;w++) {
          if (parseInt(tmp_cur_sco) <= MOD_END[w])  {
            tmp_mod_num = w;
            w = NUMMODS;
          }
        }
        CONTENT_WIN.location.href = "../mod" + tmp_mod_num + "_menu.htm";
      }
      else  {  
      */
        CONTENT_WIN.location.href = tmp_href;
      //}
    }
  }
  else  {
    parent.location.href = tmp_href; 
  	//parent.location.href = "../relogin.htm?username=" + TEMP_USER + "&password=" + TEMP_PWD;
  }
}

function flms_set_cookie_data(tmp_prog_id,tmp_user_id,cookie_key,tmp_data)
{
  var tmp_key = "KU_" + tmp_prog_id + "_" + tmp_user_id + "_" + cookie_key;
  document.cookie = tmp_key + "=" + tmp_data + "; expires=" + EXPIRE_TIME + "; path=" + COOKIE_PATH + ";";
}

function flms_get_cookie_data(tmp_prog_id,tmp_user_id,cookie_key)
{
  var tmp_key = "KU_" + tmp_prog_id + "_" + tmp_user_id + "_" + cookie_key;
  return get_cookie_value(tmp_key,"");
}

function flms_get_cur_sco()
{
  return get_cookie_value("CUR_SCO","");
}

function flms_get_browse()
{
  var tmp_boolean = false
  if (get_cookie_value("BROWSE","false") == "true")
    tmp_boolean = true;
  return tmp_boolean;
}

function flms_set_browse(bln_browse)
{
  var browse_mode = "true";
  if (!bln_browse)
    browse_mode = "false";
  set_cookie_value("BROWSE",browse_mode);
}

function flms_get_scos_status()
{
  var tmp_s_sco = 1;
  var tmp_e_sco = NUMSCOS;
  var status_list = "";
  for (t=tmp_s_sco;t<(tmp_e_sco+1);t++)
  {
    status_list = status_list + flms_get_sco_status(t,"1") + "|";
  }
  return status_list;
}

function flms_get_flash_params(tmp_prog_id,tmp_user_id,tmp_cur_sco)
{
  var return_value = "";
  
  /* modified for DISA II
  //add page num
  return_value += "page_num=" + PAGE_NUM;
  //add status
  return_value += "&sco_status=" + get_item_in_list(flms_get_cookie_data(tmp_prog_id,tmp_user_id,"status"),tmp_cur_sco,"&");
  //add location
  return_value += "&sco_location=" + get_item_in_list(flms_get_cookie_data(tmp_prog_id,tmp_user_id,"loc"),tmp_cur_sco,"&");
  */
  //done only for DISA II
  var tmp_status = flms_get_sco_status(tmp_cur_sco,"1");
  var tmp_loc = flms_get_sco_loc(tmp_cur_sco,"1");

  if (flms_get_browse())  {
    tmp_status = "c";
    tmp_loc = MAX_PAGE_NUM;
  }
  //if (tmp_loc == "0")
    //tmp_loc = "1";
  return_value += "current_sco=" + tmp_cur_sco;
  return_value += "&sco_status=c"; // + tmp_status;
  return_value += "&sco_location=" + tmp_loc;
  return_value += "&max_page=" + MAX_PAGE_NUM;
  return_value += "&scos_status=" + flms_get_scos_status();
  return_value += "&course_complete=" + flms_get_course_complete();

  return return_value;
}

function flms_enc_util_get_mark()
{
  var outputTypeID = ENC_UTIL_OUTPUT.createOutputType(CONST_METHOD_FUNCTION,"flms_enc_util_ver_output","");
  ENC_UTIL.generateVerify(USERNAME,outputTypeID);
}

function flms_enc_util_ver_output(pid,result)
{
  var tmp_username = ENC_UTIL.getEmployeeID(pid);
  if (tmp_username == USERNAME) {
    FLMS_VERIFICATION = result;
    var outputTypeID = ENC_UTIL_OUTPUT.createOutputType(CONST_METHOD_FUNCTION,"flms_enc_util_mark_output","");
    //check to see it course complete
    if (flms_get_course_complete())  {
      ENC_UTIL.generateCompletion(USERNAME,get_sub_cookie_value("time",get_cookie_value("KU_"+PROG_ID+"_"+tmp_username + "_user",""),""),FLMS_VERIFICATION,outputTypeID);
    }
    else  {
      ENC_UTIL.generateBookmark(USERNAME,flms_generate_mark(),FLMS_VERIFICATION,outputTypeID);
    }
  }
}

function flms_generate_mark()
{
  var tmp_s_sco = MOD_END[0] + 1;
  var tmp_e_sco = MOD_END[1]; 
  var last_sco = 1;
  var tmp_status = "";
  for (t=tmp_s_sco;t<(tmp_e_sco+1);t++)
  {
    tmp_status = flms_get_sco_status(t,"1");
    if ((tmp_status != "c") && (tmp_status != "p")) {
      last_sco = t;
      t = tmp_e_sco+1;
    } 
  }
  //get_sub_cookie_value("time",get_cookie_value("KU_"+PROG_ID+"_"+ USERNAME + "_user",""),"")
  return convert_num_to_str(last_sco,2) + get_sub_cookie_value("time",get_cookie_value("KU_"+PROG_ID+"_"+ USERNAME + "_user",""),"");
}

function flms_enc_util_mark_output(pid,result)
{
  //alert(result);
  var tmp_username = ENC_UTIL.getEmployeeID(pid);
  if (tmp_username == USERNAME) {
    if (FLMS_ENC_ACTION == "show_menu") {
      var containerObj = document.createElement("SPAN");
      document.body.appendChild(containerObj);
      var tmp_flash_params = "mark_code=" + result + "&course_complete=" + flms_get_course_complete() + "&current_sco=" + flms_get_cur_sco() + "&scos_status=" + get_sco_status_list();
      var flashMovie = new FlashMovie(containerObj);
      flashMovie.setPath("interface/menu.swf");
      flashMovie.setColor("#FFFFFF");
      flashMovie.setWidth("780");
      flashMovie.setHeight("545");
      flashMovie.setFlashParams(tmp_flash_params);
      flashMovie.writeMovie("1");
      NAVIGATING = false;
      
      if ((flms_get_course_complete()) && (get_cookie_value("SHOWN_COMP_CODE","") != "true")) {
        set_cookie_value("SHOWN_COMP_CODE","true");
        flms_show_mark(result);
      }
    }
    if (FLMS_ENC_ACTION == "show_mark")
      flms_show_mark(result);
  }
  else
    flms_run_error("login","");
}

function flms_get_flash_menu()
{
  if (FLMS_USE_ENC_UTIL)  {
    FLMS_ENC_ACTION = "show_menu";
    flms_enc_util_get_mark();
  }
  else  {
    var containerObj = document.createElement("SPAN");
    document.body.appendChild(containerObj);
    var tmp_flash_params = "mark_code=&course_complete=" + flms_get_course_complete() + "&current_sco=" + flms_get_cur_sco() + "&scos_status=" + get_sco_status_list();
    var flashMovie = new FlashMovie(containerObj);
    flashMovie.setPath("interface/menu.swf");
    flashMovie.setColor("#FFFFFF");
    flashMovie.setWidth("780");
    flashMovie.setHeight("545");
    flashMovie.setFlashParams(tmp_flash_params);
    flashMovie.writeMovie("1");
    NAVIGATING = false;
  }
}

function flms_set_bookmark(mark)
{
  var outputTypeID = ENC_UTIL_OUTPUT.createOutputType(CONST_METHOD_FUNCTION,"flms_enc_util_mark_decode","");
  ENC_UTIL.decodeBookmark(USERNAME,mark,outputTypeID);
}

function flms_enc_util_mark_decode(pid,result)
{
  var tmp_username = ENC_UTIL.getEmployeeID(pid);
  if (tmp_username == USERNAME) {
    if (result == "") {
      var mark = ENC_UTIL.getRequestValue(pid,"code");
      var outputTypeID = ENC_UTIL_OUTPUT.createOutputType(CONST_METHOD_FUNCTION,"flms_enc_util_comp_decode","");
      ENC_UTIL.decodeCompletion(USERNAME,mark,outputTypeID);
      
    }
    else  {
      var cur_sco = parseFloat(result.substr(0,2));
      if (cur_sco > NUMSCOS)
        alert("You have entered an invalid code. Please Try again.");
      else  {
        var time = result.substr(2,result.length);
        flms_set_decoded_mark(cur_sco,time);
      }
    }
  }
}

function flms_enc_util_comp_decode(pid,result)
{
  var tmp_username = ENC_UTIL.getEmployeeID(pid);
  if (tmp_username == USERNAME) {
    if (result == "") {
      alert("You have entered an invalid code. Please Try again.");
    }
    else  {
      var cur_sco = NUMSCOS + 1;
      var time = result;
      flms_set_decoded_mark(cur_sco,time);
    }
  }
}

function flms_set_decoded_mark(cur_sco,time)
{
  var tmp_s_sco = MOD_END[0] + 1;
  var tmp_e_sco = MOD_END[1];
  for (t=tmp_s_sco;t<cur_sco;t++)
  {
    flms_set_sco_status(t,"1","c");
  }
  for (t=cur_sco;t<=tmp_e_sco;t++)
  {
    flms_set_sco_status(t,"1","n");
  }
  flms_set_session_time(time);
  set_cookie_value("CUR_SCO",cur_sco);
  window.location.reload();
}

function flms_get_course_complete()
{
  var tmp_return = false;
  var tmp_s_sco = MOD_END[0] + 1;
  var tmp_e_sco = MOD_END[1];
  if (!flms_get_browse())
    tmp_return = flms_get_mod_complete(tmp_s_sco,tmp_e_sco)
  if (tmp_return)
    COURSE_COMPLETE = true;
    
  return tmp_return;
}

function flms_get_mark_page()
{
  NAVIGATING = true;
  FLMS_ENC_ACTION = "show_mark";
  flms_enc_util_get_mark();
}

function flms_show_mark(mark)
{
  var tmp_username = get_cookie_value("username","");
  var tmp_pwd = get_sub_cookie_value("pwd",get_cookie_value("KU_"+PROG_ID+"_"+tmp_username + "_user",""),"");

  //show cert
MarkWin=open("mark.htm?mark="+mark+"&username="+USERNAME,"MarkWin","scrollbars=no,resizeable=no,width=700,height=500,toolbar=no,directories=no,menubar=yes,status=yes,");
  NAVIGATING = false;
}

function flms_unload()
{
  //nothing
}
  

