// 댓글 공통 ajax 함수
function commentAjax(url, params, task) {
	var result = '';
	new Ajax.Request(url,
	  {
	    method: 'post',
	    encoding: 'UTF-8',
	    parameters: params,
	    onSuccess: function(transport){
			var response = transport.responseJSON || "no response text";
			
			if (response.message.code == widgetbankMessage.SUCCESS) {
		      getCommentList(document.commentForm.widgetId.value);
			} else if (response.message.code == widgetbankMessage.FAIL) {
		      alert(task + ' 경로가 올바르지 않습니다.');
			} else {
		      alert(response.message.content);
			};
	    },
	    onFailure: function(){
	      alert(task + ' 작업을 실패하였습니다. 잠시 후 이용해 주십시요.');
	    },
		onException: function(){
		  alert(task + ' 중 오류가 발생하였습니다. 잠시 후 이용해 주십시요.');
		}
	 });
}

// 댓글 목록
function getCommentList(widgetId, url){
	if (url == null) {
		url = '/comment/list.json';
	}
	
	new Ajax.Request(url,
	{
		method:'post', encoding:'UTF-8', parameters:{widgetId : widgetId},
		onSuccess: function(transport){
		var response = transport.responseJSON || "no response text";
		setCommentList(response.comments);
		setPageNavigator(response.pageNavigator);
	},
		onFailure: function(){ alert('잠시 후 사용해주세요.')},
		onException: function(){ alert('잠시 후 사용해주세요.')}
	});
}

// 댓글 영역 셋팅
function setCommentList(comments) {
	clearIdeaList();	// 영역 비우고 시작
	for (var i=0; i<comments.length; i++) {
		makeIdeaList(comments[i].id, comments[i].nickname, comments[i].content.gsub("\n", "<br />"), comments[i].auth, comments[i].regdttm, comments[i].ref, comments[i].blog, comments[i].logined, comments[i].deleted, i);
	}
}

// 페이징 영역 셋팅
function setPageNavigator(pageNavigator) {
	var html = '';

	if (pageNavigator.prevPage > 0) {
		html += '<a href="#" onclick="getCommentList(' + null + ', \'' + pageNavigator.url + pageNavigator.prevPage + '\'); return false;" class="movePage_over">';
		html += '<span class="movePage_over"><img class="befArrow" src="http://pimg.daum-img.net/widgetbank/img_blank.gif " width="6" height="12" />이전</span></a>';
	} else if ((pageNavigator.nextPage > 0) && (pageNavigator.prevPage == 0)) {
		html += '<span class="movePage"><img class="befArrow" src="http://pimg.daum-img.net/widgetbank/img_blank.gif " width="6" height="12" />이전</span>';
	}

	for (seq=pageNavigator.startSeq; seq<=pageNavigator.endSeq; seq++) {
		if (pageNavigator.currentPage == seq) {
			html += '<a class="pagingNum_over">' + seq + '</a>';
		} else {
			html += '<a class="pagingNum" href="#" onclick="getCommentList(' + null + ', \'' + pageNavigator.url + seq + '\'); return false;">' + seq + '</a>';
		}
	}
	
	if (pageNavigator.nextPage > 0) {
		html += '<a href="#" onclick="getCommentList(' + null + ', \'' + pageNavigator.url + pageNavigator.nextPage + '\'); return false;" class="movePage_over">';
		html += '<span class="movePage_over">다음<img class="nextArrow" src="http://pimg.daum-img.net/widgetbank/img_blank.gif " width="6" height="12" /></span></a>';
	} else if ((pageNavigator.nextPage == 0) && (pageNavigator.prevPage > 0)) {
		html += '<span class="movePage">다음<img class="nextArrow" src="http://pimg.daum-img.net/widgetbank/img_blank.gif " width="6" height="12" /></span>';
	}
	
	document.getElementById("cNumbering").innerHTML = html;
	document.getElementById("commentCnt").innerHTML = pageNavigator.totalCount;
}


