﻿function validateCommentLength(conts) {
	if (conts.length > 1000) {
		alert("글은 1000자까지만 쓸 수 있습니다.");
		return false;
	}

	return true;
}

function onCommentBeforeUpdate(commentSeqNo) {
	// 수정 -> 수정 취소 버튼으로 변경
	$("#lnkCommentUpdate_" + commentSeqNo).attr("href", "javascript:onCommentUpdateCancel(" + commentSeqNo + ");").html("수정취소");

	// 원글 Element 선택
	var objOrgCommentElement = $("#pComment_" + commentSeqNo);

	// 원글 숨김
	objOrgCommentElement.hide();

	// 수정 모드 Element 생성
	var htmlUpdateElement = "<span id='liUpdateComment_" + commentSeqNo + "'><textarea rows='4' cols='99' style='width: 597px; height: 40px;'></textarea><a href='javascript:onCommentUpdate(" + commentSeqNo + ");'><img src='/images/making/btnRegist.gif' alt='등록' /></a></span>"
	var objUpdateElement;
	if (objOrgCommentElement.parent().hasClass("reply2")) {
		// 답글 수정일 때
		objUpdateElement = $(htmlUpdateElement);
		objUpdateElement.children().first().css("width", "569px");
	}
	else {
		// 원글 수정일 때
		objUpdateElement = $(htmlUpdateElement);
	}
	// 숨겨진 원글 아래에 추가
	objUpdateElement.insertAfter(objOrgCommentElement);

	// 글 내용과 포커스 설정
	var conts = jQuery.trim(objOrgCommentElement.html());

	conts = Encoder.htmlDecode(conts);
	conts = conts.replace(/&nbsp;&nbsp;/gi, "  ").replace(/&nbsp;&nbsp;&nbsp;/gi, "\t");
	for (i = 0; i < conts.length; i++) {
		conts = conts.replace("<br>", "\n")
		conts = conts.replace("<br />", "\n")
	}

	objUpdateElement.children().first().val(conts).focus();
}

function onCommentUpdateCancel(commentSeqNo) {
	// 수정취소 -> 수정 버튼으로 변경
	$("#lnkCommentUpdate_" + commentSeqNo).attr("href", "javascript:onCommentBeforeUpdate(" + commentSeqNo + ");").html("수정");

	// 수정 입력란 제거
	$("#liUpdateComment_" + commentSeqNo).remove();

	// 글 본문 내용 다시 출력
	var objOrgCommentElement = $("#pComment_" + commentSeqNo);
	objOrgCommentElement.show();
}

function onCommentUpdate(commentSeqNo) {
	var conts = jQuery.trim($("#liUpdateComment_" + commentSeqNo + " textarea:first-child").val());
	if (conts == "") {
		alert("내용을 입력하세요.");
		return;
	}

	if (!validateCommentLength(conts)) {
		return;
	}

	var commentTypeCode = $("input[name$='HdnCommentTypeCode']").val();
	var refSeqNo = $("input[name$='HdnRefSeqNo']").val();
	WJPRON.Web.WS.CommentModuleService.UpdateComment(commentTypeCode,
													 refSeqNo,
													 commentSeqNo,
													 conts,
													 "Y",
													 onCommentUpdateCompleted,
													 onCommentUpdateFailed);
}

