﻿//문자열 길이 체크 알파뉴메릭(1자리), 한글(2자리)
function getStringLength (str)
{
 var retCode = 0;
 var strLength = 0;

 for (i = 0; i < str.length; i++)
 {
  var code = str.charCodeAt(i)
  var ch = str.substr(i,1).toUpperCase()

  code = parseInt(code)

  if ((ch < "0" || ch > "9") && (ch < "A" || ch > "Z") && ((code > 255) || (code < 0)))
   strLength = strLength + 2;
  else
   strLength = strLength + 1;
 }
 return strLength;
}

function onCheckForm(form){
/*
	onCheckForm(form)
	정의된 속성
	description : 이름
	useEdit	: edit 연동여부

	require : 필수 체크
	valueType : 입력값 형식(한글:1/영문:2/숫자:4)

	minLengthValue : 최소길이
	maxLengthValue : 최대길이

	minValue : 최소값(단순비교)
	maxValue : 최대값(단순비교)

	allowFile : 파일타입일때 허용할 확장자 (,로 구분)

description|useEdit|require|valueType|minLengthValue|maxLengthValue|minValue|maxValue|allowFile

\.(description|useEdit|require|valueType|minLengthValue|maxLengthValue|minValue|maxValue|allowFile)
\.(description|useEdit|require|valueType|minLengthValue|maxLengthValue|minValue|maxValue|allowFile)
.getAttribute("$1")
*/

	if(form.getAttribute("_submitOk")==true){
		alert("처리중 입니다.");
		return false;
	}
	var tmpStr="";
	var i = 0;

	for(i=0; i<form.length; i++){
		var itemName = "";
		var formValue = form[i].value;
		var beforeCheck = true;
		var tmpMessage = "";

		// 에디터면 에디터포커스 함수로 오버로딩.. 라이딩이던가 ㅠㅠ
		if(form[i].getAttribute("useEdit")=="true" && typeof(editorfocus)=="function"){
			form[i].focus = new Function(editorfocus(form[i].name));
		}

		// 항목 이름
		if(form[i].getAttribute("description") != null){
			itemName = form[i].getAttribute("description");
		}else{
			itemName = "해당 항목은";
		}

		// 필수 체크
		if(form[i].getAttribute("require") == "true"){
			if(formValue.replace(/\s/g,'').length==0){
				tmpMessage = "반드시 입력해야 합니다.";
				beforeCheck = false;
			}
		}

		// 입력값 형식 체크
		if(form[i].getAttribute("valueType") != null && beforeCheck == true ){
			var tmpPattern = ""
			var tmpTypeDescription = ""
			switch(Number(form[i].getAttribute("valueType"))){
				case 1:
					tmpPattern += " ";
					tmpPattern += "ㄱ-ㅎ가-힣";
					tmpTypeDescription = "한글";
					break;
				case 2:
					tmpPattern += " ";
					tmpPattern += "a-zA-Z";
					tmpTypeDescription = "영문";
					break;
				case 3:
					tmpPattern += " ";
					tmpPattern += "ㄱ-ㅎ가-힣";
					tmpPattern += "a-zA-Z";
					tmpTypeDescription = "한글,영문";
					break;
				case 4:
					tmpPattern += ".";
					tmpPattern += "0-9";
					tmpTypeDescription = "숫자";
					break;
				case 5:
					tmpPattern += " .";
					tmpPattern += "ㄱ-ㅎ가-힣";
					tmpPattern += "0-9";
					tmpTypeDescription = "한글,숫자";
					break;
				case 6:
					tmpPattern += " .";
					tmpPattern += "a-zA-Z";
					tmpPattern += "0-9";
					tmpTypeDescription = "영문,숫자";
					break;
				case 7:
					tmpPattern += " -.,";
					tmpPattern += "ㄱ-ㅎ가-힣";
					tmpPattern += "a-zA-Z";
					tmpPattern += "0-9";
					tmpTypeDescription = "한글,영문,숫자";
					break;
			}
			var re = new RegExp("^["+tmpPattern+"]*$", "igm");		

			if(tmpTypeDescription!=""){

				if(re.test(formValue)==false){
					tmpMessage = tmpTypeDescription + "만 입력하셔야 합니다.";
					beforeCheck = false;
				}
			}

		}

		// 길이 체크(2byte 지원해야함)
		if(form[i].getAttribute("minLengthValue")==null && form[i].getAttribute("maxLengthValue")!=null){
			if(getStringLength(formValue)>form[i].getAttribute("maxLengthValue")){
				tmpMessage = form[i].getAttribute("maxLengthValue") + "Byte 이하로 입력하셔야 합니다. (한글1글자 = 2Byte, 현재 "+getStringLength(formValue)+"Byte)";
				beforeCheck = false;
			}
		}else if(form[i].getAttribute("maxLengthValue")==null && form[i].getAttribute("minLengthValue")!=null){
			if(getStringLength(formValue)<form[i].getAttribute("minLengthValue")){
				tmpMessage = form[i].getAttribute("minLengthValue") + "Byte 이상 입력하셔야 합니다. (한글1글자 = 2Byte, 현재 "+getStringLength(formValue)+"Byte)";
				beforeCheck = false;
			}
		}else if(form[i].getAttribute("minLengthValue")!=null && form[i].getAttribute("maxLengthValue")!=null){
			if(getStringLength(formValue)>form[i].getAttribute("maxLengthValue") || getStringLength(formValue)<form[i].getAttribute("minLengthValue")){
				tmpMessage = form[i].getAttribute("minLengthValue") + " ~ " + form[i].getAttribute("maxLengthValue") + "Byte 범위에서 입력하셔야 합니다. (한글1글자 = 2Byte, 현재 "+getStringLength(formValue)+"Byte)";
				beforeCheck = false;
			}
		}

		// 범위 체크(단순비교)
		if(isNaN(formValue)&&isNaN(form[i].mixValue)){
			if(form[i].getAttribute("minValue")==null && form[i].getAttribute("maxValue")!=null){
				if(formValue>form[i].getAttribute("maxValue")){
					tmpMessage = form[i].getAttribute("maxValue") + "자 이하로 입력하셔야 합니다.";
					beforeCheck = false;
				}
			}else if(form[i].getAttribute("maxValue")==null && form[i].getAttribute("minValue")!=null){
				if(formValue<form[i].getAttribute("minValue")){
					tmpMessage = form[i].getAttribute("minValue") + "자 이상 입력하셔야 합니다.";
					beforeCheck = false;
				}
			}else if(form[i].getAttribute("minValue")!=null && form[i].getAttribute("maxValue")!=null){
				if(formValue>form[i].getAttribute("maxValue") || formValue<form[i].getAttribute("minValue")){
					tmpMessage = form[i].getAttribute("minValue") + " ~ " + form[i].getAttribute("maxValue") + "자 범위에서 입력하셔야 합니다.";
					beforeCheck = false;
				}
			}
		}else{
			if(form[i].getAttribute("minValue")==null && form[i].getAttribute("minValue")!=null){
				if(formValue>form[i].getAttribute("maxValue")){
					tmpMessage = form[i].getAttribute("maxValue") + " 이하로 입력하셔야 합니다.";
					beforeCheck = false;
				}
			}else if(form[i].getAttribute("maxValue")==null && form[i].getAttribute("minValue")!=null){
				if(formValue<form[i].getAttribute("minValue")){
					tmpMessage = form[i].getAttribute("minValue") + " 이상 입력하셔야 합니다.";
					beforeCheck = false;
				}
			}else if(form[i].getAttribute("minValue")!=null && form[i].getAttribute("minValue")!=null){
				if(formValue>form[i].getAttribute("maxValue") || formValue<form[i].getAttribute("minValue")){
					tmpMessage = form[i].getAttribute("minValue") + " ~ " + form[i].getAttribute("maxValue") + " 범위에서 입력하셔야 합니다.";
					beforeCheck = false;
				}
			}

		}

		// 첨부파일 형식 체크

		if(form[i].type=="file" && form[i].getAttribute("allowFile")!=null && form[i].value != ""){

			var arrAlllowFile = (form[i].getAttribute("allowFile")+",").split(",");
			var allowFilename = "";
			var afIdx = 0;
			var afResult = false;

			for(afIdx=0; afIdx<arrAlllowFile.length; afIdx++){
				if(arrAlllowFile[afIdx]!=""){
					if(afResult==false){
        				if(form[i].value.toLowerCase().lastIndexOf("."+arrAlllowFile[afIdx].toLowerCase())>0){
        					afResult=true;
        				}
					}
    				allowFilename += arrAlllowFile[afIdx]+",";
				}
			}

			allowFilename = allowFilename.substr(0,allowFilename.length-1);
			if(afResult==false){

				tmpMessage = allowFilename + " 형식의 파일만 업로드 하실 수 있습니다.";
				beforeCheck = false;
			}
		}



		if(tmpMessage!=""){
			alert(itemName + " " + tmpMessage);
			form[i].focus();
			return false;
		}
	}

	form._submitOk = true;
//	form.submit();
	return true;
}

