/* Validator */
var validator = function() {};

validator = {
	checkPeriod:function(oForm, beginDate, endDate)
	{
		if (beginDate == undefined)
			beginDate = 'begin_date';

		if (endDate == undefined)
			endDate = 'end_date';

		var strBeginDate = $(beginDate).value;
		var strEndDate = $(endDate).value;

		if (strBeginDate == "")
			strBeginDate = $(beginDate).value = $(endDate).value;

		if (strEndDate == "")
			strEndDate = $(endDate).value = $(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(loadString('MSG_INVALID_PERIOD')));
			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 (oForm.title.value.toString().trim() == "")
		{
			alert("제목을 입력하세요.");
			oForm.title.focus();
			return false;
		}

		var oTmpForm = new AnonymForm();
		oTmpForm._form = oForm;

		if (in_array(['insert', 'reply'], oForm.mode.value) && 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);
			}
		}

		return true;
	}
};

