[펌] james mail server setting

프로그래밍/Library 2007. 11. 28. 09:29 Posted by galad

http://blog.naver.com/galad/140033607909

출처 블로그 > もも***
원본 http://blog.naver.com/dmsl01/80033518048

 

james mail server setting

 

 


0. 실행 환경 2000 서버, Tomcat4.1.30, JDK1.4.3


1. http://james.apache.org/download.cg에 가서 실행파일을 받아 온다.
   Avalon Phoenix라는 것이 필요하다는 말이 있는데 실행 파일을 받아오면 그 안에 다 있는   

   것 같습니다. 그러니 따로 받지 않아도 됩니다.


2. 적당한 폴더에 압축을 풀고 james-2.1.3\bin 밑에 있는 run.bat를 실행시키십시요.
   물론 그전에 JDK는 설치가 되어 있어야 합니다. 실행이 되고 나면 Dos창이 하나 뜨는데 일

   단은 강제 종료를 시키십시요.


3. Dos창을 종료하고 james-2.1.3\apps 폴더를 보면 james라는 폴더가 생겨있을 겁니다.


4. james-2.1.3\apps\james\SAR-INF 폴더에 가서 보면 config.xml이라는 파일이 있는데

   이게 설정 화일입니다.


5. 에디터에서 그 파일을 열어 보면 여러가지 것들을 설청 할수 있습니다.
  

   5-1. 28번 줄에 <postmaster>Postmaster@abc.com</postmaster>으로 수정하세요.
         왜 그러는지는 알수 없지만 나중에 메일 서버를 관리 할때 필요
   5.2. 49번 줄에 <servername>abc.com</servername>으로 수정하세요.
         여기서 서버이름에 mail.abc.com으로 하시면 메일을 보낼때 메일 주소를

         user_id@mail.abc.com으로 해야 메일이 들어 오더라구요.
   5-3. <dnsserver>
          <servers>
          <!-- CONFIRM? -->
            <!--Enter ip address of your DNS server, one IP address per server -->
            <!-- element.  The default configuration assumes a DNS server on the localhost.

             -->
            <server>000.000.000.000</server>
          </servers>
          <authoritative>false</authoritative>
        </dnsserver> 부분을 수정하세요.
          메일 서버 James가 설치된 서버의 IP를 적으시면 됩니다.
   5-4. <remotemanager><remotemanager/>부분의 login/password가 있습니다. 자신이 원

         하는 ID와 패스로 수정하세요.
         나중에 유저를 관리할때 필요합니다.


6. james-2.1.3\bin 밑에 있는 run.bat를 다시 실행시키십시요. 다음과 같은 메시지가 나오면

   성공입니다.
     Using PHOENIX_HOME:   C:\james213\james-2.1.3
     Using PHOENIX_TMPDIR: C:\james213\james-2.1.3\temp
     Using JAVA_HOME:

     Phoenix 4.0.1

     James 2.1.3
     Remote Manager Service started plain:4555
     POP3 Service started plain:110
     SMTP Service started plain:25
     NNTP Service started plain:119
     Fetch POP Disabled


7. Dos창을 하나 더 띄우세요. 그리고 telnet abc.com 4555로 접속하면

   <remotemanager><remotemanager/>부분에서 정의한 ID로 접속하시면 됩니다.
   접속에 성곡하면 adduser test 1234같이 사용자를 추가 하세요.

   help를 치시면 도움말이 나옵니다.


8. outlook express 에서 메일 계정을 등록한 후에 테스를 해보시면 됩니다.


9. spoolmanager, Matchers, Mailets, DB접속은 아직 테스트 못해 봤습니다.



                                                                                                                           





1. 다운로드 및 설치
   우선 James를 받습니다...
   받을곳은 http://mirror.apache.or.kr/jakarta/james/binaries/
   여기서 james-2.1.3.zip를 받습니다
   받은다음 아무곳에나 압축을 풀고 james/bin 디렉토리에 run.bat를 실행하면

   Phienix 4.0.1이 먼저 가동되고 James 2.1.3이 실행되었다고 나옵니다..


