// JavaScript Document

/**---------------------------------------------------------
 * 문자열 자르기(한글, 영문 상관없이 자릿 수로 결정)
 * ex) str.strcut(len)
 * @param len	제한문자수
 * @return 자른문자열
-----------------------------------------------------------*/
String.prototype.strcut = function(len,coma) {
 	var str = this;
	if(!coma) coma = '';
	return str.substring(0,len)+coma;
}

/**---------------------------------------------------------
 * 좌우 공백 제거
 * ex) str.trim()
 * @param NULL
 * @return 좌우공백을 제거한 문자열
-----------------------------------------------------------*/
String.prototype.trim = function()
{
  	return this.replace(/(^\s*)|(\s*$)/g, '');
}

/**---------------------------------------------------------
 * 텍스트 좌측 부분의 공백 제거
 * ex) str.ltrim()
 * @param NULL
 * @return 좌측공백을 제거한 문자열
-----------------------------------------------------------*/
String.prototype.ltrim = function()
{
	var count = 0;

	for( i = 0; i < this.length; i++ )
		{
		if( this.charAt(i) == ' ' )
			count++;
		else
			break;
	}
	return this.substring(count);
}

/**---------------------------------------------------------
 * 텍스트 우측 부분의 공백 제거
 * ex) str.rtrim()
 * @param NULL
 * @return 우측공백을 제거한 문자열
-----------------------------------------------------------*/
String.prototype.rtrim = function()
{
	var count = 0;

	for( i = this.length - 1; i >= 0; i-- )
	{
		if( this.charAt(i) == ' ' )
			count++;
		else
			break;
	}
	return this.substring(0,count);
}

/**---------------------------------------------------------
 * 문자열 총 바이트 수 구하기.
 * 한글 2byte, 영문 1byte
 * ex) str.bytes()
 * @param NULL
 * @return 문자열 bytes
-----------------------------------------------------------*/
String.prototype.bytes = function() {
 	var size = 0;
 	for (var i=0; i<this.length; i++) size += (this.charCodeAt(i) > 128) ? 2 : 1;
 	return size;
}

/**---------------------------------------------------------
 * 문자열 공백제거
 * "a a a a" => "aaaa"
 * ex) str.spaceRemove();
 * @param str 공백을 제거할 문자열
 * @return 문자열에 포함된 모든 공백문자를 제거한 문자열
-----------------------------------------------------------*/
String.prototype.spaceRemove = function(){
	return this.replace(/ /g, "");
}

/**---------------------------------------------------------
 * 문자열 공백확인
 * "a a a a" => true
 * ex) isSpaceContain(str);
 * @param str 공백을 확인할 문자열
 * @return 공백포함 시 true, 아니면 false
-----------------------------------------------------------*/
function isSpaceContain(str){
	if(str.indexOf(" ") >= 0) return true;
	return false;
}

/**---------------------------------------------------------
 * 새창 팝업
 * ex) popWindow('../popup.php','popup',300,300,'no','no','no');
 * @param url 새창에 뛰울 페이지 경로
 * @param name 새창이름
 * @param width 새창 width
 * @param height 새창 height
 * @param status 새창 상태바 유무
 * @param scrollbars 새창 스크롤바 유무
 * @return null
-----------------------------------------------------------*/
function popWindow(url, name, width, height, status, scrollbars, resize) {
	var window_left = (screen.width-width)/2;
	var window_top = (screen.height-height)/2;
	openwin = window.open(url,name,'resizable='+resize+',width='+width+',height='+height+',status='+status+',scrollbars='+scrollbars+',top='+ window_top+',left='+ window_left+'');
	if (openwin == null){
		alert("차단된 팝업창을 허용해 주십시오.");
	}
}

/**---------------------------------------------------------
 * 설정된 쿠키 value를 가져온다.
 * ex) getCookie('test');
 * @param 	string	name
 * @return 	string	value
-----------------------------------------------------------*/
function getCookie(name){
  	var dc = document.cookie;
  	var prefix = name + "=";
  	var begin = dc.indexOf("; " + prefix);
  	if (begin == -1){
		begin = dc.indexOf(prefix);
		if (begin != 0) return null;
  	}else begin += 2;
  	var end = document.cookie.indexOf(";", begin);
  	if (end == -1) end = dc.length;
	return unescape(dc.substring(begin + prefix.length, end));
}

