//
// Multi Rollover Class
//
MultiRollover = function(_listener)
{
	this.listener_id = _listener;
	this.target_id = "";
	this.sources = [];
}
MultiRollover.prototype = {
	addTarget: function(_target)
	{
		this.target_id = _target;
	},
	addSource: function()
	{
		for(var i=0; i<arguments.length; i++)
		{
			this.sources.push(arguments[i]);
		}
	},
	create: function()
	{
		var listener = document.getElementById(this.listener_id);
		if(document.getElementById(this.target_id))
		{
			var out_target = document.getElementById(this.target_id);
			var over_targets = out_target.getElementsByTagName("a");
		}
		for(var i=0; i<over_targets.length; i++)
		{
			var over_target = over_targets[i];
			var src = this.sources[i];
			//console.log(this);//MultiRollover
			/*無名関数の定義を渡す
			var callback = function()
			{
				console.log(src);
				this.src = src;
			};*/
			/*関数を返す無名関数定義を渡す
			var callback = function(_src)
			{
				console.log(src);//HTMLImageElement
				return function()
				{
					this.src = src;
					console.log(this);//実行されない
				};
			};*/
			/*関数を返す無名関数実行文を渡す*/
			var callback = (function(_src)
			{
				//console.log(this);//Window
				return function()
				{
					this.src = _src;
					//console.log(this);//HTMLImageElement
				};
			})(src);
			this.observe(over_target, "mouseover", listener, callback);
			(new Image).src = src;
			
			src = this.sources[0];
			callback = function()
			{
				this.src = src;
			};
			this.observe(over_target, "mouseout", listener, callback);
		}
	},
	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);
			});
		}
	}
}
