//지전분한 함수들 모두
// JavaScript Document
//
// prototype.js ver 1.5를 기반으로 작성. cross-flatform을 대비한다.
// 이 파일이 제대로 작동하기 위해서는 prototype.js 가 먼저 실행 되어야 한다.
var isNN = (navigator.appName.indexOf("Netscape")!=-1); 
// try...catch(e) 가 꼭 지겨져야 함.
//if (isNN || window.Event) document.captureEvents( Event.MOUSEUP | Event.KEYPRESS | Event.KEYUP); 
var JsLibBuildVersion = '0.10 Beta (Lee S.H.)';
/*
제작자의 허락 없이 수정/개발 등을 금합니다.
*/
//----------------------------------------

// 소스 보호용 . start-(prototype.js Event에 맞게 수정 요함------------------------------
var Config_HtmlSourceProtect;//소스보기, f11, f5 버튼 비활성화. 확실하게 작동됨.
var Config_ImgOnFocusPrev; //images onFucus Blur (body_onload.asp)에서 설정 할 것임.
// mouse up, Key Press, Key Up 이벤트를 잡음 
var today = new Date();
var now = today;
today_str = ""+today.getFullYear()+"-"+(today.getMonth()+1).toPaddedString(2)+"-"+today.getDate().toPaddedString(2)

//Config_HtmlSourceProtect 	= true;//소스보기, f11, f5 버튼 비활성화. 확실하게 작동됨.
Config_ImgOnFocusPrev 		= true; //images onFocus Blur

//addLoadEvent(fn_ImgOnFocusPrev);
addLoadEvent(fn_HtmlSourceProtect);	

function nocontextmenu() {   // IE
   event.cancelBubble = true
   event.returnValue = false;
   return false;
}

function norightclick(ev)    // Others
{	
   if(!Event.isLeftClick(ev)) 
   { 	ev.cancelBubble = true;
   		ev.returnValue = false;
   		return false;
   }
}

function processKey(ev) 
{ 	//키 값에 따라 여러 컨트롤 키를 금지 시킬 수 있습니다.
	var ev = Event;//isNN ? ev: document.event;
	var keyCode = isNN ? ev.which : ev.keyCode;
	if( (ev.ctrlKey == true && (ev.keyCode == 78 || ev.keyCode == 82)) || 
        (ev.keyCode >= 112 && ev.keyCode <= 123) || ev.keyCode == 8) { 
        ev.keyCode = 0; 
        ev.cancelBubble = true; 
        ev.returnValue = false;
		return false;
	} 
} 

function fn_HtmlSourceProtect() {
	if(!Config_HtmlSourceProtect) return; 
	
	Event.observe(document, 'mouseup', norightclick); //mouse 이벤트는 꼭 이렇게 해야 한다.
	Event.observe(document, 'selectstart',	function (ev) { if(Event.element(ev).tagName != 'INPUT') {Event.stop(ev); return false;}});
		document.onkeydown = processKey; // onkeypress와 혼돈이 일어나지 않도록 조심.
		document.oncontextmenu = nocontextmenu;
		//document.onmouseup = norightclick;	
		//document.onselectstart= function () { if(Event.element().tagName.toLowerCase() != 'input') return false;}
		document.ondragstart=new Function("return false");		
	
}
// 소스 보호용 . end------------------------------------------------------------------

//이미지에 테두리 생기는 것을 방지하는 것임.
//window.onLoad 에서 실행해야 함.!!!
//다른 기능과 fckeditor 충돌하여 ... 꼭 필요할 경우에만 사용토록 ...
function fn_ImgOnFocusPrev() {
	
	if(!Config_ImgOnFocusPrev) return; 
try {
	var imgs = document.getElementsByTagName('img');	
	var inputImgs = document.getElementsByTagName('input');
	var i;
	for(i=0;i<imgs.length;i++) { //이미지도 필요한지는 모르겠다. 나중에 필요업게 되면 삭제하셈!!
		
		imgs[i].onfocus = function() { this.blur(); } 
	}
	for(i=0;i<inputImgs.length;i++) {
		if(inputImgs[i].type != '' && inputImgs[i].type != 'text' && inputImgs[i].type != 'password' && inputImgs[i].type != 'hidden' && inputImgs[i].type != 'file') inputImgs[i].onfocus = function() { this.blur(); } ;
	}		
}
catch(e) {
	alert('error: fn_ImgOnFocusPrev' +e.name+' '+(e.number & 0xFFFF)+ ' '+ e.description);	
}
}

