
var currentEditorId = '';

//now using onload in page
//Event.observe(window, 'load', initOnLoad, false);
function initOnLoad() {
	makeEditable('desc');
	makeEditable('pizza');
}

function makeEditable(id, editorType) {
	if (!document.getElementById(id)) {
		window.status = 'Element (' + id + ') does not exist';
		return;
	}
	Event.observe(id, 'click', function(){inPlaceEditor($(id),editorType)}, false);
	Event.observe(id, 'mouseover', function(){showAsEditable($(id))}, false);
	Event.observe(id, 'mouseout', function(){showAsEditable($(id), true)}, false);
}

//SB find edit-in-place elements and prep for editing
function loadEditInPlaceElements() {
	var i, eles;

	eles = document.getElementsByTagName('div');
	for (i=0;i<eles.length;i++)
		if (eles[i].id.substring(0,2)=='a_')
			makeEditable(eles[i].id, 'textarea');

	eles = document.getElementsByTagName('h2');
	for (i=0;i<eles.length;i++)
		if (eles[i].id.substring(0,2)=='t_')
			makeEditable(eles[i].id, 'text');
}

function inPlaceEditor(obj, editorType) {
	var editor;

	if (currentEditorId!='')
		cleanUp($(currentEditorId));
	currentEditorId = obj.id;

	Element.hide(obj);

	//var isTitle = (obj.id.substring(0,2)=='h1' || obj.id.substring(0,2)=='h2' || obj.id.substring(0,2)=='h3');

	var content = obj.innerHTML;

	if (!editorType || editorType=='textarea' || editorType=='') {
		content = content.replace(/<br \/>/gi, '\n');
		content = content.replace(/<br>/gi, '\n');
		editor = '<div id="'+obj.id+'_editor"><textarea id="'+obj.id+'_edit" name="'+obj.id+'" rows="4" cols="60" class="editinplace">' + content + '</textarea>';
	} else if (editorType='text')
		editor = '<div id="'+obj.id+'_editor"><input type=text id="'+obj.id+'_edit" name="'+obj.id+'" class="editinplace" value="' + content + '">';

	//var button	 = '<div><input id="'+obj.id+'_save" type="button" value="Save" /> <input id="'+obj.id+'_cancel" type="button" value="Cancel" /></div></div>';
	var button	 = '<div><img id="'+obj.id+'_save" src="/__cms/images/yes.gif" border="0" alt="Save"><img id="'+obj.id+'_cancel" src="/__cms/images/no.gif" border="0" alt="Cancel"></div></div>';

	new Insertion.After(obj, editor+button);

	Event.observe(obj.id+'_save', 'click', function(){saveChanges(obj)}, false);
	Event.observe(obj.id+'_cancel', 'click', function(){cleanUp(obj)}, false);
}

function showAsEditable(obj, clear) {
	if (!clear)
		Element.addClassName(obj, 'editinplace');
	else
		Element.removeClassName(obj, 'editinplace');
}

function saveChanges(obj) {
	var new_content	=  escape($F(obj.id+'_edit'));
	obj.innerHTML	= "Updating ...";
	cleanUp(obj, true);		// clean up editor and leave editable
	var success	= function(t){editComplete(t, obj);}
	var failure	= function(t){editFailed(t, obj);}
	var url = '/__cms/ajax_editinplace.asp';
	var pars = 'id=' + obj.id + '&content=' + new_content;
	var myAjax = new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:success, onFailure:failure});
}

function cleanUp(obj, keepEditable) {
	Element.remove(obj.id+'_editor');
	Element.show(obj);
	if (!keepEditable)
		showAsEditable(obj, true);
	currentEditorId = '';
}

function editComplete(t, obj) {
	obj.innerHTML	= t.responseText;
	showAsEditable(obj, true);
}

function editFailed(t, obj) {
	obj.innerHTML	= 'Sorry, the update failed.';
	cleanUp(obj);	// clean up editor and disable re-edit of element
}