/*************************************************************
	 만든이      : 장정호
	 작성일      : 2001.10.10
	 최종 수정일 :
	 프로젝트 명 : 라이브러리
	 모듈 명     : 웹상에서 이용되는 자바스크립트 함수 모음
	 기타 설명   :
	 수정 내용	 : 2002.04.10
	 							 2002.04.15 jf_checkHHMM, jf_checkHHMMSS 함수 추가
								 2002.04.23 Cookie에 관한 함수 추가
								 2002.04.29 변수명 수정
								 2002.04.30 jf_isArry 추가
								 2002.05.17 jf_isUserName 추가
								 2002.05.17 jf_isSizeOver 추가
								 2002.05.26 jf_imageSizeFix 추가
								 2002.06.08 jf_select 추가
								 2002.07.01 jf_selectMsg 추가
								 2002.07.07 jf_openWindow 추가
								 2003.08.22 jf_diffDay 추가
*************************************************************/

     /*******************************************/
     /*******************************************/
     /*       DATE  VALIDATION  CHECK           */
     /*******************************************/
     /*******************************************/
var JF_montharrAY= new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var JF_PADDASH   = new Array(" ", ",");
var JF_ALPHABET  = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';

var JF_OBJECT_TAG ="";
function jf_activeX(){
	document.write(JF_OBJECT_TAG);
	JF_OBJECT_TAG="";
}


function jf_generalDate(strDate) {
  strDate       	= jf_Trim(strDate);
  var tmpDate   	= "";

  for(var i = 0, j=0; i < strDate.length ; i++) {
    if (strDate.charAt(i) == "-") {
      tmpDate    += JF_PADDASH[j];
      j++;
      continue;
    }
    tmpDate      += strDate.charAt(i);
  }

  tmpDate         = new Date(tmpDate);

  with(tmpDate) {
      tmpDate   = jf_LPadChar(getFullYear().toString(),  4, "0") +
                  jf_LPadChar((getMonth()+1).toString(), 2, "0") +
                  jf_LPadChar(getDate().toString(),      2, "0") +
                  jf_LPadChar(getHours().toString(),     2, "0") +
                  jf_LPadChar(getMinutes().toString(),   2, "0") +
                  jf_LPadChar(getSeconds().toString(),   2, "0");
	}

	return tmpDate;
}


function jf_initClock(f) {
  var tmptickcount = "";
  var currdate     = new Date();
  var sysdate      = "";
  var tmpsysdate   = "";
  var tmpDate1     = "";
  var tmpDate2     = "";

  if (f.subtickcount.value == null)
    f.subtickcount.value = "";

  with(currdate) {
  	tmpDate1       = JF_montharrAY[getMonth()]    + " " +
                     jf_LPadChar(getDate().toString(), 2, "0")     + ", " +
                     jf_LPadChar(getFullYear().toString(), 4, "0") + " " +
                     jf_LPadChar(getHours().toString(), 2, "0")    + ":" +
                     jf_LPadChar(getMinutes().toString(), 2, "0")  + ":" +
                     jf_LPadChar(getSeconds().toString(), 2, "0");
  }

  if (f.subtickcount.value == "") {

  	tmpsysdate       = jf_deleteChar(f.systemdate.value, "/")+"59";

    sysdate          = new Date(parseFloat(tmpsysdate.substring(0, 4)),
                                parseFloat(tmpsysdate.substring(4, 6)) - 1,
                                parseFloat(tmpsysdate.substring(6, 8)),
                                parseFloat(tmpsysdate.substring(8, 10)),
                                parseFloat(tmpsysdate.substring(10, 12)),
                                parseFloat(tmpsysdate.substring(12)));
    with(sysdate) {
    	tmpDate2       = JF_montharrAY[getMonth()]   + " " +
                       jf_LPadChar(getDate().toString(), 2, "0")     + ", " +
                       jf_LPadChar(getFullYear().toString(), 4, "0") + " " +
                       jf_LPadChar(getHours().toString(), 2, "0")    + ":" +
                       jf_LPadChar(getMinutes().toString(), 2, "0")  + ":" +
                       jf_LPadChar(getSeconds().toString(), 2, "0");
    }

    tmptickcount = Math.floor( (Date.parse(tmpDate2) - Date.parse(tmpDate1))/1000);

    f.subtickcount.value = tmptickcount.toString();
  }
}

