YAHOO.namespace("KR.util");
YAHOO.namespace("KR.widget");

var debug = function(){
  // check browser has console
  if(typeof console != 'undefined' && typeof console.log != 'undefined'){
    console['info'](arguments); // call Firebug's console
  }
};

//=== IE에서 FLASH,OBJECT 등 클릭없이 표현하기
function viewObj(ftype,width,height,src)
{ 
  if(ftype=='flash')
  {
	  document.writeln("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0\" width=\"" + width + "\" height=\"" + height + "\">"); 
	  document.writeln("<param name=\"movie\" value=\"" + src + "\">"); 
	  document.writeln("<param name=\"quality\" value=\"high\" />");     
	  document.writeln("<param name=\"wmode\" value=\"transparent\">"); 
	  document.writeln("<embed src=\"" + src + "\" quality=\"high\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" width=\"" + width + "\"  height=\"" + height + "\">"); 
	  document.writeln("</object>");  
  }
} 

//=== change img
imgChg = function (obj,iover,iout,ntype)
{
	if(typeof(obj) == 'string') {
		obj = document.getElementById(obj);
	}
	
	if(ntype == 'on')
	{
		obj.src = iover;
	}
	else
	{
		obj.src = iout;
	}
};

//=== 접속자 체크
clientInfo = function() {
	var ua = navigator.userAgent.toLowerCase();
	var uinfo = {};
	var isBrowser, isOS;
	
	//=== 브라우저 타입 구별하기
	if(ua.indexOf('msie') > -1) 
	{
		if(ua.indexOf('msie 7.0') > -1) {
			isBrowser = "MSIE 7.0";
		}else if(ua.indexOf('msie 6.0') > -1) {
			isBrowser = "MSIE 6.0";
		}else if(ua.indexOf('msie 5.5') > -1) {
			isBrowser = "MSIE 5.5";
		}else{
			isBrowser = "MSIE";
		}
	}
	else if(ua.indexOf('firefox') > -1)
	{
		if(ua.indexOf('firefox/2.0') > -1) {
			isBrowser = "FireFox 2.0";
		}else if(ua.indexOf('firefox/1.5') > -1) {
			isBrowser = "FireFox 1.5";
		}else if(ua.indexOf('firefox/3.0') > -1) {
			isBrowser = "FireFox 3.0";
		}else{
			isBrowser = "FireFox";
		}
	}
	else if(ua.indexOf('safari') > -1)
	{
		isBrowser = "Safari";
	}
	else if(ua.indexOf('opera') > -1)
	{
		isBrowser = "Opera";
	}
	else
	{
		isBrowser = "ETC";
	}
	uinfo.b = isBrowser;
	
	//=== OS 정보 구하기
	if((ua.indexOf('windows xp') > -1) || (ua.indexOf('windows nt 5.1') > -1))
	{
		isOS = "Windows XP";
	}
	else if(ua.indexOf('windows 98') > -1)
	{
		isOS = "Windows 98";
	}
	else if(ua.indexOf('windows nt 5.0') > -1)
	{
		isOS = "Windows 2000";
	}
	else if(ua.indexOf('linux') > -1)
	{
		isOS = "Linux";
	}
	else if(ua.indexOf('windows nt 5.2') > -1)
	{
		isOS = "Windows 2003";
	}
	else
	{
		isOS = "기타";
	}
	uinfo.o = isOS;
	
	//=== 해상도 가져오기
	//var nScrWidth = YAHOO.util.Dom.getViewportWidth();
    //var nScrHeight = YAHOO.util.Dom.getViewportHeight();
	var nScrWidth = screen.width;
	var nScrHeight = screen.height;
	uinfo.s = nScrWidth+"*"+nScrHeight;		
	return uinfo;
	
};


//=== layer toggle show/hide
function showhide(oID,tp){
	var tp = tp || "";   
	var aID = document.getElementById(oID);
	
	
if(tp != '')
	{alert(YAHOO.util.Dom.getStyle(aID,'display'));
		YAHOO.util.Dom.setStyle(aID,'display',tp);
	}
	else
	{
		
		if(YAHOO.util.Dom.getStyle(aID,'display') == 'none')
		{
			YAHOO.util.Dom.setStyle(aID,'display','block');
		}
		else
		{
			YAHOO.util.Dom.setStyle(aID,'display','none');
		}
	}
}

//=== iframe height auto reSize
function reSize(obj)
{
	if(obj.src != 'about:blank;'){
		var objBody=obj.contentWindow.document.body;
		var ifrmHeight=objBody.scrollHeight;
		YAHOO.util.Dom.setStyle(obj,'height',ifrmHeight+'px');
	}	
		ckTime=function()
		{
			reSize(obj);
		};
		setTimeout(ckTime,300);
};

//=== cookie
setCookie = function(cookieName, cookieValue, expires, path, domain, secure)   
{   
		 if(expires)
		 {
			var todayDate = new Date();
			todayDate.setDate( todayDate.getDate() + expires );
		 }
		 if(!path) { path = "/"; }
		 if(!domain) { domain = ".koshoma.com"; }
		
		document.cookie = escape(cookieName) + '=' + escape(cookieValue)   
                     + (expires ? '; EXPIRES=' + todayDate.toGMTString() : '')   
                     + (path ? '; PATH=' + path : '')   
                     + (domain ? '; DOMAIN=' + domain : '')   
                     + (secure ? '; SECURE' : '');   
};  

getCookie = function(cookieName)
{
	var cookieValue = null;
	var posName = document.cookie.indexOf(escape(cookieName) + '=');
	if (posName != -1)
	{
		var posValue = posName + (escape(cookieName) + '=').length;
		var endPos = document.cookie.indexOf(';', posValue);

		if (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue,endPos));
		else cookieValue = unescape(document.cookie.substring(posValue));
	}
	return cookieValue;
};


//=== 해당 layer를 닫는다. : 사이트 팝업
layerClose = function(ln){
	document.getElementById(ln).style.display="none";
};

//=== 한번 열린 layer는 다시 열리지 않게 셋팅한다. : 사이트 팝업
naverOpen = function(id){
	if (document.getElementById('layer_'+id).checked == true )
	{
		var todayDate = new Date();
		var tmrDate = new Date(todayDate.getYear(),todayDate.getMonth(),todayDate.getDate()+1); 
		document.cookie = id + '=done; EXPIRES=' + tmrDate.toGMTString()+ '; PATH=/; DOMAIN=.koshoma.com'  ; 
		//setCookie(id, 'done','1'); 
        layerClose(id); 
	}
};

//=== 사이트 팝업을 Layer로 띄운다.
openPopup=function( pId, pLeft, pWidth, pHeight, pTitle)
{
	var obj = document.createElement('div') ;
	pWidth = parseInt(pWidth);
	obj.setAttribute('id','pop_'+pId);
	YAHOO.util.Dom.setStyle(obj,'position','absolute');
	YAHOO.util.Dom.setStyle(obj,'zIndex','10000');
	YAHOO.util.Dom.setStyle(obj,'padding','0px');
	YAHOO.util.Dom.setStyle(obj,'top','30px');
	YAHOO.util.Dom.setStyle(obj,'left',pLeft+'px');
	YAHOO.util.Dom.setStyle(obj,'width',pWidth+'px');
	obj.innerHTML = "<table><tr><td style='width:5px;height:30px;'><img src='../i/popup_tleft.gif' style='display:block;width:5px;'></td><td style='width:"+pWidth+"px;background:url(../i/popup_tcenter.gif) 0 0 repeat-x;'><span style='width:50%;float:left;margin-left:5px;margin-top:6px;'><strong>"+pTitle+"</strong></span><span style='float:right;width:10px;margin-right:10px;'><a href=\"###\" onClick=\"layerClose('pop_"+pId+"')\" class=\"pop\"><img src='../i/popup_x.gif' style='display:block;'></a></span></td><td style='width:6px;'><img src='../i/popup_tright.gif' style='display:block;'></td></tr><tr><td colspan='3' style='border-left:1px solid #797979;border-bottom:1px solid #797979;border-right:1px solid #797979;background:#fff;'><div style='border:1px solid #fff;'><div style='border:1px solid #AAA;'><iframe src='../lib/event.php?uid="+pId+"' width='"+pWidth+"' height='"+pHeight+"' name='pop_"+pId+"'  frameborder=0 scrolling=no marginwidth=0 marginheight=0 leftmargin=0 topmargin=0></iframe><p style=text-align:right;margin-top:5px;padding-right:6px;> <input type=\"checkbox\" id='layer_pop_"+pId+"' OnClick=\"naverOpen('pop_"+pId+"')\"><label for='layer_pop_"+pId+"'><img src=/img/neveropen.gif></label> </p></div></div></td></tr></table>";
	document.getElementById('doc').appendChild(obj);
};

//=== 브라우저 타입 선별하기
function getNavigatorType() {
	if ( navigator.appName == "Microsoft Internet Explorer" )
	{
		return 1;  
	}
	else if ( navigator.appName == "Netscape" )
	{
		return 2;	
	}
	else 
	{
		return 0;
	}
}

//===바이트 체크
function updateChar(length_limit){
	var comment='';
	var frm = document.WriteForm;
	 comment = document.getElementById("sim_com");

	var length = calculate_msglen(comment.value);

	document.getElementById("textlimit").innerHTML = length;

	if (length > length_limit) {
		alert("최대 " + length_limit + "byte이므로 초과된 글자수는 자동으로 삭제됩니다.");
		comment.value = comment.value.replace(/\r\n$/, "");
		comment.value = assert_msglen(comment.value, length_limit);
	}
}      

//바이트계산 함수 
function calculate_msglen(msg){
	var nbytes = 0;

	for (i=0; i<msg.length; i++) {
		var ch = msg.charAt(i);
		if(escape(ch).length > 4) {
			nbytes += 2;
		} else if (ch == '\n') {
			if (msg.charAt(i-1) != '\r') {
				nbytes += 1;
			}
		} else if (ch == '<' || ch == '>') {
			nbytes += 4;
		} else {
			nbytes += 1;
		}
	 }
	return nbytes;
}

//초과한 바이트에 해당하는 문자열 정리 함수 
function assert_msglen(message, maximum){
	var inc = 0;
	var nbytes = 0;
	var msg = "";
	var msglen = message.length;

	for (i=0; i<msglen; i++) {
		var ch = message.charAt(i);
		if (escape(ch).length > 4) {
			inc = 2;
		} else if (ch == '\n') {
			if (message.charAt(i-1) != '\r') {
				inc = 1;
			}
		} else if (ch == '<' || ch == '>') {
			inc = 4;
		} else {
			inc = 1;
		}
		if ((nbytes + inc) > maximum) {
			break;
		}
		nbytes += inc;
		msg += ch;
	}
	return msg;
}

