/*
	기본 환경
*/

var shopCfg = {
	"orderGoodsMaxEa" : 10000	// 주문시 제한할 최대 수량 
}
// 숫자만 리턴
function only_num (str) { return str.replace(/[^0-9]/g,""); }
// 문자열의 좌우 공백 삭제
function _trim ( str ) { return str.replace(/(^\s*)|(\s*$)/g, ""); }
// keyCode 얻기
function getKeyCode (e) {
	var keycode=false;
	if (window.event) {
		keycode = window.event.keyCode;
	} else if ( e ) {
		keycode = e.which;
	}
	return keycode;
}
// id 찾기
function _getId ( str, param ) {
	var tObj = document.getElementById(str);
	switch ( param ) {
	case "v" :
	case 1 :
		return tObj.value;
	default :
		return tObj;
	}
}
// name 찾기
function _getName ( str, th, v ) {
	var o = false;
	if ( document.getElementsByName(str)[th] ) {
		o = document.getElementsByName(str)[th];
		if ( v ) {
			o = o.value;
		}
	}
	return o;
}
/*
	해당 id의 폼값을 val로 변경
	op 값이 html인 경우에는 해당 id 안에 innerHTML로 입력
*/
function setVal ( id, val, op ) {
	var obj = _getId(id);
	switch ( op )
	{
	case "html" :
		obj.innerHTML = val;
		break;
	default :
		obj.value = val;
	}
	return true;
}

// 해당 id에 focus
function _focus ( id ) {
	document.getElementById(id).focus();
}
function _select ( id ) {
	_focus(id);
	document.getElementById(id).select();
}

// RePLaCeSPecial character *→× etc.
function rplcSp( o ) {
	var v = o.value;
	v = v.replace("*","×");
	v = v.replace(/([0-9]+)cm/gi,"$1㎝");
	v = v.replace(/([0-9]+)mm/gi,"$1㎜");
	v = v.replace(/([0-9]+)(ㅡㅡ)/g,"$1㎜");
	v = v.replace(/([0-9]+)kg/gi,"$1㎏");
	v = v.replace(/([0-9]+)(ㅏㅎ)/g,"$1㎏");	// chrome에서는 300ㅏㅎ → 가 300㎏ㅎ 로 바뀌는 문제 있음
	v = v.replace('"',"˝");
	o.value = v;
}	

// 브라우저 종류 판별 (chrome으로 사용시 safari도 true가 되는 문제 있음)
function _agent () {
	var agent = navigator.userAgent.toLowerCase();
	var bList = { "ie":0, "firefox":0, "chrome":0, "safari":0, "opera":0 };
	for ( i in bList ) {
		if ( agent.indexOf(i) > -1 ) {
			this.agent = i;
			this[i] = 1;
			break;
		}
	}
}
ua = new _agent();

// class List
function classList ( o ) {
	return o.className.split(/\s+/);
}

// class name 추가
function addClass(obj, clsName) {
	if ( obj.className.indexOf( clsName ) < 0 ) {
	obj.className = obj.className+" "+clsName;
	}
}
// class name 제거, 대체
// clsName을 제거하고, newClsName이 있을 경우 추가
function rmClass(obj, clsName, newClsName ) {
	if ( obj.className.indexOf(clsName) > -1 ) {
		var ar = classList ( obj );
		var len = ar.length;
		var r = new Array();
		var i=0;
		while ( i < len ) {
			if ( ar[i] != clsName ) {
				r.push(ar[i]);
			}
			++i;
		}
		if ( newClsName ) {
			r.push(newClsName);
		}
		obj.className = r.join(" ");
	}
}

// 새 창 열기 ( 구글 크롬에서 기존 열린 창이 focus가 되지 않는 문제가 있는 버전 )
function n(obj, objName, width, height, top, left, scrollbars, resizable) {
	switch (typeof(obj)) {
	case "string":
		href = obj;
		break;
	default:
		href = obj.href;
	}
	if (!objName) {
			newWin=window.open(href);
	} else {
		var op="";
		var op_width = width>0 ? width : 400;
		var op_height = height>0 ? height : 300;
		var op_top = top>0 ? top : 200;
		var op_left = left>0 ? left : 150;
		var op_scrollbars = scrollbars>0 ? "yes" : "no";
		var op_resizable = resizable>0 ? "yes" : "no";
		op = "width="+op_width+",height="+op_height+",top="+op_top+",left="+op_left+",scrollbars="+op_scrollbars+",resizable="+op_resizable;
		newWin=window.open(href, objName, op);
	}
	newWin.focus();
	return false;
}

