//
// Smart Rollover Class
//

(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 img = new Image();
				img.setAttribute("src", over);
				
				var onOver = (function(_over)
				{
					return function(e)
					{
						var img = e.target || window.event.srcElement;
						img.src = _over;
					}
				})(over);
				
				var onOut = (function(_out)
				{
					return function(e)
					{
						if(e.target || window.event.srcElement)
						{
							var img = e.target || window.event.srcElement;
							img.src = _out;
						}
					}
				})(out);
				
				observe(el, "mouseover", el, onOver);
				observe(el, "mouseout", el, onOut);
				observe(window, "unload", el, onOut);
			}
		}
	});
})();