//===확장자 체크
function ck_file(obj) {
	var f_len= obj.value.length; 
	var f_ext =eval(f_len)-3;
	var v_exte = ""; 

	// 파일명 검사 
	v_exte = obj.value.substring(f_ext, f_len).toUpperCase();     

	var compStr = new Array("GIF","JPG","BMP","PNG"); 

	k=0;
	for( i=0; i<compStr.length; i++) { 
		if ( compStr[i] == v_exte) { 
			k=0;
			break; 
		}else{ 
			k++;
		} 
	} 
	if(k>0){
		alert("올바른 파일 종류가 아닙니다.");
		obj.select(); 
		return; 
	}
}   

//=== 웹에디터 버튼 이미지 교체
function na_restore_img_src(name, nsdoc)
{
  var img = eval((navigator.appName.indexOf('Netscape', 0) != -1) ? nsdoc+'.'+name : 'document.all.'+name);
  if (name === '')
  {
	  return;
  }
  if (img && img.altsrc) {
    img.src    = img.altsrc;
    img.altsrc = null;
  } 
}

function na_change_img_src(name, nsdoc, rpath, preload)
{ 
  var img = eval((navigator.appName.indexOf('Netscape', 0) != -1) ? nsdoc+'.'+name : 'document.all.'+name);
  if (name === '')
  {
	  return;
  }
  if (img) {
    img.altsrc = img.src;
    img.src    = rpath;
  } 
}

//===허용된 문자만을 체크하는 함수
function checknum(val,exe){
	var comp="0123456789"+exe;
	var Len = val.value.length;
	for(i=0;i<Len;i++){
		if(comp.indexOf(val.value.substring(i,i+1))<0){
			alert("허용된 문자가 아닙니다. 다시 입력해 주십시오");
			val.value="";
			val.focus();
			return;
		}
	}
}
 
//=== input box 의 값을 제거하고 focus를 이동시킨다.
clean_word = function(sel){
	sel.value="";
	sel.focus();
	return;
};

//=== 통합검색의 검색어를 체크하고 submit() 한다.
ckSearch=function()
{
	var fr = document.getElementById('srch_form');
	if(document.getElementById('s_word').value==='')
	{
		alert('검색어를 입력해 주세요.^^*');
		return false;
	}
	fr.submit();
};

//=== 팝업 띄우기
popup = function (check,page,name,w,h,scroll){
	var win=null;
	var winl=(screen.width-w)/2;
	var wint=(screen.height-h)/3;
	var settings='';

	if(check=='modal')
	{
		settings='dialogHeight: '+h+'px;';
		settings+='dialogWidth: '+w+'px;';
		settings+='dialogTop: '+wint+'px;';
		settings+='dialogLeft: '+winl+'px;';
		settings+='scrollbars: '+scroll+';';
		settings+='resizable: no;';
		settings+='status: no; help: no';
		showModalDialog(page,name,settings);
	}
	else
	{
		settings='height='+h+',';
		settings+='width='+w+',';
		settings+='top='+wint+',';
		settings+='left='+winl+',';
		settings+='scrollbars='+scroll+',';
		settings+='resizable=no,';
		settings+='status=no';
		win=window.open(page,name,settings);
		
		if(parseInt(navigator.appVersion)>=4) win.window.focus();
	}
};

//=== Change to Tab menu and contents layer
YAHOO.util.chgTabBtn = function( psAttr, psTabType ) 
{
	if ( psAttr && psTabType )
	{
		this.init( psAttr, psTabType ) ;
	}
};

YAHOO.util.chgTabBtn.prototype =
{
	YUD:YAHOO.util.Dom,
	sTabType : null,
	sAttrType : null, 
	sOnClass : null,
	sLeftClass : null,
	sRightClass : null,
	sOffClass : null,
	oTarget : null,
	oOldTarget : null,
	oOldLayer : null,
	oCurLayer : null,
	aBtnSet : null,
	aAttrVal : null,
	onChange : null,
	
	evtAct:function ( e, THIS )
	{
		var oEvtTarget = YAHOO.util.Event.getTarget ( e ) ;		
		var sAttrVal = oEvtTarget.getAttribute ( THIS.sAttrType );
		
		if ( sAttrVal )
		{
			THIS.aAttrVal = sAttrVal.split('|') ;			
			THIS.oTarget = document.getElementById ( THIS.aAttrVal[0] ) ;
			THIS.oCurLayer = document.getElementById ( THIS.aAttrVal[1] ) ;
			
			if ( THIS.oTarget && THIS.oCurLayer )
			{
				THIS.setElement ( THIS.sTabType ) ;
			}
		}
		return false ;
	},
	
	setElement:function ( psTabType )
	{
		switch ( psTabType )
		{
			case 'CLASS' :
				this.chgBtnStyle ( this.oTarget, this.oOldTarget ) ;				
			break;
			
			case 'IMAGE' :
				this.chgBtnImage ( this.oTarget, this.oOldTarget ) ;
			break;
		}

		this.showContents ( this.oCurLayer, this.oOldLayer ) ;
		this.oOldLayer = this.oCurLayer ;
		this.oOldTarget = this.oTarget ;
	},
	
	showContents:function ( pCurNode, pOldNode )
	{
		if ( pOldNode )
		{			
			this.YUD.setStyle ( pOldNode, 'display', 'none' ) ;
		}
		this.YUD.setStyle ( pCurNode, 'display', 'block' ) ;

		if ( typeof this.onChange == 'function' )
		{
			this.onChange( this.aAttrVal ) ;
		}
	},
	
	chgBtnStyle:function ( pCurNode, pOldNode )
	{
		var i, max = this.aBtnSet.length - 1 ;
				
		for ( i = max ; i >= 0 ; i -- )
		{			
			if ( this.aBtnSet[i] == pOldNode )
			{
				this.setStyle ( i, false ) ;
			}			
			if ( this.aBtnSet[i] == pCurNode )
			{
				this.setStyle ( i, true ) ;
			}			
		}
	},
	
	setStyle:function ( pnIdx, pbIsActive )
	{
		if ( pbIsActive )
		{	
			this.controlClass ( this.aBtnSet[pnIdx], this.sOffClass, this.sOnClass ) ;
			if ( pnIdx !== 0 )
			{
				this.YUD.addClass ( this.aBtnSet[pnIdx-1], this.sLeftClass ) ;
			}		
			if ( pnIdx != this.aBtnSet.length - 1 )
			{
				this.YUD.addClass ( this.aBtnSet[pnIdx+1], this.sRightClass ) ;		
			}
		}
		else
		{
			this.controlClass ( this.aBtnSet[pnIdx], this.sOnClass, this.sOffClass ) ;		
			if ( pnIdx !== 0 )
			{
				if ( this.sLeftClass.length )
				{
					this.YUD.removeClass ( this.aBtnSet[pnIdx-1], this.sLeftClass ) ;
				}			
			}		
			if ( pnIdx != this.aBtnSet.length - 1 )
			{
				if ( this.sRightClass.length )
				{
					this.YUD.removeClass ( this.aBtnSet[pnIdx+1], this.sRightClass ) ;
				}		
			}
		}
	},
	
	initClass:function ( poNode )
	{
		var i, max = arguments.length ;
		
		for ( i = max ; i > 0 ; i -- )
		{
			this.YUD.removeClass ( poNode, arguments[i] ) ;
		}	
	},
	
	chgBtnImage:function ( pCurNode, pOldNode )
	{
		if ( pOldNode )
		{
			pOldNode.src = this.fetchImgSrc ( pOldNode.src, this.sOffPostFix, this.sOnPostFix ) ;
		}
		pCurNode.src = this.fetchImgSrc ( pCurNode.src, this.sOnPostFix, this.sOffPostFix ) ;
	},
	
	fetchImgSrc:function ( src, psAdd, psDel )
	{
		var prefix, ext ;
		
		prefix = src.substring ( 0, src.lastIndexOf ( "." ) - psDel.length ) ;
		ext = src.substring ( src.lastIndexOf ( "." ) ) ;
				
		return prefix + psAdd + ext ;
	},
	
	setEvtHandler:function ( psID, psTagName, psType )
	{
		this.oEvtRegion = document.getElementById ( psID ) ;
		
		if ( this.oEvtRegion )
		{
			this.aBtnSet = this.oEvtRegion.getElementsByTagName ( psTagName ) ;
			YAHOO.util.Event.addListener ( psID, psType, this.evtAct, this ) ;		
		}
	},
	
	setBtnClassName:function ( psOn, psOff, psLeft, psRight )
	{
		this.sOnClass = psOn ;
		this.sOffClass = psOff ;
		this.sLeftClass = psLeft ;
		this.sRightClass = psRight ;
	},
		
	setBtnImageName:function ( psOn, psOff )
	{
		this.sOnPostFix = psOn ;
		this.sOffPostFix = psOff ;
	},
	
	controlClass:function ( poNode, psRmClass, psAddClass )
	{
		if ( psRmClass.length )
		{
			this.YUD.removeClass ( poNode, psRmClass ) ;
		}
		
		this.YUD.addClass ( poNode, psAddClass ) ;
	},
		
	setTabActivate:function ( psTargetID, psLayerID )
	{		
		this.oOldTarget = document.getElementById ( psTargetID ) ;
		this.oOldLayer = document.getElementById ( psLayerID ) ;
	},
	
	init:function( psAttr, psTabType )
	{
		this.sAttrType = psAttr ;
		this.sTabType = psTabType.toUpperCase() ;
	}
};



//=== 체크박스 이미지로 사용하기
function imgCbox(N, tabstop)
{
        var objs, cboxes, Img, Span, A;

        objs = document.getElementsByTagName("INPUT");
        if (N == undefined) return false;
        if (tabstop == undefined) tabstop = true;

        for (var i=0; i < objs.length; i++) {
                if (objs[i].type != "checkbox" || objs[i].name != N) continue;
                
                if (imgCbox.Objs[N] == undefined) {
                        imgCbox.Objs[N] = [];
                        imgCbox.Imgs[N] = [];
                        imgCbox.ImgObjs[N] = [];
                }
                
                var len = imgCbox.Objs[N].length;
                imgCbox.Objs[N][len] = objs[i];
                imgCbox.Imgs[N][len] = {};

                // for image cache
                (Img = new Image()).src = objs[i].getAttribute("onsrc");
                imgCbox.Imgs[N][len]["on"] = Img;

                (Img = new Image()).src = objs[i].getAttribute("offsrc");
                imgCbox.Imgs[N][len]["off"] = Img;

                // image element
                Img = document.createElement("IMG");
                Img.src = objs[i].checked?objs[i].getAttribute("onsrc"):objs[i].getAttribute("offsrc");
                Img.style.borderWidth = "0px";
                Img.onclick = new Function("imgCbox.onclick('"+N+"','"+len+"')");
                imgCbox.ImgObjs[N][len] = Img;

                // anchor element for tab stop
                A = document.createElement("A");
                if (tabstop) {
                        A.href = "javascript:;";
                        A.onkeypress = new Function("evt", "if(evt==undefined)evt=event;if(evt.keyCode==32||evt.keyCode==0){ imgCbox.onclick('"+N+"','"+len+"'); }");
                }
                A.style.borderWidth = "0px";
                A.appendChild(Img);

                // insert object
                Span = objs[i].parentNode;
                Span.style.display = "none";
                Span.parentNode.insertBefore(A, Span);
        }
}
imgCbox.onclick = function(N, idx) {
        var C = imgCbox.Objs[N][idx];
        var I = imgCbox.ImgObjs[N][idx];

        C.checked = !C.checked;
        I.src = imgCbox.Imgs[N][idx][C.checked?"on":"off"].src;
        
        // fire event
        if (C.onclick != undefined || C.onclick != null) C.onclick();
}
imgCbox.Objs = {};
imgCbox.Imgs = {};
imgCbox.ImgObjs = {};

