jQuery.fn.editinline = function(url, options) {

	options = options || {};
	options.url = url;
	var settings = {
		editable: true,
		max: 20,
		qstr: 'q'
	};

	if (options)
		$.extend(settings, options);

	jQuery(this).dblclick(function(e) {

		if (!settings.editable) { return; }
		settings.editable = false;

		var self = this;
		var tmp = self.innerHTML;

		self.innerHTML = '';

		var f = document.createElement('form');

		if (jQuery.browser.mozilla)
		{
			var i = document.createElement('input');
			i.setAttribute('type', 'text');
			i.setAttribute('maxlength', settings.max);
		}
		else
			var i = document.createElement('<input type="text" maxlength="' + settings.max + '" />');


		i.value = tmp;
		f.appendChild(i);

		self.appendChild(f);

		i.select();

		jQuery(i).blur(function(e) {

			settings.editable = true;

			var text = i.value.entityify();
			var params = '';
			var addParam = '';
			var id = jQuery(self).attr('id');
			var spliter = id.split('_');
			if (spliter[0])
				addParam = '&' + spliter[0] + '=' + spliter[1];

			if (settings.params)
				params = '&' + settings.params;

			//self.innerHTML = text;
			data = settings.qstr + '=' + text + params + addParam;

			//alert( data );

			jQuery.ajax({
				type: 'POST',
				url: settings.url,
				data: data,
				success: function(str) {
					self.innerHTML = str;
					settings.onSave(str);
				}
			});
		});

	});

};

String.prototype.entityify = function () {
    return this.replace(/&/g, "amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
};