//----------------------------------------

// ref: http://www.sitepoint.com/blog-post-view.php?id=171578
// sample code
// addLoadEvent(nameOfSomeFunctionToRunOnPageLoad);
// addLoadEvent(function() {
      /* more code to run on page load */ 
// });


function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

//----------------------------------------------

function fn_inputKeyControl (ev, type) {
		
	var ev = isNN ? ev: window.event;
	var keyCode = isNN ? ev.which : ev.keyCode; //IE 와 Netscape 차이의 극복
	//var orig = isNN  ? ev.target.value : ev.srcElement.value;	 
	//alert(keyCode+ " " + " "+ type + " event: "+ev.type); 
	
	//숫자열 0 ~ 9 : 48 ~ 57, 키패드 0 ~ 9 : 96 ~ 105 ,8 || keyCode >= 96 && keyCode <= 105 없음: backspace, 46 : delete -->키코드값을 구분합니다. 저것들이 숫자랍니다.
	//우선은 숫자만: 나중에 확장 하자. interger 정수, real 실수, money 금액 (3자리씩 끊기)
	// - : 45, + : 43
	if (type == 0 || type == 'digit') { 		
        if(keyCode >= 48 && keyCode <= 57  || keyCode == 8 || keyCode == 46)        	
			return true; //-->입력시킨다.        
        else {//숫자가 아니면 넣을수 없다.	
			//alert(keyCode+ " " + " "+ type + " event: "+ev.type);  
			ev.keyCode = 0;
			ev.which = 0;
			ev.cancelBubble = true;
			ev.returnValue=false;			
		}
	}
	
	if (type == 1 || type == 'number') {
		//우선은 숫자만: 나중에 확장 하자. interger 정수, real 실수, money 금액 (3자리씩 끊기)
		//alert(keyCode)
        if(keyCode >= 48 && keyCode <= 57 ||  keyCode == 8 || keyCode == 46 || keyCode == 45 ) {
            /*if(keyCode == 48 ) //0을 눌렀을경우
            {
                if(orig == "")	{
				//아무것도 없는상태에서 0을 눌렀을경우. 넷스케이프에서는 srcElement 대신 target을 사용해야함.
					ev.keyCode = 0;
					ev.which = 0;
					ev.cancelBubble = true;
					ev.returnValue=false;
				}
                else //다른숫자뒤에오는 0은
                    return; //-->입력시킨다.
            }
            else //0이 아닌숫자*/
                return; //-->입력시킨다.
        }
        else {//숫자가 아니면 넣을수 없다.		
			ev.keyCode = 0;
			ev.which = 0;
			ev.cancelBubble = true;
			ev.returnValue=false;
		}
	}
	
	if (type == 99 || type == 'notspace') {
		if (keyCode == 32) {
            ev.keyCode = 0;
			ev.which = 0;
			ev.cancelBubble = true;
			ev.returnValue=false;
		} 		
	}
}


//---------------------------------------------
// form의 element의 익덱스
function fn_indexOfElementFromForm(frmId, elem) {
try {	
	var frm = document.getElementById(frmId);
//alert(frm.elements.length);
	var form_length = frm.elements.length;
//alert(frm.id);
	for(i=0;i<form_length;i++) 	if(frm.elements[i] == elem) { 
//		alert(i);
		return i; 
	}
	return false;
}
catch(e) {
	alert('error: ' +e.name+' '+(e.number & 0xFFFF)+ ' '+ e.description);
}
}
// next element에 focus 주기
function fn_autoTab(ev, frmId) {
	var ev = isNN ? ev: window.event;
	var elem = isNN  ? ev.target : ev.srcElement;	
	var frm = document.getElementById(frmId);
//alert(elem.value.length+' of '+elem.maxLength+' from '+elem.name);
try {
	
	if (elem.value.length >= elem.maxLength) {
//		alert('허용 길이에 도달했습니다. 다음 항목으로 넘어값니다!'+ frm.elements.length);//+ fn_indexOfElementFromFrom(frmId, elem));
		frm.elements[(fn_indexOfElementFromForm(frmId, elem)+1) % frm.elements.length].focus();
	}
}
catch(e) {
	alert('error: fn_autoTab' +e.name+' '+(e.number & 0xFFFF)+ ' '+ e.description);
}

}

