// ===============================================================================
//	@Programe ID		: jsGlobalFunction.php
//	@Programe Name	: 공통 자바스크립트 함수
// ===============================================================================

	//트리밍
	String.prototype.Trim= new Function("return this.replace(/^\\s+|\\s+$/g,'')")	

	// 필수 입력값 유무체크한후 경고창 뛰우기
	//inputCheck("폼이름", "엘리먼트이름", "항목", "문자/숫자/한글/영문/영문,숫자/이메일/전화번호(S,N,K,E,EN,EM,T)", ["길이구분(S:small, B:big, F:fix, R:range)"], [최소길이], [최대길이], "필수여부(Y/N)")
	//if(!inputCheck("form1", "id", "아이디", "EN", "R", "4", "16", "Y")){return false;}
	//if(!inputCheck("form1", "pwd", "패스워드", "EN", "R", "4", "16", "Y")){return false;}
	//if(!inputCheck("form1", "aa", "셀렉트", "S", "", "", "", "Y")){return false;}
	//if(!inputCheck("form1", "bb", "체크", "S", "", "", "", "Y")){return false;}
	//if(!inputCheck("form1", "cc", "라디오", "S", "", "", "", "Y")){return false;}
	function inputCheck(form_name,elm,msg,strORNum,len_gubun,s_len,b_len,essential)
	{
		if(!eval("document."+ form_name +"."+ elm)){
			alert(elm + " is undefined element.");
			return false;
		}
		var form = eval("document."+ form_name +"."+ elm);

		if(form.type=="text" || form.type=="textarea" || form.type=="password" || form.type=="file" || form.type=="hidden"){
		//텍스트 박스, 텍스트 영역
			var inputStr = form.value.Trim();
			if(essential=="Y"){
				if (inputStr==""){
					alert("Please fill in " + msg + ".");
					form.value="";
					try{
						form.focus();
					}catch(e){
					
					}
					return false;
				}
			}else{
				if (inputStr==""){
					return true;
				}
			}
			
			if(!FuncCheck(strORNum,form_name,elm,msg)){return false;}

			if (len_gubun!=""){
				if(!lenCheck(form_name, elm, msg ,len_gubun,s_len,b_len)){return false;}
			}
		}else if(form.type==undefined || form.type=="radio"){
		//라디오 버튼
			if(!form.length){
				if(form.type=="radio"){
					if(!form.checked){
						alert("Please select " + msg + ".");
						return false;	
					}
					return true;
				}else{
					alert(form.type);
					return false;
				}
				
			}
			var elm_len = form.length;
			var ok = 0;
			if(elm_len<=0){
				alert(elm + " is undefined element.");
				return false;
			}
			for(var i=0;i<elm_len;i++) { 
				if (form[i].checked) { 
					ok = i+1;
				}
			}

			if(ok < 1) { 	
				alert("Please select " + msg + ".");
				return false;
			}
		}else if(form.type=="checkbox"){
		//체크박스
			if(essential=="Y"){
				if(!form.checked){
					alert("Please select " + msg + ".");
					return false;
				}
			}
		}else if(form.type.indexOf("select") != -1){
		//셀렉트 박스
			var inputStr = form.options[form.selectedIndex].value;
			if(essential=="Y"){
				if (inputStr==""){
					alert("Please select " + msg + ".");
					form.value="";
					form.focus();
					return false;
				}
			}else{
				if (inputStr==""){
					return true;
				}
			}

			if(!FuncCheck(strORNum,form_name,elm,msg)){return false;}

			if (len_gubun!=""){
				if(!lenCheck(form_name, elm, msg ,len_gubun,s_len,b_len)){return false;}
			}
		}else{
		//그외
			alert( form.type);
			return false;
		}
		return true;
	}

	//함수값체크
	function FuncCheck(value,form_name,elm,msg){
		switch (value){
			case "S":
				//문자
				break;
			case "N":
				//숫자
				if(!IsNumber(form_name,elm,msg)){return false;}
				break;
			case "K":
				//한글
				if(!IsKor(form_name,elm,msg)){return false;}
				break;
			case "E":
				//영문
				if(!IsEng(form_name,elm,msg)){return false;}
				break;
			case "EN":
				//영문,숫자
				if(!IsNumEng(form_name,elm,msg)){return false;}
				break;
			case "EM":
				//이메일
				if(!IsEmail(form_name,elm,msg)){return false;}
				break;
			case "T":
				//전화번호
				if(!IsPhone(form_name,elm,msg)){return false;}
				break;
			case "G":
				//학점
				if(!IsGrade(form_name,elm,msg)){return false;}
				break;
			default:
		}
		return true;
	}

	//입력값이 숫자인지 체크
	//사용법 IsNumber(폼이름, 엘리먼트이름, 유효하지 않을경우 메세지)
	function IsNumber(form_name,elm,msg) 
	{
		var form = eval("document."+ form_name +"."+ elm);
		for(var i = 0; i < form.value.length; i++) {
			var chr = form.value.substr(i,1);
			if(chr < '0' || chr > '9') {            
				alert("Please use numbers only " + msg +  ".");
				form.focus();
				return false;
			}
		}
		return true;   
	}

	//입력값이 숫자+'.'인지 체크
	//사용법 IsGrade(폼이름, 엘리먼트이름, 유효하지 않을경우 메세지)
	function IsGrade(form_name,elm,msg) 
	{
		var form = eval("document."+ form_name +"."+ elm);
		for(var i = 0; i < form.value.length; i++) {
			var chr = form.value.substr(i,1);
			if((chr < '0' || chr > '9') && chr != '.') {            
				alert(msg + " 항목은 숫자와 \'.\'로 입력해 주세요.");
				form.focus();
				return false;
			}
		}
		return true;   
	}

	//길이체크
	//사용법 lenCheck("폼이름", "엘리먼트이름", "항목", "길이구분(S:small, B:big, F:fix, R:range)", [최소길이], [최대길이])
	function lenCheck(form_name, elm, msg ,len_gubun,s_len,b_len)
	{
		var form = eval("document."+ form_name +"."+ elm);
		var inputStr = form.value.Trim();

		if (len_gubun=="S"){	//보다 작은 값
			if (inputStr.length > parseInt(s_len)){
				alert(msg + " must be longer than " + s_len + " characters.");
				//form.focus();
				return false;
			}
		}else if (len_gubun=="B"){	//보다 큰 값
			if (inputStr.length < parseInt(s_len)){
				alert(msg + " must be no longer than " + s_len + " characters.");
				form.focus();
				return false;
			}
		}else if (len_gubun=="F"){	//고정된 값
			if (inputStr.length != parseInt(s_len)){
				alert(msg + " must be " + s_len + " characters.");
				form.focus();
				return false;
			}
		}else if (len_gubun=="R"){	//범위 값
			if (inputStr.length < parseInt(s_len) || inputStr.length > parseInt(b_len)){
				alert(msg + " must be at least " + s_len + " and no longer than "+ b_len + " characters in length.");
				form.focus();
				return false;
			}
		}
		return true;
	}

	//바이트 검사
	function Byte(input) 
	{
    var i, j=0;
    for(i=0;i<input.length;i++) {
        val=escape(input.charAt(i)).length;
        if(val==  6) j++;
        j++;
    }
    return j;
	}

	//한글만 입력
	//사용법 IsKor(폼이름, 엘리먼트이름, 항목)
	function IsKor(form_name,elm,msg) 
	{
		var form = eval("document."+ form_name +"."+ elm);
		var inputStr = form.value.Trim();
		for(var i = 0; i < inputStr.length; i++) {
			 var chr = inputStr.substr(i,1);         
			 if ((chr > '0' && chr < '9') || (chr > 'a' && chr < 'z') || (chr > 'A' && chr < 'Z')) {
				alert(msg + " 항목은 한글로 입력해 주세요.");
				form.focus();
				return false;
			 }
		}
		return true;
	}

	//영문 입력
	//사용법 IsEng(폼이름, 엘리먼트이름, 항목)
	function IsEng(form_name,elm,msg) 
	{
		var form = eval("document."+ form_name +"."+ elm);
		var inputStr = form.value.Trim()
		for(var i = 0; i < inputStr.length; i++) {
			 var chr = form.value.substr(i,1);         
			 if ((chr < 'a' || chr > 'z') && (chr < 'A' || chr > 'Z')) {
				alert(msg + " 항목은 영문으로 입력해 주세요.");
				form.focus();
				return false;
			 }
		}
		return true;   
	}

	//영문 숫자조합 입력
	//사용법 IsNumEng(폼이름, 엘리먼트이름, 항목)
	function IsNumEng(form_name,elm,msg) 
	{
		var form = eval("document."+ form_name +"."+ elm);
		var inputStr = form.value.Trim()
		for(var i = 0; i < inputStr.length; i++) {
			 var chr = form.value.substr(i,1);         
			 if ((chr < '0' || chr > '9') && (chr < 'a' || chr > 'z') && (chr < 'A' || chr > 'Z')) {
				alert(msg + " 항목은 영문 또는 영문/숫자 조합으로 입력해 주세요.");
				form.focus();
				return false;
			 }
		}
		return true;   
	}

	//이메일체크(도메인)
	//사용법 IsEmail(폼이름, 엘리먼트이름, 항목)
	function IsEmail(form_name,elm,msg) 
	{
		var form = eval("document."+ form_name +"."+ elm);
		var inputStr = form.value.Trim();
		if (inputStr=='')
		{
			alert(msg+"을 입력해주세요.");
			form.focus();
			return false;
		}
		emailchk = 0;
		for (var j=0; j < inputStr.length ; j++ ) {
			var ch= inputStr.substring(j,j+1);
			if (ch == "@" | ch== "." ) {
				emailchk = emailchk + 1;
			}
		}
		if (emailchk < 2 ) {
			alert("This is not a valid.");
			form.focus();
			return false;
		}
		return true;
	}

	//주민등록번호 입력값 유무체크한후 경고창 뛰우기
	function juminCheck(form_name, elm1, elm2, essential)
	{
		if (essential == 'Y'){
			var jform1 = eval("document."+ form_name +"."+ elm1);
			var jform2 = eval("document."+ form_name +"."+ elm2);
			var j = jform1.value + jform2.value;
			if (jCheck(j))
			{
				return true;
			}else{
				alert("This is not a valid.");
				jform1.value="";
				jform2.value="";
				jform1.focus();
				return false;
			}
		}else if(essential == 'N'){
			var jform1 = eval("document."+ form_name +"."+ elm1);
			var jform2 = eval("document."+ form_name +"."+ elm2);
			var j = jform1.value + jform2.value;

			if (j=='')
			{
				return true;
			}
			
			if (jCheck(j))
			{
				return true;
			}else{
				alert("This is not a valid.");
				jform1.value="";
				jform2.value="";
				jform1.focus();
				return false;
			}	
		}
	}

	///주민 번호 유효 체크
	function jCheck(j)
	{
		var resno = j;

		// 주민번호의 형태와 7번째 자리(성별) 유효성 검사
		fmt = /^\d{6}[1234]\d{6}$/;
			if (!fmt.test(resno)) {
			return false;
		}

		// 날짜 유효성 검사
		birthYear = (resno.charAt(6) <= "2") ? "19" : "20";
		birthYear += resno.substr(0, 2);
		birthMonth = resno.substr(2, 2) - 1;
		birthDate = resno.substr(4, 2);
		birth = new Date(birthYear, birthMonth, birthDate);

		if ( birth.getYear() % 100 != resno.substr(0, 2) ||
			birth.getMonth() != birthMonth ||
			birth.getDate() != birthDate) {
		}

		// Check Sum 코드의 유효성 검사
		buf = new Array(13);
		for (i = 0; i < 6; i++) buf[i] = parseInt(resno.charAt(i));
		for (i = 6; i < 13; i++) buf[i] = parseInt(resno.charAt(i));

		multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
		for (i = 0, sum = 0; i < 12; i++) sum += (buf[i] *= multipliers[i]);

		if ((11 - (sum % 11)) % 10 != buf[12]) {
			return false;
		}

		jumin2_val = resno.substr(6)
		if(jumin2_val == '0000000' || jumin2_val == '1111111' || jumin2_val == '2222222' ||
		jumin2_val == '3333333' || jumin2_val == '4444444' || jumin2_val == '5555555' ||
		jumin2_val == '6666666' || jumin2_val == '7777777' || jumin2_val == '8888888' || 	
		jumin2_val == '9999999') {
			return false;
		}

		return true;
	}

	//사업자등록번호 체크 
	function checkBizID(bizID)
	{ 
		// bizID는 숫자만 10자리로 해서 문자열로 넘긴다. 
		var checkID = new Array(1, 3, 7, 1, 3, 7, 1, 3, 5, 1); 
		var tmpBizID, i, chkSum=0, c2, remander; 
		 bizID = bizID.replace(/-/gi,''); 

		 for (i=0; i<=7; i++) chkSum += checkID[i] * bizID.charAt(i); 
		 c2 = "0" + (checkID[8] * bizID.charAt(8)); 
		 c2 = c2.substring(c2.length - 2, c2.length); 
		 chkSum += Math.floor(c2.charAt(0)) + Math.floor(c2.charAt(1)); 
		 remander = (10 - (chkSum % 10)) % 10 ; 

		if (Math.floor(bizID.charAt(9)) == remander) return true ; // OK! 
		  return false; 
	} 

	//이메일체크(도메인)
	//사용법 IsEmail2(폼이름, 엘리먼트이름1, 엘리먼트이름2)
	function IsEmail2(form_name, elm1, elm2)
	{
		var elm1Value = eval("document." + form_name + "." + elm1);
		var elm2Value = eval("document." + form_name + "." + elm2);
		
		var EmailValue = elm1Value.value.Trim() + "@" + elm2Value.value.Trim();

		if (EmailValue.value == "") {
			alert("이메일을 입력해 주세요.");
			elm1Value.focus();
			return false;
		} else {
			emailField = EmailValue;
			var regMail =/^[_a-zA-Z0-9-]+@[._a-zA-Z0-9-]+\.[a-zA-Z]+$/;
			if (!regMail.test(emailField))	{
				if (emailField!=""){
					alert("This is not a valid e-mail address.");
					elm1Value.value = "";
					elm2Value.value = "";
					elm1Value.focus();
					return false;
				}
			}
		}
		return true;
	}

	//전화번호 체크
	function IsPhone(form_name,elm,msg) {
		var form = eval("document."+ form_name +"."+ elm);
		var regPhone =/^[0]{1}[0-9]{1,2}-[1-9]{1}[0-9]{2,3}-[0-9]{4}$/;

		if(!regPhone.test(form.value)){
			alert("This is not a valid.");
			form.select();
			return false;
		}
		return true;
	}

	//텍스트 박스 auto tab 기능
	//OnKeyUp="textAutoTab('현재elm명', '옮겨갈 elm명', '글자수')"
	function textAutoTab(currElm,nextElm,n){
		thisValue = document.all(currElm).value;
		nextControl = document.all(nextElm);
		if(thisValue.length==parseInt(n)){
			nextControl.focus();
		}
	}
					
	//이메일 선택
	function ReadLock(formName, elm1, elm2)
	{
		var form  = eval("document." + formName + "." + elm1);
		var form2 = eval("document." + formName + "." + elm2);
		var str = form2.options[form2.selectedIndex].value

		if(str == ""){
			form.value = "";
			form.readOnly = false;
			form.focus();
		}else{
			form.value = str;
			form.readOnly = true;				
		}
	}

	//팝업 중앙에 띄우기
	//NewWindow("URL", "팝업명", "가로Size", "세로Size", "스크롤바") 
	function NewWindow(mypage, myname, w, h, scroll)
	{
		var win = null;
		
		LeftPosition=(screen.width) ? (screen.width-w)/2 : 0;
		TopPosition=(screen.height) ? (screen.height-h)/2 : 0;				
		settings='height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',resizable=yes, scrollbars=' + scroll
		win=window.open(mypage,myname,settings);
	}

	//페이지 리사이즈
	function doResize(name)
	{
		try
		{
			var oBody			= document.frames(name).document.body;
			var oIFrame		= document.all(name);
			var frmWidth  = oBody.scrollWidth;
			var frmHeight = oBody.scrollHeight;

			if(frmHeight ==0){
				//alert("프레임의 사이즈 조절중입니다.");			
				frmWidth  = oBody.scrollWidth;
				frmHeight = oBody.scrollHeight;			
			}
			
			oIFrame.style.height = frmHeight;
			oIFrame.style.width = frmWidth;
		}
		catch (e)
		{
			window.status = "IFrame Resize Error";
		}
	}

	//이미지 사이즈 조정
	function getSize(target_img, maxWidth, maxHeight) 
	{
		var gwidth = 0;				// 변경전 이미지 가로크기
		var gheight = 0;			// 변경전 이미지 세로크기
		var swidth = 0;				// 변경후 이미지 가로크기
		var sheight = 0;			// 변경후 이미지 세로크기
		var vwidth = maxWidth;		// 출력할 화면 가로크기
		var v_height = maxHeight;	// 출력할 화면 세로크기

		imgname = new Image();
		imgname.src = target_img.src;
		gwidth = imgname.width;
		gheight = imgname.height;

		if (gwidth <= vwidth) {
			if (gheight <= v_height) {
				swidth = gwidth;
				sheight = gheight;
			} else {
				swidth = parseInt((v_height*gwidth)/gheight);
				sheight = v_height;
			}
		} else {
			if (gheight <= v_height) {
				swidth = vwidth;
				sheight = parseInt((vwidth*gheight)/gwidth);
			} else {
				if (parseFloat(v_height/vwidth) <= parseFloat(gheight/gwidth)) {
					swidth = parseInt((v_height*gwidth)/gheight);
					sheight = v_height;
				} else {
					swidth = vwidth;
					sheight = parseInt((vwidth*gheight)/gwidth);
				}
			}
		}

		target_img.onload = null;
		target_img.src = imgname.src;
		target_img.width = swidth;
		target_img.height = sheight;
	}