/* 
 * Formulário dinâmico
 */
function dyn_form(form, url) {
    form = $(form);
    form._url = url;
    // Trata input text
    form.getElementsBySelector('input[type=text]').each(function (e) {
        Event.observe(e, 'focus', function (e) {
            e = Event.element(e);
            if (e.value == e.title) {
                e.value = '';
            }
        })
        Event.observe(e, 'blur', function (e) {
            e = Event.element(e);
            if (e.value == '') {
                e.value = e.title;
            }
        })
    })
    // Trata textarea
    form.getElementsBySelector('textarea').each(function (e) {
        Event.observe(e, 'focus', function (e) {
            e = Event.element(e);
            if (e.value == e.title) {
                e.value = '';
            }
        })
        Event.observe(e, 'blur', function (e) {
            e = Event.element(e);
            if (e.value == '') {
                e.value = e.title;
            }
        })
    })
    if (!$(form.id + '_feedback')) {
        new Insertion.Bottom(form, '<span id="' + form.id + '_feedback"></span>');
    }
    // Trata submit
    Event.observe(form, 'submit', function (e) {
        form.getElementsBySelector('submit').each(function (e) {
            e.disabled = 'disabled';
        });
        new Ajax.Updater(this.id + '_feedback', this._url ? this._url : location, {parameters: Form.serialize(form), evalScripts: true,
            onComplete: function () {
                form.getElementsBySelector('submit').each(function (e) {
                    e.disabled = null;
                });
            },
            onSuccess: function (r, x) {
                if (x && x.ok) {
                    this.getElementsBySelector('input[type=text]').each(function (e) {
                        e.value = e.title;
                    })
                    this.getElementsBySelector('textarea').each(function (e) {
                        e.innerHTML = e.title;
                    })
                }
            }.bind(this),
            onException: function (r, e) {
                alert(e.message);
            }
        });
        Event.stop(e);
    }.bind(form))
}

