

Event.observe(window, 'load', init, false); 
  
function init() 
{ 
        makeEditable('desc'); 
        makeEditable('pizza'); 
} 
  
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'); 
        } 
}

function edit(obj) 
{ 
        Element.hide(obj); 
        
        var textarea = '<div id="'+obj.id+'_editor"><textarea id="'+obj.id+'_edit" name="'+obj.id+'" rows="20" cols="45">'+obj.innerHTML+'</textarea>'; 
        var button = '<div><input id="'+obj.id+'_save" type="button" value="Modifier" /> - <input id="'+obj.id+'_cancel" type="button" value="Annuler" /></div></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); 
}
function cleanUp(obj, keepEditable) 
{ 
        Element.remove(obj.id+'_editor'); 
        Element.show(obj); 
        if (!keepEditable) showAsEditable(obj, true); 
}

function saveChanges(obj) 
{ 
        var new_content =  escape($F(obj.id+'_edit')); 
  
        obj.innerHTML   = "Enregistrement..."; 
        cleanUp(obj, true); 
  
        var success     = function(t){editComplete(t, obj);} 
        var failure     = function(t){editFailed(t, obj);} 
  
        var url = 'lib/editinplace.php'; 
        var pars = 'id='+obj.id+'&content='+new_content+'&ref='+refjava; 
        var myAjax = new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:success, onFailure:failure}); 
} 
  
function editComplete(t, obj) 
{ 
        obj.innerHTML   = t.responseText; 
        showAsEditable(obj, true); 
} 
  
function editFailed(t, obj) 
{ 
        obj.innerHTML   = "La modification n'a pas fonctionné."; 
        cleanUp(obj); 
}