
var changeTime = 3000;
var pagenateID;
$(function() {
	var myRB = new RecommendBook(recommendBooks);

	pagenateID = setTimeout(autoPagenate, changeTime);
});
var autoPagenate = function(){
	$("#recommendBookPagenateNextButton").trigger("click");
}

var recommendBookMoving = false;

var RecommendBook = function(books){
	var self = this;
	self.books = books;

	self.currentString = "#recommendBookWrapper .entry:visible";
	self.entryString = "recommendMainBook";

	self.mainBookSpeed = 500;

	self.current = 0;
	self.next = 0;
	self.prev = 0;

	self.moving=false;
	

	self.firstNextBook = new FirstRecommendBook(self.books,self.mainBookSpeed);
	self.secondNextBook = new SecondRecommendBook(self.books,self.mainBookSpeed);

	self.setIndex();

	self.initTitle();
	self.initPageInfo();
	self.listenPrevButtonMain();
	self.listenNextButtonMain();
}
RecommendBook.prototype.setIndex = function(){
	var self = this;
	self.setCurrent();
	self.setNextAndPrev();
}
RecommendBook.prototype.setCurrent = function(){
	var self = this;
	var current = $(self.currentString);
	self.current = current.attr("id");
}
RecommendBook.prototype.setNextAndPrev = function(){
	var self = this;
	for(var i=0;self.books.length>i;i++){
		if(self.books[i].id == self.current.replace(self.entryString,"")){
			if(self.books[i+1]){
				 self.next = self.entryString+self.books[i+1].id;
			}else{
				 self.next = self.entryString+self.books[0].id;
			}

			if(self.books[i-1]){
				 self.prev = self.entryString+self.books[i-1].id;
			}else{
				 self.prev = self.entryString+self.books[self.books.length-1].id;
			}
		}
	}
}
RecommendBook.prototype.listenPrevButtonMain = function(){
	var self = this;
	$("#recommendBookPagenatePrevButton").click(function(){
		if(!recommendBookMoving){
			recommendBookMoving = true;
			
			self.showPrevBookMain();
			clearTimeout(pagenateID);
			pagenateID = setTimeout(autoPagenate, changeTime);
		}
	});
}
RecommendBook.prototype.listenNextButtonMain = function(){
	var self = this;
	$("#recommendBookPagenateNextButton").click(function(){
		if(!recommendBookMoving){
			recommendBookMoving = true;

			self.showNextBookMain();
			clearTimeout(pagenateID);
			pagenateID = setTimeout(autoPagenate, changeTime);
		}
	});
}
RecommendBook.prototype.showPrevBookMain = function(){
	var self = this;

	var current = $("#" + self.current);
	current.hide("slide", {direction: "right"}, self.mainBookSpeed);

	var currentHead = $("#recommendBookHeadWrapper" + self.current.replace(self.entryString,""));
	currentHead.fadeOut(self.mainBookSpeed);

	var prevHead = $("#recommendBookHeadWrapper" + self.prev.replace(self.entryString,""));
	prevHead.fadeIn(self.mainBookSpeed);
	self.initTitle(prevHead);

	self.initPageInfo(self.prev.replace(self.entryString,""));

	var prev = $("#" + self.prev);
	prev.show("slide", {direction: "left"}, self.mainBookSpeed,function(){
		self.setIndex();
		recommendBookMoving=false;
	});
}
RecommendBook.prototype.showNextBookMain = function(){
	var self = this;

	var current = $("#" + self.current);
	current.hide("slide", {direction: "left"}, self.mainBookSpeed);

	var currentHead = $("#recommendBookHeadWrapper" + self.current.replace(self.entryString,""));
	currentHead.fadeOut(self.mainBookSpeed);

	var nextHead = $("#recommendBookHeadWrapper" + self.next.replace(self.entryString,""));
	nextHead.fadeIn(self.mainBookSpeed);
	self.initTitle(nextHead);

	self.initPageInfo(self.next.replace(self.entryString,""));

	var next = $("#" + self.next);
	next.show("slide", {direction: "right"}, self.mainBookSpeed,function(){
		self.setIndex();
		recommendBookMoving=false;
	});
}
RecommendBook.prototype.initTitle = function(heightTarget){
	var self = this;
	if(heightTarget){
		$("#recommendBookHeadWrapper").height(
			heightTarget.height()+3
		);
	}else{
		$("#recommendBookHeadWrapper").height(
			$("#recommendBookHeader" + self.current.replace("recommendMainBook","")).height()+3
		);
	}
}
RecommendBook.prototype.initPageInfo = function(bookID){
	var self = this;
	var index = 1;
	if(bookID){
		for(var i = 0; i<self.books.length ; i++){
			if(self.books[i].id == bookID){
				index = i+1;
				break;
			}
		}
	}
	$("#recommendBookPagenateCenter").text(index +"/"+self.books.length);
}



var FirstRecommendBook = function(books,speed){
	var self = this;
	self.books = books;

	self.currentString = "#recommendBookWrapper .firstNextEntry:visible";
	self.entryString = "firstNextBook";
	
	self.mainBookSpeed = speed;

	self.current = 0;
	self.next = 0;
	self.prev = 0;
	
	self.moving=false;
	
	self.setIndex();

	self.listenPrevButton();
	self.listenNextButton();
	
}
FirstRecommendBook.prototype = RecommendBook.prototype;
FirstRecommendBook.prototype.listenPrevButton = function(){
	var self = this;
	$("#recommendBookPagenatePrevButton").click(function(){
		if(!recommendBookMoving){
			self.showPrevBook();
		}
	});
}
FirstRecommendBook.prototype.listenNextButton = function(){
	var self = this;
	$("#recommendBookPagenateNextButton").click(function(){
		if(!recommendBookMoving){
			self.showNextBook();
		}
	});
}
FirstRecommendBook.prototype.showPrevBook = function(){
	var self = this;

	var current = $("#" + self.current);
	current.hide("slide", {direction: "right"}, self.mainBookSpeed);

	var prev = $("#" + self.prev);
	prev.show("slide", {direction: "left"}, self.mainBookSpeed,function(){
		self.setIndex();
	});
}
FirstRecommendBook.prototype.showNextBook = function(){
	var self = this;

	var current = $("#" + self.current);
	current.hide("slide", {direction: "left"}, self.mainBookSpeed);

	var next = $("#" + self.next);
	next.show("slide", {direction: "right"}, self.mainBookSpeed,function(){
		self.setIndex();
	});
}



var SecondRecommendBook = function(books,speed){
	var self = this;
	self.books = books;

	self.mainBookSpeed = speed;
	self.currentString = "#recommendBookWrapper .secondNextEntry:visible";
	self.entryString = "secondNextBook";

	self.current = 0;
	self.next = 0;
	self.prev = 0;

	self.smallBook = {};

	self.moving=false;
	
	self.setIndex();

	self.listenPrevButton();
	self.listenNextButton();
}
SecondRecommendBook.prototype = FirstRecommendBook.prototype;




