///// PNG 이미지포멧의 배경색을 투명하게 출력함 /////
function j_setpng(obj)
{
    obj.width=obj.height=1;
    obj.className=obj.className.replace(/\bpng\b/i,'');
    obj.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+obj.src+"',sizingMethod='image');";
    obj.src="";
    return "";
}



///// 게시판용 - 카테고리 변수값 생성하기 /////
function j_ctype(ctype, selectvalue)
{
	/*
	//	+ 인수 :
	//				ctype : 전체 카테고리값
	//				selectvalue : 선택한 카테고리값
	//	+ 예제 :
	//				str=j_ctype("a|1,b|2,c|3", "d|4");
	//				location.href="./test.htm?ctype="+str;
	//	+ 결과 :
	//				1. 전체 카테고리값에 방금 선택한 카테고리값이 없으면 전체 카테고리에 추가시켜주고, 있으면 업데이트함
	//				2. 방금 선택한 카테고리값이 공백이면 전체 카테고리에 삭제시켜줌
	//				3. 생성한 카테고리값을 반환함
	*/

	var str="";

	// 선택한 카테고리값을 분리함
	nowcate=selectvalue.split("|");

	// 전체 카테고리값을 분리함
	ar_tmp1=ctype.split(",");

	for(i=0;i<ar_tmp1.length;i++)
	{
		ar_tmp2=ar_tmp1[i].split("|");

		if(ar_tmp2[0]!=nowcate[0])
		{
			if(str)
			{
				str+=",";
			}
			str+=ar_tmp1[i];
		}
	}

	if(nowcate[1])
	{
		if(str)
		{
			str+=",";
		}
		str+=selectvalue;
	}

	return str;
}



///// 올바른 이메일 주소인지 체크함 /////
function j_is_email(str)
{
	/*
	//	+ 인수 :
	//				str : 이메일주소
	//	+ 예제 :
	//				if(j_is_email("test@test.com"))
	//				{
	//					alert("올바른 이메일주소입니다.");
	//				}
	//	+ 결과 :
	//				올바른 값이면 true, 올바르지 않으면 false 가 반환됨
	*/

	var chk_str=new RegExp("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$","gi");
	var ar_str=str.match(chk_str);

	if(ar_str)
	{
		// 올바른 값
		return true;
	}
	else
	{
		// 올바르지 않은 값
		return false;
	}
}



///// 금액표시를 위해 세자리마다 콤마(,)를 붙임 /////
function j_number_format(num)
{
	/*
	//	+ 인수 :
	//				num : 세자리마다 콤마를 붙일 숫자
	//	+ 예제 :
	//				j_number_format("12345");
	//	+ 결과 :
	//				1. 숫자로 입력된 문자열을 넣어으면 세자리마다 콤마를 출력해줌
	//				2. 콤마가 붙어있는 상태로 입력된 문자열을 넣어도 세자리마다 콤마를 출력해줌
	*/

	// 문자열에서 숫자만 남기기 위해 콤마(,)를 제거함
	num=num.replace(/^\$|,/g, "");

	if(num<0)
	{
		num*=-1;
		var minus=true;
	}
	else
	{
		var minus=false;
	}

	var dotPos=(num+"").split(".");
	var dotU=dotPos[0];
	var dotD=dotPos[1];
	var commaFlag=dotU.length%3;

	if(commaFlag)
	{
		var out=dotU.substring(0, commaFlag);
		if(dotU.length>3)
		{
			out+=",";
		}
	} 
	else
	{
		var out="";
	}

	for(var i=commaFlag;i<dotU.length;i+=3)
	{
		out+=dotU.substring(i, i+3);
		if(i<dotU.length-3)
		{
			out+=",";
		}
	}

	if(minus)
	{
		out="-"+out;
	}

	if(dotD)
	{
		return out+"."+dotD;
	}
	else
	{
		return out;
	}
}



