(function() {
	if (webslinger.Editable) return;
	webslinger.Editable = true;
	var editableEnabled = false;
	var inEditor = false;
 	function launchEditor() {
		if (inEditor) return false;
		inEditor = true;
		var path = this.getAttribute("path")
		var pathInfo = this.getAttribute("pathInfo")
		var jThis = jQuery(this);
		var thiz = this;
		jThis.openDialog("/Editable", "Editor", "Editor", {editPath: path, editPathInfo: pathInfo}, function() { inEditor = false; });
		return false;
	}
	var parts = ["tl", "tr", "bl", "br", "t", "l", "r", "b"];
	var border = '';
	for (var i = 0; i < parts.length; i++) border += "<div class='Editable_" + parts[i] + "'></div>";
	function displayEditable(item, ctx) {
		jQuery(item, ctx).each(function() {
			var jThis = jQuery(this);
			jThis.css("display", "block");
		//alert("doc dimensions(" + jQuery(this.parentNode).width() + ")");
		//alert("dimensions(" + jThis.innerWidth() + ", " + jThis.height() + ")");
			jThis.dblclick(launchEditor).wrap("<div class='EditableContainer'></div>");
			jThis.before(border);
			jQuery(this.parentNode).addClass("Editable_" + jThis.css("display"));
		});

	}
	/*
	jQuery(function() {
		jQuery(jQuery("body").prepend("<div>Toggle Edit Markup (Disabled)</div>").get(0).firstChild).toggle(function() {
			editableEnabled = true;
			displayEditable(".Editable[@path]");
			jQuery(this).empty().append("Toggle Edit Markup (Enabled)");
		}, function() {
			editableEnabled = false;
			var editables = jQuery(".Editable[@path]");
			editables.unbind("dblclick", launchEditor);
			editables.each(function() {
				var parentNode = this.parentNode;
				var jParent = jQuery(parentNode);
				jParent.before(this);
				jParent.remove();
			});
			jQuery(this).empty().append("Toggle Edit Markup (Disabled)");
		});
	});
	*/
	jQuery.addMutator(function(ctx) {
		if (!editableEnabled) return;
		displayEditable(".Editable[@path]", ctx);
	});
})();
