레이블이 JAVAScript인 게시물을 표시합니다. 모든 게시물 표시
레이블이 JAVAScript인 게시물을 표시합니다. 모든 게시물 표시

2010년 11월 25일 목요일

[JavaScript] 동적인 테이블 태그 생성하기

출처 : PHPSCHOOL

<html>
<head>
    <script language="javascript">
        function init(){
       
            var oRow = tbl.insertRow();
            var oCell1 = oRow.insertCell();
            oCell1.rowSpan="2";
            var oCell2 = oRow.insertCell();
           
           
            var oRow2 = tbl.insertRow();
            var oCell3=oRow2.insertCell();
           
            oCell1.innerHTML = "aaaa";
            oCell2.innerHTML = "bbbb";
            oCell3.innerHTML = "cccc";
           
        }
    </script>
</head>
<body onload="javascript:init();">
    <table id="tbl" border=1>
        <tr>
            <td rowspan="2">rowspan2</td>
            <td>1111</td>
        </tr>
        <tr>
            <td>2222</td>
        </tr>
    </table>
</body>
</html>

2010년 11월 12일 금요일

[자바스크립트] 문자열 자르기 (배열)

자바스크립트에서.. split 을 쓸경우..

var s_data = "2005-03-25";  // 잘라야 되는 값..

var array_data = s_data.split("-");  // split 함수사용..

var s_year = array_data[0];   // 잘라진 값 배열..
var s_month = array_data[1];
var s_day = array_data[2];

2010년 1월 4일 월요일

페이지 스크랩 방지 소스

본자료는 직접 재작한것이 아님을 미리 알려드립니다.

어떠한 페이지를 보다보면 페이지 스크렙 또는 드래그가 안되는 페이지 들이 있으실겁니다.

아래의 자바스크립트 소스때문인데요....

간단하게 보면 버튼클릭 & 드레그 등을 자바스크립트로 막는기능입니다 ^^


<SCRIPT language="javascript" type="text/javascript">
<!--
    function keypressed(e) {
        if (e == null) {
            if(event.keyCode == 122 || event.keyCode == 17 || event.keyCode == 18 || event.keyCode == 112 || event.keyCode == 25 || event.keyCode == 21|| event.keyCode == 27) {
                alert('스크랩금지입니다.');
                return false;
            }
        } else {
            if(e.keyCode == 122 || e.keyCode == 17 || e.keyCode == 18 || e.keyCode == 112 || e.keyCode == 25 || e.keyCode == 21|| e.keyCode == 27) {
                alert('스크랩금지입니다.');
                return false;
            }
        }
    }

    document.onkeydown = function (e) {
        if(typeof(e) != "undefined")
            keypressed(e);
        else
            keypressed();
    }

    document.oncontextmenu=new Function("return false");
    document.onselectstart=new Function("return false");
    document.ondragstart=new Function("return false");
    document.onmousedown=new Function("return false");
//-->
</SCRIPT>

2009년 11월 19일 목요일

HTML에 플래시 넣어주는 자바스크립트 함수

일전에 어디선가 편하게 플래시를 띄울수 있는 함수를 본것 같아서 검색하다가
남에 홈피 뒤져보다가...ㅋㅋ
결국 찾긴 찾았는데 약간의 수정이 필요해 보입니다.

LG데이콤 홈페이지에서 가져온건데 유용할것 같아 올려봅니다.

사실 제가 필요해서 찾은거구 올리는거예요 ㅋㅋㅋㅋ

/*
###########플래시 넣는 함수############
f_id = 플래시 아이디
f_name = 플래시 파일명
f_width = 가로크기
f_height = 세로높이
f_trans = 공백, transparent(투명)
f_para = 파라미터, 공백
*/
function show_flash_F(f_id,f_name,f_width,f_height,f_trans,f_para){
  document.write("<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-44455354000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0' width='"+f_width+"' height='"+f_height+"' id='"+f_id+"'>");
    document.write("<param name='allowScriptAccess' value='always'/>");
    document.write("<param name='movie' value='"+f_name+"'>");
    document.write("<param name='quality' value='high'>");
    document.write("<param name='scale' value='noscale'>");
    document.write("<param name='wmode' value='"+f_trans+"'>");
    document.write("<PARAM NAME='flashvars' VALUE='"+f_para+"'>");
    document.write("<embed src='"+f_name+"' allowScriptAccess='always' quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' wmode='"+f_trans+"' width='"+f_width+"' height='"+f_height+"'></embed>");
    document.write("</object>");
}

function writeObject(obj_file,width,height,wmode)
{
    var obj_src = "";
    obj_src += "<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0\" width=\""+width+"\" height=\""+height+"\">\n";
    obj_src += "  <param name=\"movie\" value=\""+obj_file+"\">\n";
    obj_src += "  <param name=\"wmode\" value=\""+wmode+"\">\n";
    obj_src += "  <param name=\"menu\" value=\"false\">\n";
    obj_src += "  <param name=\"quality\" value=\"high\">\n";
    obj_src += "  <embed src=\""+obj_file+"\" quality=\"high\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" width=\""+width+"\" height=\""+height+"\"></embed>\n";
    obj_src += "</object>\n";
   
    document.write(obj_src);
}

function FlashObject(swf, width, height, bgcolor, id, flashvars)
{
    var strFlashTag = new String();
    if (navigator.appName.indexOf("Microsoft") != -1)
    {
        strFlashTag += "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' ";
        strFlashTag += "codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=version=8,0,0,0' ";
        strFlashTag += "id='" + id + "' width='" + width + "' height='" + height + "'>";
        strFlashTag += "<param name='movie' value='" + swf + "'/>";
       
        if(flashvars != null) {strFlashTag += "<param name='flashvars' value='" + flashvars + "'/>"};
        strFlashTag += "<param name='quality' value='best'/>";
        strFlashTag += "<param name='bgcolor' value='" + bgcolor + "'/>";
        strFlashTag += "<param name='menu' value='false'/>";
        strFlashTag += "<param name='salign' value='LT'/>";
        strFlashTag += "<param name='scale' value='noscale'/>";
        strFlashTag += "<param name='wmode' value='transparent'/>";
        strFlashTag += "<param name='allowScriptAccess' value='always'/>";
        strFlashTag += "</object>";   
    }else{
        strFlashTag += ' <embed src="' + swf + '" ';
        strFlashTag += 'quality="best" ';
        strFlashTag += 'bgcolor="' + bgcolor + '" ';
        strFlashTag += 'width="' + width + '" ';
        strFlashTag += 'height="' + height + '" ';
        strFlashTag += 'menu="false" ';
        strFlashTag += 'scale="noscale" ';
        strFlashTag += 'id="' + id + '" ';
        strFlashTag += 'salign="LT" ';
        strFlashTag += 'wmode="transparent" ';
        strFlashTag += 'allowScriptAccess="sameDomain" ';
        if(flashvars != null) {strFlashTag += 'flashvars="' + flashvars + '" '};
        strFlashTag += 'type="application/x-shockwave-flash" ';
        strFlashTag += 'pluginspage="http://www.macromedia.com/go/getflashplayer">';
        strFlashTag += '</embed>';
    }
    document.write(strFlashTag);
}

2009년 11월 2일 월요일

자바스크립트에서 현재페이지 reload하는 방법