function fn_setinnerHTMLtoElem (elem, value) {
	if(!value) return;
	if($(elem)) {$(elem).innerHTML = value;}
	else return;
	//alert(elem+' '+value);
}

// -----------------------------------------------------------------------------------
// form 초기화 공통 함수
// 폼 내부의 엘리멘트의 name으로 구분한다.
function fn_form_setInputValue (elem, value) {
var i;	
if(!value) return;
//alert(elem[0].type +' '+ value);
if (typeof(elem) == 'string') {
	elem = $(elem)	
}
try {	

	//text, textarea, select, password, 등은 아래 내용만 가지고도 작동 된다.	
	if (!elem.type) {
		if(elem[0].type == 'radio') {			
			for (i = 0 ; i<elem.length; i++) {
				if (elem[i].value == value) { 
					elem[i].checked = true;
					return;
				}
			}			
		}
	}	
	else if (elem.type == 'checkbox') {
		if(elem.value) {
			elem.checked = true;
			return;
		}
	}
	
	elem.value = value;
	return;	
}
catch(e) {
	alert('error: fn_form_setInputValue ->' +e.name+' '+(e.number & 0xFFFF)+ ' '+ e.description);	
}

	
}

function fn_form_inputElementInit() {
/* 추가되는 인수가 자주 발생해서 내논 묘안임.
0: form
narg+0: element
narg+1: length
narg+2: auto_Tab
narg+3: style.imeMode
narg+4: onkeypress 함수의 인수
*/	
	var narg = 1;
	var frm =  arguments[0];// 변경 개선: 이승훈 071115 document.getElementById(arguments[0]);
	var elem = arguments[narg+0]; //frm.elements.namedItem(arguments[0]);	
try {
	if (arguments[narg+1]) elem.maxLength	= arguments[narg+1]; 
	// 칸이 채워지면 다음 항목으로 넘어가게 하기.
	
	if (arguments[narg+1] > 0 && arguments[narg+2]) elem.onkeyup = new Function("ev", "return fn_autoTab(ev,'"+frm.id+"');");
	
	//alert(elem.onkeyup);
	
	elem.style.imeMode	= arguments[narg+3]?arguments[narg+3]:'auto';	
/*	switch(arguments[3]) {
		case 0  : elem.onkeypress	= function () { return fn_inputKeyControl (0); }; break;		
		case 1  : elem.onkeypress	= function () { return fn_inputKeyControl (1); }; break;		
		case 99 : elem.onkeypress	= function () { return fn_inputKeyControl (99);};  break;
	} // 개선: 071015 이승훈 */
	elem.onkeypress	= new Function("ev","return fn_inputKeyControl (ev, "+arguments[narg+4]+");");
}
catch (e)
{
	alert('error: ' +e.name+' '+(e.number & 0xFFFF)+ ' '+ e.description);
}
	
}
//-------------------------------------------------------------

function elem_validate(regexp_,element, value) {
	//alert('regexp:'+regexp_.toString()+" | "+$F(element)+" | " + value);	
	if (!regexp_.test(value))	{		
		Form.Element.activate(element);
		return false;
	}
	return true
}

//-------------------------------------------------------------

function addSelectOption(selectbox, optVal, idx) {
	
	if (typeof(optVal) != 'object') return false;
	if (typeof(selectbox) == 'string') selectbox = $(selectbox);
	if (!selectbox) return false;
	if(idx>=0) {				
		if(!isNN) selectbox.add(optVal, idx); else  selectbox.add(optVal, selectbox.options[idx]);	
	} else
		if(!isNN) selectbox.add(optVal); else  selectbox.add(optVal, null);	
}