2. 사용자 추가
   James를 가동한걸 잘 보면 Remote Manager Service Started plain:4555 라고 나올걸 볼

   수 있습니다.
   여기가 admin콘솔. 텔넷으로 접속합니다.
   명령 프롬프트에서 telnet localhost 4555 라고 치면 아이디랑 패스워드 넣으라고 나옵니

   다. 디폴트로 root/root로 잡혀있어요. 이거를 넣으면 Welcome root HELP for list 라고

   나옵니다.
  여기서 adduser [사용자 이름] [패스워드] 라고 치면 User [사용자이름] added 라는 메세

  지가 나옵니다. 추가된걸 확인하려면 listusers 라고 치면 됩니다.


3. 메일보내기/받기
   아웃룩에서 새로운 계정을 만듭니다.메일주소는 [사용자이름]@localhost
   POP3는 localhost , SMTP도 localhost, 사용자랑 비번은 아까 추가한 그걸로 넣으면 됩니

   다.그리고 테스트해보세요.


4. 설정하기
   James홈 밑에 app/james/SAR-INF/config.xml화일이 있읍니다..이게 설정화일입니다.

   28번째줄 정도에 보시면 <postmaster>admin@localhost</postmaster> 에서
   localhost대신에 도메인 네임을 적으시면 되고요~~
   49번째줄 정도에 보시면 <servername>localhost</servername> 에서 바꿔주심 돼 요.

   368번째줄 정도에 보시면
            <!-- Change the default login/password. -->
            <account login="root" password="root"/>
   이부분이 있는데 여기가 아까 어드민콘솔에 들어갈때 아이디랑 패스워드 입니다.



'프로그래밍 > Library' 카테고리의 다른 글

Tomcat 다운현상  (0) 2007.11.28
james mail server  (0) 2007.11.28
[펌] JUnit 설정  (0) 2007.11.28
CVS 설치 후, 사용자 추가하기  (0) 2007.11.28
cmd here!  (0) 2007.11.27

[펌] JUnit 설정

프로그래밍/Library 2007. 11. 28. 09:28 Posted by galad
출처 블로그 > もも***
원본 http://blog.naver.com/dmsl01/80033532103

 

[이클립스에서 JUnit 설정]

 

1. 상단 메뉴에서 [Window] -> [Preference] 를 선택한 다음, 좌측 트리에서 [Java]를 클릭한 다음 아래 생성된 [Junit] 클릭하여 JUnit 기본 설정을 변경할 수 있다.



[이클립스에서 JUnit 테스트]

 

1. [Package Explorer] 에서 소스가 위치한 소스폴더 또는 패키지에서 팝업메뉴를 띄운 다음 [New] -> [Other] 를 선택

2. 화면에 나타난 다이얼로그에서 [Java] -> [JUnit] -> [JUnit Test Case]를 선택

3. 화면에 나타난 메뉴 중단의 [Name] 항목에 새로운 JAVA 파일명을 입력하고, 하단의 [Class Under Test] 항목에는 테스트하고자 하는 JAVA 파일명을 입력한다.

4. 새로 나타난 화면에서 테스트 하고자 하는 메소드를 선택하여 체크한 다음 [Finish]버튼 클릭

5. 소스 창에 탬플릿이 생성된 것을 볼 수 있으며, 주어진 템플릿을 이용하여 코딩한다.

6. 소스 작성이 마무리 되면, 해당 소스를 선택한 다음, 팝업 메뉴에서 [Run] -> [Junit Test]를 클릭하면 테스트 내용을 [Junit] Perspective로 나타난다.


* JUnit Test Suite의 경우에도 위와 동일한 방식으로 템플릿 생성 및 테스트가 가능하다.

'프로그래밍 > Library' 카테고리의 다른 글

Tomcat 다운현상  (0) 2007.11.28
james mail server  (0) 2007.11.28
[펌] james mail server setting  (0) 2007.11.28
CVS 설치 후, 사용자 추가하기  (0) 2007.11.28
cmd here!  (0) 2007.11.27

1. CVS에서 사용할 디렉토리를 설정해줘야 한다.
Repository 라는 영역과 Temporary 라는 영역을 설정해 줘야 하는데

