function hasClass(e,c) {
	return e.className.match(new RegExp('(\\s|^)' + c + '(\\s|$)'));
}
 
function addClass(e,c) {
	if (!this.hasClass(e,c)) e.className += ' ' + c;
}
 
function removeClass(e,c) {
	if (hasClass(e,c)) {
    	var reg = new RegExp('(\\s|^)' + c + '(\\s|$)');
		e.className = e.className.replace(reg,' ');
	}
}

function json_decode(string)
{
	return eval('(' + string + ')');
}

function hasClass(e,c) {
    return e.className.match(new RegExp('(\\s|^)' + c + '(\\s|$)'));
}
 
function addClass(e,c) {
    if (!this.hasClass(e,c)) e.className += ' ' + c;
}
 
function removeClass(e,c) {
    if (hasClass(e,c)) {
        var reg = new RegExp('(\\s|^)' + c + '(\\s|$)');
        e.className = e.className.replace(reg,' ');
    }
}

function json_decode(string)
{
    return eval('(' + string + ')');
}


var Button = function(el, fn)
{
    this.element = el;
	
    this.fn = fn;
    this.disabled = false;
    
    var scope = this;
    
    this.element.click(function(){
        if(!scope.disabled && typeof scope.fn == 'function') { scope.fn(); }
        return false;
    });
    
    this.element.hover(function(){ if(!scope.disabled) { scope.element.addClass('button_hover'); } }, function() { scope.element.removeClass('button_hover'); });
    this.element.mousedown(function(){ scope.element.addClass('button_clicked'); });
    this.element.mouseup(function(){ scope.element.removeClass('button_clicked'); });
}

Button.prototype.disable = function()
{
    this.disabled = true;
    this.element.addClass('button_disabled');
}

Button.prototype.enable = function()
{
    this.disabled = false;
    this.element.removeClass('button_disabled');
}