function jf_sysDate(tmptickcount) {
  var sysDate 	= "";
  var currdate 	= new Date();

  currdate.setMilliseconds(parseFloat(tmptickcount)*1000);

  with(currdate){
      sysDate   = jf_LPadChar(getFullYear().toString(),  4, "0") +
                  jf_LPadChar((getMonth()+1).toString(), 2, "0") +
                  jf_LPadChar(getDate().toString(),      2, "0") +
                  jf_LPadChar(getHours().toString(),     2, "0") +
                  jf_LPadChar(getMinutes().toString(),   2, "0") +
                	jf_LPadChar(getSeconds().toString(),   2, "0");
 }

 return sysDate;
}

//=============================================
//  inputValue에서 delChar를 모두 제거한 값을
//  return한다.
//=============================================
function jf_deleteChar(inputValue, delChar) {
 var tmpValue = "";
   inputValue = jf_Trim(inputValue);
   for(var i=0; i < inputValue.length; i++) {
     if ( inputValue.charAt(i) != delChar )
         tmpValue += inputValue.charAt(i);
   }

   return tmpValue;
}


//=============================================
//  inputValue값의 cnt에서 inputValue의 길이를
//  뺀 수만큼 padChar문자로 채워줌
//=============================================
function jf_LPadChar(inputValue, cnt, padChar) {
    var tmpValue = "";
    inputValue = jf_Trim(inputValue);

		for(var i=0; i < (cnt-inputValue.length); i++)
      tmpValue += padChar;
    return (tmpValue + inputValue);
}


//=============================================
//  inputValue값의 cnt에서 inputValue의 길이를
//  뺀 수만큼 padChar문자로 채워줌
//=============================================
function jf_RPadChar(inputValue, cnt, padChar) {
    var tmpValue = "";
    inputValue = jf_Trim(inputValue);
    for(var i=0; i < (cnt-inputValue.length); i++)
      tmpValue += padChar;
    return (inputValue + tmpValue);
}


//=============================================
// b의 양쪽 공백을 제거해주는 함수
//=============================================
function jf_Trim(b) {
    var i, startIdx, endIdx;

    if (b == null)
        return "";

    startIdx = 0;
    endIdx   = b.length;

     for(i=0; i < b.length ; i++)
        if ( b.charAt(i) != " " )
        {
            startIdx = i;
            break;
        }

     for(i=b.length; i >= 0 ; i--)
        if ( b.charAt(i-1) != " " )
        {
            endIdx = i;
            break;
        }

     return b.substring(startIdx, endIdx);
}


//========================================
//  Month Array 생성
//========================================
function jf_montharr(m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11) {
    this[0] = m0;
    this[1] = m1;
    this[2] = m2;
    this[3] = m3;
    this[4] = m4;
    this[5] = m5;
    this[6] = m6;
    this[7] = m7;
    this[8] = m8;
    this[9] = m9;
    this[10] = m10;
    this[11] = m11;
}


//========================================
//  YYYY 를 check한다.
//========================================
function jf_checkYYYY(toCheck) {
  return ( ( toCheck.length == 4) && ( jf_isInteger(toCheck)  ) && ( toCheck != "0000") );
}


//========================================
//  MM 를 check한다.
//========================================
function jf_checkMM(toCheck) {
  return ((!jf_isEmpty(toCheck)) && (jf_isInteger(toCheck)) && ( parseFloat(toCheck) > 0 ) && (parseFloat(toCheck) < 13));
}


//========================================
//  YYYY,MM,DD를 check한다.
//========================================
function jf_checkDD( yyyy, mm, toCheck) {
    var isYMD   = false;
    var monthDD = new jf_montharr(31,28,31,30,31,30,31,31,30,31,30,31);
    var im      = eval(mm) - 1;

    if ( toCheck.length == 0 )
         return false;

    if ( !jf_isInteger(toCheck)  )
         return false;

    var dd = toCheck;

    if ( ( (yyyy%4 == 0) && (yyyy%100 != 0) ) || (yyyy%400 == 0) )
    {
         monthDD[1] = 29;
    }

    if ( (0 < dd) && (dd <= monthDD[im]) )
         isYMD = true;

    return isYMD;
}


