/* Validator */
var validator = function() {};

validator = {
	checkPeriod:function(oForm, beginDate, endDate)
	{
		if (beginDate == undefined)
			beginDate = 'begin_date';

		if (endDate == undefined)
			endDate = 'end_date';

		var strBeginDate = g(beginDate).value;
		var strEndDate = g(endDate).value;

		if (strBeginDate == "")
			strBeginDate = g(beginDate).value = g(endDate).value;

		if (strEndDate == "")
			strEndDate = g(endDate).value = g(beginDate).value;

		var arrBeginDate = strBeginDate.split("-");
		var arrEndDate = strEndDate.split("-");

		for (var k in arrBeginDate)
			arrBeginDate[k] = arrBeginDate[k] * 1;

		for (var k in arrEndDate)
			arrEndDate[k] = arrEndDate[k] * 1;

		if (arrBeginDate[0] > arrEndDate[0] || 
			(arrBeginDate[0] == arrEndDate[0] && arrBeginDate[1] > arrEndDate[1]) || 
			(arrBeginDate[0] == arrEndDate[0] && arrBeginDate[1] == arrEndDate[1] && arrBeginDate[2] > arrEndDate[2]) )
		{
			alert(sn2nl('설정된 기간 정보가 올바르지 않습니다.\n시작되는 날짜가 종료되는 날짜보다 늦을 수 없습니다.\n기간을 조정해 주십시오.'));
			return false;
		}

		return true;
	},
	list:function(oForm)
	{
		return true;
	},
	importForm:function(oForm)
	{
		var arrFiles = uploader.GetUploadFiles();

		if (arrFiles.length < 1)
		{
			alert("게시판 일괄 등록 패키지 파일을 선택하세요.");
			return false;
		}

		if (uploader.IsUploadingStatus())
		{
			alert("파일을 업로드하고 있습니다.\n\n파일 업로드가 완료되면, 버튼을 눌러주십시오.");
			return false;
		}

		var oTmpForm = new AnonymForm();
		oTmpForm._form = oForm;

		for (var i = 0; i < arrFiles.length; i++)
			oTmpForm.setValue('package[]', arrFiles[i].name);

		return true;
	},
	form:function(oForm)
	{
		if (oForm.bbsID.value.toString().trim() == "")
		{
			alert("게시판 ID를 입력하세요.\n\n게시판 ID는 영어(대/소문자 구별 없음), 숫자를 사용하여 최대 32자까지 만들 수 있습니다.");
			oForm.bbsID.focus();
			return false;
		}
		else if (!/^[a-zA-Z0-9\-_]+$/.test(oForm.bbsID.value))
		{
			alert("게시판 ID는 영어(대/소문자 구별 없음), 숫자를 사용해서 만드셔야 합니다.");
			oForm.bbsID.focus();
			return ;
		}

		if (oForm.name.value.toString().trim() == "")
		{
			alert("게시판 이름을 입력하세요.\n\n게시판 이름은 최대 32byte까지 입력 가능합니다.");
			oForm.name.focus();
			return false;
		}

		if (oForm.mode.value == "insert")
		{
			var bbsType = getRadioValue(oForm.bbs_type);

			// 일반 게시판이거나 설문조사 게시판이라면, 화면 당 게시물 표시 수를 입력해야 합니다.
			if (bbsType == "normal" || bbsType == "poll")
			{
				if (oForm.page_view.value == "")
				{
					alert("화면당 게시물 표시 수를 입력하세요.");
					oForm.page_view.focus();
					return false;
				}

				if (!isNumber(oForm.page_view.value))
				{
					alert("화면당 게시물 표시 수를 숫자로 입력하세요.");
					oForm.page_view.focus();
					return false;
				}
			}
		}

		return true;
	},
	categoryForm:function(oForm)
	{
		if (oForm.category_name.value.toString().trim() == "")
		{
			alert("추가할 게시물 분류 명을 입력하세요.")
			oForm.category_name.focus();
			return false;
		}

		return true;
	},
	topicForm:function(oForm)
	{
		// 비 로그인 사용자에게는 이름/패스워드 체크
		if (isLogined == false)
		{
			if (oForm.author.value.toString().trim() == "")
			{
				alert("게시물 작성자 이름을 입력하세요.");
				oForm.author.focus();
				return false;
			}

			if (oForm.passwd.value.toString().trim() == "")
			{
				if (oForm.mode.value == "insert")
				{
					alert("게시물 수정/삭제 시, 사용할 패스워드를 입력하세요.");
				}
				else
				{
					alert("게시물 등록 시 입력한 패스워드를 입력하세요.");
				}

				oForm.passwd.focus();
				return false;
			}
		}

		if (oForm.title.value.toString().trim() == "")
		{
			alert("제목을 입력하세요.");
			oForm.title.focus();
			return false;
		}

		var oTmpForm = new AnonymForm();
		oTmpForm._form = oForm;

		if (in_array(oForm.mode.value, ['insert', 'reply']) && oForm.bbs_type.value == "poll")
		{
			if (oForm.begin_date.value == "" || oForm.due_date.value == "")
			{
				alert('설문 기간을 선택해 주세요.');
				return false;
			}

			if (this.checkPeriod(oForm, 'begin_date', 'due_date') == false)
				return false;

			var arrItems = getInputValues('poll_item');

			if (arrItems.length < 2)
			{
				alert("선택 항목은 최소 2개 이상 등록되어 있어야 합니다.");
				return false;
			}
		}

		// 음성 게시판의 경우, 음성 녹음 여부 확인
		if (oForm.bbs_type.value == 'voice')
		{
			if (voiceRecord.getFilePath() == '')
			{
				alert('음성 녹음 후, 버튼을 누르세요.');
				return false;
			}

			if (!voiceRecord.postMp3())
			{
				alert('녹음된 음성을 서버로 전송하는 과정에서 오류가 발생했습니다.');
				return false;
			}
		}

		if (uploader.IsUploadingStatus())
		{
			alert("파일을 업로드하고 있습니다.\n\n파일 업로드가 완료되면, 버튼을 눌러주십시오.");
			return false;
		}

		// 플래시 업로더를 통해 업로드된 파일을 hidden 값으로 전달한다.
		var arrFiles = uploader.GetUploadFiles();

		if (arrFiles.length > 0)
		{
			for (var i = 0; i < arrFiles.length; i++)
			{
				oTmpForm.setValue('upload[]', arrFiles[i].name);
			}
		}

		// 게시물 열람자 제한 기능
		if (g('use_readerable_user_list'))
		{
			var arrUser = readerableListCtl.getUserIdList();

			for (var i = 0; i < arrUser.length ; i++ )
			{
				oTmpForm.setValue('readerable_user_id[]', arrUser[i]);
			}
		}

		return true;
	},	
	counselTopicForm:function(oForm)
	{
		// 비 로그인 사용자에게는 이름/패스워드 체크
		if (isLogined == false)
		{
			if (oForm.author.value.toString().trim() == "")
			{
				alert("게시물 작성자 이름을 입력하세요.");
				oForm.author.focus();
				return false;
			}

			if (oForm.passwd.value.toString().trim() == "")
			{
				if (oForm.mode.value == "insert")
				{
					alert("게시물 수정/삭제 시, 사용할 패스워드를 입력하세요.");
				}
				else
				{
					alert("게시물 등록 시 입력한 패스워드를 입력하세요.");
				}

				oForm.passwd.focus();
				return false;
			}
		}

		if (oForm.title.value.toString().trim() == "")
		{
			alert("제목을 입력하세요.");
			oForm.title.focus();
			return false;
		}

		var oTmpForm = new AnonymForm();
		oTmpForm._form = oForm;

		if (in_array(oForm.mode.value, ['insert', 'reply']) && oForm.bbs_type.value == "poll")
		{
			if (oForm.begin_date.value == "" || oForm.due_date.value == "")
			{
				alert('설문 기간을 선택해 주세요.');
				return false;
			}

			if (this.checkPeriod(oForm, 'begin_date', 'due_date') == false)
				return false;

			var arrItems = getInputValues('poll_item');

			if (arrItems.length < 2)
			{
				alert("선택 항목은 최소 2개 이상 등록되어 있어야 합니다.");
				return false;
			}
		}

		// 음성 게시판의 경우, 음성 녹음 여부 확인
		if (oForm.bbs_type.value == 'voice')
		{
			if (voiceRecord.getFilePath() == '')
			{
				alert('음성 녹음 후, 버튼을 누르세요.');
				return false;
			}

			if (!voiceRecord.postMp3())
			{
				alert('녹음된 음성을 서버로 전송하는 과정에서 오류가 발생했습니다.');
				return false;
			}
		}

		if (uploader.IsUploadingStatus())
		{
			alert("파일을 업로드하고 있습니다.\n\n파일 업로드가 완료되면, 버튼을 눌러주십시오.");
			return false;
		}

		// 플래시 업로더를 통해 업로드된 파일을 hidden 값으로 전달한다.
		var arrFiles = uploader.GetUploadFiles();

		if (arrFiles.length > 0)
		{
			for (var i = 0; i < arrFiles.length; i++)
			{
				oTmpForm.setValue('upload[]', arrFiles[i].name);
			}
		}

		if(g('readerable_user_id').value == '')
		{
			alert('선생님을 선택하세요');
			return false;
		}
		// 게시물 열람자 제한 기능
		oTmpForm.setValue('readerable_user_id[]', g('readerable_user_id').value);

		return true;
	},
	replyDeleteForm:function(oForm)
	{
		if (oForm.passwd.value.toString().trim() == "")
		{
			alert("덧글 등록 시, 입력한 패스워드를 입력하세요.");
			oForm.passwd.focus();
			return false;
		}
		
		if (confirm("선택하신 덧글을 삭제하시겠습니까?") == false)
			return false;

		return true;
	},
	topicDeleteForm:function(oForm)
	{
		if (oForm.passwd.value.toString().trim() == "")
		{
			alert("게시물 등록 시, 입력한 패스워드를 입력하세요.");
			oForm.passwd.focus();
			return false;
		}
		
		if (confirm("선택하신 게시물을 삭제하시겠습니까?") == false)
			return false;

		return true;
	}
};


