﻿/*********************  CONSTANT DEFINE  모음 ************************/
// 작성일자 : 2010.02.04  JHOE
/*********************************************************************/
var WEB_ROOT_PATH	= "";

/*==================================================
 * 2010.02.04 JHOE
 * CONST 정의
 ==================================================*/
 
 
/**************  Common 관련 함수 모음 *******************************/
// 작성일자 : 2010.02.04 JHOE
/*********************************************************************/
/*==================================================
 * 문자열의 공백제거
 * 사용방법 : 문자열.trim() 또는 변수명.trim()
 ==================================================*/
String.prototype.trim = function() {
	return this.replace(/(^\s*)|(\s*$)/g, "");
}

String.prototype.ltrim = function() {
    return this.replace(/^\s*/, "");
}

String.prototype.rtrim = function() {
    return this.replace(/\s*$/, "");
}

String.prototype.replaceAll = function(replaceString) {
    return this.split(replaceString).join('');
}


// 인트형 변환. 
String.prototype.int = function() {
    // 문자가 1자리가 아니고 첫번째자리가 0이라면 코드로 인식해서 문자열을 리턴해준다. 
    if (this.length != 1 && this.substring(0, 1) == '0')
        return this;
    if (!isNaN(this)) {
        return parseInt(this, 10);
    }
    else {
        return this;
    }
}



/*==================================================
* 문자열이 숫자인지 판단. 
==================================================*/
String.prototype.isNumeric = function () {
    return /^\d+$/.test(this) ? true : false;
}




/*==================================================
 * 금액을 숫자로 변환하기 위한 함수
 * 사용방법 : 
 ==================================================*/
function gf_convtNumber(samt) {
	if(samt == "") return "0";
	var sPatt = /\,/g;  			// Pattern 정의
	var sVal = samt.replace(sPatt,"");  // comma를 blank로 변경
	return sVal;
}
/*==================================================
 * 숫자를 금액으로 변환
 * 사용방법 : 
 ==================================================*/
function gf_convtAmount(sval) {
	var sRst="";  // 결과값
	var iOrd=sval.length;  // 길이
	if((sval.substring(0,1)) == "-") {
		sval = sval.substring(1,iOrd);
		iOrd -= 1; sRst = "-";
	}
	for(var i = 0; i < sval.length; i++) {
		sRst += sval.substring(i,i+1);
		if(iOrd != 1 && (iOrd-1) % 3 == 0) sRst += ",";
		iOrd -= 1;
	}
	return sRst;
}

/*==================================================
 *  객체 활성/비활성 설정
 * 사용방법 : 
 ==================================================*/
function gf_setDisabled( obj, isTrue )
{
	obj.disabled = isTrue;
	
	if( true == isTrue )
	{
		obj.className = "disabled";
		obj.style.cursor = "not-allowed";
	}
	else
	{
		obj.className = "";
		obj.style.cursor = "pointer";	
	}
}

/*==================================================
* 2009.07.28 김정회
* 페이지 Url Refresh Ticks
==================================================*/
function gf_getTicks() { return new Date().getTime(); }

/*==================================================
 * 모달팝업
 ==================================================*/
function gf_windowOpenModal( url, arguments, width, height )
{
	return window.showModalDialog(url, arguments, "dialogWidth:" +width+ "px;dialogHeight:" +height+ "px;status:no;scroll:no");	
}

/*==================================================
 * 2009.11.10  KJHOE
 * 윈도우 팝업(모달리스)
 ==================================================*/
function gf_windowOpen(sUrl,sWinName,iWidth,iHeight)
{
	var left = (window.screen.width - iWidth) / 2;
	var top = (window.screen.height - iHeight) / 2;
	var winpos = "top="+top+",left="+left+",width="+ iWidth +",height="+iHeight;
	var winstyle = winpos + ",status=no,toolbar=no,menubar=no,location=no,resizable=yes,scrollbars=no,copyhistory=no";
	var popWin = window.open (sUrl, sWinName, winstyle);			
	popWin.focus();
	
	return popWin;
}
/*==================================================
* 2009.07.01 김민지 
* alert messagebox
* msg :알림 메세지
* autoclose : 자동닫기 설정 (true 이면 자동닫힘. default :true) 단. ex가 null 인경우에만 true값 적용됨
* closetime : 자동닫히는 시간설정 (default :1500 (1.5초))

gf_customAlert("처리되었습니다");
==================================================*/
function gf_customAlert(msg, autoclose, closetime)
{
    gf_customException('', null, msg, autoclose, closetime);
}

/*==================================================
* 2009.07.01 김민지 
* 에러처리:catch 에서 호출함
* func : 현재 함수명(exception 인경우 로그기록에 사용됨)
* ex : exception
* msg : 사용자 메세지 (빈값이면 시스템 메세지로 대체됨)
* autoclose : 자동닫기 설정 (true 이면 자동닫힘. default :true) 단. ex가 null 인경우에만 true값 적용됨
* closetime : 자동닫히는 시간설정 (default :1500 (1.5초))
catch (ex)
{
gf_customException( "testError", ex, "");      
   
gf_customException( "알림메세지", null, "처리되었습니다.", "",3000);        
}
==================================================*/
function gf_customException(func, ex, msg, autoclose, closetime)
{

    var url = "http://www.artgy.or.krs/CM/CM0003V.aspx"; 
    var paramObject = new Object();
    paramObject.Type = "Client";
    paramObject.Exception = ex;
    paramObject.UserMessage = msg;
    paramObject.SourceName = location.href;
    paramObject.Function = func;
    paramObject.AutoClose = autoclose == false ? false : true;//default:true( in case infomation, not error)
    paramObject.CloseTime = closetime;
    window.showModalDialog(url, paramObject, "dialogWidth: 400px; dialogHeight: 200px; edge:Sunken; help:No; resizable:Yes; status:No;scroll:No;");

}

