/********************************************************************************************************
 * D-ImageChange
 *----------------------------------------------------------------------------------------------------
 * @Desc å›¾ç‰‡è½®æ¢æ’ä»¶
 *----------------------------------------------------------------------------------------------------
 * @Author D.å¤äº¦çŸ¥éž
 * @Email DeclanZhang@gmail.com
 * @QQ 29540200
 * @Blog http://onblur.javaeye.com
 * @Date 2009-10-19
 * @Version 1.1 
 * @JQueryVersion 1.3.2
 * 
 * @update v1.1 å¢žåŠ æ¸…ç©ºåŽŸå§‹å†…å®¹åŠŸèƒ½,ä»¥å…é¡µé¢åŠ è½½å®Œæˆä¹‹å‰æ˜¾ç¤ºå¤§ç‰‡ç©ºç™½
 * 		   v1.2 ä¿®æ­£IE6æ¯æ¬¡ä»ŽæœåŠ¡å™¨è¯»å–èƒŒæ™¯å›¾ç‰‡çš„BUG
 **/

// ä¿®æ­£IE6æ¯æ¬¡ä»ŽæœåŠ¡å™¨è¯»å–èƒŒæ™¯å›¾ç‰‡çš„BUG



(function($){

jQuery.fn.extend({
	
	d_imagechange:function(setting){
		
		var config = $.extend({
			bg:true,						// æ˜¯å¦èƒŒæ™¯è‰²
			title:true,						// æ˜¯å¦æœ‰æ ‡é¢˜
			desc:true,						// æ˜¯å¦æœ‰æè¿°
			btn:true,						// æ˜¯å¦æ˜¾ç¤ºæŒ‰é’®
			repeat:'no-repeat',				// é‡å¤è§„åˆ™ 'no-repeat' 'repeat-x' 'repeat-y' 'repeat'
			
			bgColor:'#000',					// èƒŒæ™¯è‰²
			bgOpacity:0.5,					// èƒŒæ™¯é€æ˜Žåº¦
			bgHeight:29,					// èƒŒæ™¯é«˜
			
			titleSize:14,					// æ ‡é¢˜æ–‡å­—å¤§å°
			titleFont:'Verdana,å®‹ä½“',		// æ ‡é¢˜æ–‡æœ¬å­—ä½“
			titleColor:'#FFF',				// æ ‡é¢˜æ–‡æœ¬é¢œè‰²
			titleTop:4,						// æ ‡é¢˜ä¸Šè¾¹è·
			titleLeft:4,					// æ ‡é¢˜å·¦è¾¹è·
			
			descSize:12,					// æè¿°æ–‡å­—å¤§å°
			descFont:'Verdana,å®‹ä½“',			// æè¿°æ–‡æœ¬å­—ä½“
			descColor:'#FFF',				// æè¿°æ–‡æœ¬é¢œè‰²
			descTop:2,						// æè¿°ä¸Šè¾¹è·
			descLeft:4,						// æè¿°å·¦è¾¹è·
			
			btnColor:'#FFF',				// æŒ‰é’®é¢œè‰²1 
			btnOpacity:1,					// æœªé€‰ä¸­æŒ‰é’®é€æ˜Žåº¦
			btnFont:'Verdana',				// æŒ‰é’®æ–‡æœ¬å­—ä½“
			btnFontSize:12,					// æŒ‰é’®æ–‡å­—å¤§å°(æ³¨æ„:Chromeæœ‰é»˜è®¤æœ€å°å­—å·çš„é™åˆ¶)
			btnFontColor:'#000',			// æŒ‰é’®æ–‡æœ¬é¢œè‰²
			btnText:true,					// æ˜¯å¦æ˜¾ç¤ºæ–‡æœ¬
			btnWidth:18,					// æŒ‰é’®å®½
			btnHeight:18,					// æŒ‰é’®é«˜
			btnMargin:4,					// æŒ‰é’®é—´è·
			btnTop:4,						// æŒ‰é’®ä¸Šè¾¹è·
			
			playTime:3000,					// è½®æ¢é—´éš”æ—¶é—´,å•ä½(æ¯«ç§’)
			animateTime:1000,				// åŠ¨ç”»æ‰§è¡Œæ—¶é—´,å•ä½(æ¯«ç§’)
			animateStyle:'o',				// åŠ¨ç”»æ•ˆæžœ:'o':æ¸æ˜¾ 'x':æ¨ªå‘æ»šåŠ¨ 'y':çºµå‘æ»šåŠ¨ 'show':åŽŸåœ°æ”¶ç¼©ä¼¸å±• 'show-x':æ¨ªå‘æ”¶ç¼©ä¼¸å±• 'show-y':çºµå‘æ”¶ç¼©ä¼¸å±•' none':æ— åŠ¨ç”»
			width:747,						// å®½, ä¸è®¾å®šåˆ™ä»ŽDOMè¯»å–
			height:337						// é«˜, ä¸è®¾å®šåˆ™ä»ŽDOMè¯»å–
			
		},setting);
		
		return $(this).each(function(){
			var _this = $(this);
      
			var _w = config.width || _this.width();			// å®½
			var _h = config.height || _this.height();		// é«˜
			var _n = config.data.length;					// æ•°ç›®
			var _i = 0;										// å½“å‰æ˜¾ç¤ºçš„itemåºå·
			
			_this.empty()
				 .css('overflow','hidden')
				 .width(_w)
				 .height(_h);
			
			// åŠé€æ˜ŽèƒŒæ™¯
			if(config.bg){
			$('<div />').appendTo(_this)
						.width(_w)
						.height(config.bgHeight)
						.css('background-color',config.bgColor)
						.css('opacity',config.bgOpacity)
						.css('position','absolute')
						.css('marginTop',_h-config.bgHeight)
						.css('zIndex',3333);
			}
			
			// æ–‡å­—åŒº
			var _textArea = 
			$('<div />').appendTo(_this)
						.width(_w)
						.height(config.bgHeight)
						.css('position','absolute')
						.css('marginTop',_h-config.bgHeight)
						.css('zIndex',6666);
			// æŒ‰é’®åŒº
			var _btnArea = 
			$('<div />').appendTo(_this)
						.width(_w)
						.height(config.bgHeight)
						.css('position','absolute')
						.css('marginTop',_h-config.bgHeight)
						.css('marginLeft',_w-(config.btnWidth+config.btnMargin)*_n)
						.css('zIndex',9999)
						.css('display',config.btn?'block':'none');
			
			// æ’å…¥ç©ºdivä¿®æ­£IEçš„ç»å¯¹å®šä½BUG
			$('<div />').appendTo(_this);
			
			// å›¾ç‰‡åŒº
			var _imgArea = 
			$('<div />').appendTo(_this)
						.width('x,show-x'.indexOf(config.animateStyle)!=-1?_w*_n:_w)
						.height('y,show-y'.indexOf(config.animateStyle)!=-1?_h*_n:_h);			
	
			// åˆå§‹åŒ–å›¾ç‰‡ æ–‡å­— æŒ‰é’®
			$.each(config.data,function(i,n){
				$('<a />').appendTo(_imgArea)
						  .width(_w)
						  .height(_h)
						  .attr('href',n.href?n.href:'')
						  .attr('target',n.target?n.target:'')
						  .css('display','block')
						  .css('background-image','url('+n.src+')')
						  .css('background-repeat',config.repeat)
						  .css('display','block')
						  .css('float','x,show-x'.indexOf(config.animateStyle)!=-1?'left':'');
						  
				if(config.title){
				$('<b />').appendTo(_textArea)
						  .html(n.title?n.title:'')
						  .css('display',i==0?'block':'none')
						  .css('fontSize',config.titleSize)
						  .css('fontFamily',config.titleFont)
						  .css('color',config.titleColor)
						  .css('marginTop',config.titleTop)
						  .css('marginLeft',config.titleLeft);
				}
				
				if(config.desc){
				$('<p />').appendTo(_textArea)
						  .html(n.desc?n.desc:'')
						  .css('display',i==0?'block':'none')
						  .css('fontSize',config.descSize)
						  .css('fontFamily',config.descFont)
						  .css('color',config.descColor)
						  .css('marginTop',config.descTop)
						  .css('marginLeft',config.descLeft);
				}
				  
						  
				$('<a />').appendTo(_btnArea)
						  .width(config.btnWidth)
						  .height(config.btnHeight)
						  .html(config.btnText?i+1:'')
						  .css('fontSize',config.btnFontSize)
						  .css('fontFamily',config.btnFont)
						  .css('textAlign','center')
						  .css('display','block')
						  .css('float','left')
						  .css('overflow','hidden')
						  .css('marginTop',config.btnTop)
						  .css('marginRight',config.btnMargin)
						  .css('background-color',config.btnColor)
						  .css('opacity',i==0?1:config.btnOpacity)
						  .css('color',config.btnFontColor)
						  .css('cursor','pointer').addClass("numa")

			});
			
			// ä¿å­˜æ‰€æœ‰å…ƒç´ é›†åˆçš„å¼•ç”¨,æ–¹ä¾¿åœ¨äº‹ä»¶ä¸­ä½¿ç”¨
			var _bs = _btnArea.children('a');
			var _ts = _textArea.children('b');
			var _ds = _textArea.children('p');
			var _is = _imgArea.children('a');

			// é’ˆå¯¹ä¸åŒçš„åŠ¨ç”»æ•ˆæžœçš„é™„åŠ è®¾ç½®, ä¸»è¦æ˜¯blockçš„é—®é¢˜, è‹¥åœ¨åˆå§‹åŒ–æ—¶è®¾ç½®block:noneä¼šé€ æˆä¹‹åŽæ— blockæ•ˆæžœ
			if('o,show,none'.indexOf(config.animateStyle)!=-1){
				_is.not(':first').hide();
				_is.css('position','absolute');
			}
			
			// æ·»åŠ æŒ‰é’®äº‹ä»¶
			_bs.click(function(){
				var ii = _bs.index(this);
				if(ii==_i){return;}
          _this.find(".ona").removeClass("ona")
				 	 $(this).addClass("ona");
				_ts.eq(_i).css('display','none');
				_ts.eq(ii).css('display','block');
				_ds.eq(_i).css('display','none');
				_ds.eq(ii).css('display','block');
				_bs.eq(_i).css('opacity',config.bgOpacity);
				_bs.eq(ii).css('opacity',1)
				
				switch(config.animateStyle){
				case 'o' :
					_is.eq(_i).fadeOut(config.animateTime);
					_is.eq(ii).fadeIn(config.animateTime);
					break;
				case 'x' :
					_imgArea.animate({marginLeft:-ii*_w},config.animateTime);
					break;
				case 'y' :
					_imgArea.animate({marginTop:-ii*_h},config.animateTime);
					break;
				case 'show' :
				case 'show-x' :
				case 'show-y' :
					_is.eq(_i).hide(config.animateTime);
					_is.eq(ii).show(config.animateTime);
					break;				
				case 'none' :
					_is.eq(_i).hide();
					_is.eq(ii).show();
					break;				
				}
				_i = ii;
			});

			// æ·»åŠ è½®æ¢ä»»åŠ¡
			var _play = setInterval(play,config.playTime);
			
			function play(){
				_bs.eq((_i+1)%_n).click()
			}		
			// é¼ æ ‡è¿›å…¥äº‹ä»¶
			_this.mouseover(function(){
				clearInterval(_play);
			});
						
			// é¼ æ ‡ç¦»å¼€äº‹ä»¶
			_this.mouseout(function(){
				_play = setInterval(play,config.playTime);
			});
		});
	}
});
})(jQuery);
