function showServerError(message) {
  alert("An error occured on the server and we could not finish this operation.\n\n" + message) 
}

// Re-arranges each ActiveRecord error from 2-elements array into hash
function error_messages(data) {
  var errors = {}
  for( i in data) { errors[data[i][0]] = data[i][1]; }
  return errors;
}

function format_errors(errors) {
  message = ''
  for(i in errors) {
    message += '  * ' + errors[i][0] + ' ' + errors[i][1] + "\n"
  }
  return message
}

jQuery(function($) {

  // Resizable textareas
  $('textarea.resizable').TextAreaResizer();

  // Show tip on how to insert code
  $("#tip_how_to_insert_code_trigger").click(function() {
    $.cookie('tip_how_to_insert_code', 1, { path: '/', expires: 3560 } );
    $(this).hide();
    $("#tip_how_to_insert_code").show();
  });

  //Hide-show inboxMessage on my inboxes page
  $(".showHideMessage .eventTrigger").click(function() {
    if($(this).text() == 'Hide message') {
      $(this).parents(".message").children(".inboxMessageText").slideUp(100);
      $(this).text('Show message');
    }
    else {
      $(this).parents(".message").children(".inboxMessageText").slideDown(100);
      $(this).text('Hide message');
    }
  });

  // Setting current time cookie to get user's timezone
  if(!($.cookie('timezone'))) {
    current_time = new Date();
    $.cookie('timezone', current_time.getTimezoneOffset(), { path: '/', expires: 3560 } );
  } 

  // Round corners
  $(".message").corners("6px");
  $(".submitName").corners("6px");

  // disables submit buttons in forms
  $("form").submit(function() {
    $(":submit", this).attr("disabled", "disabled").attr("value", "Wait...");
  });
  // enables buttons, when user clicks "back" button in browser
  $(":submit").attr("disabled", "")

  $(".submitName form").submit(function() {

    container = $(this)
    user_name = $(".submitName form input[name=user[name]]").val();

    function show_error(message) {
      alert(message);
      container.find(".field :submit").attr("disabled", "").attr("value", "Save");
    }

    function show_result(data) {
      if(data['status'] == 'ok') {
        container.parent().slideUp(300);
        $("#user_display_name").text(user_name);
      }
      else {
        if(data['errors'][0][0] == 'name') { show_error('For convenience of other users we have restrictions for the name length. Name ' + data['errors'][0][1]) }
      }
    }

    $.ajax({
      url:      '/users/' + getUserId(),
      type:     'post',
      data:     { "_method": "put", "user[name]": user_name, "authenticity_token": getAuthKey() },
      dataType: 'json',
      success:  function(data) { show_result(data) },
      error:    function() { show_error("Server error occured. Please contact us.")  }
    });

    return false;

  });

});
