var txtReader = function(options) {
this.version = "1.0.0.0";
this.bookId = typeof (options.bookId) != "undefined" ? options.bookId : null;
this.pageNum = typeof (options.pageNum) != "undefined" ? options.pageNum : null;
this.totalPageNum = typeof (options.totalPageNum) != "undefined" ? options.totalPageNum : null;
//已经加载的页面的第一章
this.loadPageFirst = typeof (options.loadPageFirst) != "undefined" ? options.loadPageFirst : null;
//已经加载的页面的最后一章
this.loadPageLast = typeof (options.loadPageLast) != "undefined" ? options.loadPageLast : null;
};
txtReader.prototype = {
/** 初始化 */
initTxtReader : function() {
this.loadPageComment(1);
this.pagingSkip(null);
this.bind();
},
/** 绑定事件 */
bind : function() {
$("div.page-container div.leftbar_w40 a").click(function() {
$("div.unfold").hide();
var obj = $(this).attr("obj");
if (typeof (obj) == "undefined")
return true;
$("#" + obj).show();
$("div.page-container div.leftbar_w40 a").each(function() {
var v = $(this).attr("obj");
if (v == undefined)
return false;
$(this).removeClass(v + "_on");
});
$(this).addClass(obj + "_on");
});
$("a.cross").click(function() {
$("div.unfold").hide();
$("div.page-container div.leftbar_w40 a").each(function() {
var v = $(this).attr("obj");
if (v == undefined)
return false;
$(this).removeClass(v + "_on");
});
});
$(window).keydown(function(event) {
switch (event.keyCode) {
case 37:
txtReader.pagingSkip(-1);
break;
case 39:
txtReader.pagingSkip(0);
break;
}
});
$("#catalogList a").click(function() {
var page = $(this).attr("page");
if (typeof (page) == "undefined")
return;
txtReader.pagingSkip(Number(page));
});
$("#currPage").keydown(function(event) {
if (event.keyCode == 13) {
txtReader.pagingSkip(Number($(this).val()));
}
});
$("#controlContainer").scroll(function() {
txtReader.pagingScroll();
});
},
/** 加载评论 */
loadPageComment : function(currPage) {
webDwr.getBookComment(this.bookId, currPage, 0, function(info) {
var jsonArr = eval("(" + info + ")");
var comments = "";
for (var i = 0; i < jsonArr["comments"].length; i++) {
comments += "
";
comments += ""
+ jsonArr["comments"][i].content + "
";
comments += "
"
+ jsonArr["comments"][i].user + "";
comments += ""
+ jsonArr["comments"][i].pubTime
+ "
";
}
document.getElementById("commentList").innerHTML = comments;
});
},
/** 内容区滚动 */
pagingScroll : function() {
var obj = $("#controlContainer");
var divHeight = $(obj).height();
var divPaddingTop = parseInt($(obj).css("padding-top"));
var divPaddingBottom = parseInt($(obj).css("padding-bottom"));
var nScrollHeight = $(obj)[0].scrollHeight;
var nScrollTop = $(obj)[0].scrollTop;
if(nScrollTop <= 0 && this.loadPageFirst > 1) {
this.loadPageFirst--;
this.pageNum = this.loadPageFirst;
this.prependContext(this.loadPageFirst);
} else if((nScrollTop + divHeight + divPaddingTop + divPaddingBottom) >= nScrollHeight
&& this.loadPageLast < this.totalPageNum) {
this.loadPageLast++;
this.pageNum = this.loadPageLast;
this.appendContext(txtReader.loadPageLast);
}
$("#currPage").val(this.pageNum);
this.selectSection(nScrollTop);
},
/** 选择章节 */
selectSection : function(nScrollTop) {
var nScrollHeight = 0;
$("#controlContainer div.txtChapter").each(function() {
var chapterHeight = $(this).height();
if(nScrollTop >= nScrollHeight && nScrollTop <= (nScrollHeight + chapterHeight)) {
var pageNum = $(this).attr("objPageNum");
$("#currPage").val(pageNum);
var section = $("#catalogList a[page='" + pageNum + "']").html();
$("#section").html(section);
txtReader.pageNum = parseInt(pageNum);
nScrollHeight += chapterHeight;
return true;
}
nScrollHeight += chapterHeight;
});
},
/** 加载指定页面 */
pagingSkip : function(pageNum) {
if (pageNum != null && pageNum != -1 && pageNum != 0) {
if(pageNum > this.totalPageNum) {
this.pageNum = this.totalPageNum;
} else if(pageNum <= 0) {
this.pageNum = 1;
} else {
this.pageNum = pageNum;
}
} else if (pageNum == -1) {
if (this.pageNum > 1)
this.pageNum = this.pageNum - 1;
else
return;
} else if (pageNum == 0) {
if (this.pageNum == this.totalPageNum)
return;
else
this.pageNum = this.pageNum + 1;
}
$("#currPage").val(this.pageNum);
webDwr.getTxtBookContent4Screen(this.bookId, this.pageNum, function(info) {
var pageNum = $("#currPage").val();
var html = ""
if (info.indexOf("\"content\":") < 0) {
html += info;
} else {
var jsonArr = eval("(" + info + ")");
if (jsonArr.title) {
$("#section").html(jsonArr.title);
html += " "
html += jsonArr.title + "
";
html += jsonArr.content;
}
}
html += "
";
$("#controlContainer").html(html);
txtReader.loadPageFirst = txtReader.pageNum;
txtReader.loadPageLast = txtReader.pageNum;
var obj = document.getElementById("controlContainer");
if(obj.scrollHeight <= obj.clientHeight ) {
$("#controlContainer").attr("loadStatus", "0");
txtReader.appendContext();
} else {
$("#controlContainer").attr("loadStatus", "1");
obj.scrollTop = 10;
}
});
},
/** 向后追加章节 */
appendContext: function(pageNum) {
if(!pageNum) {
if(this.loadPageLast >= this.totalPageNum) {
return;
} else {
pageNum = this.loadPageLast + 1;
}
}
webDwr.getTxtBookContent4Screen(this.bookId, pageNum, function(info) {
var html = ""
if (info.indexOf("\"content\":") < 0) {
html += info;
} else {
var jsonArr = eval("(" + info + ")");
if (jsonArr.title) {
html += " "
html += jsonArr.title + "
";
html += jsonArr.content;
}
}
html += "
";
$("#controlContainer").append(html);
txtReader.loadPageLast = pageNum;
var loadStatus = $("#controlContainer").attr("loadStatus");
var obj = document.getElementById("controlContainer");
if(loadStatus == "0") {
if(obj.scrollHeight <= obj.clientHeight ) {
txtReader.appendContext();
} else {
$("#controlContainer").attr("loadStatus", "1");
obj.scrollTop = 10;
}
}
});
},
/** 向前追加长章节 */
prependContext: function(pageNum) {
if(!pageNum) {
if(this.loadPageFirst <= 1){
return;
} else {
pageNum = this.loadPageFirst - 1;
}
}
webDwr.getTxtBookContent4Screen(this.bookId, pageNum, function(info) {
var html = ""
if (info.indexOf("\"content\":") < 0) {
html += info;
} else {
var jsonArr = eval("(" + info + ")");
if (jsonArr.title) {
html += " "
html += jsonArr.title + "
";
html += jsonArr.content;
}
}
html += "
";
$("#controlContainer").prepend(html);
txtReader.loadPageFirst = pageNum;
var nScrollTop = $("#controlContainer div.txtChapter").eq(0).height();
document.getElementById("controlContainer").scrollTop = nScrollTop + 10;
});
},
/** 添加评论 */
addComment : function() {
var content = $("#commentContext").val();
if (content == "") {
alert("请输入评论内容!");
return;
}
if (content.length > 1000) {
alert("评论内容不能超过1000字!你现在输入的内容有" + content.length + "个字");
return;
}
webDwr.addBookComment(this.bookId, content, function(info) {
if (info != "") {
if (info == "noLogged") {
alert("请登录后再发表评论");
return;
}
txtReader.loadPageComment(1);
$("#commentContext").val("");
}
});
}
};
var resetTxtContent = function() {
var h = $(window).height() - 127;
$("#controlContainer").height(h-51);
$("#catalog").height(h - 31);
$("#comment").height(h - 31);
$("#catalogList").height(h - 83);
//$("#noteList").height(h - 81);
$("#commentList").height(h - 113);
};