var emailRe = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

$(document).ready(function() {
  initializeLoginButtons();
});

var initializeLoginButtons = function() {
  var loginBack = $('#login_back');
  if (!loginBack) {
    return;
  }
  var loginCont = $('#login_container');
  var loginForm = $('#login_form');
  var registerForm = $('#register_form');
  var remindForm = $('#remind_form');

  loginCont.fadeTo(0, 0);
  loginBack.fadeTo(0, 0);
  
  var hideLoginForm = function() {
    loginCont.fadeTo('fast', 0, function() {
      loginBack.fadeOut('fast', 0, function() {
        loginBack.hide();
        loginCont.hide();
      });
    });
  }

  $('#login_cancel_btn').click(hideLoginForm);

  $('#login_button').click(function() {
    loginBack.show(1, function() {
      loginBack.fadeTo('normal', '0.8', function() {
      });
    });
    loginCont.show(1, function() {
      loginCont.fadeTo('normal', 1);
    });
    return false;
  });

  $('#register_btn').click(function() {
    loginForm.slideUp('normal');
    registerForm.slideDown('normal');
  });
  
  $('#register_cancel_btn').click(function() {
    loginForm.slideDown('normal');
    registerForm.slideUp('normal');
  });
  
  $('#register_username').blur(function() {
    var dis = $(this);
    if (dis.attr('value') !== '' && dis.attr('value').length >= 2) {
      led.on();
      $.ajax({
        type: 'POST',
        url:  '/register/username/',
        data: 'check=' + encodeURIComponent(dis.attr('value')),
        success: function(msg) {
          led.off();
          if (msg == 'ok') {
            dis.removeClass('present');
            dis.addClass('okay');
          } else {
            dis.removeClass('okay');
            dis.addClass('present');
          }
        }
      });
    }
  });
  
  $('#register_form').submit(function() {
    var username = $('#register_username');
    var password = $('#register_password');
    var passwordConfirm = $('#register_password_confirm');
    var email = $('#register_email');
    var registerError = $('#register_error');
    registerError.slideUp('fast');
    
    var errorHtml = '';
    var error = false;
    
    if (username.attr('value').length < 2) {
      errorHtml += 'Имя меньше двух символов';
      error = true;
    }
    
    if (username.hasClass('present')) {
      if (errorHtml) {
        errorHtml += '<br />';
      }
      errorHtml += 'Такое имя уже занято кем-то';
      error = true;
    }
    
    if (password.attr('value').length < 4) {
      if (errorHtml) {
        errorHtml += '<br />';
      }
      errorHtml += 'Пароль не меньше 4х символов';
      error = true;
    }
    
    if (password.attr('value') === ''
        || password.attr('value') !== passwordConfirm.attr('value')) {
      if (errorHtml) {
        errorHtml += '<br />';
      }
      errorHtml += 'Пароли не совпадают';
      error = true;
    }
   
    if (email.attr('value') === '' || emailRe.test(email.attr('value')) == false) {
      if (errorHtml) {
        errorHtml += '<br />';
      }
      errorHtml += 'Почта неправильная';
      error = true;
    }
    
    if (error) {
      registerError.html(errorHtml);
      registerError.slideDown('normal');
      errorHtml = '';
      error = false;
      return false;
    }

    led.on();
    $.ajax({
      type: 'POST',
      url: '/register/',
      data: 'register[username]=' + encodeURIComponent(username.attr('value'))
          + '&register[password]=' + encodeURIComponent(password.attr('value'))
          + '&register[email]=' + encodeURIComponent(email.attr('value')),
      success: function(msg) {
        led.off();
        if (msg !== 'error') {
          var success = $(msg);
          success.css('display', 'none');
          success.find('#register_activate_btn').click(function() {
            username.attr('value', '');
            username.removeClass('okay');
            username.removeClass('present');
            password.attr('value', '');
            passwordConfirm.attr('value', '');
            email.attr('value', '');
            loginCont.fadeTo('fast', 0, function() {
              //loginForm.show();
              loginForm.slideToggle(0);
              success.hide();
              loginBack.fadeOut('fast', 0, function() {
                loginBack.hide();
              });
            });
          });
          success.insertBefore(registerForm);
          success.slideDown('normal');
          registerForm.slideUp('normal');
          //registerForm
        }
      }
    });

    return false;
  });
  
  $('#login_forgot_btn').click(function() {
    loginForm.slideUp('normal');
    remindForm.slideDown('normal');
  });
  
  $('#remind_cancel_btn').click(function() {
    loginForm.slideDown('normal');
    remindForm.slideUp('normal');
  });
  
  $('#remind_form').submit(function() {
    var remind_email = $('#remind_email');
    var errorCont = $('#remind_error');
    errorCont.slideUp();
    if (remind_email.attr('value') === '' || emailRe.test(remind_email.attr('value')) == false) {
      errorCont.text('Что-то не похоже на имэйл');
      errorCont.slideDown();
      return false;
    }

    led.on();
    $.ajax({
      type: 'POST',
      url:  '/remind/',
      data: 'email=' + remind_email.attr('value'),
      success: function(msg) {
        led.off();
        if (msg === 'nope') {
          errorCont.text('Пользователя с таким адресом нету');
          errorCont.slideDown();
          return false;
        } else {
          var msg = $(msg);
          var remindForm = $('#remind_form');
          msg.find('#remind_done_btn').click(function() {
            remind_email.attr('value', '');
            loginCont.fadeOut('normal', function() {
              loginForm.slideDown();
              msg.remove();
              loginCont.hide();
            });

            loginBack.fadeOut('fast', function() {
              loginBack.hide();
            });
            //loginCont.fadeTo('fast', 0, function() {
              
              //loginForm.slideToggle(0, function() {
              //  loginForm.hide();
              //});
              //loginForm.show();
              //loginForm.slideDown('fast', function() { loginForm.hide(); });
              
            //});
          });
          msg.insertBefore(remindForm);
          remindForm.slideUp();
          msg.slideDown();

          //$('remind_form').slideUp();
        }
        return false;
      }
    });

    return false;
  });
}
