var tmp_pwd = '';
var force_non_xml_login = false;

function do_login()
{
  if (force_non_xml_login)
    return true;

  if (tmp_pwd)
  {
    tmp_pwd = '';
    return true;
  }

  var vm_login = _ge('vm_login');
  var vm_password = _ge('vm_password');
  var vm_remember = _ge('vm_remember')
  var vm_submit = _ge('vm_submit')

  var login = vm_login.value;
  var pwd = hex_md5(vm_password.value);
  var remember = vm_remember.checked ? 1 : 0;

  tmp_pwd = vm_password.value;
  vm_password.value = '';
  vm_submit.src = '/i/btn_login_wait.gif';
  vm_submit.disabled = true;

  var xml_url = '/xml/login.php';
  var __query_str = 'login='+escape(login)+'&pwd='+pwd+'&remember='+remember;

  toggle_wait(true);

  diXMLRequest.post(xml_url, __query_str, do_login_response);

  return false;
}

function do_login_response(xmlDoc)
{
  var vm_login = _ge('vm_login');
  var vm_password = _ge('vm_password');
  var vm_remember = _ge('vm_remember')
  var vm_submit = _ge('vm_submit')
  var left_avatar = _ge('left_avatar');
  var cur_user_name = _ge('cur_user_name');
  var user_greeting_msg_count = _ge('user_greeting_msg_count');

  vm_submit.src = '/i/btn_login.gif';
  vm_submit.disabled = false;

  toggle_wait(false);

  if (xmlDoc && xmlDoc.documentElement)
  {
    var rs = xmlDoc.documentElement.getElementsByTagName('result');

    for (var i = 0; i < rs.length; i++)
    {
      var ok = parseInt(rs[i].getAttribute('ok'));

      if (ok)
      {
        left_avatar.width = rs[i].getAttribute('avatar_w');
        left_avatar.height = rs[i].getAttribute('avatar_h');
        left_avatar.src = rs[i].getAttribute('avatar_src');

        cur_user_name.innerHTML = rs[i].getAttribute('first_name');
        var cc = parseInt(rs[i].getAttribute('unread_msg_count'));
        user_greeting_msg_count.innerHTML = cc ? ' ('+cc+')' : '';

        _ge('a_greeting_profile').href = 'users/'+rs[i].getAttribute('login')+'/';
        _ge('div_greeting_vip_block').style.visibility = rs[i].getAttribute('rank') == 'vip'
          ? 'visible'
          : 'hidden';

        logged_in = true;

        make_changes_after_login_logout(true);

        break;
      }
      else
      {
        var text = rs[i].getAttribute('text');

        alert(text);

        break;
      }
    }
  }
  else
  {
    vm_password.value = tmp_pwd;

    _ge('vm_login_form').submit();
  }
}

function do_logout()
{
  if (force_non_xml_login)
    return true;

  var vm_logout = _ge('vm_logout');

  vm_logout.src = '/i/btn_logout_wait.gif';
  vm_logout.disabled = true;

  var xml_url = '/xml/logout.php';
  var __query_str = '';

  toggle_wait(true);

  diXMLRequest.post(xml_url, __query_str, do_logout_response);

  return false;
}

function do_logout_response(xmlDoc)
{
  var vm_logout = _ge('vm_logout')

  vm_logout.src = '/i/btn_logout.gif';
  vm_logout.disabled = false;

  toggle_wait(false);

  if (xmlDoc && xmlDoc.documentElement)
  {
    var rs = xmlDoc.documentElement.getElementsByTagName('result');

    for (var i = 0; i < rs.length; i++)
    {
      var ok = parseInt(rs[i].getAttribute('ok'));

      if (ok)
      {
        logged_in = false;

        make_changes_after_login_logout(false);

        break;
      }
      else
      {
        var text = rs[i].getAttribute('text');

        alert(text);

        break;
      }
    }
  }
  else
  {
    window.location.href = '/logout.php?back='+escape(window.location.href);
  }
}

