_import_js("prototype.js");
_import_js("lib/cookie.js");
_import_js("lib/string.js");
_import_js("lib/window.js");
_import_js("lib/event.js");
_import_js("lib/Message.js");
_import_js("lib/Validator.js");
_import_js("lib/Loadingbar.js");
_import_js("lib/default.js");
_import_js("lib/upload.js");
_import_js("lib/company_add.js");
_import_js("lib/quick_link.js");
_import_js("lib/flash.js");
_import_js("lib/dateUtil.js"); 

_import_js("yui/build/yahoo-dom-event/yahoo-dom-event.js");
_import_js("yui/build/element/element-beta-min.js");
_import_js("yui/build/button/button-min.js");
_import_js("yui/build/calendar/calendar.js");
_import_js("yui/build/treeview/treeview-min.js"); /** tree **/
_import_js("yui/build/utilities/utilities.js");
_import_js("yui/build/container/container.js");


var _ajaxDebug_ = false;
var _submitted_ = false;
var _locale_ = "ko";
var _sortInfo_ = {colIndex : -1, sort : "", formid : "", tableid : ""};
var _loadingBar_ = null;
var _listAlways_ = "N";
var _validator_ = null;
var _printAction_ = "";
var _nowAttatchSetId_=null;
var _nowAttatchListId_=null;
var _historyPageUrl_ = "";
var _ajaxHistory_ = {};
var _historyIndex_ = 0;
var _ctxPath_ = "";

var keepCookies = new Array("JSESSIONID", "REMEMBERME"); // 쿠키 초기화 제외 변수
                            

function _import_js(jsFile) {
	document.write("<script language='javascript' src='" + _getSourcePath("functions.js") + jsFile + "'></script>");
}
function _import_css(cssFile) {
	document.write("<link rel='stylesheet' type='text/css' href='" + _getSourcePath("functions.js") + cssFile + "'></link>");
}
function _getSourcePath(src) {
    var gsSrcPath = "";
	var scripts = document.getElementsByTagName("script");
	for (var i=0; i < scripts.length; i++) {
        if (scripts[i].src.match(src)) {
            gsSrcPath = scripts[i].src.replace(src, "");
            break;
        }
    }
    scripts = null;
	return gsSrcPath;
}
/**
 * DIV 프린트 팝업 
 */
function fnGoPrint(contentid, width, height) {
	var param = {area : contentid}
	popupModal(_printAction_, param, width, height, "scroll:yes");
}
/**
 * validator 생성 
 */
function fnGetValidator(formid) {
	return new Validator(formid, _locale_);
}
/**
 * ajaxDebug == true 이면 해당 영영에 내용을 출력한다.
 * footerAdmin.jsp footerUser.jsp에서 ajaxHandlers에 등록되어있다.
 */
function fnAjaxDebug(responseText) {
	if (_ajaxDebug_) {
		$("ajax_debug").show();
		$("ajax_debug").value = responseText;
	} else {
		$("ajax_debug").value = "";
		$("ajax_debug").hide();
	}
}
/**
 * overlay calendar
 */
function fnOpenCalendar(param) {
	var overlay = new YAHOO.widget.Overlay("overlayCalendar", {
		context : [param.field, "tl", "bl"],   
		visible : false   
	});  
	overlay.render();
	overlay.show();
	var delimiter = param.format.indexOf(".") >= 0 ? "." 
				  : param.format.indexOf("-") >= 0 ? "-"
				  : param.format.indexOf("/") >= 0 ? "/" : "";
	var formday = document.forms[param.form].elements[param.field].value;
	var y_pos = 1;
	var m_pos = 1;
	var d_pos = 1;
	param.format = param.format.toLowerCase();
	var y = param.format.indexOf("y");
	var m = param.format.indexOf("m");
	var d = param.format.indexOf("d");
	y_pos = y < m ? y < d ? 1 : 2 : 3;
	m_pos = m < d ? m < y ? 1 : 2 : 3;
	d_pos = d < y ? d < m ? 1 : 2 : 3;
	
	var calendar = new YAHOO.widget.Calendar("layerCalendar", {
		iframe:true,          // Turn iframe off, since container has iframe support.
		hide_blank_weeks:true,  // Enable, to demonstrate how we handle changing height, using changeContent
		title: "Calendar",
		date_field_delimiter : delimiter,
		mdy_month_position : m_pos,
		mdy_day_position : d_pos,
		mdy_year_position : y_pos,
		md_month_position : m_pos,
		md_day_position : d_pos,
		my_month_position : m_pos,
		my_year_position :y_pos,
		pagedate : formday,
		selected : formday,
		navigator:true,
		close:true
	});
	calendar.render();
	calendar.show();
	calendar.selectEvent.subscribe(function (type, args, obj){
		var dates = args[0]; 
		var date = dates[0];
		var year = date[0], month = date[1], day = date[2];
		document.forms[param.form].elements[param.field].value = fnDateToString(new Date(year, month-1, day), param.format);
		calendar.hide(); 
	}, calendar, true);
}

/**
 * overlay calendar
 * ex)  onclick="fnOpenCalendarObj({id : 'carlendarID', format : '${appDateCalendar}', func : funcName});" 
 *   onclick="fnOpenCalendarObj({id : this, format : '${appDateCalendar}', func : funcName});" 
 */
function fnOpenCalendarObj(param) {
	var overlay = new YAHOO.widget.Overlay("overlayCalendar", {
		context : [param.id, "tl", "bl"],   
		visible : false   
	});  
	overlay.render();
	overlay.show();
	var delimiter = param.format.indexOf(".") >= 0 ? "." 
				  : param.format.indexOf("-") >= 0 ? "-"
				  : param.format.indexOf("/") >= 0 ? "/" : "";
	var formday = $(param.id).value;
	var y_pos = 1;
	var m_pos = 1;
	var d_pos = 1;
	param.format = param.format.toLowerCase();
	var y = param.format.indexOf("y");
	var m = param.format.indexOf("m");
	var d = param.format.indexOf("d");
	y_pos = y < m ? y < d ? 1 : 2 : 3;
	m_pos = m < d ? m < y ? 1 : 2 : 3;
	d_pos = d < y ? d < m ? 1 : 2 : 3;
	
	var calendar = new YAHOO.widget.Calendar("layerCalendar", {
		iframe:true,          // Turn iframe off, since container has iframe support.
		hide_blank_weeks:true,  // Enable, to demonstrate how we handle changing height, using changeContent
		title: "Calendar",
		date_field_delimiter : delimiter,
		mdy_month_position : m_pos,
		mdy_day_position : d_pos,
		mdy_year_position : y_pos,
		md_month_position : m_pos,
		md_day_position : d_pos,
		my_month_position : m_pos,
		my_year_position :y_pos,
		pagedate : formday,
		selected : formday,
		navigator:true,
		close:true
	});
	calendar.render();
	calendar.show();
	calendar.selectEvent.subscribe(function (type, args, obj){
		var dates = args[0]; 
		var date = dates[0];
		var year = date[0], month = date[1], day = date[2];
		$(param.id).value = fnDateToString(new Date(year, month-1, day), param.format);
		calendar.hide(); 
		if (typeof param.func == "function") {
			param.func.call(this, param);
		}
	}, calendar, true);
}

/**
 * Date()를 format String 으로 리턴한다.
 */
function fnDateToString(date, format) {
	format = format.toLowerCase();
	if (format.indexOf("yyyy") >= 0) {
		format = format.replace("yyyy", date.getFullYear());	
	}
	if (format.indexOf("yy") >= 0) {
		format = format.replace("yy", String(date.getFullYear()).substring(2, 4));
	}
	var month = 1+date.getMonth();
	if (format.indexOf("mm") >= 0) {
		format = format.replace("mm", month < 10 ? "0" + month : month);
	}
	var day = date.getDate();
	if (format.indexOf("dd") >= 0) {
		format = format.replace("dd", day < 10 ? "0" + day : day);
	}
	return format;
}
/**
 * 주어진 길이만큼 랜덤 문자를 리턴한다.
 */
function fnGetRandomKey(len) {
	var chararray = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	var ret = "";
	for(var i = 0; i < len; i++) {
		ret += chararray.charAt(Math.round(Math.random()*100)%chararray.length);
	}
	return ret;
}
function fnOnClickLogo() {
}
/**
 * 목록화면에서 updatelist/deletelist 처리 시 체크된 checkbox의 값을 리턴하는 함수.
 */
function fnGetCheckedList(formid, name, seperator) {
	var arr = new Array();
	var aChk=$A(fnGetElementsByName(formid, name));
	aChk.each(function(el) {
		if(el.getAttribute("type")=="checkbox"){ 
			if (el.checked){ 
				arr.push(el.value);
			}
		}
	});
	aChk=null;
	return arr.join(seperator);
}
/**
 * document.getElementsByName 처럼 폼의 elements를 리턴한다.
 */
function fnGetElementsByName(formid, name) {
	var arr = new Array();

	if(!$(formid).elements[name]) {
		return arr;
	}
	if($(formid).elements[name].value != null){
		arr.push($(formid).elements[name]);
	}else{
		Form.getElements(formid).each(function(el) {
			if (el.name == name) {
				arr.push(el);
			}
		});
	}
	return arr;
}
/**
 * 해당 object의 하위 object 중에 tagName에 해당 되는 object들을 리턴한다.
 */
function fnGetDownElements(objectid, tagName) {
	var arr = new Array();
	$(objectid).descendants().each(function(el) {
		if (el.tagName.toLowerCase() == tagName.toLowerCase()) {
			arr.push(el);
		}
	}); 
	return arr;
}
/**
 * 언어를 바꾼다.
 */
function fnSetLocale(locale, url) {
	var form = $("Form.common.gomenu");
	form.action = _ctxPath_ + url;
	form.request_locale.value = locale;
	form.target = "_self";
	form.submit();
}
/**
 * font size를 증가시킨다.
 */
function fnFontPlus() {
	$$("td.center").each(function(obj) {
		var value = obj.getStyle("font-size");
		value = parseInt(value,10) >= 20 ? 20 : parseInt(value,10) + 1;
		obj.setStyle({fontSize : value + "px"});
		fnSetCookie("appBodyFontSize", obj.getStyle("font-size"), 60*60*24*30, "", "", "");
	});
}
/**
 * font size를 감소시킨다.
 */