// 인쇄하기
function prnWin() {
	window.print();
	window.close();
}
// 현재시각 0:Y, 1:m, 2:d, 3:h, 4:i, 5:s 
function timeNow () 
{
	var now = new Date(); 
	var nowAr = new Array (String(now.getFullYear()), String(now.getMonth()+1), String(now.getDate()), String(now.getHours()), String(now.getMinutes()), String(now.getSeconds())); 
	var nowArLen = nowAr.length; 
	var i=1; 
	while ( i<nowArLen ) 
	{ 
		if ( nowAr[i]<10 ) { nowAr[i] = '0'+nowAr[i]; } 
		i++; 
	} 
	return ( nowAr ); 
}
// document.location.href
function loc(url) {
	document.location.href=url;
}
// 양수:과거, 음수:미래
function diffTime( ymd, his ) {
	var now = new Date();
	var then = new Date( ymd.substr(0,4), ymd.substr(4,2)-1, ymd.substr(-2), 0, 0, 0, 0 );
	if ( his ) { then.setHours(substr(his,0,2)); then.setMinutes(substr(his,2,2)); then.setSeconds(substr(his,-2)); }
	var diff = parseInt((now-then) / 1000);
	return diff;
}
function diffDay ( sec ) {
	var pafu = ( sec <= 0 ) ? '후' : '전';
	if ( sec < 60 ) { return ( sec+'초 '+pafu ); }
	if ( sec < 3600 ) { return ( parseInt(sec/60)+'분 '+pafu ); }
	if ( sec < 86400 ) { return ( parseInt(sec/3600)+'시간 '+pafu ); }
	if ( sec < 2592000 ) { return ( parseInt(sec/86400)+'일 '+pafu ); }
	if ( sec < 31536000 ) { return ( parseInt(sec/2592000)+'개월 '+pafu ); }
	var y = parseInt(sec/31536000);
	var m = parseInt((sec-(y*31536000))/2592000);
	var rtn = y+'년';
	if ( m > 0 ) {
		rtn += ' '+m+'개월';
	}
	rtn += ' '+pafu;
	return (rtn);
}
// AJAX
function getHTTPObject () {
	var xhr = false;
	if ( window.XMLHttpRequest ) { xhr = new XMLHttpRequest (); }
	else if ( window.ActiveXObject ) {
		try { xhr = new ActiveXObject ( "Msxml2.XMLHTTP" ); }
		catch ( e ) {
			try { xhr = new ActiveXObject ( "Microsoft.XMLHTTP" ); }
			catch ( e ) { xhr = false; }
		}
	}
	return xhr;
}
function _ajax ( callback, file, param, loaderId ) {
	if ( loaderId ) {
		loaderObj = _getId(loaderId);
		loaderObj.innerHTML = '<img src="css/img/ajax_green.gif" alt="AJAX Loader" /> <span class="ajax"></span>';
	}
	var req = getHTTPObject ();
	if ( req ) {
		req.onreadystatechange = function () { if ( req.readyState==4 && (req.status==200 || req.status==304) ) { callback(req.responseText, param); } };
		req.open ( "GET", file, true );
		req.send(null);
	}
}
function _ajaxPost ( callback, file, param, loaderId, param2 ) {
	if ( loaderId ) {
		loaderObj = _getId(loaderId);
		loaderObj.innerHTML = '<img src="/neo/css/img/ajax_green.gif" alt="AJAX Loader" class="valM" /> <span class="cGreen">진행중... 잠시만 기다려 주세요.</span>';
	}
	var req = getHTTPObject ();
	if ( req ) {
		req.onreadystatechange = function () { if ( req.readyState==4 && (req.status==200 || req.status==304) ) { callback(req.responseText, param2); if ( loaderId ) { loaderObj.innerHTML=""; } } };
		req.open ( "POST", file, true );
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); 
		req.setRequestHeader("Cache-Control", "no-cache, must-revalidate"); 
		req.setRequestHeader("Pragma", "no-cache"); 
		req.send(param);
	}
}

