var FormWithInitials = new Class({
    initialize:function(formClass, fieldClass, userChangesClass){
        this.userChangesClass = userChangesClass;
        this.fields = new Array();
        this.values = {};
        $$('.' + fieldClass).each(function(field, index){
            field.addEvent('focus', this.focusHandler.bind(this));
            field.addEvent('blur', this.blurHandler.bind(this));
            field.addEvent('keydown', this.keydown.bind(this));
            // Сохраняем начальные значения текстовых input\'ов
            this.values[field.id] = field.title;
            if (field.title != field.value)
                field.addClass(this.userChangesClass)
            // Собираем нужные нам текстовые input\'ы
            this.fields.include(field);
        }.bind(this));

        this.form = this.initForm($(document.body).getElement('form.' + formClass));
    },

    focusHandler:function(e){
        var e = new Event(e);e.preventDefault();
        if (!e.target.hasClass(this.userChangesClass)) {
            if (e.target.value == this.values[e.target.id]){
                e.target.value = "";
            };
        };
    },

    blurHandler:function(e){
        var e = new Event(e);
        if (e.target.value == ""){
            e.target.value = this.values[e.target.id];
            if (e.target.hasClass(this.userChangesClass))
                e.target.removeClass(this.userChangesClass);
        };
    },

    keydown:function(e){
        var e = new Event(e);
        if (!e.target.hasClass(this.userChangesClass))
            e.target.addClass(this.userChangesClass);
    },

    //Метод добавляет форме специальный метод submit
    initForm:function(formEl){
        if (formEl) {
            formEl.addEvent('submit', function(e){
                var e = new Event(e);e.preventDefault();
                this.fields.each(function(field, index){
                    if (!field.hasClass(this.userChangesClass)){
                        field.value = "";
                    }
                }.bind(this));
                formEl.submit();
            }.bind(this));
            return formEl;
        };
        return null;
    }
    
});

window.addEvent('domready', function(){
    var magicForm = new FormWithInitials('FormWithInitials', 'FieldInitial', 'UserInput');
});