Temporary는 일반적인 임시파일을 쓸 경로로 지정해주면 되고
Repository는 CVS서버 하위의 저장공간이라고 생각하면 된다.

(각각의 Repository는 독립적인 경로를 가지게 되며 하위에 여러가지 모듈을

가지며 로그인 가능한 사용자등도 따로 가지게 된다.)


주의 Repository 와Temporary는 C:₩Documents and Settings₩ 하위 디렉토리에 설정을 하면 안된다.
(권한 관련한 문제가 생김)


2. 이제 CVS Conrtol Panel을 실행시켜

우선 CVSNT Service와 CVSNT Lock Service 를 멈춰준다.
Server Settings 탭으로 이동한후

Temporary를 설정해 준다.
Repository configuration 탭으로 이동후

Location 에 적당한 폴더를 설정한다.
Name 의 경우 외부에서 CVS에 접속을 할때 Repository를 선택할수 있는 이름을 나타낸다.

 

3. 이제 CVS의 각 Repository에 접속가능한 유저계정을 생성해야 한다.
이것은 윈도우의 계정을 설정할수도 있고 하나의 윈도우 계정을 사용하는 자체 cvs 계정을 생성할수도 있다.
물론 실제로 사용되는 윈도우 계정이 위에서 설정했던 디렉토리에 접근권한이 있어야 한다.
Administrator 를 cvs에서 사용하는 윈도우 계정으로 하고 사용자 계정을 만들어보면
윈도우의 시작 -> 실행 에서 cmd 를 입력하고 엔터를 눌러 커맨드 창을 띄운다.
프롬프트에서 cvs를 입력해 본다.
여기서 실행파일을 찾을수 없다는 메세지가 나오면 CVSNT를 설치하면서 정상적으로 PATH가 설정되지 않은 경우다. 이 경우는 환경변수(제어판->시스탬->고급->환경변수)의 PATH에 CVSNT가 설치된 디렉토리를 추가 시켜준다.
cvs에 정상적으로 접근을 하기위해서는 CVSROOT 라는 환경변수가 설정이 되어있어야 하므로 프롬프트 창에서
set CVSROOT=:pserver:Administrator@127.0.0.1:/SSA
를 입력한다. 위의 127.0.0.1 이 접속하려는 서버의 주소다.
그 앞의 Administrator 가 접속하려는 계정이고 가장 뒤의 /SSA는 위에서 설정해준 Repository 의 이름이다.
이제 로그인을 위해서 프롬프트 창에
cvs login
을 입력하고 해당계정의 패스워드를 입력한다.
정상적으로 로그인이 되면 아무메세지 없이 프롬프트로 돌아오며 이제 유저를 추가하면 된다.
cvs passwd -r Administrator -a yoway
을 입력하면 yoway 라는 계정을 추가하게 되며 CVS로 yoway 라는 계정으로 user가 로그인을 하면 윈도우의 Administrator 계정을 사용해서
CVS서버내의 리소스 접근권한을 제어하게 된다.


!! 위 처럼 해도 안되는 경우가 많다. 그 때는 새로이 cmd창을 열어서


C:\Documents and Settings\Administrator>set CVSROOT=:pserver:Administrator@127.0.0.1:/blog


C:\Documents and Settings\Administrator>cvs -d d:/www/CVS/blog passwd -r Administrator -a itea
Adding user itea
New Password:
Verify Password:


이것 처럼 한다


4. admin 권한주기
Repository 로 설정한 디렉토리의 CVSROOT 디렉토리 안에 admin 파일을 생성하고 각 줄에 하나씩 아이디를 적어주면 해당 아이디가 admin 권한을 가지게 된다.

5. 첨언
● Repository 는 각각이 source safe 에서 하나의 서버라고 생각하면 된다. 각각의 Repository 는 서로 다른 유저계정을 관리하므로 서로 다른팀, 완전히 독립된 프로젝트 등을 하나의 Repository 로 구분하는것이 좋다.
● 설치해서 Repository 를 설정하고 유저를 추가하는것 까지만 해두면 나머지 실제 모듈을 생성하고 소스를 올려두는것은 클라이언트 단에서 처리가 가능하다. 괜히 비어있는 Repository 에 소스를 올리고 할 필요는 없다.
● 방화벽이 있으면 외부에서 CVS에 접속을 할수가 없으므로 TCP 2401포트와 2402포트를 열어둬야 한다.