//========================================
//  YYYYMMDD를 check한다.
//========================================
function jf_checkDate( dateVal ) {
  var isDate  = true ;

	if ( dateVal.length != 8 )  {
		isDate = false ;
	}
	else {
		var yy = dateVal.substring(0,4) +"" ;
		var mm = dateVal.substring(4,6) +"" ;
		var dd = dateVal.substring(6,8) +"" ;

		if (!jf_checkYYYY(yy)) {
				isDate = false ;
		}

		else if (!jf_checkMM(mm))	{
			isDate = false ;
		}

		else if (!jf_checkDD(yy,mm,dd))	{
			isDate = false ;
		}
	}
	return isDate ;
}

//========================================
//  YYYY-MM-DD를 check한다.
//========================================
function jf_checkDate2( dateVal ) {
  var isDate  = true ;
	if ( dateVal.length != 10 ) {
		isDate = false ;
	}
	else {
		var yy = dateVal.substring(0,4) +"" ;
		var mm = dateVal.substring(5,7) +"" ;
		var dd = dateVal.substring(8,10) +"" ;

		if (!jf_checkYYYY(yy)) {
			isDate = false ;
		}
		else if (!jf_checkMM(mm)) {
			isDate = false ;
		}
		else if (!jf_checkDD(yy,mm,dd))	{
			isDate = false ;
		}
	}
	return isDate ;
}


//================================
// HH를 Check한다.
//================================
function jf_checkHH( toCheck ) {
  return ((!jf_isEmpty(toCheck)) && (jf_isInteger(toCheck)) && ( parseFloat(toCheck) >= 0 ) && (parseFloat(toCheck) <= 23));
}


//================================
// HHMM를 Check한다.
//================================
function jf_checkHHMM( hh, mm ) {
 	if ( jf_checkHH(hh) ){
  	return ((!jf_isEmpty(mm)) && (jf_isInteger(mm)) && ( parseFloat(mm) >= 0 ) && (parseFloat(mm) <= 59));
	}
	return false;
}

//================================
// HHMMSS를 Check한다.
//================================
function jf_checkHHMMSS( hh, mm, ss ) {
 	if ( jf_checkHHMM(hh,mm) ){
  	return ((!jf_isEmpty(ss)) && (jf_isInteger(ss)) && ( parseFloat(ss) >= 0 ) && (parseFloat(ss) <= 59));
	}
	return false;
}


//================================
// MI를 Check한다.
//================================
function jf_checkMI( toCheck ) {
    return ((!jf_isEmpty(toCheck)) && (jf_isInteger(toCheck)) && ( parseFloat(toCheck) >= 0 ) && (parseFloat(toCheck) <= 59));
}


//================================
// HHMI를 Check한다.
//================================
function jf_timeCheck( inputValue ) {
	var chkval =  jf_Trim(inputValue);

	if ( jf_isInteger ( chkval ) ) {
		if ( parseFloat(chkval) < 2400 ){
			if ( chkval.substring(0,1) > 2 )
				return false;
			else if ( chkval.substring(1,2) > 9 )
				return false ;
			else if ( chkval.substring(2,3) > 5  )
				return false ;
			else if ( chkval.substring(3,4) > 9 )
				return false;
			else
				return true ;
		}
		else {
			return false ;
		}
	}
	else{
			return false ;
	}
}

 /*******************************************/
 /*******************************************/
 /*       COMMON VALIDATION CHECK           */
 /*******************************************/
 /*******************************************/

//---------------------------------------------------
//  기능   : 영문자.한글 별로 length를 return ..IE4.0 이상
//----------------------------------------------------
function jf_strLeng(strIn) {
	var strOut  = 0;
	var agr     = navigator.userAgent;
	var isIE   = agr.indexOf("MSIE");

	if(isIE != -1){
		for ( i = 0 ; i < strIn.length ; i++)	{
			ch = strIn.charAt(i);
			if ((ch == "\n") || ((ch >= "ㅏ") && (ch <= "히")) || ((ch >="ㄱ") && (ch <="ㅎ")))
					strOut += 2;
			else
					strOut += 1;
		}
	}
	else{
		strOut = strIn.length ;
	}
	return (strOut);
}