function fnFontMinus() {
	$$("td.center").each(function(obj) {
		var value = obj.getStyle("font-size");
		value = parseInt(value,10) <= 5 ? 5 : parseInt(value,10) - 1;
		obj.setStyle({fontSize : value + "px"});
		fnSetCookie("appBodyFontSize", obj.getStyle("font-size"), 60*60*24*30, "", "", "");
	});
}
/**
 * font size 변경한다.
 */
function fnSetBodyFont(size) {
	if (isNaN(parseInt(size))) return;
	$$("td.center").each(function(obj) {
		obj.setStyle({fontSize : size});
	});
	fnSetCookie("appBodyFontSize", size, 60*60*24*30, "/", "", "");
}
/**
 * body의 className을 변경한다.
 */
function fnSetBodyClass(className) {
	try {
		if (className == "") return;
		$$("body").each(function(el) {
			el.classNames().each(function(cl) {
				el.removeClassName(cl);
			});
			el.addClassName(className);
		});
		
		fnSetCookie("appBodyClassName", className, 60*60*24*30, "/", "", "");
		fnGetFlash("north_menu").setColor(className);
		fnGetFlash("west_menu").setColor(className);
	} catch(e) {}
}
/**
 * Set Cookie : DWR을 이용해서 cookie를 셋팅한다.
 */
function fnSetCookie(name, value, seconds, path, domain, secure) {
	
	InfraDwr.setCookie(name, value, path ? path : "/", seconds ? seconds : 60*60*24*30, function(){});
}
/**
 * Get Cookie : DWR을 이용해서 cookie를 얻는다.
 */
function fnGetCookie(name) {
	var value = "";
	dwr.engine.setAsync(false); // 동기화.(value가 올때까지 기다린다)
	InfraDwr.getCookie(name, function (v) { value = v;});
	return value;
}
function fnSortList(formid, orderby_field, orderby_method, column_name, tableid, th_object, do_function) {
	var sort = $(th_object).getAttribute("sort") ? $(th_object).getAttribute("sort") : "ASC";

	$(formid).elements[orderby_field].value = column_name;
	$(formid).elements[orderby_method].value = sort;
	do_function();
	
	var icon = $(th_object).down("span");
	icon.removeClassName("sort");
	icon.removeClassName("sort_desc");
	icon.removeClassName("sort_asc");
	if (sort == "ASC") {
		$(icon).addClassName("sort_desc");
		$(th_object).setAttribute("sort", "DESC");
	} else {
		$(icon).addClassName("sort_asc");
		$(th_object).setAttribute("sort", "ASC");
	}
	$(th_object).siblings().each(function (el) {
		var o = el.down("span");
		if (o) {
			o.removeClassName("sort_asc");
			o.removeClassName("sort_desc");
			o.addClassName("sort");
		}
	});
	
	
}

function fnShowSortIcon() {
	if (_sortInfo_.tableid == "") return;
	if (_sortInfo_.cellIndex < 0) return;
	var obj = $(_sortInfo_.tableid).down("tr", 0).down("th", _sortInfo_.cellIndex);
	var icon = obj.down("span");
	icon.removeClassName("sort");
	if (_sortInfo_.sort == "ASC") {
		$(icon).addClassName("sort_desc");
		$(obj).setAttribute("sort", "DESC");
	} else {
		$(icon).addClassName("sort_asc");
		$(obj).setAttribute("sort", "ASC");
	}
	
	obj.siblings().each(function (el) {
		var o = el.down("span");
		if (o) { 
			o.removeClassName("sort_asc");
			o.removeClassName("sort_desc");
			o.addClassName("sort");
		}
	});
}
/**
 * 링크.
 */
function fnGoUrl(url) {
	self.location.href = url;
}
/**
 * top 의 url을 이동시킨다.
 */
function fnGoUrlOnTop(url) {
	top.location.href = url;
}

// 2011. 12. 23 
function fnGoUrlSSL(url){
	top.location.href = url;
}

/**
 * 메뉴 링크.
 */
// fnGoMenu('/lms/discussbook/main.user.kyobo.action?appEtcMenu=04&menu_seq=01&', '', '')

function fnGoMenu(url, url_target, menu_seq) {
	if(url_target=="ready"){ 
		alert(global.messages[_locale_].readyMenu.evaluate({})); // 준비중인 메뉴입니다.
		return;
	}else if(url_target=="popup"){ // 팝업으로 띄우고자 할때 사용함. 
		fnGoMenuPopup(url, url_target, menu_seq);
	}
	
	if (!url || url=="none"){
	 		return;
	}
	if (isNaN(url)) {
		var form = $("Form.common.gomenu");
		form.elements["appMenuSeq"].value = menu_seq ? menu_seq : "";
		form.elements["request_locale"].value = _locale_;
		form.action = _ctxPath_ + url;
		form.target = url_target && url_target != "null" ? url_target : "_self";
		form.submit();
	}
}

function fnGoMenuPopup(url, url_target, menu_seq){
	
	if (!url || url=="none"){
 		return;
	}
	if (isNaN(url)) {
		var form = $("Form.common.gomenu");
		form.elements["appMenuSeq"].value = menu_seq ? menu_seq : "";
		form.elements["request_locale"].value = _locale_;
		var action_url = _ctxPath_ + url;
		window.open(action_url, url_target, "resizable=yes, status=no,location=no, scrollbars= yes, width=960, height=768");
		//form.submit();
	}
}
/**
 * Form submit 이 두번 발생하는것을 방지. 로딩바 나타내기.
 */
function fnSubmitted(flag) {
	if (flag) {
		_submitted_ = true;
		_loadingBar_ = new Loadingbar({id : "saveLoadingbar"});			
		//_loadingBar_.open({position : "center"});
	} else {
		_submitted_ = false;
		if (_loadingBar_) {
			_loadingBar_.close();
		}
	}
}
/**
 * Form submit 여부 return
 */
function fnIsSubmitted() {
	return _submitted_;
}
/**
 * Form Element의 onchange 시 해당 checkbox 가 check 되도록 한다.
 */
function fnOnChangeListData(formid, checkbox, index) {
	if ($(formid).elements[checkbox].length) {
		$(formid).elements[checkbox][index].checked = true;
	} else {
		$(formid).elements[checkbox].checked = true;
	}
}

/**
 * Form Element input type="checkbox" 의 선택을 토글 시킨다. (전체선택 <->전체선택해제)
 * 중간에 disable되는 체크 박스가 없을시에 사용
 * @param icon_object
 * @param formid
 * @param checkbox
 * @return
 */
function fnSimpleCheckboxToggle(icon_object, formid, checkbox) {
	$(icon_object).toggleClassName("uncheckall");
	//var aChk=fnGetElementsByName(formid, checkbox);
	var aChk=$(formid).elements[checkbox];
	if ($(icon_object).hasClassName("uncheckall")) {
		if(aChk.value!=null){
			aChk.checked = true;
		}else{
			for(var i=0;i<aChk.length;i++){
				aChk[i].checked = true;
				 
			}
		}
	}else{
		if(aChk.value!=null){
			aChk.checked = false;
		}else{
			for(var i=0;i<aChk.length;i++){
				aChk[i].checked = false;				 
			}
		}
	}
}
/**
 * Form Element input type="checkbox" 의 선택을 토글 시킨다. (전체선택 <->전체선택해제)
 */
function fnCheckboxToggle(icon_object, formid, checkbox) {
	$(icon_object).toggleClassName("uncheckall");
	//var aChk=fnGetElementsByName(formid, checkbox);
	var aChk=$(formid).elements[checkbox];
	if ($(icon_object).hasClassName("uncheckall")) {
		if(aChk.value!=null){
			aChk.checked = true;
		}else{
			for(var i=0;i<aChk.length;i++){
				aChk[i].checked = true;
				 
			}
		}
	}else{
		if(aChk.value!=null){
			aChk.checked = false;
		}else{
			for(var i=0;i<aChk.length;i++){
				aChk[i].checked = false;				 
			}
		}
	}
}
function fnCheckboxToggle_back(icon_object, formid, checkbox) {
	$(icon_object).toggleClassName("uncheckall");
	//var aChk=fnGetElementsByName(formid, checkbox);
	var aChk=$(formid).elements[checkbox];

	if(!aChk){ return; }

	//alert(aChk.length);	
	var chkObj=null;
	if ($(icon_object).hasClassName("uncheckall")) {
		if(aChk.value!=null){
			if(aChk.disabled == false){
				if(aChk.getAttribute("type")=="checkbox"){ 
					aChk.checked = true;
					$(aChk).up("td").up("tr").addClassName("hover");				
				}
			}
		}else{
			for(var i=0;i<aChk.length;i++){
				chkObj=aChk[i];
				if(chkObj.disabled == false){
					if(chkObj.getAttribute("type")=="checkbox"){ 
						chkObj.checked = true;
						$(chkObj).up("td").up("tr").addClassName("hover");				
					}
				}
				 chkObj=null;
			}
		}		
	} else {
		if(aChk.value!=null){
			if(aChk.disabled == false){
				if(aChk.getAttribute("type")=="checkbox"){ 
					aChk.checked = false;
					$(aChk).up("td").up("tr").addClassName("hover");				
				}
			}
		}else{
			for(var i=0;i<aChk.length;i++){
				chkObj=aChk[i];
				if(chkObj.disabled == false){
					if(chkObj.getAttribute("type")=="checkbox"){ 
						chkObj.checked = false;
						$(chkObj).up("td").up("tr").addClassName("hover");				
					}
				}
				 chkObj=null;
			}
		}	
		
	}
	 aChk=null;
	 chkObj=null;
}
/**
 * Form Element input type="radio" 의 선택된 값을 return.
 */
function fnGetRadioCheckedValue(formid, radioname) {
	var value = "";	
	fnGetElementsByName(formid, radioname).each(function(el) {
		if (el.checked == true) {
			if(el.getAttribute("type")=="radio"){ 
				value = el.value;
				throw $break;
			}
		}
	});
	return value;
}
/**
 * Form Element input type="radio" 의 check 시키기.
 */
function fnSetRadioCheckedValue(formid, radioname, value) {
	fnGetElementsByName(formid, radioname).each(function(el) {
		if (value == el.value) {
			if(el.getAttribute("type")=="radio"){ 
				el.checked = true;
				throw $break;
			}
		}
	});
}
/**
 * 우편번호 찾기 팝업
 */
fnBrowseZipcode = function(callback, formid, action){
	var url = "";
	var param = self;
	var options = "scroll:yes";
	if (action == 'admin') {
		url = fnMakeUrl('infra/zipcode', 'main.admin.popup');
	} else {
		url = fnMakeUrl('infra/zipcode', 'main.anyone.notitlepopup');
	}
	var values = popupModal(fnGetAuthUrl(url), param, "500px", "500px", options);
	if (values) {
		callback.call(this, formid, values);
	}
}