'프로그래밍 > Library' 카테고리의 다른 글

Tomcat 다운현상  (0) 2007.11.28
james mail server  (0) 2007.11.28
[펌] james mail server setting  (0) 2007.11.28
[펌] JUnit 설정  (0) 2007.11.28
cmd here!  (0) 2007.11.27

[펌] Javascript TRIM(공백제거)

프로그래밍/Web 2007. 11. 28. 09:17 Posted by galad
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
return this.replace(/\s+$/,"");
}


// example of using trim, ltrim, and rtrim
var myString = " hello my name is ";
alert("*"+myString.trim()+"*");
alert("*"+myString.ltrim()+"*");
alert("*"+myString.rtrim()+"*");
1. 만들기
1)
    var re=/pattern/flags;

2)
    var re=new RegExp("pattern","flags");

3) 차이 - new로 만들때에는 이스케이프문자는 \는 \\로 해주어야 한다.
    var re=/\w/;
    var re=new RegExp("\\w");

2. 플래그(flag)
  • g (Global 찾기) 패턴에 맞는 모든문자 찾기
  • i (Ignore Case) 대소문자 무시
  • m (Multiline) 여러줄
3.
  • ^ 문자열의 시작을 의미 ,m 플래그를 사용할경우 경우는 각 문자열의 시작
  • $ 문자열의 끝을 의미 ,m 플래그를 사용할경우 경우는 각 문자열의 끝
  • . 모든 한문자
4.
  •     [문자들]  - 괄호안의 문자 하나와 매치
            예) [abc] 는 a나 b나 c중 하나를 의미

  •     [^문자들] - 괄호안의 문자가 아닌문자와 매치
            예) [^abc] 는 1,2.... d,e.... 등과 매치

  •     [문자1-문자2] - 문자1과 문자2와 그 사이의 값과 매치
           예) [a-d] a,b,c,d와 매치    
5. (abc) abc와 매치

6.
|
   
좌우 패턴중 하나를 의미
        예) (abc|def) abc나 def를 의미

7. *, +, ?
        *  앞의 패턴이 0회 또는 그 이상반복됨
        +  앞의 패턴이 1회 또는 그 이상반복됨
        ?  앞의 패턴이 0또는 1회 반복

8. {n}, {n,}, {n,m} 패턴의 반복회수

    예)
        (abc){1,3} abc가 1에서 3회 반복
        (abc){1} abc가 1회반복
        (abc){,10} abc가 10회 이하 반복



9. 특수문자 (Escapes Character)

\ 일반문자에 \을 붙여서 특수한 용도로 사용한다.
\f 폼피드(?)
\r 캐리지리턴
\n 새줄
\t 일반 탭문자
\v 세로 탭문자(?)
\0 NUL널문자
[\b] 백스페이스
\s 공백문자
    \f, \n, \r, \t, \v, \u00A0, \u2028, \u2029
\S 공백이아닌문자
\w 알파벳문자,숫자,_ [a-zA-Z0-9_]
\W 알파벳문자,숫자,_가 아닌문자 [^a-zA-Z0-9_]).
\d 정수(short for [0-9]).
\D 정수가 아닌 문자 (short for [^0-9]).
\b 단어의 경계 공백,새줄.
\B 경계가 아닌문자.
\cX 컨트롤+문자 E.g: \cm matches control-M.
\xhh 핵사코드
\uhhhh 유니코드
출처 블로그 > 호이야~ 공부하자.
원본 http://blog.naver.com/ahnwhan76/100011474330

<HTML>
<HEAD>
<script>
 function submitonce(theform){
  if (document.all||document.getElementById){
   for (i=0;i<theform.length;i++){
    var tempobj=theform.elements[i]
     if(tempobj.type.toLowerCase()=="submit"||tempobj.type.toLowerCase()=="reset")
      tempobj.disabled=true
   }
   setTimeout('alert("전송되었습니다")',2000)
  }
  else
   alert("전송되었습니다")
  return false
 }