function onCommentUpdateCompleted(commentSeqNo) {
	if (commentSeqNo > -1) {
		// 수정취소 -> 수정 버튼으로 변경
		$("#lnkCommentUpdate_" + commentSeqNo).attr("href", "javascript:onCommentBeforeUpdate(" + commentSeqNo + ");").html("수정");

		// 글 본문 내용 다시 출력
		var conts = jQuery.trim($("#liUpdateComment_" + commentSeqNo + " textarea:first-child").val());
		conts = Encoder.htmlEncode(conts);
		conts = conts.replace(/&#32;&#32;/gi, "&nbsp;&nbsp;")
						.replace(/&#09;/gi, "&nbsp;&nbsp;&nbsp;")
						.replace(/&#10;/gi, "<br />");

		$("#pComment_" + commentSeqNo).show().html(conts);

		// 수정 입력란 제거
		$("#liUpdateComment_" + commentSeqNo).remove();
	} else {
		alert("시스템 오류로 인해 수정하지 못했습니다.");
	}
}

function onCommentUpdateFailed(errorMsg) {
	alert("오류로 인해 처리하지 못했습니다.\n오류내용 : " + errorMsg.get_message());
}

function onCommentDelete(commentSeqNo) {
	if (confirm("삭제하시겠습니까?")) {
		var commentTypeCode = $("input[name$='HdnCommentTypeCode']").val();
		var refSeqNo = $("input[name$='HdnRefSeqNo']").val();
		WJPRON.Web.WS.CommentModuleService.DeleteComment(commentTypeCode,
														 refSeqNo,
														 commentSeqNo,
														 onCommentDeleteCompleted,
														 onCommentDeleteFailed);
	}
}

function onCommentDeleteCompleted(deletedCommentSeqNo) {
	if (deletedCommentSeqNo > -1) {

		if ($("#liComment_" + deletedCommentSeqNo).hasClass("reply2")) {
			$("#liComment_" + deletedCommentSeqNo).remove();
		}
		else {
			for (i = deletedCommentSeqNo - 99; i <= deletedCommentSeqNo; i++) {
				var objTemp = $("#liComment_" + i);
				if (objTemp != null) {
					objTemp.remove();
				}
			}
		}

		if ($("#ulCommentList").children().length == 0) {
			$("#ulCommentList").html("<li id='liComment_empty'><p style='text-align: center;'><br /><br />등록된 글이 없습니다.<br /><br /></p></li>");
		}
	}
}

function onCommentDeleteFailed(errorMsg) {
	alert("오류로 인해 처리하지 못했습니다.\n오류내용 : " + errorMsg.get_message());
}

function onCommentBeforeReply(commentSeqNo) {
	// 원글 Element 선택
	var objOrgCommentElement = $("#liComment_" + commentSeqNo);
	// 답글 -> 답글취소 버튼으로 변경
	$("#liComment_" + commentSeqNo + " a:last").attr("href", "javascript:onCommentReplyCancel(" + commentSeqNo + ");").html("답글취소");

	// 답글 모드 Element 생성
	var htmlReplyElement = "<li id='liCommentReply_" + commentSeqNo + "' class='reply2'>"
		+ "<textarea rows='4' cols='99' style='width: 569px; height: 40px;'></textarea><a href='javascript:onCommentReply(" + commentSeqNo + ");'><img src='/images/making/btnReply.gif' alt='답글' /></a>"
		+ "</li>";
	var objUpdateElement = $(htmlReplyElement).insertAfter(objOrgCommentElement);

	// 글 내용과 포커스 설정
	objUpdateElement.children().first().focus();
}

function onCommentReplyCancel(commentSeqNo) {
	// 답글취소 -> 답글 버튼으로 변경
	$("#liComment_" + commentSeqNo + " a:last").attr("href", "javascript:onCommentBeforeReply(" + commentSeqNo + ");").html("답글");
	$("#liCommentReply_" + commentSeqNo).remove();
}

function onCommentReply(commentSeqNo) {
	var conts = jQuery.trim($("#liCommentReply_" + commentSeqNo + " textarea:first-child").val());
	if (conts == "") {
		alert("내용을 입력하세요.");
		return;
	}

	if (!validateCommentLength(conts)) {
		return;
	}

	var commentTypeCode = $("input[name$='HdnCommentTypeCode']").val();
	var refSeqNo = $("input[name$='HdnRefSeqNo']").val();
	WJPRON.Web.WS.CommentModuleService.CreateComment(commentTypeCode,
													 refSeqNo,
													 commentSeqNo,
													 conts,
													 "Y",
													 onCommentReplyCompleted,
													 onCommentReplyFailed,
													 commentSeqNo);
}

function onCommentReplyCompleted(resultArray, orgCommentSeqNo) {
	if (resultArray != null && resultArray[0] > -1) {
		/// 답글취소 -> 답글 버튼으로 변경
		$("#liComment_" + orgCommentSeqNo + " a:last").attr("href", "javascript:onCommentBeforeReply(" + orgCommentSeqNo + ");").html("답글");

		var newCommentSeqNo = resultArray[0];
		var userId = resultArray[1];
		var roleCd = resultArray[2];
		var regDt = resultArray[3];
		
		// 글 본문에 답글 내용 추가
		var conts = jQuery.trim($("#liCommentReply_" + orgCommentSeqNo + " textarea:first-child").val());

		conts = Encoder.htmlEncode(conts);
		conts = conts.replace(/&#32;&#32;/gi, "&nbsp;&nbsp;")
						.replace(/&#09;/gi, "&nbsp;&nbsp;&nbsp;")
						.replace(/&#10;/gi, "<br />");

		var htmlReplyCommentElement = "<li id='liComment_" + newCommentSeqNo + "' class='reply2'>"
									+ "<span class='reName'><strong>" + userId + "</strong> "
									+ (roleCd == "USER" ? "" : "<img src='/images/main/iCon" + roleCd + ".gif' alt='" + roleCd + "' />")
									+ " (" + regDt + ")</span>"
									+ "<span class='reBtn'><a id='lnkCommentUpdate_" + newCommentSeqNo + "' href='javascript:onCommentBeforeUpdate(" + newCommentSeqNo + ")' class='btn1'>수정</a> | <a href='javascript:onCommentDelete(" + newCommentSeqNo + ")' class='btn1'>삭제</a></span>"
									+ "<p id='pComment_" + newCommentSeqNo + "'>"
									+ conts
									+ "</p></li>";

		var isInserted = false;
		var objOrgCommentElement = $("#liComment_" + orgCommentSeqNo);
		var objTemp = $("li[id^='liComment_']");
		objTemp.each(function(index) {
			if ($(this).attr("id").replace("liComment_", "") <= (orgCommentSeqNo - 100) + "") {
				$(htmlReplyCommentElement).insertBefore($(this));
				isInserted = true;
				return false;
			}
			else if (objTemp.length == index) {
				$(htmlReplyCommentElement).insertBefore($(this));
				isInserted = true;
				return false;
			}
		});
		
		if (!isInserted) $(htmlReplyCommentElement).insertAfter(objOrgCommentElement);

		// 수정 입력란 제거
		$("#liCommentReply_" + orgCommentSeqNo).remove();
	} else {
		alert("시스템 오류로 인해 등록하지 못했습니다.");
	}
}

function onCommentReplyFailed(errorMsg, orgCommentSeqNo) {
	alert("오류로 인해 처리하지 못했습니다.\n오류내용 : " + errorMsg.get_message());
}

function onCommentCreate() {
	var conts = $("#txtNewComment").val();
	if (conts == "") {
		alert("내용을 입력하세요.");
		return;
	}
	if (!validateCommentLength(conts)) {
		return;
	}

	var commentTypeCode = $("input[name$='HdnCommentTypeCode']").val();
	var refSeqNo = $("input[name$='HdnRefSeqNo']").val();
	WJPRON.Web.WS.CommentModuleService.CreateComment(commentTypeCode,
													 refSeqNo,
													 -1,
													 conts,
													 "N",
													 onCommentCreateCompleted,
													 onCommentCreateFailed);
}

function onCommentCreateCompleted(resultArray) {
	if (resultArray != null && resultArray[0] > -1) {

		var newCommentSeqNo = resultArray[0];
		var userId = resultArray[1];
		var roleCd = resultArray[2];
		var regDt = resultArray[3];

		// 글 본문에 새글 내용 추가
		var conts = jQuery.trim($("#txtNewComment").val());

		conts = Encoder.htmlEncode(conts);
		conts = conts.replace(/&#32;&#32;/gi, "&nbsp;&nbsp;")
						.replace(/&#09;/gi, "&nbsp;&nbsp;&nbsp;")
						.replace(/&#10;/gi, "<br />");

		var htmlReplyCommentElement = "<li id='liComment_" + newCommentSeqNo + "'>"
									+ "<span class='reName'><strong>" + userId + "</strong> "
									+ (roleCd == "USER" ? "" : "<img src='/images/main/iCon" + roleCd + ".gif' alt='" + roleCd + "' />")
									+ " (" + regDt + ")</span>"
									+ "<span class='reBtn'><a id='lnkCommentUpdate_" + newCommentSeqNo + "' href='javascript:onCommentBeforeUpdate(" + newCommentSeqNo + ")' class='btn1'>수정</a> | <a href='javascript:onCommentDelete(" + newCommentSeqNo + ")' class='btn1'>삭제</a> | <a href='javascript:onCommentBeforeReply(" + newCommentSeqNo + ")'>답글</a></span>"
									+ "<p id='pComment_" + newCommentSeqNo + "'>"
									+ conts
									+ "</p></li>";
		var objTempElement = $("#ulCommentList li:first-child");
		if (objTempElement.attr("id") == "liComment_empty") {
			// 첫 글일때
			$("#ulCommentList").empty();
			$("#ulCommentList").html(htmlReplyCommentElement);
		}
		else {
			$(htmlReplyCommentElement).insertBefore($("#ulCommentList li:first-child"));
		}

		// 글 내용 지움
		$("#txtNewComment").val("");
	} else {
		alert("시스템 오류로 인해 등록하지 못했습니다.");
	}
}

function onCommentCreateFailed(errorMsg) {
	alert("오류로 인해 처리하지 못했습니다.\n오류내용 : " + errorMsg.get_message());
}