/**
 * 토론방 찾기 팝업 // 교보생명
 */
fnBrowseDiscussRoomCode = function(callback, formid, action){ // 콜백 함수 처리할 부분을 edit.jsp 페이지 에서명명한다. 
	var url = "";
	var param = self;
	var options = "scroll:yes";
	if (action == 'admin') {
		url = fnMakeUrl('lms/discussbookcode', 'main.admin.popup');
	} else {
		url = fnMakeUrl('lms/discussbookcode', 'main.user.notitlepopup');
	}
	var values = popupModal(fnGetAuthUrl(url), param, "500px", "500px", options);
	if (values) {
		callback.call(this, formid, values);
	}
}

/**
 * 토론멤버 찾기 팝업 // 교보생명
 */
fnBrowseDiscussMember = function(callback, formid, action){ // 콜백 함수 처리할 부분을 edit.jsp 페이지 에서명명한다. 
	var url = "";
	var param = self;
	var options = "scroll:yes";
	if (action == 'admin') {
		url = fnMakeUrl('lms/discussbookmem', 'main.admin.popup');
	} else {
		url = fnMakeUrl('lms/discussbookmem', 'main.user.notitlepopup');
	}
	var values = popupModal(fnGetAuthUrl(url), param, "500px", "500px", options);
	if (values) {
		callback.call(this, formid, values);
	}
}


/**
 * 회원기업 찾기 팝업(관리자 admin)
 */
fnBrowseMemberCompany = function(callback, formid, func){
	var url = "";

	var form=$(formid);
	var options = "scroll:yes";
	if(form.elements["paramMap.all_cmpy"]!= null){
		if(form.elements["paramMap.all_cmpy"].checked == true){
			return;
		}
	}	
	var param = self;	
	var url = fnMakeUrl('lms/company', 'main.admin.popup')+"?company.search_mode=single";
	var values = popupModal(fnGetAuthUrl(url),param, "500px", "500px", options);
	if (values) {
		callback.call(this, formid, values, func);
	}
}
/**
 * 그룹찾기기 팝업(관리자 admin)
 */
fnBrowseCompanyGroup = function(callback, formid, func){
	var url = "";

	var form=$(formid);
	var options = "scroll:yes";
	if(form.elements["paramMap.all_cmpy"]!= null){
		if(form.elements["paramMap.all_cmpy"].checked == true){
			return;
		}
	}	
	var param = self;	
	var url = fnMakeUrl('lms/companygroup', 'group.admin.popup');
	var values = popupModal(fnGetAuthUrl(url),param, "500px", "500px", options);
	if (values) {
		callback.call(this, formid, values, func);
	}
}
/**
 * 회원기업 찾기 팝업(학습자 user)  //paramMap.all_cmpy 
 */
fnBrowseMemberUserCompany = function(callback, formid, func){
	 var form=$(formid);
	if(form.elements["paramMap.all_cmpy"]!= null){
		if(form.elements["paramMap.all_cmpy"].checked == true){
			return;
		}
	}
	var url = fnMakeUrl('lms/company', 'main.anyone.notitlepopup')+"?company.search_mode=single";
	var param = self;
	var options = "scroll:yes";
	var values = popupModal(fnGetAuthUrl(url), param, "500px", "500px", options);
	if (values) {
		callback.call(this, formid, values, func);
	}
}
/**
 * 협력기업 찾기 팝업
 */
fnBrowseCollaborationCompany = function(callback, formid){
	var url = fnMakeUrl('aof3/collaborationcompany', 'main.admin.popup');
	var param = self;
	var options = "scroll:yes";

	var values = popupModal(fnGetAuthUrl(url), param, "500px", "500px", options);
	if (values) {
		callback.call(this, formid, values);
	}
}

/**
*회원기업 검색후 검색에 세팅	
**/
fnSetMemberCompany =  function(formid, values, func){
	var form = $(formid);
	form.elements["paramMap.reg_cmpy_name"].value = values.cmpy_name;
	form.elements["paramMap.reg_cmpy_code"].value = values.cmpy_code;
	if (typeof func == "function") {
		func.call(this);
	}
	
}
/**
 * 부서 찾기 팝업
 */
fnBrowseDepartment = function(callback, formid, companycode){
	var url = fnMakeUrl('aof3/department', 'main.admin.popup');
	var param = $(formid).elements[companycode].value;
	var options = "";

	var values = popupModal(fnGetAuthUrl(url), param, "500px", "500px", options);
	if (values) {
		callback.call(this, formid, values);
	}
}
/**
 * 교재찾기 팝업
 */
fnBrowseBook = function(callback, formid, action){
	var url = "";
	var param = self;
	var options = "scroll:yes";
	if (action == 'admin') {
		url = fnMakeUrl('lms/book', 'main.admin.popup');
	} else {
		url = fnMakeUrl('lms/book', 'main.anyone.popup');
	}
	var values = popupModal(fnGetAuthUrl(url), param, "780px", "590px", options);
	if (values) {
		callback.call(this, formid, values);
	}
}

/**
 * 과정찾기 팝업
 */
fnBrowseCourse = function(callback, formid, action){
	var url = "";
	var param = self;
	var options = "scroll:yes";
	if (action == 'admin') {
		url = fnMakeUrl('lms/course', 'main.admin.popup');
	} else {
		url = fnMakeUrl('lms/course', 'main.anyone.popup');
	}
	var values = popupModal(fnGetAuthUrl(url), param, "780px", "650px", options);
	if (values) {
		callback.call(this, formid, values);
	}
}

/*
########## Tree Example###################
var aof3Trees = new Array();
aof3Trees.push({label : "한국"
				,parent_node : null   //top menu  null;;
				,now_node : "1"
				,url : "javascript:alert('1')" 
				,open : false 
				});
aof3Trees.push({label : "한국"
				,parent_node : "1"
				,now_node : "2"
				,url : "javascript:alert('1')"
				,open : false
				});	
				
var treeObj=fnMakeTree("treeDiv1",aof3Trees);	
*/
function fnMakeTree(treeid, aTrees) {
	var tree = function(treeid, aTrees) {
		this.treeid = treeid; //set View Div 
		this.tree = new YAHOO.widget.TreeView(treeid);
		this.treeHash = null;
		this.treeChildCntInfo = null;
		this.fnTreeLocation = function (k) {
			return this.treeHash.get(k).nodeName;
		};
		this.fnTreeLevel = function (k) {
			return this.treeHash.get(k).nodeLevel;
		};
		this.fnTreeChildCnt = function (k) {
			return this.treeChildCntInfo.get(k);
		};
		this.fnBuildTree = function (label, node, link, open) {
			if(node == null) node = this.tree.getRoot();
			if(open == null) open = false;
			if(link != null) label = "<a href=\""+"#"+"\" onclick=\""+link+"\">"+label+"</a>";
			//if(link != null) label = "<a href=\""+link+"\">"+label+"</a>";
			return new YAHOO.widget.TextNode(label, node, open);
		};
		this.fnDrawTree = function (){
			this.tree.draw();
		};
	};
	var treeObj = new tree(treeid, aTrees);

	var treeHash = new Hash();
	var treeChildCntInfo = new Hash();
	var treesList = new Array();
	var parent_mode = null;
	var parent_name = null;
	var now_lvl = 0;
	aTrees.each(function(trees) {
		parent_obj = null;
		parent_mode = null;
		childCnt = 0
		parent_name = "";
		now_lvl = 0;
		if(trees.parent_node!=null){
			parent_obj = treeHash.get(trees.parent_node); 	
		 	treeChildCntInfo.set(trees.parent_node,treeChildCntInfo.get(trees.parent_node) + 1); 	
			if(parent_obj != null){
				parent_mode = parent_obj.nodeObj;
				parent_name = parent_obj.nodeName + " > ";
				now_lvl = parent_obj.nodeLevel + 1;
			}
			
		}
		treeHash.set(trees.now_node, {nodeObj : treeObj.fnBuildTree(trees.label, parent_mode, trees.url, trees.open)
									 ,nodeName :  parent_name + trees.label
									 ,nodeLevel : now_lvl
									 });
		treeChildCntInfo.set(trees.now_node, childCnt); 		
	
	});
	
	treeObj.fnDrawTree();
	treeObj.treeHash = treeHash;
	treeObj.treeChildCntInfo = treeChildCntInfo;
	return treeObj;
}

	
/******************************************************************************
 * fnNextFocusByLength(thisobj, nextobj)
 * input object의 값이 maxlength의 값과 같으면 다음 object로 포커스를 이동시킨다.
 * Usage : onKeyup="javascript:fnNextFocusByLength(event, this, nextobj);"
 */
function fnNextFocusByLength(event, thisobj, nextobj) {
	if ( thisobj.getAttribute("Maxlength") == thisobj.value.length) {
		nextobj.focus();
	}
}
/******************************************************************************
 * fnNextFocusByEnter(nextobj)
 * input object에서 enter를 쳤을경우 다음 object로 포커스를 이동시킨다.
 * Usage : onKeyup="javascript:fnNextFocusByEnter(event,nextobj);"
 */
function fnNextFocusByEnter(event, nextobj) {
	if(event.keyCode == 13) {
		nextobj.focus();
	}
}
/******************************************************************************
 * fnCallFunctionByEnter(function_name)
 * input object에서 enter를 쳤을경우 다음 함수를 호출한다.
 * Usage : onKeyup="javascript:fnCallFunctionByEnter(event,function_name);"
 */
function fnCallFunctionByEnter(event, function_name, arg) {
	if(event.keyCode == 13) {
		if (typeof function_name == "function") {
			if (arg) {
				function_name(arg);
			} else {
				function_name();
			}
		}
	} else return;
}
/**
 * 관리자 모드에서 권한그룹 변경 요청.
 */
function fnChangeAuthorityGroup(value, action) {
	var form = $("Form.common.authgroup");
	if (value.startsWith("stu")) {
		action = action.gsub(".admin.", ".user.");
	}
	form.action = action;
	form.self_auth_group.value = value;
	form.target = "_self";
	form.submit();
	form = null;
}
function fnChangeColor(_object){
	if(_object.checked){
		_object.parentNode.parentNode.className="hover";
	}else{
		_object.parentNode.parentNode.className="";
	}
}
/**
 * 목록 화면에서 엑셀 다운로드.
 * page == 0 : 목록전체
 * page == null : 현재페이지. 
 */