// 금액에 콤마 찍기
function vComma( num ) {
	var num = "" + num;
	var rtn = "";
	var str = "" + num.replace(/,/gi,""); // 콤마 제거
	// var str = "" + num;
	var regx = new RegExp(/(-?\d+)(\d{3})/);
	var bExists = str.indexOf(".",0);
	var strArr  = str.split('.');
	while(regx.test(strArr[0])){
		strArr[0] = strArr[0].replace(regx,"$1,$2");
	}
	if (bExists > -1) {
		rtn = strArr[0] + "." + strArr[1];
	} else {
		rtn = strArr[0];
	}
	return rtn;
}

// id1 의 폼값을 id2의 폼값에 복사
function _copyFrmVal ( id1, id2 ) {
	changeVal ( id2, _getId(id1,"v") );
}

/*
	폼값을 새 창을 띄워 보내기
	예제: <form method="get" id="frm_prn" action="<?php echo WR; ?>est_view.php" onsubmit="submitNewWin('frm_prn');">
	id 필수, onsubmit 필수
*/
function submitNewWin( frmId ) {
	newWin = window.open("about:blank", "_frm", "width=670,height=600,scrollbars=yes,resizable=yes");
	document.forms[frmId].target = "_frm";
	document.forms[frmId].submit();
return false;
}

/*
	해당 id의 element 제거
*/
function removeId ( id ) {
	if ( document.getElementById( id ) ) {
		var o = document.getElementById( id );
		o.parentNode.removeChild(o);
	}
}
// setAttribute
function setAttr ( o, ar ) {
	if ( !o ) { return false; }
	for ( k in ar ) {
		o.setAttribute( k, ar[k] );
	}
}

/*
	클릭하면 해당 ID를 보이거나 숨기기
	msg 값이 있으면 msg도 출력 (2010-12-12)
*/
function _toggle_display(id, msg) {
	var r = 0;
	var o = _getId(id);
	var sh = "none";
	if ( o.style.display=="none" ) {
		if ( msg ) {
			o.innerHTML = msg;
		}
		sh = "";
		r = 1;
	}
	o.style.display = sh;
	return ( r );
}
/*
	달력 시작 (2010-10-27) ZnMee
*/
function formDate( v ) {
	return v = Number(v)<10 ? "0"+Number(v).toString() : v.toString();	/* v=07 일 경우 Number가 없으면 007을 리턴함 */
}
function dateStr( d ) {	/* d는 new Date()로 생성된 오브젝트. yyyymmdd로 리턴 */
	return str = d.getFullYear() + formDate(d.getMonth()+1) + formDate(d.getDate());
}
function strDate( s ) {
	var sI = parseInt(s*1);	// parseInt('0116')이 '78'이 되는 문제 해결차 *1
	var sS = s.toString();
	var sL = sS.length;
	if ( sL < 1 ) { return sS; }
	var r = new Date();
	var rA = new Array( String(r.getFullYear()), formDate(r.getMonth()+1), formDate(r.getDate()) );	/* rA[0]:yyyy, rA[1]:mm, rA[2]:dd */
	if ( sL < 3 ) {	/* 날짜만 입력된 경우 */
		if ( sI < 1 ) { alert ("날짜가 1일보다 작을 수 없습니다."); return false; }
		if ( sI > 31 ) { alert ("날짜가 31일보다 클 수 없습니다."); return false; }
		rA[2] = formDate(sS);
	} else {
		if ( sL < 5 ) {	/* 월일이 입력된 경우 */
			if ( sI < 101 ) { alert ("날짜가 1월 1일보다 작을 수 없습니다."); return false; }
			if ( sI > 1231 ) { alert ("날짜가 12월 31일보다 클 수 없습니다."); return false; }
			var reg_md = /^(\d{1,2})(\d{2})$/;
			reg_md.exec(sS);
			rA[1] = formDate(RegExp.$1);
			rA[2] = formDate(RegExp.$2);
			if ( Number(rA[2]) < 1 ) { alert ("날짜의 일이 1일보다 작을 수 없습니다."); return false; }
			if ( Number(rA[2]) > 31 ) { alert ("날짜의 일이 31일보다 클 수 없습니다."); return false; }
		} else {	/* 년월일이 입력된 경우 */
			var reg_ymd = /^(\d{4})(\d{2})(\d{2})$/;
			if ( !reg_ymd.exec(sS) ) { alert (sS+"는\n날짜 형식에 맞지 않습니다.\nyyyymmdd (예: 19740515)\n형식이어야 합니다."); return false; }
			rA[0] = Number(RegExp.$1);
			rA[1] = formDate(RegExp.$2);
			rA[2] = formDate(RegExp.$3);
		}
	}
	return rA.join("");
}
/*
 창 크기
 http://www.howtocreate.co.uk/tutorials/javascript/browserwindow
*/
function windowSize() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return [myWidth,myHeight];
}