function onSearchForm(form){
  if(form.SearchWord.value==""){
    alert("검색어를 입력해 주세요.");
    form.SearchWord.focus();
    return false;
  }
  return true;
}

function checkAll(objID){
	if(typeof(document.all[objID])=='undefined')
	return;

	if(typeof(document.all[objID].length)=='undefined'){
		document.all[objID].checked = true;
	}else{
		for(i=0; i<document.all[objID].length; i++){
			if(typeof(document.all[objID][i].checked)!='undefied')
				document.all[objID][i].checked = true;
		}
	}
}

function getCheckValue(objID){
	if(typeof(document.all[objID])=='undefined')
	return;

	var result = "";

	if(typeof(document.all[objID].length)=='undefined'){
		if(document.all[objID].checked == true)
			result = document.all[objID].value + ',';
		else
			result = '';
	}else{
		for(i=0; i<document.all[objID].length; i++){
			if(document.all[objID][i].checked == true)
				result += document.all[objID][i].value + ',';
		}
	}

	return result;
}

function getUnCheckValue(objID){
	if(typeof(document.all[objID])=='undefined')
	return;

	var result = "";

	if(typeof(document.all[objID].length)=='undefined'){
		if(document.all[objID].checked == false)
			result = document.all[objID].value + ',';
		else
			result = '';
	}else{
		for(i=0; i<document.all[objID].length; i++){
			if(document.all[objID][i].checked == false)
				result += document.all[objID][i].value + ',';
		}
	}

	return result;
}

