// depends on Prototype Ajax.Updater        	
function initEditable( viewId, onBlur, isDoubleClick) {
  /*
    connects views and edits with similar name prefix
  */
  if (isDoubleClick == undefined) isDoubleClick = false;
	var view = document.getElementById(viewId);
	view.title = 'click to change the Working Text'
	var editor = document.createElement('textarea');
	editor.style['visibility'] = 'hidden';
	editor.style['position'] = 'absolute';
	editor.value = view.innerHTML;
	editor.className = 'editor'
	editor.id = view.id.replace('editable', 'editor')
  editor.style['zIndex'] = '10000'; 
  editor.style['white-space'] = 'pre-wrap !important;'; 
  editor.style['font'] = "95% CAfont";
  view.editor = view.parentNode.appendChild(editor)
  view.editor.onblur = onBlur;
  // called on click / doubleclick
	var showEditor = function(event) {
	  event = fixEvent(event)

		var view = this
		var editor = view.editor

		if (!editor) return true

		if (editor.currentView != null) {
			editor.blur()
		}
		editor.currentView = view

		var leftTop = view.positionedOffset();
		editor.setStyle({top: leftTop[1]+'px',
		                 left: leftTop[0]+'px'})
		if (editor.nodeName.toLowerCase() == 'textarea') {
			editor.style['width'] = view.offsetWidth + 20 +  "px"
			editor.style['height'] = view.offsetHeight + 24 + "px"
		}
		editor.style.backgroundColor = view.style.backgroundColor
		editor.value = view.innerHTML
		editor.style['visibility'] = 'visible'
		view.style['visibility'] = 'hidden'
		editor.focus()
		editor.select()
		return false
	}

	if (isDoubleClick) {
		view.ondblclick = showEditor
	} else {
		view.onclick = showEditor
	}

	view.editor.onkeydown = function(event) {
	  event = fixEvent(event)
		
		var editor = event.target
		// blur on tab
		if (event.keyCode == 9) {
			editor.blur()
			return false
		}
	}

	view.editor.onkeyup = function(event) {
		event = fixEvent(event) 
 
		var editor = event.target
		// escape = 27
		if (event.keyCode == 27) {
			editor.abandonChanges = true
			editor.blur()
			return false
		} else if (event.keyCode == 9) {
			return false
		} else {
			return true
		}
	}
}
fixEvent = function(event) {
  if (!event) event = window.event
  if (event.target) {
    //alert('t:'+event.target)
    if (event.target.nodeType == 3) event.target = event.target.parentNode
  } else if (event.srcElement) {
    event.target = event.srcElement
  }

  return event
}