var authForm;
var profileForm;

$(document).ready(function() {
  //authForm = new AuthForm();
  profileForm = new ProfileForm();
});

function AuthForm() {
  this.initGotPassBtns();
  this.initShowCloseBtn();
  this.initForm();
}

AuthForm.prototype.initGotPassBtns = function() {
  $('#got-pass-no,#got-pass-yes').change(this.toggleGotPass);
}

AuthForm.prototype.toggleGotPass = function() {
  if ($('#got-pass-yes').attr('checked')) {
    $('.got-pass-yes-wrap').show();
    $('.got-pass-no-wrap').hide();
    $('#title-signin').text($('#ttl-signin').val());
    $('#signup-form').find(".error").text("");
  } else {
    $('.got-pass-yes-wrap').hide();
    $('.got-pass-no-wrap').show();
    $('#title-signin').text($('#ttl-signup').val());
    $('#signup-form').find(".error").text("");
  }
}

AuthForm.prototype.show = function(action) {
  if (action == undefined || action == 'signin') {
    $('#got-pass-no').removeAttr('checked');
    $('#got-pass-yes').attr('checked', 'checked');
  } else {
    $('#got-pass-no').attr('checked', 'checked');
    $('#got-pass-yes').removeAttr('checked');
  }
  this.toggleGotPass();
  $('#signup-wrap').fadeIn(300);
}

AuthForm.prototype.hide = function() {
  $('#signup-wrap').fadeOut(300);
}

AuthForm.prototype.initShowCloseBtn = function() {
  $('.btn-signin-form').click(function() {
    authForm.show('signin');
    return false;
  });

  $('.btn-signup-form').click(function() {
    authForm.show('signup');
    return false;
  });

  $('#signup-form-body>.btn-close').click(function() {
    authForm.hide();
  });
}


AuthForm.prototype.initForm = function() {

  $('#signup-form').submit(function() {

    try {

      if ($('#got-pass-yes').attr('checked')) {
        authForm.signin();
      } else {
        authForm.signup();
      }

    } catch (e) {
      alert(e);
    }

    return false;

  });
}


AuthForm.prototype.signup = function() {
  var username = $('#register-name').val();
  var email = $('#register-email').val();
  var password = $('#register-password').val();

  var passwordQuery = '';
  $('#signup-form').find(".error").text("");

  if ($('#register-password').val().length < 1) {
    // no password provided, generate password automatically
    passwordQuery = '&register_password_gen=1';
  } else {
    var password = $('#register-password').val();
    var passwordConfirm = $('#register-password').val();
    passwordQuery = '&register_password=' + password
        + '&register_password_confirm=' + passwordConfirm;
  }

  //var captcha = $('#register-captcha').val();

  var requestData =
    //'register_username=' + username +
    'register_email=' + email +
    '&register_title=' + username +
    passwordQuery +
    '';//'&register_captcha=' + captcha;

  if ($('#register-sex').is('select')) {
    var sex = $('#register-sex>option:selected').eq(0).val();
    requestData += '&register-sex=' + sex;
  }

  $('#signup-form').find('.field-error').text('');


  $.post($('#request-host').val() + CONTEXT_PATH + 'x/register/',
    requestData,
    function(response) {
      if (response.status != "okay") {
        for (error in response.errors) {
          $("#" + error + '-error').text(response.errors[error]);
        }

      } else {

        var loc = window.location.href.substring(0, window.location.href.indexOf('#'));
        window.location = loc;

      }
    }, 'jsonp');

}


AuthForm.prototype.signin = function() {

  var password = $("#login-password").val();
  var email = $("#login-email").val();

  $('#signup-form').find(".error").text("");

  var requestData =
    "login_email=" + email +
    "&login_password=" + password;

  $.ajax({
    url: $('#request-host').val() + CONTEXT_PATH + "x/login/",
    data: requestData,
    type: 'POST',
    success: function(response) {
      if (response.status != "okay") {
        for (error in response.errors) {
          $("#" + error + '-error').text(response.errors[error]);
        }

        if (response.errors.login_form) {
          $('#login-form-error').text(response.errors.login_form);
        }

      } else {
        var loc = window.location.href.substring(0, window.location.href.indexOf('#'));
        //alert($('#request-host').val().indexOf('travelerscoffee'));
        if ($('#request-host').val().indexOf('travelerscoffee') >= 0) {
          //alert(loc);
          loc = $('#request-host').val() + loc;
        }
        window.location = loc;
      }
    }, dataType:'json', crossDomain:true});

  return false;

}



function ProfileForm() {

  $('#btn-password-toggle').click(function() {
    var wrap = $('#profile-password-wrap');
    wrap.toggle();
    wrap.find('input').val('');
  });

}