function make_changes_after_login_logout(logged_in)
{
  var login_block = _ge('login_block');
  var greeting_block = _ge('greeting_block');
  login_block.style.display = logged_in ? 'none' : 'block';
  greeting_block.style.display = logged_in ? 'block' : 'none';
}

function toggle_restore_form()
{
  var e = _ge('forgotten_password_form');
  var e2 = _ge('forgotten_password_message');

  if (!e || !e2) return;

  if (e2.style.visibility != 'visible')
  {
    e.style.visibility = e.style.visibility != 'visible' ? 'visible' : 'hidden';
  }
  else
  {
    e.style.visibility = 'hidden';
  }

  e2.style.visibility = 'hidden';
}

function restore_forgotten_password()
{
  var vm_forgotten_login = _ge('vm_forgotten_login');
  var vm_forgotten_email = _ge('vm_forgotten_email');
  var vm_forgotten_submit = _ge('vm_forgotten_submit');

  var login = vm_forgotten_login.value;
  var email = vm_forgotten_email.value;

  vm_forgotten_submit.src = '/i/btn_send2_wait.gif';
  vm_forgotten_submit.disabled = true;

  var xml_url = '/xml/restore_pwd.php';
  var __query_str = 'login='+escape(login)+'&email='+escape(email);

  toggle_wait(true);

  diXMLRequest.post(xml_url, __query_str, restore_forgotten_password_response);

  return false;
}

function restore_forgotten_password_response(xmlDoc)
{
  var vm_forgotten_login = _ge('vm_forgotten_login');
  var vm_forgotten_email = _ge('vm_forgotten_email');
  var vm_forgotten_submit = _ge('vm_forgotten_submit');

  var e = _ge('forgotten_password_form');
  var e2 = _ge('forgotten_password_message');

  vm_forgotten_submit.src = '/i/btn_send2.gif';
  vm_forgotten_submit.disabled = false;

  toggle_wait(false);

  if (xmlDoc && xmlDoc.documentElement)
  {
    var rs = xmlDoc.documentElement.getElementsByTagName('result');

    for (var i = 0; i < rs.length; i++)
    {
      var ok = parseInt(rs[i].getAttribute('ok'));

      if (ok == 1)
      {
        e2.innerHTML = 'Новый пароль был успешно выслан на указанный Вами E-mail.';
      }
      else if (ok == 0)
      {
        e2.innerHTML = 'Пользователь с таким Логином и E-mail не зарегистрирован.';
      }
      else if (ok == -1)
      {
        e2.innerHTML = 'Не удалось отправить Вам письмо. Обратитесь к администратору.';
      }

      e.style.visibility = 'hidden';
      e2.style.visibility = 'visible';
    }
  }
}

function toggle_change_password_form()
{
  var e1 = _ge('change_password_div');
  var e2 = _ge('change_password_message');

  if (!e1 || !e2) return;

  if (e2.style.visibility != 'visible')
  {
    e1.style.visibility = e1.style.visibility != 'visible' ? 'visible' : 'hidden';
  }
  else
  {
    e1.style.visibility = 'hidden';
  }

  e2.style.visibility = 'hidden';
}

function change_password()
{
  var old_password = _ge('old_password');
  var new_password = _ge('new_password');
  var new_password2 = _ge('new_password2');
  var change_password_submit = _ge('change_password_submit');
  var change_password_hint = _ge('change_password_hint');

  var _old = old_password.value;
  var _new = new_password.value;
  var _new2 = new_password2.value;

  if (!_old)
  {
    change_password_hint.innerHTML = 'Введите Старый пароль';
    return false;
  }
  else if (_new.length < 6)
  {
    change_password_hint.innerHTML = 'Мин. длина Нового пароля - 6 символов';
    return false;
  }
  else if (_new != _new2)
  {
    change_password_hint.innerHTML = 'Введенные пароли не совпадают';
    return false;
  }

  change_password_submit.src = '/i/btn_change_wait.gif';
  change_password_submit.disabled = true;

  var xml_url = '/xml/change_pwd.php';
  var __query_str = 'old='+hex_md5(_old)+'&new='+hex_md5(_new);

  toggle_wait(true);

  diXMLRequest.post(xml_url, __query_str, change_password_response);

  return false;
}