</script>
</HEAD>

<BODY>
<form method="POST" name="test" onSubmit="return submitonce(this)">
<table border="0" cellspacing="5" cellpadding="0">
 <tr>
  <td><strong><font face="Verdana">이름:</font></strong></td>
  <td><input type="text" name="T1" size="20"></td>
 </tr>
 <tr>
  <td valign="top" align="left"><strong><font face="Verdana">내용: </font></strong></td>
  <td><textarea rows="6" name="S1" cols="30"></textarea></td>
 </tr>
 <tr>
  <td><div align="center"></div></td>
  <td align="center"><div align="left"><p><input type="submit" value="확인" name="B1"> <input type="reset" value="다시" name="B2"></td>
 </tr>
</table>
</form>
</BODY>
</HTML>

[펌] 각종 폼양식 체크하기

프로그래밍/Web 2007. 11. 28. 09:14 Posted by galad

http://blog.naver.com/galad/140036840746

출처 블로그 > 쿠마네집
원본 http://blog.naver.com/turbo1117/30002699224
              

<!--

// radio 또는 checkbox가 배열또는 특정문자열의 반복으로 구성된 값을 넘길때 submit()

// 체크된 값은 "y", 그렇지 않은 값은 "n"을 넘긴다.

// ex) <input type='checkbox' name='chkVal_1'>

function fSubmit() {

   var f=document.form;

   for (var i=0; i<f.elements.length; i++) {

      if (f.elements[i].name.substr(0,6) == 'chkVal') {

         if (f.elements[i].checked == false) f.elements[i].value = 'n';

         else f.elements[i].value = 'y';

      }

   }

   f.submit();

}


// 팝업을 오픈한 동시에 부모창에서 팝업으로 submit

// <form name='fm'>에서 실행시켜 result.html로 넘긴다

