
function sort_list(id) {
  Sortable.create(id, {
    onUpdate: function() {
      new Ajax.Updater(false, location, {
        onComplete: function(request) {
          new Effect.Highlight(id, {});
        },
        parameters: Sortable.serialize(id)
      })
    }
  });
}

function edit_item(id) {
  Event.observe(id + '_edit', 'click', function() {edit(id, $(id + '_name'))}, false);
}

function edit(id, object) {
  var active = Element.hasClassName(id, 'active');
  Element.hide(object);
  
  var textfield = '<span id="' + object.id + '_editor"><input type="text" id="' + object.id + '_name" name="' + object.id + '" size="30" value="' + object.innerHTML + '" /> ';
  var checkbox = '<span id="' + object.id + '_checkbox"><input type="checkbox" id="' + object.id + '_active" name="' + object.id + '" value="1" ' + ((active) ? ' checked="checked"' : '') + ' title="Haken Sie dieses Feld an, wenn der Navigationspunkt aktiv sein soll." /> ';
  var button = '<input id="' + object.id + '_save" type="button" value="Ändern" /> <a href="javascript:;" style="font-size: smaller;" id="' + object.id + '_cancel">Abbrechen</a></span>';
  
  new Insertion.After(object, textfield + checkbox + button); 
    
  Event.observe(object.id + '_save', 'click', function() {save_changes(id, object)}, false);
  Event.observe(object.id + '_cancel', 'click', function() {clean_up(object)}, false);
}

function show_as_editable(object, status, active) {
  if (status) {
    Element.addClassName(object, 'editable');
  } else {
    Element.removeClassName(object, 'editable');
  }
}

function save_changes(id, object) {
  var content = $F(object.id + '_name');
  var active = ($F(object.id + '_active') ? 1 : 0);
  
  object.innerHTML = "Änderungen werden gespeichert...";
  clean_up(object, true);
  
  var success = function(t) {edit_complete(t, id, object, active);}
  var failure = function(t) {edit_failed(t, object);}
  
  var url = '/aorta/navigation/edit/';
  var pars = 'id=' + id + '&content=' + content + '&active=' + active;
  var myAjax = new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:success, onFailure:failure});
}

function clean_up(object, keep_editable) {
  Element.remove(object.id + '_editor');
  Element.show(object);
  if (!keep_editable) {
    show_as_editable(object, false);
  }
}

function edit_complete(t, id, object, active) {
  object.innerHTML = t.responseText;
  show_as_editable(object, false, active);
  if (active) {
    Element.addClassName(id, 'active');
    Element.removeClassName(id, 'inactive');
  } else {
    Element.addClassName(id, 'inactive');
    Element.removeClassName(id, 'active');
  }
}

function edit_failed(t, object) {
  object.innerHTML = 'Die Änderungen konnten nicht gespeichert werden.';
  clean_up(object);
}

