if (typeof(COMMON_JS) == 'undefined') { // 한번만 실행
    var COMMON_JS = true;

    // 전역 변수
    var errmsg = "";
    var errfld;
//Shortcut Icon favicon    


    // 필드를 깨끗하게
    function clear_field(fld) 
    {
        fld.style.background = "#FFFFFF";
    }

/***************************************
* 꼭 FORM에 name을 정의해 준다!!
* <FORM name="form1" onSubmit="return chkForm(this,'en')">
* input tag에 대한 설명 
* <input 
*    type="text" //체크할 형식 
*    name="id" //넘어갈이름 
*    hname="아이디" //경고창에 나타낼 문자열 
*    option="regId" //어떤 정규식으로 처리할지 선언 
*    required //꼭 체크를 원하는 항목에 설정 
* > 
***************************************/ 
var checkMsg = checkMsg1 ="";
var checkFld = null;
var checkFldBackColor = '#FFE4E1'; 
var arrAttr  = new Array ('required', 'trim', 'minlength', 'email', 'hangul', 'hangul2', 
                              'nospace', 'numeric', 'alpha', 'alphanumeric', 
                              'alphanumericunderline', 'telnumber', 'hangulalphanumeric');
function chkForm(f,lang)
{ 
	var i; 
	var attr = null;
	checkMsg = checkMsg1 ="";
	checkFld = null;
	
	// 해당폼에 대한 요소의 갯수만큼 돌려라
	for (var i = 0; i < f.elements.length; i++) {		
		// Input tag 의 type 이 text, file, password 일때만
		if (f.elements[i].type == "text" || 
				f.elements[i].type == "file" || 
				f.elements[i].type == "password" ||
				f.elements[i].type == "select-one" ||
				f.elements[i].type == "textarea") 
		{

			// 배열의 길이만큼 돌려라
			for (var j = 0; j < arrAttr.length; j++) {				
				// 배열에 정의한 속성과 비교해서 속성이 있거나 값이 있다면
				if (f.elements[i].getAttribute(arrAttr[j]) != null) 
				{
					switch (arrAttr[j]) 
					{ 
						case "required"     : chkRequired(f.elements[i]); break;
						case "trim"         : chkTrim(f.elements[i]); break;
						case "minlength"    : chkMinlength(f.elements[i]); break;
						case "email"        : chkPatten(f.elements[i],"regMail"); break;
						case "hangul"       : chkPatten(f.elements[i],"regHangul"); break;
						case "hangulalphanumeric" : chkPatten(f.elements[i],"regHangulEng"); break;
						case "nospace"      : chkPatten(f.elements[i],"regNospace"); break;
						case "numeric"      : chkPatten(f.elements[i],"regNum"); break; 
						case "alpha"        : chkPatten(f.elements[i],"regAlpha"); break; 
						case "alphanumeric" : chkPatten(f.elements[i],"regAlphaNum"); break; 
						case "alphanumericunderline" : chkPatten(f.elements[i],"regAlphaNumericUnderLine"); break; 
						case "telnumber"		: chkPatten(f.elements[i],"regPhone"); break;
						case "memberid"			: chkPatten(f.elements[i],"regId"); break;
						default : break;
					}
				}
				if(checkFld != null)
					break;
			}
		} 

		if(checkFld == null) {
			if(f.elements[i].type == "radio")
			{
				if (f.elements[i].getAttribute("required") != null)	
					chkRadio(f.elements[i]);
			}
			if(f.elements[i].type == "checkbox")
			{
				if (f.elements[i].getAttribute("required") != null)	
					chkCheckbox(f.elements[i]);
			}
		}
		if(checkFld != null)
					break;
	}

	// 필드가 null 이 아니라면 오류메세지 출력후 포커스를 해당 오류 필드로 옮김
	// 오류 필드는 배경색상을 바꾼다.
	if (checkFld != null) 
	{ 
		if(lang == 'en')
			alert(checkMsg1); 
		else 
			alert(checkMsg); 
		if (checkFld.style.display != 'none') 
		{ 
			checkFld.style.backgroundColor = checkFldBackColor; 
			checkFld.focus(); 
		} 
		return false; 
	} 

	return true;    
}

// subject 속성값을 얻어 return, 없으면 tag의 name을 넘김
function chkItemname(field)
{
	var itemname = field.getAttribute("itemname");
	if (itemname != null && itemname != "")
		return itemname;
	else
		return field.name;
}
     
// 양쪽 공백 없애기
function chkTrim(field) 
{
	var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자
	field.value = field.value.replace(pattern, "");
	return field.value;
}
    
function chkPatten(field,patten)
{ 
	
    var regNum = /^[0-9]+$/; 
    var regPhone = /^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/; 
    var regMail = /^[_a-zA-Z0-9-]+@[._a-zA-Z0-9-]+\.[a-zA-Z]+$/; 
    var regDomain = /^[.a-zA-Z0-9-]+.[a-zA-Z]+$/; 
    var regAlpha = /(^[a-zA-Z]+$)/; 
    var regAlphaNum = /(^[a-zA-Z0-9]+$)/;
    var regAlphaNumericUnderLine = /(^[a-zA-Z0-9\_]+$)/;
    var regHost = /^[a-zA-Z-]+$/; 
    var regHangul = /([^가-힣\x20])/i; 
    var regHangulEng = /[가-힣a-zA-Z]/; 
    var regHangulOnly = /^[가-힣]*$/; 
    var regId = /(^([a-z0-9]+)([a-z0-9_]+$))/; 
    var regDate = /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/; 
    var regNospace = /(\s)/g;

    patten = eval(patten); 
    if(!patten.test(field.value)){ 
        checkMsg = chkItemname(field) + " : 필수 "+(field.type=="select"?"선택":"입력")+"입니다.\n";
        checkMsg1 = chkItemname(field) + " : Required field cannot be left blank .\n";
        checkFld = field;
    } 
} 

function chkRequired(field)
{ 	
	if (chkTrim(field) == "") 
	{
    if (checkFld == null) {
    	checkMsg = chkItemname(field) + " : 필수 "+(field.type=="select"?"선택":"입력")+"입니다.\n";
      checkMsg1 = chkItemname(field) + " : Required field cannot be left blank .\n";
      checkFld = field;
    } 
  }
}

// 최소 길이 검사
function chkMinlength(field)
{
	var len = field.getAttribute("minlength");
	if (field.value.length < len) 
	{
		if (checkFld == null) 
		{
			checkMsg = chkItemname(field) + " :  최소 " + len + "자 이상 입력하세요.\n";
			checkMsg1 = chkItemname(field) + " :  Minimum of " + len + " characters in length.\n";
			checkFld = field;
		}
	}
}
    
function chkCheckbox(field)
{
    if (!field.checked){
    	checkMsg = chkItemname(field) + " : 필수 "+(field.type=="select"?"선택":"입력")+"입니다.\n";
    	checkMsg1 = chkItemname(field) + " : Required field cannot be left empty .\n";
    	checkFld = field;
    }

}

function chkRadio(field)
{
	var f_radio = document.getElementsByName(field.name);
	var check_radio = 0;
    for (var i=0;i<f_radio.length;i++) {   
        if (f_radio[i].checked) {
        	check_radio = 1;
        	break;
        }
    }

	if(check_radio == 0) {
		checkMsg = chkItemname(field) + " : 필수 "+(field.type=="select"?"선택":"입력")+"입니다.\n";
    checkMsg1 = chkItemname(field) + " : Required field cannot be left empty .\n";
    checkFld = field;
	}
} 

function cutStr(str,limit){
  var tmpStr = str;
  var byte_count = 0;
  var len = str.length;
  var dot = "";
  
  for(i=0; i<len; i++){
    byte_count += chr_byte(str.charAt(i)); 
    if(byte_count == limit-1){
      if(chr_byte(str.charAt(i+1)) == 2){
        tmpStr = str.substring(0,i+1);
        dot = "...";
      }else {
        if(i+2 != len) dot = "...";
        tmpStr = str.substring(0,i+2);
      }
      break;
    }else if(byte_count == limit){
      if(i+1 != len) dot = "...";
      tmpStr = str.substring(0,i+1);
      break;
    }
  }
  document.writeln(tmpStr+dot);
  return true;
}
function chr_byte(chr,num){
	//alert(escape(chr).length);
  if(escape(chr).length < num)
    return 0;
  else
    return 1;
}
            
    function trim(s)
    {
        var t = "";
        var from_pos = to_pos = 0;

        for (i=0; i<s.length; i++)
        {
            if (s.charAt(i) == ' ')
                continue;
            else 
            {
                from_pos = i;
                break;
            }
        }

        for (i=s.length; i>=0; i--)
        {
            if (s.charAt(i-1) == ' ')
                continue;
            else 
            {
                to_pos = i;
                break;
            }
        }	

        t = s.substring(from_pos, to_pos);
        return t;
    }

    // 자바스크립트로 PHP의 number_format 흉내를 냄
    // 숫자에 , 를 출력
    function number_format(data) 
    {
        
        var tmp = '';
        var number = '';
        var cutlen = 3;
        var comma = ',';
        var i;
       
        len = data.length;
        mod = (len % cutlen);
        k = cutlen - mod;
        for (i=0; i<data.length; i++) 
        {
            number = number + data.charAt(i);
            
            if (i < data.length - 1) 
            {
                k++;
                if ((k % cutlen) == 0) 
                {
                    number = number + comma;
                    k = 0;
                }
            }
        }

        return number;
    }
            
    // 쿠키 입력
    function set_cookie(name, value, expirehours, domain) 
    {
        var today = new Date();
        today.setTime(today.getTime() + (60*60*1000*expirehours));
        document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + today.toGMTString() + ";";
        if (domain) {
            document.cookie += "domain=" + domain + ";";
        }
    }

    // 쿠키 얻음
    function get_cookie(name) 
    {
        var find_sw = false;
        var start, end;
        var i = 0;

        for (i=0; i<= document.cookie.length; i++)
        {
            start = i;
            end = start + name.length;

            if(document.cookie.substring(start, end) == name) 
            {
                find_sw = true
                break
            }
        }

        if (find_sw == true) 
        {
            start = end + 1;
            end = document.cookie.indexOf(";", start);

            if(end < start)
                end = document.cookie.length;

            return document.cookie.substring(start, end);
        }
        return "";
    }

    // 쿠키 지움
    function delete_cookie(name) 
    {
        var today = new Date();

        today.setTime(today.getTime() - 1);
        var value = get_cookie(name);
        if(value != "")
            document.cookie = name + "=" + value + "; path=/; expires=" + today.toGMTString();
    }

    // a 태그에서 onclick 이벤트를 사용하지 않기 위해
    function win_open(url, name, option)
    {
        var popup = window.open(url, name, option);
        popup.focus();
    }

    // 우편번호 창
    function win_zip(frm_name, frm_zip1, frm_zip2, frm_addr1, frm_addr2)
    {
        url = "/lib/zip.php?frm_name="+frm_name+"&frm_zip1="+frm_zip1+"&frm_zip2="+frm_zip2+"&frm_addr1="+frm_addr1+"&frm_addr2="+frm_addr2;
        win_open(url, "winZip", "left=50,top=50,width=400,height=300,scrollbars=0");
    }

    // 패스워드 분실 창
    function win_password_forget()
    {
        win_open("/lib/pop_search.php", 'winPasswordForget', 'left=50, top=50, width=400, height=300, scrollbars=auto');
    }

    // 달력 창
    function win_calendar(fld, cur_date, delimiter, opt)
    {
        if (!opt)
            opt = "left=50, top=50, width=240, height=230, scrollbars=0,status=0,resizable=0";
        win_open("/lib/calendar.php?fld="+fld+"&cur_date="+cur_date+"&delimiter="+delimiter, "winCalendar", opt);
    } 
    //iframe 리사이징
var iframeids=["resizeFrame","resizeFrame1"];
var iframehide="yes";

var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1]
var FFextraHeight=getFFVersion>=0.1? 16 : 20 //extra height in px to add to iframe in FireFox 1.0+ browsers

