var LOAD_DONE = false;
var ORIG_IMG = new Image;
var COURSES_OV = new Image;
var PROFILE_OV = new Image;
var REPORTS_OV = new Image;
var ADMIN_OV = new Image;
var LOGOUT_OV = new Image;
var LED_ON = new Image;
var BROWSER_PASSED = new Array();
var BROWSER_TEST_WIN = null;
var BROWSER_TEST_COUNTER = 0;
var BROWSER_INTERVAL_ID = "";
var BROWSER_TEST_FLASH = false;
var BROWSER_ERROR_NUM = -1;

function check_self_register()
{
  //get current site
  var site_name = document.loginform.site.value;
  if (site_name == "")  {
    alert("Please enter the name of the site you\nwish to register for in the site input box.");
  }
  else  {
    if (num_sites > 0)  {
      var tmp_sr = 0;
      for (i=1;i<=num_sites;i++)  {
        tmp_sn = eval("site_num_" + i);
        if (tmp_sn == site_name.toLowerCase())  {
          tmp_sr = eval("site_sr_" + i);
          break;
        }
      }
      if (tmp_sr == 1)
        location.href = "reg_step_1.asp?site=" + site_name.toLowerCase();
      else
        alert("The " + site_name + " site does not allow self registration.\nFor an account please contact your supervisor.");
    }
    else
      alert("No sites have been set up in the LMS.\nPlease contact your LMS administrator.");
  }
}

function validate_input_step_1(f_obj)
{
  if (f_obj.user_name.value != "")  {
    if (f_obj.org_id.value != 0)  {
      //check username
      username_chk = check_input(f_obj.user_name.value,"username");
      if (username_chk != "true") {
        if (username_chk == "exceeds_255")
          alert("Your username can not be greater than 255 characters.\nPlease use a shorter username.");
        else
          alert("You can only use a-z, 0-9, '_' and '-' in your username.\nPlease enter a different username.");
        f_obj.user_name.focus();
        return false;
      }
      else
        return true;
    }
    else  {
      alert("You have not selected an organization.\nPlease do so.");
      f_obj.org_id.focus();
      return false;
    }
  }
  else  {
    alert("You have not supplied a username.\nPlease do so.");
    f_obj.user_name.focus();
    return false;
  }
}

function validate_input_step_2(f_obj)
{
  if ((f_obj.password1.value == f_obj.password2.value) && ((f_obj.password1.value != "") || ((f_obj.password1.value == "") && (f_obj.action.value == "edit"))))  {
    if (f_obj.first_name.value != "") {
      if (f_obj.last_name.value != "")  {
        if (f_obj.middle_initial.value.length < 2)  {
          var return_value = true;
          //check first_name
          input_chk = check_input(f_obj.first_name.value,"name");
          if (input_chk != "true") {
            if (input_chk == "exceeds_255")
              alert("Your first name can not be greater than 255 characters.\nPlease use a shorter first name.");
            else
              alert("You can only use a-z and a 'space' in your first name.\nPlease enter an alternate spelling for your first name.");
            f_obj.first_name.focus();
            return_value = false;
          }
          //check last_name
          input_chk = check_input(f_obj.last_name.value,"name");
          if (input_chk != "true") {
            if (input_chk == "exceeds_255")
              alert("Your last name can not be greater than 255 characters.\nPlease use a shorter last name.");
            else
              alert("You can only use a-z and a 'space' in your last name.\nPlease enter an alternate spelling for your last name.");
            f_obj.last_name.focus();
            return_value = false;
          }
          //check middle initial
          if (f_obj.middle_initial.value.length > 0) {
            input_chk = check_input(f_obj.middle_initial.value,"mi");
            if (input_chk != "true")  {
              alert("You can only use a-z as your middle initial.\nPlease re-enter your middle initial.");
              f_obj.middle_initial.focus();
              return_value = false;
            }
          }
          //check email
          if (f_obj.email_address.value != "")  {
            input_chk = check_input(f_obj.email_address.value,"email");
            if (input_chk != "true") {
              if (input_chk == "exceeds_255")
                alert("Your email address can not be greater than 255 characters.\nPlease enter in a different email address.");
              if (input_chk == "failed")
                alert("You can only use a-z, 0-9, '.', '_' and '-' and it must contain an @.\nPlease enter in a different email address.");
              if (input_chk == "no_at")
                alert("Your email address must contain an @.\nPlease enter in a different email address.");
              f_obj.last_name.focus();
              return_value = false;
            }
          }
          if (return_value) {
            if (f_obj.email_address.value == "")
            f_obj.email_address.value = "unknown@karta.com";
            if (f_obj.password1.value != "")  {
              var str_pwd = f_obj.password1.value
              var md5_pwd = hex_md5(str_pwd);
              f_obj.password.value = md5_pwd;
              f_obj.password1.value = md5_pwd.substr(0,str_pwd.length);
              f_obj.password2.value = f_obj.password1.value;
            }
          }
          return return_value;
        }
        else  {
          alert("Please only provide a single middle initial.");
          f_obj.middle_initial.value="";
          f_obj.middle_initial.focus();
          return false;
        }
      }
      else  {
        alert("You have not supplied a last name.\nPlease do so.");
        f_obj.last_name.focus();
        return false;
      }
    }
    else  {
      alert("You have not supplied a first name.\nPlease do so.");
      f_obj.first_name.focus();
      return false;
    }
  }
  else  {
    alert("Your passwords do not match or are empty.\nRe-enter your password.");
    f_obj.password1.value = "";
    f_obj.password2.value = "";
    f_obj.password1.focus();
    return false;
  }
}

