$(function() {
  $('a.login').click(function(e) {
    e.preventDefault();
    $.user.loginModal(function(user) { 
      $.user.setUser(user);
      $.modal.close();
      $.util.printMessage('Welcome, '+user.email);
    });
  });

  $('a#submit-login').live('click', function(e) {
    e.preventDefault();
    $.user.login();
  });
  
  $('a#submit-login-nonmodal').live('click', function(e) {
    e.preventDefault();
    var redirect_url = $(this).parents('form').find('[name=redirect]').val();
    if (typeof(redirect_url) == 'undefined') {
      redirect_url = '/';
    }
    $.user.login(redirect_url);
  });
  
});

$.user = {
  login: function(redirect_url) {
    $.util.post(
      '/service/user/login', 
      $('form#login-form :input'), 
      function(data) {
        if (typeof($.cache.onSuccess) == 'function') {
          $.cache.onSuccess(data);
        } else if (typeof(redirect_url) != 'undefined') {
          top.location.href=redirect_url;
        }
      }
    );
  },
  
  loginModal: function(onSuccess, title) {
    var title = title || 'Login or Register';
    $.util.modal({
      width: 500,
      height: 400,
      url: '/modal/login', 
      title: title,
      onSuccess: onSuccess
    });  
  },
  
  register: function() {
    $.util.post(
      '/service/user/register',
      $('form#register-form').serializeArray(),
      $.cache.onSuccess
    );
  },
  
  setUser: function(user) {
    var email = user.email;
    var msg   = "Welcome, Guest";
    if (email) { 
      msg = "Welcome, "+email;
    }
    $(".user-welcome").html(msg);    
    $('.toggle.user').removeClass('hidden');
    $('.toggle.nouser').addClass('hidden');
  },
  
  userExists: function(onSuccess, onFailure) {
    $.util.post(
      '/service/user/user_exists',
      {},
      function(data) {
        if (data > 0) {
          onSuccess();
        } else {
          onFailure();
        }
      }
    );  
  }
}


