(function()   
{   
    var observe = function(_el, _func, _listener, _callback)   
    {   
        if(_el.addEventListener)   
        {   
            _el.addEventListener(_func, function(e)   
            {   
                _callback.call(_listener, e);   
                   
            }, false);   
        }   
        else if(_el.attachEvent)   
        {   
            _el.attachEvent("on"+_func, function(e)   
            {   
                _callback.call(_listener, e);   
            });   
        }   
    };   
    observe(window, "load", this, function()   
    {   
        var tags = ["img","input"];   
           
        for(var i=0; i<tags.length; i++)   
        {   
            var nl = document.getElementsByTagName(tags[i]);   
            for(var j=0; j<nl.length; j++)   
            {   
                var el = nl[j];   
                if (!el.src.match(/^(.*_)out(\..*)$/)) continue;   
                var out = el.src, over = RegExp.$1+"over"+RegExp.$2;   
                var rewrite = (function(_out, _over)   
                {   
                    return function(e)   
                    {   
                        var img = e.target || window.event.srcElement;   
                        img.src = (img.src == _out) ? _over : _out;   
                    }   
                })(out, over);   
                observe(el, "mouseover", el, rewrite);   
                observe(el, "mouseout", el, rewrite);   
                (new Image).src = over;   
            }   
        }   
    });   
})();