/*==================================================
* 에러처리:디비에서 반환한 사용자메세지를 걸러낼 필요가 있을때 호출
* func : 현재 함수명
* msg : ajax 에러메세지 또는 ultraWarp 에러메세지

gf_ajaxException('btnReg_onClick', oResponse.error.Message);                 
gf_ajaxException('Warp1_ClientError', ig_shared.getCBManager().serverError);               
==================================================*/

function gf_ajaxException(func, msg)
{
    
    var regEx = /-999(.+)/;
    var sMsg = gf_regMatch(regEx, msg);    
    if (sMsg.length > 0)
    {     
        gf_customException(func, '', sMsg); //디비처리에 관련된 사용자메세지
    }
    else
    {    
        var ex = new gf_userException(msg);       
        gf_customException(func, ex) ;

    }
}

/*==================================================
* 사용자 에러메세지:exception을 new 해야할때
* msg : 사용자에러 메세지
throw new gf_userException('알수없는에러...어쩌구저쩌구');    
==================================================*/
function gf_userException(msg)
{
    this.message = msg;
    this.name = "UserException";
}


/*==================================================
* 표현식에 매칭되는 문장 뽑아냄
* regex : 표현식
* subject : 전체문장
var sMsg = gf_regMatch(/-999(.+)/, '-999항목코드값이 필요합니다.');
==================================================*/
function gf_regMatch(regex, subject)
{
    var sRtn = "";
    var regEx = new RegExp(regex);
    var regMatch = regEx.exec(subject);
    if (regMatch != null)
    {
        //var s = "Match at position " + m.index + ":\n";
        for (i = 0; i < regMatch.length; i++)
        {
            sRtn = regMatch[i] + "\n";
        }

    }
    return sRtn;
}


/*********************  REGURAR EXPRESSION 관련 함수 *****************/
// 작성일자 : 2010.02.04  
/*********************************************************************/
/*==================================================
 * 2009.06.25 JHOE
 * Right PAD 처리 / Left PAD
 * val	: 데이터값
 * ch	: 반복문자
 * num	: 반복회수
 ==================================================*/
function rPad(val, ch, num)
{
    var re = new RegExp("^.{" + num + "}");
    var pad = "";
    if (!ch) ch = " ";
    
    do {
        pad += ch;
    } while (pad.length < num);
    
    return re.exec(val + pad)[0];
}

function lPad(val, ch, num) {
    var re = new RegExp(".{" + num + "}$");
    var pad = "";
    if (!ch) ch = " ";
    do  {
        pad += ch;
    }while(pad.length < num);
    return re.exec(pad + val)[0];
}

/*==================================================
* 특수문자인지 아닌지 구분
* true 리턴이면 특수문자
==================================================*/
function IsExcChar(strValue)
{   
    var regEx = /["'+=<>]/;
    return regEx.test(strValue);
}

/**********************  Ajax pro 관련 함수 모음 *********************/
// 작성일자 : 2009.06.24  JHOE
/*********************************************************************/
/*==================================================
 * <select></select> 컨트롤 박스에 디폴트 값으로 초기화 설정
 * objSelectBox : 컨트롤 객체
 * defaultOption: new option("Name", "Value")
 ==================================================*/
function gf_setInitDefault_selectBox( objSelectBox, defaultOption )
{
	objSelectBox.options.length = 0;
	if( null != defaultOption )
	{	objSelectBox.options[objSelectBox.options.length] = defaultOption;	}	
}

/*==================================================
 * <select></select> 컨트롤 박스에 바인딩
 * objSelectBox : 컨트롤 객체
 * objDs		: ajax pro response.value(c# return DataSet)
 * defaultOption: new option("Name", "Value")
 ==================================================*/
function gf_dataBind_selectBox( objSelectBox, objDs, defaultOption )
{
	var defaultIdx = 0;
	objSelectBox.options.length = 0;
	
	if( null != defaultOption )
	{	objSelectBox.options[objSelectBox.options.length] = defaultOption;	defaultIdx = 1; }
		
	if( null == objDs ) return false;
	
	var objDt = objDs.Tables[0];
	for(var i = 0; i < objDt.Rows.length; i++)
	{
		objSelectBox.options[objSelectBox.options.length] = new Option( objDt.Rows[i].name, 
																		objDt.Rows[i].id );
	} 
	
	if( 1 == objDt.Rows.length ) 
	{	objSelectBox.options[defaultIdx].selected = true;  }
	
	return true;       
}

/*==================================================
 * 라디오버튼의 선택값 가져오기
 * ctrName	: 컨트롤 이름
 ==================================================*/
function gf_getRadioControlByName(ctrName)
{
	var radioButton = null;
	var radioButtons = document.getElementsByName(ctrName);
	
	for (var x = 0; x < radioButtons.length; x ++) 
	{
		if (radioButtons[x].checked) 
		{
			radioButton = radioButtons[x];
			break;
		}
	}
	
	return radioButton;
}


/*==================================================
* Request 파라미터 가져오기
* valuename : Request 파라미터 
===================================================*/
function gf_Request(valuename)    //javascript로 구현한 Request
{
    var rtnval;
    var nowAddress = unescape(location.href);
    var parameters = new Array();
    parameters = (nowAddress.slice(nowAddress.indexOf("?")+1,nowAddress.length)).split("&");
    for(var i = 0 ; i < parameters.length ; i++){
        if(parameters[i].indexOf(valuename) != -1){
            rtnval = parameters[i].split("=")[1];
            if(rtnval == undefined || rtnval == null){
                rtnval = "";
            }
            return rtnval;
        }
    }
}


function gf_page_print()
{
	window.print();
}