//=== 배송조회
function chk_deliver(dCom,dNum){
	var dUrl = new Array();
	dUrl['우체국'] = "http://service.epost.go.kr/trace.RetrieveRegiPrclDeliv.postal?sid1=";
	dUrl['CJ 택배'] = "https://cjhth.com/homepage/searchTraceGoods/SearchTraceDtdShtno.jhtml?dtdShtno=";
	dUrl['로젠택배'] = "http://d2d.ilogen.com/d2d/delivery/invoice_search_popup.jsp?viewType=type1&invoiceNum=";
	dUrl['한진택배'] = "http://www.hanjinexpress.hanjin.net/customer/plsql/hddcw08.result?b_num=";
	dUrl['훼미리택배'] = "http://www.e-family.co.kr/member/delivery_search_view.jsp?item_no=";
	dUrl['대한통운'] = "https://www.doortodoor.co.kr/servlets/cmnChnnel?invc_no=";
	dUrl['삼성택배'] = "http://cjhth.com/homepage/searchTraceGoods/SearchTraceDtdShtno.jhtml?dtdShtno=";
	dUrl['현대택배'] = "http://www.hydex.net/ehydex/jsp/home/distribution/tracking/tracingView.jsp?InvNo=";
	dUrl['옐로우캡'] = "http://www.yellowcap.co.kr/branch/chase/listbody.html?a_gb=branch&a_cd=5&a_item=0&f_slipno=";
	dUrl['아주택배'] = "http://www.ajulogis.co.kr/common/asp/search_history_proc.asp?svr_url=http://www.ajulogis.co.kr&gubun=1&sheetno=";


	if(dCom == '삼성택배' || dCom == '우체국택배') { dNum = dNum.replace(/\-/gi,""); }
	window.open(dUrl[dCom]+dNum);
	//popup('',dUrl[dCom]+dNum,"trace1",600,500,'1');
}
//=== login check
function bizfun_login()
{
    frm = document.getElementById('login');
	if (frm.cp_id.value == "") {
		alert("아이디를 입력하세요");
		frm.cp_id.focus();
		return;
	}
	if (frm.cp_pw.value == "") {
		alert("비밀번호를 입력하세요");
		frm.cp_pw.focus();
		return;
	}
    frm.submit();
}

//=== recommand ID
function ck_rid() {
	var vRid = document.getElementById('recom_id').value;
	if(vRid=='') {
		alert('推薦人IDを入力してください。\n\n　推薦人がいなければ入力しなくてもいいです。');
	}else{
		var url="../lib/ajax_ckrid.php?ckid="+vRid;
		YUA.setValue("sMethod","GET");
		YUA.setValue("sFormat","TEXT");
		YUA.setValue("sDivName","");
		YUA.setValue("bSynced",true);
		YUA.setValue("bCache",false);
		//YUA.setValue("bDebug",true);
		
		var rst = YUA.mRequest(url);

		if(rst == 'ok') {
			document.getElementById('ckRid').value = 1;
			alert('推薦人のIDが確認されました。');
		}else if(rst == 'no'){
			alert('入力されたIDの会員が存在していません。\n\n確認後、もう一度入力してください。');
			document.getElementById('recom_id').value='';
		}else{
			alert('問題が生じました。\n\n管理者までメールをお送りください。\n\nhelp@koshoma.com');
		}
	}
}
//=== checkbox를 toggle 처리한다.
all_ckbox = function(obj,ele){
	var frm=obj.form.name;
	var form="document."+frm;
	var chkBox=eval(form).elements[ele];
	if(chkBox===undefined) { return; }
	var chkLen=chkBox.length;
	if(chkLen===undefined)
	{
		if(obj.checked===true){
			if(chkBox.disabled===false){
				chkBox.checked=true;
			}
		}
		else
		{
			chkBox.checked=false;
		}
	}
	else
	{
		if(obj.checked===true)
		{
			for(i=0;i<chkLen;i++)
			{
				if(chkBox[i].disabled===false)
				{
					chkBox[i].checked=true;
				}
			}
		}
		else
		{
			for(i=0;i<chkLen;i++)
			{
				chkBox[i].checked=false;
			}
		}
	}
};

//=== comma for number
comma = function (num) {
	var sNum="";
	var num=String(num);
	for(index=num.length-1;index>=0;index--){
		splitchar=num.charAt(index);
		sNum=splitchar+sNum;
		if(index%3==num.length%3&&index!=0){ sNum=','+sNum; }
	}
	return sNum;
};

//=== 숫자만 입력하기
function CheckNum(num)
{
	if(isNaN(num.value)){
		alert('숫자만 입력하세요.');
		num.value = "";
		num.focus();
		num.select();
		return;
	}
}

//=== go to next form
goNext = function (val,len,fn)
{
	if(val.length >= len)
	{
		document.getElementById(fn).focus();
	}
};


//=== /admin/order_admin.php
function edit_order(){
	var check_confirm = confirm("정말 저장하시겠습니까?");
	document.order_admin.mode.value = "edit";
	
	if(check_confirm == true){
		document.order_admin.submit();
	}
}

function delete_order(){
	var check_confirm=confirm("정말 삭제하시겠습니까?");
	document.order_admin.mode.value="del";
	if(check_confirm==true){
		document.order_admin.submit();
	}
}


//=== board report check
ckReport = function(bname,bid,mid,title){
	var url="../lib/ajax_ckreport.php?bname="+bname+"&bid="+bid+"&mid="+mid+"&t="+title;
	YUA.setValue("sMethod","GET");
	YUA.setValue("sFormat","TEXT");
	YUA.setValue("sDivName","");
	YUA.setValue("bSynced",true);
	YUA.setValue("bCache",false);
	//YUA.setValue("bDebug",true);
	
	var rst = YUA.mRequest(url);

	if(rst == 'ok') {
		alert('신고 되었습니다.');
	}else if(rst == 'no'){
		alert('이미 신고 되었습니다.');
	}else{
		alert('글 신고 기능에 문제가 발생하였습니다.\n관리자에게 연락해 주세요.');
	}
};

function print_order(){
	var check_confirm=confirm("정말 프린트 하시겠습니까?");
	if(check_confirm==true){
		var winPrint=popup1('','','wPrint',800,600,'1');
		document.order_admin.target="wPrint";
		document.order_admin.action="order_admin_print.php";
		document.order_admin.submit();
		document.order_admin.target="h_frame";
		document.order_admin.action="order_admin_ok.php"
		;
	}
};

function down_order(n,e){
	var check_confirm=confirm("정말 다운로드 하시겠습니까?");
	if(check_confirm==true){
		document.getElementById('h_frame').src="order_admin_excel.php?nday="+n+"&eday="+e;
	}
};

function down_orders(t,d){
	if(t == 'R_DATE' || t == 'G_DATE') {
		if(d!='') {
			if(!isNaN(d)){
				if(d.length == 8) {
					if(confirm("정말 다운로드 하시겠습니까?")){
						document.getElementById('h_frame').src="order_admin_excels.php?t="+t+"&d="+d;
					}
				}else{
					alert('날짜를 정확히 입력해 주세요.');
				}
			}else{
				alert('숫자만 입력해 주세요');
			}
		}else{
			alert('날짜를 입력해 주세요');
		}
	}else{
		alert('입금예정일 또는 정산일을 선택해 주세요');
	}
};


function down_cul(pType,pCdtn,pId){
	var obj = document.getElementById(pId);
	if(obj.sday.value!='' && obj.eday.value!='') {
		if(!isNaN(obj.sday.value.replace(/\-/gi,"")) && !isNaN(obj.eday.value.replace(/\-/gi,""))){
			if(obj.sday.value.replace(/\-/gi,"").length == 8 && obj.eday.value.replace(/\-/gi,"").length == 8) {
				if(confirm("정말 다운로드 하시겠습니까?")){
					//window.open("order_admin_dn.php?t="+pType+"&c="+pCdtn+"&s="+obj.sday.value.replace(/\-/gi,"")+"&e="+obj.eday.value.replace(/\-/gi,""));
					document.getElementById('h_frame').src="order_admin_dn.php?t="+pType+"&c="+pCdtn+"&s="+obj.sday.value.replace(/\-/gi,"")+"&e="+obj.eday.value.replace(/\-/gi,"");
				}
			}else{
				alert('날짜를 정확히 입력해 주세요.');
			}
		}else{
			alert('숫자만 입력해 주세요');
		}
	}else{
		alert('날짜를 입력해 주세요.');
	}
};

function down_bill(){
	var check_confirm=confirm("정말 다운로드 하시겠습니까?");
	if(check_confirm==true){
		document.order_admin.action="order_admin_bill.php";
		document.order_admin.submit();
	}
};

function edit_line(obj){
	var chkBox1=document.order_admin.elements['ckBox[]'];
	if(chkBox1.length==undefined){
		chkBox1.checked=true;
	}else{
		chkBox1[obj].checked=true;
	}
};

//=== Admin select category : view_cate.php
function findCate(sel,target) {
	var trigger = sel.options[sel.selectedIndex].value;
	var form = sel.form.name;
	
	dynamic.src = "loadData.php?form=" + form + "&trigger=" + trigger + "&target=" + target;
	if(trigger == ""){
		document.forms['input_cate'].elements['sub2_cate'].length =1;
		document.forms['input_cate'].elements['sub2_cate'].options[0].text = "자료없음";
		document.forms['input_cate'].elements['sub2_cate'].options[0].value = '';
	}
}

//=== Admin delete for checkbox line : view_cate.php
function rowdel() {
	var chkBox = document.edit_cate.elements['ckBNum[]'];
	var chkLen = chkBox.length;

	if(chkLen == undefined) {
		if(chkBox.checked == true) {
			var form = document.edit_cate;
			form.mode.value = 'del_cate';
			form.submit();
		}else{
			alert('삭제하실 항목을 체크해 주세요.');
			return false;
		}
	}else{
		var cnt=0;
		for(var i=0; i < chkLen; i++){
			if(chkBox[i].checked==true){
				cnt++;
			}
		}
		if ( cnt == 0 )  { 
			alert('적어도 하나의 항목을 체크해 주셔야 합니다.');
			return false;
		}	
		
		var form = document.edit_cate;
			form.mode.value = 'del_cate';
			form.submit();
	}
}

