$(document).ready(
  function () {

    // FORM - ADMIN/USER/USER/CREATE
    usersai_form_user_register_admin();

    // FORM - USER/REGISTER
    usersai_form_user_register_user();

    // FORM - USER/%/EDIT
    usersai_form_user_profile();

    $('#user-register').submit(
      function() {
        var type = $('#edit-usersai-user-register-admin-S1-type').val();
        if(type == 'drupal' && $('#edit-usersai-username').val() == '') {
          $('#edit-usersai-username').val($('#edit-name').val());
        }
      }
    );
  }
);

function usersai_form_user_register_admin() {

  // Hide step 2 and 3 fieldsets if needed
  var type = $('#edit-usersai-user-register-admin-S1-type').val();
  if(type == 0 || type == '') {
    $('fieldset#usersai_user_register_admin_S2').css('display','none');
    $('fieldset#usersai_user_register_admin_S3').css('display','none');
  }

  // Do stuff when type is changed
  $('#edit-usersai-user-register-admin-S1-type').change(
    function() {

      if(
        $('#edit-usersai-user-register-admin-S1-type').val() == 0 ||
        $('#edit-usersai-user-register-admin-S1-type').val() == ''
      ) {

        // Hide steps if selection is removed
        $('fieldset#usersai_user_register_admin_S2').slideUp(650);
        $('fieldset#usersai_user_register_admin_S3').slideUp(650);

      } else {

        var type = $('#edit-usersai-user-register-admin-S1-type').val();

        // Update labels on the form so they are
        // organisational specific
        usersai_form_user_info_replace(type);
        
        // Show loader
        $("#usersai_user_register_admin_S2_lookup_loader").css('display','inline-block');
        $("#usersai_user_register_admin_S2_lookup_target").css('display','none');

        // Show steps if selection is made
        $('fieldset#usersai_user_register_admin_S2').slideDown(650);
        $('fieldset#usersai_user_register_admin_S3').slideDown(650);

        // Load lookup form
        var path = Drupal.settings['basePath'] + 'usersai/ajax/form/user_lookup/' + type;

        $.ajax({
          url: path,
          cache: false,
          success: function(html){
            $('#usersai_user_register_admin_S2_lookup_loader').css('display','none');
            $("#usersai_user_register_admin_S2_lookup_target").html(html);
            $("#usersai_user_register_admin_S2_lookup_target").slideDown(650);
          }
        });

      }
    }
  );

}

function usersai_form_user_register_user() {

  // Hide step 2 if needed
  var user_type = $('#edit-usersai-user-register-user-S1-type').val();
  if(user_type == 0 || user_type == '') {
    $('fieldset#usersai_user_register_user_S2').css('display','none');
  } else {
    // There is data in the form, update the labels
    usersai_form_user_info_replace(user_type);
  }

  // Do stuff when type is changed
  $('#edit-usersai-user-register-user-S1-type').change(
    function() {

      var user_type = $('#edit-usersai-user-register-user-S1-type').val();

      if(user_type == 0 || user_type == '') {

        // Hide steps if selection is removed
        $('fieldset#usersai_user_register_user_S2').slideUp(650);

        // Remove temporary username
        if($('#edit-usersai-username').val('') == 'usersai_temp_username') {
          $('#edit-usersai-username').val('');
        }

      } else {

        if(user_type == 'drupal') {
          // If we have a default user type, we need to put in some
          // dummy content to pass validation
          $('#edit-usersai-username').val('usersai_temp_username');

        } else {
          // Remove temporary username if this is a organiosation
          // user type
          if($('#edit-usersai-username').val('') == 'usersai_temp_username') {
            $('#edit-usersai-username').val('');
          }
        }

        // Update labels on the form so they are
        // organisational specific
        usersai_form_user_info_replace(user_type);
        
        // Show loader
        $("#usersai_user_register_user_S2_lookup_loader").css('display','inline-block');
        $("#usersai_user_register_user_S2_lookup_target").css('display','none');
      
        // Show steps if selection is made
        $('fieldset#usersai_user_register_user_S2').slideDown(650);

      }

    }
  );

}

function usersai_form_user_profile() {

  var type = $('#edit-usersai-organisation').val();

  var required = '<span class="form-required" title="This field is required.">*</span>';
  $('#edit-usersai-oid-wrapper label').html('Username: ' + required);
  if(type == 0 || type == '' || type == 'drupal') {
    $('#edit-usersai-oid-wrapper label').html('Username: ' + required);
    $('#edit-usersai-oid-wrapper div.description').html('Spaces are allowed; punctuation is not allowed except for periods, hyphens, and underscores.');
    $('#edit-usersai-oid-wrapper').css('display','none');
    return;
  }
  var path = Drupal.settings['basePath'] + 'usersai/ajax/form/handler_info/' + type;
  $.getJSON(path, function(data) {
    $('#edit-usersai-oid-wrapper label').html(data.form_info['name_label'] + ': ' + required);
    $('#edit-usersai-oid-wrapper div.description').html(data.form_info['name_desc']);
    $('#edit-usersai-oid-wrapper').css('display','block');

  });

  // alert(type);

}

