var entryPerPage = 5;
var prefixWord = 'bookShelf';
var smallTalkTitle = '<strong>smalltalk</strong>';
var readingBookListTitle = '<strong>On Reading</strong>';
var doneBookListTitle = '<strong>Finished</strong>';
var notice = 'Available in only Internet Explorer 8, FireFox, Google Chrome';

function requestFailed() {
	$("bookReading").innerHTML = "Connection to the server is lost";
}

function displayCall() {
	// 본문이 들어갈 div 초기화
	var memoDiv = $('bookMemo');
	memoDiv.innerHTML = '';
	for(i = 0; i < entryPerPage * 2; i++)
		memoDiv.innerHTML += '<div id="' + prefixWord + i + '" name="' + prefixWord + i + '" class="bookMemo" style="display:none;"></div>';

	// 타이틀 div 초기화
	$('smallTalkTitle').innerHTML = '<span style="float:left">' + smallTalkTitle + 
								'</span><span style="float:right;">' + 
								'<a href="#" onclick="javascript:closeSmallTalkMenu();showSmallTalkMenu(event, 0);">+</a>' +
								'</span><br>';
	$('readingTitle').innerHTML = '<span style="float:left">' + readingBookListTitle + 
								'</span><span style="float:right;">' + 
								'<a href="#" onclick="javascript:closeInputMenu();showInputMenu(event, 0);">+</a>' +
								'</span><br>';
	$('doneTitle').innerHTML = '<span style="float:left">' + doneBookListTitle + 
								'</span><span style="float:right;">' +
								'<a href="#" onclick="javascript:closeInputMenu();showInputMenu(event, 1);">+</a>' + 
								'</span><br>';
	$('notice').innerHTML = '<span style="float:left">' + notice + '</span><br>'; 

    smallTalk();
	bookList(0);
	bookList(1);
}

function smallTalk(option, currentPage) {
	if(!currentPage) var currentPage = 1;
	
	new Ajax.Request(
		'getData.php',
		{
			method:'POST',
			parameters:{'function':'getRecentSmallTalk',
						},
			onComplete:function(request) {
				showSmallTalk(request);
			},
			onFailure:requestFailed
		});
}

function showSmallTalk(request) {
	var xmlData = request.responseXML;
  smallTalkDiv = $("smallTalkContent");
	
	var entryList = xmlData.getElementsByTagName("entry");
	var entryListLen = entryList.length;
	
	var memoElement = xmlData.getElementsByTagName("st_memo");
  var memoData = memoElement[0].childNodes.item(0).nodeValue;	
	var dateElement = xmlData.getElementsByTagName("st_datetime");
  var dateData = dateElement[0].childNodes.item(0).nodeValue;
  dateString = dateData.substring(0, 4) + "." + dateData.substring(4, 6) + "." + dateData.substring(6, 8) + "  " + 
                dateData.substring(8, 10) + ":" + dateData.substring(10, 12) + "." + dateData.substring(12, 14);
	
	smallTalkDiv.innerHTML = memoData + "  " + dateString;
}


function bookList(option, currentPage) {
	if(!currentPage) var currentPage = 1;
	
	new Ajax.Request(
		'getData.php',
		{
			method:'POST',
			parameters:{'function':'getBookList',
						'currentPage':currentPage,
						'entryPerPage':entryPerPage,
						'option':option
						},
			onComplete:function(request) {
				showBookList(request, option, currentPage);
			},
			onFailure:requestFailed
		});
}

function showBookList(request, option, currentPage) {
	var xmlData = request.responseXML;
	
	if(option == 0) var readingDiv = $("bookReading");
	else var readingDiv = $("bookDone");

	var agt = navigator.userAgent.toLowerCase();
	
	// IE일 경우, 0 - 번호, 2 - 책제목, 3 - 감상, 4 - 날짜
	// IE아니면   0 - 번호, 4 - 책제목, 6 - 감상, 8 - 날짜
	var bookTitleFieldNum = 4;
	var bookMemoFieldNum = 6;
	var bookDateFieldNum = 8;
	if(agt.indexOf("msie") != -1) {
		bookTitleFieldNum /= 2;
		bookMemoFieldNum /= 2;
		bookDateFieldNum /= 2;
	}

	var numOfPage = xmlData.getElementsByTagName('numOfPage')[0].firstChild.data;
	var entryList = xmlData.getElementsByTagName("entry");
	var entryListLen = entryList.length;
	
	var tagString = '';

	for(i = 0; i < entryListLen; i++) {
		var memoDivNum = option * entryPerPage + i;
		var memoDivName = prefixWord + memoDivNum;
		var memoDivId = entryList[i].childNodes.item(0).firstChild.nodeValue;
		$(memoDivName).innerHTML = entryList[i].childNodes.item(bookMemoFieldNum).firstChild.nodeValue;
	
		tagString += '<span id="' + memoDivName + 'Title" class="bookShelfTitle">'
		tagString += '<a href="#" onclick="javascript:showMemo(\'' + memoDivName + '\');">'
		tagString += entryList[i].childNodes.item(bookTitleFieldNum).firstChild.nodeValue;
		tagString += '</a></span>';
		tagString += '<span id="' + memoDivName + 'Date" class="bookShelfDate">' + entryList[i].childNodes.item(bookDateFieldNum).firstChild.nodeValue;
		tagString += '<a href="#" onclick="javascript:modifyBook(event, ' + option + ', ' + memoDivId + ', \'' + memoDivName + '\');">+</a></span><br>';
	}
	
	if(numOfPage > 0) {
		tagString += '<div class="pageNavigator">';
	
		if(currentPage < numOfPage) {
			tagString += '<span id="pageNavigatorRight">';
			tagString += '<a href="#" onclick="javascirpt:bookList(' + option + ', ' + (currentPage + 1) + ')">';
			tagString += 'Next';
			tagString += '</a></span>';
		}
		
		if(currentPage > 1) {
			tagString += '<span id="pageNavigatorLeft">';
			tagString += '<a href="#" onclick="javascirpt:bookList(' + option + ', ' + (currentPage - 1) + ')">';
			tagString += 'Prev';
			tagString += '</a></span>';
		}
		
		tagString += '</div>';
	}
	
	readingDiv.innerHTML = tagString;
}