///// 지정한 이미지를 원본크기의 팝업창으로 띄움 /////
function j_origimgopen(viewfile, filepath, origsize_x, origsize_y, limitsize_x, limitsize_y)
{
	/*
	//	+ 인수 :
	//				viewfile : 원본이미지를 보기 위한 팝업창 파일명
	//				filepath : 이미지경로
	//				origsize_x : 이미지의 원본크기 (가로)
	//				origsize_y : 이미지의 원본크기 (세로)
	//				limitsize_x : 바탕화면의 최대해상도크기 제한수치 (가로)
	//				limitsize_y : 바탕화면의 최대해상도크기 제한수치 (세로)
	//	+ 예제 :
	//				j_origimgopen("./imgopen.php", "./image.gif", "200", "200");
	//				j_origimgopen("./imgopen.php", "./image.gif", "200", "200", "100", "100");
	//	+ 결과 :
	//				해당 이미지가 있으면 팝업창으로 원본이미지를 출력함 (윈도우 해상도보다 클 경우에는 팝업창에 스크롤이 생김)
	*/

	var winsize_x=winsize_y=0;
	var popup_x=popup_y=0;
	var chkscrollbar="";

	// 팝업창 출력시 바탕화면의 최대 해상도보다 약간 작게 설정하기 위함
	if(!limitsize_x)
	{
		limitsize_x=100;
	}
	if(!limitsize_y)
	{
		limitsize_y=100;
	}

	// 바탕화면의 최대 해상도크기
	winsize_x=screen.width-limitsize_x;
	winsize_y=screen.height-limitsize_y;

	// 팝업창의 가로크기를 구함
	if(winsize_x>=origsize_x)
	{
		popup_x=origsize_x;
		chkscrollbar="no";
	}
	else
	{
		popup_x=winsize_x;
		chkscrollbar="yes";
	}

	// 팝업창의 세로크기를 구함
	if(winsize_y>=origsize_y)
	{
		popup_y=origsize_y;
		chkscrollbar="no";
	}
	else
	{
		popup_y=winsize_y;
		chkscrollbar="yes";
	}

	j_windowopen(viewfile+"?imgsrc="+filepath, "imgopen", "정렬", "center", "middle", popup_x, popup_y, "no", "no", chkscrollbar, "no");
}



///// 지정한 개체를 보이거나 숨김 /////
function j_formview(fm, obj, type)
{
	/*
	//	+ 인수 :
	//				fm : form 이름
	//				obj : 개체명
	//				type : on-보임, off-숨김
	//	+ 예제 :
	//				j_formview(fm, 'str'); ← 개체가 보이는 상태라면 숨기고, 숨겨진 상태라면 보임
	//				j_formview(fm, 'str', "on"); ← 개체를 보임
	//				j_formview(fm, 'str', "off"); ← 개체를 숨김
	*/

	switch(type)
	{
		// 개체를 보임
		case "on" :
			eval("fm."+obj).style.display="";
			break;

		// 개체를 숨김
		case "off" :
			eval("fm."+obj).style.display="none";
			break;

		// 개체가 보이는 상태라면 숨기고, 숨겨진 상태라면 보임
		default :
			if(!eval("fm."+obj).style.display)
			{
				eval("fm."+obj).style.display="none";
			}
			else
			{
				eval("fm."+obj).style.display="";
			}
			break;
	}
}