function resizeCaller() {
    var dyniframe=new Array()
    for (i=0; i<iframeids.length; i++){
    if (document.getElementById)
        resizeIframe(iframeids[i])
    if ((document.all || document.getElementById) && iframehide=="no"){
    var tempobj=document.all? document.all[iframeids[i]] : document.getElementById(iframeids[i])
        tempobj.style.display="block"
        }
    }
}

function resizeIframe(frameid){
    var currentfr=document.getElementById(frameid)
    if (currentfr && !window.opera){
        currentfr.style.display="block"
    if (currentfr.contentDocument && currentfr.contentDocument.body.offsetHeight) //ns6 syntax
        currentfr.height = currentfr.contentDocument.body.offsetHeight+FFextraHeight; 
    else if (currentfr.Document && currentfr.Document.body.scrollHeight) //ie5+ syntax
        currentfr.height = currentfr.Document.body.scrollHeight;
    if (currentfr.addEventListener)
        currentfr.addEventListener("load", readjustIframe, false)
    else if (currentfr.attachEvent){
        currentfr.detachEvent("onload", readjustIframe) // Bug fix line
        currentfr.attachEvent("onload", readjustIframe)
        }
    }
}

function readjustIframe(loadevt) {
    var crossevt=(window.event)? event : loadevt
    var iframeroot=(crossevt.currentTarget)? crossevt.currentTarget : crossevt.srcElement
    if (iframeroot)
        resizeIframe(iframeroot.id);
}

