var _H = {

    IE             : (document.all && !window.opera),

    hasClass        : function(e,cls) {
        return e.className.match(new RegExp('(\\b|^)'+cls+'(\\b|$)'));
    },
        
        
    addClass        : function(e,cls) {
        if (!this.hasClass(e,cls)) e.className += " " + cls;
    },
        
        
    removeClass     : function(e,cls) {
        if (_H.hasClass(e,cls)) {
            var reg = new RegExp('(\\b|^)'+ cls +'(\\b|$)');
            e.className = e.className.replace(reg, '');
        }
    },
        
        
    switchClass    : function(e, fromClass, toClass) {
        _H.removeClass(e, fromClass);
        _H.addClass(e, toClass);
    },
        
        
    $               : function(id) {
        if (typeof id !== 'string') return id;
        return (document.getElementById)
            ? document.getElementById(id)
            : document.all[id];
    },
        
        
        
    addEvent        : function(el, event, fn, capture) {
        if (el.addEventListener) {
                el.addEventListener(event, fn, capture); return true;
        }
        else if (el.attachEvent) {
                var r = el.attachEvent('on' + event, fn); return r;
        }
        else { el['on' + event] = fn; }
    },
        
        
    setStyle       : function(node, csstext) {
        if (_H.IE) {
            node.style.setAttribute('cssText', csstext, 0);
        } else {
            node.setAttribute('style', csstext);
        }    
    }

};