//------------------
// 숫자를 한글로 변환
function number2Hangeul( strNumber ) 
{ 	strNumber += "";
    strNumber = strNumber.replace(new RegExp(",", "g"), ""); 

    var arrayAmt = new Array("일", "이", "삼", "사", "오", "육", "칠", "팔", "구", "십"); 
    var arraypos = new Array("", "십", "백", "천"); 
    var arrayUnit = new Array("", "만", "억", "조", "경", "해", "자", "양", "구", "간", "정", "재", "극", "항하사", "아승기", "나유타", "불가사의", "무량대수"); 

    var pos = strNumber.length%4;                        //자리수 
    var len = (strNumber.length/4).toString(); 

    if( len.indexOf(".") > 0 ) 
        var unit = len.substring(0, len.indexOf("."));      //단위(0:일단위, 1:만단위...) 
    else 
        var unit = strNumber.length/4-1; 

    var korNumber = ""; 
    var op = 0; 

    for( i=0; i<strNumber.length; i++ ) 
    { 
        if(pos==0) pos=4; 
        var num = parseInt( strNumber.substring( i, i+1 ) ); 
        if( num != 0 ) 
        { 
            korNumber += arrayAmt[ num-1 ]; 
            korNumber += arraypos[ pos-1 ]; 
            op=1; 
        } 
        if(pos==1) 
        { 
            if(op==1) korNumber += arrayUnit[unit]; 
            unit--; 
            op = 0; 
        } 
        pos--; 
    } 

    if (korNumber.length==0 || korNumber.length==null ) 
        return  ""; 
    else 
        return korNumber ; 
} 

//------------------------
//천단위 마다 , 삽입

function insertCommaInNumber(n) {
  
  var reg = /(^[+-]?\d+)(\d{3})/;   // 정규식
  n += '';                          // 숫자를 문자열로 변환
  n = deleteCommaFromNumber(n);
  while (reg.test(n))
    n = n.replace(reg, '$1' + ',' + '$2');

  return n;
}

function deleteCommaFromNumber(strNumber) {
	strNumber += '';
	return strNumber.replace(new RegExp(",", "g"), ""); 
}


/*/ form 의 input태그의 Id 리스트 얻기: 일종의 유틸리티임.
<script language="javascript" type="text/javascript">
		var IdList;
	var InputList = document.getElementById('JoinRequestForm').getElementsByTagName('input');
	var 
	IdList = '';
	
	for(i=0; i<InputList.length; i++) IdList += (InputList[i].id?(InputList[i].id + '\t= '):('\t-->')) + (InputList[i].name + '\n');
	prompt('Input 분별자 리스트', IdList);
</script>
//-------------------------	
*/

//------------------------------------
//이미 만들어진 함수들: 필요한 pivot 팝업들을 모아두는 곳.

function fnOpenZipcode(postCode1, postCode2, addr1, addr2, ext) {
	var mWth = 500; 
	var mHgt = 500;
	var mWinpos = "left=" + ((window.screen.width-mWth)/2) + ",top=" + ((window.screen.height-mHgt)/2);
	var mWinstyle = "width="+mWth+",height="+mHgt+",titlebar=no,status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=no,copyhistory=no," + mWinpos;
	ext=ext?"_ext":"";
	var objPopupOpen = window.open(SiteConfig.SERVICE_ROOT + '/pop_zipcode'+ext+'.asp?PostCode1='+postCode1+'&PostCode2='+postCode2+'&Addr1='+addr1+'&Addr2='+addr2, "popZipcode", mWinstyle);
	if(!objPopupOpen) { alert("팝업을 허용하여 주십시오."); return false;}
	objPopupOpen.focus();
}