/*
	클릭시 해당 위치 리턴
	주의: 리턴된 position에 div를 위치시킬 경우
	div의 position 속성은 absolute가 되어야 함.
	fixed일 경우 함께 스크롤이 안될 뿐 아니라
	스크롤된 상태에서 클릭시 Y위치가 어긋남.
*/
function clickXY(e) {
	var pos = new Array();
	if (!e) { e=window.event; }
	var scXy = getScrollXY();
	if ( e.pageX || e.pageY ) {
		pos["x"] = e.pageX;
		pos["y"] = e.pageY;
	} else if ( e.clientX || e.clientY ) {
		pos["x"] = e.clientX;
		pos["y"] = e.clientY + scXy[1];
	}
	return ( pos );
}

/* scrollXY 값 구하는 함수. 출처: http://www.howtocreate.co.uk/tutorials/javascript/browserwindow
DTD를 선언시 document.documentElement.scrollTop 값 유효
DTD 미선언시 document.body.scrollTop 값 유효
But, 사파리 3.1.1 은 제 값 표시 안됨.
*/
function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

function createForm(at) {
	var f=document.createElement("form");
	f.method = "post";	// f.setAttribute("method","post");
	f.action = at;		// f.setAttribute("action","./cart.php");
	document.body.appendChild(f);
	return f;
}
function addHidden(f,n,v) {
  var i=document.createElement("input");
  i.type="hidden";	// i.setAttribute("type","hidden");
  i.name=n;			// i.setAttribute("name","cart");
  i.value=v;		// i.setAttribute("value","{\""+uid+"\":"+gd_ea+"}");
  f.appendChild(i);
}

/* Fade in, out Js
by Andrew Johnson (itnewb.com)
FF, IE6, Chrome 테스트 확인
*/

function setOpacity(eID, opacityLevel) {
    var eStyle = document.getElementById(eID).style;
    eStyle.opacity = opacityLevel / 100;
    eStyle.filter = 'alpha(opacity='+opacityLevel+')';
}

function fade(eID, startOpacity, stopOpacity, duration) {
    var speed = Math.round(duration / 100);
    var timer = 0;
    if (startOpacity < stopOpacity){ // fade in
        for (var i=startOpacity; i<=stopOpacity; i++) {
            setTimeout("setOpacity('"+eID+"',"+i+")", timer * speed);
            timer++;
        } return;
    }
    for (var i=startOpacity; i>=stopOpacity; i--) { // fade out
        setTimeout("setOpacity('"+eID+"',"+i+")", timer * speed);
        timer++;
    }
}

