/**
 * @author hyunts
 */
 
var win;
var maxImgWidth=625;
function resizeImage(img) {
	if(img.width > maxImgWidth) {
		img.width = maxImgWidth;
	}
}



function popView(imgUrl) {
	window.open("/common/viewImage?imageUrl="+imgUrl, "popView", "width=400, height=300, scrollbars=yes")
}

var gSubmitcount = 0;
var attachFileList = null;
var isImageAttach = false;

function checkImageAttach() {
	if(!isImageAttach) {
		alert('이미지를 첨부해주세요.');
		return false;
	}
	return true;
}
 
function checkCategorySubmit() {	
	var frm = document.articleForm;
	var tmp=0;

	for(var i=0;i<frm.category.length;i++){	
		if(i > 0 && frm.category[i].selected == true){
			tmp++;
		}
	}
    
    if (true == frm.category.disabled) {
	    frm.category.disabled = true;
	}
	
	if(tmp > 0) {
		return true;
	}else {
		
		alert('게시물 분류를 선택해주세요.');
		frm.category.focus();
		return false;
	}	
}

function initCategory() {
   	var frm = document.articleForm;
    frm.category.disabled = false;
}

function CheckConfirmSubmit() {

	try {	 	
		if (gSubmitcount > 0)
			return false;
		gSubmitcount++;

		document.getElementById('content').value = EditContent();
		if(attachFileList != null) {
			var thumbnailSet = false;
			for ( idx=0; idx < attachFileList.length; ++idx ) {
				var fileinfo = attachFileList[idx];
				if(!thumbnailSet 
					&& htmlEditor.document.body.innerHTML.indexOf(fileinfo.id) > -1) {
					document.getElementById('thumbnailFileID').value = fileinfo.id;
					thumbnailSet = true;
				}
			}
		}
		if(document.getElementById('title').value == null ||
			document.getElementById('title').value.trim() == '') {
			alert('제목을 입력해 주세요.');
			document.getElementById('title').focus();
			return false;
		}
		if(document.getElementById('content').value == null ||
			document.getElementById('content').value.trim() == '') {
			alert('내용을 입력해 주세요.');
			htmlEditor.focus();
			return false;
		}
		return true;
	}
	catch (e) {
		alert('예기치 않은 오류가 발생했습니다.\n 메시지:'+e.message);
		return false;
	}
}
/*
function OnImageUploaded() {
	setImageInfo();
}

function setImageInfo() {
	new Ajax.Request("TokenFileInfo", {method:'post',parameters:'token='+parent.document.all.token.value, onComplete: ajax_fileinfo});
}

function ajax_fileinfo(request) {		
	try {
		attachFileList = eval(request.responseText);
		var thumbnailSet = false;

		for ( idx=0; idx < attachFileList.length; ++idx ) {
			var fileinfo = attachFileList[idx];
			if(fileinfo.name.indexOf('_t') == -1 &&
				document.getElementById('attachmentList').innerHTML.indexOf(fileinfo.name) == -1 ) {
				var html = "<div class='attachment'>"+fileinfo.name+" ("+fileinfo.size+" bytes)</div>";
				document.getElementById('attachmentList').innerHTML += html;
				insertImage(fileinfo.fileURL);
			}
			if(!thumbnailSet 
				&& htmlEditor.document.body.innerHTML.indexOf(fileinfo.id) > -1) {
				document.getElementById('thumbnailFileID').value = fileinfo.id;
				thumbnailSet = true;
			}
			
			isImageAttach = true;
		}
	} catch(e) {
		alert(e.description);
	}
}
*///
function addPoll() {
	window.open("makepoll", "poll", "width=400,height=400,toolbar=no,location=no,status=yes,menubar=no,top=10,left=50,scrollbars=yes,resizable=no");
}

function delPoll() {
	document.articleForm.poll_titles.value = null;
	document.articleForm.poll_answers.value = null;
	document.articleForm.poll_answerCount.value = "";
	document.all.btnDelPoll.style.display = "none";
	document.all.btnPoll.style.display = "inline";
	
}


function checkCommentLogin() {

	try {
		if(req.responseText != 'true') {
			//alert('댓글을 남기시려면 로그인을 해주세요.');
			goUrl(web_login + "&return_url=" + escape(window.location));
			return;
		}
	} catch(e) {
		if(req.readyState == 4 && req.status == 200) 
			alert('예기치 않은 오류가 발생했습니다.\n 메시지:'+e.message);
	}
}