function change_password_response(xmlDoc)
{
  var change_password_submit = _ge('change_password_submit');
  var change_password_hint = _ge('change_password_hint');

  var e1 = _ge('change_password_div');
  var e2 = _ge('change_password_message');

  change_password_submit.src = '/i/btn_change.gif';
  change_password_submit.disabled = false;

  toggle_wait(false);

  if (xmlDoc && xmlDoc.documentElement)
  {
    var rs = xmlDoc.documentElement.getElementsByTagName('result');

    for (var i = 0; i < rs.length; i++)
    {
      var ok = parseInt(rs[i].getAttribute('ok'));
      var secret = rs[i].getAttribute('secret');

      var toggle_visible = true;;

      if (ok == 1 && secret)
      {
        e2.innerHTML = 'Пароль был успешно изменен!';

        var date = new Date();
        date.setFullYear(date.getFullYear() + 1);
        setCookie('secret', secret, date);
      }
      else if (ok == 0)
      {
        change_password_hint.innerHTML = 'Введен неверный Старый пароль';
        toggle_visible = false;
      }
      else if (ok == -1)
      {
        e2.innerHTML = 'Не удалось изменить пароль. Обратитесь к администратору.';
      }

      if (toggle_visible)
      {
        e1.style.visibility = 'hidden';
        e2.style.visibility = 'visible';
      }
    }
  }
}

function toggle_delete_profile_form()
{
  var e1 = _ge('delete_profile_div');
  var e2 = _ge('delete_profile_message');

  if (!e1 || !e2) return;

  if (e2.style.visibility != 'visible')
  {
    e1.style.visibility = e1.style.visibility != 'visible' ? 'visible' : 'hidden';
  }
  else
  {
    e1.style.visibility = 'hidden';
  }

  e2.style.visibility = 'hidden';
}

function delete_profile()
{
  var current_password = _ge('current_password');
  var delete_profile_submit = _ge('delete_profile_submit');
  var delete_profile_hint = _ge('delete_profile_hint');

  var _current = current_password.value;

  if (!_current)
  {
    delete_profile_hint.innerHTML = 'Введите Ваш пароль';
    return false;
  }

  delete_profile_submit.src = '/i/btn_change_wait.gif';
  delete_profile_submit.disabled = true;

  var xml_url = '/xml/delete_profile.php';
  var __query_str = 'current='+hex_md5(_current);

  toggle_wait(true);

  diXMLRequest.post(xml_url, __query_str, delete_profile_response);

  return false;
}

function delete_profile_response(xmlDoc)
{
  var delete_profile_submit = _ge('delete_profile_submit');
  var delete_profile_hint = _ge('delete_profile_hint');

  var e1 = _ge('delete_profile_div');
  var e2 = _ge('delete_profile_message');

  delete_profile_submit.src = '/i/btn_del.gif';
  delete_profile_submit.disabled = false;

  toggle_wait(false);

  if (xmlDoc && xmlDoc.documentElement)
  {
    var rs = xmlDoc.documentElement.getElementsByTagName('result');

    for (var i = 0; i < rs.length; i++)
    {
      var ok = parseInt(rs[i].getAttribute('ok'));

      var toggle_visible = true;;

      if (ok == 1)
      {
        e2.innerHTML = 'Ваш профиль был успешно удален с сайта!';
      }
      else if (ok == 0)
      {
        delete_profile_hint.innerHTML = 'Введен неверный пароль';
        toggle_visible = false;
      }
      else if (ok == -1)
      {
        e2.innerHTML = 'Не удалось удалить профиль. Обратитесь к администратору.';
      }

      if (toggle_visible)
      {
        e1.style.visibility = 'hidden';
        e2.style.visibility = 'visible';
      }
    }
  }
}