//---------------------------------------------------
//  기능   : Check NULL OR Space RETURN T/F
//---------------------------------------------------
function jf_isEmpty(toCheck) {
	var chkstr = jf_Trim(toCheck) + "";
	var is_Space = true ;

	if ( ( chkstr == "") || ( chkstr == null ) )
		return true;

	for ( j = 0 ; is_Space && ( j < chkstr.length ) ; j++) {
		if( chkstr.substring( j , j+1 ) != " " )
			is_Space = false ;
	}

	return is_Space;
}


//---------------------------------------------------
//  기능   : Check NULL OR Space RETURN T/F , Msg
//---------------------------------------------------
function jf_isEmptyRtnMsg(obj, msg, len) {
	var toCheck  = obj.value ;
	var chkstr   = jf_Trim(toCheck) + "";
	var is_Space = true ;

	if ( jf_isEmpty(toCheck) ) {
		alert( msg );
		obj.focus();
		obj.select();
		return true ;
	}

	for ( j = 0 ; is_Space && ( j < chkstr.length ) ; j++) {
		if( chkstr.substring( j , j+1 ) != " " )
				is_Space = false ;
	}

	if ( is_Space )	{
		alert( msg );
		obj.focus();
		obj.select();
		return true ;
	}

	if (len != null) {
		if (jf_strLeng(obj.value) > len) {
			alert( msg +" 한글 "+len/2+",영문 "+len+"자 이내로 입력하십시오.");
			obj.focus();
			obj.select();
			return true ;
		}
		else {
			return false ;
		}
	}
	else
		return false ;
}

// 다른것 jf_isEmptyRtnMsg와 같고, len만 이하체크를 한다.
function jf_isEmptyRtnMsg2(obj, msg, len) {
	var toCheck  = obj.value ;
	var chkstr   = jf_Trim(toCheck) + "";
	var is_Space = true ;

	if ( jf_isEmpty(toCheck) ) {
		alert( msg );
		obj.focus();
		obj.select();
		return true ;
	}

	for ( j = 0 ; is_Space && ( j < chkstr.length ) ; j++) {
		if( chkstr.substring( j , j+1 ) != " " )
				is_Space = false ;
	}

	if ( is_Space )	{
		alert( msg );
		obj.focus();
		obj.select();
		return true ;
	}

	if (len != null) {
		if (jf_strLeng(obj.value) < len) {
			alert( msg );
			obj.focus();
			obj.select();
			return true ;
		}
		else {
			return false ;
		}
	}
	else
		return false ;
}

//---------------------------------------------------
//  Check Space in String RETURN T/F
//  사용 : 개인입력시 이름
//---------------------------------------------------
function jf_isContentSpace(str) {
	var inx    = str.indexOf(" ");
	var inx1   = str.indexOf("#");
	var inx2   = str.indexOf("!");
	var inx3   = str.indexOf("$");
	var inx4   = str.indexOf("@");
	var inx5   = str.indexOf("%");
	var inx6   = str.indexOf("^");
	var inx7   = str.indexOf("&");
	var inx8   = str.indexOf("*");
	var inx9   = str.indexOf("(");
	var inx10  = str.indexOf("?");
	var inx11  = str.indexOf(")");

	if ( (inx != -1 ) || (inx1 != -1 ) || (inx2 != -1 ) || (inx3 != -1 ) ||
			(inx4 != -1 ) || (inx5 != -1 ) || (inx6 != -1 ) || (inx7 != -1 ) ||
			(inx8 != -1 ) || (inx9 != -1 ) || (inx10 != -1 ) || (inx11 != -1 ) ) {
		return true ;
	}
	else {
		return false ;
	}
}


//---------------------------------------------------
//  기능   : Check Integer RETURN T/F
//---------------------------------------------------
function jf_isInteger(st) {
	if (!jf_isEmpty(st)) {
		for (j=0; j<st.length; j++) {
			if (((st.substring(j, j+1) < "0") || (st.substring(j, j+1) > "9")))
					return false;
		}
	}
	else {
			return false ;
	}
  return true ;
}