function validate_input_sites(f_obj)
{
  if (f_obj.site_name.value != "")
    return true;
  else  {
    alert("You have not supplied a site name.\nPlease do so.");
    f_obj.site_name.focus();
    return false;
  }
}

function validate_input_groups(f_obj)
{
  if (f_obj.group_name.value != "")
    return true;
  else  {
    alert("You have not supplied a user group name.\nPlease do so.");
    f_obj.group_name.focus();
    return false;
  }
}

function validate_input_users(f_obj)
{
  if (validate_input_step_1(f_obj))
    return validate_input_step_2(f_obj);
  else
    return false;
}

function validate_input_orgs(f_obj)
{
  if (f_obj.org_name.value != "")
    return true;
  else  {
    alert("You have not supplied an organization name.\nPlease do so.");
    f_obj.org_name.focus();
    return false;
  }
}

function validate_input_scos(f_obj)
{
  if (f_obj.title.value != "")
    return true;
  else  {
    alert("You have not supplied a title for this sco.\nPlease do so.");
    f_obj.title.focus();
    return false;
  }
}

function validate_input_profile(f_obj)
{
  if ((f_obj.password1.value == f_obj.password2.value) && (f_obj.password1.value != ""))  {
    var str_pwd = f_obj.password1.value;
    if (str_pwd.length < 255) {
      var md5_pwd = hex_md5(str_pwd);
      f_obj.password.value = md5_pwd;
      f_obj.password1.value = md5_pwd.substr(0,str_pwd.length);
      f_obj.password2.value = f_obj.password1.value;
      return true;
    }
    else  {
      alert("Your password can not be greater than 255 characters.\nPlease use a shorter password.");
      f_obj.password1.value = "";
      f_obj.password2.value = "";
      f_obj.password1.focus();
      return false;
    }

    f_obj.password.value = hex_md5(f_obj.password1.value);
    return true;
  }
  else  {
    alert("Your passwords do not match or are empty.\nRe-enter your password.");
    f_obj.password1.value = "";
    f_obj.password2.value = "";
    f_obj.password1.focus();
    return false;
  }
}

function view_certificate(user_id,sco_id)
{
  cert_page = "certificate.asp?user_id=" + user_id + "&sco_id=" + sco_id;
 POPUP_WIN=open(cert_page,"PopUpWin","left=0,top=0,scrollbars=yes,resizable=yes,width=650,height=750,toolbar=no,directories=no,menubar=yes,status=no,");
  POPUP_WIN.focus();
}

function check_input(input_text,input_type)
{
  var return_value = "true";
  var at_located = false;
  input_text = input_text.toLowerCase();

  //make sure not over 255 chars
  if (input_text.length > 255)  {
    return_value = "exceeds_255";
  }
  else  {
    //loop each char, checking
    for (i=0;i<input_text.length;i++)
    {
      tmpChr = input_text.charCodeAt(i);
      if ((input_type == "username") && (((tmpChr < 92) || (tmpChr > 122)) && ((tmpChr < 48) || (tmpChr > 57)) && ((tmpChr < 45) || (tmpChr > 46)) && ((tmpChr < 64) || (tmpChr > 64)))) {
        return_value = "failed";
      }
      if ((input_type == "name") && (((tmpChr < 97) || (tmpChr > 122)) && ((tmpChr < 32) || (tmpChr > 32)))) {
        return_value = "failed";
      }
      if (input_type == "email")  {
        if (((tmpChr < 95) || (tmpChr > 122)) && ((tmpChr < 48) || (tmpChr > 57)) && ((tmpChr < 45) || (tmpChr > 46)) && ((tmpChr < 64) || (tmpChr > 64))) {
        return_value = "failed";
        }
        if (tmpChr == 64)
            at_located = true;
      }
      if ((input_type == "mi") && ((tmpChr < 97) || (tmpChr > 122))) {
        return_value = "failed";
      }
    }
    if ((input_type == "email") && (!at_located))
      return_value = "no_at";
  }
  return return_value;
}

function convert_pwd(f_obj)
{
  var str_pwd = f_obj.password1.value;
  if (str_pwd != "")  {
    if (str_pwd.length < 255) {
      var md5_pwd = hex_md5(str_pwd);
      f_obj.password.value = md5_pwd;
      f_obj.password1.value = md5_pwd.substr(0,str_pwd.length);
      return true;
    }
    else  {
      alert("Your password can not be greater than 255 characters.");
      f_obj.password1.value = "";
      f_obj.password1.focus();
      return false;
    }
  }
  else  {
    alert("Please provide your password.");
    f_obj.password1.focus();
    return false;
  }
}