function loadintoIframe(iframeid, url){
    if (document.getElementById)
        document.getElementById(iframeid).src=url
}
if (window.addEventListener)
        window.addEventListener("load", resizeCaller, false)
    else if (window.attachEvent)
        window.attachEvent("onload", resizeCaller)
    else
        window.onload=resizeCaller

    function image_window(img,lang)
    {
    	var imgobj = new Image();
    		imgobj.src = img.src;
    	
        var w = imgobj.width; 
        var h = imgobj.height; 
        if(w == "")
        	w = 500;
        if(h == "")
        	h = 375;
        var winl = (screen.width-w)/2; 
        var wint = (screen.height-h)/3; 

        if (w >= screen.width) { 
            winl = 0; 
            h = (parseInt)(w * (h / w)); 
        } 

        if (h >= screen.height) { 
            wint = 0; 
            w = (parseInt)(h * (w / h)); 
        } 

        var js_url = "<script language='JavaScript1.2'> \n"; 
            js_url += "<!-- \n"; 
            js_url += "var ie=document.all; \n"; 
            js_url += "var nn6=document.getElementById&&!document.all; \n"; 
            js_url += "var isdrag=false; \n"; 
            js_url += "var x,y; \n"; 
            js_url += "var dobj; \n"; 
            js_url += "function movemouse(e) \n"; 
            js_url += "{ \n"; 
            js_url += "  if (isdrag) \n"; 
            js_url += "  { \n"; 
            js_url += "    dobj.style.left = nn6 ? tx + e.clientX - x : tx + event.clientX - x; \n"; 
            js_url += "    dobj.style.top  = nn6 ? ty + e.clientY - y : ty + event.clientY - y; \n"; 
            js_url += "    return false; \n"; 
            js_url += "  } \n"; 
            js_url += "} \n"; 
            js_url += "function selectmouse(e) \n"; 
            js_url += "{ \n"; 
            js_url += "  var fobj      = nn6 ? e.target : event.srcElement; \n"; 
            js_url += "  var topelement = nn6 ? 'HTML' : 'BODY'; \n"; 
            js_url += "  while (fobj.tagName != topelement && fobj.className != 'dragme') \n"; 
            js_url += "  { \n"; 
            js_url += "    fobj = nn6 ? fobj.parentNode : fobj.parentElement; \n"; 
            js_url += "  } \n"; 
            js_url += "  if (fobj.className=='dragme') \n"; 
            js_url += "  { \n"; 
            js_url += "    isdrag = true; \n"; 
            js_url += "    dobj = fobj; \n"; 
            js_url += "    tx = parseInt(dobj.style.left+0); \n"; 
            js_url += "    ty = parseInt(dobj.style.top+0); \n"; 
            js_url += "    x = nn6 ? e.clientX : event.clientX; \n"; 
            js_url += "    y = nn6 ? e.clientY : event.clientY; \n"; 
            js_url += "    document.onmousemove=movemouse; \n"; 
            js_url += "    return false; \n"; 
            js_url += "  } \n"; 
            js_url += "} \n"; 
            js_url += "document.onmousedown=selectmouse; \n"; 
            js_url += "document.onmouseup=new Function('isdrag=false'); \n"; 
            js_url += "//--> \n"; 
            js_url += "</"+"script> \n"; 

        var settings;

        if (neon_is_gecko) {
            settings  ='width='+(w+10)+','; 
            settings +='height='+(h+10)+','; 
        } else {
            settings  ='width='+w+','; 
            settings +='height='+h+','; 
        }
        settings +='top='+wint+','; 
        settings +='left='+winl+','; 
        settings +='scrollbars=no,'; 
        settings +='resizable=yes,'; 
        settings +='status=no'; 


        win=window.open("","image_window",settings); 
        win.document.open(); 
        win.document.write ("<html><head> \n<meta http-equiv='imagetoolbar' CONTENT='no'> \n<meta http-equiv='content-type' content='text/html; charset="+neon_charset+"'>\n"); 
        if(lang == "en")
        	var size = "Image Size : "+w+" x "+h;
        else
        	var size = "이미지 사이즈 : "+w+" x "+h;
        win.document.write ("<title>"+size+"</title> \n"); 
        if(w >= screen.width || h >= screen.height) { 
            win.document.write (js_url); 
            if(lang == "en")
            	var click = "ondblclick='window.close();' style='cursor:move' title=' "+size+" \n\n Image size is bigger than screen size. \n So when you click left button on mouse, can move it. \n\n when you double clicked, closed popup window. '"; 
            else
            	var click = "ondblclick='window.close();' style='cursor:move' title=' "+size+" \n\n 이미지 사이즈가 화면보다 큽니다. \n 왼쪽 버튼을 클릭한 후 마우스를 움직여서 보세요. \n\n 더블 클릭하면 닫혀요. '"; 
            	
        } 
        else {
        		if(lang == "en")
            	var click = "onclick='window.close();' style='cursor:pointer' title=' "+size+" \n\n When you clicked, closed popup window '"; 
            else
            	var click = "onclick='window.close();' style='cursor:pointer' title=' "+size+" \n\n 클릭하면 닫혀요. '"; 
				}            	
        win.document.write ("<style>.dragme{position:relative;}</style> \n"); 
        win.document.write ("</head> \n\n"); 
        win.document.write ("<body leftmargin=0 topmargin=0 bgcolor=#dddddd style='cursor:arrow;'> \n"); 
        win.document.write ("<table width=100% height=100% cellpadding=0 cellspacing=0><tr><td align=center valign=middle><img src='"+img.src+"' width='"+w+"' height='"+h+"' border=0 class='dragme' "+click+"></td></tr></table>");
        win.document.write ("</body></html>"); 
        win.document.close(); 

        if(parseInt(navigator.appVersion) >= 4){win.window.focus();} 
    }
       
}