$(function(){
  $('[id^=loginlink]').click(function(){
    var part = (this.id+'').replace(/^loginlink_/,'');
    $('[id^=loginform_]').show();
    $('[id^=loginform_'+part+']').hide();
    return false;
  });
  if (App.startMessage) {
    window.setTimeout(function(a){$().message(a)}, 500, App.startMessage);
  }
});
function plain_login(){
  if ($('#userEmail').val()==''){
    var msg = 'No email supplied.';
    $().message(msg);
    //$('#errMsg').html(msg);
    return false;
  }
  if ($('#Password').val()==''){
    var msg = 'Empty Password';
    $().message(msg);
    //$('#errMsg').html(msg);
    return false;
  }
  $('#loginForm').eq(0).submit();
}

function clearErrorState(){
  var messagePlace = $('body.login .form-inline .error-message');
  if (messagePlace.length>0) messagePlace.html();
}

function handleError(errorText){
  var messagePlace = $('body.login .form-inline .error-message');
  if (messagePlace.length>0){
    messagePlace.html(errorText);
  } else {
    $.message(errorText);
  }
}

function beta_request(){
  var beta_user_name = $('#requestName').val();
  var beta_user_mail = $('#SiteLoginEmail').val();
  if (beta_user_name && beta_user_mail){
    var form = $('#requestName').parents('form');
    var formData = $(form).serialize();
    $.ajax({
      data: formData,
      dataType: 'json',
      success: function(data){
        if (data.success){
          $('.form-inline').html(data.result).parent().addClass('rightLoginBoxSmall').removeClass('rightLoginBox');
        } else {
          switch (data.result.code) {
            case App.Login.Error.ERR_EMAIL_INVALID:
            case App.Login.Error.ERR_EMAIL_REGISTERED:
              // Clear previous errors if any, this field use another place for error and we want to display only the last error.
              clearErrorState();
              $('.beta-request-user-email-description').addClass('errmsg').html(data.result.message);
              break;
            default:
              handleError(data.result.message);
              break;
          }
        }
      },
      error: function(error){
        App.log(error);
      },
      type: 'POST',
      url: '/login'
    });
    //form.submit();
  } else {
    handleError('Please provide all details.')
  }
  return false;
}

function facebook_onlogin() {
  $.ajax({
    dataType: 'json',
    success: function(data){
      if (data.success){
        if (App.Login.url){
          document.location = App.Login.url;
        } else {
          document.location += '';
        }
      } else {
        handleError(data.result.message);
      }
    },
    error: function(error){
//      App.log(error);
    },
    type: 'GET',
    url: '/login?fb'
  });
  //document.location.href = '/login?fb';
}

function facebook_checkLogin(){
  FB.Connect.ifUserConnected(facebook_onlogin, function(){
    FB.Connect.requireSession(facebook_onlogin);
  });
}

function facebook_connect(){
  FB.Connect.ifUserConnected(account_activate_proceed, account_activate_handle);
}

function account_activate_handle(){
  FB.Connect.requireSession(account_activate_proceed);
}

function account_activate_proceed(){
  var beta_user_mail = $('#SiteLoginEmail').val();
  if (beta_user_mail){
    account_activate(beta_user_mail);
  } else {
    var msg = 'Please provide all details.';
    $().message(msg);
  }
}

function account_activate(beta_user_mail){
//  FB.Facebook.apiClient.callMethod
//  facebook.connect.registerUsers
  var facebookUserId = FB.Connect.get_loggedInUser();
  if (!facebookUserId) {
    facebook_connect();
    //handleError('You should be logged in to Facebook');
    return false;
  }
  
//  App.log('We will now submit account activate', beta_user_mail, facebookUserId);
  
  var form = $('#SiteLoginEmail').parents('form');
  var formData = $(form).serialize();
  $.ajax({
    data: formData,
    dataType: 'json',
    success: function(data){
      if (data.success){
        App.Login.url = '/';
        facebook_onlogin();
      } else {
        switch (data.result.code) {
          case App.Login.Error.ERR_WRONG_FACEBOOK_EMAIL:
          case App.Login.Error.ERR_EMAIL_REGISTERED:
          case App.Login.Error.ERR_EMAIL_INVALID:
            $('.account-activate-user-email-description').addClass('errmsg').html(data.result.message);
            break;
          default:
            handleError(data.result.message);
            break;
        }
      }
    },
    error: function(error){
      App.log(error);
    },
    type: 'POST',
    url: '/login'
  });
  return false;
}