// =========================
// editableLabel jquery plugin
// Michael Zancan June 2008
// install with $(whatever).editableLabel({cb:mycallback})
// =========================
jQuery.fn.editableLabel=function(opts)
{	return this.each( function(i,e)
		{	if( opts.cb)		$(this).bind("edit",opts.cb);
			if( opts.textarea)	{ $(this).data('inputtag',"<textarea></textarea>"); }
			else				{ $(this).data('inputtag',"<input type=\"text\">"); }
			$(this).click(onEditableLabelClick);
		}
	);
}
jQuery.fn.editableLabelRestore=function()
{	return this.each( function(i,e)
		{	$(this).html(sEditableLabelsStorage);
		}
	);
}
var sEditableLabelsStorage;
var sEditableLabelsType;
function onEditableLabelClick()
{	var c=$(this).text();
	sEditableLabelsStorage=c;
	var te=$($(this).data('inputtag'));
	te.val(c);
	$(this).text("").append(te);
	$(this).unbind("click");
	te.focus().blur(onEditableLabelBlur).keydown(function (e)
	{	if(e.which==27)
			editableLabelTerminate($(this),sEditableLabelsStorage,false);		
	}).keypress(function (e)
	{	if(e.which==13 && !$(this).is('textarea'))
		{	var newv=$(this).val();
			editableLabelTerminate($(this),$(this).val(),newv!=sEditableLabelsStorage);
			return false;				// prevents the form from being sent
		} 
	});
}
function editableLabelTerminate(inp,val,isOk)
{	var lbl=inp.parent();			
	lbl.empty().html(val);	
	lbl.click(onEditableLabelClick);	// reinstall click event	
	if( isOk)
		lbl.trigger("edit");
}
function onEditableLabelBlur()
{	var newv=$(this).val();
	editableLabelTerminate($(this),$(this).val(),newv!=sEditableLabelsStorage);
}
