yu = YAHOO.util;

var editable = {
    config: {
        class_name: 'editable'
    },
    init: function() {
        this.clicked = false;
        this.contents = false;
        this.input = false;
        
        _items = yu.Dom.getElementsByClassName(this.config.class_name);
        if (_items.length > 0) {
            for (i = 0; i < _items.length; i++) {
                yu.Event.addListener(_items[i], 'dblclick', editable.dbl_click, editable, true);
                
            }
        }
    },
    dbl_click: function(ev) {
        this.check();
        //this.clicked = ev.currentTarget;
        this.clicked = yu.Event.getTarget(ev, true);
        this.contents = this.clicked.innerHTML;
        this.make_input();
    },
    make_input: function() {
        this.input = yu.Dom.generateId();
        new_input = document.createElement('input');
        with (new_input) {
            setAttribute('type', 'text');
            setAttribute('id', this.input);
            value = this.contents;
            setAttribute('size', this.contents.length);
            className = 'editable_input';
        }
        this.clicked.innerHTML = '';
        this.clicked.appendChild(new_input);
        new_input.select();
        yu.Event.addListener(new_input, 'blur', editable.check, editable, true);
    },
    clear_input: function() {
        if (this.input) {
            if (yu.Dom.get(this.input).value.length > 0) {
                this.clean_input();
                this.contents_new = yu.Dom.get(this.input).value;
                this.clicked.innerHTML = this.contents_new;
            } else {
                this.contents_new = '[removed]'
                this.clicked.innerHTML = this.contents_new;
            }
        }
        this.callback();
        this.clicked = false;
        this.contents = false;
        this.input = false;
    },
    clean_input: function() {
        checkText   = new String(yu.Dom.get(this.input).value);
        regEx1      = /\"/g;
        checkText       = String(checkText.replace(regEx1, ''));
        yu.Dom.get(this.input).value = checkText;
    },
    check: function(ev) {
        if (this.clicked) {
            this.clear_input();
        }
    },
    callback: function() {
    }
}


