
drc = {
    mySpecialClassName: 'drcHiddenJS',
    checkboxCheckedClass: 'checkboxOn',
    checkboxUncheckedClass: 'checkboxOff',
    radioCheckedClass: 'radioOn',
    radioUncheckedClass: 'radioOff',
    allMyLabels: $A(),
    allMyInputs: $A(),

    /**
     * collect all our labels & inputs, so we can observe this suckers
     */
    init: function(topElement) {
        //var topElement = ($(topElement) == null) ? document : topElement;

        // get all labels with for="" attribute
        drc.allMyLabels = $$('label[for]');
        // get all inputs which are referenced by allMyLabels for - Attributes
        // and if they have our holy classname, push them into our allMyInputs - array
        drc.allMyLabels.each(function(myLabel) {
            // check if an input element exists for this label
            var myInput = $(myLabel.htmlFor);
            if ( myInput != null && myInput.hasClassName( drc.mySpecialClassName ) ) {
                // cross - reference labels <-> inputs, might be good for something :)
                myInput.myLabel = myLabel;
                myLabel.myInput = myInput;
                // hide input
                myInput.style.position = 'absolute';
                myInput.style.left = '-10000px';

                // collect input into my input - array
                drc.allMyInputs.push(myInput);
            }
        });

        // show all my suckers

        drc.update();

    },

    update: function() {
        drc.allMyInputs.each(function(myInput) {
            if (myInput.readAttribute('type') == 'checkbox') {
                if (myInput.checked) {
                    //myInput.myLabel.removeClassName(drc.checkboxUncheckedClass);
                    //myInput.myLabel.addClassName(drc.checkboxCheckedClass);
                    myInput.myLabel.className = drc.checkboxCheckedClass;
                } else {
                    //myInput.myLabel.removeClassName(drc.checkboxCheckedClass);
                    myInput.myLabel.className = drc.checkboxUncheckedClass;
                }
            } else if (myInput.readAttribute('type') == 'radio') {
                // tomorrow...
            }
        });
    },

    check: function(e) {

        // TODO: Check for Radio buttons!!
        elem = Event.element(e);

        if ( elem.tagName == 'INPUT'
             && elem.readAttribute('type') == 'checkbox'
             && (typeof elem.myLabel != 'undefined'))
        {
     //       drc.inSpecialMission = true;
                drc.update();
                elem.blur();
  //              window.setTimeout(function(){
//            }, 20);
        }
    },

    megaInit: function () {
        $$('input[type="checkbox"]', 'input[type="radio"]').each(function(elem){
            elem.className = 'drcHiddenJS';
        });

        if (navigator.userAgent.indexOf("Safari") > 0) {
            startSafariLabelQuickFix();
        }

        drc.init(document);
    }

};

Event.observe(document, 'click', drc.check);