function escapeString(string) {
	string = string.replace(/&/gi, '&amp;');
	string = string.replace(/</gi, '&lt;');
	string = string.replace(/>/gi, '&gt;');
	string = string.replace(/\n/gi, '<br />');
	
	return string;
}

function reassembleString(string) {
	string = string.replace(/&amp;/gi, '&');
	string = string.replace(/&lt;/gi, '<');
	string = string.replace(/&gt;/gi, '>');
	string = string.replace(/<br[^<>]*>/gi, '\n');
	
	return string;
}

function showMemo(memoDivName) {
	for(i = 0; i < entryPerPage * 2; i++) {
		var currentName = prefixWord + i;
		var memoDiv = $(currentName);
	
		if(memoDivName == currentName && memoDiv.style.display == 'none')
			memoDiv.style.display = 'block';
		else
			memoDiv.style.display = 'none';
						
	}
}

function showInputMenu(e, option) {
	$('selectDelete').checked = false;
	$('inputBookOption').value = option;
	
	if(option == 0) $('selectReading').checked = true;
	else $('selectDone').checked = true;

	thisEvent = e || window.event;
	var inputWindow = $('bookInputForm');
	inputWindow.style.display = 'block';
	inputWindow.style.left = thisEvent.clientX + 'px';
	inputWindow.style.top = thisEvent.clientY + 'px';
}

function showSmallTalkMenu(e, option) {
	thisEvent = e || window.event;
	var inputWindow = $('smallTalkInputForm');
	inputWindow.style.display = 'block';
	inputWindow.style.left = thisEvent.clientX + 'px';
	inputWindow.style.top = thisEvent.clientY + 'px';
}

function closeInputMenu() {
	$('inputBookId').value = '';
	$('inputBookTitle').value = '';
	$('inputBookMemo').value = '';
	$('inputBookDate').value = '';
	$('inputBookOption').value = '';
	
	$('bookInputForm').style.display = 'none';
}

function closeSmallTalkMenu() {
  $('inputSmallTalkId').value = '';
  $('inputSmallTalkMemo').value='';
  
	$('smallTalkInputForm').style.display = 'none';
}

function selectBookStatus(status) {
	$('inputBookOption').value = status;
}

function saveSmallTalk() {
	var inputSmallTalkId = $('inputSmallTalkId').value;
	var inputSmallTalkMemo = escapeString($('inputSmallTalkMemo').value);
	var inputSmallTalkPass = MD5($('inputSmallTalkPass').value);
	
	var functionName = 'saveSmallTalk';
	var inputSmallTalkId = -1; // dummy
	
	new Ajax.Request(
		'getData.php',
		{
			method:'POST',
			parameters:{'function':functionName,
						'inputSmallTalkId':inputSmallTalkId,
						'inputSmallTalkMemo':inputSmallTalkMemo,
						'inputSmallTalkPass':inputSmallTalkPass
						},
			onComplete:function(request) {
				var xmlData = request.responseXML;
				var autoResult = xmlData.getElementsByTagName('authResult')[0].firstChild.data;	
				
				if(autoResult != '1')
					alert('입력 실패');
				
				closeSmallTalkMenu();
				reloadSmallTalk();
			},
			onFailure:requestFailed
		});
}

function saveBook() {
	var inputBookId = $('inputBookId').value;
	var inputBookOption = $('inputBookOption').value;
	var inputBookTitle = escapeString($('inputBookTitle').value);
	var inputBookMemo = escapeString($('inputBookMemo').value);
	var inputBookDate = $('inputBookDate').value;
	var inputBookPass = MD5($('inputBookPass').value);
	
	if($('selectDelete').checked) var functionName = 'deleteBook';
	else if(inputBookId) var functionName = 'modifyBook';
	else {
		var functionName = 'saveBook';
		var inputBookId = -1; // dummy
	}
	
	new Ajax.Request(
		'getData.php',
		{
			method:'POST',
			parameters:{'function':functionName,
						'inputBookId':inputBookId,
						'inputBookOption':inputBookOption,
						'inputBookTitle':inputBookTitle,
						'inputBookMemo':inputBookMemo,
						'inputBookDate':inputBookDate,
						'inputBookPass':inputBookPass
						},
			onComplete:function(request) {
				var xmlData = request.responseXML;
				var autoResult = xmlData.getElementsByTagName('authResult')[0].firstChild.data;	
				
				if(autoResult != '1')
					alert('입력 실패');
				
				closeInputMenu();
				if(inputBookId != -1) {
					bookList(0);
					bookList(1);
				} else bookList(inputBookOption);
			},
			onFailure:requestFailed
		});
}

function modifyBook(e, option, id, name) {
	var modifyBookTitle = $(name + 'Title').firstChild.firstChild.nodeValue;
	var modifyBookDate = $(name + 'Date').firstChild.nodeValue;
	var modifyBookMemo = $(name).innerHTML;
	
	$('inputBookId').value = id;
	$('inputBookTitle').value = reassembleString(modifyBookTitle);
	$('inputBookMemo').value = reassembleString(modifyBookMemo);
	$('inputBookDate').value = modifyBookDate;
		
	showInputMenu(e, option);
}