function fnOpenZipcodePlus(postCode1, postCode2, addr1, addr2, zone) {
	var mWth = 500; 
	var mHgt = 500;
	var mWinpos = "left=" + ((window.screen.width-mWth)/2) + ",top=" + ((window.screen.height-mHgt)/2);
	var mWinstyle = "width="+mWth+",height="+mHgt+",titlebar=no,status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=no,copyhistory=no," + mWinpos;	
	var objPopupOpen = window.open(SiteConfig.SERVICE_ROOT + '/pop_zipcodePlus.asp?PostCode1='+postCode1+'&PostCode2='+postCode2+'&Addr1='+addr1+'&Addr2='+addr2+'&zone='+zone, "popZipcodePlus", mWinstyle);
	if(!objPopupOpen) { alert("팝업을 허용하여 주십시오."); return false;}
	objPopupOpen.focus();
}

function fnOpenIDCheck(memidField) {
	var mWth = 500; 
	var mHgt = 250;
	var mWinpos = "left=" + ((window.screen.width-mWth)/2) + ",top=" + ((window.screen.height-mHgt)/2);
	var mWinstyle = "width="+mWth+",height="+mHgt+",titlebar=no,status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=no,copyhistory=no," + mWinpos;
	
	var objPopupOpen = window.open(SiteConfig.SERVICE_ROOT + '/pop_id_check.asp?memidField='+memidField+'&txtId='+$F(memidField), "popIDCheck", mWinstyle);
	if(!objPopupOpen) { alert("팝업을 허용하여 주십시오."); return false;}
	objPopupOpen.focus();
}

function fnOpenNICKCheck(memidField) {
	var mWth = 500; 
	var mHgt = 250;
	var mWinpos = "left=" + ((window.screen.width-mWth)/2) + ",top=" + ((window.screen.height-mHgt)/2);
	var mWinstyle = "width="+mWth+",height="+mHgt+",titlebar=no,status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=no,copyhistory=no," + mWinpos;
	
	var objPopupOpen = window.open(SiteConfig.SERVICE_ROOT + '/pop_nick_check.asp?memidField='+memidField+'&txtId='+escape($F(memidField)), "popIDCheck", mWinstyle);
	if(!objPopupOpen) { alert("팝업을 허용하여 주십시오."); return false;}
	objPopupOpen.focus();
}

function fnOpenBizNumCheck(no1, no2, no3) {
	var mWth = 500; 
	var mHgt = 250;
	var mWinpos = "left=" + ((window.screen.width-mWth)/2) + ",top=" + ((window.screen.height-mHgt)/2);
	var mWinstyle = "width="+mWth+",height="+mHgt+",titlebar=no,status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=no,copyhistory=no," + mWinpos;
	
	var objPopupOpen = window.open(SiteConfig.SERVICE_ROOT + '/pop_biznum_check.asp?no1='+no1+'&no2='+no2+'&no3='+no3+'&biznum='+$F(no1)+'-'+$F(no2)+'-'+$F(no3), "popBizNumCheck", mWinstyle);
	if(!objPopupOpen) { alert("팝업을 허용하여 주십시오."); return false;}
	objPopupOpen.focus();
}

function fnOpenWorkarea(sido) {
	var mWth = 500; 
	var mHgt = 250;
	var mWinpos = "left=" + ((window.screen.width-mWth)/2) + ",top=" + ((window.screen.height-mHgt)/2);
	var mWinstyle = "width="+mWth+",height="+mHgt+",titlebar=no,status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=no,copyhistory=no," + mWinpos;
	
	var objPopupOpen = window.open(SiteConfig.SERVICE_ROOT + '/pop_workarea.asp?sidoSelect='+sido, "popWorkarea", mWinstyle);
	if(!objPopupOpen) { alert("팝업을 허용하여 주십시오."); return false;}
	objPopupOpen.focus();
}


function fnOpenWindow(img, imgW, imgH, alt, resizable){
	if(resizable == "") resizable="yes";
	var mWinpos = "left=" + ((window.screen.width-imgW)/2) + ",top=" + ((window.screen.height-imgH)/3);
	mywin=window.open("","ImagePopup","status=no,width=" + imgW + ",height=" + imgH +", resizable="+resizable+","+mWinpos) 
	if(!mywin) { alert("팝업을 허용하여 주십시오."); return false;}
	mywin.document.open() //Doc 열기
	mywin.document.write("<html><title>"+alt+"</title>")
	mywin.document.write("<body topmargin=0 leftmargin=0 onBlur='self.close()'>")
	mywin.document.write("<img src="+img+" width="+imgW+" height="+imgH+" alt="+alt+" onclick='self.close()'>")
	mywin.document.write("</body></html>")
	mywin.document.close() //Doc 열기
	mywin.focus()
}