function createXMLHttpRequest() {
	if (window.ActiveXObject) {
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else if (window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();                
	}
}

function setImageViewer(imgViewerID, imgUrl){

	var imgViewer = document.getElementById(imgViewerID);
	var imgView = new Image();
	imgView.src = imgUrl;

	imgView.onload = function(){
		if(imgView.width>540){
			imgViewer.width = 540;
		}else{
			imgViewer.width = imgView.width;
		}
		imgViewer.src = imgView.src;
		imgViewer.onclick = function(){
			javascript:openimg(this.src);
		}
		imgViewer.style.cursor = "hand"
	}
}

function imgResizeForBody(viewId){
	var arrImg = document.getElementById(viewId).getElementsByTagName("img");
	for(var i=0; i<arrImg.length; i++){
		if(arrImg[i].width>540) arrImg[i].width = 540;
		arrImg[i].onclick = function(){
			javascript:openimg(this.src);
		}
		arrImg[i].style.cursor = "hand"
	}
	var arrA = document.getElementById(viewId).getElementsByTagName("a");
	for(var i=0; i<arrA.length; i++){
		arrA[i].target = "_blank"
	}
}

function StripQuerystring(keyNames) {
    var querystring = location.search;
    if (querystring.length > 0) {
        querystring = querystring.substring(1, querystring.length);
    }
    
    var params = querystring.split("&");
    for (var i=0; i < keyNames.length; i++) {
        for (var j=0; j < params.length; j++) {
            var param = params[j].split("=");
            if (param[0] == keyNames[i]) {
                params[j] = "";
            }
        }
    }
    
    var newQuery = "";
    for (var i=0; i < params.length; i++) {
        if (params[i] != "") {
            newQuery += "&" + params[i];
        }
    }
    
    return (newQuery.length > 0) ? newQuery.substring(1, newQuery.length) : "";
}