function $A(iterable) {
var results = [];
for (var i = 0; i < iterable.length; i++)results.push(iterable[i]);
return results;
}
Function.prototype.bind = function() {
var __method = this, args = $A(arguments), object = args.shift();
return function() {
return __method.apply(object, args.concat($A(arguments)));
}
}
var imgs = [
{max:'img/indeximg/big/1.jpg', min:'img/indeximg/small/1.jpg', url:'show.php?id=111', title:'2010亚太青少年国际器乐锦标赛于八月二十开赛', con:'为促进亚太地区青少年的文化交流，共同构建世界友谊与和平，亚太管乐联盟特定2010亚太青少年国际器乐锦标赛在深圳(8.21)举行，敬请广大器乐爱好者参与。'},
{max:'img/indeximg/big/2.jpg', min:'img/indeximg/small/2.jpg', url:'show.php?id=111', title:'8月21日正式开赛',con:'为促进亚太地区青少年的文化交流，共同构建世界友谊与和平，亚太管乐联盟特定2010亚太青少年国际器乐锦标赛在深圳(8.21)举行，敬请广大器乐爱好者参与。'},
{max:'img/indeximg/big/3.jpg', min:'img/indeximg/small/3.jpg', url:'show.php?id=118', title:'2010亚太青少年国际器乐锦标赛颁奖晚会', con:'经过四天的角逐，2010亚太青少年国际器乐锦标赛于8月24晚7：30举行了闭幕式演出'},
{max:'img/indeximg/big/4.jpg', min:'img/indeximg/small/4.jpg', url:'show.php?catid=30&&id=119', title:'APBA邀请美国专家五重奏', con:'应亚太国际器乐联盟组委会邀请，美国"大使"铜管五重奏专家于深圳宝安区新安影剧院举行音乐会，图为美国的五位专家。'},
{max:'img/indeximg/big/5.jpg', min:'img/indeximg/small/5.jpg', url:'show.php?catid=30&&id=119', title:'APBA邀请美国专家五重奏',con:'美国"大使"铜管五重奏专家与朱文博秘书长一起到深圳南山中学、花园学校、育才中学等学校指导同学们，并与孩子们合影留念。'},
{max:'img/indeximg/big/6.jpg', min:'img/indeximg/small/6.jpg', url:'show.php?catid=30&&id=119', title:'APBA邀请美国专家五重奏',con:'六月十四日和六月十五日晚八点，美国"大使"铜管五重奏专家受APBA管盟组委会的邀请在深圳宝安区新安影剧院举行了音乐会，图为专家演奏后与凌冰老师一起合影留念。'}
];