function fnOpenImageWindow(imgUrl, alt) {
	var img	= new Image();
	//src 가 정의되기 전에 onload가 설정 되어야 한다. 수정:090804 이승훈
	img.onload = function () {
		var imgW = this.width;
		var imgH = this.height;	
		var mWinpos = "left=" + ((window.screen.width-imgW) / 2) ;
		mWinpos += ",top=" + ((window.screen.height-imgH)/3);
		mywin=window.open("","ImagePopup","status=no,width=" + imgW + ",height=" + imgH +", resizable=no,"+mWinpos) 
		if(!mywin) { alert("팝업을 허용하여 주십시오."); return false;}
		mywin.document.open() //Doc 열기
		mywin.document.write("<html><title>"+this.alt+"</title>")
		mywin.document.write("<body topmargin=0 leftmargin=0 onBlur='self.close()'>")
		mywin.document.write("<img src='"+this.src+"' width='"+imgW+"' height='"+imgH+"' alt='"+this.alt+"' onclick='self.close()'>")
		mywin.document.write("</body></html>")
		mywin.document.close() //Doc 열기
		mywin.focus();
		
	}
	img.src = imgUrl;
	img.alt = alt;
}

function fnPrintPopup(W, H, cont, resizeable){
	if(resizeable == "") resizeable="yes";
	
	var mWinpos = "left=" + ((window.screen.width-W) / 2) ;
		mWinpos += ",top=" + ((window.screen.height-H)/3);
	mywin=window.open("","PrintingPopup","scrollbars=yes,status=no,width=" + W + ",height=" + H +", resizable="+resizeable+","+mWinpos) 
	if(!mywin) { alert("팝업을 허용하여 주십시오."); return false;}
	mywin.document.open() //Doc 열기
	mywin.document.write("<html><title>프린트팝업</title>")
	mywin.document.write("<body onLoad='window.print()'>")
	mywin.document.write(cont)
	mywin.document.write("</body></html>")
	mywin.document.close() //Doc 닫기
	mywin.focus()
}

function fnOpenLink(url,t, target, st){  // 새창이 열리는 것이다.....
  var stat=st?st:'toolbar=1,location=1,status=1,menubar=1,scrollbars=1,directories=0,resizable=1';
  var newWin=window.open(t?t:'NewPopup',target?target:'_blank',stat);
  newWin.location=url;
  return false;
}

function fnOpenPopup(url,w,h,t,target,st){  // 새 팝업창이 열리는 것이다.....
  w=w>0?w:500;
  h=h>0?h:500;
  var stat=st?st:'toolbar=0,location=0,status=0,menubar=0,scrollbars=1,directories=0,resizable=0'+ ',width=' + w + ',height=' + h ;
  var newWin=window.open(t?t:'NewPopup',target?target:'',stat);
  newWin.document.open() //Doc 열기
  newWin.document.write("<html><title>popup</title>")
  newWin.document.write("<body></body></html>")	
  newWin.document.close() //Doc 닫기
  newWin.location=url;
  return false;
}

function fnPopupPostSubmit(f,w,h,url) {
  
  var stat='toolbar=1,location=1,status=1,menubar=1,scrollbars=1,directories=0,resizable=1';
  if(w && w > 0) stat += ',width=' + w;
  if(h && h > 0) stat += ',height=' + h;
  var pId =  'SubmitWindow_'+(new Date()).valueOf();
  var newWin=window.open('',pId,stat);
  if(!newWin) { alert("팝업을 허용하여 주십시오."); return false;}
  
  if(url) $(f).action = url;
  $(f).target = pId;
  $(f).method = 'post';
  $(f).submit();
  return false;
	
}

function fnIFrameSubmit(formId,frameId,url) {
  var f = $(formId); 
  if(url) f.action = url;
  f.target = frameId;
  f.method = 'post';
  f.submit();
  return false;	
}