//---------------------------------------------------
//  기능   : Check Number RETURN T/F
//---------------------------------------------------
function jf_isDigit(st) {
	st = jf_Trim(st);
	if (!jf_isEmpty(st)) {
		for (j=0; j<st.length; j++) {
			if ( (st.charAt(j) < "0") || (st.charAt(j) > "9") )
				return false;
		}
	}
	else {
		return false ;
	}
	return true ;
}


//---------------------------------------------------
//  기능   : Check Integer RETURN T/F , Msg
//---------------------------------------------------
function jf_isIntegerRtnMsg(obj, msg, len) {
	var st = jf_Trim(obj.value);
	if (!jf_isEmpty(st)) {
		for (j=0; j<st.length; j++)	{
			if (((st.substring(j, j+1) < "0")||(st.substring(j, j+1)>"9")))	{
				alert( msg +" 숫자로 입력하십시오.");
				obj.focus();
				obj.select();
				return false;
			}
		}
	}
	else {
		alert( msg +" 입력하십시오.");
		obj.focus();
		obj.select();
		return false ;
	}

	if ( len != null ) {
		if ( jf_strLeng(st) != len ) {
			alert( msg +" " +len+"자로 입력하십시오.");
			obj.focus();
			obj.select();
			return false ;
		}
	}

	return true ;
}


//---------------------------------------------------
//  기능   : Check Integer RETURN T/F , Msg
//---------------------------------------------------
function jf_isIntegerRtnMsg1(obj, msg, slen, elen) {
	var st = jf_Trim(obj.value);
	if (!jf_isEmpty(st)) {
		for (j=0; j<st.length; j++)	{
			if (((st.substring(j, j+1) < "0")||(st.substring(j, j+1)>"9")))	{
				alert( msg +" 숫자로 입력하십시오.");
				obj.focus();
				obj.select();
				return false;
			}
		}
	}
  else {
		alert( msg +" 입력하십시오.");
		obj.focus();
		obj.select();
		return false ;
  }
  if ( elen != null ) {
		if ( jf_strLeng(st) < slen || jf_strLeng(st)> elen ) {
			alert( msg +" " +slen+" ~ "+elen+"자로 입력하십시오.");
			obj.focus();
			obj.select();
			return false ;
		}
  }
  return true ;
}

//---------------------------------------------------
//  기능   : Check Letter RETURN T/F
//---------------------------------------------------
function jf_isLetter(inputValue) {
	inputValue = jf_Trim(inputValue);
	inputValue = inputValue.toUpperCase();

	for (var i=0; i<inputValue.length; i++)
		if ((inputValue.charAt(i) < "A") || (inputValue.charAt(i) > "Z"))
			return false;

	return true;
}

//---------------------------------------------------
//  기능   : Check Alphanumeric RETURN T/F
//---------------------------------------------------
function jf_isAlphanumeric(inputValue) {
	inputValue = jf_Trim(inputValue);
	inputValue = inputValue.toUpperCase();

	if (jf_isEmpty(inputValue))
		return false;

	for (i=0; i<inputValue.length; i++)	{
		if (((inputValue.charAt(i) < "A") || (inputValue.charAt(i) > "Z")) && ((inputValue.charAt(i) < "0") || (inputValue.charAt(i) > "9")))
			return false;
	}
 return true;
}

//============================================
// Select Option Check
//                    - return checked value
//============================================
function jf_seletboxCheck ( sb ) {
	var SelectValue = null ;

	for ( var i=0 ; i < sb.length  ; i++)	{
		if ( sb.options[i].selected == true )	{
			if ( sb.options[i].value != "" ) {
				SelectValue = sb.options[i].value ;
				break;
			}
		}
	}
	return SelectValue  ;
}

//================================
// PASSWORD 구성 Check
//================================