///// Ajax 를 이용한 실시간 통신 /////
function j_ajax_gethttprequest(fm, type, url, urladd, functionname)
{
	/*
	//	+ 인수 :
	//				fm : form 이름
	//				type : post-POST폼전송, get-GET폼전송
	//				url : ajax 를 실행할 파일주소
	//				urladd : ajax 를 실행할 파일주소 뒤에 붙일 변수값
	//				functionname : ajax 실행후 같이 실행할 함수 (주로 ajax 값을 받아오기 위한 용도로 사용함) 단, ajax 값을 받아올때에는 인자변수를 str 로 지정해야함
	//	+ 예제 :
	//				j_ajax_gethttprequest(fm, "post", "ajax.php", "", "result(str)");
	//				j_ajax_gethttprequest(fm, "post", "ajax.php", "id=아이디&name=이름", "result(str)");
	//				j_ajax_gethttprequest(fm, "get", "ajax.php", "id=아이디&name=이름", "result(str)");
	//	+ 결과 :
	//				url 주소의 페이지에서 처리한 결과값이 리턴되어옴 (utf-8 형식으로 값이 전송됨. 해당 페이지에서 utf-8 처리 필수)
	*/

	// 객체변수 생성함
	var xmlhttp=null;

	// 최종결과물을 담음
	var responsetext="";

	// 웹브라우져를 체크하여 객체를 정의함
	if(window.XMLHttpRequest)
	{
		// FF (파이어폭스)
		xmlhttp=new XMLHttpRequest();
	}
	else
	{
		// IE (인터넷익스플로러)
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}

	// 폼값 전송시 사용할 방식 (get, post)
	switch(type)
	{
		// POST 모드로 URL 주소를 전송함
		case "post" :
			xmlhttp.open("POST", url, true);
			break;

		// GET 모드로 URL 주소를 전송함
		case "get" :
			xmlhttp.open("GET", url, false);
			break;
	}

	// ajax 는 utf-8 로 값을 전송함
	xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xmlhttp.send(urladd);

	// 지정한 URL 로 폼값을 전송한후 값이 발생했다면 메소드를 생성함
	xmlhttp.onreadystatechange=function()
	{
		// readyState=4, status=200, statusText="OK" 일때 값이 제대로 들어온 경우임
		if(xmlhttp.readyState==4 && xmlhttp.status==200 && xmlhttp.statusText=="OK")
		{
			str=xmlhttp.responseText;
			eval(functionname);
		}
	}
}



///// 해당 폼의 크기를 변경함 /////
function j_form_size(fm, obj, type, sizetype, dfsize, minsize, maxsize, mvsize)
{
	/*
	//	+ 인수 :
	//				fm : form 이름
	//				obj : 변경할 개체명
	//				type : x-가로, y-세로
	//				sizetype : up-증가, dn-감소, df-원래대로
	//				dfsize : 기본크기 (px)
	//				minsize : 최소크기 (px)
	//				maxsize : 최대크기 (px)
	//				mvsize : 변경할 크기의 단위 (px)
	//	+ 예제 :
	//				form_size(fm, this, "x", "up", 20, 10, 30, 5);
	//				form_size(fm, this, "y", "dn", 20, 10, 30, 5);
	//				form_size(fm, this, "x", "df", 20); ← 기본값으로 돌아갈때에는 minsize, maxsize, mvsize 값을 사용할 필요는 없음
	*/

	switch(type)
	{
		// 가로
		case "x" :
			switch(sizetype)
			{
				// 크기증가
				case "up" :
					if(parseInt(eval("fm."+obj).style.width)+mvsize<=maxsize)
					{
						eval("fm."+obj).style.width=parseInt(eval("fm."+obj).style.width)+mvsize;
					}
					break;

				// 크기감소				
				case "dn" :
					if(parseInt(eval("fm."+obj).style.width)-mvsize>=minsize)
					{
						eval("fm."+obj).style.width=parseInt(eval("fm."+obj).style.width)-mvsize;
					}
					break;

				case "df" :
					eval("fm."+obj).style.width=dfsize;
					break;
			}
			break;

		// 세로
		case "y" :
			switch(sizetype)
			{
				// 크기증가
				case "up" :
					if(parseInt(eval("fm."+obj).style.height)+mvsize<=maxsize)
					{
						eval("fm."+obj).style.height=parseInt(eval("fm."+obj).style.height)+mvsize;
					}
					break;

				// 크기감소				
				case "dn" :
					if(parseInt(eval("fm."+obj).style.height)-mvsize>=minsize)
					{
						eval("fm."+obj).style.height=parseInt(eval("fm."+obj).style.height)-mvsize;
					}
					break;

				case "df" :
					eval("fm."+obj).style.height=dfsize;
					break;
			}
			break;
	}
}



