﻿divCycle=function(){
	var oComponent=this;
	var oDefConfig={
sTabClass:"productCycleTab",
sItemClass:"productCycleItem",
oParentNode:document.body,
sSwitchEvent:"click",
iDelayTime:3000,
iCycleTimes:1,
sCurrentClass:"current",
sOrder:"asc"
	}
var aTabs,aItems,oParent;
var iDelayTime;
var oTimer;
var currentIndex=0;
var  dataLength;
var iCycleTimes=0;
	oComponent.init=function(oConfig){
		if(!oConfig && !YL.isObject(oConfig)){oConfig={}}
		( YL.isString(oConfig.sTabClass) ) ? oDefConfig.sTabClass = oConfig.sTabClass : null;
		( YL.isString(oConfig.sItemClass) ) ? oDefConfig.sItemClass = oConfig.sItemClass : null;
		( YL.isObject(oConfig.oParentNode) ) ? oDefConfig.oParentNode = oConfig.oParentNode : null;
		( YL.isString(oConfig.sSwitchEvent) ) ? oDefConfig.sSwitchEvent = oConfig.sSwitchEvent : null;
		( YL.isNumber(oConfig.iDelayTime) ) ? oDefConfig.iDelayTime = oConfig.iDelayTime : null;
		( YL.isNumber(oConfig.iCycleTimes) ) ? oDefConfig.iCycleTimes = oConfig.iCycleTimes : null;
		( YL.isString(oConfig.sCurrentClass) ) ? oDefConfig.sCurrentClass = oConfig.sCurrentClass : null;
		( YL.isString(oConfig.sOrder) ) ? oDefConfig.sOrder = oConfig.sOrder : null;
		
		
		
		aTabs = YUD.getElementsByClassName(oDefConfig.sTabClass,'*',oDefConfig.oParentNode);
		aItems = YUD.getElementsByClassName(oDefConfig.sItemClass,'*',oDefConfig.oParentNode);
		oParent=oDefConfig.oParentNode;
		dataLength=Math.min(aTabs.length,aItems.length);
		if(oDefConfig.sOrder=="desc"){currentIndex=dataLength-1;}
		
		YUE.on(aTabs,"mouseover",oComponent.stop);
		YUE.on(aTabs,"mouseout",oComponent.start);
		YUE.on(aItems,"mouseover",oComponent.stop);
		YUE.on(aItems,"mouseout",oComponent.start);
		for(i=0;i<dataLength;i++){
			YUE.on(aTabs[i],oDefConfig.sSwitchEvent,oComponent.show,i);
		}
		oComponent.start();

		}
		
		oComponent.start = function(){
			clearInterval(oTimer);
			oTimer = setInterval(switchItem,oDefConfig.iDelayTime);
			}
			
		oComponent.stop = function(){
			clearInterval(oTimer);
			}
		
	  oComponent.show = function(e,iIndex){
	  	if(!YL.isNumber(iIndex) || iIndex<0 || iIndex>=dataLength ){return false;}
	  	currentIndex=iIndex;
	  	var f1 = function(element){
	  		return YUD.removeClass(element,oDefConfig.sCurrentClass);
	  	}
	  	YUD.batch(aTabs, f1);
	  	YUD.addClass(aTabs[iIndex],oDefConfig.sCurrentClass);
	  	YUD.setStyle(aItems,"display","none");
	  	YUD.setStyle(aItems[iIndex],"display","");
	  	
	  }
	  
	  var switchItem =function(){
	  oComponent.show(null,currentIndex);
	  
	  
	  	  	if(iCycleTimes>=oDefConfig.iCycleTimes){
				 			oComponent.stop();				 			
				 			YUE.removeListener(aTabs,"mouseover",oComponent.stop);
							YUE.removeListener(aTabs,"mouseout",oComponent.start);
							YUE.removeListener(aItems,"mouseover",oComponent.stop);
							YUE.removeListener(aItems,"mouseout",oComponent.start);
							
							switch (oDefConfig.sOrder){
	  						case("asc"): {}
								case("desc"): {	break;}
	  					}
							
		}
	  
	  
	  switch (oDefConfig.sOrder){
	  	case("asc"): {
				  currentIndex++;
				 	if(currentIndex>=dataLength){
				 		currentIndex=0;
				 		iCycleTimes++;
				 	}
				 	break;
				}
				case("desc"): {
				  currentIndex--;
				 	if(currentIndex<0){
				 		currentIndex=dataLength-1;
				 		iCycleTimes++;
				 	}
				 	break;
				}

	  	}
	  	

		
	  }
	
	}