//종종, 새창에서 submit을 해야 처리되는 경우가 있다.
function fnBlankSubmit(formId,url) {
	return fnIFrameSubmit(formId,'_blank',url);
}

//============ 로그아웃 관련 스크립 ====================
function goLogout( user_id ) {
	if(user_id != '') parent.location.href ="/SofaLib/mms/do/logout_do.asp";
	return false;
}

function divAlert( t ) {
	var div = $("____divAlert____");
	if(!div) document.write("<div id='____divAlert____' style='position:absolute; display:none; width:300px; height:300px; baground-color:#fff; color:#000; padding:5px;'></div>");	
	if(div.style.display =='none') { 
		div.style.display = 'block';
		Event.observe(div, 'click', function () {
											  div.style.display = 'none';
											  });
	}
	div.innerHTML(t);
}
//============쿠키 관련 ================================
// JavaScript Document

function setCookie(name,value,expiredays) { 
	var today = new Date();
	today.setDate( today.getDate() + expiredays );	
	document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + today.toGMTString() + ";";
}

function getCookie(Name) {
	var search = Name + "=";

	if (document.cookie.length > 0) {
		offset = document.cookie.indexOf(search);

		if (offset != -1) {
			offset += search.length;
			end = document.cookie.indexOf(";", offset);

			if (end == -1) end = document.cookie.length;
			return unescape(document.cookie.substring(offset, end));
		}
			else return false;
	}
	else return false;
}

//=================================================
//prototype함수의 재 정의 ... 
//원형에는 각 값을 utf로 encoding 해버려 euckr에서 작동이 안되는 폐단이 있다.
//utf8로 작업 하는 중임으로 아래 내용을 필요없음.
/*
Hash.toQueryString.addPair = function(key, value, prefix) {
  key = escape(key);
  if (value === undefined) this.push(key);
  //alert(key + '=' + (value == null ? '' : (value)));
  else this.push(key + '=' + (value == null ? '' : escape(value)));
};

//===========================================================
//각 요소(element)의 위치 구하기 (절대값) */

function getAbsLeft(element){ 
	if(typeof element!='object') element=$(element); 
	var LEFT=0; 
	while(element){ 
		LEFT+=element.offsetLeft; 
		element=element.offsetParent; 
	} 
	return LEFT; 
} 
function getAbsTop(element){ 
	if(typeof element!='object') element=$(element); 
	var TOP=0; 
	while(element){ 
		TOP+=element.offsetTop; 
		element=element.offsetParent; 
	} 	
	return TOP; 
} 

//=======================================================
//엘리먼트 id에서 agruments값들 얻기.

function getArgumentsFromId(id, divider) {
	
	if(!divider) divider = '_';
	
	return id.split(divider);	
}

var Timer_01;
function ViewTimer_01 (start, duration) {
	var t = new Date()
	t= t.getTime();
	var end = start.getTime() + duration * 1000;
	if ((end-t) <= 0.0) {
		if ($('timediv___')) $('timediv___').innerHTML = '완료되었습니다.';	
		clearInterval(Timer_01);
		return false;
	}
	var rest= Math.floor((end-t)/(1000*60*60))+"시간 "+(Math.floor((end-t)/(1000*60))%60)+"분 "
+(Math.floor((end-t)/1000)%60)+"초 ";
	
	if ($('timediv___')) $('timediv___').innerHTML = rest+'';
	return false;
}


// JavaScript Document
function SHL_createFullViewportCover(containerId,opacity) {
	if($(containerId)) return $(containerId);
	var divContainer = document.createElement('div');
	divContainer.style.cssText ="position:absolute;width:100%;height:100%;left:0;top:0;display:block;background:white;";
	var h = document.documentElement?document.documentElement.clientHeight:document.body.clientHeight; //ie or netscape
	divContainer.style.height = (h > window.document.body.scrollHeight?h:window.document.body.scrollHeight) + 'px';
	divContainer.id = containerId;
	document.body.appendChild(divContainer);
	$(divContainer).setOpacity(opacity);
	return divContainer;
}


