/**
 * @author binli
 */
var vInterval;//延时对象
var vTimeout;
var slideData;//幻灯数据
var currentPoint = 0;//当前播放图片索引
var length; //array长度
var con; //主容器
var sidePoint;
var scrolling = true;
/**
 * @存储幻灯所需对象
 * @param {Number} imgWidth	图片宽度
 * @param {Number} imgHeight 图片高度
 * @param {Array} imgSrc
 * @param {Array} imgLink
 * @param {String} mainConId
 * @param {Array} mainControlBtn
 * @param {Number} delay
 * @param {Boolean} hasSideControl
 * @param {String} sideConId
 * @param {Array} sideControlBtn
 */
function slideData(imgWidth,imgHeight,imgSrc,imgLink,mainConId,mainControlBtn,delay,hasSideControl,sideConId,sideControlBtn,sideConHeight,simgSrc)
{
	this.imgWidth = imgWidth;
	this.imgHeight = imgHeight;
	this.imgSrc = imgSrc;
	this.imgLink = imgLink;
	this.simgSrc = simgSrc;
	this.mainConId = mainConId;
	this.mainControlBtn = mainControlBtn;
	this.delay = delay;
	this.hasSideControl = hasSideControl;
	this.sideConId = sideConId;
	this.sideControlBtn = sideControlBtn;	
	this.sideConHeight = sideConHeight;
}
/**
 * @创建幻灯类
 */
function createSilde(data)
{
	slideData = data;	
	con = $(slideData.mainConId);
}
createSilde.prototype.start = function(){
		
	//载入图片
	loadMainImg(slideData);
	
	//检测载入
	vInterval = setInterval('checkLoaded()',500);
	//边栏定位
	if(slideData.hasSideControl)
	{
		loadSmallImg();
		moveSideSmall();
	}	
	//绑定鼠标事件
	bindClickEvent();
	
}
/**
 * @ 检测载入
 */
function checkLoaded()
{
	//alert('check');
	if(con.children('a').length == length)
	{
		$('#waiting').hide();
		clearInterval(vInterval);
		//自动滚动
		startAutoScroll();
	}
}
/**
 * @ 载入大图片
 */
function loadMainImg(){	
	length = slideData.imgSrc.length;
	//alert(length);
	var imgArr = slideData.imgSrc;
	var urlArr = slideData.imgLink;
	for(var i=0;i<length;i++){
		var imgSrc = imgArr[i];
		var imgLinkTo = urlArr[i];
		var imgCon = $(slideData.mainConId);
		var img = new Image();
		img.id = 'img' + i;
		img.src = imgSrc;
		var aTag = document.createElement('a');
		aTag.href = imgLinkTo;
		$(aTag).append(img);
		imgCon.append(aTag);	
	}
}
/**
 * 载入缩略图 
 */
function loadSmallImg()
{
	var imgArr = slideData.imgSrc;
	var smallImgArr = slideData.simgSrc;

	for (var i = 0; i < smallImgArr.length; i++) 
	{
		var img = new Image();
		img.src = smallImgArr[i];
		img.id = 'small' + i;
		img.style.opacity = 0.5;
		$(img).click(function(e){
			//if(scrolling){
			//	stopAutoScroll();
			//}
			setVLayout();
			var idStr = this.id;
			idStr = idStr.substr(5,1);
			currentPoint = idStr - 0;
			vTimeout = window.clearTimeout(vTimeout);
			vInterval = window.clearInterval(vInterval);
			vAni();
			moveSideSmall();
			//重新开始滚动
			//startAutoScroll();
			vTimeout = window.setTimeout('startAutoScroll()',3000);
		});
		$(slideData.sideConId).append(img);
	}	
}
/**
 * 绑定点击事件
 */
