﻿if(!EWS.Slider){
   EWS.Slider = {};
};

/**
 * Slider组件
 */

EWS.Slider.SliderPhoto_1 = function(config){
	this.config = config;
	this.objId = "#"+config.objId;
	this.time = parseInt(config.time+'000'); //轮播秒数
	this.amount = config.amount; //图片个数
	this.effect = config.effect; //图片轮播效果
	this.border = config.border; //图片边框颜色
	this.dataList = config.dataList;
	this.index = 0;
	this.timeID;
	this.maxIndex= this.config.amount.length;
	var _this = this;

    var a = $('#'+this.config.objId+' ul a');
	var len = a.length;
	for(var i=0;i<len;i++){
	    if(a[i].href=='http:///#'||a[i].href == window.location.href+"#"){
	       a[i].removeAttribute("href");
	    }
	}
    this.getImgInfo();
};
	
EWS.Slider.SliderPhoto_1.prototype = {
	runChangeImg : function(){
		var _this = this;	
		var data = $('#'+this.config.objId+' ul li');	
		var len = _this.amount > data.length ? data.length : _this.amount;//判断图片数量长度
		if(_this.index>=len){
			_this.index=0;
		}	
		_this.changeImg(_this.index%len);
		this.index++;	
		
	}	
	//定时播放图片
	 ,playImg : function(){
	 	var _this = this;
		this.timeID=setInterval(function(){
			_this.runChangeImg(_this);
		},this.time);
	 }
	//图片数据及图片播放效果等,于runChangeImg调用轮播
	,changeImg : function(){
		var i = this.index;		
		var obj = $(this.objId+' ul li');
		var objA = $(this.objId+' ul li a');

		$(this.objId).find('.block').removeClass();	
       	obj.eq(i).addClass("block"); 
//		$(this.objId+" .sliderText a:first").attr('title',objA[i].title)
//											.attr('href',objA[i].href);	
		if(objA[i].href =='http:///#'||objA[i].href == window.location.href+"#"){
			$(this.objId+" .sliderText a:first").attr('title',objA[i].title);
		}else{
			$(this.objId+" .sliderText a:first").attr('title',objA[i].title)
									.attr('href',objA[i].href);	
		}
		$(this.objId+" .sliderText strong").html(objA[i].title)
										   .css({opacity : '0.4','bottom' : '-50px'})
							    		   .animate({opacity : '1',bottom : '+=50px'}); 
		$(this.objId+" p.amount a").removeClass();
		$(this.objId+" p.amount a").eq(i).addClass(" selected");
		
		//图片效果
		var img = $(this.objId+' li.block img');
		var w = img.width();
		var h = img.height();
		switch (this.effect) {
			case "fade" ://淡出淡入
			img.css('opacity','0.2').fadeIn('normal').animate({opacity:'1'},'normal');
			break;
			
			case "shrink" ://缩放
			img.css({width:'0px',height:'0px'}).animate({opacity:'0.5'},'fast').animate({opacity:'1',width:w,height:h});
			break;
			
			case "leftMove" ://右移动
			img.css({opacity:'0.1',left:'-1950px'}).fadeIn('3000').animate({opacity:'1',left:'0px'},'normal');
			break;
			
			case "rightMove" ://左移动
			img.css({opacity:'0.1',right:'-1950px'}).fadeIn('3000').animate({opacity:'1',right:'0px'},'normal');
			break;
		};
	 }	 
	 //点击A时，出现相对应的图片
	 ,clickA : function(){
	 	var _this = this;
		$(this.objId+" p.amount a").each(function(i){
			$(this).click(function(event){
				event.preventDefault();
				_this.index=$(this).html()-1;
				_this.changeImg(_this.index%_this.maxIndex);
				_this.pauseChangeImg();
				_this.index+=1;
			}); 
		});
	 }			 	
	,pauseChangeImg : function(){
		clearInterval(this.timeID);
		this.playImg(this);
	}	
	//图片等比例缩放
	,getImgInfo :function(){
		var data = $('#'+this.config.objId+' ul li img');	
	 	var imgList = [];  
		var l = this.config.amount > data.length ? data.length : this.config.amount;//判断图片数量长度
		this.config.imgLen = l;
   	 	for(var j=0;j<l; j++){
   	 	 	var newId = this.config.objId+'_'+j;
   	 	 	imgList.push({src:data[j].src,id:newId});
   	 	};
		this.setImgSize(imgList);
	}
	,setImgSize : function(imgList){
		var _this = this;
		var imgW =  $('#'+this.config.objId).width();
		var imgH =  $('#'+this.config.objId).height();
		new EWS.PreLoadImage({
			 path:""
			,arrSrc:imgList
			,maxWidth:imgW
			,maxHeight:imgH
			,scope:this
			,complete:function(){_this.waitingSetSize();}
			,success:function(obj){_this.setImage(obj,imgW,imgH)}
		});
	}
	
	,setImage : function(img,width,height){
		//获得图片原始宽度与高度
		var originalImg = new Image();
		originalImg.src = img.src;
		var originalWidth = originalImg.width;
		var originalHeight = originalImg.height;
//		console.log(originalHeight);
		
		//根据原始宽度与高度设置图片垂直居中所需要的偏移位置
		//先判断样式类型
		var scale = this.getImageScale(originalWidth,originalHeight,width,height);
		$('#'+img.id).css({position:'relative',top:(height-scale[1])/2});
	}
	
	,getImageScale : function(originalWidth , originalHeight , maxWidth , maxHeight){
		/**
	     * 计算出比例值，若含有小数点则取出小数点两位
	     * @param {Number} num1 原始值
	     * @param {Number} num2　参考值
	     * @return {Number}
	     */
	    var _CalculateScale = function(num1 , num2){
	    	var Temp = num2 / num1;
			
			if(Temp.length > 1){
				return num2;
			}else{
				return parseFloat(Temp.toString().substring(0,4));
			};
	    };
	
		if(maxWidth==maxHeight){//最大高度==最大宽度
			if(originalWidth>originalHeight){
				var wScale =  _CalculateScale(originalWidth , maxWidth);//计算出最大高度的比例，取小数点两位值
				if(wScale<=1){
					newWidth = maxWidth;
					newHeight = wScale*originalHeight;
				}else{
					newHeight = originalWidth;
	        		newWidth = originalHeight;
				}
			}else if(originalWidth<originalHeight){
				var hScale = _CalculateScale(originalHeight ,maxHeight);//计算出最大宽度的比例，取小数点两位值
				if(hScale<=1){
					newHeight = maxHeight;
					newWidth = hScale*originalWidth;
				}else{
					newHeight = originalHeight;
					newWidth = originalWidth;
				}
			}else{//原始长宽相等
				var wScale = _CalculateScale(originalWidth ,maxWidth);//计算出最大宽度的比例，取小数点两位值
				if(wScale<=1){
					newHeight = originalWidth * wScale;
				    newWidth = newHeight;
				}else{
					newHeight = originalWidth;
				    newWidth = newHeight;
				}
			}
		}else if(maxWidth>maxHeight){//最大宽度>最大高度
			if(originalWidth > originalHeight){
				var wScale = _CalculateScale(originalWidth , maxWidth);//计算出最大宽度的比例，取小数点两位值
				if(wScale<=1){
		        	if(originalHeight * wScale>maxHeight){
		        		newHeight = maxHeight;
		        		newWidth = _CalculateScale(originalHeight , maxHeight)*originalWidth;
		        	}else{
		        		newWidth = maxWidth;
		        		newHeight = originalHeight * wScale;
		        	}
		        }else{
		        	newWidth = originalWidth;
		        	newHeight = originalHeight;
		        }
			}else if(originalWidth == originalHeight){
				var wScale = _CalculateScale(originalWidth , maxWidth);//计算出最大宽度的比例，取小数点两位值
				if(wScale<=1){
					newHeight = maxHeight;
					newWidth = _CalculateScale(originalHeight , maxHeight)*originalWidth;
				}else{
					if(originalHeight>maxHeight){
						newWidth = _CalculateScale(originalHeight , maxHeight)*originalWidth;
			        	newHeight = _CalculateScale(originalHeight , maxHeight)*originalHeight;
					}else{
						newWidth = originalWidth;
			        	newHeight = originalHeight;
					}
				}
			}else{//原始宽度<原始高度
				var hScale = _CalculateScale(originalHeight , maxHeight);
				if(hScale<=1){
					if(hScale*originalWidth>maxWidth){
						newWidth = maxWidth;
						newHeight =  _CalculateScale(originalWidth , maxWidth)*originalHeight;
					}else{
						newWidth = hScale*originalWidth;
		        		newHeight = maxHeight;
					}
				}else{
						newWidth = originalWidth;
			        	newHeight = originalHeight;
				}
			}
		}else{//最大宽度<最大高度
			if(originalWidth >= originalHeight){
				var wScale = _CalculateScale(originalWidth , maxWidth);//计算出最大宽度的比例，取小数点两位值
				if(wScale<=1){
					newWidth = wScale*originalWidth;
		        	newHeight = wScale*originalHeight;
				}else{
					newWidth = originalWidth;
		        	newHeight = originalHeight;
				}
			}else if(originalWidth < originalHeight){
				var hScale = _CalculateScale(originalHeight , maxHeight);
				if(hScale*originalWidth>maxWidth){
					newWidth = maxWidth;
					newHeight = _CalculateScale(originalWidth , maxWidth)*originalHeight;
				}else{
					newWidth = originalWidth *hScale;
					newHeight = originalHeight*hScale;
				}
			}
		}
		return [newWidth , newHeight];
	}
	
	,waitingSetSize : function(){
			this.changeImg();
			this.index++;
			this.playImg();
			this.clickA();
	} 
};
