/* LIST EDIT */
var ListEditAddCount = 0;
var ListEditManager = new Class({
  setup:function() {
	  
	// setup the editable clicks
	$$("a.Editable").each(function(editable) {
	  editable.removeEvents();
	  editable.addEvent("click", function(e){ new ListEditManager().EditableClick(this); }.bind(editable));
	});
	
	// setup editable cancels
	$$("input.EditableCancel").each(function(editable) {
	  editable.removeEvents();
	  editable.addEvent("click", function(e){ new ListEditManager().EditableCancel(this); }.bind(editable));
	});
	
	// allow editing
	$$("span.Editable").each(function(editable) {
	  var container = editable.getParent("h3");
	  if (!container) {
		  container = editable.getParent("h1");
	  }
	  
	  container.removeEvents();
	  container.addEvent("mouseover", function(e) { 
	    this.getElement("span.Editable").removeClass("Hidden");
	  }.bind(container));
	  container.addEvent("mouseout", function(e) { 
	    this.getElement("span.Editable").addClass("Hidden");
	  }.bind(container));
	});
	
	// setup the "add list item" button
	if (listAdd = $("ListItemAddButton")) { 
	  listAdd.removeEvents();
	  listAdd.addEvent("click", function(e) { new ListEditManager().EditableAdd() });
	}
  },
  EditableAdd:function() {
	  
	  // clone object
	  ListEditAddCount += 1;
	  itemid = "n" + ListEditAddCount;
	  var container = $("ListItemAdd").clone(true, true)
	  container.set("id", "");
	  container.getChildren("div.ListNumbers")[0].set("html","&nbsp;");
	  
	  // set up contents
	  container.getElements("input,label,textarea").each(function(el) {
		id = el.get("id");
		if (id && id.contains("_")) { 
	    	el.set("id", id+itemid);
		}
		name = el.get("name");
		if (name && name.contains("_")) {
			el.set("name", name+itemid);
		}
		afor = el.get("for");
		if (afor && afor.contains("_")) {
			el.set("for", afor+itemid);
		}
	  });
	  
	  // finalize
	  container.injectBefore($("ListItemAdd"));
	  new ListEditManager().setup();
	  container.removeClass("Hidden");
  },
  EditableClick:function(editable) {
	  var container = editable.getParent("div.ListItem");
	  if (!container) {
		  container = editable.getParent("div.List");
	  }
	  container = container.getElement("div.EditableContainer");
	  if (!container.hasClass("Hidden")) {
		  editableCancel = container.getElement("input.EditableCancel");
		  return this.EditableCancel(editableCancel);
	  }
	  container.removeClass("Hidden");
	  uswitch = container.getChildren("input.UpdateSwitch")[0];
	  toupdate = uswitch.get("id").split("_")[1];
	  uswitch.set("value", toupdate);
  },
  EditableCancel:function(editable) {
	  var container = editable.getParent("div.EditableContainer");
	  container.addClass("Hidden");
	  uswitch = container.getChildren("input.UpdateSwitch")[0];
	  uswitch.set("value", "");
  }
});
window.addEvent('domready', function(e){ new ListEditManager().setup(); });