출처 : 초록별사랑님 블로그 ( http://haroc.haroc.net/tc/318 )


현재 웹페이지를 다시 읽어오는 것이다.

일반적인 다시 읽기
window.location.reload();
이렇게 하면 컴퓨터의 캐쉬에서 우선 파일을 찾아봅니다. 없으면 서버에서 받아옵니다.


적극적인 다시 읽기
window.location.reload(true);
true 라는 파라미터를 입력하면, 무조건 서버에서 직접 파일을 가져 오게 됩니다. 캐쉬는 완전히 무시됩니다.


소극적인 다시 읽기
history.go(0);
이렇게 하면, 캐쉬에서 현재 페이지의 파일들을 항상 우선적으로 찾습니다.


2009년 10월 6일 화요일

PHP 날짜관련함수 - date()

<?
$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                        
// 03.10.01
$today = date("j, n, Y");                      
// 10, 3, 2001
$today = date("Ymd");                          
// 20010310
$today = date('h-i-s, j-m-y, it is w Day z ');  
// 05-16-17, 10-03-01, 1631 1618 6 Fripm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');  
// It is the 10th day.
$today = date("D M j G:i:s T Y");              
// Sat Mar 10 15:16:08 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');    
// 17:03:17 m is month
$today = date("H:i:s");                        
// 17:16:17
?>


PHP 날짜 함수 정리 ( Write By Yaku)

 

오늘로부터 5일 후

echo date("Y-m-d",strtotime("+5 day"));
다음은 오늘로부터 3일 전이 되겠습니다.
echo date("Y-m-d",strtotime("-3 day"));

 

오늘로부터 6주 전

$calyoil = 5 - date("w"); //현재 요일에서 금요일을 구하기 위한 가감
$needday = strtotime("-6 week"); // 6
주전
$needday = date("Y-m-d" , strtotime("$calyoil days",$needday));
echo $needday;

 

윤년

if(29==date(t,mktime(0,0,0,2,1,$year))
echo "
윤년";
else echo "
윤년아님";

 

--mktime(,,,,,년도)--

 

그 달의 마지막 날짜  가지고 오기

$lastday = date(t,mktime(0,0,1,$month,1,$year));

 

금주의 시작일 구하기

$now=date("w");

$m=$now-1;

$start=date("Y-n-d",strtotime("-$m day"));

 


JS 날짜 정리 ..

Month ( 0 ~ 11까지 정의 된다 )  현재월을 표시하려면 month -1 하여라 ..

 

날짜 객체  생성  var today = new Date( , , ) ;

날짜 년 가지고 오기 today.getYear();

날짜 월 가지고 오기 today.getMonth();  ( 현재월 가지고 올경우  +1 )

날짜 일 가지고 오기 today.getDate();  (day 가 아니 getDate 이다)

날짜 월 짜리수 맞추기 위한 if = parseInt() < 10 ? - + parseInt() : parseInt();

 


Mysql 날짜 함수

select date_sub(now(), interval 5 day);
5
일후..
select date_add(now(), interval 5 day);
5
일전...

PHP 날짜 함수 정리 ( Write By Yaku)

 

오늘로부터 5일 후

echo date("Y-m-d",strtotime("+5 day"));
다음은 오늘로부터 3일 전이 되겠습니다.
echo date("Y-m-d",strtotime("-3 day"));

 

오늘로부터 6주 전

$calyoil = 5 - date("w"); //현재 요일에서 금요일을 구하기 위한 가감
$needday = strtotime("-6 week"); // 6
주전
$needday = date("Y-m-d" , strtotime("$calyoil days",$needday));
echo $needday;

 

윤년

if(29==date(t,mktime(0,0,0,2,1,$year))
echo "
윤년";
else echo "
윤년아님";

 

--mktime(,,,,,년도)--

 

그 달의 마지막 날짜  가지고 오기

$lastday = date(t,mktime(0,0,1,$month,1,$year));

 

금주의 시작일 구하기

$now=date("w");

$m=$now-1;

$start=date("Y-n-d",strtotime("-$m day"));

 


JS 날짜 정리 ..

Month ( 0 ~ 11까지 정의 된다 )  현재월을 표시하려면 month -1 하여라 ..

 

날짜 객체  생성  var today = new Date( , , ) ;

날짜 년 가지고 오기 today.getYear();

날짜 월 가지고 오기 today.getMonth();  ( 현재월 가지고 올경우  +1 )

날짜 일 가지고 오기 today.getDate();  (day 가 아니 getDate 이다)

날짜 월 짜리수 맞추기 위한 if = parseInt() < 10 ? - + parseInt() : parseInt();

 


Mysql 날짜 함수

select date_sub(now(), interval 5 day);
5
일후..
select date_add(now(), interval 5 day);
5
일전...


2009년 9월 8일 화요일

Javascript : 숫자관련 숫자만입력_콤마

회원으로 가입하거나 할때 유용하게 쓰일수 있는 팁이라서 올린다.

[초기값 한글/영문으로 지정하기]
<input type="text" name="m_name" style="ime-mode:active;"> //초기값이 한글자판
<input type="text" name="m_id" style="ime-mode:inactive;"> //초기값이 영문자판



[숫자 및 특수문자 허용]

// 숫자만 입력받는다. 특수문자('-','.',...)도 허용한다.
function onlyNumber() {
if((event.keyCode > 31) && (event.keyCode < 45) || (event.keyCode > 57)) {
event.returnValue = false;
}
}

// 숫자만 입력받는다. "-"도 받지않는다.
function onlyNumber2(loc) {
if(/[^0123456789]/g.test(loc.value)) {
alert("숫자가 아닙니다.\n\n0-9의 정수만 허용합니다.");
loc.value = "";
loc.focus();
}
}

사용예제) - 주민번호나 전화번호 경우
<input name="jumin2" value="" type="text" size="7" maxlength="7" onKeyPress=onlyNumber() onBlur=onlyNumber2(this);>

// 숫자에 3자리마다 "," 콤마 찍어주기
for(j=1;j<=3;j++) {
    var mm
                           
    var loop=Math.ceil(mm.length/3);
    var offset=mm.length%3;
    if(offset==0) offset=3;
    var ret=mm.substring(0, offset);
                           
    for(i=1; i<loop;i++) {
        ret+=","+mm.substring(offset,offset+3);
        offset+=3;
    }
    return ret;
}



b=String(숫자형변수);   // 이렇게 되면 b가 number 타입이 되구요
c=Number(b); // 다시 숫자형으로 바꿀려면 이렇게

숫자->문자 var s1=String(p1);

문자->숫자 var n1=Number(p1);

숫자변수 = parseInt('123456');  //자바스크립트 문자를 숫자로 형변환 함수

자바스크립트의 4가지 자료형 (정수형,실수형,문자형,논리(boolean)형.null 형)
*************************************************************************************

수치자료형(정수형과 실수형이 있다)
1.정수형(결과는 모두10진수로 표현된다)

var a; //a는 자료형이 없다
a=10; //정수
a=-10;
a=012; //8진수입력
a=0xa; //16진수 123456789abcdef->10

<SCRIPT LANGUAGE="xxJavaScript">
document.write(012+"<br>")   //8진수 12는 10진수로 10이다.
document.write(0xf+"<br>") //16진수 f는 10진수로 15이다
</SCRIPT>


2.실수형

a=10.1; //실수
a=1.2E-10; //(지수형식) 1.2*10^-10 지수표현법(아주크거나 작은수를 표현하는 방법)

<SCRIPT LANGUAGE="xxJavaScript">
/* 변수 r에 120000000을 1.2E+8로 표현하여 저장한다*/
r=1.2E+8
document.write(r) //120000000으로 출력이 된다
//-->
</SCRIPT>

<SCRIPT LANGUAGE="xxJavaScript">
//실수계산에서 근사치 결과가 발생하는 경우
a=10
b=5.444
result=a+b;
document.write("결과는: " +result);
//-->
</SCRIPT><BR>

3.문자열 자료형
" " ' '안에 자료는 모두 문자열로 처리한다
a="100"; //문자열
a='10'; //문자열
원래의 문자로 출력하고 싶으면
a="1\"0\"0";

<SCRIPT LANGUAGE="xxJavaScript">
//출력결과와 같이 이중따옴표(")가 출력된다
document.write("\"이중따옴표\"의 출력을 보여주는 예제입니다<BR>");
//출력결과와 같이 단일따옴표(')가 출력된다
document.write("\'단일따옴표\'의 출력을 보여주는 예제입니다<BR>");
//-->
</SCRIPT><BR>

4.불리언자료형
참과 거짓값으로 논리적인 결과를 저장하기 위한 불리언 자료형
<SCRIPT LANGUAGE="xxJavaScript">
a=false;
if(a)
document.write("true");
else
document.write("false");
</SCRIPT>

/********************
변수사용방법
*********************/
1.var를 이용하여 변수를 선언하는 방법
변수에 자료를 할당하기만 하면 변수로 선언되어 사용된다
var xxjavascript //자바스크립트 정수형 변수이다
var pi=3.14159 //pi는 실수형 변수이다
var name-"홍길동"  //name은 문자열변수이다
var bool=false //bool은 불리언 변수이다
-어떤 자료형의 값을 갖게 될지 모를 때는 null값으로 초기화 해준다.
var empty=null //emtpy는 null값을 갖는 변수이다


2.묵시적인 형변환
<html>
<head>
<script language="xxJavaScript">
 // 자동 형변환의 예
    jungsu = 5;
 silsu = 10.5;
 bool = true;
 string = "문자열";
 /*정수 변수인 jungsu는 실수 변수인 silsu와 더하여져 자동으로 정수형 변수로 변환된다. */
 jungsu = jungsu + silsu; // 5+10.5
 /*실수 변수인 silsu는 정수, 문자열, 실수 그리고 불리언 변수와
                               + 기호에 의해 연결되면 문자열 변수로 자동 형변환된다. */
   silsu = string + silsu + bool;

                               document.write( jungsu + "<br>");
                              document.write( silsu);
</script>
</head>
</html>


2009년 9월 4일 금요일

object의 CSS class 제어하기

<html>
<head>
 <title>object의 CSS class제어</title>

<style type="text/css">
<!--
/* 필수입력 */
.essential{ color: #FD0505;} /* 클래스 essnetial 에 적용할 스타일 */
-->
</style>

<script language="JavaScript">

    /*
        해당 Object에 적용된 css 의 클래스를 조건에따라 변동시켜야 할 경우
        JavaScript-x에서 접근할수 있는 프로퍼티는 CSS의 class의 경우 class가 아니라. className 이다
        아래와 같은 방법으로도 접근이 가능하다.
        object.setAttribute("className", "CSS_ClassName");
        또 다른 클래스를 적용하지 않고 직접 CSS를 서술할경우에는
        object.style.cssText='color: #FD0505;'; 와 같은 방법도 가능하다.
    */

    function fncChange(){
        var selDiv = frm.selDiv.value; // select의 값을 selDiv 변수에 저장
        if(selDiv == "T"){ // selDiv의 값이 T 라면
            // getElementById(객체명 or id명) - form 태그 안에 있는 객체를 찾아줌
            // id : spCarryAppointYmd의 클래스명을 essential로 정해준다
            // id : spCarryAppointYmd의 html에 *를 넣어준다
            document.getElementById("spCarryAppointYmd").className = "essential";
            document.getElementById("spCarryAppointYmd").innerHTML = "*";
        }
        else if(selDiv == "F"){ // selDiv의 값이 F라면
            // id : spCarryAppointYmd의 클래스명을 지정하지 않는다
            // id : spCarryAppointYmd의 html에 *를 빼준다
            document.getElementById("spCarryAppointYmd").className = "";
            document.getElementById("spCarryAppointYmd").innerHTML = "";
        }
    }

</script>

</head>

<body>

<form name="frm">

    <table>
      <tr>
        <td>
          <select onchange="fncChange();"  name="selDiv">
            <option value="T">필수</option>
            <option value="F">해제</option>
          </select>
        </td>
      </tr>
      <tr>
        <td><span id="spCarryAppointYmd" class="essential">*</span>필수입력</td>
      </tr>
    </table>

</form>

</body>
</html>

2009년 9월 3일 목요일

Javascript : Window 객체 다루기

■ window 객체 프로퍼티

status 브라우저의 상태바에 문자열을 출력하는 경우에 사용
defaultStatus 브라우저의 상태바에 초기 문자열을 설정
length 창안의 프레임 수
name 창 이름
self 현재 창 자신, window와 같음
window 현재 창 자신, self와 같음
parent 프레임에서 현재프레임의 상위프레임
top 현재프레임의 최상위프레임
opener open()으로 열린 창에서 볼 때 자기를 연 창
document document 오브젝트
frames 창안의 모든 프레임에 대한 배열정보
history history 오브젝트 및 배열
location location 오브젝트
closed 창이 닫혀 있는 상태
locationbar location 바
menubar 창 메뉴 바
innerHeight 창 표시 영역의 높이(픽셀), 익스플로러 지원되지 않음
innerWidth 창 표시 영역의 너비(픽셀), 익스플로러 지원되지 않음
outerHeight 창 바깥쪽 둘레의 높이, 익스플로러 지원되지 않음
outerWidth 창 바깥쪽 둘레의 너비, 익스플로러 지원되지 않음
pageXOffset 현재 나타나는 페이지의 X위치, 익스플로러 지원되지 않음
pageYOffset 현재 나타나는 페이지의 Y위치, 익스플로러 지원되지 않음
personalbar 창의 퍼스널 바
scrollbar 창의 스크롤 바
statusbar 창의 상태 바
toolbar 창의 툴 바


■ window 객체 메서드
alert() 경고용 대화상자를 보여줌
clearTimeout() setTimeout 메소드를 정지
confirm() 확인, 취소를 선택할 수 있는 대화상자를 보여줌
open() 새로운 창을 오픈
prompt() 입력창이 있는 대화상자를 보여줌
setTimeout() 일정 간격으로 함수를 호출하여 수행, millisecond 단위로 지정
eval() 문자열을 숫자로 바꿈
toString() 오브젝트를 문자열로 바꿈
blur() focus를 이동
focus() focus를 줌
scroll() 창을 스크롤 함
valueOf() 오브젝트 값을 반환
back() 한 단계 전 URL(이전화면)로 돌아감. 익스플로러 지원 안함
find() 창안에 지정된 문자열이 있는지 확인, 있다면 true 없으면 false. 익스플러러 지원 안함
forward() 한 단계 뒤의 URL(다음화면)로 이동. 익스플로러 지원 안함
home() 초기화 홈페이지로 이동. 익스플로러 지원 안함
moveby() 창을 상대적인 좌표로 이동. 수평방향과 수직방향의 이동량을 픽셀로 지정
moveto() 창을 절대적인 좌표로 이동. 창의 왼쪽 상단 모서리를 기준으로 픽셀을 지정
resizeby() 창의 크기를 상대적인 좌표로 재설정. 밑변의 모서리를 기준으로 수평방향, 수직방향을 픽셀로 지정
resizeto() 창의 크기를 절대적인 좌표로 재설정. 창 크기를 픽셀로 지정
scrollby() 창을 상대적인 좌표로 스크롤. 창의 표시영역의 수평방향과 수직방향에 대해 픽셀로 지정
scrollto() 창을 절대적인 좌표를 스크롤. 창의 왼쪽 상단 모서리를 기준으로 픽셀로 지정
stop() 불러오기를 중지. 익스플로러는 지원 안함
captureEvents() 모든 타입의 이벤트를 판단
setInterval() 일정시간마다 지정된 처리를 반복
clearInterval() setInterval 메소드의 정지
handleEvent() 이벤트 취급자를 정함
print() 화면에 있는 내용을 프린터로 출력
releaseEvent() 다른 계층의 이벤트로 이벤트를 넘김
routeEvent() 판단한 이벤트와 같은 계층의 이벤트
toSource() 오브젝트값을 문자열로 반환


■ window 객체 이벤트핸들러
onBlur 브라우저가 포커스를 잃을 때 발생
onDragDrop 사용자가 다른곳에서 객체를 브라우저 안에 넣으려고 할 때 발생. 익스플로러는 지원 안함
onError 문서를 읽는 중에 에러가 생길 때 발생
onFocus 브라우저에 포커스를 얻을 때 발생
onLoad 문서를 읽을 때 발생
onMove 브라우저의 위치를 변경했을 때 발생. 익스플로러는 지원 안함
onResize 창의 크기를 변경했을 때 발생. 익스플로러는 지원 안함
onUnload 현재 문서를 지울려고 할 때 발생


■ 새창열기 open() 메서드
window.open("문서url","창이름","창의 특성")

웹여행중에 많이 본 것일텐데 링크나,버튼,이미지를 누를 때 많이 뜨죠!

첫째인수로 url이 필요하죠. 새창에도 내용을 넣어야 하니까요.
둘째인수로 창이름, 이게 같은 경우엔 계속 창을 열 때 새로 열지 않고 이미 열린 창을 이용합니다.
세째인수는 새로 열릴 창의 너비,높이,툴바,상태바등을 지정하는거죠.


■ 창의특성
directories yes || no 익스플로러 연결도구모음, 익스플로러 전용
location yes || no 주소입력란
menubar yes || no 메뉴표시줄
scrollbars yes || no 스크롤바
status yes || no 상태표시줄
toolbar yes || no 도구모음
copyhistory yes || no 히스토리정보를 복사
resizable yes || no 창 크기 조절 가능여부
width 픽셀 창의 너비
height 픽셀 창의 높이

window.screen.availWidth : 윈도우가 이용할수 있는 전체 가로크기
window.screen.availHeight : 윈도우가 이용할수 있는 전체 세로크기
document.body.clientWidth : 현재보고 있는문서 body의 가로크기
document.body.clientHeight : 현재보고 있는문서 body의 세로크기


---------------------------------------------------------------------------------------


1. width : 창 가로길이 지정

2. height : 창 세로길이 지정

3. toolbar : 단축도구창 유무 지정 [no, yes]

4. menubar : 메뉴창 유무 지정 [no, yes]

5. location : 주소창 유무 지정 [no, yes]

6. scrollbars : 스크롤바 유무지정 [no, yes]

7. status : 아래 상태바창 유무 지정 [no, yes]

8. resizable : 창변형 유무 지정 [no, yes]

9. fullscreen : 전체화면 유무 지정 [no, yes]

10. channelmode=yes : 앞&뒤로 창최소화,닫기등을 설정 (F11키랑 같음)

11. left=0, top=0 : 창을 왼쪽 구석에 고정

 

예를 들어

window.open("파일명", "윈도우이름","창속성");

winname = window.open("aa.jsp","aaa","width=300 height=400 menubar=no status=no");

winname.close(); // open한 새창을 닫을때

window.close(); //현재창을 닫을때

반복문 - for,while,do while.....

for 문

for문은 어떤 조건이 만족될 때까지 자바스크립트 코드 블록을 반복시킨다. 보통 반복될 횟수가 정해져 있을 때 for문을 사용한다. for문에 대한 문법은 다음과 같다:

for (초기값 설정</FONT> color="teal" 조건</FONT> color="teal" 증감식) {
        문장;
        .......
}

"초기값 설정"은 제일 처음 단 한 번만 실행된다. 보통 이 값은 반복 횟수를 결정짓는 카운터에 해당하는 변수를 초기화 시킬 때 사용한다. "조건" 부분에는 자바스크립트 문장을 반복시킬지 말지를 결정하는 조건식이 들어간다. "증감식"에는 카운터 변수가 얼마큼씩 증가하거나 감소할지를 적어준다. 예를 들어, 1부터 10까지의 제곱을 구하는 스크립트를 작성한다면 다음과 같다:

<script-x language="javascript-x">
<!--
        for
(i=1</FONT> color="teal" i<11</FONT> color="teal" i++) {
                document.write(i + "*" + i + " = " + i*i + "<br>");
        }
//-->
</script-x>

while 문

while문도 어떤 조건이 만족될 때까지 자바스크립트 코드 블록을 반복시킨다. 보통 for문이 반복될 횟수를 짐작할 수 있을 때 사용한다면 while문은 반복될 횟수를 짐작하기 어려울 때 사용한다. while문에 대한 문법은 다음과 같다:

while (조건) {
        문장;
        .......
}

while문은 "조건"이 참(true)일 때만 자바스크립트 문장을 실행시킨다. 앞에서 살펴본 for문의 예제, 1부터 10까지의 제곱을 구하는 스크립트를 while문을 이용하여 작성한다면 다음과 같다:

<script-x language="javascript-x">
<!--
        i=1;
        while
(i<11) {
                document.write(i + "*" + i + " = " + i*i + "<br>");
                i++;
        }
//-->
</script-x>

do...while 문

do...while문도 while문과 동일하다. 먼저 do...while문의 문법을 먼저 살펴 보고 while문과의 차이점을 살펴 보자:

do {
        문장;
        .......
} while (조건)

do...while문과 while문의 차이점은 do...while문은 자바스크립트 문장을 무조건 한 번 수행하고 나서 반복 조건식을 조사하는 반면, while문은 조건식을 일단 조사한 후 자바스크립트 문장을 실행시킬지 말지를 결정한다는 것이다. 또한 while문은 모든 자바스크립트 버전에서 지원하지만 do...while문은 넷스케이프 및 익스플로러 4 이상에서 지원한다. 앞에서 살펴본 예제, 1부터 10까지의 제곱을 구하는 스크립트를 do...while문을 이용하여 작성한다면 다음과 같다:

<script-x language="javascript-x">
<!--
        i=1;
        do
{
                document.write(i + "*" + i + " = " + i*i + "<br>");
                i++;
        } while (i<11)
//-->
</script-x>

break/continue 문

break와 continue는 반복문의 흐름을 변경시킬 수 있는 문장이다. 이 두 문장은 반복문 안에서 사용된다. break와 continue의 차이점은 다음과 같다:

  • break : 반복문 실행을 중단하고 반복문이 다 끝나고 나오는 문장으로 흐름을 이동시키는 역할을 한다.
  • continue : 반복문이 실행되다가 continue를 만나면 continue 이후의 문장은 실행시키지 않고 반복문의 제일 처음으로 그 흐름을 이동시키는 역할을 한다.

다음 예는 앞에서 나온 예에서 i가 3일 때 continue를 실행시키고, i가 5일 때 break를 실행시키는 예이다:

<script-x language="javascript-x">
<!--
        for
(i=1</FONT> color="teal" i<11</FONT> color="teal" i++) {
                if (i == 3)
                        continue; // i가 3일 때는 아래 문장들이 실행 안된다.
                if (i == 5)
                        break; // i가 5일 때 반복문은 중단된다.
                document.write(i + "*" + i + " = " + i*i + "<br>");
        }
        alert("반복문이 끝났습니다!!");
//-->
</script-x>

for...in 문

for...in 문을 이해하려면 객체에 대한 개념을 먼저 이해해야 한다. 이 장에서는 for...in 문을 어떻게 사용하는지 정도를 살펴 보고 나중에 객체에 대한 공부를 마친 후 다시 for...in 문을 살펴 보기 바란다.

for...in 문은 참조하는 객체 속에 있는 속성들의 갯수를 몰라도 모두 참조할 수 있도록 해준다. 다음은 사각형 객체를 하나 생성하여 생성자를 통해 속성들을 초기화한 후 for...in 문을 통해 rectanle 객체에 있는 모든 속성들을 출력하는 예이다:

<script-x language="javascript-x">
<!--
        // rectangle은 생성자 역할을 한다
        function rectangle(width, height, innercolor) {
                this.width = width;
                this.height = height;
                this.innercolor = innercolor;
        }
        myRectangle = new rectangle(50, 30, "red");
       
        for (var prop in myRectangle) {
                document.write(myRectangle[prop]+"<br>");
        }
//-->
</script-x>

with 문

개체의 메소드나 속성을 반복해서 사용할 때 with 문을 사용하면 코드의 가독성을 높일 수 있다. 다음은 with문의 문법이다:

with (개체명) {
        메소드명 또는 속성명;
}

with 문을 사용한 간단한 예는 다음과 같다:

with (document) {
    write("with 문 안에서 write를 사용하고 있습니다!");
    bgColor="#efefef";
    write("물론 이것은 아주 간단한 예입니다");
}

JAVAScript 이벤트 핸들러 모음

JAVAScript 이벤트 핸들러 모음


onAbort

--------------이미지를 읽다가 중단시켰을 때 발생

 

onActivate

--------------개체가 활성활 될 때 발생

 

onAfterPrint

--------------문서가 출력되거나 혹은 출력하기 위해 출력미리보기를 한후에 발생

 

onAfterUpdate

--------------데이터영역 개체에서 발생하는 이벤트로 데이터 소스 오브젝트내의 데이터가 업데이트 되었을 때 발생

 

onBeforeActivate

--------------개체가 활성화 상태로 되기 바로 직전에 발생

 

onBeforeCopy

--------------선택 영역이 시스템의 클립보드로 복사되기 바로 직전에 발생

 

onBeforeCut

--------------선택 영역이 지워지기 바로 직전에 발생

 

onBeforedeActivate

--------------현재 개체에서 다른 개체로 activeElement가 바뀌기 직전에 발생

 

onBeforeEditFocus

--------------편집가능한 개체 내부에 포함된 개체가 편집활성화 된 상태가 되거나 혹은 편집가능한 개체가 제어를 위해 선택될 때 발생

 

onBeforePaste

--------------시스템의 클립보드에서 문서로 붙여넣기 될때 대상 개체에서 발생

 

onBeforePrint

--------------문서가 출력되거나 혹은 출력하기 위해 출력미리보기 직전에 발생

 

onBeforeunload

--------------페이지가 언로드되기 직전에 발생

 

onBeforeUpdate

--------------데이터영역 개체에서 발생하는 이벤트로 데이터 소스 오브젝트내의 데이터가 업데이트 되기전에 발생

 

onBlur

--------------포커스가 다른 곳으로 이동했을 때 발생

 

onBounce

--------------마퀴태그에서 alernate상태에서 스크롤이 양 사이드에서 바운드 될때 발생

 

onCellChange

--------------데이터제공 개체에서 데이터가 변화할때 발생

 

onChange

--------------수정등과 같은 작업에 의해서 값이나 포커스를 잃을 경우 발생되는 이벤트 핸들러

 

onClick

--------------마우스로 클릭했을 때 발생

 

onContextMenu

--------------클라이언트 영역에서 사용자가 마우스 오른쪽 버튼을 눌러 콘텍스트 메뉴를 열때 발생

 

onControlSelect

--------------사용자가 개체의 제어 영역을 만들때 발생

 

onCopy

--------------시스템의 클립보드에 선택영역 혹은 개체를 복사할 때 소스 개체로부터 발생

 

onCut

--------------시스템의 클립보드에 선택영역 혹은 개체를 잘라낼때 소스 개체로부터 발생

 

onDataAvailable

--------------비정기적으로 데이터를 전달하는 데이터 소스 개체로부터 데이터가 도착할 때 마다 정기적으로 발생

 

onDatasetChanged

--------------데이터 소스개체의 변화에 의해 데이터가 노출된 상태로 될때 발생

 

onDatasetComplete

--------------데이터 소스 개체로부터 모든 데이터가 유용한 상태로 표시될때 발생

 

onDbClick

--------------마우스를 더블클릭 했을 때 발생

 

onDeactivate

--------------현재 개체에서 다른 개체로 activeElement가 바뀔때 발생

 

onDragEnd

--------------드래그 상태가 끝날때 소스 객체로 부터 발생

 

onDragEnter

--------------사용자가 개체를 드래그 하여 드롭가능 위치로 지정된 영역으로 이동할때 타겟 개체에서 발생

 

onDragLeave

--------------사용자가 개체를 드래그 하여 드롭가능 위치로 지정된 영역을 떠날때 타겟 개체에서 발생

 

onDragOver

--------------사용자가 개체를 드래그 하여 드롭가능 위치로 지정된 영역내에서 드래그할 때 계속적으로 타겟 개체에서 발생

 

onDragStart

--------------선택된 개체 혹은 텍스트 영역에서 사용자가 드래그를 시작할 때 발생

 

onDrag

--------------드래그 상태가 지속되는 동안 소스 객체로 부터 발생

 

onDrop

--------------드래그앤드롭 작용에서 상태가 진행되는 동안 개체가 타겟 개체에 드롭되었을 때 타겟 개체어서 발생

 

onErrorUpdate

--------------데이터 소스 개체 내에 데이터가 업데이트 되는 동안 에러가 발생할 때 데이터 영역 개체에서 발생

 

onError

--------------문서나 이미지를 읽다가 에러가 발생했을 때 발생

 

onFilterChange

--------------비주얼 필터의 상태가 바뀌거나 트랜지션이 완료되었을 때 발생

 

onFinish

--------------마퀴개체의 loop가 완료되었을 때 발생

 

onFocusin

--------------개체에 포커스가 셋팅되기 바로 직전 개체에 대해 발생

 

onFocusout

--------------포커스가 다른 개체로 이동한 후에 포커스를 가고 있는 현재 개체에서 발생

 

onFocus

--------------포커스가 들어왔을 때 발생

 

onHelp

--------------브라우저가 활성화 되어 있는 동안 F1키를 눌렀을 때 발생

 

onKeyDown

--------------키를 입력했을 때 발생

 

onKeypress

--------------키를 눌렀을 때 발생

 

onKeyup

--------------키를 눌렀다 놓았을 때 발생

 

onLayoutComplete

--------------소스 문서로 부터 콘텐드를 가지는 객체가 미리보기나 출력을 할때 현재 LayoutRect개체를 모두 채우는 것이 끝났을 때 발생

 

onLoad

--------------브라우저에서 문서가 읽혀졌을 때 발생

 

onLoseCapture

--------------개체가 마우스 캡쳐를 잃었을 때 발생

 

onMouseDown

--------------마우스 버튼을 눌렀을 때 발생

 

onMouseEnter

--------------개체 안으로 마우스 포인터가 들어올때 발생

 

onMouseleave

--------------개체의 경계밖으로 마우스 포인터가 이동할 때 발생

 

onMouseMove

--------------마우스를 움직였을 때 발생

 

onMouseout

--------------마우스 커서가 특정 영역 또는 링크에서 벗어날 때 발생

 

onMouseOver

--------------마우스가 객체 위에 놓여졌을 때 발생

 

onMouseup

--------------마우스버튼을 눌렀다 놓았을 때 발생

 

onMousewheel

--------------마우스 휠이 돌아갈때 발생

 

onMoveEnd

--------------개체가 움직임이 끝날 때 발생

 

onMoveStart

--------------개체가 움직이기 시작할 때 발생

 

onMove

--------------윈도우나 프레임을 움직였을 때 발생

 

onPaste

--------------문서에 클립보드로 부터 데이터가 전송될때 타겟 개체에서 발생

 

onPropertyChange

--------------개체의 속성이 바뀔대 발생

 

onReadystateChange

--------------개체의 상태가 변화할때 발생

 

onReset

--------------입력양식에서 리셋시켰을 때 발생

 

onResizeEnd

--------------제어영역에서 개체의 크기가 사용자에 의해 변화가 끝날때 발생

 

onResizeStart

--------------제어영역에서 개체의 크기가 사용자에 의해 변화되기 시작할때 발생

 

onResize

--------------윈도우나 프레임의 크기를 바꾸었을 때 발생

 

onRowenter

--------------데이터 소스내에서 현재 열이 변화되거나 개체에 새로운 유용한 데이터가 입력될때 발생

 

onRowExit

--------------데이터 소스 콘트롤이 개체내의 현재 열을 변화시킬 때 발생

 

onRowsDelete

--------------레코드셋에서 열이 삭제될때 발생

 

onRowsInserted

--------------현재 레코드셋에 새로운 열이 추가된후에 발생(데이터 개체에서)하는 이벤트 핸들러

 

onScroll

--------------사용자가 개체내의 스크롤 바를 스크롤 할때 발생

 

onSelectionChange

--------------문서의 선택 영역의 상태가 바뀔때 발생

 

onSelectStart

--------------개체가 선택되기 시작할때 발생

 

onSelect

--------------입력양식의 한 필드를 선택했을 때 발생

 

onStart

--------------마퀴개체에서 매 루프가 시작될때 발생

 

onStop

--------------사용자가 stop버튼을 눌렀을 경우 혹은 페이지를 떠날때 발생

 

onSubmit

--------------입력양식을 서버로 보낼 때 발생

 

onUnload

--------------문서를 닫고자 할 때, 또는 다른 페이지로 이동하고자 할 때 발생

2009년 9월 2일 수요일

자바스크립트 소수점 자르기 예제

1. Math.round() 함수는 소수점을 반올림해서 정수를 만드는 함수 입니다.

 

출력 값에 Math.round() 함수를 써서 출력할 값이 abc=0.2567 고

 

소수점 셋째 자리에서 반올림해서 둘째 자리까지 보이고 싶으시면

 

Math.round(abc*100)/100 하시면 됩니다.  round 결과는 26 이므로

나누기 100하면 0.26 이 되죠.

 

마찬가지로 소수점 넷째 자리에서 반올림해서 셋째 자리까지 보이고 싶으시면

 

Math.round(abc*1000)/1000 하시면 됩니다. round 결과는 257이므로

나누기 1000하면 0.257이 되죠.

 

예)  document.f.res1.value = a*b; 를 소수점 둘째자리까지 표현할 때


document.f.res1.value = Math.round(a*b*100)/100;

위와 같이 수정함

 

2. <input type='button' value='초기화' onClick='go()'>

 

go() 대신에 reset() 를 넣으시면 되요.


javascript를 이용한 소수점 처리

<script language= "JavaScript">
// strValue : 처리하려는 값
// strType :  '* 소수점 계산. 0:절사, 1:반올림, 2:올림
function fnFixNum( strValue, strType)
{
    var iType =  parseInt( strType );
    switch ( type )
    {
        case 0 :  // 절사
                return( parseInt( strValue ) );
                break;

        case 1 :  // 반올림
                if( strValue< 0 ){  //음수일 경우
               
                    if( ( Math.abs( strValue ) + 0.5 )
                         - ( parseInt( Math.abs( strValue ) + 0.5 ) ) == 0 ){
                          return ( ( parseInt( Math.abs( strValue ) + 0.5 ) * -1 ) +1 );
                    }
                    else
                    {
                          return ( parseInt( Math.abs( strValue ) + 0.5 ) * -1 );
                    }

                } else { //양수 일 경우
                     return ( parseInt( strValue + 0.5 ) )
                }
                break;

        case 2 : //올림
                if( ( value - parseInt( strValue ) ) >= 0.1 ) {
                     return ( parseInt( strValue ) +1 );
                }
                if( ( value - parseInt( strValue ) ) <= -0.1 ){
                     return ( parseInt( strValue ) -1 ) ;
                }

        }//End switch
       
}//End function
</script>

JavaScript로 원하는 위치의 문자열만 자르기

JavaScript에는 substr 이라고 하는 문자열 자르기 메서드가 존재 한다.

정의 : 지정한 위치에서 시작하고 지정한 길이를 갖는 부분 문자열을 반환한다.
문법 : sVal = String.substr(iStart,iLength)
인수/파라메터
stringVar : 문자열 개체
필수적인 요소이다. 부분 문자열을 추출할 문자열을 저장 한다.
iStart : 시작 인덱스
필수적인 요소이며, 원하는 부분 문자열의 시작 인덱스를 지정하여 주면 된다.
※ 주의 : 첫 번째 문자의 인덱스는 0 이다.
iLength : 부분 문자열 길이
선택적 요소이며, 반환될 부분 문자열의 문자 수를 나타낸다.
반환값 : sVal의 해당 부분 문자열
            iLength가 0이거나 음수면 빈 문자열 반환
참고 사이트 : http://koxo.com

##샘플##
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<html>
3 <head>
4    <title> ::substr 테스트 :: </title>
5    <script type="text/javascript">
6     unction substr()
7     {
8           var year = new Date();
9           var s = txt1.value;
10           var c = s.substr(0,4);
11           if(c != year.getFullYear())
12           {
13                 alert("입력 할 수 있는 연도가 아닙니다.");
14                 txt1.focus();
15           }
16           else
17           {
18                 alert("입력 가능한 연도 입니다.");
19                 txt2.value = c;
20           }
21      }
22     </script>
23  </head>
24  <body>
25  <input type="text" id="txt1" name="txt1" >
26  <input type="text" id="txt2" name="txt2" >
27  <input type="button" id="btn1" name="btn1"  value="체크" onclick="substr()">
28  </body>
29</html>

##설명##
8번째 줄의 var year = new Date(); 는 year라는 변수에 현재 년 월일을
가져올 수 있는 메소드를 생성 하고...(JavaScript를 잘 몰라서 일단 생성 시킨다 하고..)
9번째 줄의 var s = txt1.value();로 텍스트 박스에 입력한 값을 s라는 변수에 저장 시킨다.
10번째 줄의 var c = s.substr(0,4);는 s에 저장된 텍스트 박스의 값을 인덱스 0
그러니까 첫 번째 문자 부터 4개의 문자를 잘라서 c라는 변수에 저장 시키는 거다.
그리고 밑의 if문의 Date() 메소드에 있는 getFullYear()을 이용하여 현재 년을
가져와서 자른 문자열과 비교해서 현재 연도와 다르다면 입력 할 수 없는 연도라고
메세지를 띄운후 포커스를 다시 텍스트박스1에 위치 시킨다.
그 반대로 자른 값이 현재 년도와 같다면 텍스트박스2에 자른 문자열을 확인 하기 위해서
잘라진 문자열 c를 뿌려준다.

소수점 자르기

Number.toFixed() 메소드로 원하는 소숫점 자릿수 만큼 잘라 반올림 하기

이제까지는 어떤 계산결과를 반환받을 때 소숫점을 자르려면 복잡한 Math() 함수를 사용해야했지만 IE 5.5 에서는 새로 추가된 Number.toFixed() 메소드를 사용하여 간단하게 소수점을 잘라 반환받을 수 있습니다

 Number.toFixed(보여줄 자릿수)

아래 예문을 참고 해 보세요

<script language="javascript">
<!--
function Trim(){
x = 2.345678904557788;
alert(x.toFixed(3)); // Number.toFixed() 메소드를 사용합니다 (IE 5.5)
}
//-->
</script>

위의 함수를 적용한 예제입니다
버튼을 클릭하면 2.345678904557788 를 소수점 3째자리까지 반올림하여 보여줍니다  

<input type="button" onClick="Trim()" value=" 소수점 3째자리까지 자르기 ">

JAVAScript 라이브러리

<!--

function MM_openBrWindow(주소,이름,가로,세로) { //v2.0

<!-- 팝업페이지 중앙 위치 시작  -->
     if (screen.width < 1025){
       LeftPosition=0;
       TopPosition=0;
     } else {
       LeftPosition=(screen.width)?(screen.width-가로)/2:100;
       TopPosition=(screen.height)?(screen.height-세로)/2:100;
    }
     window.open(주소, 이름, "width="+가로+",height="+세로+",top="+TopPosition+",left="+LeftPosition+", scrollbars=no");
      <!-- 팝업페이지 중앙 위치 끝 -->
}


var n4 = (document.layers)?true:false;
var e4 = (document.all)?true:false;

//숫자만입력(onKeypress='return keyCheckdot(event)')
function keyCheck(e) {
    if(n4) var keyValue = e.which
    else if(e4) var keyValue = event.keyCode
    if (((keyValue >= 48) && (keyValue <= 57))  || keyValue==13) return true;
    else return false
}

//숫자및돗트입력(onKeypress='return keyCheckdot(event)')
function keyCheckDot(e) {
    if(n4) var keyValue = e.which
    else if(e4) var keyValue = event.keyCode
    if (((keyValue >= 48) && (keyValue <= 57)) || keyValue==13 || keyValue==46) return true;
    else return false
}

//공백제거
function Trim(string) {
    for(;string.indexOf(" ")!= -1;){
        string=string.replace(" ","")
    }
    return string;
}

//입력검사
function Exists(input,types) {
    if(types) if(!Trim(input.value)) return false;
    return true;
}

//영문검사+숫자검사(첫글자는 반드시영문)
function EngNum(input,types) {
    if(types) if(!Trim(input.value)) return false;
    var error_c=0, i, val;
    for(i=0;i<Byte(input.value);i++) {
        val = input.value.charAt(i);
        if(i == 0) if(!((val>='a' && val<='z') || (val>='A' && val<='Z'))) return false;
        else if(!((val>=0 && val<=9) || (val>='a' && val<='z') || (val>='A' && val<='Z'))) return false;
   }
   return true;
}

//영문검사+숫자검사
function EngNumAll(input,types) {
    if(types) if(!Trim(input.value)) return false;
    var error_c=0, i, val;
    for(i=0;i<Byte(input.value);i++) {
        val = input.value.charAt(i);
        if(!((val>=0 && val<=9) || (val>='a' && val<='z') || (val>='A' && val<='Z'))) return false;
   }
   return true;
}

//영문검사+숫자검사+'_'
function EngNumAll2(input,types) {
    if(types) if(!Trim(input.value)) return false;
    var error_c=0, i, val;
    for(i=0;i<Byte(input.value);i++) {
        val = input.value.charAt(i);
        if(!((val>=0 && val<=9) || (val>='a' && val<='z') || (val>='A' && val<='Z') || val=='_')) return false;
   }
   return true;
}

//영문검사
function Eng(input,types) {
    if(types) if(!Trim(input.value)) return false;
    var error_c=0, i, val;
    for(i=0;i<Byte(input.value);i++) {
        val = input.value.charAt(i);
        if(!((val>='a' && val<='z') || (val>='A' && val<='Z'))) return false;
   }
   return true;
}

//숫자만입력
/*
function numberonlyinput() {
    var ob = event.srcElement;
    ob.value = noSplitAndNumberOnly(ob);
    return false;
}
*/

//돈(3단위마다 컴마를 붙인다.)
function checkNumber() {
    var ob=event.srcElement;
    ob.value = filterNum(ob.value);
    ob.value = commaSplitAndNumberOnly(ob);
    return false;
}

//한정액(일정금액 이상이 되면 올라기지 않게 한다.)
function chkhando(money) {
    var ob=event.srcElement;
    ob.value = noSplitAndNumberOnly(ob);
    if(ob.value > money) ob.value = money;
    return false;
}

//이자율(소수점 사용가능)
function checkNumberDot(llen,rlen) {
    if(llen == "") llen = 8;
    if(rlen == "") rlen = 2;
    var ob=event.srcElement;
    ob.value = filterNum(ob.value);

    spnumber = ob.value.split('.');
    if( spnumber.length >= llen && (spnumber[0].length >llen || spnumber[1].length >llen)) {
        ob.value = spnumber[0].substring(0,llen) + "." + spnumber[1].substring(0,rlen);
        ob.focus();
        return false;
    }
    else if( spnumber[0].length > llen ) {
        ob.value = spnumber[0].substring(0,llen) + ".";
        ob.focus();
        return false;
    }
    else if(ob.value && spnumber[0].length == 0) {
        ob.value = 0 + "." + spnumber[1].substring(0,rlen);
        ob.focus();
        return false;
    }
    ob.value = commaSplitAndAllowDot(ob);
    return false;
}

//참조함수
function filterNum(str) {
        re = /^\$|,/g;
        return str.replace(re, "");
}

//참조함수(컴마불가)
function commaSplitAndNumberOnly(ob) {
   
    var txtNumber = '' + ob.value;
    if (isNaN(txtNumber) || txtNumber.indexOf('.') != -1 ) {
        ob.value = ob.value.substring(0, ob.value.length-1 );
        ob.value = commaSplitAndNumberOnly(ob);
        ob.focus();
        return ob.value;
    }
    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 commaSplitAndAllowDot(ob) {
   
    var txtNumber = '' + ob.value;
    if (isNaN(txtNumber) ) {
        ob.value = ob.value.substring(0, ob.value.length-1 );
        ob.focus();
        return ob.value;
    }
    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 noSplitAndNumberOnly(ob) {
    var txtNumber = '' + ob.value;
    if (isNaN(txtNumber) || txtNumber.indexOf('.') != -1 ) {
        ob.value = ob.value.substring(0, ob.value.length-1 );
        ob.focus();
        return ob.value;
    }
    else return ob.value;
}


//바이트검사
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;
}

//팝업메뉴
function popupmenu_show(layername, thislayer, thislayer2) {
    thislayerfield.value = thislayer;
    thislayerfield2.value = thislayer2;
    var obj = document.all[layername];
    var _tmpx,_tmpy, marginx, marginy;
    _tmpx = event.clientX + parseInt(obj.offsetWidth);
    _tmpy = event.clientY + parseInt(obj.offsetHeight);
    _marginx = document.body.clientWidth - _tmpx;
    _marginy = document.body.clientHeight - _tmpy ;
    if(_marginx < 0) _tmpx = event.clientX + document.body.scrollLeft + _marginx ;
    else _tmpx = event.clientX + document.body.scrollLeft ;
    if(_marginy < 0) _tmpy = event.clientY + document.body.scrollTop + _marginy + 20;
    else _tmpy = event.clientY + document.body.scrollTop ;
    obj.style.posLeft = _tmpx - 5;
    obj.style.posTop  = _tmpy;
   
    layer_set_visible(obj, true);
    layer_set_pos(obj, event.clientX, event.clientY);
}
function layer_set_visible(obj, flag) {
  if (navigator.appName.indexOf('Netscape', 0) != -1) obj.visibility = flag ? 'show' : 'hide';
  else obj.style.visibility = flag ? 'visible' : 'hidden';
}
function layer_set_pos(obj, x, y) {
  if (navigator.appName.indexOf('Netscape', 0) != -1) {
    obj.left = x;
    obj.top  = y;
  } else {
    obj.style.pixelLeft = x + document.body.scrollLeft;
    obj.style.pixelTop  = y + document.body.scrollTop;
  }
}


//페이지이동
function move(url) {
    location.href = url;
}

//닫기
function toclose() {
    self.close();
}

//위치변경
function winsize(w,h,l,t) {
    if(window.opener) resizeTo(w,h);
}

//포커스위치
function formfocus(form) {
  var len = form.elements.length;
  for(i=0;i<len;i++) {
    if((form.elements[i].type == "text" || form.elements[i].type == "password") && Trim(form.elements[i].value) == "") {
      form.elements[i].value = "";
      form.elements[i].focus();
      break;
    }
  }
}

// 날짜,시간 format 함수 = php의 date()
function date(arg_format, arg_date) {
       if(!arg_date) arg_date = new Date();

       var M = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
      var F = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
       var K = new Array("일","월","화","수","목","금","토");
       var k = new Array("日","月","火","水","木","金","土");
       var D = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
       var l = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
       var o = new Array("전","후");
       var O = new Array("오전","오후");
       var a = new Array("am","pm");
       var A = new Array("AM","PM");

       var org_year = arg_date.getFullYear();
       var org_month = arg_date.getMonth();
       var org_date = arg_date.getDate();
       var org_wday = arg_date.getDay();
       var org_hour = arg_date.getHours();
       var org_minute = arg_date.getMinutes();
       var org_second = arg_date.getSeconds();
       var hour = org_hour % 12; hour = (hour) ? hour : 12;
       var ampm = Math.floor(org_hour / 12);

       var value = new Array();
       value["Y"] = org_year;
       value["y"] = String(org_year).substr(2,2);
       value["m"] = String(org_month+1).replace(/^([0-9])$/,"0$1");
       value["n"] = org_month+1;
       value["d"] = String(org_date).replace(/^([0-9])$/,"0$1");
       value["j"] = org_date;
       value["w"] = org_wday;
       value["H"] = String(org_hour).replace(/^([0-9])$/,"0$1");
       value["G"] = org_hour;
       value["h"] = String(hour).replace(/^([0-9])$/,"0$1");
       value["g"] = hour;
       value["i"] = String(org_minute).replace(/^([0-9])$/,"0$1");
       value["s"] = String(org_second).replace(/^([0-9])$/,"0$1");
       value["t"] = (new Date(org_year, org_month+1, 1) - new Date(org_year, org_month, 1)) / 86400000;
       value["z"] = (new Date(org_year, org_month, org_date) - new Date(org_year, 0, 1)) / 86400000;
       value["L"] = ((new Date(org_year, 2, 1) - new Date(org_year, 1, 1)) / 86400000) - 28;
       value["M"] = M[org_month];
       value["F"] = F[org_month];
       value["K"] = K[org_wday];
       value["k"] = k[org_wday];
       value["D"] = D[org_wday];
       value["l"] = l[org_wday];
       value["o"] = o[ampm];
       value["O"] = O[ampm];
       value["a"] = a[ampm];
       value["A"] = A[ampm];
      
       var str = "";
       var tag = 0;
       for(i=0;i<arg_format.length;i++) {
              var chr = arg_format.charAt(i);
              switch(chr) {
                     case "<" : tag++; break;
                     case ">" : tag--; break;
              }
              if(tag || value[chr]==null) str += chr; else str += value[chr];
       }

       return str;
}

// 해상도에 맞는 크기 사용
function screensize() {
    self.moveTo(0,0);
    self.resizeTo(screen.availWidth,screen.availHeight);
}

// 주민등록번호체크( 입력폼 1개)
function check_jumin(jumin) {
    var weight = "234567892345"; // 자리수 weight 지정
    var val = jumin.replace("-",""); // "-"(하이픈) 제거
    var sum = 0;

    if(val.length != 13) { return false; }

    for(i=0;i<12;i++) {
        sum += parseInt(val.charAt(i)) * parseInt(weight.charAt(i));
    }

    var result = (11 - (sum % 11)) % 10;
    var check_val = parseInt(val.charAt(12));

    if(result != check_val) { return false; }
    return true;
}

// 주민등록번호체크( 입력폼 2개)
function check_jumin2(input, input2) {
    input.value=Trim(input.value);
    input2.value=Trim(input2.value);
    var left_j=input.value;
    var right_j=input2.value;
    if(input.value.length != 6) {
        alert('주민등록번호를 정확히 입력하세요.');
        input.focus();
        return true;
    }
    if(right_j.length != 7) {
        alert('주민등록번호를 정확히 입력하세요.');
        input2.focus();
        return true;
    }
    var i2=0;
    for(var i=0;i<left_j.length;i++) {
        var temp=left_j.substring(i,i+1);
        if(temp<0 || temp>9)  i2++;
    }
    if((left_j==  '') || (i2 != 0)) {
        alert('주민등록번호가 잘못 입력되었습니다.');
        j_left.focus();
        return true;
    }
    var i3=0;
    for(var i=0;i<right_j.length;i++) {
        var temp=right_j.substring(i,i+1);
        if (temp<0 || temp>9) i3++;
    }
    if((right_j==  '') || (i3 != 0)) {
        alert('주민등록번호가 잘못 입력되었습니다.');
        input2.focus();
        return true;
    }
    var l1=left_j.substring(0,1);
    var l2=left_j.substring(1,2);
    var l3=left_j.substring(2,3);
    var l4=left_j.substring(3,4);
    var l5=left_j.substring(4,5);
    var l6=left_j.substring(5,6);
    var hap=l1*2+l2*3+l3*4+l4*5+l5*6+l6*7;
    var r1=right_j.substring(0,1);
    var r2=right_j.substring(1,2);
    var r3=right_j.substring(2,3);
    var r4=right_j.substring(3,4);
    var r5=right_j.substring(4,5);
    var r6=right_j.substring(5,6);
    var r7=right_j.substring(6,7);
    hap=hap+r1*8+r2*9+r3*2+r4*3+r5*4+r6*5;
    hap=hap%11;
    hap=11-hap;
    hap=hap%10;
    if(hap != r7) {
        alert('주민등록번호가 잘못 입력되었습니다.');
        input2.focus();
        return true;
    }
    return false;
}

// 비밀번호 체크
function check_passwd(input, input2, min) {
    if(!input.value) {
        alert('비밀번호를 입력해 주십시오.');
        input.focus();
        return false;
    }
    else if(BYTE(input.value) < min) {
        alert('비밀번호의 길이가 너무 짧습니다.');
        input.focus();
        input.value='';
        input2.value='';
        return false;
    }
    else if(!input2.value) {
        alert('확인비밀번호를 입력해 주십시오.');
        input2.focus();
        return false;
    }
    else if(input.value != input2.value) {
        alert('비밀번호가 서로 다르게 입력되었습니다.');
        input2.value='';
        input2.focus();
        return false;
    }
    else return true;
}

//콤마 넣기(정수만 해당)
function comma(val) {
    val = get_number(val);
    if(val.length <= 3) return val;

    var loop = Math.ceil(val.length / 3);
    var offset = val.length % 3;

    if(offset==0) offset = 3;
    var ret = val.substring(0, offset);

    for(i=1;i<loop;i++) {
        ret += "," + val.substring(offset, offset+3);
        offset += 3;
    }
    return ret;
}

//문자열에서 숫자만 가져가기
function get_number(str) {
    var val = str;
    var temp = "";
    var num = "";

    for(i=0; i<val.length; i++) {
        temp = val.charAt(i);
        if(temp >= "0" && temp <= "9") num += temp;
    }
    return num;
}

//주민등록번호를 나이로 변환
function agechange(lno,rno) {
    var refArray = new Array(18,19,19,20,20,16,16,17,17,18);
    var refyy = rno.substring(0,1);
    var refno = lno.substring(0,2);
    var biryear = refArray[refyy] * 100 + eval(refno);
   
    var nowDate = new Date();
    var nowyear = nowDate.getYear();
    return nowyear - biryear + 1;
}

//레디오박스 체크검사
function radio_chk(input, msg) {
    var len = input.length;
    for(var i=0;i<len;i++) if(input[i].checked == true && input[i].value) return true;
    alert(msg);
    return false;
}

//셀렉트박스 체크검사
function select_chk(input, msg) {
    if(input[0].selected == true) {
        alert(msg);
        return false;
    }
    return true;
}

//새창띄우기
function open_window(url, target, w, h, s) {
    if(s) s = 'yes';
    else s = 'no';
    var its = window.open(url,target,'width='+w+',height='+h+',top=0,left=0,scrollbars='+s);
    its.focus();
}
//-->





<?
//셀렉트
function optionlist($optionlist, $getvalue="", $keyfield="key", $valuefield="value") {
    foreach($optionlist as $key => $value) {
        if($getvalue && $getvalue == ${$keyfield}) $chk = "selected";
        else $chk = "";
        echo "<option value='{${$keyfield}}' {$chk}>{${$valuefield}}</option>";
    }
    echo "\n";
}

//셀렉티드
function selected($checkkey, $getvalue="") {
    echo "value='$checkkey'";
    if($getvalue && $checkkey == $getvalue) echo " selected";
}

//체크드
function checked($checkkey, $getvalue="") {
    echo "value='$getvalue'";
    if($getvalue && $checkkey == $getvalue) echo " checked";
}

//주민번호 검사
function RegiNum($reginum) {
    $weight = '234567892345'; // 자리수 weight 지정
    $len = strlen($reginum);
    $sum = 0;

    if ($len <> 13) { return false; }

    for ($i = 0; $i < 12; $i++) {
        $sum = $sum + (substr($reginum,$i,1) * substr($weight,$i,1));
    }

    $rst = $sum%11;
    $result = 11 - $rst;

    if ($result == 10) {$result = 0;}
    else if ($result == 11) {$result = 1;}

    $jumin = substr($reginum,12,1);

    if ($result <> $jumin) {return false;}
    return true;
}

//사업자번호 검사
function comRegiNum($reginum) {
    $weight = '137137135'; // 자리수 weight 지정
    $len = strlen($reginum);
    $sum = 0;

    if ($len <> 10) { return false; }

    for ($i = 0; $i < 9; $i++) {
        $sum = $sum + (substr($reginum,$i,1) * substr($weight,$i,1));
    }
    $sum = $sum + ((substr($reginum,8,1)*5)/10);
    $rst = $sum%10;

    if ($rst == 0) {$result = 0;}
    else {$result = 10 - $rst;}

    $saub = substr($reginum,9,1);

    if ($result <> $saub) {return false;}
    return true;
}


//글자르기
function cut_str($msg,$cut_size,$tail="...") {
    if($cut_size <= 0) return $msg;
    $msg = strip_tags($msg);
    $msg = str_replace("&mp;quot;","\"",$msg);
    if(strlen($msg) <= $cut_size) return $msg;

    for($i=0;$i<$cut_size;$i++) if(ord($msg[$i])>127) $han++; else $eng++;
    if($han%2) $han--;

    $cut_size = $han + $eng;

    $tmp = substr($msg,0,$cut_size);
    $tmp .= $tail;
    return $tmp;
}

// 모든한글의 글자를 출력
function hangul_code() {
   $count = 0;
   for($i = 0x81; $i <= 0xC8; $i++) {
      for($j = 0x00; $j <= 0xFE; $j++) {
        if(($j >= 0x00 && $j <= 0x40) || ($j >= 0x5B && $j <= 0x60) || ($j >= 0x7B && $j <= 0x80) || ($j >= 0x00 && $j <= 0x40) ||
           (($i >= 0xA1 && $i <=0xAF) && ($j >= 0xA1 && $j <= 0xFE)) || ($i == 0xC6 && ($j >= 0x53 && $j <= 0xA0)) ||
           ($i >= 0xC7 && ($j >= 0x41 && $j <= 0xA0))) continue;
         echo chr($i).chr($j)." ";
         $count++;
      }
   }
   echo $count;
}

// 한글검사
function is_han($str) {
   if(strlen($str) != 2) return false;

   $i = ord ($str[0]);
   $j = ord ($str[1]);

  if($i < 0x81 || $i > 0xC8 || $j > 0xFE || ($j >= 0x00 && $j <= 0x40) || ($j >= 0x5B && $j <= 0x60) || ($j >= 0x7B && $j <= 0x80) ||
     ($j >= 0x00 && $j <= 0x40) || (($i >= 0xA1 && $i <=0xAF) && ($j >= 0xA1 && $j <= 0xFE)) ||
     ($i == 0xC6 && ($j >= 0x53 && $j <= 0xA0)) || ($i >= 0xC7 && ($j >= 0x41 && $j <= 0xA0))) return false;
   else return true;
}


// 랜덤값 생성
function random_string($length) {
    $randomcode = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
                        'A', 'B', 'C', 'd', 'E', 'F', 'G', 'H', 'x', 'J',
                        'K', 'b', 'M', 'N', 'y', 'P', 'r', 'R', 'S', 'T',
                        'u', 'V', 'W', 'X', 'Y', 'Z');
    mt_srand((double)microtime()*1000000);
    for($i=1;$i<=$length;$i++) $Rstring .= $randomcode[mt_rand(1, 36)];
    return $Rstring;
}


// 디렉토리 리스트
function DirList($path="./") {
    $path = opendir($path);
    while($list = readdir($path)) if($list != "." && $list != "..") $Arraydir[] = $list;
    closedir($path);
    return $Arraydir;
}

// 15자리의 유일한 숫자값 만들기
function uniquenumber() {
    $temparray = explode(" ", microtime());
    $temparray2 = substr($temparray[0],2,5);
    $number =$temparray[1].$temparray2;
    return $number;
}

// 파일이름과 확장자 분리
function ExplodeFile($filename) {
    $filename = strtolower($filename);
    $elements = explode('.',$filename);
    $elemcnt  = count($elements)-1;
    if(count($elements)==1) $ext = '';
    else $ext = $elements[$elemcnt];
    unset($elements[$elemcnt]);
    $fname = implode($elements,'');

    $fileinfo["name"] = $fname;
    $fileinfo["ext"] = $ext;
    return $fileinfo;
}

// 그림확장자
function ImageType($filename) {
    $webimg = explodefile($filename);

    $webext = $webimg["ext"];
    $defineexp = array("gif","jpg","png");

    $count = count($defineexp);

    for($i=0;$i<$count;$i++) {
        if($defineexp[$i] == $webext) return true;
    }
    return false;
}

// 유닉스날짜 포맷
function date_format($unixtime,$format="Y.m.d",$empty="&nbsp;") {
    if($unixtime) return date($format, $unixtime);
    else return $empty;
}

//YYYY-MM-DD 형식을 유닉스 타임으로
function unix_format($times, $operator="-", $type=true) {
    if($type == true) {
        $times = trim($times);
        $arry = explode($operator,$times);
        if(count($arry) != 3) return date_format(0);
        $mktime = mktime(0,0,0,$arry[1],$arry[2],$arry[0]);
        return date("U", $mktime);
    } else {
        $formats = "Y{$operator}m{$operator}d";
        return date($formats, $times);
    }
}

// 주민등록번호 포맷
function jumin_format($juminno, $cutno=3, $des="x", $empty="&nbsp;") {
    $juminno = str_replace("-","",$juminno);
    if(strlen($juminno) != 13) return $empty;
    for($i=0;$i<$cutno;$i++) $x .= $des;
    $juminno = substr($juminno,0,13-$cutno).$x;
    $juminno = substr($juminno,0,6)."-".substr($juminno,6);
    return $juminno;
}

// 홈페이지 포맷
function url_format($url, $ltype=false, $title=false, $other="", $htype="http://", $empty="&nbsp;") {
    $url = eregi_replace("http://","",trim($url));
    if($url) $url = $htype.$url;
    else return $empty;
   
    if($title) $turl = $title;
    else $turl = $url;

    if($ltype) return "<a href='{$url}' {$other}>{$turl}</a>";
    else return $url;
}

// 전송값 초기화
function post_format($str, $type) {
    switch($type) {
        case "url":
            $str = trim($str);
            $str = eregi_replace("http://","",$str);
            break;
        case "num":
            $str = trim($str);
            $str = str_replace(",","",$str);
            break;
    }
    return $str;
}

// 이메일 포맷
function mail_format($email, $ltype=false, $title=false, $empty="&nbsp;") {
    $email = trim($email);
    $title = trim($title);

    if(!$email && !$title) return $empty;
    else if(!$email) return $title;

    if($title) $temail = $title;
    else $temail = $email;

    if($ltype) return "<a href='mailto:{$email}'>{$temail}</a>";
    else return $email;
}

// 전화번호 포맷
function tel_format($num1, $num2, $num3, $format="-", $empty="&nbsp;") {
    $num1 = trim($num1);
    $num2 = trim($num2);
    $num3 = trim($num3);
   
    if(!$num1) $num1 = "02";

    if($num2 && $num3) return $num1.$format.$num2.$format.$num3;
    else return $empty;
}

// 문자 포맷
function text_format($str, $empty="&nbsp;") {
    $str = trim($str);
    if($str) return $str;
    else return $empty;
}

// 새창띄우기
function win_format($title, $url, $target, $width, $height, $scrollbars=1, $empty) {
    $title = text_format($title, $empty);
    return "<a href='#' onclick=\"open_window('{$url}', '{$target}', {$width}, {$height}, {$scrollbars})\">{$title}</a>";
}

// 나이(주민등록번호를 이용)
function AGE_jumin($lno,$rno) {
    $refArray = Array(18,19,19,20,20,16,16,17,17,18);
    $refyy = substr($rno,0,1);
   
    $biryear = $refArray[$refyy] * 100 + substr($lno,0,2);
    $nowyear = date("Y");
    return $nowyear - $biryear + 1;
}

// URL 존재확인
function URL_exists($url) {
    $url = str_replace("http://", "", $url);
    list($domain, $file) = explode("/", $url, 2); // 도메인부분과 주소부분으로 나눕니다.
    $fid = fsockopen($domain, 80); // 도메인을 오픈합니다.
        fputs($fid, "GET /$file HTTP/1.0\r\nHost: $domain\r\n\r\n"); // 파일 정보를 얻습니다.
        $gets = fgets($fid, 128);
    fclose($fid);

    if(ereg("200 OK", $gets)) return TRUE;
    else return FALSE;
}

// 조사 꾸미기
$array = "뵤 벼 뱌 배 베 보 버 바 비 뷰 부 브 뱨 볘 봐 봬 붜 붸 뵈 뷔 븨 뾰 뼈 뺘 빼 뻬 뽀 뻐 빠 삐 쀼 뿌 쁘 뺴 뼤 뽜 뽸 뿨 쀄 뾔 쀠 쁴 죠 져 쟈 재 제 조 저 자 지 쥬 주 즈 쟤 졔 좌 좨 줘 줴 죄 쥐 즤 쬬 쪄 쨔 째 쩨 쪼 쩌 짜 찌 쮸 쭈 쯔 쪠 쪠 쫘 쫴 쭤 쮀 쬐 쮜 쯰 됴 뎌 댜 대 데 도 더 다 디 듀 두 드 댸 뎨 돠 돼 둬 뒈 되 뒤 듸 뚀 뗘 땨 때 떼 또 떠 따 띠 뜌 뚜 뜨 떄 뗴 똬 뙈 뚸 뛔 뙤 뛰 띄 교 겨 갸 개 게 고 거 가 기 규 구 그 걔 계 과 괘 궈 궤 괴 귀 긔 꾜 껴 꺄 깨 께 꼬 꺼 까 끼 뀨 꾸 끄 꺠 꼐 꽈 꽤 꿔 꿰 꾀 뀌 끠 쇼 셔 샤 새 세 소 서 사 시 슈 수 스 섀 셰 솨 쇄 숴 쉐 쇠 쉬 싀 쑈 쎠 쌰 쌔 쎄 쏘 써 싸 씨 쓔 쑤 쓰 썌 쎼 쏴 쐐 쒀 쒜 쐬 쒸 씌 묘 며 먀 매 메 모 머 마 미 뮤 무 므 먜 몌 뫄 뫠 뭐 뭬 뫼 뮈 믜 뇨 녀 냐 내 네 노 너 나 니 뉴 누 느 냬 녜 놔 놰 눠 눼 뇌 뉘 늬 요 여 야 애 에 오 어 아 이 유 우 으 얘 예 와 왜 워 웨 외 위 의 료 려 랴 래 레 로 러 라 리 류 루 르 럐 례 롸 뢔 뤄 뤠 뢰 뤼 릐 효 혀 햐 해 헤 호 허 하 히 휴 후 흐 햬 혜 화 홰 훠 훼 회 휘 희 쿄 켜 캬 캐 케 코 커 카 키 큐 쿠 크 컈 켸 콰 쾌 쿼 퀘 쾨 퀴 킈 툐 텨 탸 태 테 토 터 타 티 튜 투 트 턔 톄 톼 퇘 퉈 퉤 퇴 튀 틔 쵸 쳐 챠 채 체 초 처 차 치 츄 추 츠 챼 쳬 촤 쵀 춰 췌 최 취 츼 표 펴 퍄 패 페 포 퍼 파 피 퓨 푸 프 퍠 폐 퐈 퐤 풔 풰 푀 퓌 픠";
function lastCon($str) {
    global $array;
    if(ord($str[strlen($str)-1]) < 128) return false;
    $str = substr($str, strlen($str)-2);
    if(strstr($array, $str)) return false;
    return true;
}
function ul_rul($str) {
    return $str.(lastCon($str) ? "을" : "를");
}
function gwa_wa($str) {
    return $str.(lastCon($str) ? "과" : "와");
}
function un_num($str) {
    return $str.(lastCon($str) ? "은" : "는");
}
function i_ga($str) {
    return $str.(lastCon($str) ? "이" : "가");
}

// 도메인 또는 문서가 존재하는지 검사
function exists_url($url, $port="80") {
    $fp = @fsockopen($url, $port);
    if($fp) return true;
    else return false;
}

// 숫자를 한글로 바꾸기
function numtokor($num) {
    $text ='';
    $d_symbol = array('4'  => "만", '8'  => "억", '12' => "조", '16' => "경", '20' => "해", '24' => "시", '28' => "양", '32' => "구", '36' => "간", '40' => "정", '44' => "재", '48' => "극", '52' => "항하사", '56' => "아승지", '60' => "나유타", '64' => "불가사의", '68' => "무량대수");
    $p_symbol = array('0'  => "", '1'  => "십", '2'  => "백", '3'  => "천");
    $t_symbol = array('0'  => "", '1'  => "일", '2'  => "이", '3'  => "삼", '4'  => "사", '5'  => "오", '6'  => "육", '7'  => "칠", '8'  => "팔", '9'  => "구");        

    if(substr($num,0,1) == '-') {
        $num = substr($num ,1);
        $text .= '마이너스';
    }
    $length_of_num = strlen($num);
    if($length_of_num > 72) {
        $text = "존재할 수 없는 수치 입니다.";
    } else {
        //실행
        for ($k=0; $k< $length_of_num; $k++) {
            $striped_value = substr($num, $k, 1);
            $text .= $t_symbol[$striped_value];              
            $power_value = ($length_of_num - $k -1) % 4;
            if ($striped_value <> 0) $text .= $p_symbol[$power_value];
            if ($power_value == 0) $text .= $d_symbol[$length_of_num - $k -1];              
        }
    }
    return $text;
}

//검색쿼리작성
function querystring($query) {
    if($query) {
        $queryarray = explode("&", $query);
        $count = count($queryarray);

        foreach($queryarray as $key => $value) {
            $array2st = explode("=", $value);
            if($array2st[1]) {
                if($querystring) $querystring .= "&".$value;
                else $querystring = $value;
            }
        }

        return $querystring;
    }
    else return "";
}

//페이징
function pagelist($tables, $nowpage, $primarykey , $chartline, $chartpage, $wheres="", $findquery="", $others="", $orders="", $urlquery="", $lastopt=true, $allopt=true,  $firstbutton="[처음]", $prebutton="[이전]", $nextbutton="[다음]",$lastbutton="[끝]") {
   
    if($wheres) $wheres  = " where {$wheres} ";
    if($others) $wheres .= " and {$others} ";

    if(!$chartline) $chartline = 10;
    if(!$chartpage) $chartpage = 10;
   
    if(intval($nowpage) == 0) $nowpage = 1;
    if(intval($nowstep) == 0) $nowstep = 1;
   
    ##마지막버튼 유무 체크
    if($lastopt) {
        $query  = "select count(*) count from {$tables} {$wheres} {$others} {$findquery}";
        $result = mysql_query($query);
        $total  = mysql_fetch_object($result);
        #총카운트 $total->count;
    }

    ##총검색수
    if($allopt) {
        $query  = "select count(*) count from {$tables} {$wheres}";
        $result = mysql_query($query);
        $all    = mysql_fetch_object($result);
        #총검색수 $all->count;
    }
   
    ##설정값계산
    $nowstep = ceil($nowpage/$chartpage);
    if($lastopt) {
        $allstep = ceil($total->count/($chartpage*$chartline));
        $allpage = ceil($total->count/$chartline);
    }
    $startpage = 1 + ($nowstep-1) * $chartpage;
    $endpage = $startpage + $chartpage - 1;
   
    if($lastopt && $endpage > $allpage) $endpage = $allpage;
   
    ##다음버튼 유무 체크
    $nextline = $nowstep * $chartline * $chartpage;
    $nextlimitquery = " limit {$nextline}, 1";
    $query  = "select {$primarykey} from {$tables} {$wheres} {$others} {$findquery} {$nextlimitquery}";
    $result = mysql_query($query);
    $nextok = mysql_affected_rows();

    ##처음버튼 및 이전버튼
    if($nowstep > 1) {
        $fir = " <a href='$PHP_SELF?$urlquery&nowpage=1'>{$firstbutton}</a> ";
        $prepage = $startpage - $chartpage;
        $pre = " <a href='$PHP_SELF?$urlquery&nowpage=$prepage'>{$prebutton}</a> ";
    } else {
        $fir = " <font color='#C0C0C0'>{$firstbutton}</font> ";
        $pre = " <font color='#C0C0C0'>{$prebutton}</font> ";
    }
   
    ##NEXT 버튼 활성화
    if($nextok) {
        $nextpage = $endpage + 1;
        $next = " <a href='$PHP_SELF?$urlquery&nowpage=$nextpage'>{$nextbutton}</a> ";
    } else {
        $next = " <font color='#C0C0C0'>{$nextbutton}</font> ";
    }
   
    ##중간페이지
    for($i=$startpage;$i<=$endpage;$i++) {
        if($i == $nowpage) $pagelist .= " <font color='#6600FF'><b>$i</b></font> ";
        else $pagelist .= " <a href='$PHP_SELF?$urlquery&nowpage=$i'>$i</a> ";
    }
   
    ##끝페이지
    if($lastopt && $allstep > $nowstep) {
        $lastpage = $allpage;
        $last = " <a href='$PHP_SELF?$urlquery&nowpage=$nextpage'>{$lastbutton}</a> ";
    } else {
        $last = " <font color='#C0C0C0'>{$lastbutton}</font> ";
    }
   
   
    $firstlimit = 0 + ($nowpage-1) * $chartline;
    $limitquery = " limit {$firstlimit}, {$chartline}";
    $query  = "select * from {$tables} {$wheres} {$others} {$findquery} {$orders} {$limitquery}";
    $result = mysql_query($query);
    while($fetch  = mysql_fetch_array($result)) $get[] = $fetch;
   
    $get[0]["count"] = count($get);
    $get[0]["page"] = $fir.$pre." [ ".$pagelist." ] ".$next.$last;
    if($lastopt) $get[0]["total"] = $total->count;
    if($allopt)  $get[0]["allto"] = $all->count;

    return $get;

}

//업로드
function file_upload($upfile,$upfile_name,$upfile_size,$dir,$newfilename) {
    if($upfile_size) {
       
        $is_file = is_file("{$dir}/{$newfilename}");
        if($is_file) unlink("{$dir}/{$newfilename}");

        move_uploaded_file($upfile, "{$dir}/{$newfilename}");
        chmod("{$dir}/{$newfilename}", 0644);
       
        return true;
   
    } else return false;
}

//현재디렉토리
function nowdir() {
    global $DOCUMENT_ROOT;
    global $PHP_SELF;
    $getdir = pathinfo($DOCUMENT_ROOT.$PHP_SELF);
    return $getdir["dirname"];
}