jQuery.extend({
    toggler : {
        version : 1.1,
        undo : false,
        started : false,
        first : false,
        elements : null,
        init : function (elements, undo){
            this.elements = jQuery(elements);
            this.undo = !!undo;
            this.elements.bind("mousedown", this, this.down)
            this.elements.bind("mouseover", this, this.over)
            this.elements.bind("click", this, this.click)
            jQuery(document.body).bind("mouseup", this, this.up);
        },
        down : function (event){
            event.data.started = true;
            event.data.first = !this.checked;
            event.data.check(this,event.data.first)
        },
        over : function(event){
            if (event.data.started)
                if (event.data.undo)
                    event.data.check(this,!this.checked);
                else
                    event.data.check(this,event.data.first);
        },
        click : function(event){
            event.data.check(this,event.data.first);
            event.data.started = false;
        },
        check : function(elt,cond,undo)
        {
            var e = jQuery(elt);
            if(cond)
                e.attr({checked:"checked"});
            else
                e.removeAttr("checked");
        },
        up : function (event){
            event.data.started = false;
        }
    }
});
