PageSourceSearch

https://koreapa.org/js/style.1782969919.js

js koreapa.org collected 2026-09-29 09:02:30 UTC 135,081 bytes, 3,096 lines download raw bytes

1var style = new function () {
2	var base = this; 
3	this.fonts = (typeof FONTS != 'undefined') ? FONTS : [];
4	var getPropertyValue = function(k,v) {
5		var checkRootPadding = style.checkBlockRootCSS('block-padding');
6		var checkRootBackground = style.checkBlockRootCSS('block-background');
7
8		switch(k) {
9			case 'background':
10				base.property.bg = v;
11				var colorRegex = /#[0-9A-Fa-f]{3,8}|rgba?\([^)]+\)/;
12				var match = v.match(colorRegex);
13				if(match) {
14					for (var i = 0; i < match.length; i++) {
15						if (match[i] !== 'transparent') {
16							base.property.bgColor = match[i];
17							break;
18						}
19					}
20				}
21				break;
22			case 'background-color':
23				base.property.bgColor = v;
24				break;
25			case 'background-image':
26				base.property.bgUrl = v;
27				if( (v == '' || v == 'none') 
28					&& $(base.selector).length > 0 
29					&& typeof $(base.selector).css('background-image') != 'undefined' && $(base.selector).css('background-image') != 'none'
30				) {
31					base.property.bgUrl = $(base.selector).css('background-image');    
32				}
33				break;
34			case 'background-repeat':
35				// base.property.bgRepeat = (!base.property.bgRepeat) ? 'no-repeat' : $(base.selector).css('background-repeat');
36				if($(base.selector).attr('data-aosinfo')=="false" && $(base.selector).attr('data-parallax')=="true" && typeof v !='undefined' && v) base.property.bgRepeat = v;
37				else base.property.bgRepeat = $(base.selector).css('background-repeat');
38				break;
39			case 'background-position':
40				// base.property.bgPosition = (!base.property.bgPosition || base.property.bgPosition=='0% 0%') ? 'center center' : $(base.selector).css('background-position');
41
42				/* parallax on-off 기능 추가 ::: bootstrap-override.css의 [data-parallax="false"] css 적용됨에 따라 수정됨 ******/
43				if($(base.selector).attr('data-aosinfo')=="false" && $(base.selector).attr('data-parallax')=="true" && typeof v !='undefined' && v) _bgposition = v;
44				else _bgposition = $(base.selector).css('background-position');
45				//var _bgposition = (typeof v !='undefined' && v) ? v : $(base.selector).css('background-position');
46				/*************************************************************************************************************/
47				
48				if(		$.inArray(_bgposition,['left top','0% 0%','0% 0','0 0%','0px 0','0 0px','0px 0%','0% 0px','0% 0px','0px 0%','0px 0px','0 0'])	> -1) _bgposition = 'left top';
49				else if($.inArray(_bgposition,['center top','50% 0%','50% 0px','50% 0','top','center 0%','center 0px','center 0'])	> -1) _bgposition = 'center top';
50				else if($.inArray(_bgposition,['right top','100% 0%','100% 0px','100% 0'])	> -1) _bgposition = 'right top';
51				else if($.inArray(_bgposition,['left center','center left','left','0 50%','0px 50%','0% 50%','0% center','0px center','0 center','left 50%']) > -1) _bgposition = 'left center';
52				else if($.inArray(_bgposition,['center center','center','50% 50%','center 50%','50% center','50%']) > -1) _bgposition = 'center center';
53				else if($.inArray(_bgposition,['right center','center right','right','100% 50%','100% center','right 50%']) > -1) _bgposition = 'right center';
54				else if($.inArray(_bgposition,['left bottom','bottom left','0% 100%','0px 100%','0 100%','left 100%','0% bottom','0px bottom','0 bottom']) > -1) _bgposition = 'left bottom';
55				else if($.inArray(_bgposition,['center bottom','bottom center','bottom','50% 100%','center 100%','50% bottom']) > -1) _bgposition = 'center bottom';
56				else if($.inArray(_bgposition,['right bottom','bottom right','100% 100%','right 100%','100% bottom']) > -1) _bgposition = 'right bottom';
57
58				base.property.bgPosition = _bgposition;
59				break;
60			case 'background-attach':
61				base.property.bgAttach = $(base.selector).css('background-attach');
62				break;
63			case 'background-size':
64				// base.property.bgSize = (!base.property.bgSize) ? 'cover' : $(base.selector).css('background-size');
65				if($(base.selector).attr('data-aosinfo')=="false" && $(base.selector).attr('data-parallax')=="true" && typeof v !='undefined' && v) base.property.bgSize = v;
66				else base.property.bgSize = $(base.selector).css('background-size');
67				//base.property.bgSize = (typeof v !='undefined' && v) ? v : $(base.selector).css('background-size');
68				break;
69			// case 'background-attachment':
70			// 	base.property.bgAttachment = (base.property.bgSize == 'cover') ? 'fixed' : 'scroll';
71			// 	break;
72			case 'fill':
73				base.property.fill = v;
74				break;
75			case 'color':
76				var _txcolor = Coloris.getColorInfo(v);
77				base.property.txColor = (_txcolor) ? _txcolor : '';
78				break;
79			
80			case 'padding': case 'padding-left': case 'padding-right': case 'padding-top': case 'padding-bottom':
81				if(!checkRootPadding) {
82					base.property.pdTop = ($(base.selector).css('padding-top')!=null) ? $(base.selector).css('padding-top').replace('px','') : '';
83					base.property.pdBottom = ($(base.selector).css('padding-bottom')!=null) ? $(base.selector).css('padding-bottom').replace('px','') : '';
84					base.property.pdLeft = ($(base.selector).css('padding-left')!=null) ? $(base.selector).css('padding-left').replace('px','') : '';
85					base.property.pdRight = ($(base.selector).css('padding-right')!=null) ? $(base.selector).css('padding-right').replace('px','') : '';
86				}
87				break;
88
89			case 'font-size':
90				var _txSize = $(base.selector).css('font-size');
91				base.property.txSize = (_txSize!=null) ? $(base.selector).css('font-size').replace('px','') : (v ? v.replace('px','') : 0);
92				break;
93
94			case 'font-family':
95				if($(base.selector).length > 0 && typeof $(base.selector).css('font-family') != 'undefined') {
96					base.property.txName = ($(base.selector).css('font-family')!=null) ? $(base.selector).css('font-family').replace(/\'/gi,'').replace(/\"/gi,'') : '';
97				} else {
98					base.property.txName = v.replace(/\'/gi,'').replace(/\"/gi,'');
99				}
100				break;
101
102			case 'text-align':
103				base.property.txAlign = (v) ? v : '';
104				break;
105
106			case 'width':
107				base.property.width = (v == 'auto') ? v : parseInt(v);
108				break;
109			case 'height':
110				base.property.height = (v == 'auto') ? v : parseInt(v);
111				break;
112
113			case 'font-weight':
114				base.property.txWeight = /^(bold|normal|\d{3})$/.test(v) ? v : '';
115				break;
116			case 'font-style':
117				base.property.txStyle = /^(normal|italic)$/.test(v) ? v : '';
118				break;
119			case 'text-decoration':
120				base.property.txDecoration = /^(none|underline|overline|line-through)$/.test(v) ? v : '';
121				break;
122
123			case 'font-weight':
124				base.property.txWeight = /^(bold|normal|\d{3})$/.test(v) ? v : '';
125				break;
126			case 'font-style':
127				base.property.txStyle = /^(normal|italic)$/.test(v) ? v : '';
128				break;
129			case 'text-decoration':
130				base.property.txDecoration = /^(none|underline|overline|line-through)$/.test(v) ? v : '';
131				break;
132
133			case 'width':
134				base.property.width = (v == 'auto') ? v : parseInt(v);
135				break;
136			case 'height':
137				var _height = v;
138				base.property.height = (v == 'auto') ? v : parseInt(v);
139				break;
140
141			case 'border-width':
142				base.property.borderWidth = v;
143				break;
144			case 'border-style':
145				base.property.borderStyle = v;
146				break;
147			case 'border-color':
148				base.property.borderColor = v;
149				break;
150
151			case 'border':
152			case 'border-top':
153			case 'border-bottom':
154			case 'border-right':
155			case 'border-left':
156				var border_color = Coloris.getColorInfo(v,'org');
157				if(Coloris.getColorRegex().exec(border_color) != null) {
158					base.property.borderColor = border_color;
159
160					if(typeof v != 'string') v = v.pop();
161					var style_tmp = v.match(/\b(?:none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset)\b/);
162					base.property.borderStyle = (style_tmp && typeof style_tmp[0] != 'undefined' && style_tmp[0]) ? style_tmp[0] : 'none';
163	
164					// var style_tmp = v.match(/\b(\d+(?:\.\d+)?(px|em|rem|%)|thin|medium|thick)\b/);
165					var width_tmp = v.match(/\b(\d+(?:\.\d+)?(px)|thin|medium|thick)\b/),
166						width_tmp2 = (width_tmp && typeof width_tmp[0] != 'undefined' && width_tmp[0]) ? width_tmp[0] : '0px';
167					base.property.borderWidth = (width_tmp2.indexOf('px')) ? width_tmp2.replace('px','') * 1 : width_tmp2;
168				}
169				break;
170
171			case 'border-radius':
172				base.property.borderRadius = v;
173				break;
174
175			default:
176				// root css
177				if(k.match(/^\-\-/) !== null) {
178					var _key = k.replace(/\-/gi,'_');
179					base.property[_key] = v;
180				}
181				break;
182
183		}
184
185	};
186
187	var getPropertyValueCustom = function(k,v,selector) {
188		if(typeof v == 'undefined') return;
189
190		switch(k) {
191			case 'line-height':
192				var _txlineheight = v,
193					_txfontsize = $(selector).css('font-size');
194					_txfontsize = parseInt(_txfontsize.replace('px',''));
195
196				if(_txlineheight.indexOf('%') > -1)	_txlineheight = _txlineheight.replace('%','');
197				else if(_txlineheight.indexOf('px') > -1) _txlineheight = (parseFloat(Number(_txlineheight.replace('px','')).toFixed(3)) / _txfontsize) * 100;
198				else if(_txlineheight.indexOf('.') > -1) _txlineheight = parseFloat(Number(_txlineheight)) * 100;
199
200				base.property.txLineheight = parseInt(Number(_txlineheight));
201				break;
202			case 'fill':
203				var _fill = v;
204				base.property.fill = _fill;
205				break;
206			default:
207				break;
208		}
209	};
210
211
212	this.get = function(j,selector) {
213		this.property = {
214			undefined: true,
215
216			bg: '',
217			bgColor : '',
218			bgPosition : '',
219			bgRepeat : '',
220			bgUrl : '',
221			bgAttach : '',
222			bgSize : '',
223			bgAttachment: '',
224
225			borderColor: '',
226			borderWidth: 0,
227			borderStyle: 'none',
228
229			fill: '',
230			txColor : '',
231			txSize : 0,
232			txName : '',
233			txAlign: '',
234			
235			pdTop : 0,
236			pdBottom : 0,
237			pdLeft : 0,
238			pdRight : 0
239		};
240		if(typeof selector == 'undefined') return base.property;
241
242		selector = (selector[0] == '.') ? selector : '.' + selector;
243		this.selector = $(selector);
244
245		var bg_set = ['center center', 'no-repeat', 'cover'];
246		if(this.selector.find('.cl-menu-option').length > 0) bg_set[0] = 'center top';
247		if(typeof j == 'undefined') return base.property; 
248		if(typeof j['children'] == 'undefined') return base.property;
249		if(typeof j['children'][selector] != 'undefined') {
250			this.property.undefined = false;
251
252			var c = j['children'][selector]['attributes'];
253			$.each(c,function(k,v) {
254				getPropertyValue(k,v);
255			});
256
257			if(!this.property.bgPosition) this.property.bgPosition = bg_set[0];
258			if(!this.property.bgRepeat) this.property.bgRepeat = bg_set[1];
259			if(!this.property.bgSize) this.property.bgSize = bg_set[2];
260			if(!this.property.bgAttachment) this.property.bgAttachment = 'scroll';
261			if(selector.indexOf('.figure.like > svg') > -1) {
262				getPropertyValueCustom('fill', j['children'][selector]['attributes']['fill'], selector);
263			}
264		} else {
265			this.property.undefined = true;
266		}
267
268		var checkMenu = (typeof selectEL != 'undefined' && selectEL == 'el-menu') ? true : false;
269		var checkFooter = (typeof selectEL != 'undefined' && selectEL == 'el-footer') ? true : false;
270
271		if(checkMenu || checkFooter) {
272
273			var checkSidebar		= (checkMenu) ? $(selector).closest('header.navbar').hasClass('sidebar') : false;
274			var checkNavLineHeight	= (checkMenu && selector == '.menu-'+SID+' ul.navbar-nav > li > a') ? true : false;
275			var checkLogoLineHeight	= (checkMenu && selector == '.menu-'+SID+' #tpl-logo-text') ? true : false;
276			var checkLogoPadding	= (checkMenu && selector == '.menu-'+SID+' .navbar-header') ? true : false;
277
278			var checkFLogoLineHeight= (checkFooter && selector == '.footer-'+SID+' #tpl-logo-text-footer') ? true : false;
279
280			if(checkLogoLineHeight || checkFLogoLineHeight) {
281				getPropertyValueCustom('line-height', j['children'][selector]['attributes']['line-height'], selector);
282			
283			} else if(checkNavLineHeight || checkLogoPadding) {
284
285				if(	typeof j["children"]['@media (min-width: 769px)'] != 'undefined' &&
286					typeof j["children"]['@media (min-width: 769px)']["children"][selector] != 'undefined'
287				) {
288					var children_c = j['children']['@media (min-width: 769px)']['children'][selector]['attributes'];
289
290					if(checkNavLineHeight) {
291						if(checkSidebar) {
292							if(typeof children_c['padding'] != 'undefined' && children_c['padding']) {
293								var nav_pd = {'top':0,'bottom':0,'left':0,'right':0};
294								$.each(children_c,function(c_k,c_v) {
295									if(c_k == 'padding-top')	nav_pd['top'] = c_v;
296									if(c_k == 'padding-bottom')	nav_pd['bottom'] = c_v;
297									if(c_k == 'padding-left')	nav_pd['left'] = c_v;
298									if(c_k == 'padding-right')	nav_pd['right'] = c_v;
299									if(c_k == 'padding') {
300										var pd_arr = c_v.replace(/px/gi,'').split(' ');
301										nav_pd['top']	= (typeof pd_arr[0] != 'undefined' && pd_arr[0]) ? pd_arr[0] : 0;
302										nav_pd['right']	= (typeof pd_arr[1] != 'undefined' && pd_arr[1]) ? pd_arr[1] : nav_pd['top'];
303										nav_pd['bottom']= (typeof pd_arr[2] != 'undefined' && pd_arr[2]) ? pd_arr[2] : nav_pd['top'];
304										nav_pd['left']	= (typeof pd_arr[3] != 'undefined' && pd_arr[3]) ? pd_arr[3] : nav_pd['right'];
305									}
306								});
307
308								var nav_f_s = $('.menu-'+SID+' ul.navbar-nav:not("#fixed-menu") > li > a').css('font-size');
309								nav_f_s = parseInt(nav_f_s.replace('px',''));
310
311								var nav_f_h = nav_f_s * 1.6,
312									nav_pdTopBottom = parseInt(nav_pd['top']) + parseInt(nav_pd['bottom']),
313									nav_li_val = parseInt((nav_f_h + nav_pdTopBottom) / nav_f_s * 100);
314
315								this.property.pdTop		= nav_pd['top'];
316								this.property.pdBottom	= nav_pd['bottom'];
317								this.property.pdLeft	= nav_pd['left'];
318								this.property.pdRight	= nav_pd['right'];
319								this.property.txLineheight = nav_li_val;
320							}
321						} else {
322							if(typeof children_c['line-height'] != 'undefined' && children_c['line-height']) {
323								var li_val = children_c['line-height'];
324								if(li_val.indexOf('%') > -1) li_val.replace('%','');
325								else if(li_val.indexOf('px') > -1) li_val.replace('px','');
326								else if(li_val.indexOf('.') > -1) parseInt(li_val) * 100;
327
328								this.property.txLineheight = parseInt(li_val);
329							}
330						}
331					}
332
333					if(checkLogoPadding) {
334						$.each(children_c,function(c_k,c_v) {
335							getPropertyValue(c_k,c_v);
336						});
337					}
338				}
339
340
341			} else {
342				var check_el = (checkMenu) ? '.menu-'+SID : '.footer-'+SID;
343				this.property.pdTop = parseInt($(check_el).css('padding-top'));
344				this.property.pdBottom = parseInt($(check_el).css('padding-bottom'));
345			}
346		}
347		
348		// return this.property;
349		return base.property;
350	};
351
352	this.set = function(j,o,selector,key,val,path) {
353		selector = (selector[0] == '.') ? selector : '.' + selector;
354
355		var checkMenu		= (selectEL == 'el-menu') ? true : false;
356		var checkFooter		= (selectEL == 'el-footer') ? true : false;
357
358		var	checkSidebar	= (checkMenu) ? $(selector).closest('header.navbar').hasClass('sidebar') : false;
359		var checkNavLineHeight	= (checkMenu && key.indexOf('line-height') > -1 && selector == '.menu-'+SID+' ul.navbar-nav > li > a') ? true : false;
360		var checkLogoLineHeight	= (checkMenu && key == 'line-height' && selector == '.menu-'+SID+' #tpl-logo-text') ? true : false;
361		var checkLogoPadding	= (checkMenu && key.indexOf('padding') > -1 && selector == '.menu-'+SID+' .navbar-header') ? true : false;
362		var checkHeaderPadding	= (checkMenu && key.indexOf('padding') > -1 && selector == '.el-menu') ? true : false;
363
364		var checkFLogoLineHeight= (checkFooter && key == 'line-height' && selector == '.footer-'+SID+' #tpl-logo-text-footer') ? true : false;
365		var checkGalleryProject = (selector.indexOf('galProjectBg') > -1) ? true : false;
366		
367		var checkElRoot = (key.match(/^\-\-/) !== null) ? true : false;
368		var checkRootPadding = style.checkBlockRootCSS('block-padding');
369		var checkRootBackground = style.checkBlockRootCSS('block-background');
370
371		if(!checkNavLineHeight && !checkLogoPadding) {
372			var r = initObject(j,selector);
373		}
374
375		switch(key) {
376			case 'background-color-all':
377			case 'background-color':
378				o.bgColor = style.getColorORTransparent(val);
379				
380				if(selectEL == 'el-menu') { 
381					style.setCssProperty(j,selector,key,o.bgColor);
382				}
383				break;
384			case 'background-position': 	
385				o.bgPosition = (!o.bgPosition || o.bgPosition=='0% 0%') ? 'center center' : o.bgPosition;
386				break;
387			case 'background-image': 		
388				//o.bgUrl = 'url(' + p + '/1200/' + val + ')';
389				// val = encodeURIComponent(val);
390				var src = getServeImage(val,'0',path);
391				o.bgUrl = (val!='none') ? "url('" + src + "')" : val;
392				if(selectEL=='el-menu') {
393					var version = ($('.'+selectEL).find('header').hasClass('navbar-simple')) ? 'simple' : 'default';
394					if($('.'+selectEL).find('.cl-nav').length > 0) version = 'clnav';
395					else if($('.'+selectEL).find('.cl-menu-option').length > 0) version = 'moption';
396					if(version == 'moption') {
397						var moptionEL = $('.'+selectEL).find('.cl-menu-option');
398						if(moptionEL.length > 0) {
399						} else {							
400							var init_bgcolor = j["children"][selector]["attributes"]['background-color'],
401								root_bgcolor = (val == 'none') ? init_bgcolor : 'transparent';
402							j["children"][selector]["attributes"]['--menu-bgcolor'] = root_bgcolor;
403							j["children"][selector]["attributes"]['--menu-bgcolor-hover'] = root_bgcolor;
404							j["children"][selector]["attributes"]['--menu-bgcolor-active'] = root_bgcolor;
405						}
406					} else {
407						var selector_set = getMenuCssSelector(key,selector,version);
408
409						if(!$.isEmptyObject(selector_set.delete)) {
410							$.each(selector_set.delete, function(k,v) {
411								style.deleteCssProperty(j,v);
412							});
413						}
414						
415						if(!$.isEmptyObject(selector_set.set)) {
416							$.each(selector_set.set, function(k,v) {
417								if(k.match(/^media\_/gi) != null) return true;
418
419								v = (v.indexOf('↵') > -1) ? v.replace(/↵/gi, '\n') : v;
420								v = v.replace(/\, /gi,'\,');
421
422								if(typeof j["children"][v] == "undefined") initObject(j,v);
423								if(val == 'none') {
424									var bg_color = $('.bg-picker-el-menu').css('background-color');
425									j["children"][v]["attributes"]['background-color'] = bg_color;
426								} else {
427									if(k.match(/main/gi) !== null) j["children"][v]["attributes"]['background-color'] = 'transparent';
428								}
429							});
430						}
431					}
432
433				}
434				break;
435			// case 'background-attachment': 	
436			// 	o.bgAttachment = (o.bgSize == 'cover') ? 'fixed' : 'scroll';
437			// 	break;
438			case 'background-repeat':
439				o.bgRepeat = (!o.bgRepeat) ? 'no-repeat' : o.bgRepeat;
440				break;
441			case 'background-size': 		
442				o.bgSize = (!o.bgSize) ? 'cover' : o.bgSize;
443				break;
444			case 'color':	o.txColor = val; break;
445			case 'padding':
446				if(checkNavLineHeight) return false;
447				o.pdTop = this.selector.css('padding-top').replace('px','');
448				o.pdBottom = this.selector.css('padding-bottom').replace('px','');
449				o.pdLeft = this.selector.css('padding-left').replace('px','');
450				o.pdRight = this.selector.css('padding-right').replace('px','');
451				break;
452
453			default:
454				// root css
455				if(checkElRoot) {
456					var _key = key.replace(/\-/gi,'_');
457					o[_key] = val;
458
459					if($(this.selector).is('[data-gjs="fixedscroll4"]') && key == '--cursor-color') {
460						var gseq = this.selector.attr('data-id'),
461							gcss = { 'fixedscroll4' : $('#gCSS_fixedscroll4_'+gseq).outerHTML() };
462						$('#gCSS_fixedscroll4_'+gseq).replaceWith(gcss.fixedscroll4.replace(/ fill\=\'\%23[a-zA-Z0-9]*\' /gi,' fill=\'' + val.replace(/^\#/,'\%23') + '\' ')
463																					.replace(/ stroke\=\'\%23[a-zA-Z0-9]*\' /gi,' stroke=\'' + val.replace(/^\#/,'\%23') + '\' '));
464					}
465				}
466				break;
467		}
468
469		if(checkNavLineHeight || checkLogoPadding) {
470			// MENU NAV > line-hieght or MENU(sidebar) LOGO > padding
471			if(	typeof j["children"]['@media (min-width: 769px)'] == "undefined" ) {
472				j["children"]['@media (min-width: 769px)'] = {};				
473				j["children"]['@media (min-width: 769px)']["children"] = {};				
474				j["children"]['@media (min-width: 769px)']["attributes"] = {};				
475			}
476			if(	typeof j["children"]['@media (min-width: 769px)']["children"][selector] == "undefined" ) {
477				j["children"]['@media (min-width: 769px)']["children"][selector] = {};
478				j["children"]['@media (min-width: 769px)']["children"][selector]["children"] = {};
479				j["children"]['@media (min-width: 769px)']["children"][selector]["attributes"] = {};
480			}
481
482			if(checkSidebar && checkNavLineHeight) {
483				if(typeof j["children"]['@media (min-width: 769px)']["children"]['.menu-'+SID+' ul.dropdown-menu > li > a'] == "undefined") {
484					j["children"]['@media (min-width: 769px)']["children"]['.menu-'+SID+' ul.dropdown-menu > li > a'] = {};
485					j["children"]['@media (min-width: 769px)']["children"]['.menu-'+SID+' ul.dropdown-menu > li > a']["children"] = {};
486					j["children"]['@media (min-width: 769px)']["children"]['.menu-'+SID+' ul.dropdown-menu > li > a']["attributes"] = {};
487				}
488
489				var nav_val = val.split(',');
490				key = 'padding';
491				val = nav_val[0];
492				j["children"]['@media (min-width: 769px)']["children"]['.menu-'+SID+' ul.dropdown-menu > li > a']["attributes"][key] = nav_val[1];
493                
494				if(typeof j["children"]['@media (min-width: 769px)']["children"]['.menu-'+SID+' ul.navbar-nav:not(#fixed-menu) > li.dropdown > ul.dropdown-menu'] != "undefined") {
495					var nav_pd = val.replace(/px/gi,'').split(' '),
496						sub_nav_mgTop = parseInt(parseInt(nav_pd[0]) * 0.4);
497					j["children"]['@media (min-width: 769px)']["children"]['.menu-'+SID+' ul.navbar-nav:not(#fixed-menu) > li.dropdown > ul.dropdown-menu']["attributes"]['margin-top'] = -sub_nav_mgTop + 'px';
498				}
499			}
500
501			j["children"]['@media (min-width: 769px)']["children"][selector]["attributes"][key] = val;
502
503		} else if(checkLogoLineHeight || checkFLogoLineHeight) {
504			// MENU LOGO > line-hieght
505			j["children"][selector]["attributes"]["line-height"] = val;
506
507		} else if(checkHeaderPadding) {
508			delete j["children"]['.menu-'+SID]["attributes"]["padding-left"];
509			delete j["children"]['.menu-'+SID]["attributes"]["padding-right"];
510			delete j["children"]['.menu-'+SID]["attributes"]["padding-top"];
511			delete j["children"]['.menu-'+SID]["attributes"]["padding-bottom"];
512
513			j["children"]['.menu-'+SID]["attributes"]["padding"] = o.pdTop + 'px ' + o.pdRight + 'px ' + o.pdBottom + 'px ' + o.pdLeft + 'px';
514		} else {
515
516			// BLOCK (default)
517			if(!checkRootPadding) {
518				delete j["children"][selector]["attributes"]["padding-top"];
519				delete j["children"][selector]["attributes"]["padding-bottom"];
520				delete j["children"][selector]["attributes"]["padding-left"];
521				delete j["children"][selector]["attributes"]["padding-right"];
522			}
523
524			if(!style.checkBlockRootCSS('block-bgcolor')) j["children"][selector]["attributes"]["background-color"] = o.bgColor;
525			j["children"][selector]["attributes"]["background-image"] = o.bgUrl;
526			// if($(selector).attr('data-parallax') == "true") {
527			// 	j["children"][selector]["attributes"]["background-attachment"] = 'fixed';
528			// }
529			/*
530			j["children"][selector]["attributes"]["background-repeat"] = (!j["children"][selector]["attributes"]["background-repeat"]) ? "no-repeat" : this.selector.css('background-repeat');
531			j["children"][selector]["attributes"]["background-position"] = (!j["children"][selector]["attributes"]["background-position"]) ? "center center" : this.selector.css('background-position');
532			j["children"][selector]["attributes"]["background-size"] = (!j["children"][selector]["attributes"]["background-size"]) ? "cover" : this.selector.css('background-size');
533			*/
534			j["children"][selector]["attributes"]["background-repeat"] = o.bgRepeat;
535			j["children"][selector]["attributes"]["background-position"] = o.bgPosition;
536			j["children"][selector]["attributes"]["background-size"] = o.bgSize;
537			// j["children"][selector]["attributes"]["background-attachment"] = o.bgAttachment;
538
539			if(!checkGalleryProject) {
540				if(!checkRootPadding) j["children"][selector]["attributes"]["padding"] = o.pdTop+'px ' + o.pdRight+'px ' + o.pdBottom+'px ' + o.pdLeft+'px';
541				if(/\s/.test(selector)) {
542					if(o.txColor) j["children"][selector]["attributes"]["color"] = o.txColor;
543					j["children"][selector]["attributes"]["font-family"] = (typeof this.selector.css('font-family')!='undefined' && this.selector.css('font-family')) ? this.selector.css('font-family') : '';
544					j["children"][selector]["attributes"]["font-size"] = (typeof this.selector.css('font-size')!='undefined' && this.selector.css('font-size')) ? this.selector.css('font-size') : '';
545				}
546			}
547
548			if(checkElRoot) {
549				var _key = key.replace(/\-/gi,'_'),
550					_val = o[_key];
551				j["children"][selector]["attributes"][key] = _val;
552			}
553
554		}
555		
556		return j;
557	}
558
559
560	var getMenuCssSelector = function(key, selector, version) {
561		if($.inArray(version, ['moption','clnav']) > -1) return {'delete': {}, 'set': {}};
562
563		var str = '',
564			user = '.menu-' + SID,
565			simple_user = (selector.indexOf('menu-temp-')>-1) ? '.menu-temp-' + SID : user,
566			default_selector = {
567				"color" : { 
568					"default" : user + " ul.navbar-nav > li > a,\n" 
569								+ user + " ul.navbar-nav > li > a:active,\n"
570								+ user + " ul.navbar-nav > li > a:focus,\n"
571								+ user + " .dropdown-menu > li > a,\n"
572								+ user + " .dropdown-menu > li > a:active,\n"
573								+ user + " .dropdown-menu > li > a:focus",
574					"hover"	  : user + ".navbar-default .navbar-nav > li > a:hover,\n"
575								+ user + ".navbar-default .navbar-nav > li:hover > a,\n"
576								+ user + ".navbar-default .navbar-nav > li:hover > a:focus,\n" 
577								+ user + ".navbar-default .navbar-nav > li:hover > a:active,\n" 
578								+ user + ".navbar-default .navbar-nav > li.active > a,\n"
579								+ user + ".navbar-default .navbar-nav > li.active > a:focus,\n"
580								+ user + ".navbar-default .navbar-nav > li.active > a:active,\n"
581								+ user + ".navbar-default .navbar-nav > li.active > a:hover,\n"
582								+ user + ".navbar-default .dropdown-menu > li > a:hover,\n"
583								+ user + ".navbar-default .dropdown-menu > li:hover > a,\n"
584								+ user + ".navbar-default .dropdown-menu > li:hover > a:focus,\n" 
585								+ user + ".navbar-default .dropdown-menu > li:hover > a:active,\n" 
586								+ user + ".navbar-default .dropdown-menu > li.active > a,\n"
587								+ user + ".navbar-default .dropdown-menu > li.active > a:focus,\n"
588								+ user + ".navbar-default .dropdown-menu > li.active > a:active,\n"
589								+ user + ".navbar-default .dropdown-menu > li.active > a:hover",
590				},
591				"background-color" : {
592					"default" : user + " .navbar-nav#tpl-menu .dropdown .dropdown-menu,\n"
593								+ user + " .navbar-nav#tpl-menu",
594					"init"	  : user + " ul.navbar-nav > li > a,\n" 
595								+ user + " ul.navbar-nav > li > a:active,\n"
596								+ user + " ul.navbar-nav > li > a:focus,\n"
597								+ user + " .dropdown-menu > li > a,\n"
598								+ user + " .dropdown-menu > li > a:active,\n"
599								+ user + " .dropdown-menu > li > a:focus,\n"
600								+ user + ".navbar-default .navbar-nav > li > a,\n"
601								+ user + ".navbar-default .navbar-nav > li > a:focus,\n"
602								+ user + ".navbar-default .navbar-nav > li > a:hover,\n"
603								+ user + ".navbar-default .navbar-nav > li:hover > a,\n"
604								+ user + ".navbar-default .navbar-nav > li:hover > a:focus,\n" 
605								+ user + ".navbar-default .navbar-nav > li:hover > a:active,\n" 
606								+ user + ".navbar-default .navbar-nav > li.active > a,\n"
607								+ user + ".navbar-default .navbar-nav > li.active > a:focus,\n"
608								+ user + ".navbar-default .navbar-nav > li.active > a:active,\n"
609								+ user + ".navbar-default .navbar-nav > li.active > a:hover,\n"
610								+ user + ".navbar-default .dropdown-menu > li > a:hover,\n"
611								+ user + ".navbar-default .dropdown-menu > li:hover > a,\n"
612								+ user + ".navbar-default .dropdown-menu > li:hover > a:focus,\n" 
613								+ user + ".navbar-default .dropdown-menu > li:hover > a:active,\n" 
614								+ user + ".navbar-default .dropdown-menu > li.active > a,\n"
615								+ user + ".navbar-default .dropdown-menu > li.active > a:focus,\n"
616								+ user + ".navbar-default .dropdown-menu > li.active > a:active,\n"
617								+ user + ".navbar-default .dropdown-menu > li.active > a:hover",
618				},
619				"background-color-all" : {
620					"default" : user + " .navbar-nav#tpl-menu .dropdown .dropdown-menu,\n"
621								+ user + " .navbar-nav#tpl-menu",
622				},
623				"background-image" : {
624					"default" : user + " .navbar-nav#tpl-menu .dropdown .dropdown-menu",
625				},
626				"border-color" : {
627					"default" : "",
628				},
629				"font-size" : {
630					"default" : user + " ul.navbar-nav > li > a,\n" 
631						  		+ user + " ul.navbar-nav > li > a:focus,\n"
632								+ user + " .dropdown-menu > li > a,\n"
633								+ user + " .dropdown-menu > li > a:focus",
634				},
635				"font-family" : {
636					"default" : user + " ul.navbar-nav > li > a,\n"
637								+ user + " .dropdown-menu > li > a",
638				},
639
640			},
641			simple_selector = {
642				"color" : {
643					"main_default"	: simple_user   + " ul.navbar-nav > li > a,\n"
644									  + simple_user + " ul.navbar-nav > li > a:focus",
645					"main_hover"	: simple_user   + " ul.navbar-nav > li > a:hover,\n"
646									  + simple_user + " ul.navbar-nav > li:hover > a",
647					"main_active"	: simple_user   + " ul.navbar-nav > li.active > a,\n"
648									  + simple_user + " ul.navbar-nav > li.active > a:focus,\n"
649									  + simple_user + " ul.navbar-nav > li.active > a:hover",
650					"sub_default"	: simple_user   + " ul.dropdown-menu > li > a,\n"
651									  + simple_user + " ul.dropdown-menu > li > a:focus",
652					"sub_hover"		: simple_user   + " ul.dropdown-menu > li > a:hover,\n"
653									  + simple_user + " ul.dropdown-menu > li:hover > a",
654					"sub_active"	: simple_user   + " ul.dropdown-menu > li.active > a,\n"
655									  + simple_user + " ul.dropdown-menu > li.active > a:focus,\n"
656									  + simple_user + " ul.dropdown-menu > li.active > a:hover",
657				},
658				"background-color" : {
659					"main_default"	: simple_user   + " ul.navbar-nav > li > a,\n"
660									  + simple_user + " ul.navbar-nav > li > a:focus",
661					"main_hover"	: simple_user   + " ul.navbar-nav > li > a:hover,\n"
662									  + simple_user + " ul.navbar-nav > li:hover > a",
663					"main_active"	: simple_user   + " ul.navbar-nav > li.active > a,\n"
664									  + simple_user + " ul.navbar-nav > li.active > a:focus,\n"
665									  + simple_user + " ul.navbar-nav > li.active > a:hover",
666					"sub_default"	: simple_user   + " ul.dropdown-menu > li > a,\n"
667									  + simple_user + " ul.dropdown-menu > li > a:focus",
668					"sub_hover"		: simple_user   + " ul.dropdown-menu > li > a:hover,\n"
669									  + simple_user + " ul.dropdown-menu > li:hover > a",
670					"sub_active"	: simple_user   + " ul.dropdown-menu > li.active > a,\n"
671									  + simple_user + " ul.dropdown-menu > li.active > a:focus,\n"
672									  + simple_user + " ul.dropdown-menu > li.active > a:hover",
673				},
674				"background-color-all" : {
675					"menublock"		: simple_user,
676					"main_default"	: simple_user   + " ul.navbar-nav > li > a,\n"
677									  + simple_user + " ul.navbar-nav > li > a:focus",
678					"main_hover"	: simple_user   + " ul.navbar-nav > li > a:hover,
678\n"
679									  + simple_user + " ul.navbar-nav > li:hover > a",
680					"main_active"	: simple_user   + " ul.navbar-nav > li.active > a,\n"
681									  + simple_user + " ul.navbar-nav > li.active > a:focus,\n"
682									  + simple_user + " ul.navbar-nav > li.active > a:hover",
683					"sub_default"	: simple_user   + " ul.dropdown-menu > li > a,\n"
684									  + simple_user + " ul.dropdown-menu > li > a:focus",
685					"sub_hover"		: simple_user   + " ul.dropdown-menu > li > a:hover,\n"
686									  + simple_user + " ul.dropdown-menu > li:hover > a",
687					"sub_active"	: simple_user   + " ul.dropdown-menu > li.active > a,\n"
688									  + simple_user + " ul.dropdown-menu > li.active > a:focus,\n"
689									  + simple_user + " ul.dropdown-menu > li.active > a:hover",
690				},
691				"background-image" : {
692					"main_default"	: simple_user   + " ul.navbar-nav > li > a,\n"
693									  + simple_user + " ul.navbar-nav > li > a:focus",
694					"main_hover"	: simple_user   + " ul.navbar-nav > li > a:hover,\n"
695									  + simple_user + " ul.navbar-nav > li:hover > a",
696					"main_active"	: simple_user   + " ul.navbar-nav > li.active > a,\n"
697									  + simple_user + " ul.navbar-nav > li.active > a:focus,\n"
698									  + simple_user + " ul.navbar-nav > li.active > a:hover",
699					"sub_default"	: simple_user   + " ul.dropdown-menu > li > a,\n"
700									  + simple_user + " ul.dropdown-menu > li > a:focus",
701					"sub_hover"		: simple_user   + " ul.dropdown-menu > li > a:hover,\n"
702									  + simple_user + " ul.dropdown-menu > li:hover > a",
703					"sub_active"	: simple_user   + " ul.dropdown-menu > li.active > a,\n"
704									  + simple_user + " ul.dropdown-menu > li.active > a:focus,\n"
705									  + simple_user + " ul.dropdown-menu > li.active > a:hover",
706				},
707				"border-color" : {
708					"main_default"	: " ",
709					"main_hover"	: " ",
710					"main_active"	: " ",
711					"sub_default"	: " ",
712					"sub_hover"		: " ",
713					"sub_active"	: " ",
714				},
715				"font-size" : {
716					"main_default" : user + " ul.navbar-nav > li > a" ,
717					"sub_default"  : user + " ul.dropdown-menu > li > a",
718				},
719				"font-family" : {
720					"main_default" : user + " ul.navbar-nav > li > a" ,
721					"sub_default"  : user + " ul.dropdown-menu > li > a",
722				},
723				"logo-color"  : {
724					"color"				: simple_user + " #mini-home",
725				},
726			},
727			fheader_selector = {
728				"color" : {
729					"main_default"	: simple_user   + " ul.navbar-nav > li > a,\n"
730									  + simple_user + " ul.navbar-nav > li > a:focus",
731					"main_hover"	: simple_user   + " ul.navbar-nav:not(#fixed-menu) > li > a:hover,\n"
732									  + simple_user + " ul.navbar-nav:not(#fixed-menu) > li:hover > a",
733					"main_active"	: simple_user   + " ul.navbar-nav > li.active > a,\n"
734									  + simple_user + " ul.navbar-nav > li.active > a:focus,\n"
735									  + simple_user + " ul.navbar-nav > li.active > a:hover",
736					"sub_default"	: simple_user   + " ul.dropdown-menu > li > a,\n"
737									  + simple_user + " ul.dropdown-menu > li > a:focus",
738					"sub_hover"		: simple_user   + " ul.dropdown-menu > li > a:hover,\n"
739									  + simple_user + " ul.dropdown-menu > li:hover > a",
740					"sub_active"	: simple_user   + " ul.dropdown-menu > li.active > a,\n"
741									  + simple_user + " ul.dropdown-menu > li.active > a:focus,\n"
742									  + simple_user + " ul.dropdown-menu > li.active > a:hover",
743				},
744				"background-color" : {
745					"main_default"	: simple_user   + " ul.navbar-nav > li > a,\n"
746									  + simple_user + " ul.navbar-nav > li > a:focus",
747					"main_hover"	: simple_user   + " ul.navbar-nav:not(#fixed-menu) > li > a:hover,\n"
748									  + simple_user + " ul.navbar-nav:not(#fixed-menu) > li:hover > a",
749					"main_active"	: simple_user   + " ul.navbar-nav > li.active > a,\n"
750									  + simple_user + " ul.navbar-nav > li.active > a:focus,\n"
751									  + simple_user + " ul.navbar-nav > li.active > a:hover",
752					"sub_default"	: simple_user   + " ul.dropdown-menu > li > a,\n"
753									  + simple_user + " ul.dropdown-menu > li > a:focus",
754					"sub_hover"		: simple_user   + " ul.dropdown-menu > li > a:hover,\n"
755									  + simple_user + " ul.dropdown-menu > li:hover > a",
756					"sub_active"	: simple_user   + " ul.dropdown-menu > li.active > a,\n"
757									  + simple_user + " ul.dropdown-menu > li.active > a:focus,\n"
758									  + simple_user + " ul.dropdown-menu > li.active > a:hover",
759				},
760				"background-color-all" : {
761					"menublock"		: simple_user,
762					"main_default"	: simple_user   + " ul.navbar-nav > li > a,\n"
763									  + simple_user + " ul.navbar-nav > li > a:focus",
764					"main_hover"	: simple_user   + " ul.navbar-nav:not(#fixed-menu) > li > a:hover,\n"
765									  + simple_user + " ul.navbar-nav:not(#fixed-menu) > li:hover > a",
766					"main_active"	: simple_user   + " ul.navbar-nav > li.active > a,\n"
767									  + simple_user + " ul.navbar-nav > li.active > a:focus,\n"
768									  + simple_user + " ul.navbar-nav > li.active > a:hover",
769					"sub_default"	: simple_user   + " ul.dropdown-menu > li > a,\n"
770									  + simple_user + " ul.dropdown-menu > li > a:focus",
771					"sub_hover"		: simple_user   + " ul.dropdown-menu > li > a:hover,\n"
772									  + simple_user + " ul.dropdown-menu > li:hover > a",
773					"sub_active"	: simple_user   + " ul.dropdown-menu > li.active > a,\n"
774									  + simple_user + " ul.dropdown-menu > li.active > a:focus,\n"
775									  + simple_user + " ul.dropdown-menu > li.active > a:hover",
776				},
777				"background-image" : {
778					"main_default"	: simple_user   + " ul.navbar-nav > li > a,\n"
779									  + simple_user + " ul.navbar-nav > li > a:focus",
780					"main_hover"	: simple_user   + " ul.navbar-nav:not(#fixed-menu) > li > a:hover,\n"
781									  + simple_user + " ul.navbar-nav:not(#fixed-menu) > li:hover > a",
782					"main_active"	: simple_user   + " ul.navbar-nav > li.active > a,\n"
783									  + simple_user + " ul.navbar-nav > li.active > a:focus,\n"
784									  + simple_user + " ul.navbar-nav > li.active > a:hover",
785					"sub_default"	: simple_user   + " ul.dropdown-menu > li > a,\n"
786									  + simple_user + " ul.dropdown-menu > li > a:focus",
787					"sub_hover"		: simple_user   + " ul.dropdown-menu > li > a:hover,\n"
788									  + simple_user + " ul.dropdown-menu > li:hover > a",
789					"sub_active"	: simple_user   + " ul.dropdown-menu > li.active > a,\n"
790									  + simple_user + " ul.dropdown-menu > li.active > a:focus,\n"
791									  + simple_user + " ul.dropdown-menu > li.active > a:hover",
792				},
793				"border-color" : {
794					"main_default"	: " ",
795					"main_hover"	: " ",
796					"main_active"	: " ",
797					"sub_default"	: " ",
798					"sub_hover"		: " ",
799					"sub_active"	: " ",
800				},
801				"font-size" : {
802					"main_default" : user + " ul.navbar-nav > li > a" ,
803					"sub_default"  : user + " ul.dropdown-menu > li > a",
804				},
805				"font-family" : {
806					"main_default" : user + " ul.navbar-nav > li > a" ,
807					"sub_default"  : user + " ul.dropdown-menu > li > a",
808				},
809				"logo-color"  : {
810					"color"				: simple_user + " #mini-home",
811				},
812			};
813
814
815		if(version == 'mnormalsidebar') {
816			var tmp_del = (typeof default_selector[key] != 'undefined') ? default_selector[key] : {};
817
818			switch(key) {
819				case 'background-color':
820					tmp_del = Object.assign(tmp_del, fheader_selector[key]);
821					break;
822
823				case '--menu-color':
824					if(typeof tmp_del['media_max_768'] == 'undefined') tmp_del['media_max_768'] = [];
825					var tmp_add = ['.el-menu .siteCART.micon', '#mobile-nav.mobile-design-clear .mobilenav_top a', '#mobile-nav.mobile-design-clear .mobilenav_top svg','#mobile-nav.mobile-design-clear #tpl-menu li.menu-has-children i,					#mobile-nav.mobile-design-clear #tpl-menu li.menu-has-children i:focus','#mobile-nav.mobile-design-clear #tpl-menu li.menu-has-children.active i'],
826						tmp_sum = tmp_del['media_max_768'].concat(tmp_add);
827					tmp_del['media_max_768'] = tmp_sum.filter((s, v) => tmp_sum.indexOf(s) === v);
828					break;
829
830				case '--menu-fname':
831				case '--sub-menu-fname':
832					if(typeof tmp_del['media_max_768'] == 'undefined') tmp_del['media_max_768'] = [];
833					var tmp_add = ['#mobile-nav','#mobile-nav'],
834						tmp_sum = tmp_del['media_max_768'].concat(tmp_add);
835					tmp_del['media_max_768'] = tmp_sum.filter((s, v) => tmp_sum.indexOf(s) === v);
836					break;
837
838				default:
839					break;
840			}
841			
842			str = {'delete': tmp_del, 'set': {}};
843		} else if(version == 'fheader') {
844			str = { "set" : fheader_selector[key] } ;
845		} else if(version == 'simple') {
846			str = { "delete" : default_selector[key], "set" : simple_selector[key] } ;
847		} else {
848			str = { "delete" : {}, "set" : default_selector[key] };
849		}
850
851		return str;
852	}
853
854	var setFlogoCssSelector = function(key, selector, version) {		
855		var str = '',
856			user = '.footer-' + SID,
857			fheader_selector = {
858				'logo-color'  : {
859					'color'				: user + ' #mini-home-footer',
860				},
861			};
862
863		if(version == 'footerlogo') {
864			str = { 'set' : fheader_selector[key] } ;
865		} 
866
867		return str;
868	}
869
870
871	this.setCssProperty = function(j,selector,key,val) {
872		selector = (selector.indexOf('↵') > -1) ? selector.replace(/↵/gi, '\n') : selector;
873		selector = selector.replace(/\, /gi,'\,');
874		if(selector == '.dsgn-body') selectEL = '';
875
876		if(typeof j['children'][selector] == 'undefined') j = initObject(j,selector);
877		var isfooterAttach = false;
878		if(selectEL == 'el-footer') {
879			isfooterAttach = typeof $('.'+selectEL+' .footer-brand img').attr('data-footer-attach') == 'undefined' ? false : $('.'+selectEL+' .footer-brand img').attr('data-footer-attach');
880		}
881
882		if(selectEL == 'el-menu') {	
883            var selectorKey = (key == 'color' && selector == '.menu-'+SID+' #tpl-logo-text') ? 'logo-color' : key,
884				version = ($('.'+selectEL).find('header').hasClass('navbar-simple')) ? 'simple' : 'default';
885			if($('.'+selectEL).find('.cl-nav').length > 0) version = 'clnav';
886			else if($('.'+selectEL).find('[class*=cl-menu-]').length > 0) version = ($('.'+selectEL).find('.cl-menu-option').length > 0) ? 'moption' : 'mnormalsidebar';
887			else if($('.'+selectEL).find('header').hasClass('navbar-fheader')) version = 'fheader';
888
889			var selector_set = getMenuCssSelector(key,selector,version);
890			if(!$.isEmptyObject(selector_set.delete)) {
891				$.each(selector_set.delete, function(k,v) {
892					if(k.match(/^media\_/gi) != null) style.deleteMediaCssProperty(j,v,k);
893					else style.deleteCssProperty(j,v);
894				});
895			}
896
897			if(key == 'background-color-all') key = 'background-color'; //menu block - all background color change
898			if(!$.isEmptyObject(selector_set.set)) {
899				if( selector == '.menu-'+SID+' ul#tpl-menu > li > a' || selector == '.menu-' + SID || selector == '.menu-temp-' + SID ) {
900					if(selector == '.menu-'+SID+' ul#tpl-menu > li > a') style.deleteCssProperty(j,selector);
901					
902					var color = (key == 'color') ? this.setStyle(j,hex2rgb(val),'el-menu') : [];
903				
904					$.each(selector_set.set, function(k,v) {
905						if(k.match(/^media\_/gi) != null) return true;
906
907						v = (v.indexOf('↵') > -1) ? v.replace(/↵/gi, '\n') : v;
908						v = v.replace(/\, /gi,'\,');
909
910						var value = (color.length== 0) ? val : ((k.match(/default/gi) !== null) ? color[0] : color[1]);
911						if(typeof j['children'][v] == 'undefined') initObject(j,v);
912
913						if( key == 'background-color' && value.indexOf('transparent') == -1 && value.indexOf('rgba(0,0,0,0)') == -1 ) {
914							var menu_bg_img = (typeof $('.'+selectEL).find('header').css('background-image') != 'undefined') ? $('.'+selectEL).find('header').css('background-image') : '';
915							if(menu_bg_img && menu_bg_img!='none' && menu_bg_img!='initial' && menu_bg_img!='inherit') {
916								// [MENU BLOCK] used Background-Image, ==> main menu bg : transparent, sub menu bg : color
917								if(k.match(/main/gi) !== null ) value ='transparent';
918							}
919						}
920						
921						if( key == 'font-size' && k.match(/sub/gi) !== null ) { //Sub Menu Font size 
922							var f_size = parseInt(value.replace('px',''));
923							value = (f_size - 2 ) + 'px';
924						}
925
926						if( key == 'color' && (version == 'simple' || version == 'fheader') && k == 'main_default' ) { //Menu text color Change ==> Mobile Toggle bar color
927							var block_selector = (selector.indexOf('menu-temp-')>-1) ? '.menu-temp-' + SID : '.menu-' + SID,
928								toggle_bar_selector = block_selector + ' .navbar-toggle .icon-bar';
929
930							if(typeof j['children'][toggle_bar_selector] == 'undefined') initObject(j,toggle_bar_selector);
931                            j['children'][toggle_bar_selector]['attributes']['background-color'] = value;
932						}
933
934						j['children'][v]['attributes'][key] = value;
935					});
936
937				} else {
938					
939                    if(selectorKey == 'logo-color') { //logo text color Change ==> Logo Top btn color width Change
940                        var menu_btn_set = getMenuCssSelector(selectorKey,selector,version);
941                        if(typeof menu_btn_set.set != 'undefined' && menu_btn_set.set) {
942	                        $.each(menu_btn_set.set, function(k,v) {
943								if(k.match(/^media\_/gi) != null) return true;
944
945	                            if(typeof j['children'][v] == 'undefined') initObject(j,v);
946	                            j['children'][v]['attributes'][k] = val;
947	                        });
948                        }
949                    }
950					j['children'][selector]['attributes'][key] = val;
951				}
952			} else {
953				j['children'][selector]['attributes'][key] = val;
954
955				if($.inArray(version, ['moption', 'mnormalsidebar']) > -1) {
956					switch(key) {
957						case 'background-color':
958							j['children'][selector]['attributes']['--block-bgcolor'] = val; 
959							j['children'][selector]['attributes']['--menu-bgcolor'] = val; 
960							j['children'][selector]['attributes']['--menu-bgcolor-hover'] = val; 
961							j['children'][selector]['attributes']['--menu-bgcolor-active'] = val; 
962							j['children'][selector]['attributes']['--sub-menu-bgcolor'] = val; 
963							j['children'][selector]['attributes']['--sub-menu-bgcolor-hover'] = val; 
964							j['children'][selector]['attributes']['--sub-menu-bgcolor-active'] = val; 
965							break;
966
967						case '--block-bgcolor': 
968							j['children'][selector]['attributes']['background-color'] = val; 
969							break;
970
971						default:
972							break;
973					}
974				}
975			}
976
977		} else if(selectEL=='el-footer' && isfooterAttach) {
978
979			var selectorKey = (key == 'color' && selector == '.footer-'+SID+' #tpl-logo-text-footer') ? 'logo-color' : key;
980
981			if(selectorKey == 'logo-color') { 
982                var footer_logo_set = setFlogoCssSelector(selectorKey, '' ,'footerlogo');
983                if(typeof footer_logo_set.set != 'undefined' && footer_logo_set.set) {
984                    $.each(footer_logo_set.set, function(k,v) {
985                        if(typeof j['children'][v] == 'undefined') initObject(j,v);
986                        j['children'][v]['attributes'][k] = val;
987                    });
988                }
989            }
990
991			j['children'][selector]['attributes'][key] = val;
992		} else {
993
994			if(selector.indexOf('.figure.like') > -1) {
995				if(selector.indexOf('.figure-like-cnt') == -1 && selector.indexOf('svg') == -1) {
996					style.deleteCssProperty(j, selector);
997					if(j['children'][selector+' > svg'] === undefined) initObject(j,selector+' > svg');
998					if(j['children'][selector + ' .figure-like-cnt'] === undefined) initObject(j,selector+' .figure-like-cnt');
999
1000					if(selector.indexOf('.active') > -1) {
1001						style.deleteCssProperty(j, selector+' > svg');
1002						if(j['children'][selector+' > svg,\n'+selector+' > svg > path:first-child'] === undefined) initObject(j,selector+' > svg,\n'+selector+' > svg > path:first-child');
1003						j['children'][selector+' > svg,\n'+selector+' > svg > path:first-child']['attributes']['fill'] = val;
1004					} else {
1005						j['children'][selector+' > svg']['attributes']['fill'] = val;
1006					}
1007
1008					j['children'][selector + ' .figure-like-cnt']['attributes']['color'] = val;
1009				} else {
1010					if(selector.indexOf('svg') > -1) {
1011						j['children'][selector]['attributes']['fill'] = val;
1012					}
1013					if(selector.indexOf('.figure-like-cnt') > -1) j['children'][selector]['attributes']['color'] = val;
1014				}
1015			} else {
1016				if(key == 'font-hover-color') { //forum block - list hover color change
1017					key = 'color';
1018					j['children'][selector]['attributes']['fill'] = val;
1019					val = val + ' !important';
1020				}
1021				if(key == 'fmap-point-color') {
1022					// if(j['children'][selector]) return true;
1023					j['children'][selector + ' .form-group .dropdown-toggle:focus,\n' + selector + ' .form-group input[type="text"]:focus']['attributes']['border-color'] = val;
1024					
1025					if(j['children'][selector + ' .btn.map-search-btn']['attributes']['fill'] != undefined) {
1026						j['children'][selector + ' .btn.map-search-btn']['attributes']['fill'] = val;
1027					} else {
1028						j['children'][selector + ' .btn.map-search-btn']['attributes']['background-color'] = val;
1029					}
1030
1031					if(j['children'][selector + ' .map-search-wrap']['attributes']['background-color'] != undefined && $(selector + ' .map-search-wrap').hasClass('fm-pcolor-background')) {
1032						let opacity = Coloris.getColorInfo(j['children'][selector + ' .map-search-wrap']['attributes']['background-color'], 'alpha');
1033						let bgColor = getRgbaValArray(val, opacity);
1034						j['children'][selector + ' .map-search-wrap']['attributes']['background-color'] = bgColor.rgba_txt;
1035					}
1036
1037					if(j['children'][selector + ' .map-item-list .item:hover'] != undefined) {
1038						if(j['children'][selector + ' .map-item-list .item:hover']['attributes']['border-color'] != undefined) {
1039							let opacity = Coloris.getColorInfo(j['children'][selector + ' .map-item-list .item:hover']['attributes']['border-color'], 'alpha');
1040							let borderHoverColor = getRgbaValArray(val, opacity);
1041
1042							key = 'border-color';
1043							j['children'][selector + ' .map-item-list .item:hover']['attributes']['border-color'] = borderHoverColor.rgba_txt;
1044						}
1045						if(j['children'][selector + ' .map-item-list .item:hover']['attributes']['background-color'] != undefined) {
1046							let opacity_selected = Coloris.getColorInfo(j['children'][selector + ' .map-item-list .item.selected']['attributes']['background-color'], 'alpha');
1047							let opacity_hover = Coloris.getColorInfo(j['children'][selector + ' .map-item-list .item:hover']['attributes']['background-color'], 'alpha');
1048							let bgSelectedColor = getRgbaValArray(val, opacity_selected);
1049							let bgHoverColor = getRgbaValArray(val, opacity_hover);
1050							key = 'background-color';
1051							val = bgSelectedColor.rgba_txt;
1052							j['children'][selector + ' .map-item-list .item:hover']['attributes']['background-color'] = bgHoverColor.rgba_txt;
1053						}
1054					}
1055					
1056					if(j['children'][selector + ' .map-item-list .item:hover .overlay'] != undefined && $(selector + ' .map-item-list .item .overlay').hasClass('fm-pcolor-background')) {
1057						let opacity_selected = Coloris.getColorInfo(j['children'][selector + ' .map-item-list .item.selected .overlay']['attributes']['background-color'], 'alpha');
1058						let opacity_hover = Coloris.getColorInfo(j['children'][selector + ' .map-item-list .item:hover .overlay']['attributes']['background-color'], 'alpha');
1059						let bgSelectedColor = getRgbaValArray(val, opacity_selected);
1060						let bgHoverColor = getRgbaValArray(val, opacity_hover);
1061						key = 'background-color';
1062						val = bgSelectedColor.rgba_txt;
1063						j['children'][selector + ' .map-item-list .item:hover .overlay']['attributes']['background-color'] = bgHoverColor.rgba_txt;
1064
1065						selector = selector + ' .map-item-list .item.selected .overlay';
1066					} else {
1067						key = 'border-color';
1068						selector = selector + ' .map-item-list .item.selected';
1069					}
1070					console.log('key', key);
1071				}
1072				if(selector.indexOf('p.figure') > -1 && key=='color'){
1073					j['children'][selector]['attributes']['fill'] = val;
1074				}
1075				if(selector.indexOf('.figure.like') > -1 && selector.indexOf('.active') == -1) {
1076					j['children'][selector+' > svg']['attributes']['fill'] = val;
1077					selector = selector + ' .figure-like-cnt';
1078				}
1079				if(selector.indexOf('.figure.like.active') > -1) {
1080					j['children'][selector+' > svg,\n'+selector+' > svg > path:first-child']['attributes']['fill'] = val;
1081					selector = selector + ' .figure-like-cnt';
1082				}
1083				// before version (forum faq icon)
1084				if(selector.indexOf('.tpl-forum-list-icon') > -1) { 
1085					if(j['children'][selector+' > svg'] === undefined) initObject(j,selector+' > svg');
1086					if(val.indexOf('px') > -1) {
1087						j['children'][selector+' > svg']['attributes']['width'] = val;
1088						j['children'][selector+' > svg']['attributes']['height'] = val;
1089					} else {
1090						if(key == 'color') j['children'][selector+' > svg']['attributes']['fill'] = val;
1091					}
1092				}
1093				if(selector.indexOf('.gallery-sort-nav') > -1 || selector.indexOf('.review-sort-nav') > -1) {
1094					if(key == 'color') j['children'][selector]['attributes']['fill'] = val;
1095				}
1096
1097				j['children'][selector]['attributes'][key] = val;
1098				//Media Query Css도 변경
1099				$.each(j['children'],function(i,v){
1100					if(i.indexOf('@media') > -1 && typeof j['children'][i]['children'][selector] != 'undefined') {
1101						if(typeof j['children'][i]['children'][selector]['attributes'][key] != 'undefined') j['children'][i]['children'][selector]['attributes'][key] = val;
1102					}
1103				});
1104			}
1105
1106
1107		}
1108	
1109		return j;
1110	}
1111	
1112	this.getCssProperty = function(j,selector,key) {
1113		if(typeof j['children'][selector] == 'undefined') j = initObject(j,selector);
1114		if(typeof j['children'][selector]['attributes'][key] == 'undefined') {
1115			var tmp_v = 'initial';
1116			if(key == 'border-color') {
1117				var colorRegex = Coloris.getColorRegex(),
1118					tmp_color = (typeof j['children'][selector]['attributes']['border'] != 'undefined') ? j['children'][selector]['attributes']['border'] : '',
1119					tmp_matches = tmp_color.match(colorRegex);
1120
1121				if(tmp_matches != null) tmp_v = tmp_matches.pop();
1122			}
1123
1124			j['children'][selector]['attributes'][key] = tmp_v;
1125		}
1126		return j['children'][selector]['attributes'][key];
1127	}
1128
1129	this.deleteMediaCssProperty = function(j,selector,media,key) {
1130		if(typeof key == 'undefined') key = '';
1131
1132		var tmp = media.split('_'),
1133			tmp_media_minmax = tmp[1],
1134			tmp_media_size = tmp[2],
1135			tmp_media_size_selector = [];
1136
1137		switch(tmp_media_size) {
1138			case '767':
1139				tmp_media_size_selector.push('@media (max-width: 767px)');
1140				tmp_media_size_selector.push('@media only screen and (max-width:767px)');
1141				break;
1142			case '768':
1143				tmp_media_size_selector.push('@media (max-width: 768px)');
1144				tmp_media_size_selector.push('@media only screen and (max-width:768px)');
1145				break;
1146			case '991':
1147				tmp_media_size_selector.push('@media (max-width: 991px)');
1148				tmp_media_size_selector.push('@media only screen and (max-width:991px)');
1149				break;
1150			default:
1151				break;
1152		}
1153
1154		$.each(tmp_media_size_selector, function(tmp_idx, tmp_selector) {
1155			if(	typeof j['children'][tmp_selector] != 'undefined' && 
1156				typeof j['children'][tmp_selector]['children'] != 'undefined'
1157			) {
1158
1159				$.each(selector, function(tmp_idx2, tmp_selector2) {
1160					if(typeof j['children'][tmp_selector]['children'][tmp_selector2] != 'undefined') {
1161						if(key == '') {
1162							delete j['children'][tmp_selector]['children'][tmp_selector2];
1163						} else {                            
1164							if(typeof j['children'][tmp_selector]['children'][tmp_selector2]['attributes'] != 'undefined' && typeof j['children'][tmp_selector]['children'][tmp_selector2]['attributes'][key] != 'undefined') {
1165								delete j['children'][tmp_selector]['children'][tmp_selector2]['attributes'][key];
1166							}
1167							if(JSON.stringify(j['children'][tmp_selector]['children'][tmp_selector2]['attributes']) === '{}') delete j['children'][tmp_selector]['children'][tmp_selector2];
1168						}
1169					}
1170				});
1171			}
1172		});
1173		return j;
1174	}
1175	this.deleteCssProperty = function(j,selector,key) {
1176		if(typeof key == 'undefined') key = [];
1177		else if(typeof key == 'string') key = key.split(',');
1178
1179		if(typeof j['children'][selector] == 'undefined') j = initObject(j,selector);
1180
1181		if(key.length == 0) {
1182			delete j['children'][selector];
1183		} else {
1184			$.each(key, function(i,k) {
1185				if(typeof j['children'][selector]['attributes'] != 'undefined' && typeof j['children'][selector]['attributes'][k] != 'undefined') {
1186					delete j['children'][selector]['attributes'][k];
1187				}
1188			});
1189			if(JSON.stringify(j['children'][selector]['attributes']) === '{}') delete j['children'][selector];
1190		}
1191		return j;
1192	}
1193	this.deleteRootCssProperty = function(j,selector,key) {
1194		if(typeof key == 'undefined') key = [];
1195		else if(typeof key == 'string') key = key.split(',');
1196
1197		if(typeof j['children'][selector] === 'undefined') j = initObject(j,selector);
1198
1199		const $targetEle = document.querySelectorAll(selector);
1200
1201		if(key.length == 0) {
1202			delete j['children'][selector];
1203		} else {
1204			$.each(key, function(i,k) {
1205				var checkRootkeyAll = (/-$/.test(k)) ? true : false;
1206				var regex = new RegExp('^' + k);
1207
1208				if(typeof j['children'][selector]['attributes'] != 'undefined') {
1209					if(checkRootkeyAll) {
1210						$.each(j['children'][selector]['attributes'], function(root_key,root_val) {
1211							if(regex.test(root_key)) delete j['children'][selector]['attributes'][root_key];
1212							$targetEle.forEach(el => el.style.removeProperty(root_key));
1213						});
1214					} else if(typeof j['children'][selector]['attributes'][k] != 'undefined') {
1215						delete j['children'][selector]['attributes'][k];
1216							$targetEle.forEach(el => el.style.removeProperty(k));
1217					}
1218				}
1219			});
1220			if(JSON.stringify(j['children'][selector]['attributes']) === '{}') delete j['children'][selector];
1221		}
1222		return j;
1223	}
1224	this.setRootCssProperty = function (j, selector, attributes, setProperty) {
1225		if (typeof attributes === 'undefined' || attributes === null) return j;
1226		if (typeof setProperty === 'undefined') setProperty = false;
1227
1228		if (typeof j['children'][selector] === 'undefined') {
1229			j = initObject(j, selector);
1230		}
1231
1232		if (typeof j['children'][selector]['attributes'] === 'undefined') {
1233			j['children'][selector]['attributes'] = {};
1234		}
1235
1236		const $targetEle = document.querySelectorAll(selector);
1237
1238		$.each(attributes, function (k, v) {
1239			j['children'][selector]['attributes'][k] = v;
1240
1241			if(setProperty) {
1242				$targetEle.forEach(el => {
1243					el.style.setProperty(k, v);
1244				});
1245			}
1246		});
1247
1248		return j;
1249	}
1250
1251
1252
1253	this.replaceCss = function(j,change) {
1254		if(typeof j == 'undefined') return {};
1255		if(typeof change == 'undefined') return j;
1256
1257		var return_type = typeof j,
1258			tmp_j = (return_type == 'object') ? CSSJSON.toCSS(j) : j;
1259
1260		function repalceEscapeRegExp(str) {
1261			return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
1262		}
1263
1264		$.each(change, function(i,tmp_o) {
1265			if(typeof tmp_o.before === 'undefined' 
1266				|| typeof tmp_o.after === 'undefined'
1267			) {
1268				return true;
1269			}
1270
1271			var tmp_escaped_before = repalceEscapeRegExp(tmp_o.before),
1272				tmp_regex = new RegExp(tmp_escaped_before, 'g');
1273			tmp_j = tmp_j.replace(tmp_regex, tmp_o.after);
1274		})
1275
1276		return (return_type == 'string') ? tmp_j : CSSJSON.toJSON(htmlspecialchars_decode(tmp_j));
1277	}
1278
1279	this.find = function(j,selector) {
1280		for(var key in j.children) {
1281			// if(key.indexOf(selector)>-1) return j.children[key].attributes['background-image'].trim().replace(/^url\(['"]?/,'').replace(/['"]?\)$/,'');
1282			if(key.indexOf(selector)>-1) {
1283				var r = (typeof j.children[key].attributes['background-image'] != 'undefined' && j.children[key].attributes['background-image']) ? j.children[key].attributes['background-image'].trim() : '';
1284				if(r.length > 0 && r.match(/url\((.*?)\)/) !== null) r =  r.match(/url\((.*?)\)/)[1].replace(/('|")/g,'');
1285				
1286				return (r) ? r : '';
1287			}
1288		}
1289	}
1290
1291	this.setTargetBackground = function(j,selector,val,p) {
1292		val = encodeURIComponent(val);
1293		for(var key in j.children) {
1294			if(key.indexOf(selector)>-1) {
1295				val = encodeURIComponent(val);
1296				j.children[key].attributes['background-image'] = "url(" + p + '/' + val + ")";
1297			}
1298		}
1299		return j;
1300	}
1301
1302	this.getHex = function(rgb) {
1303		if(rgb == 'transparent') return rgb;
1304
1305		var rgb = this.getRGBobject(rgb),
1306	    	r = parseInt(rgb.r, 10).toString(16),
1307        	g = parseInt(rgb.g, 10).toString(16),
1308        	b = parseInt(rgb.b, 10).toString(16);
1309
1310    	return '#'+ (
1311		        (r.length == 1 ? '0'+ r : r) +
1312		        (g.length == 1 ? '0'+ g : g) +
1313		        (b.length == 1 ? '0'+ b : b)
1314	        );
1315	}
1316
1317	this.getRGBobject = function(rgb) {
1318		if(typeof rgb == 'undefined') rgb = 'rgb(255,255,255)';
1319		rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
1320		var r = [];
1321
1322		r.r = rgb[1], r.g = rgb[2], r.b = rgb[3];
1323    	return r;
1324	}
1325
1326	this.getRgbaAlpha = function(rgba) {
1327		if(typeof rgba != 'undefined' && rgba && rgba.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i) != null) {
1328			var rgba = rgba.split(',');
1329			return rgba[3].replace(/\)/,'');
1330		} else {
1331			return '';
1332		}
1333	}
1334
1335	function cutHex(h) {return (h.charAt(0)=='#') ? h.substring(1,7):h}
1336
1337	this.setStyle = function(j,rgb,el) {
1338		var r = parseInt(rgb.r), g = parseInt(rgb.g), b = parseInt(rgb.b),
1339			r1 = (r + 50 < 256) ? r + 50 : 255,
1340			g1 = (g + 50 < 256) ? g + 50 : 255,
1341			b1 = (b + 50 < 256) ? b + 50 : 255,
1342			r2 = (r - 50 > -1 ) ? r - 50 : 0,
1343			g2 = (g - 50 > -1 ) ? g - 50 : 0,
1344			b2 = (b - 50 > -1 ) ? b - 50 : 0,
1345			r3 = (r + 100 < 256 ) ? r + 100 : 255,
1346			g3 = (g + 100 < 256 ) ? g + 100 : 255,
1347			b3 = (b + 100 < 256 ) ? b + 100 : 255;
1348
1349		var c1 = rgb2hex(r,g,b),
1350			c2 = rgb2hex(r1,g1,b1),
1351			c3 = rgb2hex(r2,g2,b2),
1352			c4 = rgb2hex(r3,g3,b3);
1353
1354		if(el == 'el-menu') {
1355			return [c1,c2];
1356		} else if (el =='rolling-index') {
1357			if(r<80 && g<80 && b<80) return [c1,c4];
1358			else if (r<150 && g<150 && b<150) return [c1,c2];
1359			else return [c1,c3];
1360		} else {
1361			return setStyleValue(j,c1,c2,c3);
1362		}
1363		
1364	}
1365
1366	var setStyleValue = function(j,c1,c2,c3) {
1367		$.each(j.children, function(k,v) {
1368			switch(k) {
1369				// color
1370				case '.dsgn-body h3,\n.dsgn-body h4,\n.dsgn-body h5' :
1371				case '.dsgn-body a':
1372				case '.dsgn-body .alternative-font':
1373				case '.dsgn-body div.tabs ul.nav-tabs a,\n.dsgn-body div.tabs ul.nav-tabs a:hover':
1374					v.attributes['color'] = c1;
1375					break;
1376
1377				case '.dsgn-body header ul.nav-main > li:hover > a,\n.dsgn-body header ul.nav-main li.active > a,\n.dsgn-body header ul.nav-main li.active > a:hover,\n.dsgn-body header ul.nav-main li.active > a:focus,\n.dsgn-body header ul.nav-main li.active i.icon-caret-down':
1378					v.attributes['color'] = c1 + ' !important';
1379					break;
1380
1381				case '.dsgn-body a:hover':
1382					v.attributes['color'] = c2;
1383					break;
1384
1385				case '.dsgn-body a:active':
1386					v.attributes['color'] = c3;
1387					break;
1388
1389				// background-color
1390				case '.dsgn-body .text-bg':
1391				case '.dsgn-body .pagination > .active > a,\n.dsgn-body .pagination > .active > span,\n.dsgn-body .pagination > .active > a:hover,\n.dsgn-body .pagination > .active > span:hover,\n.dsgn-body .pagination > .active > a:focus,\n.dsgn-body .pagination > .active > span:focus':
1392				case '.dsgn-body .label-primary':
1393					v.attributes['background-color'] = c1 + ' !important';
1394					break;
1395
1396				// background-color + border-color
1397				case '.dsgn-body .btn-primary,\n.dsgn-body .pagination > .active > a,\n.dsgn-body ul.nav-pills > li.active > a':
1398					v.attributes['background-color'] = c1;
1399					v.attributes['border-color'] = '#006da3';
1400					break;
1401				/*
1402				case '.dsgn-body .btn-primary:hover,\n.dsgn-body .pagination > .active > a:hover,\n.dsgn-body ul.nav-pills > li.active > a:hover':
1403					v.attributes['background-color'] = '#008fd6';
1404					v.attributes['border-color'] = '#0074ad';
1405					break;
1406				*/
1407				case '.dsgn-body .btn-primary:focus,\n.dsgn-body .pagination > .active > a:focus,\n.dsgn-body ul.nav-pills > li.active > a:focus':
1408					v.attributes['background-color'] = '#007ab8';
1409					v.attributes['border-color'] = '#007ab8';
1410					break;
1411
1412				case '.dsgn-body .btn-default,\n.dsgn-body .btn-default.btn-lg,\n.dsgn-body .btn-default.btn-sm,\n.dsgn-body .btn-default.btn-xs':
1413				case '.dsgn-body .label-default':
1414					v.attributes['border-color'] = c1;
1415					v.attributes['background-color'] = 'transparent';
1416					v.attributes['color'] = c1;
1417					break;
1418
1419				case '.dsgn-body .btn-default:hover,\n.dsgn-body .btn-default.btn-lg:hover,\n.dsgn-body .btn-default.btn-sm:hover,\n.dsgn-body .btn-default.btn-xs:hover':
1420					v.attributes['border-color'] = c2;
1421					v.attributes['background-color'] = '#0D0D0D';
1422					v.attributes['color'] = c2;
1423					break;
1424
1425				case '.dsgn-body .btn-default:focus,\n.dsgn-body .btn-default.btn-lg:focus,\n.dsgn-body .btn-default.btn-sm:focus,\n.dsgn-body .btn-default.btn-xs:focus':
1426					v.attributes['border-color'] = c3;
1427					v.attributes['background-color'] = '#000000';
1428					v.attributes['color'] = c3;
1429					break;
1430
1431				case '.dsgn-body div.tabs ul.nav-tabs a:hover':
1432					v.attributes['border-top-color'] = c1;
1433					break;
1434
1435				case '.dsgn-body div.tabs ul.nav-tabs li.active a':
1436					v.attributes['border-top-color'] = c1;
1437					v.attributes['color'] = c1;
1438					break;
1439			}
1440		});
1441		return j;
1442	}
1443
1444	this.selectFontForm = function(cls,fn,font) {
1445		if(typeof font=='undefined' || !font) {
1446			// console.log('undefined font-family');
1447			return false;
1448		}
1449		var tf = font.split(',');
1450		fn = tf[0].replace(/'/g,'').replace(/"/g,'').replace('-',' ').trim();
1451		var str = '';
1452
1453		str = '<div class="' + cls + '">';
1454		for(i=0;i<this.fonts.length;i++) {
1455			fonts_check = (fn==this.fonts[i]) ? 'class="active"' : '';
1456			var font_tmp = this.fonts[i].replace(/ /g,'-'),
1457				font_name = (font_tmp in $.lang[LANG]) ? $.lang[LANG][font_tmp] : this.fonts[i];
1458
1459			if(font_name.substring(0,1) != '@')
1460				str = str + '<div value="' + this.fonts[i] + '" ' + fonts_check + ' data-font-family="' + this.fonts[i] + '" style="font-family:' + this.fonts[i] + ';">' + font_name + '</div>';
1461			else
1462				str = str + '<hr />';
1463		}
1464		str = str + '</div>';
1465		return str;
1466	}
1467
1468	this.rgbahex = function(rgb) {
1469		var rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
1470		return (rgb && rgb.length === 4) ? '#' +
1471				('0' + parseInt(rgb[1],10).toString(16)).slice(-2) +
1472				('0' + parseInt(rgb[2],10).toString(16)).slice(-2) +
1473				('0' + parseInt(rgb[3],10).toString(16)).slice(-2) : '';
1474	}
1475
1476	this.selectTabsCategoryColorSetForm = function(cls,fn,el,elname,colortype,tab_case) { 
1477		var now_palette_html = '',
1478			now_palette_arr = {},
1479			pn = '',
1480			selector = {
1481				'default': '.'+elname+' .tab',
1482				'active': '.'+elname+' .tab.active',
1483				'hover' : '.'+elname+' .tab.hover,.'+elname+' .tab.active'
1484			},
1485			default_color = ($('.'+elname).css('color') != 'undefined') ? $('.'+elname).css('color') : $('.dsgn-body').css('color'),
1486			isborder = ($('.'+elname).attr('tab-borderchk') != 'undefined') ? $('.'+elname).attr('tab-borderchk') : 'false',
1487			borderchk = (isborder == 'false') ? 'disabled' : '',
1488			isbackground = ($('.'+elname).attr('tab-backgroundchk') != 'undefined') ? $('.'+elname).attr('tab-backgroundchk') : 'false',
1489			backgroundchk = (isbackground == 'false') ? 'disabled' : '';
1490
1491		$.each(fn, function(i,v) {
1492			var checkColor = true,
1493				color = v,
1494				tmp_pn = i.match(/gc_color_(.*?)(?:_active|_hover|$)/)[1],
1495				tmp_status = (i.match(/\_active$/) != null) ? 'active' : (i.match(/\_hover$/) != null)? 'hover' : 'default';
1496			if(tmp_status == 'active') return true;
1497			if(checkColor) {
1498				pn += ((pn != '') ? ',' : '') + i;
1499			}
1500
1501			if(typeof now_palette_arr[tmp_pn] == 'undefined') now_palette_arr[tmp_pn] = [];
1502			var gc_state = (tmp_pn != 'font') ? 'data-gc-state="'+checkColor+'"' : '',
1503				clr_pn = (tmp_pn == 'font') ? 'color' : tmp_pn+'-color',
1504				clr_picker = '';
1505
1506			if(tab_case == 'tab6') {
1507				if(tmp_pn == 'border') {
1508					if(tmp_status == 'hover') {
1509						clr_picker = getColorisHtml(color,'gcconfig',{'pn':'--tab-bg-hover,--tab-bg-active', 'el':selectEL, 'selector': '.'+elname},'thumbnail',true,{'input':'clr-alpha clr-tooltipoff tabsBorder'});
1510					} else if(tmp_status == 'active') {
1511						clr_picker = getColorisHtml(color,'gcconfig',{'pn':'--tab-bg-active', 'el':selectEL, 'selector': '.'+elname},'thumbnail',true,{'input':'clr-alpha clr-tooltipoff tabsBorder'});
1512					} else {
1513						clr_picker = getColorisHtml(color,'gcconfig',{'pn':'--tab-bg-default', 'el':selectEL, 'selector': '.'+elname},'thumbnail',true,{'input':'clr-alpha clr-tooltipoff tabsBorder'});
1514					}
1515
1516				} else if(tmp_pn == 'background') clr_picker = getColorisHtml(color,'gcconfig',{'pn':clr_pn, 'el':selectEL, 'selector':selector[tmp_status]},'thumbnail',true,{'input':'clr-alpha clr-tooltipoff tabsBackground'});
1517				else clr_picker = getColorisHtml(color,'gcconfig',{'pn':clr_pn, 'el':selectEL, 'selector':selector[tmp_status]},'thumbnail',true,{'input':'clr-alpha clr-tooltipoff tabsColor'});
1518			} else {
1519				if(tmp_pn == 'border') clr_picker = getColorisHtml(color,'gcconfig',{'pn':clr_pn, 'el':selectEL, 'selector':selector[tmp_status]},'thumbnail',true,{'input':'clr-alpha clr-tooltipoff tabsBorder'});
1520				else if(tmp_pn == 'background') clr_picker = getColorisHtml(color,'gcconfig',{'pn':clr_pn, 'el':selectEL, 'selector':selector[tmp_status]},'thumbnail',true,{'input':'clr-alpha clr-tooltipoff tabsBackground'});
1521				else clr_picker = getColorisHtml(color,'gcconfig',{'pn':clr_pn, 'el':selectEL, 'selector':selector[tmp_status]},'thumbnail',true,{'input':'clr-alpha clr-tooltipoff tabsColor'});
1522			}
1523
1524			if(tmp_pn == 'border') {
1525				now_palette_arr[tmp_pn].push(`
1526					<div class="${tmp_status}-color ${borderchk}" ${gc_state}>
1527						${clr_picker}
1528					</div>
1529				`);
1530			} else if(tmp_pn == 'background') {
1531				now_palette_arr[tmp_pn].push(`
1532					<div class="${tmp_status}-color ${backgroundchk}" ${gc_state}>
1533						${clr_picker}
1534					</div>
1535				`);
1536			} else {
1537				now_palette_arr[tmp_pn].push(`
1538					<div class="${tmp_status}-color 11" ${gc_state}>
1539						${clr_picker}
1540					</div>
1541				`);
1542			}
1543		});
1544
1545		$.each(now_palette_arr, function(i, arr) {
1546			if((i == 'border' && isborder == 'true') || (i == 'background' && isbackground == 'true')) var chkbox = '<input type="checkbox" name="chk" class="'+ i +'chk" value="" checked>';
1547			else var chkbox = '<input type="checkbox" name="chk" class="'+ i +'chk" value="">';
1548			
1549			if(tab_case == 'tab6' || tab_case == 'tab7') { if(i == 'border') i = 'line'; }
1550			if(arr.length == 0 || arr[0].match(/data\-gc\-state\=\"false\"/) != null && arr[1].match(/data\-gc\-state\=\"false\"/) != null) return;
1551				now_palette_html += '\
1552					<div class="color-line tabs'+ i +'">\
1553				';
1554				if(i == 'border' || i == 'line' || i == 'background') now_palette_html += chkbox + '<div class="option_name" lang="'+ LANG +'">'+ $.lang[LANG]['editor.tab.category.'+i] +'</div>';
1555				else now_palette_html += '<div class="option_name" lang="'+ LANG +'">'+ $.lang[LANG]['editor.tab.category.'+i] +'</div>';
1556
1557				if(i == 'border' || i == 'line') {
1558					if(tab_case == 'tab6' || tab_case == 'tab7') {
1559						now_palette_html += '\
1560								<div class="default_color '+ borderchk +'">'+ $.lang[LANG]["bc.tp.block-tab-color.default"] +'</div>'+ arr[0] +'\
1561							</div>\
1562						';
1563					} else {
1564						now_palette_html += '\
1565								<div class="default_color '+ borderchk +'">'+ $.lang[LANG]["bc.tp.block-tab-color.default"] +'</div>'+ arr[0] +'\
1566								<div class="hover_color '+ borderchk +'">'+ $.lang[LANG]["bc.tp.block-tab-color.rollover-active"] +'</div>'+ arr[1] +'\
1567							</div>\
1568						';
1569					}
1570				} else if(i == 'background') {
1571					now_palette_html += '\
1572							<div class="default_color '+ backgroundchk +'">'+ $.lang[LANG]["bc.tp.block-tab-color.default"] +'</div>'+ arr[0] +'\
1573							<div class="hover_color '+ backgroundchk +'">'+ $.lang[LANG]["bc.tp.block-tab-color.rollover-active"] +'</div>'+ arr[1] +'\
1574						</div>\
1575					';
1576				} else {
1577					now_palette_html += '\
1578							<div class="default_color">'+ $.lang[LANG]["bc.tp.block-tab-color.default"] +'</div>'+ arr[0] +'\
1579							<div class="hover_color">'+ $.lang[LANG]["bc.tp.block-tab-color.rollover-active"] +'</div>'+ arr[1] +'\
1580						</div>\
1581					';
1582				}
1583				
1584		});
1585
1586		var colorset = ['black', 'gray', 'white', ''];
1587		$.each(colorset, function(i, v) {
1588			colorset[i] = (v == colortype) ? 'active' : '';
1589		});
1590
1591		var str = '\
1592			<div class="btn-group btn-group-sm">\
1593				<div  class="btn-color-mode ' + colorset[0] + '">\
1594					<button type="button" class="ctrl-tabs-color" data-type="black" data-elname="' + elname + '" data-pn="' + pn + '"></button>\
1595				</div>\
1596				<div  class="btn-color-mode ' + colorset[1] + '">\
1597					<button type="button" class="ctrl-tabs-color" data-type="gray" data-elname="' + elname + '" data-pn="' + pn + '"></button>\
1598				</div>\
1599				<div  class="btn-color-mode ' + colorset[2] + '">\
1600					<button type="button" class="ctrl-tabs-color" data-type="white" data-elname="' + elname + '" data-pn="' + pn + '" data-toggle="tooltip" data-placement="top" data-html="true" data-original-title="'+ $.lang[LANG]["bc.tp.block-tab-color.white.info"] +'"></button>\
1601				</div>\
1602				<div class="btn-color-mode btn-group now-color-palette ' + colorset[3] + '">\
1603					<button type="button" class="ctrl-tabs-color" data-type="custom">
1603'+ initSVGIcon('cog_15','bc-svg-config')+ '</button>\
1604					<div class="dropdown-menu tabDrop '+ LANG +'">\
1605						<div class="color-picker-wrap">\
1606							' + now_palette_html + '\
1607						</div>\
1608					</div>\
1609				</div>\
1610			</div>\
1611		';
1612
1613		return str;
1614	}
1615
1616	this.selectTabsNaviColorSetForm = function(cls,fn,el,elname,colortype,tab_case) { 
1617		var now_palette_html = '',
1618			clr_picker = '',
1619			pn = 'fill',
1620			selector = '.'+elname+'[navigation-use=\'1\'] .left-arrow .before, .'+elname+'[navigation-use=\'1\'] .right-arrow .after',
1621			color = fn;
1622
1623		clr_picker = getColorisHtml(color,'tabsconfig',{'pn':pn, 'el':selectEL, 'selector':selector},'thumbnail',true,{'input':'clr-alphaoff clr-tooltipoff arrowColor'});
1624		now_palette_html += `
1625				<div class="arrow-color">
1626					${clr_picker}
1627				</div>
1628		`;
1629
1630		var str = '\
1631			<div class="btn-group btn-group-sm">\
1632				<div class="color-picker-wrap">\
1633					' + now_palette_html + '\
1634				</div>\
1635			</div>\
1636		';
1637
1638		return str;
1639	}
1640
1641	this.selectCalendarLine = function(cls,fn,elname) { 
1642		var now_palette_html = '',
1643			clr_picker = '',
1644			pn = '--fc-border-color',
1645			selector = '.'+elname+' .fc',
1646			color = fn;
1647
1648		clr_picker = getColorisHtml(color,'calendarconfig',{'pn':pn, 'el':selectEL, 'selector':selector},'thumbnail',true,{'input':'clr-alphaoff clr-tooltipoff'});
1649		now_palette_html += `
1650				<div class="calendar-line-color">
1651					${clr_picker}
1652				</div>
1653		`;
1654
1655		var str = '\
1656			<div class="btn-group btn-group-sm">\
1657				<div class="color-picker-wrap">\
1658					' + now_palette_html + '\
1659				</div>\
1660			</div>\
1661		';
1662
1663		return str;
1664	}
1665
1666	this.selectGoogleCalendarSync = function(cls,fn,elname) { 
1667		var now_palette_html = '',
1668			clr_picker = '',
1669			pn = '--google-sync-color',
1670			selector = '.'+elname+' .fc',
1671			color = fn;
1672
1673		clr_picker = getColorisHtml(color,'googlecalendarsync',{'pn':pn, 'el':selectEL, 'selector':selector},'thumbnail',true,{'input':'clr-alphaoff clr-tooltipoff'});
1674		now_palette_html += `
1675				<div class="calendar-line-color">
1676					${clr_picker}
1677				</div>
1678		`;
1679
1680		var str = '\
1681			<div class="btn-group btn-group-sm">\
1682				<div class="color-picker-wrap">\
1683					' + now_palette_html + '\
1684				</div>\
1685			</div>\
1686		';
1687
1688		return str;
1689	}
1690
1691	this.selectModooCalendarSetForm = function(fn, elname) { 
1692		var now_palette_html = '',
1693			clr_picker = '',
1694			pn = '--site-theme-color',
1695			selector = '.'+elname,
1696			color = fn;
1697
1698		clr_picker = getColorisHtml(color,'modooCalendar',{'pn':pn, 'el':selectEL, 'selector':selector},'thumbnail',true,{'input':'clr-alphaoff clr-tooltipoff'});
1699		now_palette_html += `
1700				<div class="arrow-color">
1701					${clr_picker}
1702				</div>
1703		`;
1704
1705		var str = '\
1706			<div class="btn-group btn-group-sm">\
1707				<div class="color-picker-wrap">\
1708					' + now_palette_html + '\
1709				</div>\
1710			</div>\
1711		';
1712
1713		return str;
1714	}
1715
1716	this.selectTextAlignForm = function(cls,fn,elname) {
1717		elname = (elname=='none' || typeof elname=='undefined') ? '.dsgn-body' : elname;
1718		var text_align_undefined = ['start', '-webkit-auto'];
1719
1720		var ta = ($(elname).css('text-align') && $.inArray($(elname).css('text-align'),text_align_undefined)==-1) ? $(elname).css('text-align') : 'left',
1721			ta_l = (ta == 'left') ? 'active' : '',
1722			ta_c = (ta == 'center') ? 'active' : '',
1723			ta_r = (ta == 'right') ? 'active' : ''; 
1724
1725		var str = '';
1726
1727		str = '\
1728			<div class="btn-group btn-group-sm" data-toggle="buttons" role="group" aria-label="gallery category align">\
1729				<label class="ctrl-text-align-el btn btn-default '+ta_l+'" data-text-align="left" data-elname="'+elname+'" data-toggle="tooltip" data-placement="bottom" data-original-title="'+ $.lang[LANG]['bc.canvas.img.align.left'] +'"><input type="radio" name="gcalign" id="gcAlignLeft" autocomplete="off" /><img class="fa" src="https://storage.googleapis.com/i.addblock.net/icon-align-left.gif" alt="gallery category align left" /><img class="fa on" src="https://storage.googleapis.com/i.addblock.net/icon/icon-align-left_on.gif" alt="gallery category align left" /></label>\
1730				<label class="ctrl-text-align-el btn btn-default '+ta_c+'" data-text-align="center" data-elname="'+elname+'" data-toggle="tooltip" data-placement="bottom" data-original-title="'+ $.lang[LANG]['bc.canvas.img.align.center'] +'"><input type="radio" name="gcalign" id="gcAlignCenter" autocomplete="off" /><img class="fa" src="https://storage.googleapis.com/i.addblock.net/icon-align-center.gif" alt="gallery category align center" /><img class="fa on" src="https://storage.googleapis.com/i.addblock.net/icon/icon-align-center_on.gif" alt="gallery category align center" /></label>\
1731				<label class="ctrl-text-align-el btn btn-default '+ta_r+'" data-text-align="right" data-elname="'+elname+'" data-toggle="tooltip" data-placement="bottom" data-original-title="'+ $.lang[LANG]['bc.canvas.img.align.right'] +'"><input type="radio" name="gcalign" id="gcAlignRight" autocomplete="off" /><img class="fa" src="https://storage.googleapis.com/i.addblock.net/icon-align-right.gif" alt="gallery category align right" /><img class="fa on" src="https://storage.googleapis.com/i.addblock.net/icon/icon-align-right_on.gif" alt="gallery category align right" /></label>\
1732			</div>\
1733		';
1734		return str;
1735	}
1736
1737	this.selectTabAlignForm = function(cls,fn,elname) {
1738		elname = (elname=='none' || typeof elname=='undefined') ? '.dsgn-body' : elname;
1739
1740		var ta = ($(elname).css('justify-content')) ? $(elname).css('justify-content') : 'center',
1741			ta_l = (ta == 'flex-start') ? 'checked' : '',
1742			ta_c = (ta == 'center') ? 'checked' : '',
1743			ta_r = (ta == 'flex-end') ? 'checked' : ''; 
1744
1745		var str = '';
1746
1747		str = '\
1748			<div class="btn-group btn-group-sm" data-toggle="buttons" role="group" aria-label="gallery category align">\
1749				<label class="ctrl-tab-align-el '+LANG+'" data-tab-align="flex-start" data-elname="'+elname+'"><input type="radio" name="gcalign" value="left" id="gcAlignLeft" '+ta_l+' />
1749<span>'+ $.lang[LANG]['config.label.align.left'] +'</span></label>\
1750				<label class="ctrl-tab-align-el '+LANG+'" data-tab-align="center" data-elname="'+elname+'"><input type="radio" name="gcalign" value="center" id="gcAlignCenter" '+ta_c+' /><span>'+ $.lang[LANG]['config.label.align.center'] +'</span></label>\
1751				<label class="ctrl-tab-align-el '+LANG+'" data-tab-align="flex-end" data-elname="'+elname+'"><input type="radio" name="gcalign" value="right" id="gcAlignRight" '+ta_r+' /><span>'+ $.lang[LANG]['config.label.align.right'] +'</span></label>\
1752			</div>\
1753		';
1754		return str;
1755	}
1756	
1757
1758	this.getRootLineheight = function(v,fsize) {
1759		var _txlineheight = v,
1760			_txfontsize = fsize;
1761		_txfontsize = parseInt(_txfontsize.replace('px',''));
1762
1763		if(_txlineheight.indexOf('%') > -1)			_txlineheight = _txlineheight.replace('%','');
1764		else if(_txlineheight.indexOf('px') > -1)	_txlineheight = (parseFloat(_txlineheight.replace('px','').toFixed(3)) / _txfontsize) * 100;
1765		else if(_txlineheight.indexOf('.') > -1)	_txlineheight = parseFloat(_txlineheight) * 100;
1766
1767		return parseInt(_txlineheight);
1768	}
1769	this.selectRootFontForm = function(fel,fselector,fname,froot) {
1770		if(FONTS != this.fonts) { 
1771			this.fonts = FONTS ;
1772		}
1773
1774		if(typeof fel == 'undefined' || fel == '' || $('.'+fel).length == 0) fel = 'dsgn-body';
1775		if(typeof fselector == 'undefined' || fselector == '' || $('.'+fselector).length == 0) fselector = fel;
1776
1777		var tf = (fselector == 'dsgn-body') ? $('.'+fselector).css('font-family') : fname;
1778		if(tf==null) {
1779			alert('Block config error : ' + elname + '\r\nstyle.js line: 306');
1780			return false;
1781		}
1782		tf = explode(",",tf);
1783
1784		var fn_name = tf[0],
1785			str = '';
1786		for(i=0;i<this.fonts.length;i++) {
1787			var fonts_check = '',
1788				font_tmp = this.fonts[i].replace(/ /g,'-'),
1789				font_name = (font_tmp in $.lang[LANG]) ? $.lang[LANG][font_tmp] : this.fonts[i];
1790
1791			if(fname == this.fonts[i]) {
1792				fonts_check = 'active';
1793				fn_name = font_name;
1794			}
1795
1796			if(font_name.substring(0,1) != '@')
1797				str = str + '<li class="el-root-font ' + fonts_check + '" el="' + fel + '" selector=".' + fselector + '" data-root="' + froot + '" data-val="' + this.fonts[i] + '" style="font-family:\'' + this.fonts[i] + '\';"><a href="javascript:;">' + font_name + '</a></li>';
1798			else
1799				str = str + '<li class="dividers"><hr /></li>';
1800		}
1801
1802		return '\
1803        <div class="btn-group">\
1804            <button type="button" class="btn btn-default dropdown-toggle font-preview" data-toggle="dropdown"><span class="el-root-font-active" data-root="' + froot + '" style="font-family:\'' + fname + '\'">' + fn_name + '</span> <svg viewBox="0 0 13 13" width="13" height="13"><g><path d="m6.5 9.55-4.7-4.7 1.4-1.4 3.3 3.3 3.3-3.3 1.4 1.4-4.7 4.7z"/></path></g></svg></button>\
1805            <ul class="dropdown-menu scrollable-menu" role="menu">\
1806		        ' + str + '\
1807            </ul>\
1808            <div class="default-language-box"><span class="btn-default-language"><img src="https://storage.googleapis.com/i.addblock.net/icon/fa_plus_icon_b.png" alt="" /> '+ $.lang[LANG]['editor.languages-support'] +'</span></div>\
1809        </div>\
1810        ';
1811	}
1812
1813
1814	this.selectFontSizeForm = function(cls,elselector,fs,max_fs) {
1815		fs = (typeof fs != 'undefined' && /^[0-9]+$/.test(fs)) ? Number(fs) : 0;
1816		max_fs = (typeof max_fs != 'undefined' && /^[0-9]+$/.test(max_fs)) ? Number(max_fs) : 80;
1817
1818		var fs_li = '';
1819		for (var i = 10; i <= max_fs; i++){
1820			fs_li += `<li class="${(i == fs) ? 'active' : ''}" data-fontselect="${i}"><a>${i}</a></li>`;
1821		}
1822		
1823		return `
1824		<div class="btn-group">
1825			<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
1826				<span class="${cls} " pn="font-size" data-slider-max="${max_fs}" selector="${elselector}">${fs}</span>
1827				<svg viewBox="0 0 13 13" width="13" height="13"><g><path d="m6.5 9.55-4.7-4.7 1.4-1.4 3.3 3.3 3.3-3.3 1.4 1.4-4.7 4.7z"/></path></g></svg>
1828			</button>
1829			<ul class="dropdown-menu scrollable-menu">${fs_li}</ul>
1830		</div>
1831		`;
1832	}
1833
1834	this.selectLatestFontSizeTitle = function(cls,elselector,fs,max_fs) {
1835		fs = (typeof fs != 'undefined' && /^[0-9]+$/.test(fs)) ? Number(fs) : 0;
1836		max_fs = (typeof max_fs != 'undefined' && /^[0-9]+$/.test(max_fs)) ? Number(max_fs) : 80;
1837
1838		var fs_li = '';
1839		for (var i = 10; i <= max_fs; i++){
1840			fs_li += `<li class="${(i == fs) ? 'active' : ''} ${cls}" data-elname="${elselector} .latest-table-header .lt-header" data-fontselect="${i}"><a>${i}</a></li>`;
1841		}
1842		
1843		return `
1844		<div class="btn-group">
1845			<button type="button" class="btn btn-default dropdown-toggle font-preview-size" data-toggle="dropdown">
1846				<span class="ctrl-title-font-size-el-active " pn="font-size" data-sli
1846der-max="${max_fs}" selector="${elselector}">${fs}</span>
1847				<svg viewBox="0 0 13 13" width="13" height="13"><g><path d="m6.5 9.55-4.7-4.7 1.4-1.4 3.3 3.3 3.3-3.3 1.4 1.4-4.7 4.7z"/></path></g></svg>
1848			</button>
1849			<ul class="dropdown-menu scrollable-menu">${fs_li}</ul>
1850		</div>
1851		`;
1852	}
1853
1854	this.selectLatestFontSize = function(cls,elselector,fs,max_fs) {
1855		fs = (typeof fs != 'undefined' && /^[0-9]+$/.test(fs)) ? Number(fs) : 0;
1856		max_fs = (typeof max_fs != 'undefined' && /^[0-9]+$/.test(max_fs)) ? Number(max_fs) : 80;
1857
1858		var fs_li = '';
1859		for (var i = 10; i <= max_fs; i++){
1860			fs_li += `<li class="${(i == fs) ? 'active' : ''} ${cls}" data-elname="${elselector} .latest-post-list-title" data-eldate="${elselector} .latest-post-list-date" data-fontselect="${i}"><a>${i}</a></li>`;
1861		}
1862		
1863		return `
1864		<div class="btn-group">
1865			<button type="button" class="btn btn-default dropdown-toggle font-preview-size" data-toggle="dropdown">
1866				<span class="ctrl-font-size-el-active " pn="font-size" data-slider-max="${max_fs}" selector="${elselector}">${fs}</span>
1867				<svg viewBox="0 0 13 13" width="13" height="13"><g><path d="m6.5 9.55-4.7-4.7 1.4-1.4 3.3 3.3 3.3-3.3 1.4 1.4-4.7 4.7z"/></path></g></svg>
1868			</button>
1869			<ul class="dropdown-menu scrollable-menu">${fs_li}</ul>
1870		</div>
1871		`;
1872	}
1873
1874	this.selectFontSelectForm = function(cls,fn,elname) {
1875		
1876		if(FONTS != this.fonts) { 
1877			this.fonts = FONTS ;
1878		}
1879		elname = (elname=='none' || typeof elname=='undefined') ? '.dsgn-body' : elname;
1880		var tf = $(elname).css('font-family');
1881
1882		if(cls=='ctrl-font-family-el') tf = fn;
1883
1884		if(tf==null) {
1885			alert('Block config error : ' + elname + '\r\nstyle.js line: 306');
1886			return false;
1887		}
1888		tf = explode(",",tf);
1889
1890		var fn_name = fn.replace(/\"/gi, ""),
1891			str = '';
1892		for(i=0;i<this.fonts.length;i++) {
1893			var fonts_check = '',
1894				font_tmp = this.fonts[i].replace(/ /g,'-'),
1895				font_name = (font_tmp in $.lang[LANG]) ? $.lang[LANG][font_tmp] : this.fonts[i];
1896
1897			if(fn==this.fonts[i]) {
1898				fonts_check = 'active';
1899				fn_name = font_name;
1900			}
1901
1902			if(font_name.substring(0,1) != '@')
1903				str = str + '<li class="' + cls + ' ' + fonts_check + '" data-elname="' + elname + '" data-font-family="' + this.fonts[i] + '" style="font-family:\'' + this.fonts[i] + '\';"><a href="javascript:;">' + font_name + '</a></li>';
1904			else
1905				str = str + '<li class="dividers"><hr /></li>';
1906		}
1907
1908		return '\
1909        <div class="btn-group">\
1910            <button type="button" class="btn btn-default dropdown-toggle font-preview font-preview-family" data-toggle="dropdown"><span class="' + cls + '-active" style="font-family:\'' + fn + '\'">' + fn_name + '</span> <svg viewBox="0 0 13 13" width="13" height="13"><g><path d="m6.5 9.55-4.7-4.7 1.4-1.4 3.3 3.3 3.3-3.3 1.4 1.4-4.7 4.7z"/></path></g></svg></button>\
1911            <ul class="dropdown-menu scrollable-menu" role="menu">\
1912		        ' + str + '\
1913            </ul>\
1914            <div class="default-language-box"><span class="btn-default-language"><img src="https://storage.googleapis.com/i.addblock.net/icon/fa_plus_icon_b.png" alt="" /> '+ $.lang[LANG]['editor.languages-support'] +'</span></div>\
1915        </div>\
1916        ';
1917	}
1918
1919	this.selectBackgroundSelectForm = function(type,id,val,elname,ctrl_class) {
1920		// var position = ['left top','left center','left bottom','center top','center center','center bottom','right top','right center','right bottom'],
1921		var position = ['left top','center top','right top','left center','center center','right center','left bottom','center bottom','right bottom'],
1922			repeat = ['repeat','repeat-x','repeat-y','no-repeat'],
1923			bgsize = ['auto','cover','contain'],
1924			property = [];
1925
1926		elname = (typeof elname == 'undefined') ? '' : elname;
1927		ctrl_class = (typeof ctrl_class == 'undefined') ? '' : ctrl_class;
1928		langCtrl = '';
1929		switch(type) {
1930			case 'position' : 
1931				property = position; 
1932				langCtrl = type; 
1933
1934				var position_center = ['initial', '50% 50%', '50%', 'center'];
1935				val = ($.inArray(val, position_center) > -1) ? 'center center' : val;
1936
1937				var position_svg = '<svg viewBox="0 0 22 22" width="22" height="22">\
1938										<rect width="6" height="6" class="bp-left-top" />\
1939										<rect width="6" height="6" class="bp-center-top" x="8" />\
1940										<rect width="6" height="6" class="bp-right-top" x="16" />\
1941										<rect width="6" height="6" class="bp-left-center" y="8" />\
1942										<rect width="6" height="6" class="bp-center-center" x="8" y="8" />\
1943										<rect width="6" height="6" class="bp-right-center" x="16" y="8" />\
1944										<rect width="6" height="6" class="bp-left-bottom" y="16" />\
1945										<rect width="6" height="6" class="bp-center-bottom" x="8" y="16" />\
1946										<rect width="6" height="6" class="bp-right-bottom" x="16" y="16" />\
1947									</svg>',
1948					position_icon = '<span class="bc-bp-icon bc-svg" data-bp="' + val + '">' + position_svg + '</span>',
1949					position_str = ''
1950					position_html = '';
1951
1952				for(i=0;i<property.length;i++) {
1953					var check = (property[i]==val) ? 'selected' : '',
1954						strlang = 'editor.background.' + langCtrl + '.' + property[i].replace(' ','-');
1955					if(check) position_str = $.lang[LANG][strlang];
1956
1957					position_html += '\
1958						<li data-value="' + property[i] + '" data-name="' + $.lang[LANG][strlang] + '"><span></span></li>\
1959					';
1960				}
1961
1962				var bp_idx = $('#el-blockConfig').find('.dropdown-toggle[id^=bcBackgroundPosition]').length,
1963					str = '\
1964					<a class="bc-bp-select btn dropdown-toggle" href="#" role="button" id="bcBackgroundPosition' + bp_idx + '" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">' + position_icon + ' <span class="bc-bp-active">' + ((!position_str) ? val : position_str) + '</span></a>\
1965					<div class="bc-bp-option dropdown-menu" aria-labelledby="bcBackgroundPosition' + bp_idx + '">\
1966						<ul data-bp="' + val + '" data-id="' + id + '" data-elname="' + elname + '" >\
1967							' + position_html + '\
1968						</ul>\
1969						<p class="bc-bp-active">' + position_str + '</p>\
1970					</div>\
1971				';
1972
1973				return str;
1974				break;
1975
1976			case 'repeat' : 
1977				property = repeat; 
1978				langCtrl = type; 
1979				val = (val=='initial') ? 'no-repeat' : val;
1980				break;
1981
1982			case 'bgsize' : 
1983				property = bgsize; 
1984				langCtrl = 'size'; 
1985				val = (val=='initial') ? 'cover' : val;
1986				break;
1987		}
1988
1989		// var str = '<select class="form-control property-form ' + ctrl_class + '" id="' + id + '" data-elname="' + elname + '">';
1990		// for(i=0;i<property.length;i++) {
1991		// 	check = (property[i]==val) ? 'selected' : '';
1992		// 	var strlang = 'editor.background.' + langCtrl + '.' + property[i].replace(' ','-');
1993		// 	str = str + '<option value="' + property[i] + '" ' + check + '>' + $.lang[LANG][strlang] + '</option>';
1994		// }
1995		// str = str + '</select>';
1996
1997		var dropdown_html = '';
1998		for(i=0;i<property.length;i++) {
1999			check = (property[i]==val) ? 'selected' : '';
2000			var strlang = 'editor.background.' + langCtrl + '.' + property[i].replace(' ','-');
2001			if(check) check_str = $.lang[LANG][strlang];
2002
2003			dropdown_html += '<li data-name="' + $.lang[LANG][strlang] + '" data-value="' + property[i] + '" ' + check + '>' + $.lang[LANG][strlang] + '</li>';
2004		}
2005
2006		var str = '\
2007			<a class="bc-bg-select btn dropdown-toggle ' + ctrl_class + '" href="#" role="button" id="' + id + '" data-elname="' + elname + '" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\
2008				<span class="bc-bg-active">' + ((!check_str) ? val : check_str) + '</span>\
2009			</a>\
2010			<div class="bc-bg-option dropdown-menu" aria-labelledby="' + id + '">\
2011				<ul data-id="' + id + '" data-elname="' + elname + '" >\
2012					' + dropdown_html + '\
2013				</ul>\
2014			</div>\
2015		';
2016
2017		return str;
2018	}
2019
2020	var hex2rgb = function(hex) {
2021	    if (hex.lastIndexOf('#') > -1) {
2022	        hex = hex.replace(/#/, '0x');
2023	    } else {
2024	        hex = '0x' + hex;
2025	    }
2026	    var r = hex >> 16;
2027	    var g = (hex & 0x00FF00) >> 8;
2028	    var b = hex & 0x0000FF;
2029	    return rgb = { r : r, g : g, b : b};
2030	}
2031
2032	var rgb2hex = function(r,g,b) {
2033		return '#' +
2034		('0' + parseInt(r,10).toString(16)).slice(-2) +
2035		('0' + parseInt(g,10).toString(16)).slice(-2) +
2036		('0' + parseInt(b,10).toString(16)).slice(-2);
2037	}
2038
2039	var initObject = function(j,selector) {
2040		if(typeof j['children'][selector] == 'undefined') {
2041			j['children'][selector] = {};
2042			j['children'][selector]['attributes'] = {};
2043		}
2044		return j;
2045	}
2046
2047	var trim = function(str) {
2048		return str.replace(/^\s+|\s+$/g, '');
2049	}
2050
2051	this.getBorderColor = function(selector) {
2052		var is_indicator = (selector.indexOf('carousel-indicators li') != -1 && $(selector).parents('.carousel-indicators').attr('data-indicator')=='background') ? true : false,
2053			rgbExp = /rgb\(\d{1,3}\,\s?\d{1,3}\,\s?\d{1,3}\)\s*/,
2054			rgbExp = /^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/,
2055			color = (is_indicator) ? $(selector).css('background-color') : $(selector).css('border-top-color');
2056
2057		if(!is_indicator) {
2058			var checkBorder = {
2059				all :		($(selector).css('border-width') != '0px')	? true : false,
2060				top :		($(selector).css('border-top-width') != '0px'	&&	$(selector).css('border-top-color') != 'rgba(0, 0, 0, 0)')	? true : false,
2061				right :		($(selector).css('border-right-width') != '0px'	&&	$(selector).css('border-right-color') != 'rgba(0, 0, 0, 0)')	? true : false,
2062				bottom :	($(selector).css('border-bottom-width') != '0px'&&	$(selector).css('border-bottom-color') != 'rgba(0, 0, 0, 0)')	? true : false,
2063				left :		($(selector).css('border-left-width') != '0px'	&&	$(selector).css('border-left-color') != 'rgba(0, 0, 0, 0)')	? true : false,
2064			}
2065			if(!checkBorder.all) return '';
2066			else if(!checkBorder.top) {
2067				if(checkBorder.right) color = $(selector).css('border-right-color');
2068				else if(checkBorder.bottom) color = $(selector).css('border-bottom-color');
2069				else if(checkBorder.left) color = $(selector).css('border-left-color');
2070			}
2071		}
2072
2073		if($(selector).length == 0) color = 'rgb(0,0,0)';
2074
2075		var colorMatch = color.match(rgbExp);
2076
2077		if(colorMatch == null) return '';
2078		else {
2079			var colorHex = this.getHex(colorMatch[0].trim());
2080			return colorHex;
2081		}		
2082	}
2083
2084	this.getAttributesMoreBtnColor = function(j,selector,key,hover) {
2085		if(!j['children'][selector]) {
2086			$.each(j['children'], function(s,o) {
2087				if(s.indexOf(selector) > -1) j['children'][selector] = o;
2088			});
2089		}
2090		var selector_ori = (hover) ? selector.substring(0,selector.indexOf(':hover')) : '',
2091			color_val = '',
2092			opacity_val = '';
2093		switch(key) {			
2094			case 'color' :
2095				color_val = (j['children'][selector]) ? j['children'][selector]['attributes'][key] : '';
2096				if(!color_val && hover) {
2097					color_val = (j['children'][selector_ori]) ? j['children'][selector_ori]['attributes'][key] : '';
2098				}
2099				if(color_val == 'inherit') color_val = '#aaa';
2100				if(!color_val) {
2101					if(hover) color_val = '#fff'; else color_val = '#aaa';
2102				} 
2103				break;
2104
2105			case 'background-color' :
2106				color_val = (j['children'][selector] && j['children'][selector]['attributes'][key]) ? j['children'][selector]['attributes'][key] : '';
2107				
2108				if(color_val.indexOf('#')>-1) {
2109					opacity_val = (j['children'][selector]) ? ((typeof j['children'][selector]['attributes']['opacity']!='undefined' && j['children'][selector]['attributes']['opacity']) ? j['children'][selector]['attributes']['opacity'] : j['children'][selector]['attributes']['opacity_re']) : '';
2110				}	
2111			
2112				if(!color_val && hover) {
2113					color_val = (j['children'][selector_ori]) ? j['children'][selector_ori]['attributes'][key] : '';
2114				}
2115
2116				if(!color_val) {
2117					if(hover) color_val = '#000'; else color_val = '#E5E5E5';
2118				}
2119				break;
2120
2121			case 'border-color' :
2122				if(j['children'][selector]) {
2123					key = (typeof j['children'][selector]['attributes']['border-color'] != 'undefined') ? 'border-color' : 'border';
2124					color_val = j['children'][selector]['attributes'][key];
2125				} else {
2126					key = 'border';
2127					color_val = '';
2128				}
2129				
2130				var regexRgba = /(rgb(a)?)(\([0-999]*\,[0-999]*\,[0-999]*(\,\d*[.]?\d{1,2})?)\)|(#[0-9a-f]{3,6})|(transparent)|(none)/gi;		        
2131
2132				if(!color_val) {
2133					border_css = (j['children'][selector]) ? j['children'][selector]['attributes']['border'] : '';
2134					if(hover && !border_css) {
2135						color_val = (j['children'][selector_ori]) ? j['children'][selector_ori]['attributes'][key] : '';
2136						color_val = (color_val) ? ((color_val.match(regexRgba)) ? color_val.match(regexRgba)[0] : 'rgba(255,255,255,1)') : '';
2137						if(!color_val) border_css = (j['children'][selector_ori]) ? j['children'][selector_ori]['attributes']['border'] : '';
2138					}
2139					if(border_css) {
2140						border_arry = border_css.toString().split(" ");
2141						$.each(border_arry, function(i,v){
2142							if(v.indexOf('#') > -1 || v.indexOf('transparent') > -1 || v.indexOf('none') > -1) color_val = v;
2143						});
2144					}
2145				} else {
2146					color_val = (color_val.match(regexRgba)) ? color_val.match(regexRgba)[0] : ((color_val.indexOf('none')>-1) ? 'rgba(255,255,255,0)' : 'rgba(255,255,255,1)');
2147				}
2148
2149				if(!color_val) color_val = '';
2150				break;
2151		}
2152
2153		var setbg_color_array = [],
2154			bg_array = [],
2155			bg_info = {};
2156			
2157		bg_array = getRgbaValArray(color_val,opacity_val);
2158		bg_info = getColorAndOpacity('','','',bg_array);
2159	
2160		return bg_info;
2161	}
2162
2163	this.getMenuNavbarStyle = function(sid,css,obj) {
2164		var m_reg = new RegExp('.menu-'+sid+'[a-zA-Z. -]+(.navbar-nav[\> ]+li[\> ]+a)','gi');
2165			m_property = {
2166				txColor : '',
2167				txSize : 0,
2168				txName : '',
2169			};
2170
2171		$.each(css['children'], function(s,o) {
2172			var checkMenuNavbar = m_reg.test(s);
2173			if(checkMenuNavbar) {
2174				if(typeof o['attributes']['font-family'] != 'undefined' && o['attributes']['font-family']) m_property.txName = o['attributes']['font-family'].replace(/'/g,'').replace(/"/g,'');
2175				if(typeof o['attributes']['font-size'] != 'undefined' && o['attributes']['font-size']) m_property.txSize = o['attributes']['font-size'].replace('px','');
2176				if(typeof o['attributes']['color'] != 'undefined' && o['attributes']['color']) m_property.txColor = o['attributes']['color'];
2177			}
2178		});
2179
2180		return m_property;
2181	}
2182	
2183	this.getMenuClFixbtnStyle = function(sid,css) {
2184		var fixbtn_color = {'selector' : '','pn':''};
2185		$.each(css['children'], function(key,value) {
2186			if(key.match(/cl-fixbtn|mobilenav_top/gi)!=null) {
2187				if(key.match(/:hover/gi)!=null || key.match(/cart-active/gi)!=null) return;
2188				var pn_array = ['color','background-color','border-color','fill'],
2189					c = value['attributes'],
2190					pn_val = '',
2191					pns_cssopt = [],
2192					change_obj = [];
2193
2194				$.each(c,function(pn,val){
2195					if($.inArray(pn,pn_array)>-1) {
2196						pns_cssopt.push(pn);
2197						pn_val = val;
2198					}
2199				});
2200
2201				var check_str = (fixbtn_color['selector']!='') ? ',' : '';
2202				fixbtn_color = {'selector' : fixbtn_color['selector'] + check_str + key +'('+pns_cssopt.join('/')+')'};	
2203
2204			}
2205		});
2206		
2207		return fixbtn_color;
2208	}
2209
2210	this.getPadding = function(j,selector) {
2211		var padding = {
2212			top : 0,
2213			bottom : 0,
2214			left : 0,
2215			right : 0
2216
2217		}
2218		selector = '.' + selector;
2219		j = initObject(j,selector);
2220
2221		$.each(j['children'][selector]['attributes'], function(k,v) {
2222			if(v == '' || v == 'initial') v = 0;
2223			switch(k) {
2224				case 'padding-top':
2225					v = v.replace(/px/g,'');
2226					padding.top = v;
2227					break;
2228				case 'padding-bottom':
2229					v = v.replace(/px/g,'');
2230					padding.bottom = v;
2231					break;
2232				case 'padding':
2233					v = v.replace(/px/g,'');
2234					var p = v.split(' ');
2235					
2236					switch(p.length) {
2237						case 1:
2238							padding.top = p[0];
2239							padding.right = p[0];
2240							padding.bottom = p[0];
2241							padding.left = p[0];
2242							break;
2243						case 2:
2244							padding.top = p[0];
2245							padding.right = p[1];
2246							padding.bottom = p[0];
2247							padding.left = p[1];
2248							break;
2249						case 3:
2250							padding.top = p[0];
2251							padding.right = p[1];
2252							padding.bottom = p[2];
2253							padding.left = p[1];
2254							break;
2255						case 4:
2256							padding.top = p[0];
2257							padding.right = p[1];
2258							padding.bottom = p[2];
2259							padding.left = p[3];
2260							break;
2261					}
2262					break;
2263			}
2264		});
2265		return padding;
2266	}	
2267	this.getUserFontsArr = function(cls,fn) {
2268		if(FONTS != this.fonts) { 
2269			this.fonts = FONTS ;
2270		}
2271
2272		var arr = {};
2273
2274		for(i=0;i<this.fonts.length;i++) {
2275			var font_tmp = this.fonts[i].replace(/ /g,'-'),
2276				font_name = (font_tmp in $.lang[LANG]) ? $.lang[LANG][font_tmp] : this.fonts[i];
2277
2278			if(font_name.substring(0,1) != '@')
2279				// str = str + "<li class='" + cls + " " + fonts_check + "' data-elname='" + elname + "' data-font-family='" + this.fonts[i] + "' style=\"font-family:'" + this.fonts[i] + "'\"><a href='javascript:;'>" + font_name + "</a></li>";
2280				arr[this.fonts[i]] = font_name
2281		}
2282		return arr;
2283	}
2284	this.getFontcss = function(fonts) {
2285		fonts = fonts.replace(/'/g,'').replace(/"/g,'');
2286		var arr = fonts.split(','),
2287			r = arr[0];
2288		return r.trim();
2289	}
2290
2291	this.getColorORTransparent = function(color) {
2292		if(typeof color == 'undefined') return 'transparent';
2293
2294		color = color.replace(/ /gi,'').replace(/!important/gi,'');
2295		var color_16 = /#?([A-Fa-f0-9]){3}(([A-Fa-f0-9]){3})?/,
2296			color_regexp = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))$/i,
2297			check_regexp = ( color_16.test(color) || color_regexp.test(color) ) ? true : false,
2298			check_not_tp = ( color!='rgba(0,0,0,0)' && color.indexOf('transparent')==-1 ) ? true : false;
2299
2300		return (check_regexp && check_not_tp) ? color : 'transparent';        	
2301	}
2302
2303
2304	this.menuColorSetForm = function(j,selector) {
2305		var checkMenuFheader = ($('header.'+selector).hasClass('navbar-fheader')) ? true : false,
2306			tpl_selector = {
2307				'main_default'	: 'ul.navbar-nav li:not(.active) a ',
2308				'main_hover'	: 'ul.navbar-nav li:not(.active) a:hover ',
2309				'main_active'	: 'ul.navbar-nav li.active a ',
2310				'sub_default'	: 'ul.dropdown-menu li:not(.active) a ',
2311				'sub_hover'		: 'ul.dropdown-menu li:not(.active) a:hover ',
2312				'sub_active'	: 'ul.dropdown-menu li.active a ',
2313				'fixbtn_default_font': 'ul#fixed-menu .cl-fixbtn a:not(.cl-langlist) ',
2314				'fixbtnlang_default_bdColor'	: 'ul#fixed-menu .cl-fixbtn.siteLANG .cl-lang ',				
2315				'fixbtn_default_svg' : 'ul#fixed-menu .cl-fixbtn a:not(.cl-langlist):hover svg ',					
2316				'fixbtn_default_after'	: 'ul#fixed-menu li.cl-fixbtn:not(:last-child):after ',
2317				'fixbtn_hover_font'	: 'ul#fixed-menu .cl-fixbtn a:not(.cl-langlist):hover ',
2318				'fixbtn_hover_svg' : 'ul#fixed-menu .cl-fixbtn a:not(.cl-langlist):hover svg ',
2319				'cart_default'	: 'ul#fixed-menu .cl-fixbtn .cart-active ',
2320			},
2321			user = '.menu-edit-' + SID,
2322			main_hover_selector = (checkMenuFheader) ? user + ' ul.navbar-nav:not(#fixed-menu) > li > a:hover,\n '+ user + ' ul.navbar-nav:not(#fixed-menu) > li:hover > a ' : user + ' ul.navbar-nav > li > a:hover,\n '+ user + ' ul.navbar-nav > li:hover > a ',
2323			init_selector = {
2324				'main_default'	: user + ' ul.navbar-nav > li > a,\n '+ user + ' ul.navbar-nav > li > a:focus ',
2325				'main_hover'	: main_hover_selector ,
2326				'main_active'	: user + ' ul.navbar-nav > li.active > a,\n '+ user + ' ul.navbar-nav > li.active > a:focus,\n'+ user + ' ul.navbar-nav > li.active > a:hover ',
2327				'sub_default'	: user + ' ul.dropdown-menu > li > a,\n '+ user + ' ul.dropdown-menu > li > a:focus ',
2328				'sub_hover'		: user + ' ul.dropdown-menu > li > a:hover,\n '+ user + ' ul.dropdown-menu > li:hover > a ',
2329				'sub_active'	: user + ' ul.dropdown-menu > li.active > a,\n '+ user + ' ul.dropdown-menu > li.active > a:focus,\n'+ user + ' ul.dropdown-menu > li.active > a:hover ',
2330			},
2331			tpl_color_state = {
2332				'main_default_font' : false,
2333				'main_hover_font' : false,
2334				'main_active_font' : false,
2335				'main_default_bg' : false,
2336				'main_hover_bg' : false,
2337				'main_active_bg' : false,
2338				'sub_default_font' : false,
2339				'sub_hover_font' : false,
2340				'sub_active_font' : false,
2341				'sub_default_bg' : false,
2342				'sub_hover_bg' : false,
2343				'sub_active_bg' : false,
2344				'fixbtn_default_font': false,
2345				'fixbtnlang_default_bdColor' : false,				
2346				'fixbtn_default_svg' : false,					
2347				'fixbtn_default_after'	: false,
2348				'fixbtn_hover_font'	: false,
2349				'fixbtn_hover_svg' : false,
2350				'cart_default_font' : false,
2351				'cart_default_bg' : false,
2352			},
2353			tpl_color_set = {
2354				'main_default_font' : '',
2355				'main_hover_font' : '',
2356				'main_active_font' : '',
2357				'main_default_bg' : '',
2358				'main_hover_bg' : '',
2359				'main_active_bg' : '',
2360				'sub_default_font' : '',
2361				'sub_hover_font' : '',
2362				'sub_active_font' : '',
2363				'sub_default_bg' : '',
2364				'sub_hover_bg' : '',
2365				'sub_active_bg' : '',
2366				'fixbtn_default_font' : '',
2367				'fixbtnlang_default_bdColor' : '',
2368				'fixbtn_hover_font' : '',
2369				'cart_default_font' : '',
2370				'cart_default_bg' : '',
2371			},
2372			tpl_color_hex = new Object(),
2373			tpl_color_opacity = new Object(),
2374			tpl_color_selector = new Object(),
2375			tpl_etc_list = new Object();
2376			tpl_fixbtn_color = new Object();
2377
2378		$.each(j['children'], function(key,value) {
2379			var tpl_key = key.replace(/ /gi,''),
2380				check_nav = (tpl_key.match(/ul.navbar-nav>li/gi) !== null || tpl_key.match(/ul.navbar-nav:not\(#fixed-menu\)>li/gi) !== null) ? true : false,
2381				check_subnav = (tpl_key.match(/ul.dropdown-menu>li/gi) !== null) ? true : false,
2382				check_fixbtnnav = (tpl_key.match(/.cl-fixbtn/gi) !== null) ? true : false;
2383
2384			if(!check_nav && !check_subnav && !check_fixbtnnav) return;
2385
2386			var c = value['attributes'],
2387				key_mode = (key.match(/hover/gi)!=null) ? 'hover' : 'default',
2388				main_hover_str1 = (checkMenuFheader) ? /ul.navbar-nav:not\(#fixed-menu\)>li>a:hover/gi : /ul.navbar-nav>li>a:hover/gi,
2389				main_hover_str2 = (checkMenuFheader) ? /ul.navbar-nav:not\(#fixed-menu\)>li:hover>a/gi : /ul.navbar-nav>li:hover>a/gi,
2390				check = {
2391					'main_default' : (tpl_key.match(/ul.navbar-nav>li>a/gi) !== null) ? true : false,
2392					'main_hover' : (tpl_key.match(/.cl-fixbtn/gi) == null && (tpl_key.match(main_hover_str1) !== null || tpl_key.match(main_hover_str2) !== null)) ? true : false,
2393					'main_active' : (tpl_key.match(/.cl-fixbtn/gi) == null && tpl_key.match(/ul.navbar-nav>li.active>a/gi) !== null) ? true : false,
2394					'main_after' : (tpl_key.match(/.cl-fixbtn/gi) == null && tpl_key.match(/:after/gi) !== null) ? true : false,
2395					'main_before' : (tpl_key.match(/.cl-fixbtn/gi) == null && tpl_key.match(/:before/gi) !== null) ? true : false,
2396					'sub_default' : (tpl_key.match(/.cl-fixbtn/gi) == null && tpl_key.match(/ul.dropdown-menu>li>a/gi) !== null) ? true : false,
2397					'sub_hover' : (tpl_key.match(/.cl-fixbtn/gi) == null && (tpl_key.match(/ul.dropdown-menu>li>a:hover/gi) !== null || tpl_key.match(/ul.dropdown-menu>li:hover>a/gi) !== null)) ? true : false,
2398					'sub_active' : (tpl_key.match(/.cl-fixbtn/gi) == null && tpl_key.match(/ul.dropdown-menu>li.active>a/gi) !== null) ? true : false,
2399					'sub_after' : (tpl_key.match(/.cl-fixbtn/gi) == null && tpl_key.match(/:after/gi) !== null) ? true : false,
2400					'sub_before' : (tpl_key.match(/.cl-fixbtn/gi) == null && tpl_key.match(/:before/gi) !== null ) ? true : false,
2401				},
2402				check_etc = {
2403					'main_default_before' : (tpl_key.match(/ul.navbar-nav>li>a:before/gi) !== null || tpl_key.match(/ul.navbar-nav>li:before/gi) !== null) ? true : false,
2404					'main_hover_before' : (tpl_key.match(/ul.navbar-nav>li>a:hover:before/gi) !== null || tpl_key.match(/ul.navbar-nav>li:hover:before/gi) !== null) ? true : false,
2405					'main_active_before' : (tpl_key.match(/ul.navbar-nav>li.active>a:before/gi) !== null || tpl_key.match(/ul.navbar-nav>li.active:before/gi) !== null) ? true : false,
2406					'main_default_after' : (tpl_key.match(/ul.navbar-nav>li>a:after/gi) !== null || tpl_key.match(/ul.navbar-nav>li:after/gi) !== null) ? true : false,
2407					'main_hover_after' : (tpl_key.match(/ul.navbar-nav>li>a:hover:after/gi) !== null || tpl_key.match(/ul.navbar-nav>li:hover:after/gi) !== null) ? true : false,
2408					'main_active_after' : (tpl_key.match(/ul.navbar-nav>li.active>a:after/gi) !== null || tpl_key.match(/ul.navbar-nav>li.active:after/gi) !== null) ? true : false,
2409					'sub_default_before' : (tpl_key.match(/ul.dropdown-menu>li>a:before/gi) !== null || tpl_key.match(/ul.dropdown-menu>li:before/gi) !== null) ? true : false,
2410					'sub_hover_before' : (tpl_key.match(/ul.dropdown-menu>li>a:hover:before/gi) !== null || tpl_key.match(/ul.dropdown-menu>li:hover:before/gi) !== null) ? true : false,
2411					'sub_active_before' : (tpl_key.match(/ul.dropdown-menu>li.active>a:before/gi) !== null || tpl_key.match(/ul.dropdown-menu>li.active:before/gi) !== null) ? true : false,
2412					'sub_default_after' : (tpl_key.match(/ul.dropdown-menu>li>a:after/gi) !== null || tpl_key.match(/ul.dropdown-menu>li:after/gi) !== null) ? true : false,
2413					'sub_hover_after' : (tpl_key.match(/ul.dropdown-menu>li>a:hover:after/gi) !== null || tpl_key.match(/ul.dropdown-menu>li:hover:after/gi) !== null) ? true : false,
2414					'sub_active_after' : (tpl_key.match(/ul.dropdown-menu>li.active>a:after/gi) !== null || tpl_key.match(/ul.dropdown-menu>li.active:after/gi) !== null) ? true : false,
2415				};
2416
2417
2418			var type = (tpl_key.match(/ul.navbar-nav>li/gi) != null || tpl_key.match(/ul.navbar-nav:not\(#fixed-menu\)>li/gi) != null) ? 'main' : 'sub',
2419				mode = '';
2420
2421			type = (tpl_key.match(/.cl-fixbtn/gi) != null) ? ((tpl_key.match(/.cl-fixbtn.siteLANG/gi) != null) ? 'fixbtnlang' : 'fixbtn') : type;
2422			type = (tpl_key.match(/cart-active/gi) != null) ? 'cart' : type;
2423
2424			if(check[type+'_default'] && !check[type+'_hover'] && !check[type+'_after'] && !check[type+'_before'] ) {
2425				mode = 'default';
2426			} else if ( check[type+'_hover'] && !check[type+'_after'] && !check[type+'_before']) {
2427				mode = 'hover';
2428			} else if ( check[type+'_active'] && !check[type+'_after'] && !check[type+'_before'] ) {
2429				mode = 'active';
2430			} 
2431
2432			var used_menu_etc = Object.keys(check_etc).map(function(key) { 
2433				 return check_etc[key];
2434			});
2435			if($.inArray(true,used_menu_etc) > -1) {
2436
2437				$.each(check_etc, function(k,check) {
2438					if(check) {
2439						var etc_ctype = (typeof c['color'] != 'undefined') ? 'color' : ( (typeof c['border-color'] != 'undefined') ? 'border-color' : 'background-color'),
2440							used_etc_effect = true;
2441							
2442						etc_ctype = (typeof c['fill'] != 'undefined') ? 'fill' : etc_ctype;
2443
2444						if(typeof c['opacity'] != 'undefined' && c['opacity'] == 0) { used_etc_effect = false; }
2445						if(typeof c['display'] != 'undefined' && c['opacity'] == 'none') { used_etc_effect = false; }
2446						if(typeof c['width'] != 'undefined' && c['width'] == '0px') { used_etc_effect = false; }
2447						if(typeof c['height'] != 'undefined' && c['height'] == '0px') { used_etc_effect = false; }
2448
2449						if(style.getColorORTransparent(c[etc_ctype]) == 'transparent') { used_etc_effect = false; }
2450
2451						if(used_etc_effect) {
2452							tpl_etc_list[k] = {
2453								'selector' : key,
2454								'css_type' : etc_ctype
2455							};
2456						}
2457
2458					}
2459				});
2460			}
2461
2462			if(mode) {
2463				tpl_color_selector[type+'_'+mode] = key;
2464
2465				if( typeof c['color'] != 'undefined' ) tpl_color_set[type+'_'+mode+'_font'] = c['color'];
2466				if( typeof c['background-color'] != 'undefined' ) tpl_color_set[type+'_'+mode+'_bg'] = c['background-color'];
2467
2468				if(typeof c['opacity'] != 'undefined' && typeof tpl_color_set[type+'_'+mode+'_bg']) tpl_color_opacity[type+'_'+mode+'_bg'] = c['opacity'];
2469			}
2470
2471			if(key.match(/cl-fixbtn/gi)!=null) {
2472				var pn_array = ['color','background-color','border-color','fill'],
2473					pn_val = '',
2474					pns_cssopt = [],
2475					change_obj = [],
2476					check_cart = (key.match(/cart-active/gi)!=null) ? 'cart' : 'fixbtn',
2477					fixbtnTypeKey = check_cart+'_'+key_mode;
2478
2479				$.each(c,function(pn,val){
2480					if($.inArray(pn,pn_array)>-1) {
2481						pns_cssopt.push(pn);
2482						pn_val = val;
2483					}
2484				});
2485
2486				if(tpl_fixbtn_color[fixbtnTypeKey]) {
2487					var check_str = (tpl_fixbtn_color[fixbtnTypeKey]['selector']!='') ? ',' : '';
2488					tpl_fixbtn_color[fixbtnTypeKey] = {'selector' : tpl_fixbtn_color[fixbtnTypeKey]['selector'] + check_str + key+'('+pns_cssopt.join('/')+')'};
2489				} else {
2490					tpl_fixbtn_color[fixbtnTypeKey] = {'selector' : key}
2491					tpl_fixbtn_color[fixbtnTypeKey]['selector'] = tpl_fixbtn_color[fixbtnTypeKey]['selector']+'('+pns_cssopt.join('/')+')';
2492				}
2493
2494				if(!tpl_fixbtn_color[fixbtnTypeKey]['colorVal']) {
2495					if(pn_val.indexOf('rgba')>-1) {
2496						var rgba_color = getRgbaValArray(pn_val);
2497						pn_val = rgba_color['val'];
2498					}
2499					tpl_fixbtn_color[fixbtnTypeKey]['colorVal'] = (typeof pn_val!='undefined' && pn_val) ? pn_val : 'transparent';
2500				}
2501			}
2502
2503		});
2504
2505		var default_font = ( typeof $('.'+selector).css('color') != 'undefined' ) ? style.getColorORTransparent($('.'+selector).css('color')) : style.getColorORTransparent($('.dsgn-body').css('color')),
2506			default_bg = ( typeof $('.'+selector).css('background-color') != 'undefined' ) ? style.getColorORTransparent($('.'+selector).css('background-color')) : style.getColorORTransparent($('.dsgn-body').css('background-color'));
2507
2508		$.each(tpl_color_set, function(k,v) {
2509			var type = (k.indexOf('main_') > -1) ? 'main' : 'sub',
2510				mode = k.substr(k.indexOf('_')+1, (k.lastIndexOf('_')-(k.indexOf('_')+1))),
2511				fn = (k.indexOf('font') > -1) ? 'font' : 'bg';
2512
2513			if(v.indexOf('important') > -1) { v = v.trim().replace('!important',''); }
2514
2515			if(!v) {
2516				var color = (fn == 'font') ? $('.'+selector).find(tpl_selector[type+'_'+mode]).css('color') : $('.'+selector).find(tpl_selector[type+'_'+mode]).css('background-color');
2517				color = (style.getColorORTransparent(color) != 'transparent') ? style.getColorORTransparent(color) : style.getColorORTransparent(eval('default_' + fn));
2518
2519				if(color != 'transparent') v = color;
2520				else if( mode != 'default') {
2521					var sub_key = (mode == 'hover') ? type+'_active_'+fn : type+'_hover_'+fn;
2522					
2523					if(tpl_color_set[sub_key]) v = tpl_color_set[sub_key];
2524					else v = tpl_color_set[type+'_default_'+fn];
2525				}
2526
2527				tpl_color_opacity[k] = (v) ? 1 : 0;
2528				if(v) {
2529					tpl_color_state[k] = true;
2530					tpl_color_set[k] = v;
2531				}
2532
2533			} else {
2534				v = style.getColorORTransparent(v);
2535				tpl_color_state[k] = true;
2536			}
2537
2538			if(typeof tpl_color_opacity[k] == 'undefined') {
2539				var opacity_val = (v == 'transparent' || !tpl_color_set[k]) ? 0 : 1;
2540				tpl_color_opacity[k] = (v.indexOf('rgba') > -1) ? v.substr((v.lastIndexOf(',')+1),(v.lastIndexOf(')')- (v.lastIndexOf(',')+1))).trim() : opacity_val;
2541			}
2542
2543			tpl_color_hex[k] = (v.indexOf('#') > -1 ) ? v : style.rgbahex(v);
2544
2545		});
2546
2547
2548		var getColorBox = function(menu_type, css_type, color_set) {
2549			var pn = (css_type == 'font') ? 'color' : 'background-color',
2550				// menu_el = 'el-menu',
2551				menu_selector = '.menu-' + SID,
2552				menu_css = MCSS,
2553				menu_s = style.get(menu_css,menu_selector),
2554				menu_bgpicker = $('#bc-default-background .coloris[data-clr="elconfig"][pn="background-color"][selector=".menu-'+SID+'"]');
2555				menu_bgcolor = (menu_bgpicker.length > 0) ? menu_bgpicker.val() : Coloris.getChangeColorVal(menu_s.bgColor,'a',1),
2556				menu_bgimg = (menu_bgpicker.closest('.panel-item').next('.panel-item').find('.attach-thumb').length > 0) ? true : false,
2557				menu_bgtransparent = ( (menu_bgpicker.length > 0 && menu_bgpicker.closest('.coloris-picker').hasClass('clr-transparent')) ||
2558										(menu_bgpicker.lenght == 0 && Coloris.getColorInfo(menu_s.bgColor,'alpha') == 0)
2559									) ? 'clr-transparent' : '',
2560				menu_bgtooltip = '';
2561
2562			if(pn == 'background-color') {
2563				if(menu_bgimg) menu_bgtooltip = $.lang[LANG]['editor.menu.color.transparent.edit.info2'];
2564				else if(menu_bgtransparent != '') menu_bgtooltip = $.lang[LANG]['editor.menu.color.transparent.edit.info'];
2565			}
2566
2567			if(menu_type == 'menublock') {
2568				return '\
2569					<div class="menu-bg color-box ' + menu_bgtransparent.replace('clr-','checked-') + '" data-ctype="bg" data-toggle="tooltip" data-placement="bottom" data-html="true" data-original-title="' + menu_bgtooltip + '">\
2570						' + getColorisHtml(menu_bgcolor,'menuconfig',{'pn':'background-color-all', 'el':'el-menu', 'selector':'.menu-temp-' + SID},'thumbnail',true,{'wrap':menu_bgtransparent, 'input':'clr-alphaoff clr-tooltipoff'}) + '\
2571					</div>\
2572				'; 
2573			} else {
2574				var mode = ['default','hover','active'],
2575					this_html = '',
2576					check_return = false;
2577
2578				var this_transparent = '';
2579				if(pn == 'background-color') {
2580					this_transparent = ( menu_bgtransparent == 'clr-transparent' &&
2581										 Coloris.getColorInfo($(menu_selector).find('ul.navbar-nav > li > a').css('background-color'),'alpha') == 0 &&
2582										 Coloris.getColorInfo($(menu_selector).find('ul.dropdown-menu > li > a').css('background-color'),'alpha') == 0 
2583										) ? 'clr-transparent' : '';
2584				}
2585
2586				mode.forEach(function(i,v) {
2587					var checkTypeFixedIcon = ($.inArray(menu_type, ['fixbtn','cart']) > -1) ? true : false,
2588						checkEtc = (typeof tpl_etc_list[menu_type+'_'+i+'_before'] != 'undefined' || typeof tpl_etc_list[menu_type+'_'+i+'_after'] != 'undefined') ? true : false,
2589						this_opacity = (tpl_color_opacity[menu_type+'_'+i+'_'+css_type] == 0 || checkTypeFixedIcon && v < 2 || this_transparent == 'clr-transparent') ? 'transparent' : '',
2590						this_colorbox = '',
2591						this_tooltip = '',
2592						this_etc_html = '';
2593
2594					if(css_type == 'bg') {
2595						if(menu_bgtooltip != '') this_tooltip = menu_bgtooltip;
2596						else if(this_opacity != '') this_tooltip = $.lang[LANG]['editor.menu.color.transparent.edit.info'];
2597
2598						this_colorbox = this_opacity + ((menu_bgimg) ? ' used-bg' : '');
2599					}
2600
2601					if(pn == 'color' && checkEtc) {
2602						if(typeof tpl_etc_list[menu_type+'_'+i+'_before'] != 'undefined') {
2603							this_etc_html += '<input type="hidden" class="menu-etc" value="' + tpl_etc_list[menu_type+'_'+i+'_before']['css_type'] + '" data-selector="' + tpl_etc_list[menu_type+'_'+i+'_before']['selector'] + '"/>';
2604						}
2605						if(typeof tpl_etc_list[menu_type+'_'+i+'_after'] != 'undefined') {
2606							this_etc_html += '<input type="hidden" class="menu-etc" value="' + tpl_etc_list[menu_type+'_'+i+'_after']['css_type'] + '" data-selector="' + tpl_etc_list[menu_type+'_'+i+'_after']['selector'] + '"/>';
2607						}
2608					}
2609
2610					if(menu_type == 'main' && css_type == 'font' && v == 0) { //Menu Color Settings - Menu text color Change ==> Mobile Toggle bar color
2611						var this_selector = (selector.indexOf('menu-temp-')>-1) ? '.menu-temp-' + SID : '.menu-' + SID;
2612						this_etc_html += '<input type="hidden" class="menu-etc" value="background-color" data-selector="' + this_selector + ' .navbar-toggle .icon-bar" />';
2613					}
2614
2615					if(checkTypeFixedIcon && typeof tpl_fixbtn_color[css_type+'_'+i]=='undefined') {
2616						check_return = true;
2617						return this_html;
2618					}
2619
2620					var tpl_cstate = (checkTypeFixedIcon && v < 2) ? 'true' : tpl_color_state[menu_type+'_'+i+'_'+css_type],
2621						// tpl_opacity = (checkTypeFixedIcon && v < 2) ? 'true' : tpl_color_opacity[menu_type+'_'+i+'_'+css_type],
2622						tpl_color = (checkTypeFixedIcon && v < 2) ? tpl_fixbtn_color[css_type+'_'+i]['colorVal'] : tpl_color_hex[menu_type+'_'+i+'_'+css_type],
2623						tpl_selector = (checkTypeFixedIcon && v < 2) ? tpl_fixbtn_color[css_type+'_'+i]['selector'] : tpl_color_selector[menu_type+'_'+i],
2624						tpl_pn = (checkTypeFixedIcon && v < 2) ? 'fixbtn' : pn;
2625	
2626
2627					this_html += '\
2628								<div class="color-box ' + this_colorbox + '" data-type="' + menu_type + '" data-mode="' + i + '" data-ctype="' + css_type + '" data-cstate="' + tpl_cstate + '"  data-toggle="tooltip" data-placement="bottom" data-html="true" data-original-title="' + this_tooltip + '">\
2629									' + getColorisHtml(tpl_color,'menuconfig',{'pn':tpl_pn, 'el':'elmenu-color-edit', 'selector':tpl_selector},'thumbnail',true,{'wrap':this_transparent, 'input':'clr-alphaoff clr-tooltipoff'}) + '\
2630									' + this_etc_html + '\
2631								</div>\
2632					';
2633					if(v == 2) check_return = true;
2634				});
2635
2636				if(check_return) return this_html;
2637			}
2638		}
2639
2640		var fixbtn_str = '', cart_str = '';
2641		if($('.el-menu .cl-fixbtn.cl-visible').length > 0 && VALIDTYPE) {
2642			fixbtn_str = '\
2643					<div class="clearfix"></div>\
2644					<hr/>\
2645					\
2646					<div class="col-xs-3 col-sm-3 col-md-3">\
2647						<h6 style="margin-top: 9px">' + $.lang[LANG]["editor.menu.color.fixbtn"] + '</h6>\
2648					</div>\
2649					<div class="col-xs-9 col-sm-9 col-md-9 no-padding">\
2650						<div class="btn-group btn-group-sm">\
2651							<div class="btn-color-mode btn-group color-palette">\
2652								<div class="color-picker-wrap">\
2653									<div class="color-line">\
2654										<div class="option_name"></div>\
2655										' + getColorBox('fixbtn','fixbtn',tpl_fixbtn_color) + '\
2656									</div>\
2657								</div>\
2658							</div>\
2659						</div>\
2660					</div>\
2661			'
2662		} 
2663		
2664		if($('.el-menu .cl-fixbtn.siteCART').is(':visible') && VALIDTYPE == 'SM') {
2665			cart_str = '\
2666					<div class="clearfix"></div>\
2667					<hr/>\
2668					\
2669					<div class="col-xs-3 col-sm-3 col-md-4">\
2670						<h6 style="margin-top: 9px">' + $.lang[LANG]["editor.menu.color.cart"] + '</h6>\
2671					</div>\
2672					<div class="col-xs-9 col-sm-9 col-md-8 no-padding">\
2673						<div class="btn-group btn-group-sm">\
2674							<div class="btn-color-mode btn-group color-palette">\
2675								<div class="color-picker-wrap">\
2676									<div class="color-line cart_palette">\
2677										<div class="option_name"></div>\
2678										' + getColorBox('cart','cart',tpl_fixbtn_color) + '\
2679									</div>\
2680								</div>\
2681							</div>\
2682						</div>\
2683					</div>\
2684			'
2685		}
2686
2687		var str = '\
2688			<div class="elmenu-color-sidebar bc-style">\
2689				<h5 class="text-center">' + $.lang[LANG]["editor.menu.color-edit"] + '</h5>\
2690				<div class="row">\
2691					<div class="col-xs-9 col-sm-9 col-md-9 col-xs-offset-3 col-sm-offset-3 col-md-offset-3 clearfix">\
2692									<div class="header-line">\
2693										<div class="mode_name default_color">' + $.lang[LANG]["editor.menu.color.default"] + '</div>\
2694										<div class="mode_name hover_color">' + $.lang[LANG]["editor.menu.color.hover"] + '</div>\
2695										<div class="mode_name active_color">' + $.lang[LANG]["editor.menu.color.active"] + '</div>\
2696									</div>\
2697					</div>\
2698				\
2699					<div class="col-xs-3 col-sm-3 col-md-3">\
2700						<h6>' + $.lang[LANG]["editor.menu.color.menu"] + '</h6>\
2701					</div>\
2702					<div class="col-xs-9 col-sm-9 col-md-9 no-padding">\
2703						<div class="btn-group btn-group-sm">\
2704							<div class="btn-color-mode btn-group color-palette">\
2705								<div class="color-picker-wrap">\
2706									<div class="color-line">\
2707										<div class="option_name">' + $.lang[LANG]["editor.menu.color.font"] + '</div>\
2708										' + getColorBox('main','font',tpl_color_set) + '\
2709									</div>\
2710									<div class="color-line">\
2711										<div class="option_name">' + $.lang[LANG]["editor.menu.color.bg"] + '</div>\
2712										' + getColorBox('main','bg',tpl_color_set) + '\
2713									</div>\
2714								</div>\
2715							</div>\
2716						</div>\
2717					</div>\
2718				\
2719					<div class="clearfix"></div>\
2720					<hr/>\
2721				\
2722					<div class="col-xs-3 col-sm-3 col-md-3">\
2723						<h6>' + $.lang[LANG]["editor.menu.color.submenu"] + '</h6>\
2724					</div>\
2725					<div class="col-xs-9 col-sm-9 col-md-9 no-padding">\
2726						<div class="btn-group btn-group-sm">\
2727							<div class="btn-color-mode btn-group color-palette">\
2728								<div class="color-picker-wrap">\
2729									<div class="color-line">\
2730										<div class="option_name">' + $.lang[LANG]["editor.menu.color.font"] + '</div>\
2731										' + getColorBox('sub','font',tpl_color_set) + '\
2732									</div>\
2733									<div class="color-line">\
2734										<div class="option_name">' + $.lang[LANG]["editor.menu.color.bg"] + '</div>\
2735										' + getColorBox('sub','bg',tpl_color_set) + '\
2736									</div>\
2737								</div>\
2738							</div>\
2739						</div>\
2740					</div>\
2741				' + fixbtn_str + '\
2742				' + cart_str + '\
2743					<div class="clearfix"></div>\
2744					<hr/>\
2745				\
2746					<div class="col-xs-3 col-sm-3 col-md-3">\
2747						<h6 style="' + ((LANG == 'en') ? 'margin-top: 0;' : 'margin-top: 9px') + '">' + $.lang[LANG]["editor.menu.color.menublock"] + '</h6>\
2748					</div>\
2749					<div class="no-padding '+ ((LANG == 'en') ? 'col-xs-8 col-sm-8 col-md-8 col-xs-offset-1 col-sm-offset-1 col-md-offset-1' : 'col-xs-9 col-sm-9 col-md-9') + '">\
2750						<div class="btn-group btn-group-sm">\
2751							<div class="btn-color-mode btn-group color-palette">\
2752								<div class="color-picker-wrap">\
2753									<div class="color-line">\
2754										' + getColorBox('menublock','bg',tpl_color_set) + '\
2755									</div>\
2756								</div>\
2757							</div>\
2758						</div>\
2759					</div>\
2760				\
2761					<div class="clearfix"></div>\
2762					<div class="btn-wrap">\
2763							<div class="btn btn-default btn-sm close-btn-menuColorSet">' + $.lang[LANG]["config.cancel"] + '</div>\
2764							<div class="btn btn-primary btn-sm save-btn-menuColorSet">' + $.lang[LANG]["config.save"] + '</div>\
2765					</div>\
2766				</div>\
2767			</div>\
2768		';
2769
2770		return str;
2771
2772	}
2773
2774	this.menuRootColorSetForm = function(j,selector) {
2775		var checkMenuFheader = ($('header.'+selector).hasClass('navbar-fheader')) ? true : false,
2776			checkMenuBgcolorHide = ($('header.'+selector).find('.cl-menu-option').length > 0) ? true : false,
2777			j_s = style.get(j, selector);
2778
2779		/*
2780			MENU Root CSS
2781			메인메뉴	폰트		--menu-color / --menu-color-hover / --menu-color-active
2782						ë°°ê²½		--menu-bgcolor / --menu-bgcolor-hover / --menu-bgcolor-active
2783			
2784			서브메뉴	폰트		--sub-menu-color / --sub-menu-color-hover / --sub-menu-color-active
2785						ë°°ê²½		--sub-menu-bgcolor / --sub-menu-bgcolor-hover / --sub-menu-bgcolor-active
2786
2787			확장기능			--fixed-menu-color (--fixed-menu-color2) / --fi
2787xed-menu-color-hover (--fixed-menu-color-hover2)
2788			장바구니 수량		--fixed-menu-point
2789
2790			전체배경			--block-bgcolor
2791			펼침메뉴 배경		--moption-bgcolor
2792		*/
2793
2794		var getRootColorBox = function(root_selector,root_style,root_key) {
2795			if(typeof root_key == 'undefined' || root_key == '') return '';
2796
2797			var root_group = [root_key];
2798			var checkHover = (root_key.match(/^\_\_(sub\_)?menu\_/i) != null || root_key == '__fixed_menu_color') ? true : false;
2799			var checkActive = (root_key.match(/^\_\_(sub\_)?menu\_/i) != null) ? true : false;
2800
2801			if(checkHover) root_group.push(root_key+'_hover');
2802			if(checkActive) root_group.push(root_key+'_active');
2803
2804			var init_color = (root_key.indexOf('_bgcolor') > -1) ? root_style.bgColor : root_style.txColor;
2805			var init_key = (root_key.indexOf('_bgcolor') > -1) ? '--block-bgcolor' : '--block-color';
2806			var init_check = true;
2807			var root_str = '';
2808			$.each(root_group, function(i, r_k) {
2809				var r_v = root_style[r_k];
2810				var r_v_empty = (typeof r_v == 'undefined' || r_v == '') ? true : false;
2811				if(r_v_empty) {
2812					r_v = init_color;
2813				} else {
2814					if(init_check) {
2815						init_color = r_v;
2816						init_key = r_k.replace(/\_/gi,'-');
2817						init_check = false;
2818					}
2819				}
2820
2821				var r_v_transparent = (style.getColorORTransparent(r_v) == 'transparent') ? ' transparent' : '';
2822				var r_v_block_transparent =  (root_style.bgColor == 'transparent') ? ' bg-transparent' : '';
2823				var r_v_block_bgurl = (root_style.bgUrl != 'none') ? ' bg-url' : '';
2824				var color_tooltip = '';
2825
2826				if(r_v_transparent != '' && r_v_block_bgurl != '') color_tooltip = $.lang[LANG]['editor.menu.color.transparent.edit.info2'];
2827				else if(r_v_transparent != '') color_tooltip = $.lang[LANG]['editor.menu.color.transparent.edit.info'];
2828				var color_box_tooltip = (color_tooltip != '') ? 'data-toggle="tooltip" data-placement="bottom" data-html="true" data-original-title="'+color_tooltip + '"' : '';
2829				root_str += '\
2830					<div class="color-box rv ' + r_v_transparent + r_v_block_transparent + r_v_block_bgurl + '" ' + color_box_tooltip + '>\
2831						' + getColorisHtml(r_v,'elconfig',{'data-root':r_k.replace(/\_/gi,'-'), 'el':selectEL, 'selector':'.'+root_selector, 'data-init':((r_v_empty) ? init_key : '')},'thumbnail',true,{'input':'clr-alphaoff'}) +  '\
2832					</div>\
2833				';
2834			});
2835 
2836			return root_str;
2837		}
2838
2839		var fixedmenu_str = '';
2840		if(typeof VALIDPLAN != 'undefined' && VALIDPLAN) {
2841
2842			if($('.el-menu .cl-fixbtn.cl-visible').length > 0) {
2843				fixedmenu_str += '\
2844					<div class="clearfix"></div>\
2845					<hr/>\
2846					\
2847					<div class="col-xs-3 col-sm-3 col-md-4">\
2848						<h6 style="margin-top: 9px">' + $.lang[LANG]["editor.menu.color.fixbtn"] + '</h6>\
2849					</div>\
2850					<div class="col-xs-9 col-sm-9 col-md-8 no-padding" style="padding-left: 22px;">\
2851						<div class="btn-group btn-group-sm">\
2852							<div class="btn-color-mode btn-group color-palette">\
2853								<div class="color-picker-wrap">\
2854									<div class="color-line">\
2855										' + getRootColorBox(selector,j_s,'__fixed_menu_color') + '\
2856									</div>\
2857								</div>\
2858							</div>\
2859						</div>\
2860					</div>\
2861				';
2862			}
2863
2864			if($('.el-menu .cl-fixbtn.siteCART').is(':visible') && VALIDTYPE == 'SM') {
2865				fixedmenu_str += '\
2866					<div class="clearfix"></div>\
2867					<hr/>\
2868					\
2869					<div class="col-xs-3 col-sm-3 col-md-4">\
2870						<h6 style="margin-top: 9px">' + $.lang[LANG]["editor.menu.color.cart"] + '</h6>\
2871					</div>\
2872					<div class="col-xs-9 col-sm-9 col-md-8 no-padding" style="padding-left: 22px;">\
2873						<div class="btn-group btn-group-sm">\
2874							<div class="btn-color-mode btn-group color-palette">\
2875								<div class="color-picker-wrap">\
2876									<div class="color-line">\
2877										' + getRootColorBox(selector,j_s,'__fixed_menu_point') + '\
2878									</div>\
2879								</div>\
2880							</div>\
2881						</div>\
2882					</div>\
2883				';
2884			}
2885		}
2886
2887
2888
2889		var tmp_str = (checkMenuBgcolorHide) ? ['4','style="margin-top: 9px"','8',' style="padding-left: 22px;"','',$.lang[LANG]['editor.menu.color.blockbgcolor']] : ['3','','9','','<div class="option_name">' + $.lang[LANG]["editor.menu.color.font"] + '</div>',$.lang[LANG]['editor.menu.color.menublock']],
2890			str = '\
2891			<div class="elmenu-color-sidebar bc-style">\
2892				<h5 class="text-center">' + $.lang[LANG]["editor.menu.color-edit"] + '</h5>\
2893				<div class="row">\
2894					<div class="col-xs-9 col-sm-9 col-md-9 col-xs-offset-3 col-sm-offset-3 col-md-offset-3 clearfix">\
2895						<div class="header-line" ' + ((LANG == 'en') ? 'style="padding-right: 20px;"' : '') + '>\
2896							<div class="mode_name default_color">' + $.lang[LANG]["editor.menu.color.default"] + '</div>\
2897							<div class="mode_name hover_color">' + $.lang[LANG]["editor.menu.color.hover"] + '</div>\
2898							<div class="mode_name active_color">' + $.lang[LANG]["editor.menu.color.active"] + '</div>\
2899						</div>\
2900					</div>\
2901				\
2902					<div class="col-xs-3 col-sm-3 col-md-'+tmp_str[0]+'">\
2903						<h6 '+tmp_str[1]+'>' + $.lang[LANG]["editor.menu.color.menu"] + '</h6>\
2904					</div>\
2905					<div class="col-xs-9 col-sm-9 col-md-'+tmp_str[2]+' no-padding" '+tmp_str[3]+'>\
2906						<div class="btn-group btn-group-sm">\
2907							<div class="btn-color-mode btn-group color-palette">\
2908								<div class="color-picker-wrap">\
2909									<div class="color-line">\
2910										'+tmp_str[4]+'\
2911										' + getRootColorBox(selector,j_s,'__menu_color') + '\
2912									</div>\
2913		';
2914		if(!checkMenuBgcolorHide) str += '\
2915									<div class="color-line">\
2916										<div class="option_name">' + $.lang[LANG]["editor.menu.color.bg"] + '</div>\
2917										' + getRootColorBox(selector,j_s,'__menu_bgcolor') + '\
2918									</div>\
2919		';
2920		str += '\
2921								</div>\
2922							</div>\
2923						</div>\
2924					</div>\
2925				\
2926					<div class="clearfix"></div>\
2927					<hr/>\
2928				\
2929					<div class="col-xs-3 col-sm-3 col-md-'+tmp_str[0]+'">\
2930						<h6 '+tmp_str[1]+'>' + $.lang[LANG]["editor.menu.color.submenu"] + '</h6>\
2931					</div>\
2932					<div class="col-xs-9 col-sm-9 col-md-'+tmp_str[2]+' no-padding" '+tmp_str[3]+'>\
2933						<div class="btn-group btn-group-sm">\
2934							<div class="btn-color-mode btn-group color-palette">\
2935								<div class="color-picker-wrap">\
2936									<div class="color-line">\
2937										'+tmp_str[4]+'\
2938										' + getRootColorBox(selector,j_s,'__sub_menu_color') + '\
2939									</div>\
2940		';
2941		if(!checkMenuBgcolorHide) str += '\
2942									<div class="color-line">\
2943										<div class="option_name">' + $.lang[LANG]["editor.menu.color.bg"] + '</div>\
2944										' + getRootColorBox(selector,j_s,'__sub_menu_bgcolor') + '\
2945									</div>\
2946		';
2947		str += '\
2948								</div>\
2949							</div>\
2950						</div>\
2951					</div>\
2952				\
2953					' + fixedmenu_str + '\
2954				\
2955					<div class="clearfix"></div>\
2956					<hr/>\
2957				\
2958					<div class="col-xs-3 col-sm-3 col-md-4">\
2959						<h6 style="' + ((LANG == 'en') ? 'margin-top: 0;' : 'margin-top: 9px') + '">' + tmp_str[5] + '</h6>\
2960					</div>\
2961					<div class="col-xs-9 col-sm-9 col-md-8 no-padding" style="padding-left: 22px;">\
2962						<div class="btn-group btn-group-sm">\
2963							<div class="btn-color-mode btn-group color-palette">\
2964								<div class="color-picker-wrap">\
2965									<div class="color-line">\
2966										' + getRootColorBox(selector,j_s,'__block_bgcolor') + '\
2967									</div>\
2968								</div>\
2969							</div>\
2970						</div>\
2971					</div>\
2972				\
2973		';
2974		if(checkMenuBgcolorHide) {
2975			str += '\
2976					<div class="clearfix"></div>\
2977					<hr/>\
2978				\
2979					<div class="col-xs-3 col-sm-3 col-md-4">\
2980						<h6 style="' + ((LANG == 'en') ? 'margin-top: 0;' : 'margin-top: 9px') + '">' + $.lang[LANG]['editor.menu.color.moptionblock'] + '</h6>\
2981					</div>\
2982					<div class="col-xs-9 col-sm-9 col-md-8 no-padding" style="padding-left: 22px;">\
2983						<div class="btn-group btn-group-sm">\
2984							<div class="btn-color-mode btn-group color-palette">\
2985								<div class="color-picker-wrap">\
2986									<div class="color-line">\
2987										' + getRootColorBox(selector,j_s,'__moption_bgcolor') + '\
2988									</div>\
2989								</div>\
2990							</div>\
2991						</div>\
2992					</div>\
2993				\
2994			';
2995		}
2996		str += '\
2997					<div class="clearfix"></div>\
2998					<div class="btn-wrap">\
2999							<div class="btn btn-default btn-sm close-btn-menuColorSet">' + $.lang[LANG]["config.cancel"] + '</div>\
3000							<div class="btn btn-primary btn-sm save-btn-menuColorSet">' + $.lang[LANG]["config.save"] + '</div>\
3001					</div>\
3002				</div>\
3003			</div>\
3004		';
3005
3006		return str;
3007	}
3008
3009
3010	this.checkBlockRootCSS = function(tp) {
3011		if(typeof $.bcModal =='undefined' || typeof $.bcModal.select_el == 'undefined' || !$.bcModal.select_el) return false;
3012
3013		var this_el = $.bcModal.select_el;
3014		var this_target = ($.bcModal.data.checkMenu) ? document.querySelector(`.${this_el} header`) : document.querySelector(`.${this_el}`);
3015		if(!this_target) return false;
3016
3017		var this_elstyle = window.getComputedStyle(this_target);
3018		var check_properties = [];
3019		var onoff = false;
3020
3021		switch(tp) {
3022			case 'block-background':
3023				check_properties.push('--block-bgcolor','--block-bgblur','--block-bgimg','--block-bgimg-size','--block-bgimg-position','--block-bgimg-repeat');
3024				break;
3025
3026			case 'block-padding':
3027				check_properties.push('--block-padding-top','--block-padding-bottom','--block-padding-left','--block-padding-right','--ratio-padding-top','--ratio-padding-bottom');
3028				break;
3029
3030			case 'block-layout':
3031				check_properties.push('--layout-gap-col','--layout-gap-row','--layout-col-p','--layout-imgh');
3032				break;
3033
3034			case 'swiper-option':
3035				check_properties.push('--swiper-view','--swiper-space','--swiper-height');
3036				break;
3037
3038			case 'sync-dataview':
3039				check_properties.push('--sync-page-unit');
3040				break;
3041
3042			case 'slick-config':
3043				check_properties.push('--slick-speed','--slick-autoplay','--slick-autoplay-speed');
3044				break;
3045
3046			case 'slick-option':
3047				check_properties.push('--slick-view','--slick-space','--slick-height');
3048				break;
3049
3050			case 'root-btn-color':
3051				check_properties.push('--btn-color','--btn-bgcolor','--btn-line','--btn-color-hover','--btn-bgcolor-hover','--btn-line-hover');
3052				break;
3053
3054			case 'ctrl-root-border':
3055				check_properties.push('--block-line-color','--block-outline-color','--block-boxline-color');
3056				break;
3057
3058			case 'ctrl-root-svg':
3059				check_properties.push('--block-svg-color');
3060				break;
3061
3062			case 'ratio-padding':
3063				check_properties.push('--ratio-padding-top','--ratio-padding-bottom');
3064				break;
3065
3066			case 'pagination-color':
3067				check_properties.push('--pagination-btn-color','--pagination-btn-bgcolor','--pagination-dot-color','--slick-arrow-color','--slick-dot-color');
3068				break;
3069
3070			case 'tab-color':
3071				check_properties.push('--tab-color','--tab-line-color','--tab-bgcolor');
3072				break;
3073
3074			case 'rollover-color':
3075				check_properties.push('--rollover-color','--rollover-bgcolor','--rollover-line');
3076				break;
3077
3078			default:
3079				check_properties.push('default');
3080				break;
3081		}
3082
3083		if(check_properties[0] == 'default') {
3084			if(typeof tp != 'undefined' && tp) {
3085				if(!/^--/.test(tp)) tp = '--'+tp;
3086				if(typeof this_elstyle.getPropertyValue(tp) != 'undefined' && this_elstyle.getPropertyValue(tp)) onoff = true;
3087			}
3088		} else {
3089			onoff = check_properties.some(prop => this_elstyle.getPropertyValue(prop));
3090		}
3091
3092		return onoff;
3093	}
3094}
3095
3096

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.