/*
	문서의 총 높이값 : 이 페이지의 맨 아래로 갈 때 window.scroll(0,getDocHeight()); 로 활용
	출처 : http://james.padolsey.com/javascript/get-document-height-cross-browser/
	It’s been tested in IE6/7, FF2/3, Safari (Windows), Google Chrome and Opera 9.5.
*/
function getDocHeight() {
	var D = document;
	return Math.max(
		Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
		Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
		Math.max(D.body.clientHeight, D.documentElement.clientHeight)
	);
}
/* 해당 id의 innerHTML을 비움 (ajax 후 loader 이미지 제거 등) */
function clearInner ( id ) {
	document.getElementById(id).innerHTML = "";
}
/* 국민은행 에스크로 */
function escrkb() {
	var ar = eval({"page":"B009111", "cc":"b010807:b008491", "mHValue":"7e9bb86954bcc994a852e42b53ed2130200909161711150"});
	var f = document.createElement("form");
	f.setAttribute("method","get");
	f.setAttribute("action","http://escrow1.kbstar.com/quics");
	f.target = "KB_AUTHMARK";
	document.body.appendChild(f);
	for ( j in ar ) {
		var i = document.createElement("input");
		i.setAttribute("type","hidden");
		i.setAttribute("name",j);
		i.setAttribute("value",ar[j]);
		f.appendChild(i);
	}
	window.open('','KB_AUTHMARK','height=604, width=648, status=yes, toolbar=no, menubar=no, location=no');
	f.submit();
}

/* 검색 폼 체크 */
function chkSch() {
	var rtn = false;
	var kw = _getId("sch_kw","v");
	if ( !kw ) {

		setVal ( "sch_note", "<span>검색어를 입력하세요.<\/span>", "html" );
		_focus("sch_kw");
	} else {
		rtn = true;
	}
	return rtn;
}
/* SWAP VALue */
function swapval ( id1, id2 ) {
	var o1 = _getId(id1);
	var o2 = _getId(id2);
	var s = o1.value;
	o1.value = o2.value;
	o2.value = s;
}

function bookmark(url, name) {	// 즐겨찾기에 추가
	var brs = false;
	if ( ua["ie"] ) { brs = "ie"; }
	if ( ua["firefox"] ) { brs = "ff"; }
	if ( window.opera && window.print ) {
		brs = "opera";
	} else {
		if ( ua["chrome"] ) {
			brs = "chrome";
		}
	}
	switch ( brs ) {
		case "ie" :
		case "opera" :
			window.external.AddFavorite(url, name);
			break;
		case "ff" :
			window.sidebar.addPanel(name, url, "");
			break;
		case "chrome" :
			alert ( "콘트롤 + D 로 북마크에 추가해 주세요." );
			break;
		default :
			alert ( "죄송합니다. 지원되지 않는 브라우저입니다." );
	}
}
function showGdIc ( sn, ev ) {
	if ( _getId("gdIc") ) {
		removeId("gdIc");
	}
	var pos = { "x":100, "y":100 };
	if ( ev ) {
	var pos = clickXY(ev);
	}
	// hideGdIc();
	// 창 크기 및 스크롤 정보를 통해 맨 오른쪽 또는 맨 아래에서 클릭시 캘린더 위치 보정
	var wSize = windowSize();
	var scr = getScrollXY();
	var defxy = [ (wSize[1]-(pos["y"]-scr[1])), (wSize[0]-(pos["x"]-scr[0])) ];
	if ( defxy[0] < 150 ) { pos["y"] -= (150 - defxy[0]); }
	if ( defxy[1] < 150 ) { pos["x"] -= (150 - defxy[1]); }
	pos["x"] += 5;
	pos["y"] += 5;
	var gdIc = document.createElement("div");
	gdIc.setAttribute("id", "gdIc");
	// gdIc.setAttribute("onmouseout", "removeId('gdIc')");
	gdIc.style.position = "absolute";
	gdIc.style.top = pos["y"]+"px";
	gdIc.style.left = pos["x"]+"px";
	_ajax( showGdIcOk, "http://casternet.com/neo/ajax/show_gds_ic.php?gds="+sn, gdIc );
}
function showGdIcOk ( str, gdIc ) {
	if ( str && gdIc ) {
		gdIc.innerHTML = str;
		document.body.appendChild(gdIc);
	} else {
		removeId("gdIc");
	}
}
function enter_ymd( e, o, kind, next_id ) {
	var o_v = only_num(o.value);
	o.value = o_v;
	var v_len = o_v.length;
	var v_ok = false;
	var kc = getKeyCode(e);
	if ( !( ( kc >= 48 && kc <= 57 ) || ( kc >= 96 && kc <= 105 ) ) ) { return false; }
	if ( !kind ) { return false; }
	switch ( kind ) {
	case 'y':
		if ( v_len > 3) {
			v_ok = true;
		}
		break;
	case 'm':
		switch ( v_len ) {
			case 1:
				if ( o_v > 1 ) {
					v_ok = true;
				}
				break;
			case 2:
				if ( o_v > 0 && o_v < 13 ) {
					v_ok = true;
				}
				break;
			default:
		}
		break;
	case 'd':
		switch ( v_len ) {
			case 1:
				if ( o_v > 3 ) {
					v_ok = true;
				}
				break;
			case 2:
				if ( o_v > 0 && o_v < 32 ) {
					v_ok = true;
				}
				break;
			default:
		}
		break;
	}
	if ( v_ok && next_id ) {
		_focus(next_id);
		_select(next_id);
	}
}

