
/* IconButton class scripts --- */  
function IconButton(id, textId, isEnabled, applyDisableFilter){ 
    // Arguments check
    if(!id){ 
        sw_ShowError('Unable to initialize \'IconButton\' control script. ID parameter must be nonempty.');
        return;
    }
    
    // Private fields
    var _id = id;
    var _textId = textId;
    var _el = null;
    var _textEl = null;
    var _isEnabled = isEnabled;
    var _applyDisableFilter = applyDisableFilter;

    var _GetEl = function(id){ 
        return sw_GetElement(id, document);
    }
    var _EnsureInit = function(){ 
        if(_el && _textEl){
            return; 
        }
        _el = _GetEl(_id); 
        _textEl = _GetEl(_textId);
    }

    // Delegates
    this.ClickH = null; // Click handler

    // Public properties
    this.get_IsEnabled = function(){ 
        return _isEnabled;
    }
    this.set_IsEnabled = function(val){ 
        if(_isEnabled==val)
            return;
        _EnsureInit();

        _isEnabled = sw_ToBool(val);
        if(_isEnabled){
            // Enable
            _el.onclick = this.ClickH;
            _el.style.cursor = 'pointer';
            if(_applyDisableFilter)
                sw_SetOpacity(_el, 100) 
        }else{
            // Disable
            if(this.ClickH==null)
                this.ClickH = _el.onclick;
            _el.onclick = null;
            _el.style.cursor = 'default';
            if(_applyDisableFilter)
                sw_SetOpacity(_el, 30)
        }
    }    

    this.get_IsHidden = function(){ 
        _Ensure();
        return (_el.style.display == 'none');
    }    
    this.set_IsHidden = function(val){ 
        _Ensure();
        var _isHidden = sw_ToBool(val);
        if(_isHidden){
            _el.style.display = 'none';
        }else{
            _el.style.display = '';
        }
    }    

    this.get_Text = function(){ 
        _EnsureInit();
        return sw_GetInnerText(_textEl);
    }
    this.set_Text = function(val){ 
        _EnsureInit();
        sw_SetInnerText(_textEl, val);
    }

    this.get_CssClass = function(){ 
        _EnsureInit();
        return _el.className;
    }
    this.set_CssClass = function(val){ 
        _EnsureInit();
        _el.className = val;
    }

    this.get_IsHidden = function(){ 
        _EnsureInit();
        return (_el.style.display == 'none');
    }    
    this.set_IsHidden = function(val){ 
        _EnsureInit();
        var _isHidden = sw_ToBool(val);
        if(_isHidden){
            _el.style.display = 'none';
        }else{
            _el.style.display = '';
        }
    }   

    this.get_ContextHelp = function(){ 
        _EnsureInit();
        return _el.getAttribute('ContextHelp');
    }    
    this.set_ContextHelp = function(val){ 
        _EnsureInit();
        _el.setAttribute('ContextHelp', val);      
    } 

    // Public methods
    this.Enable = function(){ this.set_IsEnabled(true); }
    this.Disable = function(){ this.set_IsEnabled(false); }

    this.Hide = function(){ this.set_IsHidden(true); }
    this.Show = function(){ this.set_IsHidden(false); }
    

}

/* --- */