function commentCheck(){
	var content = document.getElementById('content');
	if(content == null || content.value.trim() == '') {
		alert('댓글을 입력해 주세요.');
		content.focus();
		return false;
	}
	if(content.value.length > 1000) {
		alert('댓글은 300자까지만 가능합니다.');
		content.value = content.value.substring(0,300);
		content.focus();
		return false;
	}
	if(content.value.length < 2) {
		alert('댓글은 2자 이상 입력해야합니다.');
		content.focus();
		return false;
	}
	return true;
}

var gCommentSubmitcount = 0;
function checkComment() {
	try {
		if (gCommentSubmitcount > 0)
			return false;
			
		if(req.responseText != 'true') {
			alert('댓글을 남기시려면 로그인을 해주세요.');
			//location.reload();
			goUrl(web_login + "&return_url=" + escape(window.location));
			return;
		} else {
			if(commentCheck()){			
				//channel,hostname,uri_part defined in GNB
				/*
				if(channel == 1){	//yahoo		
					var params = Form.serialize('WriteComment');		
					goUrl(web_login + "&return_url="  + escape('http://'+hostname+uri_part+'writeComment?'+params) );
						
			
				} else {			//plaync
				*/
					gCommentSubmitcount++;
					document.getElementById('WriteComment').action = "writeComment";
					document.getElementById('WriteComment').submit();			
				//}			
			}
			
		}

	}
	catch(e) {
		if(req.readyState == 4 && req.status == 200) 
			alert('예기치 않은 오류가 발생했습니다.\n 메시지:'+e.message);
	}
}

function deleteComment(articleID, idx, subIdx) {
	if(confirm('댓글을 삭제하시겠습니까?')) {
		//location.href = 'deleteComment?articleID='+articleID+'&idx='+idx+'&subidx='+subIdx+'&queryString=articleID%3D'+articleID;
		var command = 'deleteComment?articleID='+articleID+'&idx='+idx+'&subidx='+subIdx+'&queryString=articleID%3D'+articleID;
		loginCheckAndGoUrl(command);
	
	}
}

function deleteArticle(articleID) {
	if(confirm('게시글을 삭제하시겠습니까?')) {
		//location.href = 'deleteArticle?articleID='+articleID;
		var command = 'deleteArticle?articleID='+articleID;
		loginCheckAndGoUrl(command);	
	}
}

function getXMLHttpRequest() {
	return Try.these(
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
      function() {return new ActiveXObject('Microsoft.XMLHTTP')},
      function() {return new XMLHttpRequest()}
    ) || false;
}
var req = null;
function checkLogin(funcName) {
/*	req = null;
	req = getXMLHttpRequest();
	req.open("GET","/common/inc/loginCheck",true);
	req.onreadystatechange = eval(funcName);
	req.send(null);
*/
	new Ajax.Request(	"/common/inc/loginCheck", {	
					method:'get',
					encoding: 'UTF-8',
					onComplete: function(result) {
						req = result;
						eval(funcName+'()');
					},
					onFailure: function() {	alert("로그인여부 호출에 실패했습니다.");	}
											}
			);	// end of Ajax.Request()
}
var req2 = null;
function checkPoll() {
	if(req.readyState == 4 && req.status == 200) {
		try {
			if(req.responseText != 'true') {
				alert('시간이 경과되어 로그아웃되었습니다.\n로그인을 다시 해주세요.');
				location.reload();
				return;
			}
			var answers = document.getElementsByName('answerID');
			var isSelected = false;
			var answerID = null;
			var pollID = document.getElementById('pollID').value;
			for(i=0; i<answers.length; i++) {
				if(answers[i].checked) {
					isSelected = true;
					answerID = answers[i].value;
				}
			}
			if(!isSelected) {
				alert('투표의 답변을 선택해 주세요.');
				return;
			}
			req2 = null;
			req2 = getXMLHttpRequest();
			req2.open("GET","/community/discussion/Poll?pollID="+pollID+"&answerID="+answerID,true);
			req2.onreadystatechange = completePollVote;
			req2.send(null);
		}
		catch(e) {
			alert('예기치 않은 오류가 발생했습니다.\n 메시지:'+e.message);
		}
	}
}

function completePollVote() {
	if(req2.readyState == 4 && req2.status == 200) {
		var result = eval(req2.responseText);
		if(result == 0) {
			alert('이미 투표에 참여하셨습니다.');
		}
		else if(result == -1) {
			alert('진행중이지 않은 토론입니다.');
		}
		else if(result == 1) {
			alert('투표 참여가 완료되었습니다.');
		}
	}
	else if(req.readyState == 4 && req.status == 200 && req.responseText == '') {
		alert('예기치 않은 오류가 발생했습니다.');
		location.reload();
	}
	
}


