var stopEvent = function(e){
	e = e||window.event;
	if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble = true;}
	if(e.preventDefault){e.preventDefault();}else{e.returnValue = false;}
};

var dySwitch = function(sEvent,sEventHandle,bStopEvent,sDir,iSpeed){//参数1:切换方式;参数2:触发切换的事件;参数3:是否阻止Event;参数4:滚动方向;参数5:滚动速度
	this.btn = [];
	this.content = [];
	this.scrollbox = null;
	this.nowIndex = 0;
	this.sEvent = sEvent||'switch';//switch:默认切换效果;scroll滚动切换效果
	this.fEvent = (this.sEvent=='scroll')?'scroll':'show';
	this.sEventHandle = (sEventHandle==null)?'click':sEventHandle;
	this.bStopEvent = (bStopEvent==null)?true:bStopEvent;
	this.dir = sDir||'up';
	this.speed = iSpeed||1;
	this.timer = null;
}
dySwitch.prototype = function(){
	if(!Function.prototype.bind){
		Function.prototype.bind = function(obj){
			var owner = this,args = Array.prototype.slice.call(arguments),callobj = Array.prototype.shift.call(args);
			return function(e){e=e||top.window.event||window.event;owner.apply(callobj,args.concat([e]));};
		};
	}
	return {
		addSw:function(dBtn,dContent){
			if(dBtn && dContent){
				var iLength = this.btn.length;
				(iLength>0) && (dContent.style.display='none',1) || (dBtn.className='on')
				with({i:iLength}){
					dBtn['on'+this.sEventHandle] = this[this.fEvent].bind(this,i);
					if(this.bStopEvent&&this.sEventHandle!='click'){dBtn.onclick = function(e){e = e||window.event;stopEvent(e);}}
				}
				this.btn.push(dBtn);
				this.content.push(dContent);
			}
		},
		playFilter:function(dobj){
			if(!dobj||!dobj.filters||!dobj.filters.length){return false;}
			//dobj.filters[0].Transition=23; 随机切换滤镜开启
			dobj.filters[0].apply();
			dobj.filters[0].Play();
		},
		doscroll:function(indexA,indexB){//元素滚动
			if(!indexA&&!indexB){return false;}
			var speed = this.speed,dir = this.dir,domA = this.content[indexA],domB = this.content[indexB],domP = this.scrollbox;
			this.btn[indexA].className='';
			this.btn[indexB].className='on';
			this.nowIndex = indexB;
			domP.style.overflow = 'hidden';
			var iw = parseInt(domP.offsetWidth,10),ih = parseInt(domP.offsetHeight,10);
			if(dir=='up'&&indexA>indexB){dir = 'down';}
			if(dir=='left'&&indexA>indexB){dir = 'right';}
			switch(dir){
				case 'up':
				case 'down':
					domB.style.display = '';
					if(dir=='down'){domP.scrollTop = ih;speed = -speed;}
					!function(){
						if(ih<speed){
							domA.style.display = 'none';
							domP.scrollTop = 0;
							return false;
						}
						domP.scrollTop += speed;
						ih -= Math.abs(speed);
						window.setTimeout(arguments.callee,1);
					}();
					break;
				case 'left':
				case 'right':
					domB.style.display = '';
					if(dir=='right'){domP.scrollLeft = iw;speed = -speed;}
					!function(){
						if(iw<speed){
							domA.style.display = 'none';
							domP.scrollLeft = 0;
							return false;
						}
						domP.scrollLeft += speed;
						iw -= Math.abs(speed);
						window.setTimeout(arguments.callee,1);
					}();
					break;
				default:break;
			}
		},
		scroll:function(iIndex,e){//滚动切换
			e = e||window.event;
			if(e&&e.type=='click'){stopEvent(e);}
			var nowIndex = this.nowIndex,btnl = this.btn.length;
			if(nowIndex==iIndex){return false;}
			if(iIndex<0 || iIndex>=btnl){return false;}
			if(!this.scrollbox){
				this.scrollbox = this.content[nowIndex].parentNode;
				if(this.dir=='left'||this.dir=='right'){
					var domP = this.scrollbox;
					var iw = parseInt(domP.offsetWidth,10),ih = parseInt(domP.offsetHeight,10);
					var dFragm = document.createDocumentFragment();
					var dbox = document.createElement('div');
					dFragm.appendChild(dbox);
					dbox.style.cssText = 'width:'+iw*this.btn.length+'px;overflow:hidden;zoom:1;';
					for(var i=0;i<btnl;i++){
						this.content[i].style.float = 'left';
						this.content[i].style.cssFloat = 'left';
						dbox.appendChild(this.content[i]);
					}
					domP.innerHTML = '';
					domP.appendChild(dFragm);
				}
			}
			if(nowIndex<iIndex){
				for(var i=nowIndex;i<iIndex;i++){
					this.doscroll(i,i+1);
				}
			}
			if(nowIndex>iIndex){
				for(var i=nowIndex;i>iIndex;i--){
					this.doscroll(i,i-1);
				}
			}
		},
		show:function(iIndex,e){//直接切换
			e = e||window.event;
			if(e&&e.type=='click'){stopEvent(e);}
			var nowIndex = this.nowIndex;
			if(nowIndex!=iIndex) this.btn[nowIndex].className='';this.content[nowIndex].style.display='none';
			if(iIndex>-1 && iIndex<this.btn.length) this.btn[iIndex].className='on';this.playFilter(this.content[iIndex]);this.content[iIndex].style.display='';
			this.nowIndex = iIndex;
		},
		autoPlay:function(iSpeed){//自动切换
			var os = this,tsl = this.btn.length;
			var ias = function(){
				var ni = (os.nowIndex >= tsl-1)?0:os.nowIndex+1;
				os[os.fEvent](ni);
				os.timer = window.setTimeout(arguments.callee,iSpeed);
			};
			var wct = function(){window.clearTimeout(os.timer);};
			var wst = function(){os.timer = window.setTimeout(ias,iSpeed);};
			var wcst = function(){window.clearTimeout(os.timer);os.timer = window.setTimeout(ias,iSpeed);};
			for(var i=0;i<tsl;i++){
				if(document.attachEvent){
					if(this.sEventHandle!='mouseover'){
						this.btn[i].attachEvent('on'+this.sEventHandle,wcst);
					}else{
						this.btn[i].attachEvent('on'+this.sEventHandle,wct);
						this.btn[i].attachEvent('onmouseout',wst);
					}
				}else{
					if(this.sEventHandle!='mouseover'){
						this.btn[i].addEventListener(this.sEventHandle,wcst,true);
					}else{
						this.btn[i].addEventListener(this.sEventHandle,wct,true);
						this.btn[i].addEventListener('mouseout',wst,true);
					}
				}
			}
			this.timer = window.setTimeout(ias,iSpeed);
		}
	}
}();