/*
	날짜 검증 (2012-02-04)
	ymd: yyyymmdd, yymmdd, mdd
	idnm(op): id || name
	nm_key(op): name의 key값, 이 값이 없을 경우 id
*/
function chk_ymd ( ymd, idnm, nm_key ) {
	var d = ymd.trim();
	var r = false;	// alert할 문자열
	var p = /\D+/g;	// non-digit character
	if ( p.test(d) ) { r = "날짜는 숫자로만 되어 있어야 합니다."; }
	if ( !r ) {
		var d_l = d.length;
		var o = false;	// focus할 객체
		var now = new Date();
		var nowAr = new Array( String(now.getFullYear()), String(now.getMonth()+1), String(now.getDate()) );
		if ( nowAr[1] < 10 ) { nowAr[1] = "0"+nowAr[1]; }
		switch ( d_l ) {
			case 0: return false; break;
			case 1: d = nowAr[0]+nowAr[1]+"0"+d; break;
			case 2: d = nowAr[0]+nowAr[1]+d; break;
			case 3: d = nowAr[0]+"0"+d; break;
			case 4: d = nowAr[0]+d; break;
			case 5: d = nowAr[0].substr(0,2)+"0"+d; break;
			case 6:
				if ( d.substr(0,2) < 70 ) { d = "20"+d; }
				else { d = "19"+d; }
				break;
			case 7: r = "날짜 자릿수는 7자리가 될 수 없습니다."; break;
			case 8: break;
			default: r = "날짜 자릿수가 8자리보다 클 수 없습니다.";
		}
	}
	/*
		20120230 과 같은 틀린 날짜 validation 구현 실패(2012-02-04)
	if ( !r && d.length == 8 ) {
		var d_d = new Date();
		d_d.setFullYear(d.substr(0,4)*1);
		d_d.setMonth(d.substr(4,2)*1);
		d_d.setDate(d.substr(6,2)*1);
		var d_d_ar = new Array( String(d_d.getFullYear()), String(d_d.getMonth()), String(d_d.getDate()) );
		if ( d_d_ar[1] < 10 ) { d_d_ar[1] = "0"+d_d_ar[1]; }
		if ( d_d_ar[2] < 10 ) { d_d_ar[2] = "0"+d_d_ar[2]; }
		var d_d_str = d_d_ar.join("");
		if ( d != d_d_str ) { r = '그런 날짜가 없는 것 같습니다.'+d_d_str; }
	}
	*/
	if ( idnm ) {
		if ( nm_key ) { o = document.getElementsByName(idnm)[nm_key] ? document.getElementsByName(idnm)[nm_key] : false; }
		else { o = document.getElementById(idnm) ? document.getElementById(idnm) : false; }
	}
	if ( r ) {
		alert ( r );
		if ( o ) {
			o.focus();
		}
		return false;
	} else {
		var dt = new Date();
		dt.setFullYear(d.substr(0,4)*1);
		dt.setMonth(d.substr(4,2)*1-1);
		dt.setDate(d.substr(6,2)*1);
		return (dt);	// return Date Object
	}
}