function popSubmit(f) {

   var pop=window.open("","pop_submit","top=10,left=10,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=200,height=200);

   f.method = "post";

   f.action = "result.html";

   f.target = "pop_submit";

   f.submit();

   pop.focus();

}


// 부모창의 값을 특정스크립트(result.html)에 넘긴다(팝업이 parent를 조절)

function parentSubmit(f) {

   f.method = "post";

   f.action = "result.html";

   f.target = "_self";

   f.submit();

   self.close();

}


// 한 페이지에 선택될 갯수를 저장할 전역변수

// 한 페이지에 최대 4개를 선택한다.

var Select_Count = 0;

// onClick 이벤트실행시 수행되며 onChange 이벤트에서 이전값을 저장하기위한 전역변수

var Click_Value;


// 노출 radio 버턴의 패턴을 바꿀때

function DisplayChange(card_id,val) {

   var opt=eval("document.form.chkDisplay_"+card_id);

   var sel=eval("document.form.chkSelect_"+card_id);

   var ordText=eval("OrderText_"+card_id);


   for (var i=0; i<opt.length; i++) {

      if ((opt[i].checked == true) && (val == 1)) {

         if (Select_Count >= 4) {

            alert('Over !!!');

            opt[i].checked = false;

            opt[i].checked = true;

            return;

         }

         sel.style.color='#c4018a';

         sel.style.background.color='#f8f7f7';

         sel.disabled = false;

         if (sel.options[sel.selectedIndex].value > 0) {

            ordText.style.display='';

            Select_Count++;

         } else ordText.style.display='none';

      } else if ((opt[i].checked == false) && (val == 0)) {

         sel.disabled = true;

         ordText.style.display='none';

         if (sel.options[sel.selectedIndex].value > 0) Select_Count--;

         ordText.style.display='none';

      }

      break;

   }

}


// select 값이 바뀌면 실행되는 루틴

function OrderChange(card_id) {

   var sel=eval("document.form.chkSelect_"+card_id);

   var ordText=eval("OrderText_"+card_id);

   if (sel.value == 0) {

      Select_Count--;

      ordText.style.display='none';

      return;

   } else {

      if (Select_Count < 4) {

         if (Click_Value > 0) return;

         else {

            Select_Count++;

            ordText.style.display='';

            return;

         }

       } else {

          if (Click_Value > 0) return;

          else {

             alert('Over !!!');

             sel.value=Click_Value;

             return;

          }

        }

     }

}


// select 박스를 클릭하면 실행되는 루틴(전역변수에 현재 클릭된 값을 저장한다)

function OrderClick(card_id) {

   var sel=eval("document.form.chkSelect_"+card_id);

   Click_Value = sel.value;

}

 

// 파일 체크박스가 1개라도 체크되어 있으면 true 리턴
 function check_confirm(){
       
  objForm = document.frmFile;
        var count = 0;
        if (objForm.chk != undefined){
         var length = objForm.chk.length;
         if(length > 1){    //체크박스가 여러개 일경우
             for(var i=0; i<length; i++){
                 if(frmFile.chk[i].checked)
                     count++;
             }
         }else{    //체크박스가 한개일경우
             if(frmFile.chk.checked)
                 count++;
         }
        }       
        return count;
 }

// 최상위 체크 로직(chars로 넘긴 값이 있다면 true)

    function containsCharsOnly(input,chars) {

        for (var inx = 0; inx < input.value.length; inx++) {

            if (chars.indexOf(input.value.charAt(inx)) == -1)

                return false;

        }

        return true;

    }

 

 

// 최상위 체크 로직(chars로 넘긴 값이 있다면 false)

 function containsChars(input,chars) {

     for (var inx = 0; inx < input.value.length; inx++) {

        if (chars.indexOf(input.value.charAt(inx)) != -1)

            return true;

     }

     return false;

 }

 

 

 

// 숫자 체크

    function isNum(input) {

        var chars = "0123456789";

        return containsCharsOnly(input,chars);

    }

 

 

 

// 이름체크

 function nameCheck(input){

  var chars = '0123456789~!@#$%^&*()_-+=|{}[]<>,./?';

        return containsChars(input,chars);

 }

 

 

 

// 전화 번호 Check

    function isPhoneCheck(input) {

     var chars = "0123456789( ).-,<>{}[]_~";

        return containsCharsOnly(input,chars);

    }

 

 

 

// 영문 판별

    function isPhoneCheck(input) {

     var chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

        return containsCharsOnly(input,chars);

    }

 

 

 

// 영숫자 판별

    function isPhoneCheck(input) {

     var chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

        return containsCharsOnly(input,chars);

    }

 

 

 

 // 입력값이 숫자,대시(-)로 되어있는지 체크

 function isNumDash(input) {

     var chars = "-0123456789";

     return containsCharsOnly(input,chars);

 }

 

 

 

 // 입력값이 숫자,콤마(,)로 되어있는지 체크

 function isNumComma(input) {

     var chars = ",0123456789";

     return containsCharsOnly(input,chars);

 }

 

 

 

 // 입력값이 사용자가 정의한 포맷 형식인지 체크

 // 자세한 format 형식은 자바스크립트의 ''regular expression''을 참조

 function isValidFormat(input,format) {

     if (input.value.search(format) != -1) {

         return true; file://올바른 포맷 형식

     }

     return false;

 }

 

 

 

 /**

  * 입력값이 이메일 형식인지 체크

  * ex) if (!isValidEmail(form.email)) {

  *         alert("올바른 이메일 주소가 아닙니다.");

  *     }

  */

 function isValidEmail(input) {

 //    var format = /^(\S+)@(\S+)\.([A-Za-z]+)$/;

     var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;

     return isValidFormat(input,format);

 }

 

 

 

 /**

  * 입력값이 전화번호 형식(숫자-숫자-숫자)인지 체크

  */

 function isValidPhone(input) {

     var format = /^(\d+)-(\d+)-(\d+)$/;

     return isValidFormat(input,format);

 }

 

 

 

 // 콤마 없애기

 function removeComma(input) {

     return input.value.replace(/,/gi,"");

 }

 

 

 

 // 문자 변환 함수

    function alterString(str,before,after) {

     var returnStr = "";

     for(i = 0; i < str.length; i++) {

      value = str.charAt(i);

      index = before.indexOf(value);

      if(index >= 0) value = after.charAt(index);

      returnStr += value;

     }

     return returnStr;

    }

 

 

 

// --> 대문자 변환 함수

    function ToUpper(arg) {

     var str1 = "abcdefghijklmnopqrstuvwxyz";

     var str2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

     return alterString(arg,str1,str2);

    }

 

 

 

// --> 소문자 변환 함수

    function ToLower(arg){

     var str1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

     var str2 = "abcdefghijklmnopqrstuvwxyz";

     return alterString(arg,str1,str2);

    }

 

 

 

// 반각 문자를 전각문자로

    function convert2ByteChar(x_char) {

        var x_2byteChar = ""; //컨버트된 문자

        var c = x_char.charCodeAt(0);

        if(32 <= c && c <= 126) { //전각으로 변환될수 있는 문자의 범위

            if(c == 32) { //스페이스인경우 ascii 코드 32

                x_2byteChar = unescape("%uFFFC");

            } else {

                x_2byteChar = unescape("%u"+gf_DecToHex(c+65248));

            }

        }

        return  x_2byteChar;

    }

 

 

 

// 10진수를 16진수로

    function gf_DecToHex(x_dec) {

        var x_Hex = new Array();

        var x_serial = 0;

        var x_over16 = x_dec;

        var x_tempNum = 0;

        while(x_dec > 15) {

            var x_h = x_dec % 16;          //나머지

            x_dec = parseInt(x_dec/16); //

            x_Hex[x_serial++] = (x_h > 9 ? String.fromCharCode(x_h + 55) : x_h); //16진수코드변환

        }

 

 

 

    //마지막은 몫의 값을 가짐

        x_Hex[x_serial++] = (x_dec > 9 ? String.fromCharCode(x_dec + 55) : x_dec); //16진수코드변환

  

    //,나머지,나머지,.....

        var retValue = "";

        for(var i=x_Hex.length ; i>0 ;i--) {

            retValue += x_Hex[i-1];

        }

        return retValue;

    }

 

 

 

// input box space, &nbsp;등 만으로 넣고 장난 칠때 이들 문자 뺀 길이를 통해 유효성 체크한다...

    function CheckStr(strOriginal, strFind, strChange){

        var position, strOri_Length;

        position = strOriginal.indexOf(strFind); 

        while (position != -1){

            strOriginal = strOriginal.replace(strFind, strChange);

            position = strOriginal.indexOf(strFind);

        }

        strOri_Length = strOriginal.length;

        return strOri_Length;

    }

 

 

 

// 체크 박스에 체크가 되어 있으면 true

 function checkValidator(str) {

  if(str.checked) return true;

  else return false;

 }

 

 

 

 // 비밀번호는 4자 등 최대 최소 길이를 파람으로 주고 처리...

    function checkLength(str,minLng,maxLng){

        var ckstr = str.value.length;

        if (parseInt(ckstr) < parseInt(minLng) || parseInt(ckstr) > parseInt(maxLng)) return false;

        return true;

    }

 

 

 

// 숫자만 받아서 아니면 메세지 보여 주는

    function onlyNumber(objEv) {

        if(!isNum(objEv)){

            alert("숫자만 입력가능합니다.");

            objEv.value = "";

            objEv.focus();

            return;

        }

    }

 

 

 

// 숫자를 체크하다가 6자 등 원하는 만큼 이동후 다음 input 박스로 이동 시키는...

    function goJump(fname, len, goname){

        onlyNumber(fname);

        if (document.all[fname].value.length == len) document.all[goname].focus();

    }

 

 

 

// 주민등록번호 체크 로직

    function check_ResidentNO(str_f_num,str_l_num){ 

        var i3=0

        for (var i=0;i<str_f_num.length;i++){

         var ch1 = str_f_num.substring(i,i+1);

            if (ch1<'0' || ch1>'9') i3=i3+1;

        }

        if ((str_f_num == '') || ( i3 != 0 )) return false;

        var i4=0;

        for (var i=0;i<str_l_num.length;i++){

            var ch1 = str_l_num.substring(i,i+1);

            if (ch1<'0' || ch1>'9') i4=i4+1;

        }

        if ((str_l_num == '') || ( i4 != 0 )) return false;

        if(str_f_num.substring(0,1) < 4) return false;

        if(str_l_num.substring(0,1) > 2) return false;

        if((str_f_num.length > 7) || (str_l_num.length > 8)) return false;

        if ((str_f_num == '72') || ( str_l_num == '18'))  return false;

               

        var f1=str_f_num.substring(0,1)

        var f2=str_f_num.substring(1,2)

        var f3=str_f_num.substring(2,3)

        var f4=str_f_num.substring(3,4)

        var f5=str_f_num.substring(4,5)

        var f6=str_f_num.substring(5,6)

        var hap=f1*2+f2*3+f3*4+f4*5+f5*6+f6*7

        var l1=str_l_num.substring(0,1)

        var l2=str_l_num.substring(1,2)

        var l3=str_l_num.substring(2,3)

        var l4=str_l_num.substring(3,4)

        var l5=str_l_num.substring(4,5)

        var l6=str_l_num.substring(5,6)

        var l7=str_l_num.substring(6,7)

        hap=hap+l1*8+l2*9+l3*2+l4*3+l5*4+l6*5

        hap=hap%11

        hap=11-hap

        hap=hap%10

        if (hap != l7) return false;

        return true;

    }

 

 

 

// 바이트 구하기

    function getByteLen(str){

        return(str.length+(escape(str)+"%u").match(/%u/g).length-1);

    }

 

 

 

 // url 가져오기

    function getUrlAddress(){

        var pageUrl = document.location;

     pageUrl  = new String(pageUrl);

      return pageUrl.substring(0,pageUrl.lastIndexOf("/"));

    }

 

 

 

// 오른마우스 금지, 나중에 해당 주석 풀고 사용

    function rightbutton(e){

        if (navigator.appName == 'Netscape' &&  (e.which == 3 || e.which == 2))

            return false;

        else if (navigator.appName == 'Microsoft Internet Explorer' && (event.button == 2 || event.button == 3))

        {

            alert("죄송합니다!! 정보무단복제를 막기 위하여 오른쪽 마우스 사용을 허용하지 않습니다.");

            return false;

        }

        return true;

    }

 

 

 

//document.onmousedown=rightbutton;

 

// 컨트롤 키 금지, 나중에 해당 주석 풀고 사용

    function checkCtl(){

        if (document.all){

            if(event.keyCode==17) {

                alert("죄송합니다!! 컨트롤키 사용을 허용하지 않습니다.");

                return false;

            }

        }

    }

 

 

 

//document.onkeydown = checkCtl;

 

 function setCookie(name,value) {

     document.cookie = name+"="+escape(value)+";path=/;domain=.kkaok.pe.kr;";

 }

 

 function setCookie(name,value, expires) {

     document.cookie = name + "=" + escape(value) +

     "; path=/; expires=" + expires.toGMTString();

 }

 

 function getCookie(Name) {

     var search = Name + "="

     if (document.cookie.length > 0) { // 쿠키가 설정되어 있다면

         offset = document.cookie.indexOf(search)

         if (offset != -1) { // 쿠키가 존재하면

             offset += search.length

         // set index of beginning of value

             end = document.cookie.indexOf(";", offset)

         // 쿠키 값의 마지막 위치 인덱스 번호 설정

             if (end == -1)

                 end = document.cookie.length

             return unescape(document.cookie.substring(offset, end));

         }

     }

 }

 

 

 

    String.prototype.trim = function(){

        return this.replace(/(^\s*)|(\s*$)/gi, "");

    }

 

//문자 바꾸기, 사용법 var str = 문자열.replaceAll("a", "1"); 

    String.prototype.replaceAll = function(str1, str2) {

        var temp_str = "";

        if (this.trim() != "" && str1 != str2) {

            temp_str = this.trim();

            while (temp_str.indexOf(str1) > -1){

                temp_str = temp_str.replace(str1, str2);

            }

        }

        return temp_str;

    }

 

//-->