//コンストラクタ、切り替え対象を指定   
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];   
            //関数を返す無名関数実行文   
            var callback = (function(_src)   
            {   
                return function()   
                {   
                    this.src = _src;   
                };   
            })(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);   
        }   
    },   
    //イベント予約関数を統合（DOM LEVEL 2イベントとIEのイベントに対応）   
    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);   
            });   
        }   
    }   
}