///// 페이지내의 지정된 체크박스를 모두 체크하거나 체크해제함 /////
function j_select_allcheck(fm, type, allcheckobj, checkobj)
{
	/*
	//	+ 인수 :
	//				fm : form 이름
	//				type : on-체크, off-체크해제
	//				allcheckobj : 이 체크박스의 체크된 상태를 통해 checkobj 체크박스를 모두 체크하거나 체크해제함
	//				checkobj : 찾고자하는 체크박스폼명
	//	+ 예제 :
	//				select_allcheck(fm, "on", "check_all", "check_no[]");
	//				select_allcheck(fm, "off", "check_all", "check_no[]");
	//	+ 결과 :
	//				allcheckobj 체크박스의 체크상태를 통해 checkobj 체크박스를 모두 체크하거나 체크해제함
	*/

	switch(type)
	{
		// allcheckobj 체크박스 체크시
		case "on" :
			for(i=0;i<fm.elements.length;i++)
			{
				// 페이지내의 모든 개체 중에서 체크박스만 찾아냄
				if(fm.elements[i].name==checkobj)
				{
					if(eval("fm."+allcheckobj).checked)
					{
						// 전체체크박스를 체크했다면 페이지내의 목록체크박스를 모두 체크시킴
						fm.elements[i].checked=true;
					}
					else
					{
						// 전체체크박스를 체크해제했다면 페이지내의 목록체크박스를 모두 체크해제시킴
						fm.elements[i].checked=false;
					}
				}
			}
			break;

		// allcheckobj 체크박스 체크해제시
		case "off" :
			eval("fm."+allcheckobj).checked=false;
			break;
	}
}



///// 페이지내의 지정된 체크박스에서 체크된 개체의 값을 불러옴 /////
function j_select_check(fm, checkobj, saveobj)
{
	/*
	//	+ 인수 :
	//				fm : form 이름
	//				checkobj : 찾고자하는 체크박스폼명
	//				saveobj : 체크된 체크박스의 값을 기억시킬 폼명
	//	+ 예제 :
	//				select_check(fm, "check_no[]", "selectobj"); ← 값을 뽑아올때 저장할 폼명을 입력하면 바로 폼에 값이 저장됨
	//				select_check(fm, "check_no[]"); ← 값을 뽑아와서 리턴된 값을 사용함 (따로 폼에 저장되지 않음)
	//
	//				if(!select_check(fm, "check_no[]", "selectobj")[0])
	//				{
	//					alert("선택된 체크박스가 없습니다.");
	//				}
	//	+ 결과 :
	//				[0] : 찾고자하는 체크박스중 체크된 개체수
	//				[1] : 찾고자하는 체크박스중 체크된 개체의 값 (콤마(,)로 구분되어짐)
	//	+ 참고 :
	//				값을 뽑아올때 saveobj 도 같이 사용하는 것이 편함
	*/

	// 체크된 체크박스가 있는지를 파악함
	var checking=0;

	// 체크된 체크박스의 값을 기억함
	var checksave="";

	// 페이지내의 모든 개체 중에서 체크된 체크박스만 찾아내어 변수에 기록함
	for(i=0;i<fm.elements.length;i++)
	{
		if(fm.elements[i].name==checkobj && fm.elements[i].checked)
		{
			if(checking>0)
			{
				checksave+=","
			}

			checksave+=fm.elements[i].value;
			checking++;
		}
	}

	// 저장할 폼이 있으면 체크된 결과값을 넣어줌
	if(saveobj)
	{
		eval("fm."+saveobj).value=checksave;
	}

	return Array(checking, checksave);
}



///// 객체의 위치를 사용자가 지정한 위치로 옮겼을 때의 좌표를 구함 /////
function j_moveposition(ptype, pleft, ptop, pwidth, pheight)
{
	/*
	//	+ 인수 :
	//				ptype : 좌표방식
	//				pleft : 가로정렬 or 가로좌표
	//				ptop : 세로정렬 or 세로좌표
	//				pwidth : 가로크기
	//				pheight : 세로크기
	//	+ 예제 :
	//				j_position("정렬", "center", "middle", 200, 300);
	//				j_position("좌표", "0", "0", 200, 300);
	//	+ 결과 :
	//				[0] : 객체의 가로좌표
	//				[1] : 객체의 세로좌표
	//	+ 참고 :
	//				좌표방식은 절대좌표로 위치를 지정하며, 정렬방식은 모니터 해상도에 따라 상대좌표로 출력함
	*/

	switch(ptype)
	{
		//  정렬 방식
		case "정렬" :
			var winalign=0;
			var winvalign=0;

			switch(pleft)
			{
				case "left" :
					winalign=0;
					break;

				case "center" :
					winalign=(window.document.body.offsetWidth-pwidth)/2;
					break;

				case "right" :
					winalign=window.document.body.offsetWidth-pwidth-5;
					break;
			}

			switch(ptop)
			{
				case "top" :
					winvalign=0;
					break;

				case "middle" :
					winvalign=(window.document.body.offsetHeight-pheight)/2;
					break;

				case "bottom" :
					winvalign=window.document.body.offsetHeight-pheight-5;
					break;
			}

			return Array(winalign, winvalign);
			break;

		//  좌표 방식
		case "좌표" :
			return Array(pleft, ptop);
			break;
	}
}



