	var _G_ZZ = {};
	
	var ajaxLoaderImage_ = new Image();
	ajaxLoaderImage_.src = "/static/images/ajax-loader.gif";
	
	var clientX_ = "400";
	var clientY_ = "300";
	
    var EBILL_showSubmitImage = false;
	var EBILL_submitImage = new Image();
	EBILL_submitImage.src = "/static/images/ajax-loader-bar-blue.gif";
	
	var code_ing_img     = new Image();
	code_ing_img.src = "/static/images/code_ing.gif";
	
	var make_xml_ing_img = new Image();
	make_xml_ing_img.src = "/static/images/make_xml_ing.gif";
	
	var process_ing_img  = new Image();
	process_ing_img.src = "/static/images/process_ing.gif";
	
	// Submit Image 생성 1:처리중, 2:xml생성중, 3:암호화중
	function cfShowSubmitImage(tp) {
		EBILL_showSubmitImage = true;
		var xWidth  = 0;
		var xHeight = 0;
		if(tp == null || tp == 1) {
			xWidth  = process_ing_img.width;
			xHeight = process_ing_img.height;
		} else if(tp == 2) {
			xWidth  = make_xml_ing_img.width;
			xHeight = make_xml_ing_img.height;
		} else {
			xWidth  = code_ing_img.width;
			xHeight = code_ing_img.height;
		}
		//$("body").append("<div id='submitImageDiv' style='width:250px;height:60px;text-align:center;background-color:#FFFFF0;border:2px solid #B0C4DE;padding:10px 10px 10px 10px;'><b>요청하신 서비스를 처리 중입니다.</b><br/><br/><img id='submitImage' src='' /></div>");
		$("body").append("<div id='submitImageDiv' style='width:"+xWidth+"px;height:"+xHeight+"px;text-align:center;background-color:#FFFFF0;border:2px solid #B0C4DE;padding:10px 10px 10px 10px;'><img id='submitImage' src='' /></div>");
		if(tp == null || tp == 1) $("#submitImage")[0].src = process_ing_img.src;
		if(tp == 2) $("#submitImage")[0].src = make_xml_ing_img.src;
		if(tp == 3) $("#submitImage")[0].src = code_ing_img.src;
		$("#submitImageDiv")[0].style.position = "absolute";
		$("#submitImageDiv")[0].style.left = (parseInt(cfGetWindowWidth())/2 - 135) + "px";
		$("#submitImageDiv")[0].style.top = (parseInt(cfGetWindowHeight())/2 - 40 + parseInt(cfGetScrollPositionY())) + "px";
	}
	
	// Submit Image 제거
	function cfRemoveSubmitImage() {
		if(EBILL_showSubmitImage) $("#submitImageDiv").remove();
	}
	
	function cfGetWindowWidth() {
		var myWidth = 0;
		  
		if( typeof( window.innerWidth ) == 'number' ) {
			//Non-IE
			myWidth = window.innerWidth;
		} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
			//IE 6+ in 'standards compliant mode'
			myWidth = document.documentElement.clientWidth;
		} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
			//IE 4 compatible
			myWidth = document.body.clientWidth;
		}
		
		return myWidth;
	}
	
	function cfGetWindowHeight() {
		var myHeight = 0;
		  
		if( typeof( window.innerWidth ) == 'number' ) {
			//Non-IE
			myHeight = window.innerHeight;
		} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
			//IE 6+ in 'standards compliant mode'
			myHeight = document.documentElement.clientHeight;
		} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
			//IE 4 compatible
			myHeight = document.body.clientHeight;
		}
		
		return myHeight;
	}
	
	function cfGetScrollPositionX() {
		var x = 0;
		
		// IE 외모든브라우저
		if (self.pageYOffset) {
			x = self.pageXOffset;
		}
		// Explorer 6 Strict 모드
		else if (document.documentElement&& document.documentElement.scrollTop) {
			x = document.documentElement.scrollLeft;
		}
		// 다른IE 브라우저
		else if (document.body) {
			x = document.body.scrollLeft;
		}
		
		return x;
	}	
	
	function cfGetScrollPositionY() {
		var y = 0;
		
		// IE 외모든브라우저
		if (self.pageYOffset) {
			y = self.pageYOffset;
		}
		// Explorer 6 Strict 모드
		else if (document.documentElement&& document.documentElement.scrollTop) {
			y = document.documentElement.scrollTop;
		}
		// 다른IE 브라우저
		else if (document.body) {
			y = document.body.scrollTop;
		}
		
		return y;
	}
	
	// Companion 적용을 위해 파일 인코딩을 반드시 UTF-8로 설정
	// JavaScript Debugging
	function cfDebug(obj) {
		if(window.console) {
			console.debug(obj);
		}
	}
	
	// 팝업 오픈
	function cfOpenWindow(url, winName, width, height, left, top) {
		var winProps = "toolbar=0,location=0,directories=0,status=yes,menubar=0,scrollbars=no,resizable=no"
		             + ",width=" + width + ",height=" + height;
		
		if(left!=null && left!="") winProps += ",left=" + left;
		if(top!=null && top!="") winProps += ",top=" + top;
		             
		var win = window.open(url, winName, winProps);

  		win.focus();
	}
	
	// 달력 팝업
	function cfOpenCalendarPopup(objectId, event, startYear, endYear, callback, fixed) {
		var extendParam = "";

		if(startYear!=null && startYear!="" && endYear!=null && endYear!="") {
			extendParam += "&startYear=" + startYear + "&endYear=" + endYear;
		}

		if(callback!=null && callback!="") {
			extendParam += "&callback=" + callback;
		}
		
		if(fixed!=null && fixed!="") {
			extendParam += "&fixed=" + fixed;
			
			var year = $("#" + objectId)[0].getOriginalValue().substring(0, 4);
			var month = parseInt($("#" + objectId)[0].getOriginalValue().substring(4, 6), 10) - 1; // 0으로 시작하면 반드시 10진수 처리
			
			extendParam += "&year=" + year;
			extendParam += "&month=" + month;
		}

		var url = "/ebill.zz.common.cmd.ShowCalendar.xx?objectId=" + objectId + extendParam;
		var winName = "Calendar";
		var winProps = "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=no,resizable=no,"
		             + "width=230,height=225,left=" + event.screenX + ",top=" + event.screenY;

		var win = window.open(url, winName, winProps);

  		win.focus();
	}
	
	// Table Row Color Change
	function cfChangeColor(obj, flag) {
		if(flag==true) {
			obj.style.backgroundColor="#EDFFC9";
		} else {
			obj.style.backgroundColor="#FFFFFF";
		}
	}
	
	// Add Attach File
	function cfAddAttachFile(attachFileListId) {
		var html = "<li>"
		         + '<input type="checkbox" name="chkAttachFile" />&nbsp;'
		         + '<input type="file" name="attachFile" id="attachFile" class="Ltext" />'
		         + "</li>";
		
		$("#" + attachFileListId).append(html);
	}
	
	// Delete Attach File
	function cfDelAttachFile() {
		$("input[name*='chkAttachFile']").each(function() {
			if(this.checked) {
				$(this).parent().remove();
			}
		});
	}
	
	// Check Attach File
	function cfCheckAttachFile() {
		var inx = 0;
		var ext = "";
		var result = true;
		
		$("input[type=file]").each(function() {
			inx = this.value.lastIndexOf(".");
			
			for(var i=0; i<ebill_attachFileDenyList.length; i++) {
				ext = this.value.substring(inx+1);
				
				if(ebill_attachFileDenyList[i]==ext.toLowerCase()) {
					alert("*." + ext + "파일은 업로드할 수 없습니다.");
					result = false;
					break;
				}
			}
		});	
		
		return result;
	}
	
	/*
	function cfGetIndex(objName) {
		var startInx = objName.indexOf("[") + 1;
		var endInx = objName.indexOf("]");
		
		var inx = objName.substring(startInx, endInx);
		
		return inx;
	}
	*/
	
	// File Download
	function cfDownloadFile(atchFileId, atchFileSeqno, atchFileNm, atchFilePathNm, jobTpCd) {
		var doc = top.topFrame.document;
		
		doc.getElementById("atchFileId").value = atchFileId;
		doc.getElementById("atchFileSeqno").value = atchFileSeqno;
		doc.getElementById("atchFileNm").value = atchFileNm;
		doc.getElementById("atchFilePathNm").value = atchFilePathNm;
		doc.getElementById("jobTpCd").value = jobTpCd;
		
		var frm = doc.getElementById("downloadForm");
		
		frm.action = "/ebill.zz.atchFileMgmt.cmd.DownloadFile.zz";
		frm.submit(true); // form 객체의 원래 submit 호출
		
		// 이전 값 Clear
		doc.getElementById("atchFileId").value = "";
		doc.getElementById("atchFileSeqno").value = "";
		doc.getElementById("atchFileNm").value = "";
		doc.getElementById("atchFilePathNm").value = "";
		doc.getElementById("jobTpCd").value = "";
	}
	
	// File Download
	function cfDownloadFileAtFs(atchFileNm, atchFilePathNm, jobTpCd) {
		var doc = top.topFrame.document;
		
		doc.getElementById("atchFileNm").value = atchFileNm;
		doc.getElementById("atchFilePathNm").value = atchFilePathNm;
		doc.getElementById("jobTpCd").value = jobTpCd;
		
		var frm = doc.getElementById("downloadForm");
		frm.action = "/ebill.zz.atchFileMgmt.cmd.DownloadFileAtFs.zz";
		frm.submit(true); // form 객체의 원래 submit 호출
		
		// 이전 값 Clear
		doc.getElementById("atchFileNm").value = "";
		doc.getElementById("atchFilePathNm").value = "";
		doc.getElementById("jobTpCd").value = "";
	}
	
	var ajaxCallback;
	
	// AJAX Submit
	function cfAjaxSubmit(targetUrl, params, callback) {
		$("#ajaxLoaderImageDiv").remove();
		
		$("body").append("<div id='ajaxLoaderImageDiv'><img id='ajaxLoaderImage' src='' /></div>");
		$("#ajaxLoaderImage")[0].src = ajaxLoaderImage_.src;
		$("#ajaxLoaderImageDiv")[0].style.position = "absolute";
		$("#ajaxLoaderImageDiv")[0].style.left = clientX_ + "px";
		$("#ajaxLoaderImageDiv")[0].style.top = clientY_ + "px";
		
		params["EBILL_AJAX_PARAM"] = "ajax";
		ajaxCallback = callback;
		
		$.ajax({
			url:targetUrl,
			type:'POST',
			data:params,
			dataType:'xml',
			timeout:0,
			error:cfAjaxSubmitErrorHandler,
			success:cfExecuteAjaxSubmitCallback
		});
	}
	
	function cfExecuteAjaxSubmitCallback(xml) {
		$("#ajaxLoaderImageDiv").remove();
		
		var sessionCheck = "";
	
		$(xml).find("record").each(function() {
			sessionCheck = $("sessionCheck", $(this)).text();
		});
       		
		if(sessionCheck=="false") {
			alert("세션이 만료되어 로그인 페이지로 이동합니다.");
			
			if(opener) {
				opener.top.location.href = "/";
				self.close();
			} else {
				top.location.href = "/";
			}
		} else {
			ajaxCallback(xml);
		}
	}
	
	function cfAjaxSubmitErrorHandler(XMLHttpRequest, textStatus, errorThrown) {
		$("#ajaxLoaderImageDiv").remove();
		
		if(textStatus=="parsererror") {
			alert("서버에서 에러가 발생하였습니다. 관리자에게 문의하십시오.")
		} else if(textStatus=="error") {
			alert("서버가 응답하지 않습니다. 관리자에게 문의하십시오.")
		} else {
			alert("[" + textStatus + "]");
		}
	}
	
	// AJAX 호출 결과 XML을 Select Box Option에 추가
	function cfSetSelectBox(obj, xml, selectedValue) {
		// option 삭제
		$(obj).empty();
		
		// option 추가
		$(xml).find("record").each(function() {
			var record = $(this);       		
       		
       		//cfDebug($("value", record).text() + "/" + $("text", record).text());
       		
       		var oOption = document.createElement("option");
       		var oText = document.createTextNode($("text", record).text());
			
			oOption.setAttribute("value", $("value", record).text());
			
			// 조회조건 유지
			if(selectedValue && selectedValue==$("value", record).text()) {
				oOption.setAttribute("selected", true);
			}
			
			oOption.appendChild(oText);
			
			obj.appendChild(oOption);
		});
	}
	
	/**
	 * @type   : function
	 * @access : public
	 * @desc   : 공통 메시지에 정의된 메시지를 alert box로 보여준 후 리턴한다.
	 * @sig    : code[, arguments[, separator]]
	 * @param  : code - required - message.js에 선언된 메시지 코드
	 * @param  : arguments - optional - 메시지에서 '@' 문자와 치환될 데이터
	 * @param  : separator - optional - 파라메터 구분자
	 * @return : 치환된 메시지 스트링
	 * @author : 구본규
	 */
	function cfAlert(code, arguments, separator) {
		if(cfIsNull(code)) {
			alert("존재하지 않는 메시지입니다.");
			return null;
		}
	
		var message = cfGetMessage(code, arguments, separator);
		alert(message);
		return message;
	}
	
	/**
	 * @type   : function
	 * @access : public
	 * @desc   : 공통 메시지에 정의된 메시지를 confirm box로 보여준 후 리턴한다.
	 * @sig    : code[, arguments[, separator]]
	 * @param  : code - required - message.js에 선언된 메시지 코드
	 * @param  : arguments - optional - 메시지에서 '@' 문자와 치환될 데이터
	 * @param  : separator - optional - 파라메터 구분자
	 * @return : 치환된 메시지 스트링
	 * @author : 구본규
	 */
	function cfConfirm(code, arguments, separator) {
		 window.status = "";
		if(cfIsNull(code)) {
			alert("존재하지 않는 메시지입니다.");
			return null;
		}
	
		return confirm(cfGetMessage(code, arguments, separator));
	}
	
	/**
	 * @type   : function
	 * @access : public
	 * @desc   : 공통 메시지에 정의된 메시지를 prompt box 로 보여준다.
	 * @sig    : code[, arguments[, separator[, defaultValue]]]
	 * @param  : code - required - message.js에 선언된 메시지 코드
	 * @param  : arguments - optional - 메시지에서 '@' 문자와 치환될 데이터
	 * @param  : separator - optional - 파라메터 구분자
	 * @param  : defaultValue - optional prompt box 의 입력필드에 보여줄 기본값
	 * @return : 입력받은 String 혹은 Integer 타입의 데이터
	 * @author : 구본규
	 */
	function cfPrompt(code, arguments, separator, defaultValue) {
		if(cfIsNull(code)) {
			alert("존재하지 않는 메시지입니다.");
			return null;
		}
	
		return prompt(cfGetMessage(code, arguments, separator), defaultVal);
	}
	
	/**
	 * @type   : method
	 * @access : public
	 * @desc   : 공통메시지에 정의된 메시지를 치환하여 리턴한다.
	 * @sig    : code[, arguments[, separator]]
	 * @param  : code - required - message.js에 선언된 메시지 코드
	 * @param  : arguments - optional - 메시지에서 '@' 문자와 치환될 데이터
	 * @param  : separator - optional - 파라메터 구분자
	 * @return : 치환된 메시지 스트링
	 * @author : 구본규
	 */
	function cfGetMessage(code, arguments, separator) {
		if(cfIsNull(code)) {
			return null;
		}
	
		var message = "";
		
		for(var i=0; i<EBILL_MESSAGES.length; i++) {
			message = EBILL_MESSAGES[i][code];
			
			if(message!=null && message!="") {
				break;
			}
		}
		
		if(arguments!=null) {
			if(separator==null) {
				message = message.replace("@", arguments);
			} else {
				var argumentArray = arguments.split(separator);
				var index = 0;
				var count = 0;
				
				while( (index = message.indexOf("@", index)) != -1 ) {
					message = message.replace("@", argumentArray[count]);
					count++;
				}
			}
		}
		
		return message;
	}
	
	/**
	 * @type   : function
	 * @access : public
	 * @desc   : 값이 null 이거나 white space 문자로만 이루어진 경우 true를 리턴한다.
	 * @sig    : obj
	 * @param  : obj - required 입력값
	 * @return : boolean
	 * @author : 구본규
	 */
	function cfIsNull(obj) {
		if( obj==null || (typeof(obj)=="string" && obj.trim()=="") ) {
			return true;
		}
	
		return false;
	}
	
	function cfGoPage(page){
		var pageFunction = $("#PAGE_FUNCTION");
		
		if(pageFunction!=null && pageFunction[0]!=null && pageFunction[0].value!="") {
			if(!eval(pageFunction[0].value)) return;
		}
		
		var currentPage = document.getElementById("currentPage_");
		currentPage.value = page;
		currentPage.form.submit();
	}
	function cfGoXecurePage(page){
		var pageFunction = $("#PAGE_FUNCTION");
		
		if(pageFunction!=null && pageFunction[0]!=null && pageFunction[0].value!="") {
			if(!eval(pageFunction[0].value)) return;
		}
		cfAppendXecureForm();
		cfAppendXecureInput();
		var currentPage = document.getElementById("currentPage_");
		currentPage.value = page;
		currentPage.form.submit();
	}
	function cfGetRowPerPage(){
		var pageFunction = $("#PAGE_FUNCTION");
		
		if(pageFunction!=null && pageFunction[0]!=null && pageFunction[0].value!="") {
			if(!eval(pageFunction[0].value)) return;
		}
		cfAppendXecureForm();
		cfAppendXecureInput();
		document.getElementById("currentRowCntPerPage_").form.submit();
	}
	
	function cfToggleCheckbox(toggleboxObj, checkboxName) {
		$("input[name*='" + checkboxName + "']").each(function() {
			this.checked = toggleboxObj.checked;
		});
	}
	
	function cfIsChecked(checkboxName) {
		var result = false;
		
		$("input[name*='" + checkboxName + "']").each(function() {
			if(this.checked) result = true;
		});
		
		return result;
	}
	
	function cfGetEventSource(event) {
		if(event.target) return event.target;
		else return event.srcElement;
	}
	
	var addDateCallback;
	
	function cfAddDate(addDate, callback, skipHoliday, date) {
		addDateCallback = callback;
		
		if(!skipHoliday) skipHoliday = false;
		if(!date) date = "";
		
		cfAjaxSubmit( "/ebill.zz.common.cmd.DateUtil.xx", 
				      {"addDate":addDate,"skipHoliday":skipHoliday,"date":date},
				      cfAddDateCallback );
	}	
	 
	function cfAddDateCallback(xml) {
		$(xml).find("record").each(function() {
			var date = $("date", $(this)).text();
			
			addDateCallback(date);
		});
	}
	
	//현재날짜시간 가져오기
	//addDate -> 2:yyyyMMddHHmmss, 그외:yyyyMMdd
	var curDateCallback;

	function cfCurDate(callback, fg) {
		curDateCallback = callback;
		if(fg == null) fg = 0; 
		//window.status = ".";
		cfAjaxSubmit( "/ebill.zz.common.cmd.DateUtil.xx", 
			      {"addDate":fg,"skipHoliday":false,"date":"curDate"},
				      cfCurDateCallback );
	}	
	 
	function cfCurDateCallback(xml) {
		//window.status = "..";
		$(xml).find("record").each(function() {
			//window.status = "...";
			var date = $("date", $(this)).text();
			
			curDateCallback(date);
		});
	}
	
	var modalTimeId = null;
	
	function cfEnableModal() {
		clearTimeout(modalTimeId);
		
		var bodyObj = $("body")[0];
		
		bodyObj.style.backgroundColor = "#EEEEEE";
		
		$("body").append("<div id='modalDiv'/>");
		
		var modalDiv = $("#modalDiv")[0];
		modalDiv.style.position = "absolute";
		modalDiv.style.left = "0";
		modalDiv.style.top = "0";
		modalDiv.style.backgroundColor = "#EEEEEE";
		modalDiv.style["-ms-filter"] = "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; // IE 8
		modalDiv.style.filter = "alpha(opacity=50)"; // IE 5~7
		modalDiv.style.opacity = 0.5; // all other browser
		modalDiv.style.zIndex = 9999; //
		
		// IE
		if(!self.innerHeight) {
			modalDiv.style.width = bodyObj.scrollWidth + "px";
			modalDiv.style.height = bodyObj.scrollHeight + "px";
		}
		// Others
		else {
			modalDiv.style.width = (bodyObj.scrollWidth) + "px";
			modalDiv.style.height = (bodyObj.scrollHeight + 20) + "px";
			
			$(window).bind("scroll", cfModalScrollHandler);
		}
		/*
		$("select").each(function(){
			if(this.readOnly != "readOnly") this.disabled = "disabled";			
		});
		*/
	}
	
	function cfModalScrollHandler(event) {
		if($("#modalDiv")[0]) {
			var scrollLeft = 0;
			
			if(document.documentElement) scrollLeft = document.documentElement.scrollLeft;
			else scrollLeft = document.body.scrollLeft;
			
			$("#modalDiv")[0].style.left = scrollLeft + "px";
		}
	}
	
	function cfGetWindowSize() {
		var width, height;
		
		// IE 외 모든 브라우저
		if(self.innerHeight) {
			width = self.innerWidth;
			height = self.innerHeight;
		}
		// IE6 Strict 모드
		else if(document.documentElement && document.documentElement.clientHeight) {
			width = document.documentElement.clientWidth;
			height = document.documentElement.clientHeight;
		}
		// 다른 IE 브라우저
		else if(document.body) {
			width = document.body.clientWidth;
			height = document.body.clientHeight;
		}
		
		return { width:width, height:height };
	}

	
	function cfDisableModal() {
		modalTimeId = setTimeout("cfDisableModalInner()", 300);
	}
	
	function cfDisableModalInner() {
		if($("#modalDiv")) {
			$(window).unbind("scroll", cfModalScrollHandler);
			$("#modalDiv").remove();
			$("body")[0].style.backgroundColor = "#FFFFFF";
		}
		/*
		$("select").each(function(){
			if(this.readOnly != "readOnly") this.disabled = "";			
		});
		*/
	}
	
	_G_ZZ.reportParamsList = new Array();
	
	function cfAddReportParams(paramName, params) {
		_G_ZZ.reportParamsList.push([paramName, params]);
	}
	
	// prepared==true인 경우 params는 Array type,
	// prepared==false인 경우 params는 JSON type
	// jsonParams : 화면에만 출력하는 파라메터
	function cfOpenReport(reportUrl, params, prepared, jsonParams, dataType) {
		var oRptMainParam = rex_GetgoDictionay();

		// 필수 - 레포트명
		oRptMainParam.put("rex_rptname", "http://" + location.host + "/rexpert/report" + reportUrl);
		// 필수 - 데이터 타입 설정
		if(dataType==null || dataType==undefined) {
			oRptMainParam.put("rex_datatype", "XML");
		} else {
			oRptMainParam.put("rex_datatype", dataType);
		}
		
		// 옵션 - 파라메터 설정
		if(prepared) {
			if(params!=null && params!=undefined) {
				oRptMainParam.put("rex_param_sql", params);
				
				for(var i=0; i<params.length; i++) {
					oRptMainParam.put(params[i][0], "?"); // 변수명에 해당하는 파라메터 값을 "?"로 치환
				}
			} else {
				var tempParamSet = null;
				var tempParams = null;
				//alert(_G_ZZ.reportParamsList.length);
				while(_G_ZZ.reportParamsList.length>0) {
					tempParamSet = _G_ZZ.reportParamsList.pop();
					
					if(tempParamSet[0]=="") {
						oRptMainParam.put("rex_param_sql", tempParamSet[1]);
					} else {
						oRptMainParam.put("rex_param_sql_" + tempParamSet[0], tempParamSet[1]);
					}
					
					var tempParams = tempParamSet[1];
					
					for(var i=0; i<tempParams.length; i++) {
						oRptMainParam.put(tempParams[i][0], "?"); // 변수명에 해당하는 파라메터 값을 "?"로 치환
					}
				}
			}
			
			if(jsonParams!=null && jsonParams!=undefined) {
				for(var key in jsonParams) {
					oRptMainParam.put(key, jsonParams[key]);				
				}
			}
		} else {
			for(var key in params) {
				oRptMainParam.put(key, params[key]);				
			}
		}
		
		// preview 팝업 열기
		rex_gfRexRptOpen("popup", oRptMainParam);
	}
	
	