// 댓글 확인
function validComment(form) {
	if (isBlank(form.nickname.value)) {
		alert('한글자 이상의 이름을 입력하세요.');
		form.nickname.focus();
		return false;
	}
	if (form.nickname.value.length > 50) {
		alert('이름은 50자 이하로 입력하세요.');
		form.nickname.focus();
		return false;
	}
	if (form.logined.value == 'false') {
		if (isBlank(form.password.value)) {
			alert('한글자 이상의 비밀번호를 입력하세요.');
			form.password.focus();
			return false;
		}
		if (form.password.value.search(/\s+/) > -1) {
			alert('비밀번호에 유효하지 않은 문자열(공백)이 들어있습니다.');
			form.password.focus();
			return false;
		}
		if (form.password.value.length > 20) {
			alert('비밀번호는 20자 이하로 입력하세요.');
			form.password.focus();
			return false;
		}
	}
	if (!isBlank(form.blog.value) && (form.blog.value != 'http://')) {
		if (form.blog.value.search(/^http:\/\/((\w|[\-\.])+)\.((\w)+)/) == -1) {
			alert('올바른 형식의 블로그 주소가 아닙니다.');
			form.blog.focus();
			return false;
		}
		if (form.blog.value.length > 200) {
			alert('블로그 주소는 200자 이하로 입력하세요.');
			form.blog.focus();
			return false;
		}
	}
	if (isBlank(form.content.value)) {
		alert('내용을 입력해 주세요.');
		form.content.focus();
		return false;
	}
	
	return true;
}
// 댓글 입력
function insertComment(id){
	var form;
	if (id == null) {
		form = document.commentForm;
	} else {
		form = document.getElementById("replyForm_" + id);
	}
	
	if (!validComment(form)) {
		return;
	}
	
	var formvalues = Form.serialize(form);
	commentAjax('/comment/register.json', formvalues, '댓글 등록');
	form.content.value = '';
	
	if (form.logined.value != 'true') {
		form.password.value = '';
	}
}

// 댓글 삭제 패스워드 확인
function passwordComment(commentId, ref){
	var params = "commentId=" + commentId + "&password=" + document.getElementById("cmtPassChk").value;
	
	new Ajax.Request('/comment/password.json',
	  {
	    method: 'post',
	    encoding: 'UTF-8',
	    parameters: params,
	    onSuccess: function(transport){
			var response = transport.responseJSON || "no response text";
			
			if (response.message.code == widgetbankMessage.SUCCESS) {
				deleteComment(commentId, ref);
			} else {
		      alert(response.message.content);
			};
	    },
	    onFailure: function(){
	      alert(task + ' 작업을 실패하였습니다. 잠시 후 이용해 주십시요.');
	    },
		onException: function(){
		  alert(task + ' 중 오류가 발생하였습니다. 잠시 후 이용해 주십시요.');
		}
	 });
}
// 댓글 삭제
function deleteComment(commentId, ref){
	if (confirm('해당 의견을 삭제 하시겠습니까?')) {
		var logined = document.getElementById("logined_" + commentId).value;
		var params = "widgetId=" + document.commentForm.widgetId.value + "&commentId=" + commentId + "&ref=" + ref;
		if (logined == 'false') {
			params += "&password=" + document.getElementById("cmtPassChk").value;
		}
		commentAjax('/comment/delete.json', params, '댓글 삭제');
	}
}
function showPasswordDiv(commentId, ref, curObj){
	clearRePass();
	var addCmtRe = document.createElement('div');
	addCmtRe.id = 'chkPass';
	var temp = '';

	temp += '<img src="http://pimg.daum-img.net/widgetbank/p_close.gif" width="21" height="21" class="closePass" onclick="this.parentNode.style.display = \'none\';" alt="닫기" />';
	temp += '<p>비밀번호를 입력해주세요.</p>';
	temp += '<div class="cmtPassbox"><input type="password" id="cmtPassChk" name="cmtPassChk" value="" />';
	temp += '<img src="http://pimg.daum-img.net/widgetbank/p_btn_ok.gif" width="39" height="23" class="confirmPass" onclick="cmtPassConfirm(this, ' + commentId + ', ' + ref + ')" alt="확인" /></div>';

	addCmtRe.innerHTML = temp;
	temp = '';
	document.body.appendChild(addCmtRe);

	var tempObj = $(curObj).cumulativeOffset();
	$('chkPass').style.left = tempObj[0] - 160 + 'px';
	$('chkPass').style.top = tempObj[1] + 16 + 'px';
}
function clearRePass(){
	if($('cmtAddCmt')){
		var addCmtRe = $('cmtAddCmt');
		addCmtRe.parentNode.removeChild(addCmtRe);
	}
	if($('chkPass')){
		var addCmtRe = $('chkPass');
		addCmtRe.parentNode.removeChild(addCmtRe);
	}
}
function cmtPassConfirm(curObj, commentId, ref){
	var objPassword = document.getElementById("cmtPassChk");
	if (objPassword.value == '') {
		alert('비밀번호를 입력하세요.');
		objPassword.focus();
		return;
	}
	curObj.parentNode.parentNode.style.display = 'none';
	passwordComment(commentId, ref);
}