///// 개체의 가로/세로 절대좌표를 알아냄 /////
function j_objposition(type, obj)
{ 
	/*
	//	+ 인수 :
	//				type : 가로/세로 구분 - left : 가로, top : 세로
	//				obj : 개체
	//	+ 예제 :
	//				x=j_objposition("left", document.all.obj);
	//				y=j_objposition("top", document.all.obj);
	//	+ 결과 :
	//				지정한 개체의 좌표가 숫자로 반환됨
	//	+ 참고 :
	//				<table> 이나 <td> 등과 같은 개체에도 id 를 붙여 좌표를 구할 수 있음
	*/

	switch(type)
	{
		// 가로좌표
		case "left" :
			return obj ? obj.offsetLeft+j_objposition("left", obj.offsetParent) : 0;
			break;

		// 세로좌표
		case "top" :
			return obj ? obj.offsetTop+j_objposition("top", obj.offsetParent) : 0;
			break;
	}
} 



///// 페이지에 사용된 입력 폼에서 필수적으로 입력해야할 폼을 체크함 /////
function j_todoformcheck(fm)
{
	/*
	//	+ 인수 :
	//				fm : form 이름
	//	+ 요소 :
	//				request : 폼값이 필히 입력됐는지 체크함
	//				compare : 정의된 비교값 이외의 문자가 입력됐는지 체크함
	//
	//				objname : 폼의 이름 (사용자가 보는 실제 항목명)
	//				rqmsg : compare 등을 사용할때 같이 입력해야하는 경고메시지
	//	+ 예제 :
	//				if(j_todoformcheck(fm))
	//				{
	//					alert("모두 입력되었습니다.");
	//				}
	//				<input name="test" request objname="테스트">
	//				<input name="test" request compare="0123456789" rqmsg="숫자만" objname="테스트">
	//	+ 결과 :
	//				입력되지 않은 항목에 대해서 경고창이 출력됨
	//	+ 참고 :
	//				input 형태가 text, textarea, password 등 이외에도 file, select 등에도 적용됨
	*/

	for(i=0;i<fm.elements.length;i++)
	{
		var msgstr="";

		// 폼에 정의한 속성 : request (폼값이 필히 입력됐는지 체크함)
		if(fm.elements[i].getAttribute("request")!=null)
		{
			var chk=0;

			switch(fm.elements[i].type)
			{
				case "checkbox" :
					if(!fm.elements[i].checked)
					{
						chk=1;
					}
					break;

				default :
					if(!fm.elements[i].value)
					{
						chk=1;
					}
					break;
			}

			if(chk)
			{
				msgstr="";

				switch(fm.elements[i].type)
				{
					case "text" :
					case "textarea" :
					case "password" :
						msgstr="입력";
						break;

					case "checkbox" :
						msgstr="체크";
						break;

					case "select-one" :
					case "file" :
						msgstr="선택";
						break;
				}

				alert(fm.elements[i].getAttribute("objname")+j_postposition(fm.elements[i].getAttribute("objname"), "을를")+" "+msgstr+"하세요.");
				fm.elements[i].focus();
				return false;
			}
		}

		// 폼에 정의한 속성 : compare (정의된 비교값 이외의 문자가 입력됐는지 체크함)
		if(fm.elements[i].getAttribute("compare"))
		{
			if(fm.elements[i].value)
			{
				msgstr="";

				switch(fm.elements[i].type)
				{
					case "text" :
					case "textarea" :
					case "password" :
						msgstr="입력";
						break;

					case "select-one" :
					case "file" :
						msgstr="선택";
						break;
				}

				if(!j_onlystr(fm.elements[i].getAttribute("compare"), fm.elements[i].value))
				{
					alert(fm.elements[i].getAttribute("objname")+j_postposition(fm.elements[i].getAttribute("objname"), "은는")+" "+fm.elements[i].getAttribute("rqmsg")+" "+msgstr+"할 수 있습니다.");
					fm.elements[i].focus();
					return false;
				}
			}
		}
	}
	return true;
}