function go_input(){

	if(document.input_cate.sub2_cate.value=="") {
		alert('항목을 적어주세요');
		document.input_cate.sub2_cate.focus();
		return false;
	}	
	
	document.input_cate.submit();
}

//=== ajax module
///// YUI Connection Manager Member Add //////////////////////////////////   
YAHOO.util.Connect.syncRequest = function(method, uri, callback, postData)   
{   
    var o = this.getConnectionObject();   
  
    if(!o){   
        return null;   
    }   
    else{   
  
        if(this._isFormSubmit){   
            //If the specified HTTP method is GET, setForm() will return an   
            //encoded string that is concatenated to the uri to   
            //create a querystring.   
            if(method == 'GET'){   
                uri += "?" +  this._sFormData;   
            }   
            else if(method == 'POST'){   
                postData =  this._sFormData;   
            }   
            this._sFormData = '';   
            this._isFormSubmit = false;   
        }   
  
        try  
        {   
            o.conn.open(method, uri, false);       
        }   
        catch (e)   
        {   
            return false;   
        }   
           
        this.handleReadyState(o, callback);   
  
        if(postData){   
            this.initHeader('Content-Type','application/x-www-form-urlencoded');   
        }   
  
        //Verify whether the transaction has any user-defined HTTP headers   
        //and set them.   
        if(this._has_http_headers){   
            this.setHeader(o);   
        }   
  
        if(postData)
        {
			try
			{
				o.conn.send(postData);
				return o.conn;
			}
			catch(e)
			{
				return false;
			}
        }
        else
        {
			try
			{
				o.conn.send(null);
				return o.conn;
			}
			catch(e)
			{
				return false;
			}
        }
    }   
};

////////////////////////////////////////////////////////////////     
YAHOO.KR.widget.AjaxManager = function(pObj)    
{    
    this.init(pObj);   
};   
  
YAHOO.KR.widget.AjaxManager.prototype =      
{   
    //bDebugMode true,false   
    bDebug : false,   
    //bReturn Direct Result;   
    bCache : true,   
    //bSynced Ajax Sync,ASync;   
    bSynced : false,   
    //nTimeout : milliSecond   
    nTimeout : 3000,      
	//sCallUrl : request url
	sCallUrl : "",
	//sParam : request parameter
	sParam : "",
	//sMethod : "GET","POST"   
    sMethod : "GET",   
    //sFormat : "TEXT","JSON","XML","OBJ"   
    sFormat : "OBJ",
    //sFormName : form name   
    sFormName : "",
	//sCharset : charset
	sCharset : "",
	//sDebugDiv : debug layer name
	sDebugDiv : "",
    //Connect object   
    oConnection : null,   
    //aCACHE : Ajax Key,Data Save in Array   
    aCACHE : {},   
    //success : sucess member function init   
    success : null,   
    //fail : fail member function int   
    fail : null,   
    //vars : global variable   
    vars : {},   
    //sErrorMsg : Error Msg define in Array   

    sErrorMsg : 
	{   
        "Err_1" : "ERROR : URL not defined"  
    },

	setValue : function(key , value)
	{
		//setting item - sCallUrl,sParam,sMethod,sDivName,sFormat,sFormName,bSynced,bCache,bUpload,bDebug
		key = key.toLowerCase();
		switch(key)
		{
			case "scallurl" : 
					this.sCallUrl = value;
					break;
			case "sparam" : 
					this.sParam = value;
					break;
			case "smethod" : 
					this.sMethod = value;
					break;
			case "sdivname" : 
					this.sDivName = value;
					break;
			case "sformat" : 
					this.sFormat = value;
					break;
			case "sformname" : 
					this.sFormName = value;
					break;
			case "bsynced" : 
					this.bSynced = value;
					break;
			case "bcache" : 
					this.bCache = value;
					break;
			case "bupload" : 
					this.bUpload = value;
					break;
			case "bdebug" : 
					this.bDebug = value;
					break;
			case "scharset" : 
					this.sCharset = value;
					break;
			default :
				    break;
		}
	},

    //toJSON : format change - string to json   
    toJSON : function (pData)       
    {
        try       
        {      
            return eval('(' + pData + ')');      
        }       
        catch (e)       
        {      
            return false;      
        }      
    },      
  
    //parseURL : url , parameter , CACHE key define in Array   
    parseURL : function(pUrl,pParam,pMethod,pFormName)      
    {   
        var THIS = this;   
        var nParam = pUrl.indexOf("?");      
        var aUrlParse = [];      
  
        if(pMethod.toUpperCase() == "POST")   
        {   
            if(nParam < 0 || pFormName)
            {      
                aUrlParse['URL'] = pUrl;      
                aUrlParse['PARAM'] = pParam;   
            }      
            else     
            {      
                aUrlParse['URL'] = pUrl.substring(0,nParam);      
                aUrlParse['PARAM'] = pUrl.substring(nParam + 1);      
            }      
            aUrlParse['KEY'] = "key_" + aUrlParse['URL'] + "?" + aUrlParse['PARAM'];   
            aUrlParse['METHOD'] = "POST";   
        }   
        else  
        {   
            aUrlParse['PARAM'] = null;      
            if(nParam < 0 && pParam !== "")      
            {      
                aUrlParse['URL'] = pUrl + "?" + pParam;      
            }   
            else if(pParam !== "")   
            {   
                aUrlParse['URL'] = pUrl + "&" + pParam;    
            }   
            else     
            {      
                aUrlParse['URL'] = pUrl;      
            }   
            aUrlParse['KEY'] = "key_" + aUrlParse['URL'];   
            aUrlParse['METHOD'] = "GET";   
        }   
  
        //return URL and POST DATA   
        return aUrlParse;      
    },      

	mReplaces : function(pString,a,b)
	{
		try
		{
			return String(pString).replace(eval("/" + a + "/g"),b);
		}
		catch(e)
		{
			return false;
		}
	},

    //mSupplant : template key,value mapping    
    mSupplant : function(pTemplates,pData)       
    {       
        if(pTemplates && pData)      
        {      
            var oReplace = function (sVar, sKey)      
            {        
                var sValue = pData[sKey];      
     
                if(typeof(sValue) == 'string')
				{
					return sValue;
				}
                else
				{
					return sKey;      
				}
            };      
      
             return pTemplates.replace( /{([^{}]*)}/g , oReplace );       
         }      
     },      
      
     //mSetHtml : templates generate   
	mSetHtml : function(pData,pTemplates,pDiv)      
	{     
		if(!pData) { return ""; }
  
		if(!pTemplates)      
		{      
			if(pDiv && typeof(document.getElementById(pDiv)) == "object")
			{
				document.getElementById(pDiv).innerHTML = pData;      
			}
			else
			{
				return pData;      
			}
		}      
		else     
		{      
			var sAllData = "";      
			var nDataLen = pData.length || 0;   
			if(nDataLen > 0)   
			{   
				for(i = 0; i < nDataLen ; i++)      
				{      
					sAllData += this.mSupplant(pTemplates,pData[i]);      
				}      
			}   
			else  
			{   
				sAllData = this.mSupplant(pTemplates,pData);      
			}   
			return sAllData;      
		}      
	},      
  
	//mCallText : realData check   
    mCallText : function(pObj)       
    {   
        var sData;   
  
        if(typeof(pObj) == "string")   
        {   
            sData = pObj;   
        }   
        else if(typeof(pObj) == "object" && typeof(pObj.responseText) == "string")      
        {   
            sData = pObj.responseText;   
        }      
        else     
        {      
            return "";      
        }      
  
        var nDataLen = sData.lastIndexOf("<!--");      
        return ( nDataLen >= 0) ? sData.substring(0,nDataLen) : sData ;      
    },   
  
    mData : function(pObj,pFormat)   
    {   
  
        var THIS = this;   
        var sFormat = pFormat.toUpperCase();   
        if(sFormat == "TEXT")   
        {   
            return THIS.mCallText(pObj.responseText);   
        }   
        else if(sFormat == "JSON")   
        {   
            return THIS.toJSON(THIS.mCallText(pObj.responseText));   
        }   
        else if(sFormat == "XML")   
        {   
            return pObj.responseXML;   
        }   
        else  
        {   
            return pObj;   
        }   
    },   
  
     mHandleSuccess : function(pObj)       
     {      
        var THIS = this;   
  
        if(pObj.argument.bCache && THIS.aCACHE[ pObj.argument.sCACHE_KEY ]) { return; }
  
        var sDiv = pObj.argument.sDivName || null;      
        var sFormat = pObj.argument.sFormat || THIS.vars.sFormat || THIS.sFormat;   
  
        if(!pObj.argument.bSynced && THIS.bDebug)   
        {   
            var sTitle = "DATA info";   
            var sDescription = "";   
            sDescription += "Header = " + pObj.getAllResponseHeaders + "\n\n";   
            sDescription += "Return Type = " + sFormat + "\n\n";   
            sDescription += "CACHE = " + pObj.argument.bCache + "\n\n";   
            sDescription += "Timeout = " + pObj.argument.sTimeout + "\n\n";   
            sDescription += "DATA = \n" + pObj.responseText + "\n\n";   
  
            THIS.mDebug(sTitle,sDescription);   
        }   
  
        var oData = THIS.mData(pObj,sFormat);   

        if(pObj.argument.bCache) 
		{
			THIS.aCACHE[ pObj.argument.sCACHE_KEY ] = oData;    
		}
  
        if(sDiv && typeof(oData) == "string" && typeof(document.getElementById(sDiv)) == "object")   
        {   
            THIS.mSetHtml(oData,null,sDiv);   
        }      
        else if(THIS.success)   
        {   
            THIS.success(oData,pObj.argument);   
        }
     },   
      
     mHandleFail : function(pObj)       
     {      
        var THIS = this;   
  
        var sFormat = pObj.argument.sFormat || THIS.vars.sFormat || THIS.sFormat;   
  
        if(THIS.bDebug)   
        {   
            var sTitle = "DATA info";   
            var sDescription = "";   
            sDescription += "Header = " + pObj.getAllResponseHeaders + "\n\n";   
            sDescription += "Return Type = " + sFormat + "\n\n";   
            sDescription += "CACHE = " + pObj.argument.bCache + "\n\n";   
            sDescription += "Timeout = " + pObj.argument.sTimeout + "\n\n";   
            sDescription += "DATA = " + pObj.responseText + "\n\n";   
  
            THIS.mDebug(sTitle,sDescription);   
        }           
  
        if(THIS.fail)
		{
			THIS.fail(pObj);   
		}
     },      
  
    mDebug : function(pTitle,pDescription)   
    {   
        var THIS = this;
		pDescription = THIS.mReplaces(pDescription,"<","&lt;");
		pDescription = THIS.mReplaces(pDescription,">","&gt;");
		pDescription = THIS.mReplaces(pDescription,"\\n","<br>");

		var oDate = new Date();
		var sDate = oDate.getYear() + "-" + oDate.getMonth() + "-" + oDate.getDate() + " " + oDate.getHours() + ":" + oDate.getMinutes() + ":" + oDate.getSeconds();

        var sMsg = "Debugging : " + pTitle + " (" + sDate + ")<br>";   
        sMsg += "######################################################################<br>";   
        sMsg += pDescription;   
        sMsg += "<br>######################################################################<br><br><br><br><br>";   
  
		try
		{
			var targetDiv = document.getElementById(THIS.sDebugDiv);
		}
		catch (e)
		{
			var targetDiv = null;
		}

		if(targetDiv === null)
		{
			var oDiv = document.createElement("div");
			oDiv.id = THIS.sDebugDiv;
			//oDiv.style.position = "absolute";
			oDiv.style.top = "0px";
			oDiv.style.left = "0px";
			oDiv.style.height = "600px";
			oDiv.style.width = "600px";
			oDiv.style.fontSize = "10px";
			oDiv.style.borderColor = "black";
			oDiv.style.borderWidth = "1px";
			oDiv.style.borderStyle = "solid";
			oDiv.style.textAlign = "left";
			oDiv.style.clear = "both";
			oDiv.style.overflow = "scroll";
			document.body.appendChild(oDiv);
		}

		document.getElementById(THIS.sDebugDiv).innerHTML += sMsg;
    },   
     mRequest : function(pCallUrl,pParam,pMethod,pDivName,pFormat,pFormName,pSynced,pCACHE,pUpload)   
     {   
        var THIS = this;
		var sFormName = pFormName || THIS.sFormName || false;

		if(sFormName)
		{
			var oForm = document.getElementById(sFormName) || document.forms[sFormName];
			var bUpload = pUpload || THIS.bUpload || false;
			YAHOO.util.Connect.setForm(sFormName,bUpload);
			var oParam = YAHOO.util.Connect._sFormData;
			var sCallUrl = oForm.action || pCallUrl || THIS.sCallUrl || ""; 
			var sParam = oParam;
			var sMethod = oForm.method || pMethod || THIS.sMethod || "GET";
		}
		else
		{
			var sCallUrl = pCallUrl || THIS.sCallUrl || "";   
			var sParam = pParam || THIS.sParam || "";   
			var sMethod = pMethod || THIS.sMethod || "GET";
		}

		var sDivName = pDivName || THIS.sDivName || "";   
		var sFormat = pFormat || THIS.sFormat;
		var sCharset = THIS.sCharset;   
		var pSynced = pSynced || THIS.bSynced;
		var pCache = pCache || THIS.bCache;
		
		var bSynced = (String(pSynced) == "true" || String(THIS.bSynced) == "true") ? true : false ;
		var bCache = (String(pCache) == "false" || String(THIS.bCache) == "false") ? false : true ;
		 
		var aUrl = THIS.parseURL(sCallUrl,sParam,sMethod,sFormName);   
		var sUrl = aUrl['URL'];   
		var sKey = aUrl['KEY'];   
		var sPostData = aUrl['PARAM'];   

        if(THIS.bDebug)   
        {   
            var sTitle = "URL info";   
            var sDescription = "";   
            sDescription += "METHOD = " + aUrl['METHOD'] + "\n\n";   
            sDescription += "URL = " + aUrl['URL'] + "\n\n";   
            sDescription += "PARAM = " + aUrl['PARAM'] + "\n\n";   
            sDescription += "CACHE KEY = " + aUrl['KEY'];   
  
            THIS.mDebug(sTitle,sDescription);   
        }   
  
         // url check      
         if(!sUrl)      
         {      
             if(sDivName && typeof(document.getElementById(sDivName)) == "object")   THIS.mSetHtml(THIS.sErrMsg1.Err_1,null,sDivName);      
             else                                                                    return THIS.sErrorMsg.Err_1;      
      
             return;      
         }      
  
		if(sCharset != "")
		{
			YAHOO.util.Connect.initHeader("Content-Type","application/x-www-form-urlencoded; charset=" + sCharset);
//			YAHOO.util.Connect.initHeader("charset",sCharset);
		}
  
         var callback =       
         {      
             timeout : THIS.vars.nTimeout || THIS.nTimeout,      
             upload  : THIS.mHandleSuccess,       
             success : THIS.mHandleSuccess,      
             failure : THIS.mHandleFail,       
             argument: {},      
             scope   : THIS   
         };      

        if(THIS.vars.success)   THIS.success = THIS.vars.success;      
        if(THIS.vars.fail)      THIS.fail = THIS.vars.fail;      
  
        //callbak argument setting   
        if(THIS.vars.oArgs)     callback.argument.oArgs = THIS.vars.oArgs;      
        if(sDivName)            callback.argument.sDivName = sDivName;      
        if(bCache == true)   
        {   
            callback.argument.sCACHE_KEY = sKey;      
            callback.argument.bCache = true;   
        }   
        else  
        {   
            callback.argument.bCache = false;   
        }   

		
        callback.argument.bSynced = bSynced;   
        callback.argument.sFormat = sFormat;   
        callback.argument.sTimeout = callback.timeout;   
  
        // loading action templates      
        if(THIS.vars.sLoadTemplates && sDivName)    THIS.mSetHtml(THIS.vars.sLoadTemplates,null,sDivName);      
  
         // cache data check      
         if(bCache == true && THIS.aCACHE[sKey])      
         {   
  
            if(THIS.bDebug)   
            {   
                THIS.mDebug("CACHE DATA",THIS.aCACHE[sKey]);   
            }   
  
            if(sDivName && typeof(THIS.aCACHE[sKey]) == "string" && typeof(document.getElementById(sDivName)) == "object")   
            {   
                THIS.mSetHtml(THIS.aCACHE[sKey],null,sDivName);   
            }   
            else if(THIS.success)   
            {   
                THIS.success(THIS.aCACHE[sKey],callback.argument);   
            }   
            else  
            {   
                return THIS.aCACHE[sKey];   
            }   
      
            return;      
         }   

        if(pSynced)   
        {   
            var oObj = YAHOO.util.Connect.syncRequest( sMethod , sUrl , callback , sPostData);
            var oData = THIS.mData(oObj,sFormat);   
  
            THIS.aCACHE[ sKey ] = oData;    
  
            if(sDivName && typeof(THIS.aCACHE[sKey]) == "string" && typeof(document.getElementById(sDivName)) == "object")   
            {   
                THIS.mSetHtml(THIS.aCACHE[sKey],null,sDivName);   
            }   
  
            if(THIS.bDebug)   
            {   
                THIS.mDebug("DATA info",THIS.mCallText(oObj));   
            }   
  

            return oData;   
        }   
        else  
        {   
            return YAHOO.util.Connect.asyncRequest( sMethod, sUrl , callback , sPostData);      
        }   
  
	},      
      
	init : function(pObj)      
	{
		this.sDebugDiv = "debug_" + new Date().getTime();
		if(pObj) this.vars = pObj;  
	}   
}; 