function fnDoExcel(url, formid, page) {
	var form = $(formid);
	var prev_page = form.elements["page.pageno"].value;
	if (page != null) {
		form.elements["page.pageno"].value = page;
	}
	form.action = url;
	form.target = "hiddenframe";
	form.submit();
	form.elements["page.pageno"].value = prev_page;
	form = null;
}
/**
*selectBox  만들기 전에 검색 중 표시
*/
fnNowGetSelect = function(Object, ment){
	selectObject=$(Object);
	if(ment==null){
		ment="selected..";
	}
 	selectObject.options.length=1;
 	selectObject.options[selectObject.options.length-1].value='';
 	selectObject.options[selectObject.options.length-1].text=ment;
}
/**
* dwr로 데이타 가져와서 selectBox 만들어 주는것
* gid ->selectBox ID
* data-> dwr에서 가져온 데이타  DwrBean[] 형식인 데이타 
* nowvalue ->select Box의 값
*/
fnMakeSelectBox = function(Object, data, nowvalue){
	selectObject=$(Object);
	if(data!=null){
		for(var i = 0; i < data.length; i++){
			selectObject.options.length = i+1;
	 		selectObject.options[i].value = data[i].value;
	 		selectObject.options[i].text = data[i].label;
	 		selectObject.options[i].selected = selectObject.options[i].value == nowvalue ? true : false; 
		}
		if(selectObject.selectedIndex<0){
			selectObject.selectedIndex=0;
		}
	}
}

fnMakeSelectBox_2 = function(Object, data, nowvalue){
	selectObject=$(Object);
	if(data!=null){
		for(var i = 0; i < data.length; i++){
			selectObject.options.length = i+1;
	 		selectObject.options[i].value = data[i].value;
	 		selectObject.options[i].text = (data[i].label).substring(0,10);
	 		selectObject.options[i].selected = selectObject.options[i].value == nowvalue ? true : false; 
		}
		if(selectObject.selectedIndex<0){
			selectObject.selectedIndex=0;
		}
	}
}

/**
* dwr로 데이타 가져와서 selectBox 만들어 주는것
* gid ->selectBox ID
* data-> dwr에서 가져온 데이타  DwrBean[] 형식인 데이타 
* nowvalue ->select Box의 값
*/
fnMakeSelectTitleBox = function(Object, data, nowvalue,t,all_t){ 
	var selectObject=$(Object);
	var optcount = 0;
	if(t!=null){	
		optcount++;
		selectObject.options.length = optcount;	
		selectObject.options[optcount-1].value = '';
		selectObject.options[optcount-1].text = t;
	}
	if(all_t!=null){
		optcount++;
		selectObject.options.length = optcount;
		selectObject.options[optcount-1].value = '';
		selectObject.options[optcount-1].text = all_t;
	}
	
	
	if(data!=null){	 	
		for(var i = optcount, j=0; j < data.length; i++,j++){
			
			selectObject.options.length = i+1;
	 		selectObject.options[i].value = data[j].value;
	 		selectObject.options[i].text = data[j].label;
	 		selectObject.options[i].selected = selectObject.options[i].value == nowvalue ? true : false;
	 		 
		}
		if(selectObject.selectedIndex<0){
			selectObject.selectedIndex=0;
		}
	}
	
}

function fnGoAttachDelete(param) {
	if (param.attach_seq != "" && param.attach_seq != "0") { 
		var form = $("Form.attach");
		if (confirm(param.message)) {
			if(param.element_id!=null ){
				_nowAttatchSetId_ = param.element_id;
			}
			if(param.list_id!=null ){
				_nowAttatchListId_ = param.list_id;
			}
			form.action = param.action;
			form.elements["attach.attach_seq"].value = param.attach_seq;
			form.elements["attach.attach_type"].value = param.attach_type;
			
			new Ajax.Request(
				form.action,
				{method: "post" 
				,parameters: fnFormSerialize(form)
				,onComplete: function(transport) {
						transport.responseText.extractScripts().map(function(script) { return eval(script) });
						transport = null;
					}
				} 
			);
			form.reset();
		}
		form = null;
	}
}
function fnDoAttachDownload(param) {
	var form = $("Form.attach");
	form.action = param.action;
	form.elements["attach.attach_seq"].value = param.attach_seq;
	form.submit();
	form.reset();
	form = null;
}
function fnDoAttachDownloadPopup(param) {
	var url = fnMakeUrl('infra/attach', 'main.anyone.popup');
	url += "?attach_key=" + param;
	popupModal(fnGetAuthUrl(url), param, "500px", "360px", "");
	url = null;
}


/*
 * 움직이는 div를 만든다. 같은 레벨의 첫번째 오브젝트 이상 올라가지 않고, 원래위치 이하로 내려가지 않는다.
 * IE6 을 위해 iframe을 삽입했다.(select box등이 앞으로 나오지 않게 처리됨) 
 */
function fnMoveObject(objectid) {
	var parent = $(objectid).up();
	var bgColor = $(parent).getStyle("backgroundColor") == "transparent" ? "#ffffff" : $(parent).getStyle("backgroundColor");
	var limit_top = $(parent).firstDescendant().positionedOffset().top; 
	var limit_bottom = $(objectid).positionedOffset().top;
	var inserted = false;
	var w = $(parent).getWidth() - 5;

	$(objectid).addClassName("moving_overlay");
	
	var line = document.createElement("DIV");
	$(line).addClassName("moving_line");
	$(line).setStyle({width : w + "px"});
	$(objectid).insert({top : line});
	
	var move = false;
	var disableEvent = function(event) {
		event.returnValue = false;
		return false;
	}
	var moveStart = function(event) {
		$(objectid).setStyle({position : "absolute", top : (Event.pointerY(event)) + "px"});
		if (inserted == false) {
			var iframe = document.createElement("IFRAME");
			$(iframe).setAttribute("frameborder", "0");
			$(iframe).addClassName("iframe");
			$(iframe).setStyle({width : "2000px", height : "2000px"});
			$(objectid).insert({bottom : iframe});
			
			var div = document.createElement("DIV");
			$(div).addClassName("moving_object");
			$(div).setStyle({width : w + "px", backgroundColor : bgColor});
			
			$(objectid).insert({bottom : div});
			
			var div2 = document.createElement("DIV");
			$(div2).addClassName("underlay");
			$(objectid).insert({bottom : div2});
	
			$(objectid).nextSiblings().each(function(el){
				$(div).insert({bottom : el});
			});
			inserted = true;
		}
		move = true;
		Event.observe($(document.body), "mouseup", moveEnd.bindAsEventListener($(document.body)));
		Event.observe($(document.body), "mousemove", moving.bindAsEventListener($(document.body)));
		Event.observe($(document.body), "selectstart", disableEvent);
	}
	var moveEnd = function(event) {
		move = false;
		Event.stopObserving($(document.body), "mouseup");
		Event.stopObserving($(document.body), "mousemove");
		Event.stopObserving($(document.body), "selectstart");
	}
	var moving = function(event) {
		var obj = event.target ? event.target : event.srcElement;
		if (move == false) return;
		if (limit_top >= Event.pointerY(event) || limit_bottom <= Event.pointerY(event)) return;
		var h = $(objectid).getHeight(); 
		$(objectid).setStyle({top : (Event.pointerY(event)) + "px"});
		$(objectid).nextSiblings().each(function(el) {
			$(el).setStyle({top : (Event.pointerY(event) + h) + "px"});
		});
	} 
	Event.observe($(line), "mousedown", moveStart.bindAsEventListener($(line)));

}
/**
 * Tag taglib 에서 사용한다. 현재 선택된 탭 표시.
 * <ul><li><span>AA</span></li><li><span>BB</span></li></ul>
 */
function fnActiveTab(tab) {
	var parent = $(tab).up('li');
	$(parent).addClassName('current');
	$(parent).siblings().each(function(o) {
		o.removeClassName('current');
	});
}
function fnAddHistory(func, args) {
	_historyIndex_++;
	_ajaxHistory_[_historyIndex_] = {callback : func, param : args, index : _historyIndex_};
	if (top.mainFrame != null && top.mainFrame.hiddenframe != null) {
		top.mainFrame.hiddenframe.src = _historyPageUrl_ + "?history=" + _historyIndex_;
		top.mainFrame.hiddenframe.document.write("");
		top.mainFrame.hiddenframe.close();
	}
}
function fnHistoryBack(historyIndex) {
	try {
		if (!historyIndex) {
			return;
		}
		var lastindex = $H(_ajaxHistory_).values().last().index;
		if (lastindex == historyIndex) {
			return;
		} else {
			var history = _ajaxHistory_[historyIndex];
			if (history && typeof history.callback == "function") {
				history.callback.apply(this, history.param);
			}
			
			for (var i = historyIndex; i <= lastindex; i++) {
				delete _ajaxHistory_[i];
			}
		}
	} catch (e) {
	}
}