function cfOpenReport30(reportUrl, params, prepared, jsonParams, dataType) {

	var oReport = GetfnParamSet();
	//alert("http://" + location.host + "/rexpert/report" + reportUrl);

	oReport.rptname = reportUrl;
	oReport.datatype = "xml";
	if(prepared) {
		if(params!=null && params!=undefined) {
		
			//oReport.param("rex_param_sql").value = params;

			
			for(var i=0; i<params.length; i++) {
				
				//oReport.param(params[i][0]).value = "?";
				
			}
		} else {
			var tempParamSet = null;
			var tempParams = null;
			//alert(_G_ZZ.reportParamsList.length);
			while(_G_ZZ.reportParamsList.length>0) {
				
				tempParamSet = _G_ZZ.reportParamsList.pop();
				
				if(tempParamSet[0]=="") {
			
					//oReport.param("rex_param_sql").value = tempParamSet[1];
				} else {
				
					//oReport.param("rex_param_sql").value =  tempParamSet[0], tempParamSet[1];
				}
				
				var tempParams = tempParamSet[1];
			
				for(var i=0; i<tempParams.length; i++) {
					oReport.param(tempParams[i][0]).value = "'" + tempParams[i][1] + "'";
				}
				
			}
		}
		
		if(jsonParams!=null && jsonParams!=undefined) {
			for(var key in jsonParams) {
				oReport.param(key).value =  jsonParams[key];
							
			}
		}
	} else {
		for(var key in params) {
			oReport.param(key).value = params[key];		
		}
	}	
		


		oReport.connectname = "oracle_jndi";
		// preview 팝업 열기
		oReport.open();
		//rex_gfRexRptOpen("popup", oRptMainParam);
	}	
	
	$(document).ready(function() {
		$(document).bind("click", function(event) {
			clientX_ = event.clientX;
			clientY_ = event.clientY;
		});
	});