function jf_pswdCheck(obj1, obj2) {
  var str = obj1.value;

	if (jf_strLeng(obj1.value) < 4){
		alert("비밀번호는 4자 이상으로 입력하십시오");
		obj1.focus();
		obj1.select();
		return false;
	}

	for (i=0 ; i<str.length; i++){
		if (((str.charAt(i) >= "ㅏ") && (str.charAt(i) <= "히")) || ((str.charAt(i) >="ㄱ") && (str.charAt(i) <="ㅎ")))	{
			alert("\n비밀번호에 한글 입력하실 수 없습니다.");
			obj1.select();
			obj1.focus();
			return false;
		}
	}

	if ( obj2.value == "" ){
	alert("비밀번호 확인을 위하여 비밀번호를 다시 입력하십시오.");
			obj2.focus();
			obj2.select();
			return false;
	}
	if ( obj1.value != obj2.value ){
			alert("비밀번호와 비밀번호 확인이 다릅니다.비밀번호를 확인후 다시 입력하십시오.");
			obj2.focus();
			obj2.select();
			return false;
	}
	return true ;
}

function jf_date() {
  var aaa = new Date(2000, 3, 20, 10, 10, 86400);
  alert(aaa.getDate()+"/"+aaa.getMonth()+"/"+(aaa.getFullYear())+"/ hour"+aaa.getHours() + " / Minutes " + aaa.getMinutes());

  var aaaa = "12345678901234567";
  alert(parseFloat(aaaa));
}


//================================
// 주민번호 구성 Check
//================================
function jf_juminCheck(obj1, obj2) {
	str1 = obj1.value ;
	str2 = obj2.value ;

	var v_yy = "";

	if ((str2.substring(0,1) == "1" ) || (str2.substring(0,1) == "2" ) ) {
			v_yy = "19" ;
	}
	else if ((str2.substring(0,1) == "3" ) || (str2.substring(0,1) == "4" ) ) {
			v_yy = "20" ;
	}
	else if ((str2.substring(0,1) == "0" ) || (str2.substring(0,1) == "9" ) )	{
			v_yy = "18" ;
	}

	li_value = new Array(13);

	var li_lastid,li_mod,li_minus,li_last;

	if(!jf_checkDate(v_yy+str1)) {
			alert("\n주민번호 앞자리가 잘못입력되었습니다");
			obj1.select();
			obj1.focus();
			return false;
	}

	if(str2.length != 7 )	{
			alert("\n주민번호 뒷자리를 7자리로 입력하십시오.");
			obj2.select();
			obj2.focus();
			return false;
	}

	if (jf_isInteger(str1) && jf_isInteger(str2))	{
			li_lastid    = parseFloat(str2.substring(6,7));
			li_value[0]  = parseFloat(str1.substring(0,1))  * 2;
			li_value[1]  = parseFloat(str1.substring(1,2))  * 3;
			li_value[2]  = parseFloat(str1.substring(2,3))  * 4;
			li_value[3]  = parseFloat(str1.substring(3,4))  * 5;
			li_value[4]  = parseFloat(str1.substring(4,5))  * 6;
			li_value[5]  = parseFloat(str1.substring(5,6))  * 7;
			li_value[6]  = parseFloat(str2.substring(0,1))  * 8;
			li_value[7]  = parseFloat(str2.substring(1,2))  * 9;
			li_value[8]  = parseFloat(str2.substring(2,3))  * 2;
			li_value[9]  = parseFloat(str2.substring(3,4))  * 3;
			li_value[10] = parseFloat(str2.substring(4,5))  * 4;
			li_value[11] = parseFloat(str2.substring(5,6))  * 5;
			li_value[12] = 0;

			for (var i = 0; i<12;i++)
					li_value[12] = li_value[12] + li_value[i];

			li_mod      = li_value[12] %11;
			li_minus    = 11 - li_mod;
			li_last     = li_minus % 10;

			if (li_last != li_lastid)	{
					alert("\n주민번호가 잘못입력되었습니다.");
					obj2.select();
					obj2.focus();
					return false;
			 }
			 else
					return true;
	 }
	 else {
			alert("\n주민번호가 잘못입력되었습니다.");
			obj2.select();
			obj2.focus();
			return false;
	 }
}
//========================================
// tab order (field 자동 이동)
//========================================
function js_tab_order(arg,nextname,len) {
	if (arg.value.length==len)  {
		nextname.focus() ;
		return;
	}
}