var doWhileExists = function(id,foo){
	var dTmp = document.getElementById(id);
	if(dTmp){foo(dTmp);}
};

//focusImg实例
doWhileExists('focusimg',function(dFi){
	var FI = new dySwitch();
	var dHd = dFi.getElementsByTagName('DIV')[0];
	var dBd = dFi.getElementsByTagName('DIV')[1];
	var dFiB = dHd.getElementsByTagName('A');
	var dFiC = dBd.getElementsByTagName('LI');
	for(var n=0;n<dFiB.length;n++){
		FI.addSw(dFiB[n],dFiC[n]);
	}
	FI.autoPlay(8000);
});

//focusImg实例2
doWhileExists('focusimg2',function(dFi2){
	var FI2 = new dySwitch('switch','mouseover');
	var dFiB2 = dFi2.getElementsByTagName('DT');
	var dFiC2 = dFi2.getElementsByTagName('DD');
	for(var n=0;n<dFiB2.length;n++){
		FI2.addSw(dFiB2[n],dFiC2[n]);
	}
	FI2.autoPlay(3000);
});

//focusImg实例3
doWhileExists('focusimg3',function(dFi3){
	var FI3 = new dySwitch('switch','mouseover');
	var dFiB3 = dFi3.getElementsByTagName('DT');
	var dFiC3 = dFi3.getElementsByTagName('DD');
	for(var n=0;n<dFiB3.length;n++){
		FI3.addSw(dFiB3[n],dFiC3[n]);
	}
	FI3.autoPlay(3000);
});

//scroll实例
var SL;
doWhileExists('scroll',function(dSl){
	SL = new dySwitch('scroll','click','','left',25);
	var dSlHd = dSl.getElementsByTagName('DIV')[0];
	var dSlBd = dSl.getElementsByTagName('DIV')[1];
	var dSlB = dSlHd.getElementsByTagName('A');
	var dSlC = dSlBd.getElementsByTagName('UL');
	for(var n=0;n<dSlB.length;n++){
		SL.addSw(dSlB[n],dSlC[n]);
	}
	SL.autoPlay(3000);
});

//tabStrip实例
doWhileExists('tabstrip',function(dTs){
	var TS = new dySwitch('switch','mouseover',false);
	var dTsHd = dTs.getElementsByTagName('DIV')[0];
	var dTsBd = dTs.getElementsByTagName('DIV')[1];
	var dTsB = dTsHd.getElementsByTagName('A');
	var dTsC = dTsBd.getElementsByTagName('UL');
	for(var n=0;n<dTsB.length;n++){
		TS.addSw(dTsB[n],dTsC[n]);
	}
});