//=== ATC module 
YAHOO.KR.util.autoComp = function(poConfig){ this.init(poConfig); };

YAHOO.KR.util.autoComp.prototype = 
{
    vars         : null,
	nAtcStep	 : 0,
	oYksrchInput : null,
	oYksrchForm  : null,
	oAtcIframe   : null,
	oDivATC      : null,

	atcEventListner : function(e, THIS)
	{
		if (THIS.nAtcStep != 2)
		{
			THIS.atcLoad();
		}
	},
	
	atcClickEventListner : function (e, THIS)
	{
		//=== 내가 찾은 검색어 레이어 닫기
		if(document.getElementById('objHistory'))
		{
			YAHOO.util.Dom.setStyle('objHistory','display','none');
		}
		
		if (THIS.nAtcStep == 2)
		{			
			if(THIS.oAtcIframe.contentWindow.ykAutoComp_s == 'undefined')
			{
				if (YAHOO.util.Dom.getStyle(THIS.oDivATC,'display') == 'none')
				{
					THIS.oAtcIframe.contentWindow.ykAutoComp_s.start_key_monitor();
				}
				else
				{
					YAHOO.util.Dom.setStyle(THIS.oDivATC,'display', 'none');
					e.cancelBubble = true;
				}
			}
		}
		else
		{
			THIS.atcLoad();
		}
	},

	atcLoad : function ()
	{
		if (this.nAtcStep == 0) 
		{
			this.nAtcStep = 1;
			this.oAtcIframe.src = this.vars.iframeSrc;
			
		}
	},

	chkClose : function ( e, THIS )
	{
		if(YAHOO.util.Dom.getStyle(THIS.oDivATC,'display') != 'none')
		{
			var oPoint = new YAHOO.util.Point (YAHOO.util.Event.getXY(e)) ;
			var oRegion = YAHOO.util.Dom.getRegion ( THIS.oYksrchInput ) ;

			if (!oRegion.contains(oPoint))
			{
				THIS.oAtcIframe.contentWindow.ykAutoComp_s.atcClose();
			}
		}
	},
	
	init : function(poConfig)
	{
		this.vars = poConfig ;
		this.oYksrchInput = document.getElementById(this.vars.srchInput); //=== search word
		this.oYksrchForm = document.getElementById(this.vars.srchForm); //=== search Form
		this.oAtcIframe = document.getElementById(this.vars.iframeId); //== iframe id for result page
		this.oDivATC = document.getElementById(this.vars.viewLayer);  //=== autocomplete layer

		YAHOO.util.Event.on(this.oYksrchInput,'keyup',this.atcEventListner,this);
		YAHOO.util.Event.on(this.oYksrchInput,'click',this.atcClickEventListner,this);	

		// for Check Close Region.
		YAHOO.util.Event.on ( document, 'click', this.chkClose, this ) ;
	}
};



//=== MiniCalendar
var target;																	// 호출한 Object의 저장
var stime;
document.write("<div id='minical' oncontextmenu='return false' ondragstart='return false' onselectstart='return false' style='margin:0px; padding:0px;width:180px;display:none;position:absolute;z-index:500;'></div>");

function Calendar(id) {														// jucke
	if(typeof(id) == 'object'){	
		var obj = id;
	}else{
		var obj = document.getElementById(id);
	}
	var now = obj.value.split("-");
	target = obj;  // Object 저장;
	var xy = YAHOO.util.Dom.getXY(obj);
	var x = xy[0];
	var y = xy[1];
	YAHOO.util.Dom.setStyle('minical','top',y+obj.offsetHeight+'px');
	YAHOO.util.Dom.setStyle('minical','left',x+'px');
	
	if(YAHOO.util.Dom.getStyle('minical','display') == 'none')
	{
		YAHOO.util.Dom.setStyle('minical','display','block');
	}
	else
	{
		YAHOO.util.Dom.setStyle('minical','display','none');
	}

	if (now.length == 3) {														// 정확한지 검사
		Show_cal(now[0],now[1],now[2]);											// 넘어온 값을 년월일로 분리
	} else {
		now = new Date();
		Show_cal(now.getFullYear(), now.getMonth()+1, now.getDate());			// 현재 년/월/일을 설정하여 넘김.
	}
}
	
