var CheckBox=(function (checkBoxContainer){
    var cbState=false;
    var isDisabled=false;
    var cbContainer;
    var id=0;
    var thisObj=this;
    function init(){
        
       cbState=cbContainer.hasClass('checked');
       isDisabled=cbContainer.hasClass('disabled');
       id=cbContainer.get('rel');
       if (!isDisabled)
            cbContainer.addEvent("click",eventCheckBoxClicked);
       
    }
    
    function enableBox(){
        isDisabled=false;
        cbContainer.removeClass('disabled');
    }
    
    function disableBox(){
        isDisabled=true;
        cbContainer.addClass('disabled');
        cbContainer.removeClass('checked');
        cbState=false;
    }
    
    function eventCheckBoxClicked(){
        if (cbState)
            cbContainer.removeClass('checked');
        else
            cbContainer.addClass('checked');
        
        var theInput=cbContainer.getElement('input');
        cbState=!cbState;
        theInput.set('value',cbState);
        thisObj.fireEvent("eventCheckBoxStateChanged",thisObj);
    }
    
    function check(){
        if(isDisabled)
            return;
        cbContainer.addClass('checked');
        cbState=true;
        var theInput=cbContainer.getElement('input');
        theInput.set('value',cbState);
        thisObj.fireEvent("eventCheckBoxStateChanged",thisObj);
        
    }
    
    function unCheck(){
         if(isDisabled)
            return;
        cbContainer.removeClass('checked');
        cbState=false;
        var theInput=cbContainer.getElement('input');
        theInput.set('value',cbState);
        thisObj.fireEvent("eventCheckBoxStateChanged",thisObj);
    }
    
    function getStatus(){
        return cbState;
    }
    
    cbContainer=checkBoxContainer;
    init();
    
    this.check=check;
    this.unCheck=unCheck;
    this.getStatus=getStatus;
    this.enableBox=enableBox;
    this.disableBox=disableBox;
    this.id=id;
    Events.makeObjectEventable(this);
});