function fnSetData(obj,aData,datatype,setType){
	var objDataid = obj.getAttribute("dataid");
	var objDatatype = obj.getAttribute("datatype");
	var data = null;
	if (datatype == objDatatype && objDataid) {
		data = aData[objDataid] ? aData[objDataid] : "";
		switch(setType) {
		case 1:
		    var content = Object.toHTML(data);
		    obj.innerHTML = content.stripScripts();
		    content.evalScripts.bind(content).defer();
			break;
		case 2: // input type="", textarea
			obj.value = data.escapeXml();
			break;
		case 3: //selectBox
			if(data != ""){
				obj.value = data;
			}
			break;
		case 4: //tr, td
			if(data != ""){
				var datas = data.split("=");
				if (datas.length == 2) {
					switch(datas[0].toLowerCase()) {
					case "style":
						eval('$(obj).setStyle({' + datas[1] + '})');
						break;
					case "class":
						$(obj).addClassName(datas[1]);
						break;
					default:
						obj.setAttribute(datas[0], datas[1]);
						break;	
					}
				}
				datas = null;
			}
			break;
		case 5: // radio
			if (obj.value == data) {
				obj.checked = true;
			}
			break;
		case 6: // checkbox
			if (obj.value == data) {
				obj.checked = true;
			}
			break;
		}		
	}
	objDataid = null;
	objDatatype = null;
	data = null;
}
function fnBrowseInit(templateid, message) {
	if (!templateid || templateid == "") return;
	
	var template = _template_.get(templateid);
	if (template == null) {
		var template_hash = {};
		$A($(templateid).getElementsByTagName('TBODY')).each(function (tbody) {
			var datatype = tbody.getAttribute("datatype");
			if (datatype == "iterator") {
				var iterator_dataid = tbody.getAttribute("dataid");
				if (iterator_dataid == null || iterator_dataid == "") {
					iterator_dataid = templateid;
				}
				var newTBody = tbody.cloneNode(true);
				template_hash[iterator_dataid] = newTBody;
				for(n in newTBody) {
					n = null;
				}
				newTBody = null;
			}
		});
		_template_.set(templateid, template_hash);
		template = _template_.get(templateid);
	}
	
	var iterator = {};
	$A($(templateid).getElementsByTagName('TBODY')).each(function (tbody) {
		var datatype = tbody.getAttribute("datatype");
		if (datatype == "iterator") {
			var iterator_dataid = tbody.getAttribute("dataid");
			if (iterator_dataid == null || iterator_dataid == "") {
				iterator_dataid = templateid;
			}
			iterator[iterator_dataid] = tbody;
			$A(tbody.rows).each(function(tr) {
				tbody.deleteRow(0);
			});
		}
	});

	iterator_dataid = templateid;
	if (iterator[iterator_dataid]) {
		var tr = iterator[iterator_dataid].insertRow(0);
		var td = tr.insertCell(0);
		td.innerHTML = message;
		var cell_count = 0;
		$A($(tr).up("table").down("thead").rows).each(function(htr) {
			cell_count = htr.cells.length > cell_count ? htr.cells.length : cell_count; 
		});
		td.setAttribute("colSpan", cell_count);
	}

}
function fnPutXml(transport, templateid, targetid) {
	if (transport.responseXML == null) {
		fnPutError(transport.responseText, templateid);
		transport = null;
		return;
	}
 	var xml = transport.responseXML.documentElement;
	if (xml == null) {
		fnPutError(transport.responseText, templateid);
		transport = null;
		return;
	}
	fnPutXmlData(xml, templateid, targetid);
	xml = null;
	transport = null;
}
function fnPutXmlData(xml, templateid, targetid) {
try{
	var process_time = 0;
	var start_time = (new Date()).getTime();

	if (!templateid || templateid == "") return;
	
	_loadingBar_ = new Loadingbar({id : "loadingbar"});	
	_loadingBar_.open({position : "top", container : "loadingbar_area"});
	
	var template = _template_.get(templateid);

	if (template == null) {
		var template_hash = {};
		var tbodies = $A($(templateid).getElementsByTagName('TBODY'));
		tbodies.each(function (tbody) {
			var datatype = tbody.getAttribute("datatype");
			if (datatype == "iterator") {
				var iterator_dataid = tbody.getAttribute("dataid");
				if (iterator_dataid == null || iterator_dataid == "") {
					iterator_dataid = templateid;
				}
				var newTBody = tbody.cloneNode(true);
				template_hash[iterator_dataid] = newTBody;
				for(n in newTBody) {
					n = null;
				}
				newTBody = null;
			}
			datatype = null;
		});
		tbodies = null;
		_template_.set(templateid, template_hash);
		template = _template_.get(templateid);
	}

	var iterator = {};
	var tbodies = $A($(templateid).getElementsByTagName('TBODY'));
	tbodies.each(function (tbody) {
		var datatype = tbody.getAttribute("datatype");
		if (datatype == "iterator") {
			var iterator_dataid = tbody.getAttribute("dataid");
			if (iterator_dataid == null || iterator_dataid == "") {
				iterator_dataid = templateid;
			}
			iterator[iterator_dataid] = tbody;
			$A(tbody.rows).each(function(tr) {
				tbody.deleteRow(0);
			});
		}
		datatype = null;
	});
	tbodies = null;
	var childNodes = $A($(xml.childNodes)); 
	childNodes.each(function(node) {
		if(node.nodeName == "globaldata") {
			var globaldata = {};
			var cells = $A($(node.childNodes)); 
			cells.each(function(cell) {
				if(cell.nodeName == "cell") {
					$A($(cell.childNodes)).each(function(data) {
 						if (cell.getAttribute("dataid") && data.nodeType == 4)
							globaldata[cell.getAttribute("dataid")] = data.nodeValue.trim();
					});
				}
			});
			cells = null;
			
			if (globaldata["accessdeny"]) {
				alert(globaldata["accessdeny"]);
				throw $break;
			}
			
			var trs = $A($(templateid).getElementsByTagName('TR'));
			trs.each(function (tr) {
				fnSetData(tr,globaldata,"global",4);
			});
			trs = null;
			
			var spans = $A($(templateid).getElementsByTagName('SPAN'));
			spans.each(function (span) {				
				fnSetData(span,globaldata,"global",1);				
			});
			spans = null;
			
			var inputs = $A($(templateid).getElementsByTagName('INPUT'));
			inputs.each(function (input) {
				var inputtype = input.getAttribute("type");
				if (inputtype=="text" || inputtype=="password" || inputtype=="hidden") {										
					fnSetData(input,globaldata,"global",2);
				} else if (inputtype=="radio") {
					fnSetData(input,globaldata,"global",5);
				} else if (inputtype=="checkbox") {
					fnSetData(input,globaldata,"global",6);
				}
				inputtype = null;
			});
			inputs = null;
			
			var textareas = $A($(templateid).getElementsByTagName('TEXTAREA'));
			textareas.each(function (textarea) {
				fnSetData(textarea,globaldata,"global",2);
			});
			textareas = null;
			
			var selects = $A($(templateid).getElementsByTagName('SELECT'));
			selects.each(function (select) {
				fnSetData(select,globaldata,"global",3);
			});
			selects = null;
			globaldata = null;
			
		} else if (node.nodeName == "iteratordata") {
			var iterator_dataid = node.getAttribute("dataid");
			if (iterator_dataid == null || iterator_dataid == "") {
				iterator_dataid = templateid;
			}
			var iteratordata = {};
			var cells = $A($(node.childNodes));
			cells.each(function(cell) {
				if(cell.nodeName == "cell") {
					var datas = $A($(cell.childNodes));
					datas.each(function(data) {
						if (cell.getAttribute("dataid") && data.nodeType == 4) {
							iteratordata[cell.getAttribute("dataid")] = data.nodeValue.trim();
						}
					});
					datas = null;
				}
			});
			cells = null;
			
			if (iteratordata["iterator_nodata"]) {
				if (iterator[iterator_dataid]) {
					var tr = iterator[iterator_dataid].insertRow(0);
					var td = tr.insertCell(0);
					td.innerHTML = iteratordata["iterator_nodata"];
					var cell_count = 0;
					if ($(tr).up("table").down("thead")) {
						var htrs = $A($(tr).up("table").down("thead").rows);
						htrs.each(function(htr) {
							cell_count = htr.cells.length > cell_count ? htr.cells.length : cell_count; 
						});
						htrs = null;
					}
					td.setAttribute("colSpan", cell_count);
					tr = null;
					td = null;
				}
			} else {
				if (template[iterator_dataid] != null) {

					var child_tr = $(template[iterator_dataid]).down("tr");
					var siblings_tr = $(child_tr).siblings();
					
					var all_tr = new Array();
					all_tr.push(child_tr);
					siblings_tr.each(function (tr) {
						all_tr.push(tr);
					});
					child_tr = null;
					siblings_tr = null;
					
					$(all_tr).each(function (tr) {
						var newTr = tr.cloneNode(true);
						fnSetData(newTr,iteratordata,"iterator",4);
						var tds = $A($(newTr).getElementsByTagName('TD'));
						tds.each(function (td) {
							fnSetData(td,iteratordata,"iterator",4);
						});
						tds = null;
						
						var spans = $A($(newTr).getElementsByTagName('SPAN'));
						spans.each(function (span) {
							fnSetData(span,iteratordata,"iterator",1);
						});
						spans = null;
						
						var inputs = $A($(newTr).getElementsByTagName('INPUT'));
						inputs.each(function (input) {
							var inputtype = input.getAttribute("type");
							if (inputtype=="text" || inputtype=="password" || inputtype=="hidden") {										
								fnSetData(input,iteratordata,"iterator",2);
							} else if (inputtype=="radio") {
								fnSetData(input,iteratordata,"iterator",5);
							} else if (inputtype=="checkbox") {
								fnSetData(input,iteratordata,"iterator",6);
							}
						});
						inputs = null;
						
						var textareas = $A($(newTr).getElementsByTagName('TEXTAREA'));
						textareas.each(function (textarea) {
							fnSetData(textarea,iteratordata,"iterator",2);
						});
						textareas = null;
						
						var selects = $A($(newTr).getElementsByTagName('SELECT'));
						selects.each(function (select) {
							fnSetData(select,iteratordata,"iterator",3);
						});
						selects = null;
						/*
						*/
						if (iterator[iterator_dataid]) {
							iterator[iterator_dataid].appendChild(newTr);
						}
						for (n in newTr) {
							n = null;
						}
						newTr = null;
					});
					all_tr = null;
				}
			}
			iteratordata = null;
			iterator_dataid = null;
		}
		node = null;
	});
	childNodes = null;
	
	if (targetid) {
		$(targetid).innerHTML = $(templateid).innerHTML;

	}
				 
	if (_loadingBar_) {
		_loadingBar_.close();
	}

	xml = null;
	iterator = null;
	template = null;
	_loadingBar_ = null;
	
	var end_time = (new Date()).getTime();
	process_time += end_time - start_time;
		
	if ($("put_time")) {
		$("put_time").update(process_time);
	}

} catch (e) {
	alert(e.message);
} finally {

}

}