function checkSpecialChar(searchKeyword){ 
	var reg = new RegExp("^[^\x00-\x1f\x21-\x26\x28-\x2d\x2f-\x40\x5b-\x60\x7b-\xff]+$", "ig");
	if (!reg.test(searchKeyword)) {
		alert("특수문자를 검색어로 사용할 수 없습니다.");
		return false;
	}
}
				
/*function checkSpecialChar(word){ var reg = new RegExp("^[^\x00-\x1f\x21-\x26\x28-\x2d\x2f-\x40\x5b-\x60\x7b-\xff]+$", "ig");	if (!reg.test(word)) {return false;} }*/


// 아래부터는 snow3.js의 것을 가져옴 (flashImageEditor붙이기위함)

var AttachmentList = {};
Object.extend(AttachmentList, (function() {

	var attachedFilesInContent = new Array();

	function addAttachToContentHistory(fileName) {
		attachedFilesInContent.push(fileName);
	}

	function isAttachedFileInContent(fileName) {
		for(var i = 0; i < attachedFilesInContent.length; i++) {
			if (attachedFilesInContent[i].name == fileName || attachedFilesInContent[i].url == fileName) return true;
		}
		return false;
	}

	function getAttachmentList(callback) {
		var tokenObj = document.getElementById('token');
		if(tokenObj == null) {
			alert("token required");
			return;
		}

		new Ajax.Request(BoardAction.uploadFileInfo, {
			method:'post',
			parameters: { token: tokenObj.value },
			onComplete: function(request) {
				try {
					displayAttachmentHTML(request.responseText);
					if(callback != null)
						callback(request.responseText);
				} catch(e) {
					alert("[ERROR in getAttachmentList] " + e.description);
				}
			}
		});
	}

	function displayAttachmentHTML(attachmentList) {
		try {
			var attachmentList = eval(attachmentList);
			var html = "";

			var fileAttachedForArticleList = document.getElementById("fileAttachedForArticleList");
			if (fileAttachedForArticleList != null)
				fileAttachedForArticleList.value = "";

			for(var i = 0; i < attachmentList.length; i++) {
				var attachment = attachmentList[i];

				if(!isAttachedFileInContent(attachment.fileURL)) {
					if (fileAttachedForArticleList != null)
						fileAttachedForArticleList.value += attachment.fileURL + ";"
					html += String.format("<div><a href=\"attachment?fileID={0}\">{1} ({2} bytes)</a>&nbsp;<a href=\"javascript:Attachment.remove('{0}');\">[삭제]</a></div>", attachment.id, attachment.name, attachment.size);
				}
			}

			var attachmentContainer = document.getElementById("attachment_list");
			if(attachmentContainer == null) {
				alert("attachment_list element not found.");
			}
			attachmentContainer.innerHTML = html;
		} catch(e) {
			alert("[ERROR in displayAttachmentHTML] " + e.description);
		}
	}

	return {
		/**
		 * 첨부된 파일 목록을 갱신한다.
		 */
		refreshAttachmentList : function(callback) {
			getAttachmentList(callback);
		},
		/**
		 * 이미지 에디터로 첨부한 이미지를 본문에 추가한다.
		 */
		insertUploadedImageToEditor : function() {
			var token = document.getElementById("token").value;
			new Ajax.Request(BoardAction.fileinfo, {
				method : 'post',
				parameters : 'token=' + token,
				onComplete : function(transport) {
					try {
						// [{id: "", name: "", size: "", fileURL: "", thumbnailURL: ""}]
						var attachFileList = eval(transport.responseText);
						var divAttachment = document.getElementById("attachment_list");

						for (var i = 0; i < attachFileList.length; i++) {
							var fileInfo = attachFileList[i];
							if (/*게시물 첨부파일이 아닌경우 */
								divAttachment.innerHTML.indexOf(fileInfo.name) == -1 &&
								/*이미 첨부된 파일이 아닌경우*/
								!isAttachedFileInContent(fileInfo.name)) {
								// 내용에 이미지 추가.
								insertImage(fileInfo.fileURL);
								// 본문에 첨부한 파일 히스토리를 남긴다.
								addAttachToContentHistory({'name' : fileInfo.name, 'url' : fileInfo.fileURL});
							}
						}
					} catch(e) { alert(e.description); }
				}
			});
		},
		/**
		 * 본문에 첨부된 파일 히스토리 추가.
		 */
		addAttachToContentHistory : function(fileName, fileURL) {
			addAttachToContentHistory({'name' : fileName, 'url' : fileURL});
		}
	}
})());


// call from image editor
function OnImageUploaded() {
	AttachmentList.insertUploadedImageToEditor();
}

// for attachment, for _upload.jsp
function getUploadUrl() {
	return g_strImageUploadActionPage;
}