function usersai_form_user_info_replace(type) {
  var required = '<span class="form-required" title="This field is required.">*</span>';
  $('#edit-usersai-username-wrapper label').html('Username: ' + required);
  if(type == 0 || type == '' || type == 'drupal') {
    $('#edit-name-wrapper label').html('Username: ' + required);
    $('#edit-name-wrapper div.description').html('Spaces are allowed; punctuation is not allowed except for periods, hyphens, and underscores.');
    $('#edit-usersai-username-wrapper').css('display','none');
    $('#edit-usersai-pass-wrapper').css('display','none');
    $('#edit-pass-wrapper').css('display','block');
    return;
  }
  var path = Drupal.settings['basePath'] + 'usersai/ajax/form/handler_info/' + type;
  $.getJSON(path, function(data) {
    $('#edit-name-wrapper label').html(data.form_info['name_label'] + ': ' + required);
    $('#edit-name-wrapper div.description').html(data.form_info['name_desc']);
    $('#edit-usersai-pass-wrapper label').html(data.form_info['pass_label'] + ': ' + required);
    $('#edit-usersai-pass-wrapper div.description').html(data.form_info['pass_desc']);
    $('#edit-usersai-username-wrapper').css('display','block');
    $('#edit-usersai-pass-wrapper').css('display','block');
    $('#edit-pass-wrapper').css('display','none');
  });
}

function usersai_form_user_register_admin_search() {

  $('#usersai_user_lookup_loader').fadeIn(500);
  $('#usersai_user_lookup_results').slideUp(500,
    function() {

      var type        = $('#edit-usersai-user-register-admin-S1-type').val();
      var oid         = $('#edit-usersai-user-lookup-oid').val();
      var name_first  = $('#edit-usersai-user-lookup-name-first').val();
      var name_family = $('#edit-usersai-user-lookup-name-family').val();
      if(oid         == '') { oid         = 'null'; }
      if(name_first  == '') { name_first  = 'null'; }
      if(name_family == '') { name_family = 'null'; }

      var path = Drupal.settings['basePath'] + 'usersai/ajax/form/user_lookup_search/' + type + '/' + oid + '/' + name_first + '/' + name_family;

      $.getJSON(
        path,
        function(data){

          if(data.bool == true) {

            var html = '';
            $.each(data.results, function(i,user){
              html += '<div onclick="usersai_form_user_register_admin_search_result_populate($(this).attr(\'id\'));" id="search_result_' + user.oid + '"><span class="oid">' + user.oid + '</span> - ';

              if(user.auth_title != '' && user.auth_title != 'undefined' && user.auth_title != null) {
                html += '<span class="auth_title">' + user.auth_title + '</span> ';
              } else {
                html += '<span class="auth_title"></span> ';
              }

              html += '<span class="auth_name_first">' + user.auth_name_first + '</span> <span class="auth_name_family">' + user.auth_name_family + '</span>';

              if(user.mail != '' && user.mail != 'undefined' && user.mail != null) {
                html += ' - <span class="mail">' + user.mail + '</span>';
              }

              html += '</div>';
            });
            $('#usersai_user_lookup_results').slideUp(500,
              function() {
                $('#usersai_user_lookup_results').html(html);
                $('#usersai_user_lookup_results').slideDown(500);          
              }
            );
          } else {
            alert(data.message);
          }

          $('#usersai_user_lookup_loader').fadeOut(500);

        }

      );
      
    }
  );

}

function usersai_form_user_register_admin_search_result_populate(id) {

  var oid         = $('#' + id + ' .oid').html();
  var title       = $('#' + id + ' .auth_title').html();
  var name_first  = $('#' + id + ' .auth_name_first').html();
  var name_family = $('#' + id + ' .auth_name_family').html();
  var mail        = $('#' + id + ' .mail').html();

  $('#edit-name').val(oid);
  $('#edit-usersai-username').val(oid);
  $('#edit-usersai-title').val(title);
  $('#edit-usersai-name-first').val(name_first);
  $('#edit-usersai-name-family').val(name_family);

  if(mail != '' && mail != 'undefined' && mail != null) {
    $('#edit-mail').val(mail);
  }

  $('#usersai_user_lookup_results').slideUp(500);

}