var __nowChkCmpyName;
function fnChkAllCmpy(obj){	
	if(obj.checked){
		__nowChkCmpyName=$("paramMapMemberCmpyName").value;
		$("paramMapMemberCmpyName").value="";
		$("paramMapCmpy_code").disabled=true;
		$("paramMapMemberCmpyName").disabled=true;
		$("regCmpyCodeSearchBtn").addClassName("btn_disable");
	}else{
		$("paramMapCmpy_code").disabled=false;	
		$("paramMapMemberCmpyName").disabled=false;
		$("paramMapMemberCmpyName").value=__nowChkCmpyName;
		$("regCmpyCodeSearchBtn").removeClassName("btn_disable");
	}
}
var cssSelectBoxClone = null;
function fnCssSelectBoxOver(obj, onclick_func, param) {
	if (cssSelectBoxClone != null) return;
	var newElement = obj.cloneNode(true);
	cssSelectBoxClone = newElement;
	for(n in newElement) {
		n = null;
	}
	newElement = null;
	$(cssSelectBoxClone).setAttribute("onclick", null);
	$A($(cssSelectBoxClone).getElementsByTagName('TR')).each(function(tr, index) {
		$(tr).show();
		$(tr).observe("click", function(evt) {
			onclick_func.call(this, $(tr).getAttribute("value"), param);
			$A($(obj).getElementsByTagName('TR')).each(function(obj_tr, obj_index) {
				if (index == obj_index) $(obj_tr).show();
				else $(obj_tr).hide();
			});
			$(cssSelectBoxClone).remove();
			cssSelectBoxClone = null;
		});
	});
	$(cssSelectBoxClone).setStyle({position : "absolute"
				,top : $(obj).cumulativeOffset().top + "px"
				,left: $(obj).cumulativeOffset().left + "px"
				,zIndex : "1000"
				,backgroundColor : "#FFFFFF"
				,border : "1px solid " + ($(obj).getStyle("borderColor") == "" ? "#e9e9e9" : $(obj).getStyle("borderColor")) 
				});
	document.body.appendChild(cssSelectBoxClone);
	$(cssSelectBoxClone).show();
	var iframe = document.createElement("IFRAME");
	$(iframe).setAttribute("frameborder", "0");
	$(iframe).setStyle({width : $(cssSelectBoxClone).getWidth() + "px"
					   ,height : $(cssSelectBoxClone).getHeight() + "px"
					   ,position : "absolute"
					   ,left : "0px"
					   ,top : "0px"
					   ,zIndex : "-1"
					   ,filter : "mask()"
					   });
	$(cssSelectBoxClone).insert({bottom : iframe});
	$(cssSelectBoxClone).observe('mouseout', function(evt, currentTarget) { 
		var relatedTarget = $(evt.relatedTarget || evt.toElement); 
		if(relatedTarget != currentTarget && relatedTarget.childOf(currentTarget)==false ) {
			$(cssSelectBoxClone).remove();
			cssSelectBoxClone = null;
		}
	}.bindAsEventListener({},$(cssSelectBoxClone))); 
}

/**
 * IFrame  리사이즈 
 * @param h -높이
 * @param frameDivId -프레임 감싼 DIV ID
 * @return
 */
function fnResizeIFrame(h,frameDivId){
	$(frameDivId).setStyle({height : h + "px" });
}




/**
 * 권한별 회원 찾기(다중)
 * @param role  회원권한 
 * opener에서 setMemberInfo(array)로 선택결과를 처리해야 한다.
 */
/**
fnBrowseMemberByRole = function(role,cmpy_code,cmpy_name){		
	var url = fnMakeUrl("lms/member","main.admin.popup")+"?member.member_ah_gubun="+role+"&member.cmpy_code="+cmpy_code+"&member.cmpy_name="+cmpy_name;
	_popupMemberSearch_=popupWindow(url, "_search_member_", "900px", "400px", "scrollbars=yes","CENTER");
	_popupMemberSearch_.focus();
}
**/

var ____popupMemberSearch_=null;
fnBrowseMemberByRole = function(role,cmpy_code){
	____popupMemberSearch_=popupWindow("about:blank", "_search_member_", "900px", "530px", "scrollbars=yes","CENTER");
	____popupMemberSearch_.focus();
	var form =$("Form.search.member");	 
	 form.elements["member.member_ah_gubun"].value = role;
	 if(cmpy_code!=null){
		 form.elements["member.cmpy_code"].value = cmpy_code;
		 form.action = fnMakeUrl("lms/member","main.admin.popup")+"?paramMap.cmpy_code="+cmpy_code;
	 }else{
		 form.action = fnMakeUrl("lms/member","main.admin.popup");
	 }
	 form.target="_search_member_";
	 form.submit();
	
}

/**
 * 권한별 회원 찾기(다중)( 사용자 페이지 )
 * @param role  회원권한 
 * opener에서 setMemberInfo(array)로 선택결과를 처리해야 한다.
 */

fnBrowseUserMemberByRole = function(role){		
	var url = fnMakeUrl("lms/member","main.user.classpopup")+"?member.member_ah_gubun="+role;
	_popupMemberSearch_=popupWindow(url, "_search_member_", "829px", "400px", "scrollbars=yes","CENTER");
	_popupMemberSearch_.focus();
}


/**
 * 권한별 회원 찾기(단일)
 * @param role  회원권한 
 * opener에서 setMemberInfo(array)로 선택결과를 처리해야 한다.
 */
__popupMemberSearch_=null;
fnBrowseOneMemberByRole = function(role, cmpy_code, formid){
	__popupMemberSearch_=popupWindow("about:blank", "_search_member_", "900px", "530px", "scrollbars=yes","CENTER");
	__popupMemberSearch_.focus();
	var form =$("Form.search.member");	 
	 form.elements["member.member_ah_gubun"].value = role;	 
	 if(cmpy_code!=null){
		 form.elements["member.cmpy_code"].value = cmpy_code;
		 form.action = fnMakeUrl("lms/member","main.admin.popup")+"?paramMap.cmpy_code="+cmpy_code+"&member.search_mode=single&member.formid="+formid;
	 }else{
		 form.action = fnMakeUrl("lms/member","main.admin.popup")+"?member.search_mode=single";
	 }
	 form.target="_search_member_";
	 form.submit();	 
	
}

/**
 * 주어진 오브젝트의 하위 child 를 모두 hide 시킨다.
 */
fnHideObjectWithChildren = function(objId) {
	$(objId).descendants().each(function (el) {
			el.hide();
		}
	); 
	$(objId).hide();
}
/**
 * 주어진 오브젝트의 하위 child 를 모두 show 시킨다.
 */
fnShowObjectWithChildren = function(objId) {	
	$(objId).descendants().each(function (el) {
			el.show();
		}
	); 
	$(objId).show();
}
/**
 * 강의장 찾기
 */
fnBrowseMemberClassRoom = function(callback, formid, action){
	var url = "";
	var param = self;
	var options = "scroll:yes";	
		url = fnMakeUrl("lms/classroominforoom","search.main.admin.popup");	
	var values = popupModal(fnGetAuthUrl(url), param, "600px", "470px", options);
	if (values) {
		callback.call(this, formid, values);
	}
}
/**
 * 용어사전 팝업
 */
 fnBrowseDictionary = function(){
	var url = fnMakeUrl("lms/dictionary","main.admin.popup");	
	_popupDictionarySearch_=popupWindow(url, "_search_member_", "650", "400", "scrollbars=yes","CENTER");
	_popupDictionarySearch_.focus();
}



/*
 * string 을 xml 로 만들기.
 */
fnCreateXMLFromString = function(s){
	var xmlDocument;
	var xmlParser;
	if(window.ActiveXObject){   //IE일 경우
		xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
		xmlDocument.async = false;
		xmlDocument.loadXML(s);
	} else if (window.XMLHttpRequest) {   //Firefox, Netscape일 경우
		xmlParser = new DOMParser();
		xmlDocument = xmlParser.parseFromString(s, 'text/xml');
	} else {
		return null;
	}
	return xmlDocument;
}

/*
 * Form.serialize(formElement) + fnGetAppMenuSeqValue() 값을 리턴한다.
 */
fnFormSerialize = function(formElement) {
	var data = Form.serialize(formElement);
	data += fnGetAppMenuSeqValue();
	return data;
}
/*
 * 권한검사를 하기위한 appMenuSeq 값을 리턴한다.
 */
fnGetAppMenuSeqValue = function() {
	var data = "";
	var form = $("Form.common.gomenu");
	if (form) {
		if (form.elements["appMenuSeq"] && form.elements["appMenuSeq"].value != "") {
			data += "&appMenuSeq=" + form.elements["appMenuSeq"].value;
		}
	}
	form = null;
	return data;
}
/*
 * 현재 페이지에 appMenuSeq 값를 URL에 추가 
 */
fnGetAuthUrl= function(_url) {
	if(_url.indexOf("?")==-1){
		_url=_url+fnGetAppMenuSeqValue().replace(/&/,"?");
	}else{
		_url=_url+fnGetAppMenuSeqValue();
	}
	return _url;
}

/*
 * object 자기 자신의 html 소스를 리턴 한다.
 */
fnGetOuterHTML = function(objid) {
	var el = $(objid);
	if (typeof el.outerHTML != "undefined") {
		return el.outerHTML;
	}
	var tempid = (new Date()).getTime();
	Element.insert(el, {before : "<DIV id='" + tempid + "'>"});
	var div = $("" + tempid);
	$(div).hide();
	var newElement = el.cloneNode(true);
	Element.insert($(div), {top : newElement});
	for(n in newElement) {
		n = null;
	}
	newElement = null;
	var html = div.innerHTML;
	$(div).remove();
	return html;
}
fnDoBatch = function(param) {	//	에러데이터 엑셀출력 추가.
	var url = fnMakeUrl('infra/attach', 'batch.anyone.popup');
	var options = "";
	//return popupModal(fnGetAuthUrl(url), param, "500px", "500px", options);
	var __excelData=popupModal(fnGetAuthUrl(url), param, "500px", "500px", options);
	if(__excelData){
		if($("container_error")){	//	footerAdmin.jspf, footerPopup.jspf, footerUser.jspf
			//	에러데이터 엑셀출력 추가.
			var strHtml="";
			var keySet="";
			for(var errorIndex=0;errorIndex<__excelData.errorSet.length;errorIndex++){
				var rowIndex=__excelData.errorSet[errorIndex].num;
				var msg=__excelData.errorSet[errorIndex].msg;
				var row=__excelData.rowSet[rowIndex];
				for(var colIndex=0;colIndex<row.length;colIndex++){
					strHtml+="<textarea name='paramMap.colData_"+colIndex+"'>"+row[colIndex]+"</textarea>";
					if(errorIndex==0){
						keySet+=((keySet!="")?",":"")+"colData_"+colIndex;
					}
				}
				strHtml+="<textarea name='paramMap.errorMsg'>"+msg+"</textarea>";
				if(errorIndex==0){
					keySet+=",errorMsg";
				}
			}
			if(keySet!=""){
				strHtml+="<textarea name='paramMap.keySet'>"+keySet+"</textarea>";
			}
			$("container_error").innerHTML="<form id='Form.error' method='post'>"+strHtml+"</form>";
			if($("Form.error")){
				var form=$("Form.error");
				form.action=fnMakeUrl("infra/attach","batcherrordata.anyone.excel");
				form.target = "hiddenframe";
				form.submit();
			}
		}
	}
	return;
}

