
Event.observe(window, 'load', init, false);

function init(){
	 makeEditable('desc');
}

function makeEditable(id){
	 Event.observe(id, 'click', function(){edit($(id))}, false);
	 Event.observe(id, 'mouseover', function(){showAsEditable($(id))}, false);
	 Event.observe(id, 'mouseout', function(){showAsEditable($(id), true)}, false);
}

function showAsEditable(obj, clear){
	 if (!clear){
				Element.addClassName(obj, 'editable');
	 }else{
				Element.removeClassName(obj, 'editable');
	 }
}

/* the switcher */
function edit(obj){
	 Element.hide(obj);

	 var textarea = '<div id="' + obj.id + '_editor"><textarea id="' 
	 			+ obj.id + '_edit" name="' + obj.id + '" rows="4" cols="60">'
				+ obj.innerHTML + '</textarea><br />';

	 var button = '<input id="' + obj.id + '_save" type="button" value="SAVE" /> OR <input id="' 
	 			+ obj.id + '_cancel" type="button" value="CANCEL" /></div>';

	 new Insertion.After(obj, textarea+button);

	 Event.observe(obj.id+'_save', 'click', function(){saveChanges(obj)}, false);
	 Event.observe(obj.id+'_cancel', 'click', function(){cleanUp(obj)}, false);
}

/* in case of a cancel */
function cleanUp(obj, keepEditable){
	 Element.remove(obj.id+'_editor');
	 Element.show(obj);
	 if (!keepEditable) showAsEditable(obj, true);
}

/* Saving the Changes */
function saveChanges(obj){
	 var new_content = escape($F(obj.id+'_edit'));

	 obj.innerHTML = "Saving...";
	 cleanUp(obj, true);

	 var success = function(t){editComplete(t, obj);}
	 var failure = function(t){editFailed(t, obj);}

	 var url = 'editinsave.cfm';
	 var pars = 'id=' + obj.id + '&content=' + new_content;
	 //alert( 'yar!' );
	 var myAjax = new Ajax.Request(url, {method:'post',
				postBody:pars, onSuccess:success, onFailure:failure});
}

function editComplete(t, obj){
	 //obj.innerHTML = trim( t.responseText ) + '\n';
	 //eval(t.responseText);
	 obj.innerHTML = t.responseText;
	 Event.stopObserving(obj.id, 'click', function(){edit($(id))}, false);
}

function editFailed(t, obj){
	 obj.innerHTML = 'Sorry, the update failed.';
	 cleanUp(obj);
}

function trim(sString)
{
	while ( sString.substring(0,1) == '\n' || sString.substring(0,1) == '\r' || sString.substring(0,1) == ' ' || sString.substring(0,1) == '\t' )
	{
		sString = sString.substring( 1, sString.length );
	}
	while ( sString.substring(sString.length-1, sString.length) == '\n' || sString.substring(sString.length-1, sString.length) == '\r' || sString.substring(sString.length-1, sString.length) == ' ' || sString.substring(sString.length-1, sString.length) == '\t' )
	{
		sString = sString.substring( 0,sString.length-1 );
	}
	return sString;
}

