function get_text_content(obj){
    if (obj.innerText) return obj.innerText;
    return obj.textContent;
};
function set_text_content(obj,txt){
    if (obj.innerText) obj.innerText=txt;
    else obj.textContent=txt;
};

function setCaretToEnd(ctrl) {
    if(ctrl.setSelectionRange) {
        ctrl.setSelectionRange(ctrl.value.length, ctrl.value.length);
    }else if (ctrl.createTextRange)  {
        var range = ctrl.createTextRange();
	range.moveStart('character', ctrl.value.length);
        range.select();
    }
};

function editable_edit_me(obj,onedit){
    hide_item(obj);
    entry=document.createElement('INPUT');;
    entry.type='text';
    entry.value=get_text_content(obj);
    entry.editable_parent=obj;
    entry.editable_onedit=onedit;
    entry.onkeydown=function(ev){
	if (!ev) ev=window.event;
	if (ev.keyCode == 13){
	    show_item(this.editable_parent);
	    set_text_content(this.editable_parent,this.value);
	    this.parentNode.removeChild(this);
	    var txt=this.value;
	    var ob=this.editable_parent;
	    this.editable_onedit(txt,ob);
	};
    };
    entry.onblur=function(ev){
	    show_item(this.editable_parent);
	    if (this.parentNode)
		this.parentNode.removeChild(this);
    };
    obj.parentNode.appendChild(entry);
    setCaretToEnd(entry);
    entry.focus();
};