/*
 * objID 테이블에서  aList 에 지정한 셀들을 RowsPan 한다.
 * ※  onComplete 이후 사용.
 * 
 * objID : 테이블 ID
 * key   : 비교할 셀 index
 * aList : 합쳐질 셀 index의 컬렉션
 * 
 * ex.
 * 	fnRowsPanTable("list_table",2,[0,1,2,8,9,10,11,12,13,14]);
 */
fnRowsPanTable = function (objID,key,aList){
	var obj=$(objID);
	if (obj.rows.length > 2) { // 데이터 1줄 이상 이면.
		var eq_cnt = 0;
		for (var i = 1; i < obj.rows.length; i++) {
			if (obj.rows[i-1].cells[key].innerHTML == obj.rows[i].cells[key].innerHTML) { // 그룹코드 비교
				eq_cnt++;
				for(var d=0;d<aList.length;d++){
					rowsPan = parseInt(obj.rows[i-eq_cnt].cells[aList[d]].getAttribute("rowSpan"), 10) + 1;
					obj.rows[i-eq_cnt].cells[aList[d]].setAttribute("rowSpan", rowsPan);
					obj.rows[i].cells[aList[d]].style.display="none";
				}
			} else {
				eq_cnt = 0;
			}
		}
	}
}
/*
 * 쪽지 보내기 팝업
 * param : {recv_member_seqs : '1,2', study_apply_seqs : '1,2'}
 */
fnMemoWritePopup = function(param) {
	var params = "memoSend.recv_member_seqs=" + param.recv_member_seqs + "&memoSend.study_apply_seqs=" + param.study_apply_seqs;
	var url = fnMakeUrl("lms/memo", "writemain.admin.popup")+"?" + params;
	var memoWritePopup = popupWindow(url, "memoWritePopup", "900px", "400px", "scrollbars=yes","CENTER");
	memoWritePopup.focus();
	
}

/**
 * 수료증 팝업
 */
fnCompletionPopup = function(seq){
	var form    = $("popupForm");
	form.elements["outbound.paramSeq"].value=seq;
	
	form.action = "/lms/outbound/completionPrint.user.popup.action";
	popupWindow('','_labelPrint_Popup','810','600','scrollbars=yes','');
	form.target = "_labelPrint_Popup";
	form.submit();
}
/**
 * ajax_debug 에러 메세지 보이기.
 */
fnShowError = function() {
	if ($("error_div")) {
		$("error_div").show();
	}
}
/**
 * 해당 영역에 에러 메세지 출력하기.
 */
fnPutError = function(message, templateid) {
	$(templateid).update(message);
	$(templateid).show();
}
/**
 * 학습자 페이지 강의실 바로 가기 
 * study_apply_seq : 수강신청 일련번호
 * section_seq :차수 일련번호
 */
fnGoClass = function(study_apply_seq, section_seq){
	var classForm = $("Form.goClass");
	if(study_apply_seq==null || section_seq==null){
		alert("강의실 이동 실패했습니다.");
		return;
	}
	try{
	classForm.elements["classRoom.study_apply_seq"].value = study_apply_seq;
	classForm.elements["classRoom.section_seq"].value = section_seq;
	classForm.action=fnMakeUrl("lms/classroom","main.user");
	classForm.submit();
	}catch(e){
		alert("강의실 이동 실패했습니다."+e);
		return;
	}
}

/**
 * 학습자 페이지 강의실 바로 가기_업그레이드 
 * study_apply_seq : 수강신청 일련번호
 * section_seq :차수 일련번호
 * upgrade_yn : 신규과정구분
 */
fnGoClassNew = function(study_apply_seq, section_seq, upgrade_yn, course_code){
	
	if(study_apply_seq==null || section_seq==null){
		alert("강의실 이동 실패했습니다.");
		return;
	}
	if (upgrade_yn=="Y") {
		var classForm = $("Form.newStudyPop");
		var newStudyWin = window.open("","newStudy","scrollbars=no,toolbar=0,location=no,resizable=1,status=0,menubar=0,width=1000,height=679,top=0,left=0");
		classForm.action=fnMakeUrl("lms/govlms","main.user");
		classForm.elements["paramMap.study_apply_seq"].value = study_apply_seq;
		classForm.elements["paramMap.course_code"].value=course_code;
		classForm.elements["paramMap.section_seq"].value=section_seq;
		classForm.target="newStudy";
		classForm.submit();
		
	} else {
		try{
			var classForm = $("Form.goClass");
			classForm.elements["classRoom.study_apply_seq"].value = study_apply_seq;
			classForm.elements["classRoom.section_seq"].value = section_seq;
			classForm.action=fnMakeUrl("lms/classroom","main.user");
			classForm.submit();
			}catch(e){
				alert("강의실 이동 실패했습니다."+e);
				return;
			}
	}	
}

/**
 * submit 처리 시 에러 발생할 경우 호출됨.
 */
fnSubmitError = function() {
	parent._submitted_ = false;
	alert("죄송합니다.\n시스템의 장애가 발생하였습니다.");
	var iframeElement = null;
	$A(parent.document.getElementsByTagName('IFRAME')).each(function (iframe) {
		if(iframe.name == self.name) {
			iframeElement = iframe;
			throw $break;
		}
	});
	//alert(iframeElement.document.viewport.getDimensions().height);
	if ($(iframeElement).getStyle("display") == "none") {
		$(iframeElement).setStyle({display : "", height : "500px", width : "100%"});
	}
}
/*
 * 쪽지 보내기 팝업
 * formid : form name
 * checkkey : checkbox name
 */
var ___memoPopup=null;
function fnMemoFormWritePopup(formid, checkkey){
	var form =$(formid);
	var memoform = $("Form.memo.popupsend");
	var arr_member_seq =new Array();
	var arr_study_apply_seq =new Array();
	if(form.checkkey == null){
		alert('데이터가 없습니다.');
		return;
	}
	if(form.checkkey.length != null ){
		for(i=0; i<form.checkkey.length; i++){
			if(form.checkkey[i].checked == true)	{
				arr_member_seq.push(form.elements["paramMap.member_seq"][i].value);
				if(form.elements["paramMap.study_apply_seq"] != null){
					arr_study_apply_seq.push(form.elements["paramMap.study_apply_seq"][i].value);
				}
				
			}
		}
	} else {
		if(form.checkkey.checked == true)	{
			arr_member_seq.push(form.elements["paramMap.member_seq"].value);
			if(form.elements["paramMap.study_apply_seq"] != null){
				arr_study_apply_seq.push(form.elements["paramMap.study_apply_seq"].value);
			}
		}
	}
	memoform.elements["memoSend.recv_member_seqs"].value = arr_member_seq.join(",");
	memoform.elements["memoSend.study_apply_seqs"].value = arr_study_apply_seq.join(",");

	if(arr_member_seq.length==0){
		alert("수강생을 체크해주세요");
	} else {
		memoform.action = fnMakeUrl ('lms/memo','writemain.admin.popup');
		___memoPopup=popupWindow('about:blank','_memo_popup','1000','600','scrollbars=yes','CENTER');
		___memoPopup.focus();
		memoform.target="_memo_popup";
		memoform.submit();
	}	
}

/*
 * SMS 보내기 팝업
 * formid : form name
 * checkkey : checkbox name
 */
var ___smsPopup=null;
function fnSmsFormWritePopup(formid, checkkey){
	var form =$(formid);
	var smsform = $("Form.sms.popupsend");
	var arr_member_seq =new Array();
	var arr_study_apply_seq =new Array();
	var arr_lecture_gubun =new Array();
	if(form.checkkey == null){
		alert('데이터가 없습니다.');
		return;
	}
	if(form.checkkey.length != null ){
		for(i=0; i<form.checkkey.length; i++){
			if(form.checkkey[i].checked == true)	{
				arr_member_seq.push(form.elements["paramMap.member_seq"][i].value);
				if(form.elements["paramMap.study_apply_seq"] != null){
					arr_study_apply_seq.push(form.elements["paramMap.study_apply_seq"][i].value);
				}
				
				if(form.elements["paramMap.lecture_gubun"][i].value != null){
					arr_lecture_gubun.push(form.elements["paramMap.lecture_gubun"][i].value);
				}
				
			}
		}
	} else {
		if(form.checkkey.checked == true)	{
			arr_member_seq.push(form.elements["paramMap.member_seq"].value);
			if(form.elements["paramMap.study_apply_seq"] != null){
				arr_study_apply_seq.push(form.elements["paramMap.study_apply_seq"].value);
			}
			if(form.elements["paramMap.lecture_gubun"] != null){
				arr_lecture_gubun.push(form.elements["paramMap.lecture_gubun"].value);
			}
		}
	}
	smsform.elements["smshistory.recv_member_seqs"].value = arr_member_seq.join(",");
	smsform.elements["smshistory.study_apply_seqs"].value = arr_study_apply_seq.join(",");
	smsform.elements["smshistory.lecture_gubunes"].value = arr_lecture_gubun.join(",");

	if(arr_member_seq.length==0){
		alert("수강생을 체크해주세요");
	} else {
		smsform.action = fnMakeUrl ('lms/smshistory','writemain.admin.popup');
		___smsPopup=popupWindow('about:blank','_sms_popup','800','400','scrollbars=yes','CENTER');
		___smsPopup.focus();
		smsform.target="_sms_popup";
		smsform.submit();
	}	
}
/*
 * SMS 보내기 팝업
 * member_seq, study_apply_seq,lecture_gubun
 */
var ___smsSinglePopup=null;
function fnSmsSingleWritePopup(member_seq, study_apply_seq,lecture_gubun){
	
	var smsform = $("Form.sms.popupsend");	
	smsform.elements["smshistory.recv_member_seqs"].value = member_seq;
	smsform.elements["smshistory.study_apply_seqs"].value = study_apply_seq;
	smsform.elements["smshistory.lecture_gubunes"].value = lecture_gubun;
	
	
	smsform.action = fnMakeUrl ('lms/smshistory','writemain.admin.popup');
	___smsSinglePopup=popupWindow('about:blank','_sms_single_popup','800','400','scrollbars=yes','CENTER');
	___smsSinglePopup.focus();
	smsform.target="_sms_single_popup";
	smsform.submit();
}

/*
 * MAIL 보내기 팝업
 * formid : form name
 * checkkey : checkbox name
 */