function doOver(obj) {																// 마우스가 칼렌다위에 있으면
	var cal_Day = obj.getAttribute ('t') ;
	if(cal_Day != null)
	{
		if (cal_Day.length > 7 && cal_Day != null) {													// 날자 값이 있으면.
			obj.style.borderTopColor = obj.style.borderLeftColor = "buttonhighlight";
			obj.style.borderRightColor = obj.style.borderBottomColor = "buttonshadow";
		}
	}
	window.clearTimeout(stime);													// Clear
}

function doClick(obj) {															// 날자를 선택하였을 경우
	var cal_Day = obj.getAttribute ('t') ;
	if(cal_Day != null)
	{
		if (cal_Day.length > 7) {													// 날자 값이있으면
			target.value=cal_Day; // 값 설정
		}
	}
	YAHOO.util.Dom.setStyle('minical','display','none');						// 화면에서 지움
}

function doOut(obj) {
	var cal_Day = obj.getAttribute ('t') ;

	if (cal_Day.length > 7) {
		obj.style.borderColor = "white";
	}
}

function day2(d) {																// 2자리 숫자료 변경
	var str = new String();
	
	if (parseInt(d,10) < 10) {
		str = "0" + parseInt(d,10);
	} else {
		str = "" + parseInt(d,10);
	}
	return str;
}

function Show_cal(sYear, sMonth, sDay) {
	var Months_day = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
	var Weekday_name = new Array("일", "월", "화", "수", "목", "금", "토");
	document.getElementById('minical').innerHTML = "";
	datToday = new Date();													// 현재 날자 설정
	
	var intThisYear = parseInt(sYear,10);
	var intThisMonth = parseInt(sMonth,10);
	var intThisDay = parseInt(sDay,10);
	
	if (intThisYear === 0)
	{
		intThisYear = datToday.getFullYear();				// 값이 없을 경우
	}

	if (intThisMonth === 0)
	{
		intThisMonth = parseInt(datToday.getMonth(),10)+1;	// 월 값은 실제값 보다 -1 한 값이 돼돌려 진다.
	}
	
	if (intThisDay === 0)
	{
		intThisDay = datToday.getDate();
	}
	
	switch(intThisMonth) {
		case 1:
				intPrevYear = intThisYear -1;
				intPrevMonth = 12;
				intPrevDay = Months_day[intPrevMonth] +1;
				intNextYear = intThisYear;
				intNextMonth = 2;
				break;
		case 12:
				intPrevYear = intThisYear;
				intPrevMonth = 11;
				intPrevDay = Months_day[intThisMonth] +1;
				intNextYear = intThisYear + 1;
				intNextMonth = 1;
				break;
		default:
				intPrevYear = intThisYear;
				intPrevMonth = parseInt(intThisMonth,10) - 1;
				intPrevDay = Months_day[intPrevMonth] +1;
				intNextYear = intThisYear;
				intNextMonth = parseInt(intThisMonth,10) + 1;
				break;
	}

	if(target.value ==='')
	{
		NowThisYear = datToday.getFullYear();										// 현재 년
		NowThisMonth = datToday.getMonth()+1;										// 현재 월
		NowThisDay = datToday.getDate();			
	}
	else
	{
		NowDate = target.value.split('-');
		NowThisYear = NowDate[0];											// 선택된 년
		NowThisMonth = parseInt(NowDate[1],10);											// 선택된 월
		NowThisDay = parseInt(NowDate[2],10);											// 선택된 일
	}
	
	DNowThisYear = datToday.getFullYear();										// 현재 년
	DNowThisMonth = datToday.getMonth()+1;										// 현재 월
	DNowThisDay = datToday.getDate();											// 현재 일

	datFirstDay = new Date(intThisYear, intThisMonth-1, 1);						// 현재 달의 1일로 날자 객체 생성(월은 0부터 11까지의 정수(1월부터 12월))
	intFirstWeekday = datFirstDay.getDay();										// 현재 달 1일의 요일을 구함 (0:일요일, 1:월요일)
	
	intSecondWeekday = intFirstWeekday;
	intThirdWeekday = intFirstWeekday;
	
	datThisDay = new Date(intThisYear, intThisMonth, intThisDay);				// 넘어온 값의 날자 생성
	intThisWeekday = datThisDay.getDay();										// 넘어온 날자의 주 요일

	varThisWeekday = Weekday_name[intThisWeekday];								// 현재 요일 저장
	
	intPrintDay = 1	;															// 달의 시작 일자
	secondPrintDay = 1;
	thirdPrintDay = 1;
	
	Stop_Flag = 0;
	
	if ((intThisYear % 4)==0) {													// 4년마다 1번이면 (사로나누어 떨어지면)
		if ((intThisYear % 100) == 0) {
			if ((intThisYear % 400) == 0) {
				Months_day[2] = 29;
			}
		} else {
			Months_day[2] = 29;
		}
	}
	intLastDay = Months_day[intThisMonth];										// 마지막 일자 구함
	var intWeek = Math.floor((intLastDay + intFirstWeekday) / 7);
	if((intLastDay + intFirstWeekday) % 7 > 0)
	{
		intWeek = parseInt(intWeek + 1,10);
	}

	Stop_flag = 0;

	Cal_HTML = "<div id='cld'>"
			+ "<span>"
			+ "<a href='##' onClick='Show_cal("+intPrevYear+","+intPrevMonth+",1);'><img src='http://img.yahoo.co.kr/search/2007/blog/08/b_blcal_l.gif' alt='뒤로' /></a> "
			+ get_Yearinfo(intThisYear,intThisMonth,intThisDay)
			+ " "
			+ get_Monthinfo(intThisYear,intThisMonth,intThisDay)
			+ " <a href='##' onClick='Show_cal("+intNextYear+","+intNextMonth+",1);'><img src='http://img.yahoo.co.kr/search/2007/blog/08/b_blcal_r.gif' alt='앞으로' /></a>"
			+ "</span>";
	
	Cal_HTML += "<table>"
			+ "<tr>"
			+ "<th>일</th>"
			+ "<th>월</th>"
			+ "<th>화</th>"
			+ "<th>수</th>"
			+ "<th>목</th>"
			+ "<th>금</th>"
			+ "<th>토</th>"
			+ "</tr>";

	for (intLoopWeek=1; intLoopWeek <= intWeek; intLoopWeek++) {						// 주단위 루프 시작, 최대 6주
		if(intLoopWeek == 1 ) { 
			Cal_HTML += "<tr>"; 
		} else { 
			Cal_HTML += "<tr>"; 
		}
		for (intLoopDay=1; intLoopDay <= 7; intLoopDay++) {						// 요일단위 루프 시작, 일요일 부터
			if (intThirdWeekday > 0) {
				// 첫주 시작일이 1보다 크면
				pevMonthDay = intPrevDay - intFirstWeekday;
				if(intThisMonth == 1){
					Cal_HTML += "<td t='"+intPrevYear+"-"+day2(intPrevMonth).toString()+"-"+day2(pevMonthDay).toString()+"'>"+pevMonthDay;
				}else{
					Cal_HTML += "<td t='"+intThisYear+"-"+day2(intPrevMonth).toString()+"-"+day2(pevMonthDay).toString()+"'>"+pevMonthDay;
				}
				intPrevDay++;
				intThirdWeekday--;
			} else {
				if (thirdPrintDay > intLastDay) {								// 입력 날짝 월말보다 크다면
					NextPrintDay = thirdPrintDay-intLastDay;
					if(intThisMonth == 12){
						Cal_HTML += "<td t='"+intNextYear+"-"+day2(intNextMonth).toString()+"-"+day2(NextPrintDay).toString()+"'>"+(thirdPrintDay-intLastDay);
					}else{
						Cal_HTML += "<td t='"+intThisYear+"-"+day2(intNextMonth).toString()+"-"+day2(NextPrintDay).toString()+"'>"+(thirdPrintDay-intLastDay);
					}
				} else {														// 입력날짜가 현재월에 해당 되면
					Cal_HTML += "<td";
					if (intThisYear == NowThisYear && intThisMonth==NowThisMonth && thirdPrintDay==NowThisDay) {
						Cal_HTML += " class='t'";
					}
					Cal_HTML += "><a href='###' onClick='doClick(this); return false;' t='"+intThisYear+"-"+day2(intThisMonth).toString()+"-"+day2(thirdPrintDay).toString()+"'>"+thirdPrintDay+"</a>";					
				}
				thirdPrintDay++;

				if (thirdPrintDay > intLastDay && thirdPrintDay%7===0) {								// 만약 날짜 값이 월말 값보다 크면 루프문 탈출
					Stop_Flag = 1;
				}
			}
			Cal_HTML += "</td>";
		}
		Cal_HTML += "</tr>";
		if (Stop_Flag==1)
		{
			break;
		}
	}
	Cal_HTML += "</table>"
			+ "<span class='bt'>오늘 <em onClick='doClick(this);' t='"+DNowThisYear+"-"+day2(DNowThisMonth).toString()+"-"+day2(DNowThisDay).toString()+"'>"+DNowThisYear+"-"+day2(DNowThisMonth).toString()+"-"+day2(DNowThisDay).toString()+"</em> &nbsp; &nbsp; &nbsp; &nbsp;| <a href='###' onClick='doClick(this);'>닫기</a></span>"
			+ "</div>";

	document.getElementById('minical').innerHTML = Cal_HTML;
}

function get_Yearinfo(year,month,day) {											// 년 정보를 콤보 박스로 표시

	var min = parseInt(year,10) - 10;
	var max = parseInt(year,10) + 10;
	var i = new Number();
	var str = new String();
	
	str = "<select class='y' onChange='Show_cal(this.value,"+month+","+day+");'>";
	for (i=min; i<=max; i++) {
		if (i == parseInt(year,10)) {
			str += "<option value="+i+" selected onMouseOver='doOver(this);'>"+i+"년</option>";
		} else {
			str += "<option value="+i+" onMouseOver='doOver(this);'>"+i+"년</option>";
		}
	}
	str += "</select>";
	return str;
}


function get_Monthinfo(year,month,day) {										// 월 정보를 콤보 박스로 표시
	var i = new Number();
	var str = new String();
	str = "<select class='m' onChange='Show_cal("+year+",this.value,"+day+");' onMouseOver='doOver(this);'>";
	for (i=1; i<=12; i++) {
		if (i == parseInt(month,10)) {
			str += "<option value="+i+" selected onMouseOver='doOver(this);'>"+i+"월</option>";
		} else {
			str += "<option value="+i+" onMouseOver='doOver(this);'>"+i+"월</option>";
		}
	}
	str += "</select>";
	return str;
}