///// 입력받은 문자열 뒤에 적당한 조사를 붙여줌 /////
String.prototype.j_postpositioncheck=function(str)
{
	str=this != window ? this : str;
	var strTemp = str.substr(str.length-1);
	return ((strTemp.charCodeAt(0)-16)%28!=0);
}

function j_postposition(str, tail)
{
	/*
	//	+ 인수 :
	//				str : 단어
	//				tail : 단어 뒤에 붙일 조사형태 - 을를, 와과, 이가, 은는 등등..
	//	+ 예제 :
	//				str=j_postposition("해", "이가");
	//				alert("해"+str+" 떴다.");
	//	+ 결과 :
	//				입력된 단에 맞는 조사가 반환됨
	*/

	return (str.j_postpositioncheck()) ? tail.substring(0,1) : tail.substring(1,2);
}



///// 원하는 문자열 이외의 글자는 에러를 발생함 /////
function j_onlystr(type, str)
{
	/*
	//	+ 인수 :
	//				type : 여기에 나열된 문자열 이외에는 에러를 발생함
	//				str : 해당 문자열
	//	+ 예제 :
	//				if(!j_onlystr("1234567890", "가나다"))
	//				{
	//					alert("숫자만 입력하세요.");
	//				}
	//	+ 결과 :
	//				지정된 문자열 이외의 문자열이 포함되어 있으면 false 를 반환함
	*/

	for(forno=0;forno<str.length;forno++)
	{
		if(type.indexOf(str.substring(forno, forno+1))=="-1")
		{
			return false;
		}
	}

	return true;
}



///// 지정된 옵션으로 팝업창을 출력함 /////
function j_windowopen(ppath, pname, pkind, pleft, ptop, pwidth, pheight, ptool, pmenu, pscrollbar, pstate)
{
	/*
	//	+ 인수 :
	//				ppath : 팝업창 경로
	//				pname : 팝업창 이름 (같은 이름으로 여러개의 팝업창을 띄우면 창이 하나만 뜸)
	//				pkind : 좌표방식 - 정렬 : 상하좌우 등과 같이 정렬방식으로 출력, 좌표 : 절대좌표를 이용하여 출력
	//				pleft : 팝업창 가로정렬방식(left/center/right) or 팝업창 가로좌표
	//				ptop : 팝업창 세로정렬방식(top/middle/bottom) or 팝업창 세로좌표
	//				pwidth : 팝업창 가로크기
	//				pheight : 팝업창 세로크기
	//				ptool : 도구바 출력여부 - yes/no
	//				pmenu : 메뉴바 출력여부 - yes/no
	//				pscrollbar : 스크롤바 출력여부 - yes/no
	//				pstate : 상태바 출력여부 - yes/no
	//	+ 예제 :
	//				j_windowopen("./popup.htm", "popup", "정렬", "center", "middle", 200, 300, "no", "no", "yes", "no");
	//				j_windowopen("./popup.htm", "popup", "좌표", "0", "0", 200, 300, "no", "no", "yes", "no");
	//	+ 결과 :
	//				코드 실행후 팝업창이 즉시 출력됨
	//	+ 참고 :
	//				좌표방식이 [정렬] 일 경우에는 모니터 해상도에 따라서 위치를 잡아줌
	*/

	switch(pkind)
	{
		case "정렬" :
			var winalign=0;
			var winvalign=0;

			switch(pleft)
			{
				case "left" :
					winalign=0;
					break;

				case "center":
					winalign=(window.screen.width-pwidth)/2;
					break;

				case "right" :
					winalign=window.screen.width-pwidth;
					break;
			}

			switch(ptop)
			{
				case "top" :
					winvalign=0;
					break;

				case "middle" :
					winvalign=(window.screen.height-pheight)/2;
					break;

				case "bottom" :
					winvalign=window.screen.height-pheight;
					break;
			}

			window.open(ppath, pname, "left="+winalign+", top="+winvalign+", width="+pwidth+", height="+pheight+", toolbar="+ptool+", menubar="+pmenu+", scrollbars="+pscrollbar+", status="+pstate);
			break;

		case "좌표" :
			window.open(ppath, pname, "left="+pleft+", top="+ptop+", width="+pwidth+", height="+pheight+", toolbar="+ptool+", menubar="+pmenu+", scrollbars="+pscrollbar+", status="+pstate);
			break;
	}
}



