var ajax =
{
  status:
  {
    loginPopup: "free",
    logoutSpan: "free"
  }
};

function loginPopupShow()
{
  if (! $("#login_popup").is(":hidden"))
    return;
  var offset = $("#entr_span").offset();

  $("#login_popup").css
  (
    {
      top: offset.top + $("#entr_span").height() + 3,
      left: offset.left
    }
  ).
  fadeIn(500);
}

function loginPopupHide()
{
  if (! $("#login_popup").is(":visible"))
    return;
  $("#login_popup").fadeOut(500);
}

function loginPopupSubmitClick()
{
  if (ajax.status.loginPopup == "busy")
    return;
  if ($.trim($("#login_popup_login").val() + "") == "")
  {
    alert("Введите логин.");
    return;
  }
  if ($.trim($("#login_popup_pass").val() + "") == "")
  {
    alert("Введите пароль.");
    return;
  }
  ajax.status.loginPopup = "busy";
  $("#login_popup_submit").css("color", "#CCCCCC");
  var dataObj =
  {
    type: 'login_popup',
    login: $.trim($("#login_popup_login").val() + ""),
    pass: $.trim($("#login_popup_pass").val() + ""),
    remember: ($("#login_popup_remember").is(":checked") ? "true" : "false")
  };
  $.ajax
  (
    {
      async: true,
      cache: false,
      dataType: "text",
      timeout: 15000,
      type: "POST",
      url: site.root + "ajax-login/",
      data: 'data=' + encodeURIComponent(JSON.stringify(dataObj)),
      processData: false,
      complete: function (q, status)
      {
        if (status == "success")
        {
          try
          {
            var resp = null;
            try
            {
              eval('resp = ' + q.responseText);
            }
            catch (e)
            {
              alert("Некорректный ответ сервера.");
              throw {};
            }
            if ((typeof(resp) != "object") || (resp == null) || (typeof(resp.status) == "undefined"))
            {
              alert("Некорректный ответ сервера.");
              throw {};
            }
            if (resp.status == "ok")
            {
              if (resp.message == "ok")
                $("#entr_div").html(
                  '<a href="user/" class="cabinet_link">Личный кабинет</a>' +
                  '<div style="overflow: hidden; height: 7px;"></div>' +
                  '<span class="exit_span" id="exit_span" onclick="logoutSpanClick();">Выход</span>'
                );
              else if (resp.message == "banned")
                alert('Клиент заблокирован.');
              else
                alert('Неизвестный ответ сервера.');
            }
            else
              alert("При отправке данных произошла ошибка на стороне сервера.\nПовторите попытку или обратитесь к администрации.\nОтвет сервера: " + resp.message);
          }
          catch (e)
          {
          }
        }
        else if (status == "timeout")
        {
          alert("Превышено время ожидания ответа сервера. Повторите попытку позже.");
        }
        else
        {
          alert("При обмене данными с сервером произошла ошибка. Повторите попытку или обратитесь к администрации.");
        }
        $("#login_popup_submit").css("color", "#302F2F");
        ajax.status.loginPopup = "free";
        loginPopupHide();
      }
    }
  );
}

function logoutSpanClick()
{
  if (ajax.status.logoutSpan == "busy")
    return;
  ajax.status.logoutSpan = "busy";
  $("#exit_span").css("color", "#CCCCCC");
  var dataObj =
  {
    type: 'logout_span'
  };
  $.ajax
  (
    {
      async: true,
      cache: false,
      dataType: "text",
      timeout: 15000,
      type: "POST",
      url: site.root + "ajax-logout/",
      data: 'data=' + encodeURIComponent(JSON.stringify(dataObj)),
      processData: false,
      complete: function (q, status)
      {
        if (status == "success")
        {
          try
          {
            var resp = null;
            try
            {
              eval('resp = ' + q.responseText);
            }
            catch (e)
            {
              alert("Некорректный ответ сервера.");
              throw {};
            }
            if ((typeof(resp) != "object") || (resp == null) || (typeof(resp.status) == "undefined"))
            {
              alert("Некорректный ответ сервера.");
              throw {};
            }
            if (resp.status == "ok")
            {
              document.cookie = "user_autorized=0;expires=" + (new Date(0)).toGMTString() + ";path=" + site.path;
              document.cookie = "user_login=0;expires=" + (new Date(0)).toGMTString() + ";path=" + site.path;
              document.cookie = "user_hash=0;expires=" + (new Date(0)).toGMTString() + ";path=" + site.path;
              $("#entr_div").html('<span class="entr_span" id="entr_span" onclick="loginPopupShow();">Вход</span>');
            }
            else
              alert("При отправке данных произошла ошибка на стороне сервера.\nПовторите попытку или обратитесь к администрации.\nОтвет сервера: " + resp.message);
          }
          catch (e)
          {
          }
        }
        else if (status == "timeout")
        {
          alert("Превышено время ожидания ответа сервера. Повторите попытку позже.");
        }
        else
        {
          alert("При обмене данными с сервером произошла ошибка. Повторите попытку или обратитесь к администрации.");
        }
        $("#exit_span").css("color", "#3CABE4");
        ajax.status.logoutSpan = "free";
      }
    }
  );
}

function loginPopupInputKeyPress(event)
{
  if (event.keyCode == 13) //enter
  {
    event.preventDefault();
    loginPopupSubmitClick();
  }
  if (event.keyCode == 27) //esc
  {
    event.preventDefault();
    loginPopupHide();
  }
}

var ajax_status =
{
  login: "free"
};

function login_check_button_click()
{
  if (ajax_status.login == "busy")
    return;
  if ($.trim($("#login").val()) == "")
  {
    alert("Введите логин для проверки.");
    return;
  }
  ajax_status.login = "busy";
  $("#login_check_button").attr("disabled", true).val("Выполняется...");
  var dataObj =
  {
    type: 'login_check',
    login: $.trim($("#login").val())
  };
  $.ajax
  (
    {
      async: true,
      cache: false,
      dataType: "text",
      timeout: 15000,
      type: "POST",
      url: site.root + "assets/site/ajax.check_user_exists.php",
      data: 'data=' + encodeURIComponent(JSON.stringify(dataObj)),
      processData: false,
      complete: function (q, status)
      {
        if (status == "success")
        {
          try
          {
            var resp = null;
            try
            {
              eval('resp = ' + q.responseText);
            }
            catch (e)
            {
              alert("Некорректный ответ сервера.");
              throw {};
            }
            if ((typeof(resp) != "object") || (resp == null) || (typeof(resp.status) == "undefined"))
            {
              alert("Некорректный ответ сервера.");
              throw {};
            }
            if (resp.status == "ok")
            {
              if (resp.message == "occupy")
                alert("Указанный логин уже используется.");
              else if (resp.message == "free")
                alert("Логин свободен, вы можете использовать его.");
              else
              {
              	alert("Некорректный ответ сервера.");
                throw {};
              }
            }
            else
              alert("Произошла ошибка на стороне сервера.\nПовторите попытку или обратитесь к администрации.\nОтвет сервера: " + resp.message);
          }
          catch (e)
          {
          }
        }
        else if (status == "timeout")
        {
          alert("Превышено время ожидания ответа сервера. Повторите попытку позже.");
        }
        else
        {
          alert("При обмене данными с сервером произошла ошибка. Повторите попытку или обратитесь к администрации.");
        }
        $("#login_check_button").attr("disabled", false).val("Проверить");
        ajax_status.login = "free";
      }
    }
  );
}