var SHL_DialogBox = Class.create({
	_version: 'b_001',
	_prefix: 'shl_dialog',
	_num: '000',
	_box: null,
	container:null, titlebar:null, titlebarTitle:null, closebtn:null, brClear:null, mainspace:null,
	
	initialize: function(prefix, num, Title, Cont) {
		if($(this._prefix +'_container' + this._num)) return null; //no duplicate
		if(prefix) this._prefix = prefix;
		if(num) this._num = num;
		
		this._box = new Element('div', {id: this._prefix +'_supercontainer_'+this._num, 'class':"Dialog_supercontainer"});
				
		this.container = new Element('div', {id: this._prefix +'_container_' + this._num, 'class':"Dialog_container"});
		this.titlebar = new Element('div', {id: this._prefix +'_titlebar_' + this._num, 'class':"Dialog_titlebar"});		
		this.titlebarTitle = new Element('div', {id: this._prefix +'_title_' + this._num, 'class':"Dialog_title"}).update(Title);
		this.closebtn = new Element('div', {id: this._prefix +'_closebtn_' + this._num, 'class':"Dialog_closebtn"});
		this.mainspace = new Element('div', {id: this._prefix +'_mainspace_' + this._num, 'class':"Dialog_mainspace"}).update(Cont).highlight();
		
		$(document.body).insert(this._box);		
		this._box.insert(this.container);
		this.titlebar.insert({top:this.titlebarTitle, bottom:this.closebtn});
		this.container.insert({top:this.titlebar, bottom:this.mainspace});
		
		Event.observe(this.closebtn,'click', function(ev) {			
			//var container = Event.element(ev).ancestors()[1];// $(prefix+'_container_'+num);// Event.element(ev).ancestors()[1]
			//var box = container.ancestors()[0];//$(prefix+'_supercontainer_'+num);
			//new Effect.BlindUp(container);
			//new Effect.Fade(box);
			this.hide();
		}.bind(this));
		this.hide();
	},
	show : function(cont) {		
		//if(!this._box) return;
		Element.show(this._box);
		if(cont) this.update('mainspace',cont);
		Element.show(this.container);
		//new Effect.BlindDown(this.container);
	},
	hide : function() {		
		if(!this._box) return;
		//new Effect.BlindUp(this.container);
		//new Effect.Fade(this._box);
		Element.hide(this.container);
		Element.hide(this._box);
	},
	update : function(elem,cont) {
		if(!elem) elem = 'mainspace';		
		$(this._prefix +'_'+elem+'_' + this._num).update(cont).highlight(); 
	},
	move : function(_x,_y,_option) {
		new Effect.Move(this.container, {x:_x,y:_y,mode:_option});	
	},
	setWidth: function(w) {
		if(typeof w !='number') return;
		if(w < 200) w = 200;
		Element.setStyle(this.container,{'width':w+'px'});
		//$(this.container).setStyle({'width':w+'px'})
	},
	setPosition: function(x, y) {
		if(!x || x < 0) x = 0;
		if(!y || y < 0) y = 0;
		maxX = Element.getWidth(document.body);
		maxY = Element.getHeight(document.body);
		var w = Element.getWidth(this.container), h = Element.getHeight(this.container);
		
		if(x+w > maxX) x = maxX - w;
		if(y+h > maxY) y = maxY - h;
		
		Element.setStyle(this.container,{'left':x+'px','top':y+'px'});
	}
	
	
});

//=====================
// xml과 관련된 공통 합수
//=====================
function getXmlFromText(src) {
	var xmlDoc;
	if(window.ActiveXObject) {
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");xmlDoc.async = false;xmlDoc.loadXML(src);  
	} 	else //---- if mozilla
	{
		xmlDoc = new DOMParser().parseFromString(src, 'text/xml');
	}
	
	return xmlDoc;
}

function getXmlFirstChild(parent, tag) {
	var v = '';
	try {
		v = parent.getElementsByTagName(tag)[0].firstChild.nodeValue;		
	} catch(e) {
			
	}
	return v
	//return parent.getElementsByTagName(tag)[0].text;
}

function getXmlList(parent, tag) {
	var l = null;
	try {
		l= parent.getElementsByTagName(tag);
	} catch(e) {
	}
	return l;
}