function jf_isValidEmail(obj){
	valid = false;
	val   = obj.value;

	// space within email?
	if (val.indexOf(" ") != -1)
		alert("Email주소에 공백은 허용되지 않습니다.!");
	else if (val.indexOf("@") < 1)
		alert("Email주소 지정이 잘못되었습니다. '@'이 누락되었습니다.");
	else if (val.indexOf(".") == -1)
		alert("Email주소 지정이 잘못되었습니다. '.'이 누락되었습니다.");
	else if (val.indexOf(".") - val.indexOf("@") == 1)
		alert("Email주소 지정이 잘못되었습니다. '@' 다음에 바로 '.'이 올 수 없습니다.");
	else if (val.charAt(val.length-1) == '.')
		alert("Email주소 지정이 잘못되었습니다. '.'은 Email주소 끝에 올 수 없습니다.");
	else
		valid = true;

	if (valid == false){
		obj.focus();
		obj.select();
	}

	return valid;
}

function jf_typeCheck(obj, cmt, astr, lmin, lmax) {
	var i;
	var t = obj.value;

	if (t.length < lmin || t.length > lmax)	{
		if (lmin == lmax)
			alert(cmt + '는 ' + lmin + ' 자 이어야 합니다');
		else
			alert(cmt + '는 ' + lmin + ' ~ ' + lmax + ' 자 이내로 입력하셔야 합니다');

		obj.focus();
		obj.select();
		return true;
	}

	if (astr.length > 1) {
		for (i=0; i<t.length; i++) {
			if(astr.indexOf(t.substring(i,i+1))<0) {
				alert(cmt + '에 허용할 수 없는 문자가 입력되었습니다');
				obj.focus();
				return true;
			}
		}
	}

	return false;
}

// 숫자인지를 체크
function jf_isNumber(val, allowable) {
	valid = true;
	cmp = "0123456789" + allowable;

	for (i=0; i<val.length; i++) {
		if (cmp.indexOf(val.charAt(i)) < 0)	{
			valid = false;
			break;
		}
	}
	return valid;
}

function jf_checkLength(obj, min, max, nullable) {
	if (!nullable) {
		len = obj.value.length;

		if (len < min || len > max)
			return false;
	}
	return true;
}

function jf_checkUserName(obj) {
	if (!jf_checkLength(obj, 2, 10, false))	{
		alert("이름이 등록되지 않았거나 유효한 이름이 아닙니다.");
		obj.focus();
		obj.select();
		return false;
	}
	else {
		if (!jf_isHangul(obj.value)) {
			alert("이름을 공백 없이 한글로 써 주세요.");
			obj.focus();
			obj.select();
			return false;
		}
	}
	return true;
}


function jf_isUserName(obj) {
	if (!jf_checkLength(obj, 2, 10, false))	{
		obj.focus();
		obj.select();
		return false;
	}
	else {
		if (!jf_isHangul(obj.value)) {
			obj.focus();
			obj.select();
			return false;
		}
	}
	return true;
}

function jf_getCookieVal (offset) {
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1) endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}



function jf_getCookie (name) {
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen) {	//while open
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg)
			 return jf_getCookieVal (j);
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break;
	}	//while close
	return null;
}

// 시간은 분단위
function jf_setCookieVal (name, value, time) {
	pathname = location.pathname;
	var ExpDate = new Date();
  var myDomain = pathname.substring(0, pathname.lastIndexOf('/')) +'/';

	// 이렇게 쓸수도 있다.
  var myDomain = '/';

  ExpDate.setTime(ExpDate.getTime() + 1000*60* time);
  jf_setCookie(name, value, ExpDate, myDomain);
}

function jf_setCookie (name, value) {
	var argv = jf_setCookie.arguments;
	var argc = jf_setCookie.arguments.length;
	var expires = (2 < argc) ? argv[2] : null;
	var path = (3 < argc) ? argv[3] : null;
	var domain = (4 < argc) ? argv[4] : null;
	var secure = (5 < argc) ? argv[5] : false;
	document.cookie = name + "=" + escape (value) +
		((expires == null) ? "" :
			 ("; expires=" + expires.toGMTString())) +
		((path == null) ? "" : ("; path=" + path)) +
		((domain == null) ? "" : ("; domain=" + domain)) +
		((secure == true) ? "; secure" : "");
}

// 배열인지 아닌지
function jf_isArry(arry){
	if (arry.length == null){
		return false;
	}
	else{
		return true;
	}
}