// 에디트 상자 보이고 숨기는 함수
function show_edit(index){	
	document.getElementById ('comment_edit_' + index).style.display='';			
}
function hide_edit(index){	
	document.getElementById ('comment_edit_' + index).style.display='none';			
}


// 댓글 채우기
function makeIdeaList(id, nickname, content, auth, date, ref, blog, logined, deleted, commentNum) {
	var strHtml = "";
	strHtml += "<div class=\"ideaId\">";
	if(blog == "") strHtml += nickname;
	else strHtml += "<a href=\""+blog+"\" target=\"_blank\">"+nickname+"</a>";
	strHtml += "</div>";
	strHtml += "<div class=\"ideaContent\">" + content;
	strHtml += "<span class=\"ideaDate\">"+date+"</span></div>";
	
	var functionCount = 0;
	if(id == ref) functionCount += 1; 
	if(auth.deletable) functionCount += 1;
	if(functionCount == 2) {
		strHtml += "<div class=\"cControl detailLineBarL\">";
	} else {
		strHtml += "<div class=\"cControl\">";
	}
	if(auth.deletable) {
		if(id == ref) {
			strHtml += "<span onclick=\"addComment(this, '"+id+"')\" href=\"javascript:;\">답글</span> &nbsp; &nbsp;";
		}
		
		strHtml += "<input type=\"hidden\" id=\"logined_"+id+"\" value=\""+logined+"\" />";
		if(logined) {
			strHtml += "<span onclick=\"deleteComment('"+id+"', '"+ref+"')\" href=\"javascript:;\">삭제</span>";
		} else {
			strHtml += "<span onclick=\"showPasswordDiv('"+id+"', '"+ref+"', this)\">삭제</span></div>";
		}
	} else {
		if((id == ref) && (!deleted)) {
			strHtml += "<span onclick=\"addComment(this, '"+id+"')\" href=\"javascript:;\">답글</span>";
		}
	}
	strHtml += "</div>";
	
	if (id == ref) {
		var liObj = getDomObject("li");
		liObj.id = "parentIdea_" + id;
		liObj.innerHTML = strHtml;
		document.getElementById("ideaList").appendChild(liObj);
	} else {
		var liObj = document.getElementById("parentIdea_"+ref);
		if (liObj == null) {
			liObj = getDomObject("li");
			liObj.id = "parentIdea_" + ref;
			if ((commentNum > 0) || (deleted)) {
				liObj.innerHTML = "<div class=\"ideaDeleted\">해당 댓글은 삭제되었습니다.</div>";
			}
			document.getElementById("ideaList").appendChild(liObj);
		}
		
		var divObj = getDomObject("div");
		divObj.className = "cmtListRe";
		divObj.innerHTML = strHtml;
		liObj.appendChild(divObj);
	}
}
// 댓글 비우기
function clearIdeaList() {
	var obj = document.getElementById("ideaList");
	while(obj.firstChild) obj.removeChild(obj.firstChild);
}


//댓글 글자수 체크하기

var charDb = "";
var length_limit;
var srcObj;
var outTxt;
var charTimer = null;

function clearCharTimer(){
	if(charTimer!=null && charTimer!="undefined"){
		clearTimeout(charTimer); 
		charTimer = null;
	}
}

var charDb = "";
function UpdateCharInit(p_length_limit, p_srcObj, p_outTxt){
	length_limit = p_length_limit;
	srcObj = p_srcObj;
	outTxt = p_outTxt;
	UpdateChar();
}

function UpdateChar(){
	try {
		var comment = document.getElementById(srcObj);
		if(charDb != comment.value) {
			charDb = comment.value;
			var length = calculate_msglen(comment.value);
			document.getElementById(outTxt).innerHTML = length;
			if (length > length_limit) {
				alert("최대 " + length_limit + "byte이므로 초과된 글자수는 자동으로 삭제됩니다.");
				comment.value = comment.value.replace(/\r\n$/, "");
				comment.value = assert_msglen(comment.value, length_limit, outTxt);
			}
		}
		charTimer = setTimeout("UpdateChar()",10);
	} catch(e) {}
}

// ~댓글 글자수 체크하기