// constructor
YAHOO.KR.util.roopingMvLayer = function ( poConfig ) 
{
	if ( poConfig ) { this.init( poConfig ) ; }
};
// member variables
YAHOO.KR.util.roopingMvLayer.prototype =
{
	bIsAnimate : false,	
	nOriginPos : null,	
	nCurCnt : 0,
	nTotItem : null,
	nTimer : null,
	nPageInNum	: null,
	nMoveSize : null,	
	oCon : null,
	oList : null,
	aItemList : null,
	aProcBtnList : null,
	oCfg : null,
	// get animation moving size / inner elements num.
	getAniRange : function () 
	{
		this.nTotItem = this.aItemList.length ;	
		switch ( this.oCfg.action.direction.toLowerCase() )
		{
			case 'vertical' :
				this.nMoveSize = this.aItemList[0].offsetHeight * this.oCfg.action.mvItemNum;
				this.nPageInNum = Math.round( this.oCon.offsetHeight / this.aItemList[0].offsetHeight ) ;
				this.nOriginPos = YAHOO.util.Dom.getY ( this.oCon ) ;
				this.nType = 1 ;
			break;
			
			case 'horizonal' :
				this.nMoveSize = this.aItemList[0].offsetWidth * this.oCfg.action.mvItemNum;
				this.nPageInNum = Math.round( this.oCon.offsetWidth / this.aItemList[0].offsetWidth ) ;
				this.nOriginPos = YAHOO.util.Dom.getX ( this.oCon ) ;
				this.nType = 0 ;
			break;
		}
	},
	// go previous
	goPrev : function ( e, THIS ) 
	{	
		if ( !THIS.bIsAnimate )
		{	
			var xy = YAHOO.util.Dom.getXY ( THIS.oList ) ;
			THIS.nCurCnt -= THIS.oCfg.action.mvItemNum ;
			// set to last contents position.			
			if ( THIS.nCurCnt < 0 )
			{
				THIS.nCurCnt = THIS.nTotItem + THIS.nCurCnt ;
				xy[THIS.nType] = THIS.nOriginPos-(THIS.nCurCnt+THIS.oCfg.action.mvItemNum)*(THIS.nMoveSize/THIS.oCfg.action.mvItemNum) ;
			}
			
			THIS.moveItem ( THIS.nCurCnt, xy ) ;
		}
		return false;		
	},
	// go next
	goNext : function ( e, THIS ) 
	{
		if ( !THIS.bIsAnimate )
		{	
			var xy = YAHOO.util.Dom.getXY ( THIS.oList ) ;
			
			THIS.nCurCnt += THIS.oCfg.action.mvItemNum ;
			// set to last contents position.
			if ( THIS.nCurCnt >= THIS.nTotItem + THIS.oCfg.action.mvItemNum )
			{				
				THIS.nCurCnt = THIS.nCurCnt - THIS.nTotItem ;
				xy[THIS.nType] = THIS.nOriginPos-(THIS.nCurCnt-THIS.oCfg.action.mvItemNum)*(THIS.nMoveSize/THIS.oCfg.action.mvItemNum) ;
			}
			
			THIS.moveItem ( THIS.nCurCnt, xy ) ;
		}
		return false;		
	},
	// auto refresh func.
	goAuto : function ()
	{
		var THIS = this ;
		var refresh = function ()
		{
				var xy = YAHOO.util.Dom.getXY ( THIS.oList ) ;
				
				THIS.nCurCnt += THIS.oCfg.action.mvItemNum ;
				if ( THIS.nCurCnt >= THIS.nTotItem + THIS.oCfg.action.mvItemNum )
				{				
					THIS.nCurCnt = THIS.nCurCnt - THIS.nTotItem ;
					xy[THIS.nType] = THIS.nOriginPos-(THIS.nCurCnt-THIS.oCfg.action.mvItemNum)*(THIS.nMoveSize/THIS.oCfg.action.mvItemNum) ;
				}
				THIS.moveItem ( THIS.nCurCnt, xy ) ;
				THIS.nTimer = setTimeout ( refresh, THIS.oCfg.delay ) ;				
		};		
		THIS.nTimer = setTimeout ( refresh, THIS.oCfg.delay ) ;
	},
	// go process click event button's target.
	goTarget : function ( e, THIS )
	{
		if ( !THIS.bIsAnimate )
		{		
			var xy = YAHOO.util.Dom.getXY ( THIS.oList ) ;
			var oTarget = YAHOO.util.Event.getTarget ( e ) ;
			var i, max = THIS.aProcBtnList.length - 1, nOld = THIS.nCurCnt ;
						
			for ( i = max ; i >= 0 ; i -- )
			{
				if ( THIS.aProcBtnList[i] == oTarget )
				{
					THIS.nCurCnt = i ;
				}
			}
			if ( THIS.nCurCnt != nOld ){	THIS.moveItem ( THIS.nCurCnt, xy ) ; }
		}
		return false;		
	},	
	// moving item.			
	moveItem : function ( pnIdx, pnXY )
	{
		//this.nOriginPos = YAHOO.util.Dom.getY ( this.oCon ) ;

		switch ( this.oCfg.action.direction.toLowerCase() )
		{
			case 'vertical' :
				this.nOriginPos = YAHOO.util.Dom.getY ( this.oCon ) ;
			break;
			
			case 'horizonal' :
				this.nOriginPos = YAHOO.util.Dom.getX ( this.oCon ) ;
			break;
		}

		this.bIsAnimate = true ;
		var toXY ;
		switch ( this.oCfg.action.direction.toLowerCase() )
		{
			case 'vertical':
				toXY = [pnXY[0], this.nOriginPos - this.nMoveSize*pnIdx/this.oCfg.action.mvItemNum ] ;
			break;
			case 'horizonal' :
				toXY = [this.nOriginPos - this.nMoveSize*pnIdx/this.oCfg.action.mvItemNum, pnXY[1] ] ;			
			break;
		}
		// set animation attribute.
		var oAttr = 
		{
			points: 
			{
				from:pnXY,
				to:toXY
			}
		};
		
		this.anim ( oAttr ) ;
		// process button's style change when process button option activated.
		if ( this.aProcBtnList ) {
			this.setProcBtnStyle ( this.aProcBtnList, this.nCurCnt ) ; }
	},
	// set process button style.
	setProcBtnStyle : function ( poNode, pnIdx )
	{
		var i, max = poNode.length - 1 ;
		if ( this.oCfg.process.onClass.length )						
		{
			YAHOO.util.Dom.removeClass ( poNode, this.oCfg.process.onClass ) ;
		}

		pnIdx -= ( pnIdx >= this.nTotItem ) ? this.nTotItem : 0 ;
		
		YAHOO.util.Dom.addClass ( poNode[pnIdx], this.oCfg.process.onClass ) ;		
	},
	// animate.			
	anim : function ( oAttr )
	{
		var THIS = this ;
		var animComplete = function ( type, args )
		{
			THIS.bIsAnimate = false ;		
		};
		var anim = new YAHOO.util.Motion(this.oList, oAttr, this.oCfg.ani.speed, YAHOO.util.Easing[this.oCfg.ani.type]);
		anim.onComplete.subscribe ( animComplete ) ;
		anim.animate();
	},
	// animation is halt when contents view box layer / process button onmouse over event fired.
	chkHalt : function ( e, oCallBack )
	{
			var THIS = oCallBack.THIS ;
			var xy = new YAHOO.util.Point (YAHOO.util.Event.getXY(e)) ;
			var oRegion = YAHOO.util.Dom.getRegion ( oCallBack.oTarget ) ;
			
			if ( oRegion.contains( xy ) )
			{
				clearTimeout ( THIS.nTimer ) ;
			}
			else
			{
				var refresh = function ()
				{
					THIS.goAuto () ;
				};		
				THIS.nTimer = setTimeout ( refresh, THIS.oCfg.delay ) ;
			}
	},
	// set halt elements.
	setPause : function ( pNode, psActType )
	{
		if ( this.oCfg.auto )
		{
			if ( typeof pNode == 'string' )
			{
				pNode = document.getElementById ( pNode ) ;
			}
			
			var oCallBack =
			{
				THIS : this,
				oTarget : pNode
			};
			YAHOO.util.Event.addListener ( pNode, 'mouseover', this.chkHalt, oCallBack ) ;
			YAHOO.util.Event.addListener ( pNode, 'mouseout', this.chkHalt, oCallBack ) ;
		}
	},
				
	setEvtHandler : function ( pNode, psEvtType, psDirection )
	{
		switch ( psDirection.toLowerCase() )
		{
			case 'prev' :
				this.setPause( pNode ) ;
				YAHOO.util.Event.addListener ( pNode, psEvtType, this.goPrev, this ) ;
			break;
			
			case 'next' :
				this.setPause( pNode ) ;			
				YAHOO.util.Event.addListener ( pNode, psEvtType, this.goNext, this ) ;			
			break;

			case 'process' :
				YAHOO.util.Event.addListener ( pNode, psEvtType, this.goTarget, this ) ;
			break;
		}
	
	},
	// make rolling clone nodes.
	makeCloneNode : function ()
	{
		var i ;
		for ( i=0 ; i < this.nPageInNum + this.oCfg.action.mvItemNum  ; i++)
		{
			var oClone = this.aItemList[i].cloneNode(true) ;
			oClone.innerHTML =  this.aItemList[i].innerHTML ;
			this.oList.appendChild ( oClone ) ;		
		}	
	},
	// initialize.
	init:function ( poConfig ) 
	{
		this.oCfg = poConfig ;
		this.oCon = document.getElementById ( poConfig.contents.view ) ;
		this.oList = document.getElementById ( poConfig.contents.container ) ;
		if ( poConfig.process ) 
		{
			this.oProc = document.getElementById ( poConfig.process.container );
		}
							
		if ( this.oCon && this.oList )
		{	
			this.aItemList = this.oList.getElementsByTagName ( poConfig.contents.tag ) ;
																								
			if(this.aItemList.length > 0 ) {
				// if process button exist, attach event.
				if ( this.oProc )
				{					
					this.aProcBtnList = this.oProc.getElementsByTagName ( poConfig.process.tag ) ;
					this.setEvtHandler ( this.aProcBtnList, 'click', 'process' ) ;
					this.setPause ( this.oProc ) ;
				}					
				
				this.getAniRange() ;
				this.makeCloneNode() ;			
				// check auto refresh.
				if ( this.oCfg.auto && this.oCfg.delay )
				{
					var THIS = this ;
					var refresh = function ()
					{
						THIS.goAuto () ;
					};
					// set halt when contents viewbox area onmouseover event fired.
					this.setPause ( poConfig.contents.view ) ;
					this.nTimer = setTimeout ( refresh, this.oCfg.delay ) ;
				}			
			}
		}
	}
};