function Focus(){ this.initialize.apply(this, arguments) };
Focus.prototype = {
initialize: function(imgObj, focus, tim, speed){
this.imgs= imgObj;
this.tim= tim*1000||2000;
this.speed= speed||0.3;
this.img_m= null;// 大图
this.img_m2= null;// 大图2
this.lis= [];// 小图列表
this.mask= null;// 蒙板
this.title= null; // 标题
this.con= null;// 内容
this.cur= 0;// 当前位置
this.t= null; // 整体计时
this.tm= null;// mask位置
this.ti= null;// img 切换
this.stoped= true;// 停止状态
this.tem= 0;// 临时数据
this.loaded= {imgs:[], num:0};// 加载进度
this.getElement(document.getElementById(focus));
this.preload();
},
preload: function(){
for(var i=0; i<this.imgs.length; i++){
this.loaded.imgs[i]= new Image();
this.loaded.imgs[i].onload= this.load_num.bind(this);
this.loaded.imgs[i].src= this.imgs[i].max;
}
},
load_num: function(){
this.loaded.num++;
if(this.loaded.num == this.imgs.length)
this.start();
},
getElement: function(focus){ // 获得蒙板，小图列表，标题/内容容器等。。。
var ds = focus.getElementsByTagName('div');
for(var i=0; i<ds.length; i++)
switch(ds[i].className){
    case 'f_img_roll': 
    this.img_m    = document.createElement('img');
    this.img_m2    = document.createElement('img');
    this.img_m.src    = this.imgs[0].max;
    this.img_m.style.zIndex    = 101;
    this.img_m2.style.zIndex= 100;
    ds[i].onmouseover    = this.stop.bind(this);
    ds[i].onmouseout    = this.start.bind(this);
    ds[i].appendChild(this.img_m);
    ds[i].appendChild(this.img_m2);
    
    case 'f_img_tree':
    this.mask    = document.createElement('div');
    this.mask.onmouseover    = this.stop.bind(this);
    this.mask.onmouseout    = this.start.bind(this);
    var ul        = document.createElement('ul');
    var oThis    = this;
    for(var n=0; n<this.imgs.length; n++){
    this.lis[n]    = document.createElement('li');
    this.lis[n].n    = n;
    this.lis[n].innerHTML= '<img src="'+this.imgs[n].min+'" />';
    this.lis[n].onmouseover= function(){ this.style.border = "1px solid #cc0000"; }
    this.lis[n].onmouseout= function(){ this.style.border = "1px solid #0066cc"; }
    this.lis[n].onclick    = function(){ if(oThis.lis[oThis.cur]!= this) oThis.nextFrame.call(oThis, this.n); }
    ul.appendChild(this.lis[n]);
    };
    ds[i].appendChild (this.mask);
    ds[i].appendChild (ul);
    break;
    case 'title':
    this.title    = ds[i]; 
    this.title.innerHTML    = this.imgs[0].title;
    this.title.parentNode.onmouseover= this.stop.bind(this);
    this.title.parentNode.onmouseout= this.start.bind(this);
    break;
    case 'con':
    this.con    = ds[i];
    this.con.innerHTML    = this.imgs[0].con;
    break;
}
},

nextFrame: function(n){
if(this.t)clearTimeout(this.t);
if(this.tm)clearInterval(this.tm);
if(this.ti)clearInterval(this.ti);
if(n)this.cur = n-1;
var top = 0, posTo = 0;
if(n!=0 && this.imgs[this.cur+1]){
posTo = this.lis[this.cur+1].offsetTop;
this.cur = this.cur+1;
}else{
posTo = this.lis[0].offsetTop;
this.cur = 0;
}
this.tem = this.mask.offsetTop;
this.tem > posTo? top = 1 : top = 0;
this.tm = setInterval(this.moveTo.bind(this, top, posTo), 25);
},

moveTo: function(top, posTo){
if(!top){
if((this.tem+2) >= posTo+1){
    clearInterval(this.tm);
    this.mask.style.top = posTo+'px';
    this.img_swap();
    return;
}
this.tem += (posTo - this.tem) * this.speed
}else{
if((this.tem-2) <= posTo-1){
    clearInterval(this.tm);
    this.mask.style.top = posTo+'px';
    this.img_swap();
    return;
}
this.tem -= (this.tem-posTo)*this.speed;
}
this.mask.style.top = this.tem+'px';
},
img_swap: function(){
var t, b;
if(this.img_m.style.zIndex > this.img_m2.style.zIndex){
t = this.img_m;
b = this.img_m2;
}else{
t = this.img_m2;
b = this.img_m;
}
this.title.innerHTML= '<a href="'+this.imgs[this.cur].url+'">'+this.imgs[this.cur].title+'</a>';

this.con.innerHTML= this.imgs[this.cur].con;
b.src    = this.imgs[this.cur].max;
/MSIE/.test(navigator.userAgent) ? 
this.tem = t.style.filter ? t.style.filter.replace(/^.+=(\d+).+$/,'$1') : 100
: this.tem = t.style.opacity ? t.style.opacity*100 : 100;
if(this.ti)clearInterval(this.ti);
this.ti= setInterval(this.img_hid.bind(this, t, b), 25);
},
img_hid: function(t,b){
this.tem -= 7;
if (/MSIE/.test(navigator.userAgent))
t.style.filter= 'alpha(opacity='+this.tem+')';
else
t.style.opacity = this.tem/100;
if(this.tem <=0){
clearInterval(this.ti);
var tz= t.style.zIndex;
var bz= b.style.zIndex;
t.style.zIndex= bz
b.style.zIndex= tz;
if (/MSIE/.test(navigator.userAgent))
    t.style.filter= 'alpha(opacity=100)';
else
    t.style.opacity= 1;
if(this.stoped) return;
this.start(); // 继续循环
}
},
start: function(){
if(this.t) clearTimeout(this.t);
this.t= setTimeout(this.nextFrame.bind(this, null), this.tim);
this.stoped = false;
},
stop: function(){
clearTimeout(this.t);
this.stoped = true;
}
}
//以下部分与caidan.js冲突，需要删去，如不需要右边菜单效果时，需要加上一下代码，否则中间图片不显示
/*
window.onload = function(){
var focus = new Focus(imgs,'focus_m');
//focus.start();
}
*/
