/*
а�аОаДб�аКаАаЗаКаА аДаЛб� аПаОаЛб�
2008 - Magic Wand
*/

FieldHint = function(selector, message) {
    this.selector = selector;
    this.message = message;
    this._init();
}

FieldHint.prototype = {
    _init: function() {
        var _this = this;
        this.getField()
            .blur( function() { _this.onBlur(); })
            .focus( function() { _this.onFocus(); });
        this.syncFieldStatus();
    },
    
    setMessage: function() {
        this.setFieldStatus(false);
        this.getField().val(this.message);
    },
    
    removeMessage: function() {
        this.setFieldStatus(true);
        this.getField().val('');
    },
    
    setFieldStatus: function(status) {
        var field = this.getField();
        if(status) {
            field.addClass('hasvalue');
            field.removeClass('novalue');
        } else {
            field.addClass('novalue');
            field.removeClass('hasvalue');
        }
    },
    
    syncFieldStatus: function() {
        if(this.getFieldStatus())
            this.setFieldStatus(true);
        else
            this.setMessage();
    },
    
    unSyncFieldStatus: function() {
        if(!this.getFieldStatus())
            this.removeMessage();
    },
    
    getFieldStatus: function() {
        var val = this.getField().val();
        return !(!val || val == this.message);
    },
    
    getField: function() {
        return $(this.selector);
    },
    
    onBlur: function() {
        if(!this.getFieldStatus())
            this.setMessage();
    },
    
    onFocus: function() {
        if(!this.getFieldStatus())
            this.removeMessage();
    }
}

FieldHintCollection = function() {
    this.hints = [];
}

FieldHintCollection.prototype = {
    add: function(hint) {
        this.hints.push(hint);
    },
    
    sync: function() {
        for(var i in this.hints) {
            if(this.hints[i].syncFieldStatus)
                this.hints[i].syncFieldStatus();
        }
    },
    
    unsync: function() {
        for(var i in this.hints) {
            if(this.hints[i].unSyncFieldStatus)
                this.hints[i].unSyncFieldStatus();
        }
    }
}