var ___mailPopup=null;
function fnMailFormWritePopup(formid, checkkey){
	var form =$(formid);
	var mailform = $("Form.mail.popupsend");
	var arr_member_seq =new Array();
	var arr_study_apply_seq =new Array();
	if(form.checkkey == null){
		alert('데이터가 없습니다.');
		return;
	}
	if(form.checkkey.length != null ){
		for(i=0; i<form.checkkey.length; i++){
			if(form.checkkey[i].checked == true)	{
				arr_member_seq.push(form.elements["paramMap.member_seq"][i].value);
				if(form.elements["paramMap.study_apply_seq"] != null){
					arr_study_apply_seq.push(form.elements["paramMap.study_apply_seq"][i].value);
				}
			}
		}
	} else {
		if(form.checkkey.checked == true)	{
			arr_member_seq.push(form.elements["paramMap.member_seq"].value);
			if(form.elements["paramMap.study_apply_seq"] != null){
				arr_study_apply_seq.push(form.elements["paramMap.study_apply_seq"].value);
			}
		}
	}
	mailform.elements["mailSend.recv_member_seqs"].value = arr_member_seq.join(",");
	mailform.elements["mailSend.study_apply_seqs"].value = arr_study_apply_seq.join(",");

	if(arr_member_seq.length==0){
		alert("수강생을 체크해주세요");
	} else {
		mailform.action = fnMakeUrl ('lms/mailsend','writemain.admin.popup');
		___mailPopup=popupWindow('about:blank','_mail_popup','800','400','scrollbars=yes','CENTER');
		___mailPopup.focus();
		mailform.target="_mail_popup";
		mailform.submit();
	}	
}
/**
 * 폼 내의 날짜 비교 
 */
fnCompareDate = function(formid, dateElementName1, dateElementName2) {
	var form = $(formid);
	if (form.elements[dateElementName1].value > form.elements[dateElementName2].value) {
		alert("기간이 정확하지 않습니다.");
		return false;
	}
	form = null;
	return true;
}
fnLeftMenuMouseOver = function(element) {
	if (element.className.endsWith("_highlight") == true){
		return;
	}
	if (element.className.endsWith("_on") == false){
		element.className += "_on"; 
	}
}
fnLeftMenuMouseOut = function(element) {
	if (element.className.endsWith("_highlight") == true){
		return;
	}
	if (element.className.endsWith("_on") == true){
		element.className = element.className.substring(0, element.className.length -3); 
	}
}

fnShowComma = function (theObj) {
    var num = theObj.value;
    var re = /[^0-9\-]/g;
    var re2 = /[^0-9]/g;
    var flag = "";   // 음수
	var ptNum = "" ; //소수점 뒤의 문자
	if (num.toString().indexOf('.') > 0 ) {
		//소수점 뒷자리가 있다면
		ptNum = "." + num.substr(num.toString().indexOf('.')+1).replace(re2,'');
		num = num.substr(0,num.toString().indexOf('.'));
	}
	
    var num = num.toString().replace(re,'');

    if (num.substr(0,1) == "-") {
    	flag = "-";
        num = num.substr(1,num.length - 1);
				
    }
    if(isNaN(num)) {num = "";}
    
    num = Math.floor(num).toString();
    for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) 
    num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3)); 
    num = flag + num + ptNum ;

    theObj.value = num;
}

fnHideComma = function (theObj) {
    var data = theObj.value;
    var len  = data.length;
    var temp = "";
	for ( i=0;i<len;i++) {
      if( data.substr(i,1) != ",") {
          temp = temp + data.substr(i,1);
	   }
	}

	theObj.value = temp;
	theObj.select();
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}



/**
 * MRD 경로 
 * @return
 */
function getMrdUrl(){
	var mrdurl="http://www.edukyobobook.co.kr:"+document.location.port+"/mrd";
	return mrdurl; 
}


/*
 * 쿠키 셋팅 정보 
 * 2010 01 13 이치도 작업 
 */
function setCookie(name,value,expires,path,domain,secure) {

	  document.cookie = name + "=" + escape (value) +
		((expires) ? "; expires=" + expires.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
}

function getCookieValue(name) { 
	var Found = false 
	var start, end 
	var i = 0 

	// cookie 문자열 전체를 검색 
	while(i <= document.cookie.length) { 
		start = i 
		end = start + name.length 
		// name과 동일한 문자가 있다면 
		if(document.cookie.substring(start, end) == name) { 
			Found = true 
			break 
		} 
		i++ 
	} 
	
	// name 문자열을 cookie에서 찾았다면 
	if(Found == true) { 
		start = end + 1 
		end = document.cookie.indexOf(";", start) 
		// 마지막 부분이라는 것을 의미(마지막에는 ";"가 없다) 
		if(end < start) end = document.cookie.length 
		// name에 해당하는 value값을 추출하여 리턴한다. 
		return document.cookie.substring(start, end) 
	} 
	// 찾지 못했다면 
	return "" 
} 

/*
 * 쿠키 이름 정보 추출  
 * 2010 01 13 
 */
function getAllCookieName() {

	var alCookie = document.cookie.split(";")
	var alResult = new Array();

	 for (i=0; i < alCookie.length; i++) {
	  if (null == alCookie[i] || "" == alCookie[i]) {
	   continue;
	  }
	     cookieName = alCookie[i].split("=")[0]; //.replace(/(^\s*)|(\s*$)/g,"");
	     alResult.push(cookieName);
	 }
	 return alResult;
}

//쿠키 제거   IE6 버전중 일부 에서 20개 개수에 대한 문제 해결
function initStudyCookies() {
  	var expireDate = new Date();    //어제 날짜를 쿠키 소멸 날짜로 설정한다.
        expireDate.setDate( expireDate.getDate() - 1 );
    var booleanCheck = "false";
	var cookienames = getAllCookieName();

	if(cookienames.length > 0) {
		for(var i = 0 ; i < cookienames.length; i++) { // 12번 루프
			for(var j = 0 ; j < keepCookies.length; j++) { // 0
				if(cookienames[i].toUpperCase().indexOf(keepCookies[j]) >= 0 ){ // == keepCookies[j]) {
					booleanCheck = "true"; // 쿠키명이 존재한다.
				}
			}
			if(booleanCheck == "false"){ // 쿠키삭제
				setCookie(" " + cookienames[i] ,"", expireDate, "/");
			}
			booleanCheck = "false";
		}
	}
}


//	사용상태 변경시 체크박스(name ="checkkey") 체크
fnCheckkeyForListSelect=function(selObj){
	var form=selObj.form;

	var checkkey=form.checkkey;
	if(!checkkey) return false;

	var selName=selObj.name;
	var selObjs=form.elements[selName];
	if(checkkey.length){
		for(var i=0;i<selObjs.length;i++){
			if(selObjs[i]===selObj){
				checkkey[i].checked=true;
			}
		}
	}else{
		checkkey.checked=true;
	}
}

// Hiddenframe를 이용한 ajax 처리후 진행상태가 완료가 되지 않는 경우 호출
fnInitHiddenframe = function() {
	window.hiddenframe.location = null;
}

fnUserMemoInfo = function(reg_member_seq){
	//	var form = $("Form.list");
	
	if(chkLogin()) {
		var url = "/lms/membermemoinfo/main.user.usermemo.popup.action?paramMap.member_seq="+reg_member_seq;
		var owin = window.open(url, 'userMemoInfo', 'toolbar=no,menubar=no,status=no,scrollbars=no,resizable=no,top=10,left=20,width=198,height=184');			
	}else{
		alert("해당 기능은 로그인이 필요합니다.");
	}	
}

/**
 * 학습하기&오리엔테이션 학습템플릿 등록화면에서 문항찾기 
 * @param role  회원권한 
 * 2011.01.05 EOKIM 
 */
fnSearchStudyItem = function(callback, formid, study_gubun_code ){
	
	var url = "";
	var param = "self";
	var options = "scroll:yes";	
		url = fnMakeUrl("lms/rblstudyitem","main.admin.popup")+"?rblstudyitem.study_gubun_code="+study_gubun_code+"&rblstudyitem.formid="+formid;	
	var values = popupModal(fnGetAuthUrl(url), param, "600px", "470px", options);
	if (values) {
		callback.call(this, formid, values);
	}
}

/**
 * 학습하기&오리엔테이션 학습템플릿 등록화면에서 템플릿찾기 
 * @param role  회원권한 
 * 2011.01.05 EOKIM 
 */
  
fnSearchTemplate = function(callback, formid, study_gubun_code, code_value, week_code, target ){

	var course_code  = "";
	var subject_code = "";
	
	//alert("formid = "+ formid + ",  study_gubun_code=" +study_gubun_code + ",code_value= "+code_value )
	
	if (study_gubun_code == "01") {  // OT 
		course_code = code_value;
		//subject_code= "9999";
	} else {       					// 학습 
		//course_code = "9999";
		subject_code = code_value;
	}
    // 아래 형식대로 처리함. 
    var url = "";
	var param = "self";
	var options = "scroll:yes";	
	//url = fnMakeUrl("lms/study_template","main.admin.popup")+"?paramMap.study_gubun_code="+study_gubun_code+"&paramMap.courseCode="+course_code+"&paramMap.subjectCode="+subject_code;	
	url = fnMakeUrl("lms/study_template","main.admin.popup")+"?paramMap.study_gubun_code="+study_gubun_code+"&paramMap.courseCode="+course_code+"&paramMap.subjectCode="+subject_code+"&paramMap.week_code="+week_code+"&paramMap.target="+target;	
	
	//var values = popupModal(fnGetAuthUrl(url), param, "630px", "490px", 'resizable=yes', options);
	var values = popupModal(fnGetAuthUrl(url), param, "750px", "800px", 'resizable=yes', options);
	if (values) {
		callback.call(this, formid, values);
	}
}	

 //오늘 하루 창  윈도우 오픈 용   

function notice_getCookie( name ) {
 var nameOfCookie = name + "=";
 var x = 0;
 
 while ( x <= document.cookie.length ){
  var y = (x+nameOfCookie.length);
  
  if ( document.cookie.substring( x, y ) == nameOfCookie ) {
   if ((endOfCookie=document.cookie.indexOf( ";", y )) == -1)
    endOfCookie = document.cookie.length;
    return unescape( document.cookie.substring( y, endOfCookie ) );
   }
  x = document.cookie.indexOf( " ", x ) + 1;
  
  if ( x == 0 )
   break;
  }
 return "";
}

function oneDayOpenPop( theURL,winName,features,popname ) {
 if ( notice_getCookie( popname ) != "done" ){
  window.open(theURL,winName,features);
 }
}

// 오늘 하루 팝업 창 종료 