//=== SelectBox
YAHOO.util.selectBox = function ( attrName )
{
	if ( attrName ) { this.init( attrName ); }
};
// member variables.
YAHOO.util.selectBox.prototype = {
	sAttrName : null,
	oTarget : null,
	oOldCover:null,
	
	// select action func.
	select : function ( e, param ) 
	{
		var THIS = param.THIS ;
		THIS.oTarget = YAHOO.util.Event.getTarget (e) ;
		THIS.sAttrVal = THIS.oTarget.getAttribute ( THIS.sAttrName ) ;
		
		if(!THIS.sAttrVal) return; //추가 김영석 071107
		
		if ( param.cName.length ){YAHOO.util.Dom.removeClass ( param.items, param.cName ) ;}
		YAHOO.util.Dom.addClass ( THIS.oTarget, param.cName ) ;
		YAHOO.util.Dom.setStyle ( param.cover, 'display', 'none' ) ;
		
		param.oInput.value = THIS.sAttrVal;         //추가 김영석  071107
		param.text.innerHTML = THIS.oTarget.innerHTML ;
	},
	// select list show func.
	expand : function ( e, param )
	{		
		
		if(param.THIS.oOldCover && param.THIS.oOldCover != param.cover){ 	YAHOO.util.Dom.setStyle ( param.THIS.oOldCover, 'display', 'none' ); 
		}
		if ( YAHOO.util.Dom.getStyle( param.cover, 'display' ) == 'none' )
		{	
			YAHOO.util.Dom.setStyle ( param.cover, 'display', 'block' ) ;
			param.THIS.oOldCover = param.cover;
			var size= param.items[0].offsetHeight*param.items.length;
			if(param.size.height > size){	YAHOO.util.Dom.setStyle(param.ul,'height',size +'px');	}
			else{ YAHOO.util.Dom.setStyle(param.ul,'height',param.size.height  + 'px');	}
			YAHOO.util.Dom.setStyle(param.ul,'width',param.size.width  + 'px');
		}
		else	{	
			param.THIS.oOldCover = null;
			YAHOO.util.Dom.setStyle ( param.cover, 'display', 'none' ) ;	
		}
		// stop additional event fire.
		YAHOO.util.Event.stopEvent(e) ;
	},
	
	//추가 김영석  071107
	initCover:function(param)
	{
		var sValue = (param.oInput)?param.oInput.value:null;
		if(!sValue) return;
	
		for(var i=0;i<param.items.length;i++)
		{
			if(param.items[i].getAttribute ( this.sAttrName )  == sValue)
			{
					if ( param.cName.length ){YAHOO.util.Dom.removeClass ( param.items[i], param.cName ) ;}
					YAHOO.util.Dom.addClass ( param.items[i], param.cName ) ;
					param.text.innerHTML = param.items[i].innerHTML ;
					YAHOO.util.Dom.removeClass ( param.items[0], param.cName);
			}
		}	
	},
	
	// event attach
	setEvtHandler : function ( oCfg )
	{
		var oBtn = document.getElementById ( oCfg.select ) ;
		if(oBtn){
			YAHOO.util.Dom.setStyle(oBtn,'width',(oCfg.nSize['width']-5)+'px');
			
			//YAHOO.util.Dom.setStyle(oBtn.parentNode,'width',oCfg.nSize['width']+'px');
			var oItemCover = document.getElementById ( oCfg.items.cover ) ;
			var UL=document.getElementById(oCfg.items.container);
			var oItems = UL.getElementsByTagName ( oCfg.items.tag ) ;
			
			// selection event attach.
			var param = {
				THIS : this,
				text : oBtn,
				cover : oItemCover,
				items : oItems,
				oInput : document.getElementById(oCfg.input),					//추가 김영석  071107
				cName : oCfg.items.onClass
			};
			YAHOO.util.Event.on( oItemCover, 'mouseup', this.select, param ) ;
			
			this.initCover(param);
			
			// item list show when select button click.
			param = {
				THIS:this,
				cover : oItemCover,
				ul:UL,
				items:oItems,
				size:oCfg.nSize
			};
			YAHOO.util.Event.on( oBtn, 'click', this.expand, param ) ;
			// outside of click region check event attach.		
			YAHOO.util.Dom.setStyle(oBtn.parentNode,'display','block');
		
			fnCallBack = function ( e )
			{
				YAHOO.util.Dom.setStyle ( oItemCover, 'display', 'none' ) ;
			};
			YAHOO.util.Event.on( document, 'click', fnCallBack ) ;
		}
	},
	
	// initialize
	init : function ( attrName)
	{
		this.sAttrName = attrName ;
	}
};

//=== toolTip
YAHOO.util.ttManager = function ( pTtID )
{
    if ( pTtID ){this.init( pTtID);}
};
// member variables.
YAHOO.util.ttManager.prototype = 
{
	sAttrName:null,
    oToolTip:null,
	offW : null,
	offH : null,
	sOldTT:null,
    oTarget:null,
    nXY:null,
    nAddX:5,
    nAddY:15,

	// mouse move event callback func.
    ttMv: function(e, param) 
    {
		var THIS = param.THIS ;
		THIS.sAttrName = param.attrName ;
        THIS.oTarget = THIS.getTarget(e,this) ;
		
		// get user define attribute value.
        var ttText = THIS.oTarget.getAttribute(THIS.sAttrName) ;
       		
		// hide tooptip.
        if ( !ttText )
        {
            YAHOO.util.Dom.setStyle ( THIS.oToolTip, 'left', '-1000px' ) ;		
        }	
		// get tooltip's region what user define attribute is exist.		
        else
        {	
			THIS.nXY = YAHOO.util.Event.getXY(e) ;
			// set text width
			if(param.size)
			{
				YAHOO.util.Dom.setStyle ( THIS.oToolTip, 'width', param.size+'px' ) ;
			}
			else
			{
				if ( ttText.length >= 40 )
				{YAHOO.util.Dom.setStyle ( THIS.oToolTip, 'width', '200px' ) ;}           
				else
				{YAHOO.util.Dom.setStyle ( THIS.oToolTip, 'width', 'auto' ) ;}
			}
				
			//=== 중복 Dom 구조에서 잘못된 text 방지 : 이미 들어간 text는 다시 넣지 않는다.
			if ( THIS.sOldTT != ttText )
			{
				THIS.oToolTip.innerHTML =  ttText;
				THIS.offW = THIS.oToolTip.offsetWidth;
				THIS.offH = THIS.oToolTip.offsetHeight;
				THIS.sOldTT = ttText ;
			}
			THIS.setPos() ;
        }
    },
	// check window's edge position.
    setPos: function() 
    {
        var aScrollXY = YAHOO.util.Event._getScroll() ;
        var nScrWidth = YAHOO.util.Dom.getViewportWidth() - 5 ;
        var nScrHeight = YAHOO.util.Dom.getViewportHeight() - 5 ;
        
		if ( this.nXY[0] + this.offW + this.nAddX > nScrWidth + aScrollXY[1] )
        {
            this.nXY[0] = (nScrWidth + aScrollXY[1]) - this.offW- this.nAddX ;
        }

        if ( this.nXY[1] + this.offH + this.nAddY > nScrHeight + aScrollXY[0] )
        {
            this.nXY[1] = (YAHOO.util.Dom.getY(this.oTarget)) - this.offH - this.nAddY ;
        }

        YAHOO.util.Dom.setXY(this.oToolTip, [parseInt(this.nXY[0]+this.nAddX), parseInt(this.nXY[1]+this.nAddY)]) ;
    },
    // get event's target.
    getTarget: function(ev,root) 
    {
        var t = ev.target || ev.srcElement;
		        
        // save origin node.
        this.oOriginNode = t ;
        
        return this.resolveAttrNode(t,root) ;
    },
	// get attribute contains target recursive func. if arrived root node return origin node.
    resolveAttrNode: function(node, root) 
    {
        if ( node.getAttribute( this.sAttrName ) )
        {
            return node;
        }
        // check current node id.
        else if ( node == root || node.nodeName.toUpperCase() == 'BODY')
        {
            return this.oOriginNode ;
        }
        else 
        {
            return this.resolveAttrNode ( node.parentNode, root ) ;
        }
        
    },
	// set tooltip's distance from cursor.
    setTTDistance : function ( pX, pY )
    {
        this.nAddX = pX ;
        this.nAddY = pY ;
    },
	// event attach func.
	setEvtHandler : function ( psID, psAttr, pnSize )
	{
		var param = {
			THIS : this,
			attrName : psAttr,
			size : pnSize
		};
		var ckObj = document.getElementById(psID);
		if(!ckObj)
		{ 
			return;
		}	
		YAHOO.util.Event.addListener ( psID, 'mousemove', this.ttMv, param ) ;
	},
    // initialize.    
    init: function( tID ) 
    {
        this.oToolTip = document.getElementById ( tID ) ;
        
        if ( ! this.oToolTip ) 
        {
            return;
        }        
    }
};


YAHOO.util.init = function ()
{
	//=== SelectBox
	var selBox = new YAHOO.util.selectBox ( 'v' );	
	//=== 회원가입 이메일
	selBox.setEvtHandler ( 
		{
			select : 'joinEmail',
			input:'eDomain',
			items : { cover : 'jList2', container : 'jItems2', tag : 'li' , onClass : 'on' },
			nSize:{width:120,height:180}
		}
	); 	
	//=== 회원가입 방문경로
	selBox.setEvtHandler ( 
		{
			select : 'joinVisit',
			input:'visit_path',
			items : { cover : 'jList3', container : 'jItems3', tag : 'li' , onClass : 'on' },
			nSize:{width:120,height:180}
		}
	); 
	
	//=== horizonal best products moving
	var mvPhoto = new YAHOO.KR.util.roopingMvLayer (
		{
			contents : { view : 'jView', container : 'jItems', tag : 'li' },
//			process : { container : 'procBtn', tag : 'a', onClass : 'on' },
			ani : { speed : 0.3, type : 'easeInStrong' },
			action : { direction : 'horizonal', mvItemNum : 1 },
			auto : true,
			delay : 3000
		}
	);	
	// event attach member func. element id, event type, direction, deactive btn class name.
	//mvPhoto.setEvtHandler ( 'jPrevBtn', 'click', 'prev') ;
	//mvPhoto.setEvtHandler ( 'jNextBtn', 'click', 'next' ) ;	
	
	
	// toolTip
	var tm = new YAHOO.util.ttManager ( 'tooltip') ;
	tm.setEvtHandler ( 'gpi', 't' ) ;
	tm.setEvtHandler ( 'gvw', 't' ) ;
};
YAHOO.util.Event.on ( window, "load", YAHOO.util.init ) ;
	
var YUA = new YAHOO.KR.widget.AjaxManager();
