Ext.namespace('Ext.ux');


Ext.ux.Flag = function(config){
    //define whatever events you support.  All events should follow the
    //same pattern of "name": true where "name" should be all lowercase.
    this.addEvents({
        "changed": true,
        "reset" : true
    });

    if(config){
        this.changed = config.changed;
        this.listeners = config.listeners;
        this.object = config.object;
        this.debug = config.debug;
    }
    
    Ext.ux.Flag.superclass.constructor.call(this, config);
    
};

Ext.extend(Ext.ux.Flag, Ext.Component, {
    changed: false
    ,object: new Object()
    ,debug: false
    /** The value has changed, fire the event for all to listen to **/
    ,change: function(object){
        this.changed = true;
        if(this.debug){
            console.log('about to fire change event');
        }
        this.fireEvent("changed", this, object);
        if(this.debug){
            console.log('change event was fired');
        }
    }
    /** check if the value was changed **/
    ,hasChanged: function(){
        return this.changed;
    }
    ,getKey: function(){
        return this.object;
    }
    /** reset the change flag **/
    ,reset: function(object){
        this.changed = false;
        this.object = object;
        if(this.debug){
            console.log('about to fire reset event');
        }
        this.fireEvent("reset", object);
        if(this.debug){
            console.log('reset event was fired');
        }
    }
});
