(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;  
            }  
        }  
    });  
})();