// 문자열 크기를 초가 했는지..
function jf_isSizeOver(val, maxSize){
	if (val.length > maxSize){
		return true;
	}
	return false;
}

// 문자열 크기를 초가 했는지..
function jf_isSizeOverMsg(fm, maxSize, msg){
	if (fm.value.length > maxSize){
		jf_select(fm);
		alert(msg);
		return true;
	}

	return false;
}


//그림 사이즈 고정
function jf_imageSizeFix(objImg, limX, limY) {
	var x;
	var y;

	x = objImg.width;
	y = objImg.height;

	// 가로를 중심으로 맞춘다.
	if (x * limX > y * limY){
		if (objImg.width > limX){
			objImg.width = limX
		}
	}
	// 세로를 중심으로 맞춘다.
	else{
		if (objImg.height > limY){
			objImg.height = limY
		}
	}
}
// 딱 보면 알지요. 무슨 역활인지
function jf_select(obj){
	obj.focus();
	obj.select();
}

// 경고 메세지도 같이
function jf_selectMsg(obj,msg){
	obj.focus();
	obj.select();
	alert(msg);
}

// 팝업창 뛰우기
function jf_openWindow(url, name, resize, scroll, width, height, left, top, isCenter){
	// 화면 센터로 팝업창 뛰우기
	if (isCenter != null && isCenter == true){
		var x = screen.availWidth;
		var y = screen.availHeight;
		var h;
		var w;

		h = (y / 2) - (height / 2);
		w = (x / 2) - (width / 2);
		window.open(url,name,"resizable=" + resize + ",scrollbars=" + scroll + ",width=" + width + ",height=" + height + ",left=" + w + ",top=" + h)
	}
	else{
		window.open(url,name,"resizable=" + resize + ",scrollbars=" + scroll + ",width=" + width + ",height=" + height + ",left=" + left + ",top=" + top)
	}
}

// html을 Text 값으로 리턴
function jf_toText(str){
	var s;
	s = str;
	s = s.replace(/&/g, "&amp;")


	// 완성형에 없는 글자를 표시하기 위해 ex)$#32145;
	s = s.replace(/&amp;#/g, "&#")
	s	= s.replace(/</g 		, "&lt;")
	s	= s.replace(/>/g		, "&gt;")

	s	= s.replace(/"/g		, "&quot;")
	s	= s.replace(/ /g		, "&nbsp;")
	s	= s.replace(/\n/g		, "<br>")

	return s;
}


// 입력한 날짜에서 현제 날짜의 차이를 구한다.
// 현제날짜 2003-08-22
// 입력한날짜 2003-08-20
// 결가값	2
function jf_diffDay(in_date, df_date){
	var s 	= in_date.split('-');
	input_d = new Date(s[0], s[1] - 1, s[2]);
	if (df_date == null){
		now_d  	= new Date();
		// 시간을 없에 버린 날짜만
		now_d	= new Date(now_d.getYear(), now_d.getMonth(), now_d.getDate());
	}
	else{
		s 	= df_date.split('-');
		now_d = new Date(s[0], s[1] - 1, s[2]);
	}
	input_s = input_d.getTime();

	dff_day	= (input_s - now_d.getTime()) / (1000*60*60*24);

	return dff_day;
}

function jf_comma(x) {
	var txtNumber = '' + x;
    if (isNaN(txtNumber) || txtNumber == "") {
        return '';
    }
	else {
        var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])');
        var arrNumber = txtNumber.split('.');
        arrNumber[0] += '.';

        do {
        	arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2');
        } while (rxSplit.test(arrNumber[0]));

        if (arrNumber.length > 1) {
        	return arrNumber.join('');
        }
        else {
        	return arrNumber[0].split('.')[0];
		}
 	}
}


//실시간 시계
function getime() {
        var date= new Date();
        var h = date.getHours();
        var m = date.getMinutes();
        var s = date.getSeconds();
        var ampm="A.M.";
        if (h > 11) { ampm="P.M." }
        if (h > 12) { h-=12 }
        if(m<10){ m="0"+m }
        if(s<10){ s="0"+s }
        clock.innerHTML=h+ ":" +m+ ":" +s+ " " +ampm;
        setTimeout("getime()",100)
}