function bindClickEvent()
{
	var leftBtnId = slideData.mainControlBtn[0];
	var rightBtnId = slideData.mainControlBtn[1];	
	$(leftBtnId).click(function(e){
		if(scrolling){
			stopAutoScroll();
		}
		if(con.width() == slideData.imgWidth){
			//alert('设置水平布局');
			setHLayout();
		}
		currentPoint--;
		if(currentPoint<0)
			currentPoint = length-1;	
		hAni();
		if(slideData.hasSideControl)
			moveSideSmall();
		
		//重新开始滚动
		startAutoScroll();
	});
	$(rightBtnId).click(function(e){
		if(scrolling){
			stopAutoScroll();
		}
		if(con.width() == slideData.imgWidth){
			//alert('设置水平布局');
			setHLayout();
		}
		currentPoint++;
		if(currentPoint == length)
			currentPoint = 0;			
		hAni();
		if(slideData.hasSideControl)
			moveSideSmall();
		//重新开始滚动
		startAutoScroll();
	});
	if (slideData.hasSideControl) {
		var preBtnId = slideData.sideControlBtn[0];
		var nextBtnId = slideData.sideControlBtn[1];
		
		$(preBtnId).click(function(e){
			if (scrolling) {
				stopAutoScroll();
			}
			if (con.width() != slideData.imgWidth) {
				//alert('设置垂直布局');
				setVLayout();
			}
			currentPoint--;
			if (currentPoint < 0) 
				currentPoint = length - 1;
			//alert(currentPoint);
			vAni();
			moveSideSmall();
			//重新开始滚动
			startAutoScroll();
		});
		$(nextBtnId).click(function(e){
			if (scrolling) {
				stopAutoScroll();
			}
			if (con.width() != slideData.imgWidth) {
				//alert('设置垂直布局');
				setVLayout();
			}
			currentPoint++;
			if (currentPoint == length) 
				currentPoint = 0;
			//alert(currentPoint);
			vAni();
			moveSideSmall();
			
			//重新开始滚动
			startAutoScroll();
		});
	}
}
/**
 * 水平运动
 */
function hAni(){
	var leftVal = -currentPoint*slideData.imgWidth;
	//alert("leftVal:" + leftVal);
	con.animate({left:leftVal});	
}
/**
 * 垂直运动
 */
function vAni(){
	var topVal = -currentPoint*slideData.imgHeight;
	con.animate({top:topVal});
}
/**
 * 排版设置
 */
/*
 * 横排版
 */
function setHLayout(){
	conWidth = slideData.imgWidth*length;
	conHeight = slideData.imgHeight;
	con.width(conWidth);
	con.height(conHeight);
	var leftVal = -currentPoint*slideData.imgWidth;
	con.css('left',leftVal);
	con.css('top',0); 
}
/*
 * 竖排版
 */
function setVLayout(){
	conWidth = slideData.imgWidth;
	conHeight = slideData.imgHeight*length;
	con.width(conWidth);
	con.height(conHeight);
	var topVal = -currentPoint*slideData.imgHeight;
	con.css('left',0);
	con.css('top',topVal);
}
/**
 * 移动侧边栏标示
 */
function moveSideSmall()
{
	getIndex(currentPoint+1,0);
	var sideCon = $(slideData.sideConId);
	var topVal = -(slideData.sideConHeight)*sidePoint;
	
	sideCon.animate({top:topVal});
	var sideImg = $(sideCon).children();
	sideImg.animate({'opacity':0.5});
	var currentSmall = sideImg[currentPoint];
	$(currentSmall).animate({'opacity':1});
}
function getIndex(index,count)
{	
	if (currentPoint <= 3) {
		sidePoint = 0;
	}
	else {
		var mod = index%4;
		if (mod >= 0 && index >= 4) {
			count++;
			//alert(index);
			index -= 4;
			//alert(index);
			getIndex(index, count);
		}
		else {
			//alert('count:' + count);
			sidePoint = count;
		}
	}
}
/**
 * 自动滚动
 */
function startAutoScroll(){
	scrolling = true;
	vTimeout = window.clearTimeout(vTimeout);
	if(slideData.hasSideControl)
		vInterval = setInterval('autoVScroll()',slideData.delay);
	else
		vInterval = setInterval('autoHScroll()',slideData.delay);
}
function stopAutoScroll()
{
	clearInterval(vInterval);
	scrolling = false;
	setHLayout();
}
function autoVScroll()
{
	if(con.width() != slideData.imgWidth){
		//alert('设置垂直布局');
		setVLayout();		
	}
	currentPoint++;
	if(currentPoint == length)
		currentPoint = 0;		
	//alert(currentPoint);
	vAni();
	moveSideSmall();
}
function autoHScroll()
{
	if(con.width() == slideData.imgWidth){
			//alert('设置水平布局');
			setHLayout();
		}
		currentPoint++;
		if(currentPoint == length)
			currentPoint = 0;			
		hAni();
}

