var Login = function () {
  var configMap = {
    path: '',
    cookiePwd: false,
    successPath: '/index',
    verifyType: ''
  };

  var getPwd = function (ucode, password) {
    var str1 = hex_md5(password);
    return hex_md5(str1 + ucode);
  };

  var getEncryption = function (password, ucode, vcode) {
    var str2 = configMap.cookiePwd ? Cookies.get('pwd') : getPwd(ucode, password);
    var str3 = hex_md5(str2 + vcode.toUpperCase());
    return str3;
  };

  var rememberme = function (userName, pwd) {
    var remember = $('input[name="rememberme"]:checked').length > 0 ? true : false;
    if (remember) {
      Cookies.set('username', userName, {expires: 7});
      if (configMap.cookiePwd) {
        Cookies.set('pwd', pwd, {expires: 7});
      }
      else {
        Cookies.set('pwd', getPwd(userName, pwd), {expires: 7});
      }
    }

    if (!remember) {
      Cookies.remove('username');
      Cookies.remove('pwd');
    }
  };

  var login = function () {
    var loginForm = $('.login-form');
    if (loginForm.validate().form()) {
      App.blockUI({
        target: $('body'),
        boxed: true,
        message: '正在登录，请稍候...'
      });

      var userName = $('input[name="username"]').val();
      var password = $('input[name="password"]').val();
      var jCaptchaCode = $('input[name="jCaptchaCode"]').val();
      var pwd = '';
      if (configMap.verifyType && configMap.verifyType.toLocaleLowerCase() === 'ad') {
        pwd = getEncryption(password, userName, jCaptchaCode) + '|@' + password;
      } else {
        pwd = getEncryption(password, userName, jCaptchaCode);
      }
      var postData = 'username=' + encodeURI(userName) + '&password=' + pwd + '&jCaptchaCode=' + jCaptchaCode;
      $.ajax({
        url: configMap.path + '/login',
        type: 'POST',
        dataType: 'JSON',
        data: postData,
        success: function (result) {
          App.unblockUI($('body'));
          if (result.failed) {
            $.messager.popup(result.msg);
            $('input[name="jCaptchaCode"]').val('');
            $('#checkCode').attr('src', 'jcaptcha.jpg?d=' + new Date() * 1);
          }
          else {
            rememberme(userName, password);
            window.location.href = configMap.path + configMap.successPath;
          }
        },
        error: function (ex, e, ee) {
          App.unblockUI($('body'));
          $('input[name="jCaptchaCode"]').val('');
          $('#checkCode').attr('src', 'jcaptcha.jpg?d=' + new Date() * 1);
          $.messager.popup('登陆失败！');
        }
      });
    }
  };

  var handleLogin = function () {
    $('.login-form').validate({
      errorElement: 'span',
      errorClass: 'help-block',
      focusInvalid: false,
      rules: {
        username: {
          required: true
        },
        password: {
          required: true
        }
      },
      messages: {
        username: {
          required: '请输入用户名'
        },
        password: {
          required: '请输入密码'
        }
      },
      highlight: function (element) {
        $(element)
          .closest('.form-group').addClass('has-error');
      },
      success: function (label) {
        label.closest('.form-group').removeClass('has-error');
        label.remove();
      },
      errorPlacement: function (error, element) {
        if (element.attr("data-error-container")) {
          error.appendTo(element.attr("data-error-container"));
        } else {
          error.insertAfter(element.closest('.input-icon'));
        }
      }
    });

    $('#btnLogin').off().on('click', function () {
      login();
    });

    $('.login-form input').keypress(function (e) {
      if (e.which == 13) {
        login();
        return false;
      }

      if ($(this).attr('name') === 'username') {
        $('input[name="password"]').val('');
      }

      if ($(this).attr('name') === 'password') {
        configMap.cookiePwd = false;
      }
    });
  };

  var initInfo = function () {
    if (Cookies.get('username')) {
      $('input[name="username"]').val(Cookies.get('username'));
      $('input[name="password"]').val(Cookies.get('pwd'));
      $('input[name="rememberme"]').attr('checked', 'checked');
      configMap.cookiePwd = true;
    }
    $('input[name="password"]').focus(function () {
      $(this).val('');
    });

    $('input:checkbox').uniform();
    $.get(configMap.path + '/getsysinfo', null, function (result) {
      if (result) {
        $('title').text(result.title ? result.title : '信海平台');
        $('.logo').text(result.title ? result.title : '信海平台');
        $('.copyright').text(result.copyright ? result.copyright : '信海平台');

        if (result.jCaptchaDisabled) {
          $('.jCaptchaCode').hide();
        }

        configMap.verifyType = result.verifytype;
      }
    });
  };

  return {
    init: function (path, successPath) {
      configMap.path = path;
      if (successPath) {
        configMap.successPath = successPath;
      }
      initInfo();
      handleLogin();
    }
  };

}();
//@ sourceURL=login.js