function convert_pwd_v2(f_obj)
{
  var str_pwd = f_obj.password1.value;
  if (str_pwd != "")  {
    if (str_pwd.length < 255) {
  var md5_pwd = hex_md5(str_pwd);
      if (md5_value == md5_pwd) {
  f_obj.password.value = md5_pwd;
  f_obj.password1.value = md5_pwd.substr(0,str_pwd.length);
        return true;
      }
      else  {
        alert("Your password is incorrect.\nPlease try again.");
        f_obj.password1.value = "";
        f_obj.password1.focus();
        return false;
      }
    }
    else  {
      alert("Your password can not be greater than 255 characters.");
      f_obj.password1.value = "";
      f_obj.password1.focus();
      return false;
    }
  }
  else  {
    alert("Please provide your password.");
    f_obj.password1.focus();
    return false;
  }

}

function mouse_ov(obj_name)
{
  img_obj = eval("document." + obj_name);
  ORIG_IMG.src = img_obj.src;
  if (LOAD_DONE)  {
    if (((obj_name == "NEXT") && (DISABLE_NEXT)) || ((obj_name == "PREVIOUS") && (DISABLE_PREV))) {
      //nothing
    }
    else  {
      ov_obj = eval(obj_name + "_OV");
      img_obj.src = ov_obj.src;
    }
  }
}

function mouse(obj_name)
{
  if (LOAD_DONE) {
    img_obj = eval("document." + obj_name);
    img_obj.src = ORIG_IMG.src;
  }
}

function page_loaded()
{
  LOAD_DONE = true;
}

function get_obj_style(obj_id)
{
  if (W3CDOM) {
    return eval("document.getElementById('" + obj_id + "').style");
  }
  else  {
    if (IE) {
      return eval(obj_id + ".style");
    }
    else  {
      return eval("document." + obj_id);
    }
 }
}

function validate_nt_reg(f_obj)
{
  if (f_obj.org_id.value != 0)  {
    if (f_obj.first_name.value != "") {
      if (f_obj.last_name.value != "")  {
        if (f_obj.middle_initial.value.length < 2)  {
          var return_value = true;
          //check first_name
          input_chk = check_input(f_obj.first_name.value,"name");
          if (input_chk != "true") {
            if (input_chk == "exceeds_255")
              alert("Your first name can not be greater than 255 characters.\nPlease use a shorter first name.");
            else
              alert("You can only use a-z and/or a 'space' in your first name.\nPlease enter an alternate spelling for your first name.");
            f_obj.first_name.focus();
            return_value = false;
          }
          //check last_name
          input_chk = check_input(f_obj.last_name.value,"name");
          if (input_chk != "true") {
            if (input_chk == "exceeds_255")
              alert("Your last name can not be greater than 255 characters.\nPlease use a shorter last name.");
            else
              alert("You can only use a-z and/or a 'space' in your last name.\nPlease enter an alternate spelling for your last name.");
            f_obj.last_name.focus();
            return_value = false;
          }
          //check middle initial
          if (f_obj.middle_initial.value.length > 0) {
            input_chk = check_input(f_obj.middle_initial.value,"mi");
            if (input_chk != "true")  {
              alert("You can only use a-z as your middle initial.\nPlease re-enter your middle initial.");
              f_obj.middle_initial.focus();
              return_value = false;
            }
          }
          //check email
          if (f_obj.email_address.value != "")  {
            input_chk = check_input(f_obj.email_address.value,"email");
            if (input_chk != "true") {
              if (input_chk == "exceeds_255")
                alert("Your email address can not be greater than 255 characters.\nPlease enter in a different email address.");
              if (input_chk == "failed")
                alert("You can only use a-z, 0-9, '.', '_' and/or '-' and it must contain an @.\nPlease enter in a different email address.");
              if (input_chk == "no_at")
                alert("Your email address must contain an @.\nPlease enter in a different email address.");
              f_obj.email_address.value = "";
              f_obj.email_address.focus();
              return_value = false;
            }
          }
          if (return_value) {
            if (f_obj.email_address.value == "")
              f_obj.email_address.value = "unknown@karta.com";
          }
          return return_value;
        }
        else  {
          alert("Please only provide a single middle initial.");
          f_obj.middle_initial.value="";
          f_obj.middle_initial.focus();
          return false;
        }
      }
      else  {
        alert("You have not supplied a last name.\nPlease do so.");
        f_obj.last_name.focus();
        return false;
      }
    }
    else  {
      alert("You have not supplied a first name.\nPlease do so.");
      f_obj.first_name.focus();
      return false;
    }
  }
  else  {
    alert("You have not selected an organization.\nPlease do so.");
    f_obj.org_id.focus();
    return false;
  }
}
