PageSourceSearch

http://vdrdid.co.kr/plugin/mong9-editor/source/js/mong9.js?ver=2304171

js vdrdid.co.kr collected 2026-10-09 23:27:12 UTC 84,057 bytes, 3,057 lines download raw bytes

1// ver 1.4 //
2
3var m9_Onload_Function = new Array();
4var m9_Resize_Function = new Array();
5
6var m9_evt; // 이벤트
7var m9_ie_var = 0; // ie 버전
8
9if (!M9_SET) { var M9_SET = {}; }
10
11M9_SET["mobile_ok"] = 0;
12M9_SET["alt_view"] = 1;
13M9_SET["navigator"] = ""; // 브라우져
14
15function m9_ImportScript(Dfile,Dfunc) {
16	
17	var _Dfunc_type = (typeof(Dfunc) == "function") ? 1 : 0;
18	var IC = _m9_Import_script;
19	
20	if (!IC._Loaded_file[Dfile]) {
21
22		if (IC._Importing_now[Dfile]) {
23			IC.ready_doing(Dfile,Dfunc);
24		} else {
25			
26			var matching = IC.match_n_get_js(Dfile);
27	
28			if (matching == 0) {
29
30				IC._Importing_now[Dfile] = 1;
31			
32				jQuery.getScript(Dfile).done(function(script,textStatus) {
33					IC.ready_doing(Dfile,Dfunc);
34				}).fail(function(jqxhr,settings,exception) {
35					if (_Dfunc_type) {    
36		    			alert('Loading Error : ' + Dfile);
37		    		}
38				});
39				
40			} else {
41				IC.ready_doing(Dfile,Dfunc);
42			}
43
44		}
45			
46	} else {
47		if (_Dfunc_type) {
48			Dfunc();
49		}		
50	}
51	
52} // function
53
54// 자바스크립트 파일 불러오기
55var _m9_Import_script = {
56
57	_Loaded_file : {}, // 로딩된 JS 목록
58	_Importing_file : {}, // 불러오기 중인 JS
59	_Importing_now : {},
60
61	// JS파일(Dfile)이 존재하는지 체크		
62	match_n_get_js : function(Dfile) {
63
64		var scripts = document.getElementsByTagName("script");
65		
66		var z = 0; 
67		for (var i=0;i<scripts.length;i++) { 
68			var src = scripts[i].getAttribute("src"); 
69			if (src) { 		
70				this._Loaded_file[src] = 1;
71				if (src.indexOf(Dfile.substring(Dfile.lastIndexOf("/") + 1)) != -1) {
72					z++;
73				}
74			} 
75		}
76		return z;
77		
78	},
79
80	// JS로딩 후, 실행할 함수 저장하고 실행버튼(가상)
81	ready_doing : function(Dfile,Dfunc) {
82
83		if (typeof(Dfunc) == "function") {    
84			if (!this._Importing_file[Dfile]) {
85				this._Importing_file[Dfile] = new Array();
86			}
87			this._Importing_file[Dfile].push(Dfunc);			
88    		this.excute_switch(Dfile);
89		}
90	
91	},
92
93	_import_timer : {},
94
95	/// 동시에 같은 파일이 로딩시 한번만 로딩하기 위한 스위치개념
96	// 마지막 스위치값만 실행
97	excute_switch : function(Dfile) {
98		clearTimeout(this._import_timer[Dfile]);
99		this._import_timer[Dfile] = setTimeout(function() { _m9_Import_script.excute_func(Dfile); },300);	
100	},
101
102	// 로딩후, 실행
103	excute_func : function(_file) {
104	
105		m9_delay("",200,function() {					
106			_m9_Import_script._Loaded_file[_file] = 1; // 파일로딩 확인
107			if (!_m9_Import_script._Importing_file[_file]) { return false; }
108			for (var i=0;i<_m9_Import_script._Importing_file[_file].length;i++) {
109				_m9_Import_script._Importing_file[_file][i]();
110			}
111			delete _m9_Import_script._Importing_file[_file];
112			delete _m9_Import_script._Importing_now[_file];
113		});
114		
115	}	
116
117};
118
119function m9_ImportCss(Dfile,Dfunc) {
120
121	var _Dfunc_type = (typeof(Dfunc) == "function") ? 1 : 0;
122	var IC = _m9_Import_css;
123	
124	if (!IC._Loaded_file[Dfile]) {
125
126		if (IC._Importing_now[Dfile]) {
127			IC.ready_doing(Dfile,Dfunc);
128		} else {
129			
130			var matching = IC.match_n_get_js(Dfile);
131	
132			if (matching == 0) {
133
134				IC._Importing_now[Dfile] = 1;
135
136				jQuery.getStylesheet(Dfile).done(function(script,textStatus) {
137					IC.ready_doing(Dfile,Dfunc);
138				}).fail(function(jqxhr,settings,exception) {
139					if (_Dfunc_type) {    
140		    			alert('Loading Error : ' + Dfile);
141		    		}
142				});
143								
144			} else {
145				IC.ready_doing(Dfile,Dfunc);
146			}
147
148		}
149			
150	} else {
151		if (_Dfunc_type) {
152			Dfunc();
153		}		
154	}
155	
156} // function
157
158var _m9_Import_css = {
159
160	_Loaded_file : {}, // 로딩된 JS 목록
161	_Importing_file : {}, // 불러오기 중인 JS
162	_Importing_now : {},
163
164	// JS파일(Dfile)이 존재하는지 체크		
165	match_n_get_js : function(Dfile) {
166
167		var scripts = document.getElementsByTagName("link");
168
169		var z = 0; 
170		for (var i=0;i<scripts.length;i++) { 
171			var src = scripts[i].getAttribute("href"); 
172			if (src) { 		
173				this._Loaded_file[src] = 1;
174				if (src.indexOf(Dfile.substring(Dfile.lastIndexOf("/") + 1)) != -1) { z++; }
175			} 
176		}
177		return z;
178		
179	},
180
181	// JS로딩 후, 실행할 함수 저장하고 실행버튼(가상)
182	ready_doing : function(Dfile,Dfunc) {
183
184		if (typeof(Dfunc) == "function") {    
185			if (!this._Importing_file[Dfile]) {
186				this._Importing_file[Dfile] = new Array();
187			}
188			this._Importing_file[Dfile].push(Dfunc);			
189    		this.excute_switch(Dfile);
190		}
191	
192	},
193
194	_import_timer : {},
195
196	/// 동시에 같은 파일이 로딩시 한번만 로딩하기 위한 스위치개념
197	// 마지막 스위치값만 실행
198	excute_switch : function(Dfile) {
199		clearTimeout(this._import_timer[Dfile]);
200		this._import_timer[Dfile] = setTimeout(function() { _m9_Import_css.excute_func(Dfile); },300);	
201	},
202
203	// 로딩후, 실행
204	excute_func : function(_file) {
205
206		m9_delay("",200,function() {				
207			_m9_Import_css._Loaded_file[_file] = 1; // 파일로딩 확인
208			if (!_m9_Import_css._Importing_file[_file]) { return false; }
209			for (var i=0;i<_m9_Import_css._Importing_file[_file].length;i++) {
210				_m9_Import_css._Importing_file[_file][i]();
211			}
212			delete _m9_Import_css._Importing_file[_file];
213			delete _m9_Import_css._Importing_now[_file];
214		});
215		
216	}		
217	
218};
219
220function m9_set_navigator() {
221
222    var agent = navigator.userAgent.toLowerCase(),name = navigator.appName,browser;
223
224	M9_SET["navigatorVersion"] = '';
225
226    // MS 계열 브라우저를 구분하기 위함.
227    if(name === 'Microsoft Internet Explorer' || agent.indexOf('trident') > -1 || agent.indexOf('edge/') > -1) {
228        browser = 'ie';
229        if(name === 'Microsoft Internet Explorer') { // IE old version (IE 10 or Lower)
230            agent = /msie ([0-9]{1,}[\.0-9]{0,})/.exec(agent);
231            //browser += parseInt(agent[1]);
232			M9_SET["navigatorVersion"] = parseInt(agent[1]);
233        } else { // IE 11+
234            if(agent.indexOf('trident') > -1) { // IE 11 
235                //browser += 11;
236				M9_SET["navigatorVersion"] = 11;
237            } else if(agent.indexOf('edge/') > -1) { // Edge
238                //browser = 'edge';
239				M9_SET["navigatorVersion"] = 11;
240            }
241        }
242    } else if(agent.indexOf('safari') > -1) { // Chrome or Safari
243        if(agent.indexOf('opr') > -1) { // Opera
244            browser = 'opera';
245        } else if(agent.indexOf('chrome') > -1) { // Chrome
246            browser = 'chrome';
247        } else { // Safari
248            browser = 'safari';
249        }
250    } else if(agent.indexOf('firefox') > -1) { // Firefox
251        browser = 'firefox';
252    }
253
254	M9_SET["navigator"] = browser;
255	if (M9_SET["navigatorVersion"] != '') {
256		m9_ie_var = M9_SET["navigatorVersion"];
257	}
258	if (m9_ie_var == 0) { m9_ie_var = 100; } 
259
260} // function
261
262m9_set_navigator();
263		
264function m9_getObject(objectId) { 
265	// checkW3C DOM, then MSIE 4, then NN 4. 
266	if(document.getElementById && document.getElementById(objectId)) { 
267		return document.getElementById(objectId); 
268	} else if (document.layers && document.layers[objectId]) { 
269		return document.layers[objectId]; 
270	} else { 
271		return false; 
272	} 
273} // function 
274
275function m9_get_object(Did) {
276	return (typeof(Did) == "object") ? Did : m9_getObject(Did);
277} // function
278
279// 브라우져에 맞게 body 오브젝트 가져오기
280function m9_get_body_obj() {
281	return (M9_SET["navigator"] == "safari") ? document.body : (M9_SET["navigator"] == "ie" ? m9_ietruebody() : document.documentElement);
282} // function
283
284// 익스플로러 버전에 상관 없이 사용하기
285function m9_ietruebody() { 
286	if (document.documentElement && document.documentElement.scrollTop) { // ie6 Strict 
287		return document.documentElement; 
288	} else if(document.documentElement && document.documentElement.clientHeight) { // ie6 Strict 
289		return document.documentElement; 
290	} else if (document.body) { // ie < ie 6 
291		return document.body; 
292	}
293} // function
294
295// 현재 브라우져 내용부분 사이즈 리턴
296function m9_get_window_size() {
297	var _w = 0;
298	var _h = 0;
299	var _w_page = 0;
300	var _h_page = 0; 
301	if (window.innerHeight) {
302		var scroll_obj = m9_get_body_obj(); 	
303		var s_w = window.innerWidth - scroll_obj.clientWidth; // 스크롤 크기
304		_w = window.innerWidth - s_w;
305		_h = window.innerHeight;// - s_w; 하위 스크롤 적용 안됨
306	} else {
307		// ie
308		if (document.documentElement.clientHeight) {
309			// 스크롤 값을 제외한 값
310			_w = document.documentElement.clientWidth;
311			_h = document.documentElement.clientHeight; 	
312		}
313	}
314	return [_w,_h];
315} // function
316
317//*****************************************//
318// 쿠키 저장
319//*****************************************//
320function m9_setCookie(name,value,expires) {
321	document.cookie = name + "=" + escape(value) + ((expires == null || expires == "") ? "" : (" ; expires=" + expires.toGMTString()));
322} // function
323
324//*****************************************//
325// 쿠키 얻어오기
326//*****************************************//
327function m9_getCookie(name) {
328	var arg = name + "=";
329	var alen = arg.length;
330	var clen = document.cookie.length;
331	var i = 0;
332	while (i< clen) {
333		var j = i + alen;
334		if (document.cookie.substring(i,j) == arg) {
335			var end = document.cookie.indexOf(";",j);
336			if (end == -1) end = document.cookie.length;
337			return unescape(document.cookie.substring(j,end));
338		}
339		i = document.cookie.indexOf(" ",i) + 1;
340		if (i == 0) break;
341	}
342	return null;
343} // function
344
345function m9_check_num(Dnum) {
346	var re = RegExp("^[0-9]+$","gi");
347	if (re.test(Dnum)) {
348		return true;
349	}
350	return false;		
351} // function
352
353function m9_get_num(Dstr) {
354	if (!Dstr) { return ''; }
355	Dstr = Dstr +"a";
356	var rgExp = /[-\d\.]+/;
357	var Cstr = Dstr.match(rgExp);
358	if (Cstr == null) { Cstr = ""; }
359	return Cstr * 1;
360} // function
361
362function m9_get_str(Dstr) {
363	if (!Dstr) { return ''; }
364	var rgExp = /[^\d\.]+/g;
365	var Cstr = Dstr.match(rgExp); 
366	if (Cstr == null) { Cstr = ""; } 
367	return Cstr;
368} // function
369
370function m9_set_select_value(Did,Dvalue) {
371	var Cid = m9_get_object(Did);
372	jQuery(Cid).children().each(function(i) {
373		if (jQuery(this).val() == Dvalue) {
374			jQuery(Cid).prop('selectedIndex',i); 	
375		}
376	});
377} // function
378
379function m9_set_select_index(Did,Dindex) {
380	var Cid = m9_get_object(Did);
381	jQuery(Cid).prop('selectedIndex',Dindex);
382} // function
383
384function m9_get_radio_index(Cid) {
385
386	var Did = document.getElementsByName(Cid);
387	if (!Did) { return false; }
388
389	for (var i=0; i<Did.length;i++) {
390		if (Did[i].checked == true) { return i; } 		
391	}
392
393	return false;
394
395} // function
396
397function m9_get_radio_value(Cid) {
398	var Dindex = m9_get_radio_index(Cid);
399	var re = RegExp("^[0-9]+$","gi"); 
400	if (!re.test(Dindex)) { return ""; }
401	var Did = document.getElementsByName(Cid)[Dindex].value;
402	return Did;
403} // function
404
405function m9_set_radio_index(Cid,Cnum) {
406	var Did = document.getElementsByName(Cid);
407	if (!Did) { return false; }
408	Did[Cnum].checked = true;
409} // function
410
411function m9_get_checked(Cid) {
412	var Did = document.getElementsByName(Cid);
413	if (!Did) { return false; }
414	return Did[0].checked; 	
415} // function
416
417function m9_get_pixelLeft(Did) {
418	var Cid = m9_get_object(Did); 
419	return m9_get_num(jQuery(Cid).css("left"));
420} // function
421
422function m9_get_pixelTop(Did) {
423	var Cid = m9_get_object(Did);
424	return m9_get_num(jQuery(Cid).css("top"));
425} // function
426
427function m9_change_pixelLeft(Did,Dvalue) {
428	var Cid = m9_get_object(Did); 
429	jQuery(Cid).css("left",Dvalue);
430} // function
431
432function m9_change_pixelTop(Did,Dvalue) {
433	var Cid = m9_get_object(Did);	
434	jQuery(Cid).css("top",Dvalue);
435} // function
436
437function m9_getRealOffsetTop(Did) {
438	return jQuery(m9_get_object(Did)).offset().top; 
439} // function
440
441function m9_getRealOffsetLeft(Did) {
442	return jQuery(m9_get_object(Did)).offset().left;
443} // function
444
445function m9_get_xy_pos(Aw,Ah,Bw,Bh,Xdistance,Ydistance,Dpos,Epos) {
446
447	if (!Xdistance) { Xdistance = 0; }
448	if (!Ydistance) { Ydistance = 0; }
449	if (!Dpos) { Dpos = 1; }
450	if (!Epos) { Epos = 0; }
451
452	var Cw,Ch = 0;
453
454	if (Dpos == 3 || Dpos == 9) {
455		Cw = Aw - (Bw + Xdistance);
456	} else if (Dpos == 6) {
457		Cw = (Epos == 0) ? Aw - (Bw + Xdistance) : Aw + Xdistance; 
458	} else if (Dpos == 2 || Dpos == 5 || Dpos == 8) {
459		Cw = (Aw - Bw) / 2;
460	} else if (Dpos == 1 || Dpos == 7) {
461		Cw = Xdistance;
462	} else if (Dpos == 4) {
463		Cw = (Epos == 0) ? Xdistance : -(Bw + Xdistance); 	
464	} 
465 
466	if (Dpos == 4 || Dpos == 5 || Dpos == 6) {
467		Ch = (Ah - Bh) / 2;
468	} else if (Dpos == 7 || Dpos == 8 || Dpos == 9) {	
469		Ch = (Epos == 0) ? Ah - (Bh + Ydistance) : (Ah + Ydistance);
470	} else {
471		Ch = (Epos == 0) ? Ydistance : -(Bh + Ydistance);  
472	}
473
474	return [Cw,Ch];
475
476} // function
477
478var _m9_width_columns2 = new Array("paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","marginLeft","marginRight");
479var _m9_height_columns2 = new Array("paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","marginTop","marginBottom");
480
481function m9_get_object_size(Did,Dkind) {
482
483	var Cid = m9_get_object(Did);	
484
485	var box_sizing = jQuery(Cid).css("box-sizing");
486
487	var Dsize = 0; 
488	if (Dkind == "width") {
489		Dsize += m9_get_num(jQuery(Cid).css("width")); 	
490		if (box_sizing != "border-box") {
491			for (var i=0;i<_m9_width_columns2.length;i++) {
492				Dsize += m9_get_num(jQuery(Cid).css(_m9_width_columns2[i]));
493			}
494		}
495	} else {
496		Dsize += m9_get_num(jQuery(Cid).css("height"));  	  
497		for (var i=0;i<_m9_height_columns2.length;i++) {
498			Dsize += m9_get_num(jQuery(Cid).css(_m9_height_columns2[i]));
499		}
500	}
501
502	return Dsize;
503
504} // function
505
506function m9_get_object_size2(Did,Dkind) {
507	var Cid = m9_get_object(Did);	
508	return (Dkind == "width") ? Cid.offsetWidth : Cid.offsetHeight;
509} // function
510
511///////////////////////////////////////////////////////////////////////////////////////
512
513var _delay_obj = {};
514var _delay_empty_no = 0;
515function m9_delay(Dname,Ddelay,Dfunc) {
516
517	if (Dname == "" || Dname == undefined) {
518		_delay_empty_no++;
519		Dname = "_Delay_" + _delay_empty_no;
520	}
521
522	if (!_delay_obj[Dname]) { // 무조건 한번 돌리기 위해
523 	
524		if (!Ddelay) { Ddelay = 1000; }
525		_delay_obj[Dname] = {};
526		_delay_obj[Dname]["func"] = Dfunc;
527		_delay_obj[Dname]["delay"] = window.setInterval("m9_delay('" + Dname + "')",Ddelay);  
528    
529	} else {
530 	
531		if (_delay_obj[Dname]["delay"] && Dfunc) { return false; }
532		clearInterval(_delay_obj[Dname]["delay"]);
533		_delay_obj[Dname]["func"]();
534		delete _delay_obj[Dname];
535  
536	}
537
538} // function
539
540var _m9_delay_memory = {};
541function m9_delay_checking(Dfunc,Dfunc2,Dhash) {
542	if (Dfunc() == true) {
543		Dfunc2(Dhash);	
544	} else {
545
546		if (!_m9_delay_memory[Dfunc]) {
547			_m9_delay_memory[Dfunc] = 0;
548		}
549
550		_m9_delay_memory[Dfunc]++;
551
552		if (_m9_delay_memory[Dfunc] > 20) {
553			return false;
554		}
555
556		setTimeout(function(){
557			m9_delay_checking(Dfunc,Dfunc2,Dhash);
558		},200);		
559	}
560} // function
561
562
563var _random_id_count = 0;
564function m9_random_id(Did) {
565
566	var Cid = m9_get_object(Did);	
567	var _id = Cid.getAttribute("id");
568	if (_id) {
569		return _id;
570	} else {
571		_random_id_count++; 	
572		_id = "_m9random_" + _random_id_count;
573		Cid.setAttribute("id",_id);     
574		return _id;
575	}
576} // function
577
578var _random_id_count2 = 0;
579function random_str() {
580  _random_id_count2++; 	
581  return "_m99random_" + _random_id_count2;	
582}
583
584var _ie_ok = (M9_SET["navigator"] == "ie" && m9_ie_var < 7) ? 1 : 0; 
585  
586var _animate_document_count = 0;
587function m9_animate_document(Did) {
588
589	var Cid = m9_get_object(Did); 
590	var Ctarget = (!Cid) ? "body" : Cid;
591
592	var _obj = jQuery(Ctarget).find("[data-m9-execute]");		
593
594	if (Cid) { _obj.push(Ctarget); }
595
596	var base_font_color = jQuery("body").css("color");
597
598	for (var i=0;i<_obj.length;i++) { 
599
600		var _tagName = _obj[i].tagName;
601
602		if (jQuery(_obj[i]).parents('.m9not').length > 0) { continue; }
603		
604		// ani_type 처리 
605		var ani = (_obj[i].getAttribute("data-m9-execute")) ? _obj[i].getAttribute("data-m9-execute") : _obj[i].getAttribute("ani_type");
606
607		if (ani) {
608			var _anis = ani.split(";");
609			for (var m=0;m<_anis.length;m++) {
610				var _ani = _anis[m];
611				var prop = m9_get_property(_ani);
612				M9ANI.reset(_obj[i],prop);
613			}
614		} // ani
615		
616	} //for
617	
618	_animate_document_count++;
619
620} // function
621
622/////////////////////////////////////////////////////////////////////////////////////////////////////////
623function m9_ajax_load_contents(Durl,Did,Dsettings,Dcallback) {
624
625	var evt_obj = m9_get_evt_obj(m9_evt); // 이벤트 변경전 캐치
626 
627	var Cid = m9_get_object(Did);		
628	if (!Cid) { return false; }
629
630	if (typeof(Dsettings) != "object") { Dsettings = {}; }
631
632	if (!Dsettings["type"]) { Dsettings["type"] = "GET"; }
633 	 
634	if (!Dsettings["put_kind"]) {
635		var _kind = (m9_get_file_kind(Durl))[1];
636		Dsettings["put_kind"] = (_kind == "txt") ? "text" : "html";
637	} 
638   
639	if (!Cid["_data"]) { Cid["_data"] = {}; }
640
641	if (Cid["_data"]["load"] == "error") { Cid["_data"]["load"] = undefined; }
642	if (Cid["_data"]["load"]) {
643		if (Dsettings["whenever"] != true) {
644			if (typeof(Dcallback) == "function") { Dcallback(); } // 콜백함수 실행
645			return false;
646		} else {
647			Cid["_data"]["load"] = undefined;
648		}
649	}
650
651	// 기본한글체크 : /^[가-힣]*$/
652	// UTF-8 전용한글체크 : /^[\uac00-\ud7a3]*$/
653	if (Durl.match( /\?/)) {
654 	
655		var _f = Durl.split("?");
656		var _m = _f[1].split("&");
657  
658		var re_url = "";
659		for(var i=0;i<_m.length;i++) {
660			var _h = _m[i].split("=");
661			if (_h[1].match( /[가-힣]/)) { _h[1] = encodeURIComponent(_h[1]); }
662			if (re_url != "") { re_url +="&"; }
663			re_url += _h[0]+"="+_h[1];
664		}
665		Durl = _f[0] + "?" + re_url; 
666	}
667
668	var request = jQuery.ajax({
669		type : Dsettings["type"],
670		url : Durl,
671		/* async : true , */
672		  
673		beforeSend: function ( xhr ) {
674
675			m9_delay("",10,function() { //m9_ajax_loading
676				if (!Cid["_data"]["load"]) {		
677					if (evt_obj) { //이벤트가 존재할 때만 실행
678						m9_layer_position("m9_ajax_loading",evt_obj);  
679						m9_layer_view_only("m9_ajax_loading",{opacity:100,speed:'fast'});
680					}
681					_layer_event_obj = undefined;
682					_before_layer = undefined;				
683				}
684			});
685
686		} 
687
688	});
689
690	function _error_msg(Ddata) {
691
692		Cid["_data"]["load"] = "error"; 	
693		jQuery("#m9_ajax_loading").css("display","none");
694		jQuery("#m9_ajax_error_contents").text("Loading Error : " + Ddata);
695		m9_layer_position("m9_ajax_error_view",evt_obj);
696		m9_layer_view_only("m9_ajax_error_view",{opacity:100,speed:'slow'},function(){ 
697			m9_delay("ajax_error",2000,function(){
698				m9_layer_view_only_close("m9_ajax_error_view");
699			});
700		});
701	  
702	} // function
703   
704	// 파일 가져오기 시작
705	request.done(function( msg ) {});
706
707	// 파일 가져오기 실패했을 경우
708	request.fail(function(jqXHR,textStatus,errorThrown) {
709		_error_msg(errorThrown);
710	});
711
712	// 파일 가져오기 성공했을 경우  
713	request.success(function(data,textStatus,jqXHR) {
714
715		if (data.indexOf('error|') != -1) {
716			var dd = data.split("|");
717			_error_msg(dd[1]);
718			return false;
719		}
720
721		if (Dsettings["get_id"]) { // 추출하기
722			var _name = "#" + Dsettings["get_id"];
723			data = jQuery(data).find(_name);
724		}
725
726		if (Cid["_data"]["_son"]) { Cid = m9_get_object(Cid["_data"]["_son"]); } // 아들 존재하면 아들에게 붙임
727
728		if (Dsettings["put_kind"] == "html") { jQuery(Cid).html(data); } else { jQuery(Cid).text(data); }	// 삽입
729				
730		m9_delay("",10, // 다른함수와 연동위한 설정
731			function() {
732				Cid["_data"]["load"] = (Dsettings["whenever"] != true) ? Durl : undefined;	// 중복방지  
733				jQuery("#m9_ajax_loading").css("display","none");  
734				m9_animate_document(Cid);
735				if (typeof(Dcallback) == "function") { Dcallback(data); }  // 콜백함수 실행	
736		});
737
738	});
739
740} // function
741
742function m9_get_file_kind(url) {
743	var _f = (url.split("?"))[0].split("/");
744	var FileName = _f[_f.length-1];
745	var finfo = FileName.split(".");
746	return finfo;
747} // function
748
749function alert_(Dobj) {
750	var msg = "";
751	if (typeof(Dobj) == "object") {	
752		for (var i in Dobj) {
753			msg += i + "     :     " + Dobj[i] + "\n";  	
754		}	
755	}
756	alert(msg);
757	return msg;
758} // function
759
760function m9_parse_json(Dstring) {
761
762	var Prop = {};
763
764	if (Dstring.indexOf("{") > -1) {
765		Dstring = Dstring.replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, '"$2":'); // key
766		Dstring = Dstring.replace(/'(([^'])+)'/g, '"$1"'); // ' => "
767		Prop = jQuery.parseJSON(Dstring);
768	}
769
770	return Prop;
771
772} //function
773
774// 속성 가져오기
775function m9_get_property(Dstring) {
776
777	var Dreturn = new Array('',{});
778	var Prop = {};
779
780	Dstring = jQuery.trim(Dstring);
781
782	if (Dstring.indexOf("(") > -1) {
783
784		Dreturn[0] = Dstring.substr(0,Dstring.indexOf("("));
785		var Dstr = Dstring.match(/\((.*?)\)$/);
786
787		if (Dstr[1]) {
788			Prop = m9_parse_json(Dstr[1]);
789		}
790
791		Dreturn[1] = Prop;
792
793	} else {
794		Dreturn[0] = Dstring; 	
795	}
796
797	return Dreturn;
798
799} //function
800
801function m9_trim_quotes(Dstring) {
802	return Dstring.replace(/(^\")|(\"*$)/g,"").replace(/(^\')|(\'*$)/g,"");
803} // function
804
805function loading_view() {
806
807	var scroll_obj = m9_get_body_obj();
808	jQuery("#m9_page_change_bg").css({display:"block",width:scroll_obj.scrollWidth,height:scroll_obj.scrollHeight});
809	jQuery("#m9_page_change_div").css({display:"block",left:scroll_obj.scrollLeft,top:scroll_obj.scrollTop});
810	var _win = m9_get_window_size(); // 화면 크기 리턴 
811	jQuery("#m9_page_change").css({height:_win[1]});
812
813	m9_delay("_loading_load",500,function() {
814		location.reload();
815	});
816 	
817} // function
818
819function m9_get_evt_obj(e) {
820	if (!e) { if (window.event) { e = window.event; } else { return false; } }
821	return (e.target) ? e.target : (e.srcElement) ? e.srcElement : false;
822} // function
823 
824// 파이어 폭스처리
825if( navigator.userAgent.indexOf('Firefox') >= 0 ) {
826	var eventNames = ["mousedown","mouseover","mouseout","mousemove","mousedrag","click","dblclick","keydown","keypress","keyup"]; 
827	for(var i=0;i<eventNames.length;i++) {
828		window.addEventListener( eventNames[i],function(e) { window.event = e; },true);
829	}
830}
831
832function _set_animate_doing(Did,Ddoing) {
833	Did._animate_doing = Ddoing;	
834}
835
836var _m9_w_columns = new Array("paddingLeft","paddingRight","borderLeftWidth","borderRightWidth");
837var _m9_h_columns = new Array("paddingTop","paddingBottom","borderTopWidth","borderBottomWidth");
838
839function get_box_size(Did,Dkind) {
840
841	var Cid = m9_get_object(Did);
842
843	var Cvar = 0;
844
845	if (Dkind == "height") {
846		Cvar = jQuery(Cid).height();
847		for (var i=0;i<_m9_h_columns.length;i++) {
848			Cvar -= m9_get_num(jQuery(Cid).css(_m9_h_columns[i]));
849		}
850	} else {
851		Cvar = jQuery(Cid).width();	
852		for (var i=0;i<_m9_w_columns.length;i++) {
853			Cvar -= m9_get_num(jQuery(Cid).css(_m9_w_columns[i]));
854		}
855	}
856
857	return Cvar;				
858}
859
860function m9_escapeHTML(str) {
861	return str.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
862}
863
864function m9_unescapeHTML(str) {
865	return str.stripTags().replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');
866}
867
868////////////////////////////////////////////////////////////////////////////////////////////////
869/*
870	RGB 색상 : #FFFFFF, #000000 ..
871	hex 색상 : rgb(255,255,255), rgb(0,0,0)
872*/
873var q_border_w = new Array("borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth");
874var q_border_c = new Array("borderTopColor","borderBottomColor","borderLeftColor","borderRightColor");
875
876var M9ALT = {
877	
878	make_over : function(Did,Dnum,Dstr) {
879
880		if (Did._alt_over) { return Did._alt_over; }
881		if (!m9_getObject("m9_alt_no_" + Dnum)) { return false; }
882			
883		var C_w = Did.width;
884		var C_h = Did.height; 
885
886		var _clone_id = m9_random_id(Did); // id존재하지 않으면 생성
887		var clone_id = _clone_id + "_light";
888		jQuery("#m9_alt_no_"+Dnum).clone().attr("id",clone_id).css({width:C_w,height:C_h}).appendTo("body");
889
890		var clone_son_id = clone_id+"_son";
891		var clone_son =jQuery("#"+clone_id).children()[0];
892		jQuery(clone_son).css({width:C_w,height:C_h});
893
894		var alt_div = jQuery(clone_son).children()[0];
895		var mouse_div = jQuery(clone_son).children()[1];
896
897		jQuery(alt_div).css({width:C_w,height:C_h});
898		jQuery(mouse_div).css({width:C_w,height:C_h});
899		var alt_div2 = jQuery(alt_div).children()[0];		
900			
901		var re = /^#/gi;
902		var Dmatch = Dstr.match(re);
903
904		if (Dmatch != null) {
905			var Dstr_id = Dstr.replace(/^#/g,"");			
906			if (m9_getObject(Dstr_id)) {
907				jQuery(alt_div).append(m9_getObject(Dstr_id));
908				jQuery(alt_div).css("padding",0);		
909				m9_getObject(Dstr_id).style["display"] = "";
910			} else {
911				jQuery(alt_div2).append(Dstr);
912			}
913		} else {	
914			jQuery(alt_div2).append(Dstr);
915		}
916
917		alt_div._parent = clone_id;
918		mouse_div._parent = clone_id;
919		mouse_div._target = alt_div;
920		 				
921		Did._alt_over = clone_id;
922
923		jQuery(mouse_div).on('mouseout',function() {
924			var _a = mouse_div._target;
925			if (m9_getObject(this._parent)._doing == 1) {
926				m9_layer_slide_stop(_a);
927			}				
928	
929			m9_layer_slide_close(_a,{slide:'!down'},function(){
930				jQuery("#"+mouse_div._parent).css("display","none");
931				m9_getObject(this._parent)._doing = 0;     	 	
932			});			
933		});
934
935		return clone_id;
936	},
937	_encode : function(Dmsg) {
938		return Dmsg.replace(/\</g,"&lt;").replace(/\>/g,"&gt;");		
939	},
940		
941	view : function(Did) {
942
943		if (M9_SET["alt_view"] != '1') { return false; }
944		if (M9_SET["mobile_ok"] != 0) { return false; }
945
946		if (Did._alram == undefined) {	M9ALT._reset(Did); }
947		if (Did._alram == 0) { return false; }
948
949		var alt_no ="0";
950		if (Did._alram == 2) {	
951			alt_no = Did.parentNode.getAttribute("data-alt-no");
952			if (Did._alt) { Did.parentNode.alt = ""; }
953			if (Did._title) { Did.parentNode.title = ""; }
954		} else if (Did._alram == 3) {	
955			alt_no = Did.childNodes[0].getAttribute("data-alt-no");
956			if (Did._alt) { Did.childNodes[0].alt = ""; }
957			if (Did._title) { Did.childNodes[0].title = ""; }				
958		} else {
959			alt_no = Did.getAttribute("data-alt-no");
960			if (Did._alt) { Did.alt = ""; }
961			if (Did._title) { Did.title = ""; }					
962		} 	
963
964 		if (!alt_no) { return false; } else if (alt_no == null) { return false; }
965
966		var str = "";
967		if (Did._title && Did._alt) {
968			str = "<b>" + M9ALT._encode(Did._alt) + "</b><br />" + M9ALT._encode(Did._title);
969		} else if (Did._title) {
970			str = M9ALT._encode(Did._title);
971		} else {
972			str = M9ALT._encode(Did._alt);	 	
973		}
974
975		var regexp = /^[a-z]$/; // 알파벳 문자 하나				
976		if (regexp.test(alt_no)) {
977			
978			var clone_id = M9ALT.make_over(Did,alt_no,str);
979
980			var C_w = Did.width;
981			var C_h = Did.height; 
982
983			m9_layer_position(clone_id,Did,'!down');
984			m9_layer_position_xy(clone_id,0,C_h);
985			jQuery("#"+clone_id).css({"display":"block","z-index":10});
986
987			var alt_div = jQuery("#"+clone_id).children()[0];
988			alt_div = jQuery(alt_div).children()[0];						
989			
990			m9_getObject(clone_id)._doing = 1;
991			m9_layer_slide_view(alt_div,{slide:'!up'},function(){m9_getObject(clone_id)._doing = 0;});
992						
993		} else {
994
995			var _id = "m9_alt_view"+alt_no;
996			if (!m9_getObject("m9_alt_view"+alt_no)) { return false; }
997			
998			jQuery('#' + _id + '>div>div').html(str);
999			var alt_w = m9_get_object_size(_id,"width"); 
1000				
1001			if (M9_SET["navigator"] == "ie") {
1002				if (alt_w > 300) {
1003					jQuery('#' + _id).css('width','300px');
1004				}
1005			}
1006	
1007			var alt_h = m9_get_object_size(_id,"height"); 
1008			
1009			var direct = m9_layer_position(_id,Did);
1010				
1011			var _pos = [];
1012			if (direct == "up") {
1013				_pos.push("CENTER","BOTTOM");
1014			} else if (direct == "down") {
1015				_pos.push("CENTER","TOP"); 	
1016			} else if (direct == "left") { 	
1017				_pos.push("RIGHT","CENTER");  
1018			} else {	 	
1019				_pos.push("LEFT","CENTER");  
1020			}
1021
1022			jQuery('#' + _id + '>div').css("background-position",_pos[0]+" "+_pos[1]);
1023			jQuery('#' + _id).css('display','block');
1024			
1025		}
1026
1027	}, //view
1028	
1029	hidden : function(Did) {
1030
1031		if (!Did) { return false; }
1032
1033		if (M9_SET["alt_view"] != '1') { return false; }
1034		if (M9_SET["mobile_ok"] != 0) { return false; }		
1035		if (!Did._alt && !Did._title) { return false; }
1036
1037		if (Did._alram == 2) {	
1038			alt_no = Did.parentNode.getAttribute("data-alt-no");
1039		} else if (Did._alram == 3) {	
1040			alt_no = Did.childNodes[0].getAttribute("data-alt-no");			
1041		} else {
1042			alt_no = Did.getAttribute("data-alt-no");			
1043		} 	
1044
1045 		if (!alt_no) { return false; } else if (alt_no == null) { return false; }
1046		
1047		if (!m9_getObject("m9_alt_view"+alt_no)) { return false; }
1048									 
1049		if (M9_SET["navigator"] == "ie") {	
1050			m9_getObject("m9_alt_view"+alt_no).style.width = ""; // 크기 원래대로 		
1051		}
1052 
1053		m9_getObject("m9_alt_view"+alt_no).style.display = "none";  		
1054
1055		if (Did._alram == 2) {
1056			if (Did._alt) { Did.parentNode.alt = Did._alt; }
1057			if (Did._title) { Did.parentNode.title = Did._title; }
1058		} else if (Did._alram == 3) {	
1059			if (Did._alt) { Did.childNodes[0].alt = Did._alt; }
1060			if (Did._title) { Did.childNodes[0].title = Did._title; }								
1061		} else {
1062			if (Did._alt) { Did.alt = Did._alt; }
1063			if (Did._title) { Did.title = Did._title; }			
1064		}
1065		  		
1066	}, //hidden
1067
1068	_reset : function(Did) {
1069
1070		Did._alram = 0;
1071		
1072		if (M9_SET["navigator"] == "ie" && Did.tagName == "SELECT") { return; } // 익스플로러 SELECT박스 무시
1073		
1074		if (!Did._alt) {
1075			var _alt = Did.getAttribute("alt");
1076			if (_alt) {
1077				Did._alt = _alt;
1078				Did._alram = 1;
1079			}
1080		}
1081
1082		if (!Did._title) {
1083			var _title = Did.getAttribute("title");
1084			if (_title) {
1085				Did._title = _title; 
1086				Did._alram = 1;
1087			}
1088		}
1089
1090		if (Did._alram == 0) {
1091
1092			var Dparent = Did.parentNode;			
1093			if (Dparent.tagName == "A") {
1094
1095				if (!Did._alt) {
1096					var _alt = Dparent.getAttribute("alt");
1097					if (_alt) {	
1098						Did._alt = _alt;
1099						Did._alram = 2;
1100					}
1101				}
1102 
1103 				if (!Did._title) {
1104					var _title = Dparent.getAttribute("title");
1105					if (_title) {  		
1106						Did._title = _title;
1107						Did._alram = 2;
1108					}
1109				}
1110			}	 	
1111			
1112		}
1113		
1114		if (Did._alram == 0) {
1115			
1116			if (Did.tagName == "A") {
1117
1118				if (!Did._alt) {
1119					var _alt = jQuery(Did).find('[alt]').attr('alt');
1120					if (_alt) {	
1121						Did._alt = _alt;
1122						Did._alram = 3;
1123					}
1124				}
1125 
1126 				if (!Did._title) {
1127					var _title = jQuery(Did).find('[title]').attr('title');
1128					if (_title) {  		
1129						Did._title = _title;
1130						Did._alram = 3;
1131					}
1132				}
1133			}	 	
1134				
1135		}
1136
1137	} //reset	
1138	
1139};
1140
1141////////////////////////////////////////////////////////////
1142// 이벤트 관련
1143//////////////////////////////////////////////////////////// 
1144var M9EVENT = {
1145	mouseover : function(Did) {
1146		M9ALT.view(Did);
1147	},
1148	mouseout : function(Did) {
1149		M9ALT.hidden(Did);		
1150	}
1151};
1152
1153jQuery(document).on('mouseover',function(e) {
1154	M9EVENT.mouseover(e.target); 	
1155}).on('mouseout',function(e) {
1156	M9EVENT.mouseout(e.target); 	
1157}); 
1158
1159// 모바일체크
1160var m9_mobile_checking = {
1161	int : function() {
1162		var _mode = (m9_mobile_checking.isMobile()) ? "1" : "0";
1163		m9_setCookie("mobile_ok",_mode);		
1164		M9_SET["mobile_ok"] = _mode;
1165	},
1166	isMobile : function() {
1167		var UserAgent = navigator.userAgent;
1168		return (UserAgent.match(/iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson/i) != null || UserAgent.match(/LG|SAMSUNG|Samsung/) != null) ? 1 : 0;
1169	}
1170};
1171
1172//////////////////////////////////////////////////////////
1173// 리사이징 설정
1174//////////////////////////////////////////////////////////
1175m9_Resize_Function.push("m9_mode_obj.Responsive();");	
1176
1177jQuery(function() {
1178
1179	// m9_animate_document 의 윗부분에 실행
1180	jQuery.getStylesheet = function (href) {
1181		var jQueryd = jQuery.Deferred();
1182		var jQuerylink = jQuery('<link/>',{
1183			rel: 'stylesheet',
1184			type: 'text/css',
1185			href: href
1186		}).appendTo('head');
1187		jQueryd.resolve(jQuerylink);
1188		return jQueryd.promise();
1189	};
1190	
1191	m9_mode_obj.int(1);
1192	m9_mode_obj.Responsive();
1193	m9_mobile_checking.int(); // 모바일체크
1194
1195	var _before_screen_w = m9_get_num(jQuery('body').css('width'));
1196	var timer = null;
1197
1198	jQuery(window).on('resize',function( ) {
1199	    clearTimeout(timer);
1200	    timer = setTimeout(m9_resizeDone,300);
1201	} );
1202	
1203	function m9_resizeDone( ) {
1204	
1205		m9_delay("resize",200,function(){	
1206	
1207			var _now_screen_w = m9_get_num(jQuery('body').css('width'));
1208			if (_now_screen_w == _before_screen_w) { return false; }
1209			m9_mobile_checking.int(); // 모바일체크
1210			_before_screen_w = _now_screen_w;
1211			
1212			if (m9_Resize_Function.length > 0) {
1213				for (var i=0;i<m9_Resize_Function.length;i++) {
1214					eval(m9_Resize_Function[i]);	
1215				}
1216			}
1217	
1218		});
1219						
1220	}
1221
1222	var _html = '<div id="m9_page_change_bg" class="m9_page_turn_bg" style="display:none"></div>' +
1223	'<div id="m9_page_change_div" class="m9_page_turn_div" style="display:none"><div id="m9_page_change" class="m9_page_turn"><span class="m9-valign"><i>&nbsp;</i></span><span class="m9_page_turn_loading_bar"></span></div></div>' +
1224	'<div id="lightbox_area"></div>' +
1225	'<div id="m9_ajax_loading" style="display:none"><span id="m9_ajax_loading_contents">Loading..</span></div>' +
1226	'<div id="m9_ajax_error_view" style="display:none"><div id="m9_ajax_error_contents"></div></div>' +
1227	'<div id="m9_alt_view1" class="m9-alt-tipsy"><div><div></div></div></div>' +
1228	'<div id="m9_alt_view2" class="m9-alt-tipsy"><div><div></div></div></div>' +
1229	'<div id="m9_alt_view3" class="m9-alt-tipsy"><div><div></div></div></div>' +
1230	'<div id="m9_alt_view4" class="m9-alt-tipsy"><div><div></div></div></div>' +
1231	'<div id="m9_alt_no_a" class="m9_alt_no_a m9-alt-tipsy2" style="display:none"><div class="m9_box"><div class="m9_alt"><div class="m9_content"></div></div><div class="m9_mouse"></div></div></div>' +
1232	'<div id="m9_alt_no_b" class="m9_alt_no_b m9-alt-tipsy2" style="display:none"><div class="m9_box"><div class="m9_alt"><div class="m9_content"></div></div><div class="m9_mouse"></div></div></div>' +
1233	'<div id="m9_alt_no_c" class="m9_alt_no_c m9-alt-tipsy2" style="display:none"><div class="m9_box"><div class="m9_alt"><div class="m9_content"></div></div><div class="m9_mouse"></div></div></div>' +
1234	'<div id="m9_alt_no_d" class="m9_alt_no_d m9-alt-tipsy2" style="display:none"><div class="m9_box"><div class="m9_alt"><div class="m9_content"></div></div><div class="m9_mouse"></div></div></div>';
1235
1236	jQuery('body').append(_html);
1237
1238	m9_animate_document();
1239
1240});
1241
1242function remove_m9_ani_tag(Dobj) {
1243
1244	var _before_html = m9_attrs_history.tags;
1245
1246	for (var i=0;i<_before_html.length;i++) {
1247
1248		if (jQuery(Dobj).find(_before_html[i]).length > 0) {
1249			m9_attrs_history.reset(_before_html[i]);
1250		}
1251
1252	}
1253
1254}
1255
1256var m9_attrs_history = {
1257	'tags' : [],
1258	'set' : function(Dobj) {
1259		m9_attrs_history.tags.push(Dobj);
1260		m9_obj_set_data(Dobj,"_before_attrs",jQuery(Dobj).attrs());
1261	},
1262	'reset' : function(Dobj) {
1263
1264		var all_attr = jQuery(Dobj).attrs();
1265
1266		for (var z in all_attr) {
1267			jQuery(Dobj).removeAttr(z);
1268		}
1269
1270		if (Dobj["_data"] && Dobj["_data"]["_before_attrs"]) {
1271			jQuery(Dobj).attr(Dobj["_data"]["_before_attrs"]);
1272		}
1273
1274	},
1275	'change' : function(Dobj,Dattr,Dvalue) {
1276		if (!Dobj["_data"]) { Dobj["_data"] = {}; }
1277		if (!Dobj["_data"]["_before_attrs"]) { Dobj["_data"]["_before_attrs"] = {}; }
1278		Dobj["_data"]["_before_attrs"][Dattr] = Dvalue;
1279	}
1280};
1281
1282(function(old) {
1283  jQuery.fn.attrs = function() {
1284    if(arguments.length === 0) {
1285      if(this.length === 0) {
1286        return null;
1287      }
1288
1289      var obj = {};
1290      jQuery.each(this[0].attributes, function() {
1291        if(this.specified) {
1292          obj[this.name] = this.value;
1293        }
1294      });
1295      return obj;
1296    }
1297
1298    return old.apply(this, arguments);
1299  };
1300})(jQuery.fn.attr);
1301
1302function get_m9_file_info(Durl) {
1303
1304	var _f = Durl.split("?");
1305
1306	var _unit = _f[0].split("/");
1307	var _file = _unit.pop();
1308	var _d = _file.split('.');
1309
1310	var _path = _unit.join('/');
1311
1312	var hash = {
1313		'path' : _path,
1314		'file' : _file,
1315		'file_name' : _d[0],
1316		'file_extension' : _d[1],
1317		'search' : _f[1]
1318	};
1319
1320	return hash;
1321
1322} // function
1323
1324function m9_get_data_var(obj,_key) {
1325	_key = (_key == 'ani-type') ? 'ani_type' : 'data-' + _key;
1326	return jQuery(obj).attr(_key);
1327}
1328
1329function m9_set_data_var(obj,_key,_value) {
1330	_key = (_key == 'ani-type') ? 'ani_type' : 'data-' + _key;
1331	jQuery(obj).attr(_key,_value);
1332}
1333
1334if (window.addEventListener) { // W3C DOM 지원 브라우저 
1335 window.addEventListener("load",m9_onload_start,false);
1336} else if (window.attachEvent) { // W3C DO M 지원 브라우저 외(ex:MSDOM 지원 브라우저 IE) 
1337 window.attachEvent("onload",m9_onload_start); 
1338} else { 
1339 window.onload = m9_onload_start; 
1340} 
1341
1342// onload되는 항목
1343function m9_onload_start() { 
1344	
1345 if (m9_Onload_Function.length > 0) {
1346  for (var i=0;i<m9_Onload_Function.length;i++) {
1347   eval(m9_Onload_Function[i]);	
1348  }
1349 }
1350
1351 m9_animate_document(); // 문서내 애니메이션 설정
1352
1353} //function
1354
1355function m9_Slide_Obj(Did,Ddirect,Dfunc) {
1356
1357	var _T_style = (Ddirect == "width") ? "width" : "height";
1358 	var _T_style_Reverse = "";
1359	var _T_End_Var = 0;
1360
1361 	var Cid = m9_get_object(Did);	
1362 	var now_status = (Cid.style.display == "none") ? 0 : 1;
1363
1364	Cid.style.display = "block"; // 로 설정해야 정보 알아낼수 있음
1365
1366	var Cid_w = Cid.offsetWidth; // 크기 알아오기(width는 display=table전에)
1367	if (M9_SET["navigator"] != "ie") { Cid.style.display = "table"; } // 객체 크기 다시 설정(중간에 변할수 있으므로)
1368	var Cid_h = Cid.offsetHeight; // 크기 알아오기(height는 display=table후에)
1369
1370	if (M9_SET["navigator"] == "ie") {
1371		if (Cid.children[0]) {
1372			var aa = new Array("marginLeft","marginRight","borderLeftWidth","borderRightWidth");
1373			for (var i=0;i<aa.length;i++) { Cid_w -= _get_num(Cid.currentStyle[aa[i]]); }
1374			var aa = new Array("marginTop","marginBottom","borderTopWidth","borderBottomWidth");
1375			for (var i=0;i<aa.length;i++) { Cid_h -= _get_num(Cid.currentStyle[aa[i]]); }
1376		}
1377	} else {
1378		Cid_w -= (Cid.offsetWidth - Cid.clientWidth); // style 의 border + margin 합 	
1379		Cid_h -= (Cid.offsetHeight - Cid.clientHeight); // style 의 border + margin 합
1380	}
1381
1382	if (_T_style == "height") {
1383		_T_End_Var = Cid_h;
1384		_T_End_Var_Reverse = Cid_w;
1385		_T_style_Reverse = "width";  	
1386	} else {
1387		_T_End_Var = Cid_w;
1388		_T_End_Var_Reverse = Cid_h;
1389		_T_style_Reverse = "height"; 	 	 	
1390	}
1391
1392	var _start = _end = 0;
1393	if (now_status == 1) {
1394		_start = _T_End_Var;
1395		_end = 0;
1396	} else {
1397		_start = 0;
1398		_end = _T_End_Var; 		
1399	}
1400 
1401	Cid.style.overflow = "hidden";
1402	Cid.style.display = "block"; // 트윈할려면 block 해야함
1403
1404	_end = _end + "px";
1405
1406	m9_slide_toggle(Cid,{speed:'slow'},function() {
1407		Cid.style.overflow = "visible";
1408		Cid.style["height"] = "auto";  // height는 무조건 auto
1409		if (now_status == 1) { Cid.style.display = "none"; }
1410		if (Dfunc) { Dfunc(); }
1411	});
1412 	
1413} //function
1414
1415///////////////////////////////////////////////////////////////////////////////////////////////////////////////
1416
1417var _m9_slide_options = ["speed","opacity","slide","easing"];
1418function _m9_get_slide_options(Doptions) {
1419	var Eoptions = {};
1420	for (var i=0;i<_m9_slide_options.length;i++) {
1421		if (Doptions[_m9_slide_options[i]]) {
1422			Eoptions[_m9_slide_options[i]] = Doptions[_m9_slide_options[i]];
1423		}
1424	}	
1425	return Eoptions;
1426}
1427
1428var _m9_opentoggle_group = {};
1429var _m9_opentoggle_obj_slide = {};
1430function m9_opentoggle(Did,Doptions) {
1431	
1432	var Cid = m9_get_object(Did);
1433	if (!Cid) { return false; } // 객체가 존재하지 않을 경우 무시		
1434
1435	var returns = [Did];
1436	
1437	var Eoptions;
1438	var Dgroup = undefined;
1439	var Dself = 1;
1440	if (Doptions) {
1441		Eoptions = _m9_get_slide_options(Doptions);
1442		Dgroup = Doptions["group"];
1443		Dself = (Doptions["self"] == 0) ? 0 : 1;
1444	}
1445
1446	var closed_id = _m9_opentoggle_group[Dgroup];
1447	if (closed_id == Did) {
1448		if (Dself != 1) { return false; }
1449	}
1450
1451	if (Dgroup) {
1452		if (closed_id) {
1453
1454			var Eid = m9_get_object(closed_id);		
1455			if (jQuery(Eid).css("display") != "none") {
1456				if (_m9_opentoggle_obj_slide[closed_id] == 1) {
1457					m9_layer_slide_close(Eid);		
1458				} else {
1459					jQuery(Eid).css("display","none");
1460				}
1461				_m9_opentoggle_group[Dgroup] = undefined;												
1462			}
1463			returns[1] = closed_id;
1464		}
1465	}
1466	
1467	if (jQuery(Cid).css("display") == "none") {
1468		
1469		if (Eoptions) {
1470			_m9_opentoggle_obj_slide[Did] = 1;
1471			m9_layer_slide_view(Did,Eoptions);			
1472		} else {
1473			jQuery(Cid).css("display","");				
1474		}
1475
1476		if (Dgroup) { _m9_opentoggle_group[Dgroup] = Did; }
1477		returns[0] = Did;
1478		
1479	} else {
1480		
1481		if (Eoptions) {		
1482			_m9_opentoggle_obj_slide[Did] = 1;				
1483			m9_layer_slide_close(Did,Eoptions);						
1484		} else {
1485			jQuery(Cid).css("display","none");			
1486		}
1487
1488		if (Dgroup) { _m9_opentoggle_group[Dgroup] = undefined; }
1489		returns[0] = "";		
1490	}		
1491	return returns;
1492}
1493
1494var m9_layer_list = new Array();								// [레이어 리스트] 해쉬 
1495var m9_now_viewed_layer_list = new Array();		// [현재 보여지고 있는 레이어 리스트] 해쉬
1496
1497function m9_layer_view(Dgroup,Dnum,Dbase) {
1498
1499	// 객체가 존재하지 않을 경우 객체 생성
1500	// 최초의 m9_layer_view() 호출이 있을경우 m9_layer_list[][] 해쉬의 해쉬(2중해쉬생성)
1501	// m9_layer_list 처음 해쉬는 Dgroup명이고, 두번째 해쉬는 Dnum값이다.
1502	if (m9_layer_list[Dgroup] == undefined) {
1503
1504		m9_layer_list[Dgroup] = new Array();					// [레이어 리스트] 해쉬의 해쉬 초기화
1505		m9_layer_list[Dgroup][Dnum] = 1;							// 레이어 저장
1506
1507		m9_now_viewed_layer_list[Dgroup] = Dbase;		// [현재 보여지고 있는 레이어 리스트] 초기화
1508	}
1509
1510	// 레이어가 존재하지 않으면 
1511	if (m9_layer_list[Dgroup][Dnum] == undefined) {
1512		m9_layer_list[Dgroup][Dnum] = 1;			// 레이어 저장
1513	}
1514
1515	if (m9_now_viewed_layer_list[Dgroup] == Dnum) {
1516		return false;
1517	}
1518	 
1519	if (m9_now_viewed_layer_list[Dgroup] != undefined) { 
1520		var closed_layer = Dgroup + "" + m9_now_viewed_layer_list[Dgroup]; 
1521		if (m9_getObject(closed_layer)) {  	
1522			m9_getObject(closed_layer).style.display = "none";
1523		}
1524	}
1525	   
1526	// 레이어 보이기
1527	var Dgroup2 = Dgroup +""+ Dnum;
1528	if (m9_getObject(Dgroup2)) { 
1529		m9_getObject(Dgroup2).style.display = "";
1530		m9_now_viewed_layer_list[Dgroup] = Dnum;    
1531	}
1532
1533} // function
1534
1535function m9_layer_view2(Dname,Ddirect,Drotation) {
1536
1537	var Ddoc = document.all[Dname];
1538	var Dlen = Ddoc.length;
1539
1540	for(i=0;i<Dlen;i++) {
1541
1542		if (Ddoc[i].style.display == "") {
1543
1544			var target_num = 0;
1545
1546			if (Ddirect == "prev") {
1547				target_num = i - 1;
1548				if (target_num < 0) {
1549					if (Drotation == 1) { target_num = Dlen - 1; } else { return false; }
1550				}
1551			} else {
1552				target_num = i + 1;
1553				if (target_num >= Dlen) {
1554					if (Drotation == 1) { target_num = 0; } else { return false; }
1555				}
1556			}
1557
1558			Ddoc[i].style.display = "none";
1559			Ddoc[target_num].style.display = "";
1560			return false;
1561		}
1562
1563	} //for
1564 
1565} // function
1566
1567var m9_before_id = "";
1568function m9_layer_view3(Dname) {
1569
1570	if (m9_before_id != "" && m9_before_id != Dname) { jQuery(m9_getObject(m9_before_id)).css('display','none'); }
1571
1572	var obj = m9_getObject(Dname);
1573	jQuery(obj).css('display',( (jQuery(obj).css('display') != "none") ? "none" : "block") );
1574	m9_before_id = (jQuery(obj).css('display') != "none") ? Dname : "";
1575 
1576} // function
1577
1578function m9_layer_view_slide(Dgroup,Dnum,Dbase) {
1579
1580	// 객체가 존재하지 않을 경우 객체 생성
1581	// 최초의 m9_layer_view() 호출이 있을경우 m9_layer_list[][] 해쉬의 해쉬(2중해쉬생성)
1582	// m9_layer_list 처음 해쉬는 Dgroup명이고, 두번째 해쉬는 Dnum값이다.
1583	if (m9_layer_list[Dgroup] == undefined) {
1584		m9_layer_list[Dgroup] = new Array();					// [레이어 리스트] 해쉬의 해쉬 초기화
1585		m9_layer_list[Dgroup][Dnum] = 1;							// 레이어 저장
1586		m9_now_viewed_layer_list[Dgroup] = Dbase;		// [현재 보여지고 있는 레이어 리스트] 초기화
1587	}
1588
1589	// 레이어가 존재하지 않으면 
1590	if (m9_layer_list[Dgroup][Dnum] == undefined) {
1591		m9_layer_list[Dgroup][Dnum] = 1;			// 레이어 저장
1592	}
1593
1594	if (m9_now_viewed_layer_list[Dgroup] == Dnum) {
1595		return false;
1596	}
1597 
1598	if (m9_now_viewed_layer_list[Dgroup] != undefined) { 
1599		var closed_layer = Dgroup + "" + m9_now_viewed_layer_list[Dgroup]; 
1600		if (m9_getObject(closed_layer)) {  	
1601
1602			m9_Slide_Obj(closed_layer,"height",function() {
1603				var rr4 = closed_layer + "_parent";
1604				if (m9_getObject(rr4)) {
1605					m9_getObject(rr4).style.display = "none";
1606				}
1607			});   
1608   
1609		}
1610	}
1611   
1612	// 레이어 보이기
1613	var Dgroup2 = Dgroup +""+ Dnum;
1614	 
1615	if (m9_getObject(Dgroup2)) { 
1616		var rr5 = Dgroup2 + "_parent";
1617		if (m9_getObject(rr5)) {
1618			m9_getObject(rr5).style.display = "";
1619		}
1620		m9_Slide_Obj(Dgroup2);  
1621		m9_now_viewed_layer_list[Dgroup] = Dnum;    
1622	}
1623
1624} // function
1625
1626function m9_layer_position(target_id,click_id,Ddirect,Drange) {
1627
1628 if (!click_id) { click_id = m9_get_evt_obj(m9_evt); }
1629
1630 target_id = m9_get_object(target_id);
1631
1632 var out_obj = _m9_get_layer_range(Drange);
1633
1634 jQuery(target_id).after('<span id="_x_xx" style="position:absolute;display:inline-block;width:1px;height:1px"></span>'); // 20221015 수정
1635
1636 var t_w = m9_get_object_size(target_id,"width"); 
1637 var t_h = m9_get_object_size(target_id,"height"); 
1638
1639 var m_w = m9_get_object_size(click_id,"width");  
1640 var m_h = m9_get_object_size(click_id,"height"); 
1641
1642 var m_x = m9_getRealOffsetLeft(click_id);
1643 var m_y = m9_getRealOffsetTop(click_id);
1644
1645 if (!Ddirect || !_m9_direct[Ddirect]) { Ddirect = "up"; }
1646
1647 var _pos = _m9_direct_get(Ddirect,out_obj,[m_w,m_h,m_x,m_y],[t_w,t_h]);
1648
1649 var t_obj = jQuery('#_x_xx').offsetParent()[0];//.parent()[0]; // 20221015 수정
1650 _pos[1] -= m9_getRealOffsetLeft(t_obj); // 20220830 수정(추가3)
1651 _pos[2] -= m9_getRealOffsetTop(t_obj); // 20220830 수정(추가3)
1652
1653 jQuery('#_x_xx').remove(); // 20221015 수정
1654
1655 if (jQuery(target_id).css('position') == 'fixed') {
1656	_pos[1] -= m9_get_body_obj().scrollLeft;
1657	_pos[2] -=  m9_get_body_obj().scrollTop;
1658	if (_pos[1] < 0) { _pos[1] = 0; }
1659	if (_pos[2] < 0) { _pos[2] = 0; }
1660 }
1661
1662 m9_change_pixelLeft(target_id,_pos[1]);
1663 m9_change_pixelTop(target_id,_pos[2]);
1664
1665 m9_obj_set_data(target_id,"layer_direct",_pos[0]);
1666
1667 return _pos[0]; // 방향 리턴
1668
1669}	//function
1670
1671function m9_layer_position_xy(target_id,Dx,Dy) {
1672
1673 var Cid = m9_get_object(target_id);
1674 var direct = (Cid["_layer_direct"]) ? Cid["_layer_direct"] : "up" // 레이어 출력방향
1675
1676 var t_w = m9_get_object_size(target_id,"width") / 2; 
1677 var t_h = m9_get_object_size(target_id,"height") / 2; 
1678
1679	if (Dx) {
1680   var _l = m9_get_pixelLeft(Cid);
1681   if (direct == "up") { _l = _l + t_w;	}
1682   _l = (direct == "left") ? (_l - Dx) : (_l + Dx);	   	
1683   m9_change_pixelLeft(target_id,_l);
1684	}
1685
1686	if (Dy) {
1687   var _t = m9_get_pixelTop(Cid);
1688   _t = (direct == "up" || direct == "left") ? (_t - Dy) : (_t + Dy);	   	
1689   m9_change_pixelTop(target_id,_t);   
1690	}
1691}	//function
1692
1693function m9_obj_toggle(Did,DCallback) {
1694 
1695 var Cid = m9_get_object(Did);		
1696 if (!Cid) { return false; }
1697 
1698 var Dvalue, Dreturn;
1699 if (jQuery(Cid).css("display") == "none") {
1700 	Dvalue = "block";
1701 	Dreturn = 1;
1702 } else {
1703 	Dvalue = "none";
1704 	Dreturn = 0; 	
1705 }
1706
1707 jQuery(Cid).css("display",Dvalue) 
1708 if (typeof(DCallback) == "function") { DCallback(); }
1709 return Dreturn;
1710 
1711} //function
1712
1713function m9_slide_toggle(Did,Dhow,DCallback) {
1714
1715 var Cid = m9_get_object(Did);		
1716 if (!Cid) { return false; }
1717
1718 if (!Dhow) { Dhow = {}; } 
1719 if (!Dhow["slide"]) { Dhow["slide"] = "down"; }
1720  
1721 var Dreturn;
1722
1723 if (jQuery(Cid).css("display") == "none") {
1724  m9_layer_slide_view(Did,Dhow,DCallback);
1725  Dreturn = 1;
1726 } else {  	
1727  m9_layer_slide_close(Did,Dhow,DCallback);  
1728  Dreturn = 0;  
1729 }
1730 return Dreturn; 
1731 
1732} //function
1733
1734function m9_layer_slide_view(Did,Dhow,DCallback) {
1735
1736 var Cid = m9_get_object(Did);		
1737 if (!Cid) { return false; }
1738
1739 if (jQuery(Cid).css("display") != "none") { return false; }
1740
1741 m9_obj_set_data(Cid); // 데이터 초기화
1742 var _data = Cid["_data"];
1743
1744 if (Dhow) {
1745  Cid = _m9_layer_reset(Cid);
1746  _m9_layer_slide(Cid,Dhow,0);
1747 }
1748
1749 if (_data["_son"]) {
1750
1751  var son_obj = m9_getObject(_data["_son"]);  
1752
1753  // 애니메이션 준비
1754  jQuery(son_obj).css(_data["ani_reset_tag"]);
1755  jQuery(Cid).css({"display":"block"});
1756  // 애니메이션
1757
1758  jQuery(son_obj).animate(_data["ani_tag"],_data["ani_speed"],_data["ani_easing"],DCallback);
1759 	
1760 } else { // Dhow 존재하지 않으면
1761  jQuery(Cid).css("display","block"); 	
1762 }
1763
1764} //function
1765
1766function m9_layer_slide_stop(Did) {
1767	
1768 var Cid = m9_get_object(Did);		
1769 if (!Cid) { return false; }
1770
1771 if (jQuery(Cid).css("display") == "none") { return false; }
1772 
1773 m9_obj_set_data(Cid); // 데이터 초기화
1774 
1775 var _data = Cid["_data"];
1776
1777 if (_data["_son"]) { 
1778  var son_obj = m9_getObject(_data["_son"]);   	
1779  jQuery(son_obj).stop();
1780 }
1781}
1782
1783function m9_layer_slide_close(Did,Dhow,DCallback) {
1784	
1785 var Cid = m9_get_object(Did);		
1786 if (!Cid) { return false; }
1787
1788 if (jQuery(Cid).css("display") == "none") { return false; }
1789
1790 m9_obj_set_data(Cid); // 데이터 초기화
1791
1792 if (Dhow) {
1793  Cid = _m9_layer_reset(Cid);
1794  _m9_layer_slide(Cid,Dhow,0);
1795 }
1796 
1797 var _data = Cid["_data"];
1798
1799 if (_data["_son"]) {
1800  
1801  var son_obj = m9_getObject(_data["_son"]);  
1802 
1803  // 애니메이션 준비
1804  jQuery(son_obj).css(_data["ani_tag"]);
1805
1806  // 애니메이션
1807  jQuery(son_obj).animate(
1808	_data["ani_reset_tag"],
1809	_data["ani_speed"],
1810	_data["ani_easing"],
1811	function() {	
1812		jQuery("#"+this["_data"]["parent"]).css("display","none");		
1813		jQuery(this).css(_data["ani_tag"]);		
1814		_m9_reset_sss(this);				
1815		if (DCallback) { eval(DCallback()); }
1816
1817	}		
1818  );
1819
1820 } else { // Dhow 존재하지 않으면
1821  jQuery(Cid).css("display","none"); 	
1822 }
1823 
1824} //function
1825
1826var _m9_before_layer;		// 이전 레이어
1827function m9_layer_view_only(Did,Dhow,DCallback) {
1828
1829 var Cid = m9_get_object(Did);		
1830
1831 // 열려진 레이어 존재하면 닫기
1832 if (_m9_before_layer != undefined) {
1833  if (_m9_before_layer == Cid) {
1834   return false;  	
1835  } else {
1836   if (_m9_before_layer._DCallback) {
1837   	m9_layer_view_only_close(_m9_before_layer,'',_m9_before_layer._DCallback);
1838   } else {
1839   	m9_layer_view_only_close(_m9_before_layer);  	   	
1840   }
1841
1842  }	
1843 }
1844
1845 m9_layer_slide_view(Did,Dhow,DCallback);
1846 _m9_before_layer = Cid;		// 현재보여진 레이어
1847 _m9_before_layer._DCallback = DCallback;
1848 
1849} //function
1850
1851function m9_layer_view_only2(Did,Dhow,DCallback) {
1852 var _copy = _m9_before_layer;
1853 m9_layer_view_only(Did,Dhow,DCallback);
1854 _m9_before_layer = _copy;
1855} //function
1856
1857function m9_layer_view_only_close(Did,Dhow,DCallback) {
1858	
1859 var Cid = m9_get_object(Did);		
1860 m9_layer_slide_close(Did,Dhow,DCallback);
1861 _m9_before_layer = undefined;		// 현재보여진 레이어
1862
1863} //function
1864
1865function m9_obj_set_data(Did,Dkey,Dvalue) {
1866 var Cid = m9_get_object(Did);
1867 if (!Cid["_data"]) { Cid["_data"] = {}; }
1868 if (Dkey) { Cid["_data"][Dkey] = Dvalue; }
1869}
1870
1871function m9_obj_get_data(Did,Dkey) {
1872 if (!Did) { return false; }
1873 var Cid = m9_get_object(Did);
1874 if (!Cid["_data"]) { Cid["_data"] = {}; }
1875 if (Cid["_data"][Dkey]) { return Cid["_data"][Dkey]; }
1876 return false;
1877}
1878
1879function _m9_layer_view_only_close(evt) {	
1880 if (_m9_before_layer == undefined) { return false; }
1881 m9_layer_view_only_close(_m9_before_layer,'',_m9_before_layer._DCallback);
1882} //function
1883
1884function _m9_layer_slide(Did,Dhow) {
1885
1886 var Cid = m9_get_object(Did);	
1887 
1888 Cid.style.display = "block"; // 필요
1889 
1890 // 내용물 크기 변경될 경우 방지 여기서 크기 알아옴
1891 var son_obj = m9_getObject(Cid["_data"]["_son"]);  
1892
1893 var _w = m9_get_object_size(son_obj,"width") + "px";
1894 var _h = m9_get_object_size(son_obj,"height") + "px";  
1895
1896 var _w2 = jQuery(son_obj).css("width");
1897
1898 var ani_tag = {};
1899 var ani_reset_tag = {};
1900
1901 var direct = (_m9_direct[Dhow["slide"]]) ? Dhow["slide"] : (Cid["_data"]["layer_direct"]) ? Cid["_data"]["layer_direct"] : "down" // 레이어 출력방향
1902     	
1903 // 슬라이드 적용     
1904 if (Dhow["slide"] != undefined) {
1905  if (direct == "down") {
1906   ani_reset_tag["marginTop"] = "-" + _h;   
1907   ani_tag["marginTop"] = son_obj["_data"]["marginTop"];
1908
1909  } else if (direct == "left") {
1910   ani_reset_tag["marginLeft"] = _w;      
1911   ani_tag["marginLeft"] = son_obj["_data"]["marginLeft"];   
1912   
1913  } else if (direct == "right") {
1914   ani_reset_tag["marginLeft"] = "-" + _w;      
1915   ani_tag["marginLeft"] = son_obj["_data"]["marginLeft"];   
1916  } else {
1917   ani_reset_tag["marginTop"] = _h;            
1918   ani_tag["marginTop"] = son_obj["_data"]["marginTop"]; 	      
1919  }
1920  
1921 }
1922
1923 // 투명도 적용
1924 if (Dhow["opacity"] != undefined) {
1925  ani_reset_tag["opacity"] = 0;            
1926  ani_tag["opacity"] = Dhow["opacity"] / 100;  
1927 }
1928
1929 if (!Dhow["speed"]) { Dhow["speed"] = "fast"; }
1930 if (!Dhow["easing"]) { Dhow["easing"] = "linear"; }
1931
1932 if (M9_SET["navigator"] == "ie") {
1933  ani_tag = _m9_change_animate_var(ani_tag);
1934  ani_reset_tag = _m9_change_animate_var(ani_reset_tag);
1935 }
1936
1937 // 애니메이션 toggle위한 설정
1938 m9_obj_set_data(Cid,"ani_tag",ani_tag);
1939 m9_obj_set_data(Cid,"ani_reset_tag",ani_reset_tag);
1940 m9_obj_set_data(Cid,"ani_speed",Dhow["speed"]);
1941 m9_obj_set_data(Cid,"ani_easing",Dhow["easing"]);
1942 
1943} //function
1944
1945var m9_obj_css = new Array("left","top","right","bottom","marginTop","marginBottom","marginLeft","marginRight");
1946
1947function _m9_html_reset(Did) {
1948	
1949	var Cid = m9_get_object(Did);		
1950
1951	if (Cid["_data"]) {
1952 		if (Cid["_data"]["_before_html"]) {
1953 			alert(Cid["_data"]["_before_html"]);
1954 		}
1955	} 	
1956}
1957
1958function _m9_reset_sss(Did) {
1959
1960	var Cid = m9_get_object(Did);		
1961
1962	if (Cid["_data"]) {
1963 		if (Cid["_data"]["_before_html"]) {		
1964 			var cc = jQuery('<div />').html(Cid["_data"]["_before_html"]);
1965 			jQuery(Cid).unwrap();
1966 			
1967 			var dd = new Array('id','class');
1968 			for (var i=0;i<dd.length;i++) {
1969 				
1970 				var tt = jQuery(cc).children().attr(dd[i]);
1971 				jQuery(Cid).attr(dd[i],tt);
1972 			}
1973 			
1974 			jQuery(Cid).removeAttr('style');
1975 			
1976 			jQuery(Cid).css('display','none');
1977			Cid["_data"]["animate_div"] = undefined;
1978 		}
1979	} 	
1980		
1981}
1982
1983function _m9_layer_reset(Did) {
1984
1985 var Cid = m9_get_object(Did);		
1986
1987 // 슬라이드를 위한 초기화
1988 if (Cid["_data"]["animate_div"]) { return Cid; }
1989
1990 var _memory = jQuery('<div />').html(jQuery(Cid)[0].outerHTML);
1991 jQuery(_memory).children().html("");
1992 m9_obj_set_data(Cid,"_before_html",jQuery(_memory).html());
1993
1994 var real_css = {};
1995 for (var i=0;i<m9_obj_css.length;i++) {
1996  var Cvalue = m9_obj_css[i];
1997  real_css[Cvalue] = jQuery(Cid).css(Cvalue);
1998 }
1999
2000 var _h = jQuery(Cid).outerHeight();
2001 var _w = jQuery(Cid).outerWidth();
2002 
2003 m9_obj_set_data(Cid,"animate_div",1); // 에니매이션 처리 됨
2004
2005 var _zIndex = jQuery(Cid).css("z-index");
2006 var _position = jQuery(Cid).css("position");   
2007 var _float = jQuery(Cid).css("float");
2008
2009 jQuery(Cid).css("position","static");
2010 var zd = (M9_SET["navigator"] == "ie") ? 0 : "auto";
2011 zd = 0;
2012
2013 jQuery(Cid).css("z-index",zd);
2014 var _o_data = Cid["_data"];
2015 
2016 var _clone_id = m9_random_id(Cid); // id존재하지 않으면 생성
2017 var _clone_son_id = _clone_id + "_son";
2018 
2019 jQuery(Cid).attr("id",_clone_son_id);			// ID변경 ID + "_son"
2020 jQuery(Cid).wrap('<div class="slide_empty" id="'+ _clone_id + '" style="display:none"></div>');//.css({offsetWidth:_w});		// ID변경
2021 jQuery(Cid).css("display","block");
2022 
2023 for (var i in real_css) {
2024  var Cvalue = real_css[i];
2025  jQuery("#"+_clone_id).css(i,Cvalue);
2026  var Dvalue = (Cvalue != "auto") ? 0 : "auto";
2027  jQuery(Cid).css(i,Dvalue);	
2028 }
2029
2030 m9_obj_set_data(Cid,"parent",_clone_id);      
2031 m9_obj_set_data(Cid,"marginTop",0);
2032 m9_obj_set_data(Cid,"marginLeft",0); 
2033 
2034 Cid = m9_getObject(_clone_id);  // Cid 교체 
2035 Cid["_data"] = _o_data;
2036 m9_obj_set_data(Cid,"_son",_clone_son_id);   
2037
2038_w += 1; // 에러때문에 ??????????
2039
2040 if (_position == "absolute") {
2041  jQuery(Cid).css({width:_w,height:_h}); 
2042 }
2043
2044 jQuery(Cid).css({"overflow":"hidden"}); // 보이기 범위 설정
2045 if (_zIndex) { jQuery(Cid).css("z-index",_zIndex); }
2046 if (_position) { jQuery(Cid).css("position",_position); }   
2047 jQuery(Cid).css("float",_float);
2048
2049 return Cid;
2050 
2051}	//function
2052
2053var _m9_direct = {
2054 "up" : ["a","b","c","d","x"],
2055 "down" : ["b","a","c","d","x"],
2056 "left" : ["c","d","a","b","x"], 
2057 "right" : ["d","c","a","b","x"],
2058 "!up" : ["a","x"],
2059 "!down" : ["b","x"],
2060 "!left" : ["c","x"], 
2061 "!right" : ["d","x"] 
2062};
2063function _m9_direct_get(Ddirct,a,b,c) {
2064
2065	var scroll_obj = m9_get_body_obj();
2066
2067	var Dx = 0;
2068	var Dy = 0;
2069						
2070	var _get_direct = {
2071		a:function() {
2072			Dx = b[2] + (b[0] / 2) - (c[0] / 2);
2073			Dy = b[3] - c[1];
2074		
2075			// 좌 체크
2076			var _x1_a = a[2];
2077			var _x1_b = scroll_obj.scrollLeft;
2078			var _x = (_x1_a > _x1_b) ? _x1_a : _x1_b;
2079			if (Dx < _x) { return [0,"up",Dx,Dy]; }
2080
2081			// 우 체크
2082			var _x2_a = a[2] + a[0];
2083			var _x2_b = a[2] + (m9_get_window_size())[0] + scroll_obj.scrollLeft;			
2084			var _x = (_x2_a > _x2_b) ? _x2_b : _x2_a;			
2085			if ((Dx + c[0]) > _x) { return [0,"up",Dx,Dy]; }
2086												
2087			// 상 체크
2088			var _y1 = a[3];
2089			var _y2 = scroll_obj.scrollTop;
2090			var _y = (_y1 > _y2) ? _y1 : _y2;
2091			if (Dy < _y) { return [0,"up",Dx,Dy]; }
2092
2093			return [1,"up",Dx,Dy];
2094		},
2095		b:function() {
2096			Dx = b[2] + (b[0] / 2) - (c[0] / 2);
2097			Dy = b[3] + b[1];
2098
2099			// 좌 체크
2100			var _x1_a = a[2];
2101			var _x1_b = scroll_obj.scrollLeft;
2102			var _x = (_x1_a > _x1_b) ? _x1_a : _x1_b;
2103			if (Dx < _x) { return [0,"down",Dx,Dy]; }
2104
2105			// 우 체크
2106			var _x2_a = a[2] + a[0];
2107			var _x2_b = a[2] + (m9_get_window_size())[0] + scroll_obj.scrollLeft;			
2108			var _x = (_x2_a > _x2_b) ? _x2_b : _x2_a;			
2109			if ((Dx + c[0]) > _x) { return [0,"down",Dx,Dy]; }
2110					
2111			// 하 체크
2112			var _y1 = a[3] + a[1];
2113			var _y2 = (m9_get_window_size())[1] + scroll_obj.scrollTop;
2114
2115			var _y = (_y1 > _y2) ? _y2 : _y1;		
2116			if ((Dy + c[1]) > _y) { return [0,"down",Dx,Dy]; }
2117			
2118			return [1,"down",Dx,Dy];			
2119		},
2120		c:function() {
2121			Dx = b[2] - c[0];
2122			Dy = b[3] + (b[1] / 2) - (c[1] / 2);
2123			
2124			// 좌 체크
2125			var _x1_a = a[2];
2126			var _x1_b = scroll_obj.scrollLeft;
2127			var _x = (_x1_a > _x1_b) ? _x1_a : _x1_b;
2128			if (Dx < _x) { return [0,"left",Dx,Dy]; }
2129			
2130			// 상 체크
2131			var _y1 = a[3];
2132			var _y2 = scroll_obj.scrollTop;
2133			var _y = (_y1 > _y2) ? _y1 : _y2;
2134			if (Dy < _y) { return [0,"left",Dx,Dy]; }
2135
2136			// 하 체크
2137			var _y1 = a[3] + a[1];
2138			var _y2 = (m9_get_window_size())[1] + scroll_obj.scrollTop;
2139			var _y = (_y1 > _y2) ? _y2 : _y1;
2140			if ((Dy + c[1]) > _y) { return [0,"left",Dx,Dy]; }
2141
2142			return [1,"left",Dx,Dy];	
2143		},
2144		d:function() {  
2145			Dx = b[2] + b[0];
2146			Dy = b[3] + (b[1] / 2) - (c[1] / 2);
2147			
2148			// 우 체크
2149			var _x2_a = a[2] + a[0];
2150			var _x2_b = a[2] + (m9_get_window_size())[0] + scroll_obj.scrollLeft;			
2151			var _x = (_x2_a > _x2_b) ? _x2_b : _x2_a;		
2152			var aa = Dx +c[0];
2153			
2154			if ((Dx + c[0]) > _x) { return [0,"right",Dx,Dy]; }
2155			
2156			// 상 체크
2157			var _y1 = a[3];
2158			var _y2 = scroll_obj.scrollTop;
2159			var _y = (_y1 > _y2) ? _y1 : _y2;
2160			if (Dy < _y) { return [0,"right",Dx,Dy]; }
2161
2162			// 하 체크
2163			var _y1 = a[3] + a[1];
2164			var _y2 = (m9_get_window_size())[1] + scroll_obj.scrollTop;
2165			var _y = (_y1 > _y2) ? _y2 : _y1;
2166			if ((Dy + c[1]) > _y) { return [0,"right",Dx,Dy]; }
2167					
2168			return [1,"right",Dx,Dy];		
2169		},
2170		x:function() {  
2171			var _x2 = (m9_get_window_size())[0] + scroll_obj.scrollLeft;		
2172			var _y2 = (m9_get_window_size())[1] + scroll_obj.scrollTop;
2173			var Dx = (_x2 - c[0]) / 2;
2174			var Dy = (_y2 - c[1]) / 2;
2175			
2176			return [1,"down",Dx,Dy];			
2177		}	
2178	};
2179
2180	var _first_k = [];
2181	var _d = [];
2182	var _ok = 0;
2183	for (var i=0;i<_m9_direct[Ddirct].length;i++) {
2184		var _k = _m9_direct[Ddirct][i];
2185		_d = _get_direct[_k]();
2186		if (i == 0) { _first_k = _d; } // 에러방지 무조건 처음값으로 설정
2187		if (_d[0] == 1) {
2188			_ok = 1;
2189			break;
2190		}
2191	}
2192 
2193	if (_ok == 0) { _d = _first_k; }
2194	return [_d[1],_d[2],_d[3]];
2195
2196}
2197
2198function _m9_get_layer_range(Did) {
2199
2200 if (!Did) { Did = jQuery('body')[0] } 
2201
2202 var _out_obj = m9_get_object(Did);
2203
2204 var m_x = m9_getRealOffsetLeft(_out_obj);
2205 var m_y = m9_getRealOffsetTop(_out_obj);
2206
2207 var m_w = m9_get_object_size(_out_obj,"width");  
2208 var m_h = m9_get_object_size(_out_obj,"height"); 
2209
2210 var as = new Array(m_w,m_h,m_x,m_y);  
2211
2212 return as;
2213
2214} //function
2215
2216function _m9_change_animate_var(Dhash) {
2217 for(var i in Dhash) {
2218 	Dhash[i] = String(Dhash[i]);
2219 }
2220 return Dhash;
2221}
2222
2223jQuery(document).on("dblclick",function(){ _m9_layer_view_only_close(m9_evt); });
2224
2225////////////////////////////////////////////////////////////////////////
2226
2227var M9SLIDE,M9MOVIE,M9TAB,M9SELECTBOX,M9RESIZE_IMG,M9GOOGLE_MAP,M9BANNER,M9LIGHTBOX;
2228
2229var m9_size_etc_w = new Array("marginLeft","marginRight");
2230var m9_size_etc_h = new Array("marginTop","marginBottom");
2231
2232function m9_get_size_etc(Did,Dtype) {
2233
2234	var Cid = m9_get_object(Did);
2235	if (!Cid) { return false; }
2236	
2237	var w = jQuery(Cid).outerWidth() - m9_get_num(jQuery(Cid).css("width"));
2238	var h = jQuery(Cid).outerHeight() - m9_get_num(jQuery(Cid).css("height"));	
2239
2240	if (Dtype == 1) {
2241		for (var i=0;i<m9_size_etc_w.length;i++) {
2242			w += m9_get_num(jQuery(Cid).css(m9_size_etc_w[i]));
2243		}
2244		for (var i=0;i<m9_size_etc_h.length;i++) {
2245			h += m9_get_num(jQuery(Cid).css(m9_size_etc_h[i]));
2246		}
2247	}
2248	return [w,h];
2249} // function
2250
2251function m9_get_vars(Dvars,Dint) {
2252
2253	var new_vars = {};
2254 
2255	if (Dvars) {
2256		for (var i in Dint) {
2257			new_vars[i] = (Dvars[i] && Dvars[i] != "undefined") ? Dvars[i] : Dint[i];
2258		}
2259		return new_vars;
2260	} else {
2261		return Dint;
2262	}
2263	
2264} // function
2265
2266var M9ANI = {
2267
2268	reset : function(Did,Deffect) {
2269
2270		var Cid = m9_get_object(Did);
2271		if (!Cid) { return false; } // 객체가 존재하지 않을 경우 무시
2272
2273		var ani_name = Deffect[0];
2274
2275		if (ani_name == "btn") { ani_name = "fade"; Deffect[1] = {}; }		
2276		
2277		if (!M9ANI[ani_name]) {
2278			return false; // 존재하지 않은 애니메이션 호출시 무시
2279		} else {
2280			if (M9ANI[ani_name]["extend"]) { M9ANI[ani_name]["extend"](Did,Deffect); return false; }		// 외부 파일 확장 슬롯			
2281		}
2282
2283		if (M9ANI[ani_name].setting) { M9ANI[ani_name].setting(Did); }
2284		
2285		M9ANI.ani_reset(Did,ani_name,Deffect[1]);
2286
2287		if (M9ANI[ani_name].aftersetting) { M9ANI[ani_name].aftersetting(Did); }
2288		   		
2289	},
2290 
2291	effect : function(Did) {
2292
2293		var evt_obj = window.event;
2294		var o = Did._ani[evt_obj.type];
2295			  
2296 		for(var i=0;i<o.length;i++) {
2297 			var ex = o[i];
2298			M9ANI[ex][evt_obj.type](Did); // 애니메이션 실행
2299		}
2300
2301	},
2302
2303	ani_reset : function(Did,ani_name,Deffects) {
2304
2305		if (!Did._ani) { Did._ani = {};	}
2306		if (!Did._ani_property) { Did._ani_property = {};	}
2307
2308		if (Deffects) {
2309
2310			var aa = M9ANI[ani_name].vars;
2311			aa["type"] = "load"; // load항목 추가
2312			Did._ani_property[ani_name] = {};
2313			var bb = Did._ani_property[ani_name];
2314			for (var z in aa) {
2315				bb[z] = (!Deffects[z]) ? aa[z] : Deffects[z];
2316			}			
2317
2318			if (Deffects["type"] == "event") {
2319				return false; // 이벤트 부여 안함
2320			}
2321					
2322		} else {
2323			Did._ani_property[ani_name] = M9ANI[ani_name].vars;
2324			Did._ani_property[ani_name]["type"] = "load"; // load항목 추가			
2325		}
2326
2327		var ev = M9ANI[ani_name].events; // 이벤트 종류
2328
2329		var event_selecter = (Did._selecter) ? Did._selecter : Did;
2330		
2331		for (var i=0;i<ev.length;i++) {
2332			
2333			var e_kind = ev[i];
2334
2335			if (!Did._ani[e_kind]) {
2336				
2337				Did._ani[e_kind] = [];
2338
2339				var e_kind2 = e_kind;
2340				if (e_kind2 == "mouseover") {
2341					e_kind2 = "mouseenter";
2342				} else if (e_kind2 == "mouseout") {
2343					e_kind2 = "mouseleave";	
2344				}
2345
2346				// 이벤트 활성화
2347				jQuery(event_selecter).on(e_kind2,function() {
2348					var ee = window.event.type;
2349					if (Did._lastevent == ee) { return false; }
2350					Did._lastevent = ee;
2351					M9ANI.effect(Did); 
2352				});
2353			
2354			}
2355			
2356			Did._ani[e_kind].push(ani_name); // 이벤트 추가
2357				
2358		}
2359
2360	},	
2361	propertys : function(Did,ani_name,Deffects) {
2362		
2363		var Cid = m9_get_object(Did);
2364		if(!Cid) { return false; }
2365
2366		if (!Deffects) { return false; }
2367		
2368			var Dprop = Cid._ani_property[ani_name];
2369			if (!Dprop) { return false; }
2370			for (var i in Deffects) {
2371				if (Deffects[i] == "undefined") { Deffects[i] = undefined; }
2372				Dprop[i] = Deffects[i];
2373				if (i == "o_time" || i == "a_time") { Dprop[i] = Dprop[i]*1; }
2374			}
2375
2376	},
2377	
2378	_load_stay_obj : {},
2379	_load_stay : function(Deffect) {
2380		if (M9ANI._load_stay_obj[Deffect]) {	
2381			for (var i=0;i<M9ANI._load_stay_obj[Deffect].length;i++) {
2382				M9ANI._load_stay_obj[Deffect][i]();
2383			}
2384			M9ANI._load_stay_obj[Deffect] = undefined;	
2385		}		
2386	}
2387
2388} //M9ANI
2389
2390var _m9_ANI = {
2391
2392	_ani_list : {
2393		"slide" : M9SLIDE,
2394		"movie" : M9MOVIE,
2395		"tab" : M9TAB,
2396		"selectbox" : M9SELECTBOX,
2397		"resize" : M9RESIZE_IMG,
2398		"banner" : M9BANNER,
2399		"lightbox" : M9LIGHTBOX
2400	},
2401
2402	run : function(Dani_kind,Did,Dhash) {
2403
2404		if (typeof(_m9_ANI._ani_list[Dani_kind]) == "undefined") {	
2405			return false;
2406		}
2407		var Pid = jQuery(Did);
2408		if (Pid.length == 0) {
2409			var obj = m9_getObject(Did);
2410			if (typeof(obj) == "object") { Pid.push(Did); }  
2411		}
2412		for(var i=0;i<Pid.length;i++) {	
2413			M9ANI.reset(Pid[i],[Dani_kind,Dhash]);	
2414		}
2415
2416	},
2417
2418	propertys : function(Dani_kind,Did,Dhash) {
2419
2420		if (typeof(_m9_ANI._ani_list[Dani_kind]) == "undefined") {	
2421			return false;
2422		}
2423		var Pid = jQuery(Did);
2424		if (Pid.length == 0) {
2425			var obj = m9_getObject(Did);
2426			if (typeof(obj) == "object") { Pid.push(Did); }  
2427		}
2428		for(var i=0;i<Pid.length;i++) {	
2429			M9ANI.propertys(Pid[i],Dani_kind,Dhash);	
2430		}
2431
2432	}
2433
2434}; // _m9_ANI
2435
2436M9ANI["google_map"] = {
2437	extend : function(Did,Deffect) {
2438		m9_delay("",1000,function() {		
2439			if (typeof(M9GOOGLE_MAP) != "undefined") {
2440				M9GOOGLE_MAP.int(Did,Deffect);
2441			} else {		
2442				if (!M9ANI._load_stay_obj["google_map"]) { M9ANI._load_stay_obj["google_map"] = [];	}
2443				M9ANI._load_stay_obj["google_map"].push(function() { M9GOOGLE_MAP.int(Did,Deffect); });
2444			}
2445		});
2446	}	
2447};
2448
2449// 편집기 설정창에서 에러남
2450M9ANI["tab"] = {
2451	extend : function(Did,Deffect) {
2452		m9_ImportScript(M9_SET["mong9_url"] + "/source/js/m9-tab.js",function() {
2453			m9_delay("",500,function() {				
2454				M9TAB.int(Did,Deffect);
2455			});
2456		});
2457	}	
2458};
2459
2460M9ANI["lightbox"] = {
2461
2462	'hash' : {},
2463	'count' : 0,
2464	extend : function(Did,Deffect) {
2465
2466		if (M9ANI.lightbox.count == 0) { // if(1)
2467
2468			m9_ImportCss(M9_SET["mong9_url"] + "/source/etc/TosRUs/css/jquery.tosrus.all.css");
2469			m9_ImportScript(M9_SET["mong9_url"] + "/source/etc/hammer.min.js");
2470			m9_ImportScript(M9_SET["mong9_url"] + "/source/etc/FlameViewportScale.js");
2471			m9_ImportScript(M9_SET["mong9_url"] + "/source/etc/TosRUs/js/jquery.tosrus.all.min.js",function() {
2472
2473				m9_delay("",1000,function() {	
2474
2475					for (var i in M9ANI.lightbox.hash) {
2476
2477						if (i == '_lightbox_') {
2478							jQuery("."+i).tosrus();
2479						} else {
2480							jQuery("."+i).tosrus({
2481								pagination : {
2482									add        : true,
2483									type       : "thumbnails",
2484								},
2485								caption    : {
2486									add        : true
2487								}  
2488							});
2489						}
2490
2491					}
2492
2493				});
2494			});
2495
2496			M9ANI.lightbox.count++;
2497
2498		} // if(1)
2499
2500		var _name = '_lightbox_' + Deffect[1]['group'];
2501
2502		jQuery(Did).addClass(_name);
2503		
2504		jQuery('.'+_name).each(function() {
2505			jQuery(this).prop('href',jQuery(this).data('m9-href'));
2506		});
2507
2508		if (!M9ANI.lightbox.hash[_name]) {
2509			M9ANI.lightbox.hash[_name] = 1;
2510		}
2511
2512	} // extend
2513
2514}; // M9ANI["lightbox"]
2515
2516M9GOOGLE_MAP = {
2517
2518	vars : {
2519		'x' : 126.9753042,		
2520		'y' : 37.5599416,
2521		'zoom' : 17,
2522		'title' : 'Sungnyemun',
2523		'address' : '40, Sejong-daero, Jung-gu, Seoul, Republic of Korea'
2524	},
2525
2526	int : function(Did,Deffect,_type) {
2527
2528		var _func = function() {
2529			var Cid = m9_get_object(Did);
2530			if (!Cid) { return false; } // 객체가 존재하지 않을 경우 무시
2531			Cid._resize_property = m9_get_vars(Deffect[1],M9GOOGLE_MAP.vars);
2532			M9GOOGLE_MAP.set(Did,Cid._resize_property,_type);
2533		};
2534
2535		var google_token = (M9_SET['google_token']) ? M9_SET['google_token'] : '';
2536		if (google_token != '') {
2537			m9_ImportScript('//maps.googleapis.com/maps/api/js?key=' + google_token + '&callback=M9GOOGLE_MAP._empty_callback&language='+get_mong9_lang(),_func);					
2538		} else {
2539			m9_ImportScript('//maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&language='+get_mong9_lang(),_func);	
2540		}
2541	
2542	},
2543
2544	set : function(Did,Deffect,_type) {
2545
2546		var Cid = m9_get_object(Did);
2547		if (!Cid) { return false; } // 객체가 존재하지 않을 경우 무시	
2548
2549		jQuery(Cid).data('original_style',jQuery(Cid).attr('style'));
2550
2551		var Y_point        = Deffect['y'] * 1;    // lat 값 
2552		var X_point        = Deffect['x'] * 1;  // lng 값 
2553
2554		var zoomLevel      = Deffect['zoom'] * 1;  // 첫 로딩시 보일 지도의 확대 레벨 
2555	
2556		var markerTitle    = Deffect['title'];  // 현재 위치 마커에 마우스를 올렸을때 나타나는 이름 
2557		var markerMaxWidth = 300;  // 마커를 클릭했을때 나타나는 말풍선의 최대 크기 
2558	
2559		// 말풍선 내용 
2560		var contentString	= '<div>' + 
2561			'<div>'+ 
2562				'<span class="m9-map-head">'+markerTitle+'</span>'+ 
2563			'</div>'+ 
2564			'<div class="m9-map-content">'+ 
2565				Deffect['address'] + 
2566			'</div>'+ 
2567		'</div>'; 
2568
2569		var myLatlng = new google.maps.LatLng(Y_point,X_point); 
2570
2571		var mapOptions = { 
2572			zoom: zoomLevel, 
2573			center: myLatlng, 
2574			mapTypeId: google.maps.MapTypeId.ROADMAP
2575	 	};
2576
2577		var map = new google.maps.Map(Cid, mapOptions); 	
2578
2579		var draggabled =  (_type == 1) ? true : false;
2580		var marker = new google.maps.Marker({ 
2581			position: myLatlng, 
2582			map: map, 
2583			draggable:draggabled, 
2584			panControl: true,
2585			animation: google.maps.Animation.DROP
2586			//title: markerTitle 
2587		}); 
2588
2589		var infowindow = new google.maps.InfoWindow({ 
2590			content: contentString, 
2591			maxWidth: markerMaxWidth 
2592		}); 
2593	
2594		infowindow.open(map,marker); 
2595
2596		jQuery(Cid).data('google_map',{ 'lang' : myLatlng, 'map' : map , 'marker' : marker });	
2597
2598		google.maps.event.addDomListener(window,"resize",function() { //리사이즈에 따른 마커 위치
2599			var center = map.getCenter();
2600			google.maps.event.trigger(map,"resize");
2601			map.setCenter(center); 
2602		});
2603
2604		google.maps.event.addListenerOnce(map,'idle',function() {
2605			google.maps.event.trigger(map,'resize');
2606		});
2607	
2608		if (_type == 1) {
2609			google.maps.event.addListener(marker,"drag",function() {			
2610				jQuery('#_google_y_pos').val(this.position.lat());
2611				jQuery('#_google_x_pos').val(this.position.lng());			  
2612			});
2613			google.maps.event.addListener(map,'zoom_changed',function() {
2614		      jQuery('#_google_zoom').val(map.getZoom());
2615				var latLng = marker.getPosition(); // returns LatLng object
2616				map.setCenter(latLng); // setCenter takes a LatLng object
2617		    });			
2618		}	
2619	
2620	},
2621	_empty_callback : {
2622		// https://maps.googleapis.com/maps/api/js callback
2623	}
2624
2625};
2626
2627///////////////////////////////////////////
2628
2629var m9_mode_obj = {
2630	
2631	mode : '',
2632	order : [],
2633	_type : 'master',
2634
2635	info : [	
2636		{ 'name' : 'm', 'width' : '768' , 'url' : M9_SET["mong9_url"] + 'source/css/mong9-m.css' , 'p_width' : '683' },		
2637		{ 'name' : 'e', 'width' : '576' , 'url' : M9_SET["mong9_url"] + 'source/css/mong9-e.css' , 'p_width' : '439' }					
2638	],
2639
2640	change_info : function(Dhash) {
2641		for (var i=0;i<m9_mode_obj.info.length;i++) {
2642			var name = m9_mode_obj.info[i]['name'];
2643			if (Dhash[name]) {
2644				m9_mode_obj.info[i]['width'] = Dhash[name];
2645			}
2646
2647		}
2648
2649	},
2650
2651	int : function(_type) { // 초기화
2652
2653		if (m9_mode_obj.order.length == 0) { m9_mode_obj._get_order(); } // 모드 설정 가져오기
2654
2655		if (_type != 1) {
2656			// 최초는 PC모드이므로 다른 모드의 스타일시트들 삭제
2657			// 만약 다른 기기에서도 가능하려면 변경해야함.
2658			for (var i=0;i<m9_mode_obj.order.length;i++) {
2659				m9_mode_obj.remove_stylesheet(i); // 초기화	
2660			}
2661		}
2662
2663	},
2664	
2665	_get_order : function() { // m9_mode_obj.info의 값을 넓이값으로 정렬해서 m9_mode_obj.order 생성
2666
2667		m9_mode_obj.info.sort(function(a,b) {
2668			return a.width > b.width ? -1 : (a.width < b.width ? 1 : 0);			
2669		});
2670		
2671		for (var i=0;i<m9_mode_obj.info.length;i++) {
2672			m9_mode_obj.order[i] = m9_mode_obj.info[i]['name'];
2673		}
2674
2675	},
2676
2677	get : function() { // 모드 가져오기(e,m,...)
2678		return m9_mode_obj.mode;	
2679	},
2680		
2681	change : function(_mode) { // 모드변경(상단 모드버튼)
2682
2683		if (m9_mode_obj.mode == _mode) { return false; } // 모드가 같으면 무시(_mode => '','m','e')
2684
2685		var _now = 0;
2686		var _btn = '';
2687
2688		if (_mode == '') {
2689
2690			jQuery('#example').css('display','');
2691			jQuery('._drag-btn-3,._drag-element-3').removeClass('disabled').prop('disabled','');
2692			jQuery('#_editor_font_convert').removeClass('disabled').prop('disabled','');
2693			_btn = 'pc';
2694
2695		} else {
2696
2697			jQuery('#example').css('display','none');					
2698			jQuery('._drag-btn-3,._drag-element-3').addClass('disabled').prop('disabled','disabled');					
2699			jQuery('#_editor_font_convert').addClass('disabled').prop('disabled','disabled').prop('checked',false);
2700			_btn = _mode;
2701
2702		}		
2703
2704		jQuery('._mode-btn').removeClass('active');
2705		jQuery('.btn-mode-' + _btn).addClass('active');
2706		
2707		if (_mode == '') { _now = 1; }
2708				
2709		index = -1;
2710		for (var i=0;i<m9_mode_obj.order.length;i++) {
2711
2712			if (_now == 0) {
2713				m9_mode_obj.attach_stylesheet(i); // 스타일시트 붙여넣기
2714			} else {			
2715				m9_mode_obj.remove_stylesheet(i); // 스타일시트 삭제
2716			}
2717			if (m9_mode_obj.order[i] == _mode) {
2718				_now = 1;
2719				index = i;
2720			}
2721
2722		}
2723
2724		var _w = (_mode == '') ? '100%' : ( (m9_mode_obj.info[index]['p_width'] * 1) + (m9_get_num(jQuery('._editor-wrap').css('padding-left')) * 1) + (m9_get_num(jQuery('._editor-wrap').css('padding-right')) * 1) ) + 'px';       
2725		editor.event_doing.set(1);
2726		jQuery('._editor-wrap').animate({width:_w},300,function(){
2727			jQuery(this).css('overflow','');
2728			editor.event_doing.set(0);	
2729		});
2730
2731		m9_mode_obj.reset_by_change(); // 모드변경시 화면 reset // hidden etc objects(img,video..) layer
2732
2733		m9_mode_obj.change_data_by_mode(_mode);
2734
2735		m9_mode_obj.mode = _mode;
2736		editor.mode._mode = _mode;
2737
2738		jQuery(element_obj._now).trigger('mousedown');
2739		jQuery('#editMenu-grid').css('display','none');
2740
2741	},
2742
2743	reset_by_change : function() { // 모드변경시 화면 reset // hidden etc objects(img,video..) layer
2744		jQuery('._setting_area_box,.handle_width,.m9-alt-tipsy').css('display','none');		
2745	},
2746
2747	_mode_kind_code : ['style','src'],
2748
2749	get_m9_mode_name : function(_mode,_code) { // e -> m9-e-style
2750
2751		var _name = 'm9-';
2752		if (_mode != '') {
2753			_name += _mode + '-';		
2754		}
2755
2756		if (_code == '' || _code == undefined) {
2757			_code = 'style';
2758		}
2759
2760		_name += _code;
2761
2762		return _name;
2763	},
2764
2765	// style to m9 data style
2766	// pc 모드 처리
2767	change_data_by_mode : function(_mode) { // 모드에 의한 style 변경
2768
2769		if (m9_mode_obj.mode == _mode) { return false; }
2770
2771		var mode_kind = m9_mode_obj._mode_kind_code;
2772
2773		if (m9_mode_obj.mode == '') { // pc -> other mode
2774
2775			var orders = m9_mode_obj.order;
2776
2777			for (var z=0;z<mode_kind.length;z++) {
2778
2779				var _key = 'data-' + m9_mode_obj.get_m9_mode_name('',mode_kind[z]); // m9-style
2780
2781				var kinds = '';
2782				for (var i=0;i<orders.length;i++) {
2783					if (kinds != '') { kinds += ','; }
2784					kinds += '[data-' + m9_mode_obj.get_m9_mode_name(orders[i],mode_kind[z]) + ']';
2785				}
2786
2787				// kinds => [data-m9-m-style],[data-m9-e-style]
2788				jQuery(kinds).each(function() {						
2789					var _style = jQuery(this).attr(mode_kind[z]);
2790					if (_style == undefined) { _style = ''; }			
2791					jQuery(this).attr(_key,_style);	
2792				});
2793
2794			}
2795
2796		} else if (_mode == '') { // other mode -> pc
2797
2798			for (var z=0;z<mode_kind.length;z++) {
2799
2800				var _key = 'data-' + m9_mode_obj.get_m9_mode_name('',mode_kind[z]); // m9-style
2801				var kinds = '[' + _key + ']';
2802
2803				jQuery(kinds).each(function() {						
2804					var _style = jQuery(this).attr(_key);				
2805					jQuery(this).attr(mode_kind[z],_style);		
2806					jQuery(this).removeAttr(_key);
2807					
2808				});
2809
2810			}
2811
2812		}
2813
2814		m9_mode_obj.change_all_data_by_mode(_mode); // 모드에 의한 style들 변경
2815			
2816	},
2817
2818	change_all_data_by_mode : function(_mode) { // 모드에 의한 style들 변경
2819
2820		if (_mode == '') { return false; }
2821
2822		var _orders = [''];
2823		var orders = _orders.concat(m9_mode_obj.order);
2824		var mode_kind = m9_mode_obj._mode_kind_code;
2825
2826		for (var z=0;z<mode_kind.length;z++) {
2827
2828			var kinds = '';
2829
2830			for (var i=0;i<orders.length;i++) {
2831				if (kinds != '') { kinds += ','; }
2832				kinds += '[data-' + m9_mode_obj.get_m9_mode_name(orders[i],mode_kind[z]) + ']';
2833			}
2834
2835			jQuery(kinds).each(function() {
2836				var str = m9_mode_obj.get_data_str_by_mode(this,_mode,mode_kind[z]); // 모드에 의한 style 문자열 얻어오기
2837				jQuery(this).attr(mode_kind[z],str);		
2838			});
2839
2840		}
2841
2842	},
2843
2844	get_data_str_by_mode : function(obj,_mode,_code) { // 모드에 의한 style 문자열 얻어오기
2845
2846		var _orders = [''];
2847		var orders = _orders.concat(m9_mode_obj.order);
2848
2849		var modes = [];
2850		
2851		var _now = 0;
2852		var _styles = {};
2853	
2854		for (var i=0;i<orders.length;i++) {
2855
2856			var d = m9_mode_obj.get_m9_mode_name(orders[i],_code);
2857			var e = jQuery(obj).attr('data-'+d);
2858			if (e) {
2859				modes.push(e);
2860			}
2861
2862			if (orders[i] == _mode) { break; }
2863				
2864		}
2865
2866		var Dvar = '';
2867
2868		if (_code == 'style') {
2869			Dvar = m9_mode_obj.get_style_by_str_array(modes); // 스타일 합치기
2870		} else {
2871			Dvar = modes[modes.length-1];
2872		}
2873
2874		if (Dvar == undefined) { Dvar = ''; }
2875
2876		return Dvar;
2877						
2878	},			
2879
2880	get_orders_mode : function() {
2881
2882		if (m9_mode_obj.order.length == 0) { m9_mode_obj._get_order(); }
2882 // 모드 설정 가져오기
2883		
2884		var orders = [''];
2885		if (m9_mode_obj.get() == '') { return orders; }
2886		
2887		for (var i=0;i<m9_mode_obj.info.length;i++) {	
2888			orders.push(m9_mode_obj.info[i]['name']);
2889			if (m9_mode_obj.info[i]['name'] == m9_mode_obj._mode) { break; }
2890		}
2891
2892		return orders.reverse();
2893	},
2894
2895	get_style_by_str_array : function(style_str_array) { // 스타일 합치기
2896
2897		var _styles = {};
2898		for (var i=0;i<style_str_array.length;i++) {
2899
2900			if (style_str_array[i] == '' || style_str_array[i] == undefined) { continue; }
2901
2902			var f = style_str_array[i].split(';');
2903	
2904			for (var z=0;z<f.length;z++) {
2905				var g = f[z].split(':');				
2906				var _k = jQuery.trim(g[0]);
2907				_styles[_k] = jQuery.trim(g[1]);
2908			}	
2909
2910		}
2911
2912		var Dvar = '';
2913		for (var i in _styles) {
2914			if (Dvar != '') { Dvar += ';'; }
2915			if (i != '' && _styles[i] != undefined) {
2916				Dvar += i +':'+_styles[i];
2917			}
2918		}
2919
2920		return Dvar;
2921				
2922	},
2923					
2924	attach_stylesheet : function(index) { // 스타일시트 붙여넣기
2925		var _url = m9_mode_obj.info[index]['url'];
2926		if (jQuery('head').find('[href=\''+_url+'\']').length == 0) {
2927			var max_width = m9_mode_obj.info[index]['width'];
2928			jQuery('head').append(jQuery('<link rel="stylesheet" href="'+ _url +'" type="text/css" />'));			
2929		}
2930	},
2931	
2932	remove_stylesheet : function(index) { // 스타일시트 삭제
2933		var _url = m9_mode_obj.info[index]['url'];
2934		var hrefs = jQuery('head').find('[href=\''+_url+'\']');
2935		if (hrefs.length > 0) {	
2936			hrefs.remove();
2937		}
2938	},
2939	
2940	edit_wrap : function(obj) {
2941		if (!jQuery(obj).parent().hasClass('._editor-wrap')) {
2942			jQuery(obj).wrap('<div class="_editor-wrap"></div>');
2943		}
2944	},
2945	
2946	remove_empty_style : function(obj) { // 공백인 data-m9-X-style 삭제
2947
2948		var _orders = [''];
2949		var orders = _orders.concat(m9_mode_obj.order);
2950		var J_obj = jQuery(obj);			
2951		for (var i=0;i<orders.length;i++) {
2952			var _style = orders[i] + '-style';
2953			var _style = 'data-' + m9_mode_obj.get_m9_mode_name(orders[i]);
2954			J_obj.find('*['+_style+'=""]').removeAttr(_style);
2955		}
2956					
2957	},
2958
2959	Responsive : function() {
2960
2961		if (m9_mode_obj.order.length == 0) { m9_mode_obj._get_order(); } // 모드 설정 가져오기
2962		
2963		var bw = m9_get_num(jQuery('body').css('width'));
2964
2965		var _mode = '';
2966
2967		if (m9_mode_obj._type == 'master') { // 전문가 모드에서만 처리하기
2968
2969			// 편집기 첫 로딩시 _m9_editor_canvas 가 생성되기도 전에 this.Responsive 함수가 실행될수 있음
2970			// 크기(width)를 못 알아올수 있음
2971			// 그래서 첫로딩시 body 크기로 대처하여 _mode 값이 '' 되도록 함.
2972			if (jQuery('._m9_editor_canvas').length > 0) {
2973				bw = m9_get_num(jQuery('._m9_editor_canvas').css('width'));
2974			}
2975
2976			for (var i=m9_mode_obj.info.length;i>0;i--) {
2977				var num = i - 1;
2978				var _w = m9_mode_obj.info[num]['width'];
2979				if (_w >= bw) {
2980					_mode = m9_mode_obj.info[num]['name'];
2981					break;
2982				}
2983			}
2984
2985		}
2986
2987		m9_mode_obj.change_data_by_mode(_mode);
2988		m9_mode_obj.mode = _mode;
2989
2990		if (jQuery('.m9editor-layout').length > 0) {
2991
2992			var w_h = m9_get_num(jQuery(window).outerHeight());
2993
2994			jQuery('.m9editor-layout').each(function() {
2995
2996				var edit_obj = jQuery(this).find('div.m9_editor_box');
2997				var edit_h = jQuery.data(edit_obj[0],'min-height');
2998				var e_1 = m9_get_num(jQuery(this).find('._edit_menu_in').css('height')) + 100;
2999
3000				var re_size = edit_h;
3001				if (edit_h > (w_h - e_1)) {
3002					re_size = w_h - e_1;
3003					edit_obj.css({'min-height':re_size,'height':re_size,'overflow-y':'auto'});
3004				} else {
3005					edit_obj.css({'min-height':re_size,'height':'auto','overflow-y':'none'});
3006				}
3007
3008			});
3009		}
3010
3011	} // Responsive
3012	
3013}; // m9_mode_obj
3014
3015function get_mong9_lang(Dlang) {
3016	var _lang_str = (Dlang) ? Dlang : jQuery('html').prop('lang');
3017	var _lang = _lang_str.split('_')[0];
3018	return (_lang) ? _lang : 'en';
3019} // function
3020
3021function m9_editor_be_check() {
3022
3023	if (!M9_SET || M9_SET['mong9_editor_use'] != 1) { return false; }
3024
3025	var editor_names = [];
3026
3027	if (typeof(tinyMCE) == 'object') { editor_names.push('tinymce4'); } // TinyMCE
3028	if (typeof(CKEDITOR) == 'object') { editor_names.push('ckeditor4'); } // Ckeditor4
3029	if (typeof(oEditors) == 'object') { editor_names.push('smarteditor2'); } // Smart Editor2
3030	if (typeof(cheditor) == 'function') { editor_names.push('cheditor5'); } // Cheditor5
3031	if (typeof(xe) == 'object' && typeof(xe.Editors) == 'object') { editor_names.push('xpresseditor'); } // XE editor
3032
3033	if (editor_names.length > 0) {
3034
3035		m9_ImportScript(M9_SET["mong9_url"] + "source/js/mong9-connect.
3035js",function() {
3036			mong9_btn_attach(editor_names);
3037		});
3038	}
3039
3040} // function
3041
3042jQuery(function() {
3043
3044	if (M9_SET['mong9_editor_use'] == '1') {
3045
3046		if (window.CKEDITOR) {
3047			CKEDITOR.config.allowedContent = { $1: { elements: CKEDITOR.dtd, attributes: true, styles: true, classes: true } };
3048			CKEDITOR.config.disallowedContent = 'style;script; *[on*]';
3049		}
3050
3051		m9_delay('',200,function() {
3052			m9_editor_be_check();
3053		});
3054
3055	}
3056
3057});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.