///// form 태그의 enter 키 버그를 막아줌 /////
function j_formcheck()
{
	/*
	//	+ 예제 :
	//				<form name="폼이름" onsubmit="return j_formcheck();">
	//	+ 결과 :
	//				페이지에 입력폼이 하나만 있을 경우, 엔터키를 입력했을때 곧바로 submit 되버리는 버그를 막아줌
	//	+ 참고 :
	//				입력폼이 2개 이상일때는 사용하지 않아도 됨
	*/

	return false;
}



///// 입력폼에 포커스가 들어오거나 빠져나갈때 폼의 라인 색상을 변경시킴 /////
function j_formline(type, obj, targetcolor)
{
	/*
	//	+ 인수 :
	//				type : 포커스 여부 - in : 포커스 들어옴, out - 포커스 빠져나감
	//				obj : 개체
	//				targetcolor : 변경시킬 라인 색상
	//	+ 예제 :
	//				<input type="text" name="test" onfocus="j_formline('in', this, '#000000');" onblur="j_formline('out', this, '');">
	//	+ 결과 :
	//				폼에 포커스가 들어오거나 빠져나갈때마다 실행됨
	*/

	switch(type)
	{
		// 포커스가 들어왔을 경우
		case "in" :
			obj.style.borderColor=targetcolor;
			break;

		// 포커스가 빠져나갔을 경우
		case "out" :
			obj.style.borderColor="";
			break;
	}
}



///// 입력된 주민등록번호가 진짜인지 가짜인지를 판단함 /////
function j_registration(number_f, number_r)
{
	/*
	//	+ 인수 :
	//				number_f : 주민등록번호 앞자리 6자
	//				number_r : 주민등록번호 앞자리 7자
	//	+ 예제 :
	//				if(j_registration("123456", "1234567"))
	//				{
	//					alert("올바른 주민등록번호입니다.");
	//				}
	//	+ 결과 :
	//				정상적인 주민등록번호면 ture 값이 반환됨
	*/

	var numbervalue="234567892345";
	var peoplenumber=number_f+number_r;
	var totalnumber=0;

	for(i=0;i<12;i++)
	{
		totalnumber+=peoplenumber.substr(i,1)*numbervalue.substr(i,1);
	}

	totalnumber=totalnumber%11;
	totalnumber=11-totalnumber;

	switch(totalnumber)
	{
		case 10 :
			totalnumber=0;
			break;

		case 11 :
			totalnumber=1;
			break;
	}

	if(totalnumber==peoplenumber.substr(12,1))
	{
		if(peoplenumber.substr(6,1)<1 && peoplenumber.substr(6,1)>4)
		{
			return false;
		}
	}
	else
	{
		return false;
	}

	return true;
}

// 통합검색용 - 키가 눌러질 때마다 체크함
function key_process_total(fm, type, obj)
{
	switch(type)
	{
		// 엔터키
		case 13:
			switch(obj.name)
			{
				// 검색하기
				case "stx" :
					button_process_total(fm, "totalsearch");
					break;
			}
			break;
	}
}

// 통합검색용 - 버튼을 클릭했을 때 처리함
function button_process_total(fm, type, value1, value2)
{
	switch(type)
	{
		// 통합검색
		case "totalsearch":
			if (fm.stx.value.length < 2)
			{
				alert("검색어는 두글자 이상 입력하세요.");
				fm.stx.select();
				fm.stx.focus();
				return false;
			}

			fm.action = "/board/bbs/search.php?sfl=wr_subject||wr_content&sop=an";
			fm.submit();
			break;
	}
}