/**---------------------------------------------------------
 * 설정된 쿠키 제거한다.
 * ex) delCookie('test');
 * @param 	string	name
 * @param 	string	path
 * @param 	string	domain
 * @return 	void
-----------------------------------------------------------*/
function delCookie(name,path,domain){
	var argc = delCookie.arguments.length; 		//setCookie 함수의 매개변수 개수
  	var argv = delCookie.arguments; 			//setCookie 함스의 매개변수 배열
  	var path = (argc>1) ? argv[1] : '/'; 		// 매개변수가 2개 이상이면 2번째 매개변수는 path를 위한 값
  	var domain = (argc>2) ? argv[2] : null; 	// 매개변수가 3개 이상이면 3번째 매개변수는 domain를 위한 값

	if(getCookie(name)){
		document.cookie = name + "=" +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		"; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}

/**---------------------------------------------------------
 * 설정된 쿠키 value를 가져온다.
 * ex) setCookie('test','1',86400,'/','.yscac.com');
 * @param 	string	name
 * @param 	string	value
 * @param 	string	expires
 * @param 	string	path
 * @param 	string	domain
 * @param 	string	secure
 * @return 	void
-----------------------------------------------------------*/
function setCookie(name,value,expires,path,domain,secure){
	var argc = setCookie.arguments.length; 		//setCookie 함수의 매개변수 개수
  	var argv = setCookie.arguments; 			//setCookie 함스의 매개변수 배열
  	var expires = (argc>2) ? argv[2] : null; 	// 매개변수가 3개 이상이면 3번째 매개변수는 expires를   위한 값
  	var path = (argc>3) ? argv[3] : '/'; 		// 매개변수가 4개 이상이면 4번째 매개변수는 path를 위한 값
  	var domain = (argc>4) ? argv[4] : null; 	// 매개변수가 5개 이상이면 5번째 매개변수는 domain를   위한 값
  	var secure = (argc>5) ? argv[5] : false; 	// 매개변수가 6개 이상이면 6번째 매개변수는 secure를   위한 값
	if(expires){
		var timestamp = 1000*expires;
		var today = new Date();
		expires = new Date();
		expires.setTime(today.getTime()+timestamp);
	}
  	var cookie = name + "=" + escape(value) +
		((expires) ? "; expires=" + expires.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure==true) ? "; secure" : "");
	document.cookie = cookie;
}

/**---------------------------------------------------------
 * 설정된 쿠키 value를 설정한다.
 * ex) setCookie('test',{key:value},expires,path,domain,secure);
 * @param 	string	name
 * @param 	{}		key:value
 * @param 	string	expires
 * @param 	string	path
 * @param 	string	domain
 * @param 	string	secure
 * @return 	void
-----------------------------------------------------------*/
function setMultiCookie(name,object,expires,path,domain,secure){
	var cdata;
	if(getCookie(name) == null) cdata = $H({});
	else cdata = $H(getCookie(name).toQueryParams());
	var data = $H(object);
	var value = cdata.merge(data).toQueryString();
	setCookie(name,value,expires,path,domain,secure);
}

/**---------------------------------------------------------
 * 설정된 쿠키 value를 가져온다.
 * ex) getCookie('test','key');
 * @param 	string	name
 * @param 	string	value
 * @param 	string	expires
 * @param 	string	path
 * @param 	string	domain
 * @param 	string	secure
 * @return 	void
-----------------------------------------------------------*/
function getMultiCookie(name,key){
	var cobject = getCookie(name).toQueryParams();
	if(cobject[key] === undefined) return '';
	return cobject[key];
}

/**---------------------------------------------------------
 * 설정된 쿠키 제거한다.
 * ex) delCookie('test','key','/','.yscac.com');
 * @param 	string	name
 * @param 	string	key
 * @param 	string	path
 * @param 	string	domain
 * @return 	void
-----------------------------------------------------------*/
function delMultiCookie(name,key,expires,path,domain,secure){
	var cdata = $H(getCookie(name).toQueryParams());
	var retValue = cdata.remove(key);
	var value = cdata.toQueryString();
	setCookie(name,value,expires,path,domain,secure);
	return retValue;
}


/**---------------------------------------------------------
 * 콤마 제거
 * '1,234' => '1234'
 * ex) rmComma(str);
 * @param str ,를 없앨 문자열
 * @return ,를 없앤 문자열
-----------------------------------------------------------*/
function rmComma(str) {
    return str.replace(/,/gi,"");
}

/**---------------------------------------------------------
 * 숫자문자열에 ,를 포함해서 리턴한다.
 * '1234' => '1,234'
 * ex) number_format(str);
 * @param str 숫자/숫자문자열
 * @return 화폐단위로 리턴(,포함)
-----------------------------------------------------------*/
function number_format(str) {
	var str = String(str).replace(/,/gi,"");
	var regexp = new RegExp('([0-9])([0-9][0-9][0-9][,.])');
	var split_str = str.split('.'); split_str[0] += '.';
	do {
		split_str[0] = split_str[0].replace(regexp, '$1,$2');
	}while(regexp.test(split_str[0]));
	if (split_str.length > 1) return split_str.join('');
	else return split_str[0].split('.')[0];
}

/*---------------------------------------------------
 * 포멧변경 함수(1 - > 01로 만드는 함수)
 * 자릿수만큼 앞을 0으로 채운다.
 * param n 자릿수
 * return 변경 포멧
-------------------------------------------------------*/
function formatN(str,n){
	var n = parseInt(n,10);
	var str = String(str);
	if(str.length < n){
		for(var i=str.length;i<n;i++)
			str = (String(0)+String(str));
	}
	return str;
}


/**---------------------------------------------------------
 * iframe resize 함수 (FF,IE,NS,OPREA 유효)
 * ex) <iframe name="myframe" src="content.php" onload="doReSize(this,400,500)" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" style="overflow:visible; width:100%; display:none"></iframe>
 * @param obj			iframe 객체
 * @param minHeight		최소 height 설정
 * @param maxHeight		최대 height 설정
 * @return null
-----------------------------------------------------------*/
function doReSize(obj,minHeight,maxHeight){
	obj.style.display="block";
	if(obj.contentDocument) obj.style.height = obj.contentDocument.body.offsetHeight;
	else if(obj.Document.body) obj.style.height = obj.Document.body.scrollHeight;
	if(obj.contentWindow.document.body) obj.style.height = obj.contentWindow.document.body.scrollHeight;

	// min height config
	if(arguments.length >= 2) if(minHeight > 0 && obj.style.height < minHeight) obj.style.height = minHeight;
	// max height config
	if(arguments.length >= 3) if(maxHeight > 0 && obj.style.height > maxHeight) obj.style.height = maxHeight;
}



/*---------------------------------------------------
 * TEXTAREA 글자수 제한
 * TEXTAREA에 maxlength로 제한 글자수를 설정한다.
 * 한글,영문 상관없이 자릿수에 의해 제한한다.
 * <TEXTAREA maxlength="200"... onkeyup="textAreaLimit(this)"></TEXTAREA>
 * param n 자릿수
 * return 변경 포멧
-------------------------------------------------------*/
function textAreaLimit(target){
 	var tbox = getTarget(target);
 	var maxLen = tbox.getAttribute("maxlength");
 	var tLen = tbox.value.length;
	if(maxLen < tLen) {
		alert(maxLen+'자리로 입력을 제한합니다!');
		tbox.value = tbox.value.substring(0,maxLen);
	}
	return;
}

// 브라우져별 즐겨찾기
function bookmark(title,url){
	// firefox
	if (window.sidebar) {
		window.sidebar.addPanel(title, url, '');
	}
	// opera
	else {
		if (window.opera && window.print) {
			var elt = document.createElement('a');
			elt.setAttribute('href', url);
			elt.setAttribute('title', title);
			elt.setAttribute('rel', 'sidebar');
			elt.click();
		}
		// ie
		else {
			window.external.AddFavorite(url, title);
		}
	}
}

