PageSourceSearch

https://hexakrown.com/wp-content/themes/cryptop/js/scripts.js?ver=1.0

js hexakrown.com collected 2026-10-10 00:34:49 UTC 106,712 bytes, 3,572 lines download raw bytes

1"use strict";
2
3function cws_uniq_id ( prefix ){
4	var prefix = prefix != undefined && typeof prefix === 'string' ? prefix : "";
5	var d = new Date();
6	var t = d.getTime();
7	var unique = Math.random() * t;
8	var unique_id = prefix + unique;
9	return unique_id;
10}
11function cws_has_class ( el, cls_name ){
12	var re = new RegExp( "(^|\\s)" + cls_name + "(\\s|$)", 'g' );
13	return re.test( el.className );
14}
15function cws_add_class ( el, cls_name ){
16	if(!el){
17		return false;
18	}
19	el.className =  el.className.length ? el.className + " " + cls_name : cls_name;		
20}
21function cws_remove_class ( el, cls_name ){
22	var re = new RegExp( "\\s?" + cls_name, "g" );
23	el.className = el.className.replace( re, '' );
24}
25
26/*--------- CWS_RESPONSIVE_SCRIPTS ----------*/
27function is_mobile_device(){
28	if ( navigator.userAgent.match( /(Android|iPhone|iPod|iPad|Phone|DROID|webOS|BlackBerry|Windows Phone|ZuneWP7|IEMobile|Tablet|Kindle|Playbook|Nexus|Xoom|SM-N900T|GT-N7100|SAMSUNG-SGH-I717|SM-T330NU)/ ) ) {
29		return true;
30	} else {
31		return false;
32	}
33}
34function cws_is_tablet_viewport () {
35	if ( window.innerWidth > 767 && window.innerWidth < 1367 && is_mobile_device() ){
36		return true;
37	} else {
38		return false;
39	}		
40}
41function is_mobile () {
42	if ( window.innerWidth < 768 ){
43		return true;
44	} else {
45		return false;
46	}		
47}
48function not_desktop(){
49	if( (window.innerWidth < 1367 && is_mobile_device()) || window.innerWidth < 1200 ){
50		return true;
51	} else {
52		return false;
53	}
54}
55function cws_resize_controller() {
56	var cwsBody = jQuery('body');
57	if( is_mobile_device() && cws_is_tablet_viewport()){
58		cwsBody.removeClass('cws_mobile');
59		cwsBody.addClass('cws_tablet');
60	} else if ( is_mobile_device() && is_mobile() ){
61		cwsBody.removeClass('cws_tablet');
62		cwsBody.addClass('cws_mobile');
63	} else {
64		cwsBody.removeClass('cws_tablet');
65		cwsBody.removeClass('cws_mobile');
66	}
67}
68function cws_resize() {
69	cws_resize_controller();
70	window.addEventListener( "resize", function (){
71		cws_resize_controller();
72	}, false );
73}
74function cws_is_mobile () {
75	var device = is_mobile_device();
76	var viewport = not_desktop();
77	return device || viewport;
78}
79/*\--------- CWS_RESPONSIVE_SCRIPTS ----------\*/
80
81function cws_merge_trees ( arr1, arr2 ){
82	if ( typeof arr1 != 'object' || typeof arr2 != 'object' ){
83		return false;
84	}
85	return cws_merge_trees_walker ( arr1, arr2 );
86}
87function cws_merge_trees_walker ( arr1, arr2 ){
88	if ( typeof arr1 != 'object' || typeof arr2 != 'object' ){
89		return false;
90	}
91	var keys1 = Object.keys( arr1 ); /* ! not working with null value */
92	var keys2 = Object.keys( arr2 );
93	var r = {};
94	var i;
95	for ( i = 0; i < keys2.length; i++ ){
96		if ( typeof arr2[keys2[i]] == 'object' ){
97			if ( Array.isArray( arr2[keys2[i]] ) ){
98				if ( keys1.indexOf( keys2[i] ) === -1 ){
99					r[keys2[i]] = arr2[keys2[i]];
100				}
101				else{
102					r[keys2[i]] = arr1[keys2[i]];
103				}				
104			}
105			else{
106				if ( typeof arr1[keys2[i]] == 'object' ){
107					r[keys2[i]] = cws_merge_trees_walker( arr1[keys2[i]], arr2[keys2[i]] );
108				}
109				else{
110					r[keys2[i]] = cws_merge_trees_walker( {}, arr2[keys2[i]] );
111				}
112			}
113		}
114		else{
115			if ( keys1.indexOf( keys2[i] ) === -1 ){
116				r[keys2[i]] = arr2[keys2[i]];
117			}
118			else{
119				r[keys2[i]] = arr1[keys2[i]];
120			}
121		}
122	}
123	return r;
124}
125
126function cws_get_flowed_previous ( el ){
127	var prev = el.previousSibling;
128	var is_prev_flowed;
129	if ( !prev ) return false;
130	is_prev_flowed = cws_is_element_flowed( prev );
131	if ( !is_prev_flowed ){
132		return cws_get_flowed_previous( prev );
133	}
134	else{
135		return prev;
136	}
137}
138function cws_is_element_flowed ( el ){
139	var el_styles;
140	if ( el.nodeName === "#text" ){
141		return false;
142	}
143	el_styles = getComputedStyle( el );
144	if ( el_styles.display === "none" || ["fixed","absolute"].indexOf( el_styles.position ) != -1 ){
145		return false;
146	}else{
147		return true;
148	}
149}
150
151function cws_empty_p_filter_callback (){
152	var el = this;
153	if ( el.tagName === "P" && !el.innerHTML.length ){
154		return false;
155	}
156	else{
157		return true;
158	}	
159}
160function cws_br_filter_callback (){
161	var el = this;
162	if ( el.tagName === "BR" ){
163		return false;
164	}
165	else{
166		return true;
167	}	
168}
169
170function cws_getRandomInt ( min, max ){
171	var min = min !== undefined ? min : 0;
172	var max = max !== undefined ? max : 1000000;
173	return Math.floor( Math.random() * (max - min + 1) ) + min;
174}
175
176// Converts from degrees to radians.
177function cws_math_radians (degrees){
178	return degrees * Math.PI / 180;
179};
180
181// Converts from radians to degrees.
182function cws_math_degrees (radians){
183	return radians * 180 / Math.PI;
184};
185
186
187/**********************************
188************ CWS HOOKS ************
189**********************************/
190function cws_hooks_init (){
191	window.cws_hooks = {}
192}
193function cws_add_action ( tag, callback ){
194	if ( typeof tag !== "string" || !tag.length ){
195		return false;
196	}
197	if ( typeof callback !== "function" ){
198		return false;
199	}
200	var hooks 	= window.cws_hooks;
201	var hook;
202	if ( hooks[tag] === 'object' ){
203		hook = hooks[tag];
204	}
205	else{
206		hooks[tag] = hook = new cws_hook ( tag );
207	}
208	hook.addAction( callback );
209}
210function cws_do_action ( tag, args ){
211	var args 		= Array.isArray( args ) ? args : new Array ();
212	var hooks 		= window.cws_hooks;
213	var hook 		= hooks[tag]; 
214	var hook_exists = typeof hook === 'object';
215	if ( hook_exists ){
216		hook.run( args );
217	}
218	return false;
219}
220function cws_hook ( tag ){
221	this.tag = tag;
222	this.actions = {};
223	this.genActionID 	= function (){
224		return cws_uniq_id( "cws_action_" );
225	}
226	this.addAction 		= function ( callback ){
227		var actionID 			= this.genActionID();
228		var action 				= new cws_action( this, actionID, callback )
229		this.actions[actionID] 	= action;
230	}
231	this.run 			= function ( args ){
232		var actionID, action;
233		for ( actionID in this.actions ){
234			action = this.actions[actionID];
235			action.do( args );
236		}
237	}
238}
239function cws_action ( hook, actionID, callback ){
240	this.hook 		= hook;
241	this.id 		= actionID;
242	this.callback 	= callback;
243	this.do 		= function ( args ){
244		this.callback.apply( this, args );
245	}
246}
247/**********************************
248************ \CWS HOOKS ***********
249**********************************/
250
251
252/**********************************
253*********** CWS LOADER ************
254**********************************/
255(function ($){
256
257	var loader;
258	$.fn.start_cws_loader = start_cws_loader;
259	$.fn.stop_cws_loader = stop_cws_loader;
260
261	jQuery(document).ready(function (){
262		cws_page_loader_controller ();
263	});
264
265	function cws_page_loader_controller (){
266		var cws_page_loader, interval, timeLaps ;
267		cws_page_loader = $( "#cws_page_loader" );
268		timeLaps = 0;
269		interval = setInterval( function (){
270			var page_loaded = cws_check_if_page_loaded ();	
271			timeLaps ++;
272			if ( page_loaded || timeLaps == 12) {
273				clearInterval ( interval );
274				cws_page_loader.stop_cws_loader ();
275			}
276		}, 10);
277	}
278	function cws_check_if_page_loaded (){
279		var keys, key, i, r;
280		if ( window.cws_modules_state == undefined ) return false;
281		r = true;
282		keys = Object.keys( window.cws_modules_state );
283		for ( i = 0; i < keys.length; i++ ){
284			key = keys[i];
285			if ( !window.cws_modules_state[key] ){
286				r = false;
287				break;
288			}
289		}
290		return r;
291	}
292	function start_cws_loader (){
293		var loader_obj, loader_container, indicators;
294		loader = jQuery( this );
295		if ( !loader.length ) return;
296		loader_container = loader[0].parentNode;
297		if ( loader_container != null ){
298			loader_container.style.opacity = 1;
299			setTimeout( function (){
300				loader_container.style.display = "block";
301			}, 10);
302		}
303	}
304	function stop_cws_loader (){
305		var loader_obj, loader_container, indicators;
306		loader = jQuery( this );
307		if ( !loader.length ) return;
308		loader_container = loader[0].parentNode;
309		if ( loader_container != null ){
310			loader_container.style.opacity = 0;
311			setTimeout( function (){
312				loader_container.style.display = "none";
313				jQuery( ".cws_textmodule_icon_wrapper.add_animation_icon" ).cws_services_icon();
314			}, 200);
315		}
316	}
317	function updateCirclePos(){
318		var circle=$obj.data("circle");
319		TweenMax.set($obj,{
320			x:Math.cos(circle.angle)*circle.radius,
321			y:Math.sin(circle.angle)*circle.radius,
322		})
323		requestAnimationFrame(updateCirclePos);
324	}
325	function setupCircle($obj){
326		if(typeof($obj.data("circle"))=="undefined"){
327			$obj.data("circle",{radius:0,angle:0});
328
329			updateCirclePos();
330		}
331	}
332	function startCircleAnim($obj,radius,delay,startDuration,loopDuration){
333		setupCircle($obj);
334		$obj.data("circle").radius=0;
335		$obj.data("circle").angle=0;
336		TweenMax.to($obj.data("circle"),startDuration,{
337			delay:delay,
338			radius:radius,
339			ease:Quad.easeInOut
340		});
341		TweenMax.to($obj.data("circle"),loopDuration,{
342			delay:delay,
343			angle:Math.PI*2,
344			ease:Linear.easeNone,
345			repeat:-1
346		});
347	}
348	function stopCircleAnim($obj,duration){
349		TweenMax.to($obj.data("circle"),duration,{
350			radius:0,
351			ease:Quad.easeInOut,
352			onComplete:function(){
353				TweenMax.killTweensOf($obj.data("circle"));
354			}
355		});
356	}
357
358}(jQuery));
359
360/**********************************
361*********** \CWS LOADER ***********
362**********************************/
363
364
365/**********************************
366********** CWS PARALLAX ***********
367**********************************/
368
369(function ( $ ){
370  
371	$.fn.cws_prlx = cws_prlx;
372
373	window.addEventListener( 'scroll', function (){
374		if ( window.cws_prlx != undefined && !window.cws_prlx.disabled ){
375			window.cws_prlx.translate_layers();
376		}
377	}, false );
378
379	window.addEventListener( 'resize', function (){
380		var i, section_id, section_params, layer_id;
381		if ( window.cws_prlx != undefined ){
382			if ( window.cws_prlx.servant.is_mobile() ){
383				if ( !window.cws_prlx.disabled ){
384					for ( layer_id in window.cws_prlx.layers ){
385						window.cws_prlx.layers[layer_id].el.removeAttribute( 'style' );
386					}
387					window.cws_prlx.disabled = true;          
388				}
389			}
390			else{
391				if ( window.cws_prlx.disabled ){
392					window.cws_prlx.disabled = false;
393				}
394				for ( section_id in window.cws_prlx.sections ){
395					section_params = window.cws_prlx.sections[section_id];
396					if ( section_params.height != section_params.el.offsetHeight ){
397						window.cws_prlx.prepare_section_data( section_id );
398					}
399				}
400			}
401		}
402	}, false );
403
404	function cws_prlx ( args ){
405		var factory, sects;
406		sects = $( this );
407		if ( !sects.length ) return;
408		factory = new cws_prlx_factory( args );
409		window.cws_prlx = window.cws_prlx != undefined ? window.cws_prlx : new cws_prlx_builder ();
410		sects.each( function (){
411			var sect = $( this );
412			var sect_id = factory.add_section( sect );
413			if ( sect_id ) window.cws_prlx.prepare_section_data( sect_id );
414		});
415	}
416
417	function cws_prlx_factory ( args ){
418		var args = args != undefined ? args : {};
419		args.def_speed = args.def_speed != undefined && !isNaN( parseInt( args.def_speed ) ) && parseInt( args.def_speed > 0 ) && parseInt( args.def_speed <= 100 ) ? args.def_speed : 50;
420		args.layer_sel = args.layer_sel != undefined && typeof args.layer_sel == "string" && args.layer_sel.length ? args.layer_sel : ".cws_prlx_layer";  
421		this.args = args;
422		this.add_section = cws_prlx_add_section;
423		this.add_layer = cws_prlx_add_layer; 
424		this.remove_layer = cws_prlx_remove_layer;   
425	}
426
427	function cws_prlx_builder (){
428		this.servant = new cws_servant ();
429		this.sections = {};
430		this.layers = {}; 
431		this.calc_layer_speed = cws_prlx_calc_layer_speed;
432		this.prepare_section_data = cws_prlx_prepare_section_data;
433		this.prepare_layer_data = cws_prlx_prepare_layer_data;
434		this.translate_layers = cws_prlx_translate_layers;
435		this.translate_layer = cws_prlx_translate_layer;
436		this.conditions = {};
437		this.conditions.layer_loaded = cws_prlx_layer_loaded_condition;
438		this.disabled = false;
439	}
440
441	function cws_prlx_add_section ( section_obj ){
442		var factory, section, section_id, layers, layer, i;
443		factory = this;
444		section = section_obj[0];
445		layers = $( factory.args.layer_sel, section_obj );
446		if ( !layers.length ) return false;
447		section_id = window.cws_prlx.servant.uniq_id( 'cws_prlx_section_' );
448		section.id = section_id;
449
450		window.cws_prlx.sections[section_id] = {
451			'el' : section,
452			'height' : null,
453			'layer_sel' : factory.args.layer_sel
454		}
455
456		if ( /cws_Yt_video_bg/.test( section.className ) ){  /* for youtube video background */ 
457			section.addEventListener( "DOMNodeRemoved", function ( e ){
458				var el = e.srcElement ? e.srcElement : e.target;
459				if ( $( el ).is( factory.args.layer_sel ) ){
460					factory.remove_layer( el.id );
461				}
462			}, false );
463			section.addEventListener( "DOMNodeInserted", function ( e ){
464				var el = e.srcElement ? e.srcElement : e.target;
465				if ( $( el ).is( factory.args.layer_sel ) ){
466					factory.add_layer( el, section_id );
467				}
468			}, false );
469		}
470
471		section.addEventListener( "DOMNodeRemoved", function ( e ){ /* for dynamically removed content */
472			window.cws_prlx.prepare_section_data( section_id );
473		},false );
474		section.addEventListener( "DOMNodeInserted", function ( e ){ /* for dynamically added content */
475			window.cws_prlx.prepare_section_data( section_id );
476		},false );
477
478		for ( i = 0; i < layers.length; i++ ){
479			layer = layers[i];
480			factory.add_layer( layer, section_id )
481		}
482
483		return section_id;
484
485	}
486
487	function cws_prlx_add_layer ( layer, section_id ){
488		var factory, layer_rel_speed, layer_params;
489		factory = this;
490		layer.id = !layer.id.length ? window.cws_prlx.servant.uniq_id( 'cws_prlx_layer_' ) : layer.id;
491		layer_rel_speed = $( layer ).data( 'scroll-speed' );
492		layer_rel_speed = layer_rel_speed != undefined ? layer_rel_speed : factory.args.def_speed;
493		layer_params = {
494			'el' : layer,
495			'section_id' : section_id,
496			'height' : null,
497			'loaded' : false,
498			'rel_speed' : layer_rel_speed,
499			'speed' : null
500		}
501		window.cws_prlx.layers[layer.id] = layer_params;
502		return layer.id;
503	}
504
505	function cws_prlx_remove_layer ( layer_id ){
506		var layers;
507		layers = window.cws_prlx.layers;
508		if ( layers[layer_id] != undefined ){
509			delete layers[layer_id];
510		}
511	}
512
513	function cws_prlx_prepare_section_data ( section_id ){
514		var section, section_params, layer_sel, layers, layer, layer_id, i, section_obj;
515		if ( !Object.keys( window.cws_prlx.sections ).length || window.cws_prlx.sections[section_id] == undefined ) return false;
516		section_params = window.cws_prlx.sections[section_id];
517		section = section_params.el;
518		section_params.height = section.offsetHeight;
519		section_obj = $( section );
520		layers = $( section_params.layer_sel, section_obj );
521		for ( i=0; i<layers.length; i++ ){
522			layer = layers[i];
523			layer_id = layer.id;
524			if ( layer_id ) window.cws_prlx.prepare_layer_data( layer_id, section_id );
525		}
526	}
527
528	function cws_prlx_prepare_layer_data ( layer_id, section_id ){
529		window.cws_prlx.servant.wait_for( 'layer_loaded', [ layer_id ], function ( layer_id ){
530			var layer_params, layer;
531			layer_params = window.cws_prlx.layers[layer_id];
532			layer = layer_params.el;
533			layer_params.height = layer.offsetHeight;
534			window.cws_prlx.calc_layer_speed( layer_id );
535			window.cws_prlx.translate_layer( layer_id );
536			layer_params.loaded = true;
537		}, [ layer_id ]);    
538	}
539
540	function cws_prlx_translate_layers (){
541		var layers, layer_ids, layer_id, i;
542		if ( window.cws_prlx == undefined ) return;
543		layers = window.cws_prlx.layers;
544		layer_ids = Object.keys( layers );
545		for ( i = 0; i < layer_ids.length; i++ ){
546			layer_id = layer_ids[i];
547			window.cws_prlx.translate_layer( layer_id );
548		}
549	}
550
551	function cws_prlx_translate_layer ( layer_id ){
552		var layer_params, section, layer, layer_translation, style_adjs;
553		if ( window.cws_prlx == undefined || window.cws_prlx.layers[layer_id] == undefined ) return false;
554		layer_params = window.cws_prlx.layers[layer_id];
555		if ( layer_params.speed == null ) return false;
556		if ( layer_params.section_id == undefined || window.cws_prlx.sections[layer_params.section_id] == undefined ) return false;
557		section = window.cws_prlx.sections[layer_params.section_id].el;
558		if ( window.cws_prlx.servant.is_visible( section ) ) {
559			layer = layer_params.el;
560
561			layer_translation = ( section.getBoundingClientRect().top - window.innerHeight ) * layer_params.rel_speed;
562			style_adjs = {
563				"WebkitTransform" : "translate(0%," + layer_translation + "px)",
564				"MozTransform" : "translate(0%," + layer_translation + "px)",
565				"msTransform" : "translate(0%," + layer_translation + "px)",
566				"OTransform" : "translate(0%," + layer_translation + "px)",
567				"transform" : "translate(0%," + layer_translation + "px)"
568			}
569
570			for (var key in style_adjs ){
571				layer.style[key] = style_adjs[key];
572			}
573		}
574	}
575
576	function cws_servant (){
577		this.uniq_id = cws_uniq_id;
578		this.wait_for = cws_wait_for;
579		this.is_visible = cws_is_visible;
580		this.is_mobile = cws_is_mobile;
581	}
582
583	function cws_uniq_id ( prefix ){
584		var d, t, n, id;
585		var prefix = prefix != undefined ? prefix : "";
586		d = new Date();
587		t = d.getTime();
588		n = parseInt( Math.random() * t );
589		id = prefix + n;
590		return id;
591	}
592
593	function cws_wait_for ( condition, condition_args, callback, callback_args ){
594		var match = false;
595		var condition_args = condition_args != undefined && typeof condition_args == 'object' ? condition_args : new Array();
596		var callback_args = callback_args != undefined && typeof callback_args == 'object' ? callback_args : new Array();
597		if ( condition == undefined || typeof condition != 'string' || callback == undefined || typeof callback != 'function' ) return match;
598		match = window.cws_prlx.conditions[condition].apply( window, condition_args );
599		if ( match == true ){
600			callback.apply( window, callback_args );
601			return true;
602		}
603		else if ( match == false ){
604			setTimeout( function (){
605				cws_wait_for ( condition, condition_args, callback, callback_args );
606			}, 10);
607		}
608		else{
609			return false;
610		}
611	}
612
613	function cws_is_visible ( el ){
614		var window_top, window_height, window_bottom, el_top, el_height, el_bottom, r;
615		window_top = window.pageYOffset;
616		window_height = window.innerHeight;
617		window_bottom = window_top + window_height;
618		el_top = $( el ).offset().top;
619		el_height = el.offsetHeight;
620		el_bottom = el_top + el_height;
621		r = ( el_top > window_top && el_top < window_bottom ) || ( el_top < window_top && el_bottom > window_bottom ) || ( el_bottom > window_top && el_bottom < window_bottom ) ? true : false;
622		return r;
623	}
624
625	function cws_prlx_layer_loaded_condition ( layer_id ){
626		var layer, r;
627		r = false;
628		if ( layer_id == undefined || typeof layer_id != 'string' ) return r;
629		if ( window.cws_prlx.layers[layer_id] == undefined ) return r;
630		layer = window.cws_prlx.layers[layer_id].el;
631		switch ( layer.tagName ){
632			case "IMG":
633			if ( layer.complete == undefined ){
634			}
635			else{
636				if ( !layer.complete ){
637					return r;
638				}
639			}
640			break;  
641			case "DIV":  /* for youtube video background */
642			if ( /^video-/.test( layer.id ) ){
643				return r;
644			}
645			break;      
646		}
647		return true;
648	}
649
650	function cws_prlx_calc_layer_speed ( layer_id ){
651		var layer_params, layer, section_id, section_params, window_height;
652		layer_params = window.cws_prlx.layers[layer_id];
653		layer = layer_params.el;
654		section_id = layer_params.section_id;
655		section_params = window.cws_prlx.sections[section_id];
656		window_height = window.innerHeight;
657		layer_params.speed = ( ( layer_params.height - section_params.height ) / ( window_height + section_params.height ) ) * ( layer_params.rel_speed / 100 );
658	}
659
660}(jQuery));
661
662/**********************************
663********** \CWS PARALLAX **********
664**********************************/
665
666/* cws rtl */
667var directRTL;
668var wait_load_portfolio = false;
669if (jQuery("html").attr('dir') == 'rtl') {
670	directRTL = 'rtl';
671} else {
672	directRTL = '';
673};
674
675/* cws megamenu */
676if ( window.cws_megamenu != undefined ){
677
678	var menu = document.querySelectorAll( ".main-nav-container .main-menu" );
679	for (var i = 0; i <= menu.length; i++) {
680		window.cws_megamenu_main = new cws_megamenu( menu[i], {
681			'fw_sel'							: '.container',
682			'bottom_level_sub_menu_width_adj'	: 2
683		});
684	}
685	
686	window.cws_megamenu_sticky = new cws_megamenu( document.querySelector( "#sticky_menu" ), {
687		'fw_sel'							: '.wide_container',
688		'bottom_level_sub_menu_width_adj'	: 2
689	});	
690
691}
692
693/**********************************
694********** SCRIPTS INIT ***********
695**********************************/
696cws_modules_state_init();
697is_visible_init();
698cws_milestone_init();
699cws_progress_bar_init();
700cws_widget_divider_init();
701setTimeout(cws_widget_services_init,0);
702
703jQuery(document).ready(function (){	
704
705	window.cws_modules_state.sync = true;
706	wp_standard_processing();
707
708	/***** Header scripts init *****/
709	cws_center_menu_init();
710	cws_top_panel_search();
711	cws_adaptive_top_bar_init();
712	cws_top_social_init();
713	cws_page_header_video_init();
714	cws_sidebar_bottom_info();
715	cws_revslider_class_add();
716	cws_blog_full_width_layout();
717	cws_fullwidth_background_row();
718	cws_header_bg_init();
719	cws_header_imgs_cover_init();
720	cws_header_parallax_init();
721	cws_scroll_parallax_init();
722	/****\ Header scripts init \****/
723	
724	/***** Other libraries init  *****/
725	vimeo_init();
726	cws_self_hosted_video();
727	wow_init();
728	cws_fancybox_init();
729	isotope_init();
730	onYouTubePlayerAPIReady();
731	/****\ Other libraries init \****/
732
733	/***** Pages filter/pagination/carousel init  *****/
734	if( jQuery('body').hasClass('customize-support') ){
735		setTimeout(function() {
736			cws_carousel(".cws_carousel_wrapper:not(.inner_slick)");
737			cws_carousel(".cws_carousel_wrapper.inner_slick");
738		}, 1);
739	} else {
740		cws_carousel(".cws_carousel_wrapper:not(.inner_slick)");
741		cws_carousel(".cws_carousel_wrapper.inner_slick");	
742	}
743	cws_portfolio_pagination_init();
744	cws_portfolio_filter_init();
745	cws_ourteam_pagination_init();
746	cws_ourteam_filter_init();
747	widget_archives_hierarchy_init();
748	/****\ Pages filter/pagination/carousel init  \****/
749
750	/***** CWS Features init  *****/
751	cws_resize();
752	cws_fs_video_bg_init();
753	boxed_var_init();
754	load_more_init();
755	cws_parallax_init();
756	cws_prlx_init_waiter();
757	cws_message_box_init();
758	jQuery( ".cws_milestone_module" ).cws_milestone();
759	jQuery( ".cws_progress_bar_module" ).cws_progress_bar();
760	cws_sticky_sidebars_init();
761	single_sticky_content();
762	smooth_comment_link();
763	cws_widgets_on_tablet();
764	cws_footer_on_bottom();
765	scroll_to_top();
766	navigation_hold_post();
767	cws_icons_wheel_init();
768	cws_roadmap_before_end_point();
769	cws_roadmap_animation();
770	cws_benefits_init();
771	cws_countdown();
772	cws_calculator();
773	/****\ CWS Features init  \****/
774
775	/***** CWS Fixes init  *****/
776	cws_first_place_col();
777	staff_advanced_hover();
778	cws_custom_inputs();
779	cws_fix_styles_init();
780	cryptop_services_hover();
781	cryptop_portfolio_tablet_hover();
782	Video_resizer();
783	vc_accordion_fix();
784	embed_videos_height();
785	cws_megamenu_active();
786	/****\ CWS Fixes init  \****/
787
788});
789
790window.addEventListener( "load", function() {
791
792	/***** CWS Fixes init  *****/
793	cws_revslider_pause_init();
794	/****\ CWS Fixes init  \****/
795
796	/***** Header scripts init *****/
797	cws_simple_sticky_menu();
798	cws_smart_sticky_menu();
799	mainSearchForm();
800	cws_toggle_topbar();
801	cws_toggle_menu();
802	cws_close_menu();
803	cws_click_menu_item();
804	cws_side_panel_init();
805	pmc_plugin_styling();
806	/****\ Header scripts init \****/
807
808	setTimeout(function() {
809		cws_particles_init();
810		cws_blank_preloader();
811	}, 500);
812	cws_image_particles();
813	cws_infinite_autoplay();
814}, false);
815
816jQuery(window).resize( function (){
817	cws_full_width_row();
818	cws_fullwidth_background_row();
819	cws_slider_video_height (jQuery( ".fs_video_slider" ));
820	cws_slider_video_height (jQuery( ".fs_img_header" ));
821
822	vimeo_init();
823	cws_self_hosted_video ();
824	Video_resizer ();
825
826	cws_go_to_page_init();
827	cws_toggle_menu();
828	cws_click_menu_item();
829	cws_widgets_on_tablet();
830	cws_footer_on_bottom();
831} );
832/**********************************
833********** /SCRIPTS INIT **********
834**********************************/
835
836/**********************************
837******* SCRIPTS DECLARATION *******
838**********************************/
839function cws_modules_state_init (){
840	window.cws_modules_state = {
841		"sync" : false,		
842	}
843}
844
845function cws_unique_id ( prefix ){
846	var prefix = prefix != undefined && typeof prefix == 'string' ? prefix : "";
847	var d = new Date();
848	var t = d.getTime();
849	var unique = Math.random() * t;	
850	var unique_id = prefix + unique;
851	return unique_id;	
852}
853
854function wp_standard_processing (){
855	var galls;
856	jQuery( "img[class*='wp-image-']" ).each( function (){
857		var canvas_id;
858		var el = jQuery( this );
859		var parent = el.parent( "a" );
860		var align_class_matches = /align\w+/.exec( el.attr( "class" ) );
861		var align_class = align_class_matches != null && align_class_matches[0] != undefined ? align_class_matches[0] : "";
862		var added_class = "cws_img_frame";
863		if ( align_class.length ){
864			if ( parent.length ){
865				el.removeClass( align_class );
866			}
867			added_class += " " + align_class;
868		}
869		if ( parent.length ){
870			parent.addClass( added_class );
871			parent.children().wrapAll( "<div class='cws_blur_wrapper' />" );
872		}
873	});
874	galls = jQuery( ".gallery[class*='galleryid-']" );
875	if ( galls.length ){
876		galls.each( function (){
877			var gall = jQuery( this );
878			var gall_id = cws_unique_id ( "wp_gallery_" );
879			jQuery( "a", gall ).attr( "data-fancybox-group", gall_id );
880		});
881	}
882
883	//Check if function exist
884	if (typeof fancybox === 'function') {
885		jQuery( ".gallery-icon a[href*='.jpg'], .gallery-icon a[href*='.jpeg'], .gallery-icon a[href*='.png'], .gallery-icon a[href*='.gif'], .cws_img_frame[href*='.jpg'], .cws_img_frame[href*='.jpeg'], .cws_img_frame[href*='.png'], .cws_img_frame[href*='.gif']" ).fancybox();
886	}
887}
888
889/***** Header scripts declaration *****/
890function cws_center_menu_init(){
891	if (!is_mobile() && !is_mobile_device() && jQuery('header').hasClass('menu-center') ){
892		var icons_block_width = [];
893		var max_block_width;
894
895		var headerLogoWidth = jQuery('header').find('.header_logo_part').width(),
896			menuIconLeft = jQuery('.menu_left_icons .menu_icons_wrapper'),
897			menuIconRight = jQuery('.menu_right_icons .menu_icons_wrapper');
898
899		jQuery.each([menuIconLeft,menuIconRight], function(i, el) {
900			icons_block_width.push(jQuery(el).width());
901		});
902
903		max_block_width = Math.max.apply(null, icons_block_width);
904
905		if( jQuery('header').hasClass('logo-left') ){
906			menuIconLeft.css('min-width', max_block_width);
907			menuIconRight.css('min-width', max_block_width+headerLogoWidth);
908		}
909
910		if( jQuery('header').hasClass('logo-center') ){
911			menuIconLeft.css('min-width', max_block_width);
912			menuIconRight.css('min-width', max_block_width);
913		}	
914
915		if( jQuery('header').hasClass('logo-right') ){
916			menuIconLeft.css('min-width', max_block_width+headerLogoWidth);
917			menuIconRight.css('min-width', max_block_width);
918		}		
919
920	}
921}
922
923function cws_top_panel_search (){
924	//Top bar search
925	jQuery(".top_bar_search .search_icon").on('click', function(){
926		var el = jQuery(this);
927		el.closest('.top_bar_search').find('.row_text_search .search-field').val('');
928		if(!not_desktop()){
929			el.closest('.top_bar_search').find('.row_text_search .search-field').focus();
930		}
931		el.closest('.top_bar_search').toggleClass( "show-search" );
932	});
933
934	//Clear text (ESC)
935	jQuery(".top_bar_search .row_text_search .search-field").keydown(function(event) {
936		if (event.keyCode == 27){
937			jQuery(this).val('');
938		}
939	});
940}
941
942function cws_adaptive_top_bar(first_init, top_bar_window_resolution, top_bar_left_items, top_bar_right_items){
943	if( jQuery(window).width() < 768 && (localStorage.getItem('top_bar_check') != 'mobile' || first_init)){
944		//Set mobile top-bar
945		jQuery('.top_bar_wrapper .container').append(top_bar_left_items);
946		jQuery('.top_bar_wrapper .container').append(top_bar_right_items);
947
948		//Сheck if the script was started
949		localStorage.setItem('top_bar_check', 'mobile');
950	} else if( jQuery(window).width() > 767 && localStorage.getItem('top_bar_check') != 'desktop' ) {
951		//Remove mobile top-bar
952		jQuery(top_bar_left_items).remove();
953		jQuery(top_bar_right_items).remove();
954
955		//Set desktop top-bar
956		jQuery('.top_bar_wrapper .top_bar_icons.left_icons').append(top_bar_left_items);
957		jQuery('.top_bar_wrapper .top_bar_icons.right_icons').append(top_bar_right_items);
958
959		//Сheck if the script was started
960		localStorage.setItem('top_bar_check', 'desktop');
961
962		//Reinit JS
963		cws_top_panel_search();
964		cws_top_social_init();
965		cws_side_panel_toggle();
966	}
967}
968
969function cws_adaptive_top_bar_init(){
970	//Definite variables
971	var top_bar_left_items = jQuery('.top_bar_wrapper .top_bar_icons.left_icons > *');
972	var top_bar_right_items = jQuery('.top_bar_wrapper .top_bar_icons.right_icons > *');
973	var first_init = false;
974
975	if( jQuery(window).width() < 768 ){
976		var top_bar_window_resolution = localStorage.setItem('top_bar_check', 'mobile');
977		first_init = true;
978	} else {
979		var top_bar_window_resolution = localStorage.setItem('top_bar_check', 'desktop');
980	}
981
982	cws_adaptive_top_bar(first_init, top_bar_window_resolution, top_bar_left_items, top_bar_right_items);
983
984	jQuery(window).resize( function (){
985		cws_adaptive_top_bar(false, top_bar_window_resolution, top_bar_left_items, top_bar_right_items);
986	});
987}
988
989function cws_top_social_init (){
990	jQuery('.social_links_wrapper.toogle-of').on('click', function() {
991		jQuery(this).find('.cws_social_links').toggleClass('active');
992		jQuery(this).find('.social-btn-open-icon').toggleClass('active');
993		jQuery(this).find('.social-btn-open').toggleClass('active');
994	});
995}
996
997function cws_set_header_video_wrapper_height (){
998	var containers = document.getElementsByClassName( 'page_header_video_wrapper' );
999	for ( var i=0; i<containers.length; i++ ){
1000		cws_set_window_height( containers[i] );
1001	}			
1002}
1003
1004function cws_page_header_video_init (){
1005	cws_set_header_video_wrapper_height();
1006	window.addEventListener( 'resize', cws_set_header_video_wrapper_height, false )
1007}
1008
1009function cws_side_panel_toggle(){
1010	jQuery(".side_panel_trigger").on( 'click', function(){
1011		jQuery("body").toggleClass("side_panel_show");
1012		return false;
1013	});
1014}
1015
1016function cws_side_panel_init () {
1017	if( jQuery('.side_panel_container').hasClass('appear-pull') ){
1018		jQuery('body').addClass('side_panel_pull');
1019	}
1020
1021	cws_side_panel_toggle();
1022
1023	jQuery(".side_panel_overlay, .close_side_panel").on( 'click', function(){
1024		jQuery("body").removeClass("side_panel_show");
1025		jQuery("body").removeClass('oveflow-hidden');
1026		jQuery(".page_content aside").removeClass('active');
1027	});
1028}
1029
1030function pmc_plugin_styling(){
1031	jQuery('.tradingview-widget-copyright').remove();
1032}
1033
1034function cws_sidebar_bottom_info(){
1035    var sideBarBottomHeight = jQuery('.side_panel_bottom').height();
1036    jQuery('.side_panel').css('padding-bottom', sideBarBottomHeight + 80);
1037}
1038
1039function cws_blank_preloader(){
1040	jQuery('.cws_blank_preloader').removeClass('active');
1041}
1042
1043function cws_particles_init(){
1044	var particlesID = '';
1045	var particlesColor = '#fff';
1046	var particlesSpeed = 1;
1047	var particlesSaturation = 200;
1048	var particlesSize = 10;
1049	var particlesCount = 20;
1050	var particlesHide = 767;
1051	var particlesLinks = 100;
1052
1053	jQuery('.particles-js').each(function(i, el) {
1054
1055		particlesID = jQuery(el).attr('id');
1056
1057		if( jQuery(el).data('hide') != undefined ){
1058			particlesHide = jQuery(el).data('hide');
1059		}
1060
1061		if( jQuery(window).width() > particlesHide ){
1062
1063			/* -----> Grab data attributes <----- */
1064			if( jQuery(el).data('color') != undefined ){
1065				particlesColor = jQuery(el).data('color');
1066			}
1067			if( jQuery(el).data('saturation') != undefined ){
1068				particlesSaturation = jQuery(el).data('saturation');
1069			}
1070			if( jQuery(el).data('speed') != undefined ){
1071				particlesSpeed = jQuery(el).data('speed');
1072			}
1073			if( jQuery(el).data('size') != undefined ){
1074				particlesSize = jQuery(el).data('size');
1075			}
1076			if( jQuery(el).data('count') != undefined ){
1077				particlesCount = jQuery(el).data('count');
1078			}
1079			if( jQuery(el).data('links') != undefined ){
1080				particlesLinks = jQuery(el).data('links');
1081			}
1082
1083			/* -----> Particles Init <----- */
1084			var test = particlesJS(particlesID,
1085			  {
1086			    "particles": {
1087			      "number": {
1088			        "value": particlesCount,
1089			        "density": {
1090			          "enable": true,
1091			          "value_area": particlesSaturation
1092			        }
1093			      },
1094			      "color": {
1095			        "value": particlesColor
1096			      },
1097			      "shape": {
1098			        "type": "circle",
1099			        "stroke": {
1100			          "width": 0,
1101			          "color": "#000000"
1102			        },
1103			        "polygon": {
1104			          "nb_sides": 5
1105			        }
1106			      },
1107			      "opacity": {
1108			        "value": 1,
1109			        "random": true,
1110			        "anim": {
1111			          "enable": true,
1112			          "speed": 0.2,
1113			          "opacity_min": 0.5,
1114			          "sync": false
1115			        }
1116			      },
1117			      "size": {
1118			        "value": particlesSize,
1119			        "random": false,
1120			        "anim": {
1121			          "enable": true,
1122			          "speed": 1,
1123			          "size_min": particlesSize * 0.7,
1124			          "sync": false
1125			        }
1126			      },
1127			      "line_linked": {
1128			        "enable": true,
1129			        "distance": particlesLinks,
1130			        "color": particlesColor,
1131			        "opacity": 1,
1132			        "width": 1
1133			      },
1134			      "move": {
1135			        "enable": true,
1136			        "speed": particlesSpeed,
1137			        "direction": "none",
1138			        "random": false,
1139			        "straight": false,
1140			        "out_mode": "out",
1141			        "attract": {
1142			          "enable": false,
1143			          "rotateX": 0,
1144			          "rotateY": 0
1145			        }
1146			      }
1147			    },
1148			    "interactivity": {
1149			      "detect_on": "canvas",
1150			      "events": {
1151			        "onhover": {
1152			          "enable": true,
1153			          "mode": "grab"
1154			        },
1155			        "onclick": {
1156			          "enable": true,
1157			          "mode": "push"
1158			        },
1159			        "resize": true
1160			      },
1161			      "modes": {
1162			        "grab": {
1163			          "distance": particlesLinks,
1164			          "line_linked": {
1165			            "opacity": .7
1166			          }
1167			        },
1168			        "bubble": {
1169			          "distance": 250,
1170			          "size": particlesSize*1.5,
1171			          "duration": 2,
1172			          "opacity": 1,
1173			          "speed": 1.5
1174			        },
1175			        "repulse": {
1176			          "distance": 100
1177			        },
1178			        "push": {
1179			          "particles_nb": 1
1180			        },
1181			        "remove": {
1182			          "particles_nb": 2
1183			        }
1184			      }
1185			    },
1186			    "retina_detect": true,
1187			  }
1188			);
1189
1190		}
1191
1192	});
1193}
1194
1195function cws_image_particles () {
1196	var $item = jQuery('.cws_particles_logo_module');
1197	if ($item.length) {
1198		$item.each(function(){
1199			var item = jQuery(this).find('.image_particles_data');
1200			var item_image = item.data('img');
1201			var item_id = item.data('id');
1202		    var options = {
1203		        "img": item_image,
1204		        "sizeMin": 1,
1205		        "sizeMax": 6,
1206		        "gridSize": 6,
1207		        "gridStartZoomEnabled": false,
1208		        "gridStartZoom": 1,
1209		        "gridStartZoomSpeed": 10,
1210		        "zoomOnHover": true,
1211		        "zoomOnHoverDelta": 5,
1212		        "mouseoverRadius": 50,
1213		        "shape": "circle",
1214		        "mousemoveBehavior": false,
1215		        "circleMotionSpeedMin": 0,
1216		        "circleMotionSpeedMax": 3,
1217		        "circleMotionRadiusMin": 10,
1218		        "circleMotionRadiusMax": 15,
1219		        "fullScreenStretch": false,
1220		        "fullScreen": false,
1221		        "randomizeGrid": true
1222		    };
1223		    var canvas = document.getElementById(item_id);
1224		    var particler = new Particler(canvas, options);
1225		    particler.run();
1226		})
1227		
1228	}
1229	
1230}
1231
1232function cws_revslider_class_add (){
1233	if (jQuery('.rev_slider_wrapper.fullwidthbanner-container').length) {
1234		jQuery('.rev_slider_wrapper.fullwidthbanner-container').next().addClass('benefits_after_slider');
1235		if (jQuery('.rev_slider_wrapper.fullwidthbanner-container').length && jQuery('.site-main main .benefits_cont:first-child').length) {
1236			if (jQuery('.site-main main .benefits_cont:first-child').css("margin-top").replace("px", "") < -90) {
1237				jQuery('.site-main main .benefits_cont:first-child').addClass('responsive-minus-margin');
1238			}
1239		}
1240	};
1241}
1242
1243function cws_blog_full_width_layout() {
1244	function cws_blog_full_width_controller(){
1245		var div = jQuery('.posts_grid.posts_grid_fw_img');
1246		jQuery(div).each(function(){
1247			div = jQuery(this);
1248			if (!div.hasClass('posts_grid_carousel')) {
1249				var doc_w = jQuery(window).width();
1250				var div_w = jQuery('.page_content main .grid_row').width();
1251				var marg = ( doc_w - div_w ) / 2;
1252
1253				div.each(function() {
1254					jQuery(this).css({
1255						'margin-left' : '-'+(marg-15)+'px',
1256						'margin-right' : '-'+(marg-15)+'px'
1257					})
1258				});
1259				div.find('article.posts_grid_post').each(function() {
1260					jQuery(this).css({
1261						'padding-left' : marg+'px',
1262						'padding-right' : marg+'px'
1263					})
1264				})
1265			}
1266		});
1267	}
1268	cws_blog_full_width_controller();
1269
1270	jQuery(window).resize( function(){
1271		cws_blog_full_width_controller();
1272	});
1273}
1274
1275function cws_fix_vc_full_width_row(){
1276    if( jQuery('html').attr('dir') == 'rtl' ){        
1277        var $elements = jQuery('.cws_stretch_row[data-vc-full-width="true"]');
1278        jQuery($elements).each(function( i, el ){
1279        	jQuery(el).css('right', '-'+jQuery(el).css('left')).css('left', '');	
1280        });
1281    }
1282}
1283
1284// Fixes rows in RTL
1285jQuery(document).on('vc-full-width-row', function () {
1286    cws_fix_vc_full_width_row();
1287});
1288
1289// Run one time because it was not firing in Mac/Firefox and Windows/Edge some times
1290cws_fix_vc_full_width_row();
1291
1292var IE_fix_section = '.cws_vc_shortcode_grid.layout-2';
1293
1294function cws_full_width_row(IE_fix_section){
1295	var section = jQuery(section);
1296    var $elements = jQuery(section).find('[data-cws-full-width="true"]');
1297    $elements.after('<div class="cws_row-full-width"></div>');
1298    jQuery.each($elements, function(key, item) {
1299        var $el = jQuery(this);
1300        var test = $el.attr("data-cws-full-width-init");
1301        $el.addClass("vc_hidden");
1302        var $el_full = $el.next(".cws_row-full-width");
1303        if ($el_full.length || ($el_full = $el.parent().next(".cws_row-full-width")),
1304        $el_full.length) {
1305            var el_margin_left = parseInt($el.css("margin-left"), 10), 
1306        		el_margin_right = parseInt($el.css("margin-right"), 10), 
1307        		offset = 0 - $el_full.offset().left - el_margin_left, 
1308        		width = jQuery(window).width(), 
1309        		cws_styles = '', 
1310        		top = $el.css('top');
1311
1312            cws_styles += "position: absolute;";
1313            cws_styles += "left: "+offset+"px !important;";
1314            cws_styles += "box-sizing: border-box;";
1315            cws_styles += "width: "+width+ "px;";
1316            cws_styles += "top: "+top+ ";";
1317
1318            if (!$el.data("vcStretchContent")) {
1319                var padding = -1 * offset;
1320                0 > padding && (padding = 0);
1321                var paddingRight = width - padding - $el_full.width() + el_margin_left + el_margin_right;
1322                0 > paddingRight && (paddingRight = 0);
1323                cws_styles += "padding-left:"+ padding + "px;";
1324                cws_styles += "padding-right:"+ paddingRight + "px;";
1325            }
1326
1327            $el.css("cssText", cws_styles);
1328
1329            $el.attr("data-cws-full-width-init", "true"),
1330            $el.removeClass("vc_hidden");
1331        }
1332    });
1333}
1334
1335function cws_fullwidth_background_row(){
1336	var main_width = jQuery('main').width();
1337	var row_bg_ofs, column_first_ofs, column_last_ofs;
1338	jQuery('.row_bg.fullwidth_background_bg').each(function(){
1339
1340		row_bg_ofs = jQuery(this).offset();
1341
1342		column_first_ofs = jQuery(this).find('.grid_col:first-child .cols_wrapper').offset();
1343		column_last_ofs = jQuery(this).find('.grid_col:last-child .cols_wrapper').offset();
1344
1345		jQuery(this).find('.grid_col:first-child > .cols_wrapper > .row_bg_layer').css({'left':''+( row_bg_ofs.left - column_first_ofs.left )+'px','width':'auto','right':'0'});
1346		jQuery(this).find('.grid_col:first-child > .cols_wrapper > .row_bg_img_wrapper').css({'left':''+( row_bg_ofs.left - column_first_ofs.left )+'px','width':'auto','right':'0'});
1347
1348		jQuery(this).find('.grid_col:last-child > .cols_wrapper > .row_bg_layer').css({'left':'0px','width':'auto','right':'-'+(jQuery(this).outerWidth() + row_bg_ofs.left - column_last_ofs.left - jQuery(this).find('.grid_col:last-child .cols_wrapper').outerWidth())+'px'});
1349		jQuery(this).find('.grid_col:last-child > .cols_wrapper > .row_bg_img_wrapper').css({'left':'0px','width':'auto','right':'-'+(jQuery(this).outerWidth() + row_bg_ofs.left - column_last_ofs.left - jQuery(this).find('.grid_col:last-child .cols_wrapper').outerWidth())+'px'});
1350		
1351	});
1352}
1353
1354function cws_header_bg_controller ( bg_section ){
1355	var benefits_area = jQuery( ".benefits_area" ).eq( 0 );
1356	var page_content_section = jQuery( ".page_content" ).eq( 0 );
1357	var top_curtain_hidden_class = "hidden";
1358	var top_panel = jQuery( "#site_top_panel" );
1359	var top_curtain = jQuery( "#top_panel_curtain" );
1360	var consider_top_panel = top_panel.length && top_curtain.length && top_curtain.hasClass( top_curtain_hidden_class );
1361		if ( benefits_area.length ){
1362			if ( consider_top_panel ){
1363				bg_section.css( {
1364					'height' : bg_section.parent().outerHeight() + 200 + bg_section.parent().offset().top + top_panel.outerHeight() + "px",
1365					'margin-top' : "-" + ( bg_section.parent().offset().top + top_panel.outerHeight() ) + "px"
1366				});
1367			}
1368			else{
1369				bg_section.css( {
1370					'height' : bg_section.parent().outerHeight() + 200 + bg_section.parent().offset().top + "px",
1371					'margin-top' : "-" + bg_section.parent().offset().top + "px"
1372				});
1373			}
1374			bg_section.addClass( 'height_assigned' );
1375		}
1376		else if ( page_content_section.length ){
1377			if ( page_content_section.hasClass( "single_sidebar" ) || page_content_section.hasClass( "double_sidebar" ) ){
1378				if ( consider_top_panel ){
1379					bg_section.css({
1380						'height' : bg_section.parent().outerHeight() + bg_section.parent().offset().top + top_panel.outerHeight() + "px",
1381						'margin-top' : "-" + ( bg_section.parent().offset().top + top_panel.outerHeight() ) + "px"
1382					});
1383				}
1384				else{
1385					bg_section.css({
1386						'height' : bg_section.parent().outerHeight() + bg_section.parent().offset().top + "px",
1387						'margin-top' : "-" + bg_section.parent().offset().top + "px"
1388					});
1389				}
1390				bg_section.addClass( 'height_assigned' );				
1391			}
1392			else{
1393				if ( consider_top_panel ){
1394					bg_section.css({
1395						'height' : bg_section.parent().outerHeight() + 200 + bg_section.parent().offset().top + top_panel.outerHeight() + "px",
1396						'margin-top' : "-" + ( bg_section.parent().offset().top + top_panel.outerHeight() ) + "px"
1397					});
1398				}
1399				else{
1400					bg_section.css({
1401						'height' : bg_section.parent().outerHeight() + 200 + bg_section.parent().offset().top + "px",
1402						'margin-top' : "-" + bg_section.parent().offset().top + "px"
1403					});
1404				}
1405				bg_section.addClass( 'height_assigned' );				
1406			}
1407		}
1408}
1409
1410function cws_header_bg_init(){
1411	var bg_sections = jQuery('.header_bg_img, .cws_parallax_scene_container');
1412	bg_sections.each( function (){
1413		var bg_section = jQuery( this );
1414		cws_header_bg_controller( bg_section );
1415	});
1416	window.addEventListener( 'resize', function (){
1417		var bg_sections = jQuery('.header_bg_img, .cws_parallax_scene_container');
1418		bg_sections.each( function (){
1419			var bg_section = jQuery( this );
1420			cws_header_bg_controller( bg_section );
1421		});
1422	}, false );
1423}
1424
1425function cws_header_imgs_cover_controller (){
1426	var prlx_sections, prlx_section, section_imgs, section_img, i, j;
1427	var prlx_sections = jQuery( '.cws_parallax_scene_container > .cws_parallax_scene, .header_bg_img > .cws_parallax_section');	
1428	for ( i = 0; i < prlx_sections.length; i++ ){
1429		prlx_section = prlx_sections[i];
1430		section_imgs = jQuery( "img", jQuery( prlx_section ) );
1431		for ( j = 0; j < section_imgs.length; j++ ){
1432			section_img = section_imgs[j];
1433			cws_cover_image( section_img, prlx_section );
1434		}
1435	}
1436}
1437
1438function cws_cover_image ( img, section ){
1439	var section_w, section_h, img_nat_w, img_nat_h, img_ar, img_w, img_h, canvas;
1440	if ( img == undefined || section == undefined ) return;
1441	section_w = section.offsetWidth;
1442	section_h = section.offsetHeight;	
1443	img_nat_w = img.naturalWidth;
1444	img_nat_h = img.naturalHeight;
1445	img_ar = img_nat_w / img_nat_h;
1446	if ( img_ar > 1 ){
1447		img_h = section_h;
1448		img_w = section_h * img_ar;
1449	}
1450	else{
1451		img_w = section_w;
1452		img_h = section_w / img_ar;
1453	}
1454	img.width = img_w;
1455	img.height = img_h;
1456}
1457
1458function cws_header_imgs_cover_init (){
1459	cws_header_imgs_cover_controller ();
1460	window.addEventListener( "resize", cws_header_imgs_cover_controller, false );
1461}
1462
1463function cws_wait_for_header_bg_height_assigned ( callback ){
1464	var header_bg_sections = jQuery( '.header_bg_img, .cws_parallax_scene_container' );
1465	if ( callback == undefined || typeof callback != 'function' ) return;
1466	cws_header_bg_height_assigned_waiter ( header_bg_sections, callback );
1467}
1468
1469function cws_header_bg_height_assigned_waiter ( els, callback ){
1470	var i;
1471	for ( i = 0; i < els.length; i++ ){
1472		if ( jQuery( els[i] ).hasClass( 'height_assigned' ) ){
1473			els.splice( i, 1 );
1474		}
1475	}
1476	if ( els.length ){
1477		setTimeout( function (){
1478			cws_header_bg_height_assigned_waiter ( els, callback );
1479		}, 10 );
1480	}
1481	else{
1482		callback ();
1483		return true;
1484	}
1485}
1486
1487function cws_header_parallax_init (){
1488	var scenes = jQuery( ".cws_parallax_section, .cws_parallax_scene" );
1489	if (typeof Parallax === 'function') {
1490		scenes.each( function (){
1491			var scene = this;
1492			var prlx_scene = new Parallax ( scene );
1493		});
1494	}
1495}
1496
1497function cws_scroll_parallax_init (){
1498	var scroll = 0;
1499	var window_width = jQuery(window).width();
1500	var background_size_width;
1501
1502	jQuery(window).scroll(function() {
1503		scroll = jQuery(window).scrollTop();
1504		window_width = jQuery(window).width();
1505	});
1506
1507
1508	if(jQuery('.title.has_fixed_background').length){
1509
1510		var background_size_width = parseInt(jQuery('.title.has_fixed_background').css('background-size').match(/\d+/));
1511		var title_holder_height = jQuery('.title.has_fixed_background').height();
1512
1513		if (jQuery('.bg_page_header').hasClass('hide_header')){
1514			var top = jQuery('.bg_page_header').data('top');
1515			var bottom = jQuery('.bg_page_header').data('bottom');
1516			title_holder_height = top+bottom+88;
1517		}
1518
1519		var title_rate = (title_holder_height / 10000) * 7;
1520		var title_distance = scroll - jQuery('.title.has_fixed_background').offset().top;
1521		var title_bpos = -(title_distance * title_rate);
1522		jQuery('.title.has_fixed_background').css({'background-position': 'center 0px' });
1523		if(jQuery('.title.has_fixed_background').hasClass('zoom_out')){
1524			jQuery('.title.has_fixed_background').css({'background-size': background_size_width-scroll + 'px auto'});
1525		}
1526	}
1527
1528	jQuery(window).on('scroll', function() {
1529
1530		if(jQuery('.title.has_fixed_background').length){
1531			var title_distance = scroll - jQuery('.title.has_fixed_background').offset().top;
1532			var title_bpos = -(title_distance * title_rate);
1533			jQuery('.title.has_fixed_background').css({'background-position': 'center ' + title_bpos + 'px' });
1534			if(jQuery('.title.has_fixed_background').hasClass('zoom_out') && (background_size_width-scroll > window_width)){
1535				jQuery('.title.has_fixed_background').css({'background-size': background_size_width-scroll + 'px auto'});
1536			}
1537		}
1538	});
1539}
1540
1541function cws_toggle_topbar(){
1542	jQuery('.topbar_trigger').off();
1543	jQuery('.topbar_trigger').on('click', function() {
1544		jQuery('.top_bar_wrapper').toggleClass('active');
1545		jQuery('.top_bar_wrapper .top_bar_inner_wrapper').slideToggle();
1546
1547		setTimeout(function() {
1548			cws_infinite_autoplay();
1549		}, 401);
1550	});
1551}
1552
1553function cws_toggle_menu(){
1554
1555	// -----> Different mneu hamburger animation
1556	if ( cws_detect_browser() == 'Safari' ) {
1557		jQuery('.mobile_menu_hamburger').addClass('iOS-anim');
1558	} else {
1559		jQuery('.mobile_menu_hamburger').addClass('custom-anim');
1560	}
1561
1562	// -----> Toggle menu
1563	if( jQuery('.site_header').hasClass('active-sandwich-menu') && !not_desktop() ){
1564		jQuery('.mobile_menu_hamburger').on('click', function() {
1565			jQuery('.mobile_menu_hamburger').toggleClass('active');
1566			jQuery('.main-nav-container').toggleClass('active');
1567		});
1568	} else if( not_desktop() ){
1569		jQuery('.mobile_menu_hamburger').on('click', function() {
1570
1571			// -----> Close top-bar if is open
1572			if( is_mobile() && jQuery('.top_bar_wrapper').hasClass('active') ){
1573				jQuery('.top_bar_wrapper .top_bar_inner_wrapper').hide();
1574				jQuery('.top_bar_wrapper').removeClass('active');
1575			}
1576
1577			jQuery(this).addClass('active');
1578			jQuery('body').addClass('menu-visible');
1579			jQuery('.top_bar_wrapper .topbar_trigger').addClass('hidden');
1580			jQuery('.menu-overlay').addClass('active');
1581			jQuery('.menu_box_wrapper').addClass('active');
1582		});
1583	}
1584}
1585
1586function cws_close_menu(){
1587	jQuery('.menu-overlay').on('click', function() {
1588		jQuery(this).removeClass('active');
1589		jQuery('.menu_box_wrapper').removeClass('active');
1590		jQuery('.top_bar_wrapper .topbar_trigger').removeClass('hidden');
1591		jQuery('.mobile_menu_hamburger').removeClass('active');
1592		jQuery('body').removeClass('menu-visible');
1593	});
1594}
1595
1596function cws_click_menu_item(){
1597	var initCounter = 0;
1598
1599	if( not_desktop() ){
1600		if( initCounter == 0 ){
1601			var menuItem = jQuery('.menu_box_wrapper .main-menu .menu-item > a');
1602			var menuItemTrigger = jQuery('.menu_box_wrapper .main-menu .menu-item > .button_open');
1603			var currentParents;
1604
1605			//Disable 'cws_go_to_page_init' script & multi init on resize
1606			menuItem.off();
1607			menuItemTrigger.off();
1608
1609			menuItem.on('click', function(e) {
1610
1611				if( jQuery(this).parent().hasClass('menu-item-has-children') || jQuery(this).parent().hasClass('menu-item-object-megamenu_item') ){
1612
1613					if( !jQuery(this).parent().hasClass('active') ){
1614						//Close all anouther sub-menu`s
1615						currentParents = jQuery(this).parents('.menu-item');
1616						menuItem.parent().not(currentParents).removeClass('active');
1617						menuItem.parent().not(currentParents).find('.sub-menu').slideUp(300);
1618
1619						jQuery(this).parent().addClass('active');
1620						jQuery(this).parent().children('.sub-menu').slideDown(300);
1621
1622						e.preventDefault();
1623						return false;
1624					}
1625				}
1626
1627			});
1628
1629			menuItemTrigger.on('click', function() {
1630
1631				if( jQuery(this).parent().hasClass('active') ){
1632
1633					jQuery(this).next().slideUp(300);
1634					jQuery(this).parent().removeClass('active');
1635
1636				} else {
1637					//Close all anouther sub-menu`s
1638					currentParents = jQuery(this).parents('.menu-item');
1639					menuItemTrigger.parent().not(currentParents).removeClass('active');
1640					menuItemTrigger.parent().not(currentParents).find('.sub-menu').slideUp(300);
1641
1642					jQuery(this).next().slideDown(300);
1643					jQuery(this).parent().addClass('active');
1644
1645				}
1646
1647			});
1648		}
1649		initCounter ++;
1650	} else {
1651		initCounter = 0;
1652	}
1653}
1654
1655function cws_simple_sticky_menu(){
1656	if( jQuery('.site_header').hasClass('sticky_simple') && !not_desktop() ){
1657
1658		//Definition variables
1659		var menuBox = jQuery('.menu_box');
1660		var stickyMenu = menuBox.clone();
1661		var adminBar = jQuery('#wpadminbar').height();
1662		var menuOffset = parseInt(menuBox.offset().top);
1663		var currentScroll = jQuery(window).scrollTop();
1664		var menuBoxHeight = menuBox.outerHeight();
1665		var displaySticky = 0;
1666		var startPosition = 0;
1667
1668		//Show menu on page load
1669		stickyMenu.addClass('sticky_menu_box');
1670		stickyMenu.appendTo('.header_zone');
1671
1672		//Get Sticky menu height
1673		var stickyBoxHeight = stickyMenu.outerHeight();
1674
1675		//Sticky menu declaration after getting height
1676		stickyMenu.css('transform', 'translateY(-'+ (stickyBoxHeight - adminBar) + 'px)');
1677
1678		//Get condition for start position
1679		if( stickyBoxHeight <= menuBoxHeight ){
1680			startPosition = menuBoxHeight - stickyBoxHeight;
1681		}
1682
1683		jQuery(window).on('scroll', function() {
1684			var currentScroll = jQuery(this).scrollTop();
1685			
1686			//Main script
1687			if( jQuery(this).scrollTop() > menuOffset + startPosition ){
1688				jQuery('.sticky_enable').addClass('sticky_active');
1689				jQuery('.sticky_enable .menu_box').css('transform', 'translateY(0px)');
1690				stickyMenu.show();
1691			}
1692			//Stop on the original position
1693			else if( currentScroll <= menuOffset ){
1694				jQuery('.sticky_enable').removeClass('sticky_active');
1695				stickyMenu.hide();
1696				displaySticky = 0;
1697			}
1698			
1699		});
1700
1701		if(currentScroll > menuOffset){
1702			jQuery('.sticky_enable .menu_box').css('transform', 'translateY(0px)');
1703			jQuery('.sticky_enable').addClass('sticky_active');
1704		} else if(currentScroll <= menuOffset && currentScroll != 0){
1705			jQuery('.sticky_enable .menu_box').css('transform', 'translateY('+ (menuOffset - currentScroll - 1) +'px)');
1706		}
1707	}
1708}
1709
1710function cws_smart_sticky_menu(){
1711	if( jQuery('.site_header').hasClass('sticky_smart') && !not_desktop() && jQuery('.menu_box').length != 0 ){
1712		//Definition variables
1713		var menuBox = jQuery('.menu_box');
1714		var stickyMenu = menuBox.clone();
1715		var adminBar = jQuery('#wpadminbar').height();
1716		var menuOffset = parseInt(menuBox.offset().top);
1717		var menuBoxHeight = menuBox.outerHeight();
1718		var currentScroll = jQuery(window).scrollTop();
1719		var tempScroll = jQuery(window).scrollTop();
1720		var minOffset = menuOffset + (menuBoxHeight * 3); //Min top offset, when should show the menu.
1721		var defaultSlideUp = true;
1722		var smoothSlideUp = false;
1723		var smoothSlideDown = false;
1724		var scrollMarkerUp = 0;
1725		var scrollMarkerDown = 0;
1726		var menuCurrentTransform = 0;
1727		var translateY_down = 0;
1728		var displaySticky = 0;
1729		var defaultCondition = false;
1730
1731		//Sticky menu declaration 
1732		stickyMenu.addClass('sticky_menu_box');
1733		stickyMenu.appendTo('.header_zone');
1734
1735		//Get Sticky menu height
1736		var stickyBoxHeight = stickyMenu.outerHeight();
1737
1738		//Sticky menu declaration after getting height
1739		stickyMenu.css('transform', 'translateY(-'+ (stickyBoxHeight - adminBar) + 'px)');
1740
1741
1742		//Get condition for default position
1743		if( stickyBoxHeight <= menuBoxHeight ){
1744			defaultCondition = false;
1745		} else if( stickyBoxHeight > menuBoxHeight ) {
1746			defaultCondition = true;
1747		}
1748
1749		//Main script
1750		jQuery(window).on('scroll', function() {
1751			currentScroll = jQuery(this).scrollTop();
1752
1753			//Sticky trigger
1754			if( currentScroll > minOffset ){
1755
1756				jQuery('.sticky_enable').addClass('sticky_active');
1757
1758				//When scrolling down ----> HIDE MENU SCRIPTS
1759				if( tempScroll < currentScroll ){
1760					//Hide menu
1761					if( currentScroll > (menuOffset + menuBoxHeight) ){
1762						//Taking the scroll position
1763						if(smoothSlideUp == false){
1764							scrollMarkerDown = currentScroll;
1765							menuCurrentTransform = parseInt(stickyMenu.css('transform').split(',')[5]);
1766							smoothSlideUp = true;
1767						}
1768						var translateY_up = menuCurrentTransform - (currentScroll - scrollMarkerDown);
1769						stickyMenu.css('transform', 'translateY('+ parseInt(translateY_up) +'px)');
1770					}
1771					smoothSlideDown = false;
1772				}
1773
1774				//When scrolling top ----> SHOW MENU SCRIPTS
1775				else if( tempScroll > currentScroll ){
1776					//Taking the scroll position
1777					if(smoothSlideDown == false){
1778						scrollMarkerUp = currentScroll;
1779						menuCurrentTransform = parseInt(stickyMenu.css('transform').split(',')[5]);
1780						smoothSlideDown = true;
1781					}
1782					//Smooth slide down if menu-box is visible now
1783					if( Math.abs(menuCurrentTransform) < stickyBoxHeight ){
1784						//Smooth slide down
1785						if( (scrollMarkerUp - currentScroll) <= (stickyBoxHeight - (stickyBoxHeight - Math.abs(menuCurrentTransform)) ) ){
1786
1787							translateY_down = Math.abs(menuCurrentTransform) - (scrollMarkerUp - currentScroll);
1788							stickyMenu.css('transform', 'translateY(-'+parseInt(translateY_down)+'px)');
1789						}
1790					}
1791					//Smooth slide down if menu-box is not visible now
1792					else {
1793						if( displaySticky == 0 ){
1794							stickyMenu.show();
1795							displaySticky = 1;
1796						}
1797						//Smooth slide down
1798						if( (scrollMarkerUp - currentScroll) < stickyBoxHeight ){
1799							translateY_down = stickyBoxHeight - (scrollMarkerUp - currentScroll);
1800							stickyMenu.css('transform', 'translateY(-'+ parseInt(translateY_down) +'px)');
1801						}
1802						//Show menu box (Sharp movement of the mouse wheel)
1803						else {
1804							stickyMenu.css('transform', 'translateY(0px)');
1805						}
1806					}
1807
1808					smoothSlideUp = false;
1809				}
1810			}
1811			//Stop on the original position ( Sticky < Menu Box )
1812			else if( !defaultCondition && currentScroll <= menuOffset + (menuBoxHeight - stickyBoxHeight) ){
1813				jQuery('.sticky_enable').removeClass('sticky_active');
1814				//Hide sticky right in center of default menu box
1815				if( currentScroll <= menuOffset + ((menuBoxHeight - stickyBoxHeight) / 2) ){
1816					stickyMenu.hide();
1817					displaySticky = 0;
1818				}
1819			}
1820			//Stop on the original position ( Sticky > Menu Box )
1821			else if( defaultCondition && currentScroll <= menuOffset ){
1822				jQuery('.sticky_enable').removeClass('sticky_active');
1823				stickyMenu.hide();
1824				displaySticky = 0;
1825			}
1826
1827			tempScroll = currentScroll;
1828		});
1829
1830	}
1831}
1832
1833function cws_vc_responsive(){
1834	if( !not_desktop() ){
1835		jQuery('div[class*="desktop_vc_custom"]');
1836	}
1837}
1838
1839function mainSearchForm(){
1840	jQuery('.menu_box .search_icon').on('click', function() {
1841		jQuery('.site_search_wrapper').addClass('active');
1842		jQuery('.site_search_wrapper').find('.search-field').focus();
1843	});
1844
1845	jQuery('.site_search_wrapper .close_search').on('click', function(){
1846		jQuery('.site_search_wrapper').removeClass('active');
1847	});
1848}
1849/****\ Header scripts declaration \****/
1850
1851
1852/***** Other libraries declaration  *****/
1853function vimeo_init() {
1854	var element;
1855	var vimeoId;
1856	var chek;
1857	jQuery(".cws_Vimeo_video_bg").each(function(){
1858		element = jQuery(this);
1859		var el_width;
1860		var el_height;
1861		vimeoId = jQuery(".cws_Vimeo_video_bg").attr('data-video-id');
1862
1863		jQuery("#"+vimeoId).vimeo("play");
1864			jQuery("#"+vimeoId).vimeo("setVolume", 0);
1865			jQuery("#"+vimeoId).vimeo("setLoop", true);
1866			el_width = element[0].offsetWidth;
1867
1868		if (element[0].offsetHeight<((el_width/16)*9)) {
1869			el_height = (element[0].offsetWidth/16)*9;
1870		}else{
1871			el_height = element[0].offsetHeight;
1872			el_width = (el_height/9)*16;
1873		}
1874		jQuery("#"+vimeoId)[0].style.width = el_width+'px';
1875		jQuery("#"+vimeoId)[0].style.height = el_height+'px';
1876		setInterval(check_on_page, 1000);
1877	})
1878
1879	function check_on_page (){
1880		if (document.getElementsByTagName('html')[0].hasAttribute('data-focus-chek')) {		
1881			if (chek < 1) {
1882				chek++
1883				jQuery("#"+vimeoId).vimeo("play");
1884			}else{
1885				chek = 1
1886			}									
1887		}else{
1888			jQuery("#"+vimeoId).vimeo("pause");
1889			chek = 0;
1890		}
1891	}	
1892}
1893
1894function cws_self_hosted_video (){
1895	var element,el_width,video
1896	jQuery('.cws_self_hosted_video').each(function(){
1897		element = jQuery(this)
1898		video = element.find('video')
1899		el_width = element[0].offsetWidth;
1900
1901		if (element[0].offsetHeight<((el_width/16)*9)) {
1902			el_height = (element[0].offsetWidth/16)*9;
1903		}else{
1904			el_height = element[0].offsetHeight;
1905			el_width = (el_height/9)*16;
1906		}
1907		video[0].style.width = el_width+'px';
1908		video[0].style.height = el_height+'px';
1909	})	
1910}
1911
1912function wow_init (){
1913	if( typeof WOW === 'function' ){
1914		new WOW().init();	
1915	}
1916}
1917
1918function cws_fancybox_init(){
1919	//Check if function exist
1920	if( typeof fancybox === 'function' ){
1921		jQuery(".fancy").fancybox();
1922	}
1923}
1924
1925function isotope_init (){		
1926	jQuery(".news.news-pinterest .isotope").each(function(item, value){	
1927		jQuery(this).isotope({
1928			itemSelector: ".item"
1929		});					
1930	});	
1931	jQuery(".blog_gallery_grid.isotope").each(function(item, value){	
1932		jQuery(this).isotope({
1933			// percentPosition: true,
1934			itemSelector: ".pic"
1935		});					
1936	});
1937}
1938
1939/* -----> Youtube Video <----- */
1940var i,
1941	currTime,
1942	duration,
1943	video_source,
1944	video_id,
1945	el_height,
1946	element,
1947	el_width,
1948	el_quality,
1949	player;
1950
1951	element = document.getElementsByClassName("cws_Yt_video_bg"); 
1952	
1953function onYouTubePlayerAPIReady() {
1954	if(typeof element === 'undefined') 
1955		return; 
1956	for (var i = element.length - 1; i >= 0; i--) {
1957		video_source = element[i].getAttribute("data-video-source");
1958		video_id = element[i].getAttribute("data-video-id");
1959		el_width = element[i].offsetWidth;
1960
1961		
1962
1963		if (element[i].offsetHeight<((el_width/16)*9)) {
1964			el_height = (element[i].offsetWidth/16)*9;
1965		}else{
1966			el_height = element[i].offsetHeight;
1967			el_width = (el_height/9)*16;
1968		}
1969		if (el_width > 1920){
1970			el_quality = 'highres'; 
1971		}
1972		if (el_width < 1920){
1973			el_quality = 'hd1080'; 
1974		}
1975		if (el_width < 1280) {
1976			el_quality = 'hd720'; 
1977		}
1978		if (el_width < 853) {
1979			el_quality = 'large';
1980		}
1981		if (el_width < 640) {
1982			el_quality = 'medium';
1983		};
1984		rev (video_id,video_source,el_width,el_height);
1985		
1986	};
1987}
1988function rev (video_id,video_source,el_width,el_height){
1989	window.setTimeout(function() {
1990		if (!YT.loaded) {
1991			console.log('not loaded yet');
1992			window.setTimeout(arguments.callee, 50)
1993		} else {
1994			var curplayer = video_control(video_id,video_source,el_width,el_height);		
1995		}
1996	}, 50);
1997}
1998
1999var chek = 0;
2000var YouTube;
2001
2002function video_control (uniqid,video_source,el_width,el_height) {
2003	var interval;
2004
2005	player = new YT.Player(uniqid, {
2006			height: el_height,
2007			width: el_width,
2008			videoId: video_source,
2009			playerVars: {
2010				'autoplay' : 1,
2011				'rel' : 0,
2012				'showinfo' : 0,
2013				'showsearch' : 0,
2014				'controls' : 0,
2015				'loop' : 1,
2016				'enablejsapi' : 1,
2017				'theme' : 'dark',
2018				'modestbranding' : 0,
2019				'wmode' : 'transparent',
2020			},
2021			events: {
2022				'onReady': onPlayerReady,
2023				'onStateChange': onPlayerStateChange
2024			}
2025		}
2026	);
2027}
2028
2029window.addEventListener('focus', function() {
2030	checkPlayer();
2031	return true;
2032});
2033function onPlayerReady(event){
2034	YouTube = event.target;
2035	YouTube.mute();
2036	YouTube.setPlaybackQuality(el_quality);	    
2037}
2038function onPlayerStateChange(event) {	
2039	YouTube.playVideo();
2040}
2041function seekTo(event) {
2042	player.seekTo(0);									
2043}
2044function checkPlayer() {	
2045	if (undefined !== player && undefined !== player.getCurrentTime) {
2046		currTime = player.getCurrentTime(); //get video position	
2047		duration = player.getDuration(); //get video duration
2048		(currTime > (duration - 0.8)) ? seekTo(event) : '';		
2049	};		
2050					
2051}
2052function chek_on_page (){
2053	if (document.getElementsByTagName('html')[0].hasAttribute('data-focus-chek')) {		
2054		if (chek < 1 && undefined !== player.playVideo) {
2055			chek++
2056			player.playVideo();
2057		}else{
2058			chek = 1
2059		}									
2060	}else if (undefined !== player.pauseVideo) {
2061		player.pauseVideo();
2062		chek = 0;
2063	}
2064}
2065/*\ ----> Youtube Video <---- \*/
2066/****\ Other libraries declaration  \****/
2067
2068
2069/***** Pages filter/pagination/carousel declaration  *****/
2070function cws_carousel($class, area){
2071	jQuery( $class, area ).each( function() {
2072
2073		var this_is = jQuery(this);
2074
2075		/* -----> Getting carousel attributes <-----*/	
2076		var slidesToShow = this_is.data('columns');
2077		var slidesToScroll = jQuery.isNumeric(this_is.data('slides-to-scroll')) ? this_is.data('slides-to-scroll') : 1;
2078		var infinite = this_is.data('infinite') == 'on';
2079		var pagination = this_is.data('pagination') == 'on';
2080		var navigation = this_is.data('navigation') == 'on';
2081		var autoHeight = this_is.data('auto-height') == 'on';
2082		var draggable = this_is.data('draggable') == 'on';
2083		var autoplay = this_is.data('autoplay') == 'on';
2084		var autoplaySpeed = this_is.data('autoplay-speed');
2085		var pauseOnHover = this_is.data('pause-on-hover') == 'on';
2086		var vertical = this_is.data('vertical') == 'on';
2087		var verticalSwipe = this_is.data('vertical-swipe') == 'on';
2088		var tabletPortrait = this_is.data('tablet-portrait');
2089		var landscapeMobile = this_is.data('mobile-landscape');
2090		var carousel = this_is.children('.cws_carousel');
2091		if( carousel.length == 0 ){
2092			carousel = this_is.find('.products.cws_carousel'); //Need for woocommerce shortcodes 
2093		}
2094		var responsive = '';
2095
2096		/* -----> Collect attributes in aruments object <-----*/	
2097		var args = {
2098			slidesToShow: slidesToShow,
2099			slidesToScroll: slidesToScroll,
2100			infinite: infinite,
2101			dots: pagination,
2102			arrows: navigation,
2103			adaptiveHeight: autoHeight,
2104			draggable: draggable,
2105			autoplay: autoplay,	
2106			autoplaySpeed: autoplaySpeed,
2107			pauseOnHover: pauseOnHover, 
2108			vertical: vertical,
2109			verticalSwiping: verticalSwipe,
2110			margin: 20,
2111		}
2112
2113		/* -----> Responsive rules <----- */
2114		if( typeof tabletPortrait !== 'undefined' && typeof landscapeMobile !== "undefined" ){
2115			responsive = {
2116				responsive: [
2117					{
2118						breakpoint: 992,
2119						settings: {
2120							slidesToShow: tabletPortrait,
2121						}
2122					},
2123					{
2124						breakpoint: 768,
2125						settings: {
2126							slidesToShow: landscapeMobile,
2127						}
2128					},
2129					{
2130						breakpoint: 480,
2131						settings: {
2132							slidesToShow: 1,
2133							slidesToScroll: 1,
2134							dots: true,
2135							arrows: false
2136						}
2137					},
2138				]
2139			}
2140		} else if( typeof tabletPortrait !== 'undefined' ){
2141			responsive = {
2142				responsive: [
2143					{
2144						breakpoint: 992,
2145						settings: {
2146							slidesToShow: tabletPortrait,
2147						}
2148					},
2149					{
2150						breakpoint: 768,
2151						settings: {
2152							slidesToShow: 1,
2153							slidesToScroll: 1,
2154						}
2155					}
2156				]
2157			}
2158		} else if( landscapeMobile !== "undefined" ){
2159			responsive = {
2160				responsive: [
2161					{
2162						breakpoint: 768,
2163						settings: {
2164							slidesToShow: landscapeMobile,
2165						}
2166					},
2167					{
2168						breakpoint: 480,
2169						settings: {
2170							slidesToShow: 1,
2171							slidesToScroll: 1,
2172						}
2173					}
2174				]
2175			}
2176		} else {
2177			responsive = {
2178				responsive: [
2179					{
2180						breakpoint: 768,
2181						settings: {
2182							slidesToShow: 1,
2183							slidesToScroll: 1,
2184							dots: true,
2185							arrows: false,
2186						}
2187					}
2188				]
2189			}
2190		}
2191		
2192		args = jQuery.extend({}, args, responsive);
2193
2194		/* -----> Carousel init <-----*/	
2195		carousel.slick(args);
2196
2197		/* -----> Move buttons into dots container <-----*/	
2198		var dots = this_is.find('.slick-dots');
2199		var prev_button = this_is.find('.slick-prev');
2200		var next_button = this_is.find('.slick-next');
2201
2202		if( dots.length > 0 && prev_button.length > 0 && next_button.length > 0 ){
2203			jQuery('<div class="cws_navigation_wrapper"></div>').appendTo(carousel);
2204
2205			var paginationContainer = this_is.find('.cws_navigation_wrapper');
2206
2207			prev_button.appendTo(paginationContainer);
2208			dots.appendTo(paginationContainer);
2209			next_button.appendTo(paginationContainer);
2210		}
2211		
2212	});
2213}
2214
2215function cws_portfolio_pagination_init (){
2216	jQuery( ".cws_portfolio .pagination" ).each( function (){
2217		var pagination = jQuery( this );
2218		cws_portfolio_pagination ( pagination );
2219	});
2220
2221	jQuery('.cws_portfolio_fw .pagination').each( function (){
2222		var pagination = jQuery( this );
2223		cws_portfolio_pagination ( pagination , true );
2224	});
2225}
2226
2227function cws_portfolio_pagination ( pagination , is_fw ){
2228	if ( pagination == undefined ) return;
2229	if (is_fw != undefined){ 
2230		is_fw == is_fw ;
2231	}else{
2232		is_fw == false ;
2233	}
2234	var old_page_links = pagination.find( ".page_links" );
2235	var items = old_page_links.find( ".page-numbers:not(.dots)" ).not( ".current" ); 
2236	if (is_fw) {
2237		var parent = pagination.closest( ".cws_portfolio_fw" );
2238	}else{
2239		var parent = pagination.closest( ".cws_portfolio" );
2240	}
2241	
2242	if (is_fw) {
2243		var grid = parent.find( ".grid_fw" );
2244	}else{
2245		var grid = parent.find( ".cws_portfolio_items" );
2246	}
2247
2248	if (is_fw) {
2249		var ajax_data_input = parent.find( "input.cws_portfolio_fw_ajax_data" );
2250	}else{
2251		var ajax_data_input = parent.find( "input.cws_portfolio_ajax_data" );
2252	}
2253
2254	items.each( function (){
2255		var item = jQuery( this );
2256		var url = item.attr( "href" );
2257		var ajax_data = JSON.parse( ajax_data_input.val() );
2258		var action_func;
2259		ajax_data['url'] = url;		
2260		if (is_fw) {
2261			action_func = 'cws_portfolio_fw_pagination';
2262		}else{
2263			action_func = 'cws_portfolio_pagination';
2264		}
2265
2266		item.on( "click", function ( e ){
2267			e.preventDefault();
2268			if ( wait_load_portfolio ) return;
2269			wait_load_portfolio = true;
2270			if (is_fw) {
2271				pagination.closest('.cws_portfolio_fw').find('.portfolio_loader_wraper').show();	
2272			}else{
2273				pagination.closest('.cws_portfolio').find('.portfolio_loader_wraper').show();	
2274			}
2275			jQuery.post( ajaxurl, {
2276				"action" : action_func,
2277				"data" : ajax_data
2278			}, function ( data, status ){
2279				var img_loader;
2280				var parent_offset = parent.offset().top;
2281				var old_items = jQuery( ".item", grid );
2282				var new_items = jQuery( ".item", jQuery( data ) );
2283				var new_page_links = jQuery( ".pagination .page_links", jQuery( data ) );
2284				var new_page_links_exists = Boolean( new_page_links.children().length );
2285				new_items.css( "display", "none" );
2286				if (ajax_data['pagination_style'] != 'load_more') {
2287					grid.isotope( 'remove', old_items );
2288					if ( window.scrollY > parent_offset ){
2289						jQuery( 'html, body' ).stop().animate({
2290							scrollTop : parent_offset
2291						}, 300);
2292					}					
2293				}
2294				grid.append( new_items );
2295				img_loader = imagesLoaded( grid );
2296				img_loader.on( "always", function (){
2297					grid.isotope( 'appended', new_items );
2298					if (is_fw) {
2299						pagination.closest('.cws_portfolio_fw').find('.portfolio_loader_wraper').hide();	
2300					}else{
2301						pagination.closest('.cws_portfolio').find('.portfolio_loader_wraper').hide();	
2302					}
2303					grid.isotope( 'layout' );
2304					old_page_links.fadeOut( function (){
2305						old_page_links.remove();
2306						wait_load_portfolio = false;
2307						if ( new_page_links_exists ){
2308							new_page_links.css( "display", "none" );
2309							pagination.append( new_page_links );
2310							new_page_links.fadeIn();
2311							if (is_fw){
2312								cws_portfolio_pagination ( pagination , true );
2313							}else{
2314								cws_portfolio_pagination ( pagination );
2315							}
2316						}
2317						else{
2318							pagination.remove();
2319						}
2320					    if (Retina.isRetina()) {
2321				        	jQuery(window.retina.root).trigger( "load" );
2322					    }
2323						cws_fancybox_init ();
2324					});
2325				});
2326			});
2327		});
2328	});
2329}
2330
2331function cws_portfolio_filter_init (){
2332	var els = jQuery( ".cws_portfolio .cws_portfolio_filter" );
2333	els.each( function (){
2334		var el = jQuery( this );
2335		var parent = el.closest( ".cws_portfolio" );
2336		var grid = parent.find( ".cws_portfolio_items" );
2337		var ajax_data_input = parent.find( "input.cws_portfolio_ajax_data" );
2338		var filter_el = el.children("a");
2339		filter_el.on( "click", function (e){
2340
2341			e.preventDefault();
2342			jQuery( this ).addClass('active').siblings().removeClass('active');
2343			var val = jQuery( this ).attr('data-filter');
2344			var ajax_data = JSON.parse( ajax_data_input.val() );
2345			ajax_data["filter"] = val;
2346			var old_pagination = parent.find( ".pagination" );
2347			var old_page_links = jQuery( ".page_links", old_pagination );
2348
2349			el.closest('.cws_portfolio_header').siblings( '.cws_wrapper' ).find('.portfolio_loader_wraper').show();
2350			jQuery.post( ajaxurl, {
2351				"action" : "cws_portfolio_filter",
2352				"data" : ajax_data
2353			}, function ( data, status ){
2354				var img_loader;
2355				var old_items = jQuery( ".item", grid );
2356				var new_items = jQuery( ".item", jQuery( data ) );
2357				var new_pagination = jQuery( ".pagination", jQuery( data ) );
2358				var new_page_links = jQuery( ".page_links", new_pagination );
2359				var new_page_links_exists = Boolean( new_page_links.children().length );
2360				new_items.css( "display", "none" );
2361				grid.isotope( 'remove', old_items );
2362				grid.append( new_items );
2363				el.closest('.cws_portfolio_header').siblings( '.cws_wrapper' ).find('.portfolio_loader_wraper').hide();
2364				img_loader = imagesLoaded( grid );
2365				img_loader.on( "always", function (){
2366					grid.isotope( 'appended', new_items );
2367					grid.isotope( 'layout' );
2368					ajax_data_input.attr( "value", JSON.stringify( ajax_data ) );
2369					if ( old_pagination.length ){
2370						if ( new_page_links_exists ){
2371							new_page_links.css( "display", "none" );
2372							old_page_links.fadeOut( function (){
2373								old_page_links.remove();
2374								old_pagination.append( new_page_links );
2375								new_page_links.fadeIn();
2376								cws_portfolio_pagination ( old_pagination );
2377							});
2378						}
2379						else{
2380							old_pagination.fadeOut( function (){
2381								old_pagination.remove();
2382							});
2383						}
2384					}
2385					else{
2386						if ( new_page_links_exists ){
2387							new_pagination.css( "display", "none" );
2388							parent.append( new_pagination );
2389							new_pagination.fadeIn();
2390							cws_portfolio_pagination ( new_pagination );
2391						}
2392					}
2393				    if (Retina.isRetina()) {
2394			        	jQuery(window.retina.root).trigger( "load" );
2395				    }
2396					cws_fancybox_init ();
2397				});
2398			});
2399		});
2400	});
2401}
2402
2403function cws_ourteam_pagination_init (){
2404	var els = jQuery( ".cws_ourteam .pagination" );
2405	els.each( function (){
2406		var pagination = jQuery( this );
2407		cws_ourteam_pagination( pagination );
2408	});	
2409}
2410
2411function cws_ourteam_pagination ( pagination ){
2412	if ( pagination == undefined ) return;
2413	var old_page_links = pagination.find( ".page_links" );
2414	var items = old_page_links.find( ".page-numbers" ).not( ".current" );
2415	var parent = pagination.closest( ".cws_ourteam" );
2416	var grid = parent.find( ".cws_ourteam_items" );
2417	var ajax_data_input = parent.find( "input.cws_ourteam_ajax_data" );
2418	items.each( function (){
2419		var item = jQuery( this );
2420		var url = item.attr( "href" );
2421		var ajax_data = JSON.parse( ajax_data_input.val() );
2422		ajax_data['url'] = url;
2423		item.on( "click", function ( e ){
2424			e.preventDefault();
2425			jQuery.post( ajaxurl, {
2426				"action" : "cws_ourteam_pagination",
2427				"data" : ajax_data
2428			}, function ( data, status ){
2429				var img_loader;
2430				var parent_offset = parent.offset().top;
2431				var old_items = jQuery( ".item", grid );
2432				var new_items = jQuery( ".item", jQuery( data ) );
2433				var new_page_links = jQuery( ".pagination .page_links", jQuery( data ) );
2434				var new_page_links_exists = Boolean( new_page_links.children().length );
2435				new_items.css( "display", "none" );
2436				grid.isotope( 'remove', old_items );
2437				if ( window.scrollY > parent_offset ){
2438					jQuery( 'html, body' ).stop().animate({
2439						scrollTop : parent_offset
2440					}, 300);
2441				}
2442				grid.append( new_items );
2443				img_loader = imagesLoaded( grid );
2444				img_loader.on( "always", function (){
2445					grid.isotope( 'appended', new_items );
2446					grid.isotope( 'layout' );
2447					old_page_links.fadeOut( function (){
2448						old_page_links.remove();
2449						if ( new_page_links_exists ){
2450							new_page_links.css( "display", "none" );
2451							pagination.append( new_page_links );
2452							new_page_links.fadeIn();
2453							cws_ourteam_pagination ( pagination );
2454						}
2455						else{
2456							pagination.remove();
2457						}
2458					    if (Retina.isRetina()) {
2459				        	jQuery(window.retina.root).trigger( "load" );
2460					    }
2461						cws_fancybox_init ();
2462					});
2463				});
2464
2465			});
2466		});
2467	});
2468}
2469
2470function cws_ourteam_filter_init (){
2471	var els = jQuery( ".cws_ourteam select.cws_ourteam_filter" );
2472	els.each( function (){
2473		var el = jQuery( this );
2474		var parent = el.closest( ".cws_ourteam" );
2475		var grid = parent.find( ".cws_ourteam_items" );
2476		var ajax_data_input = parent.find( "input.cws_ourteam_ajax_data" );
2477		el.on( "change", function (){
2478			var val = el.val();
2479			var ajax_data = JSON.parse( ajax_data_input.val() );
2480			ajax_data["filter"] = val;
2481			var old_pagination = parent.find( ".pagination" );
2482			var old_page_links = jQuery( ".page_links", old_pagination );
2483			jQuery.post( ajaxurl, {
2484				"action" : "cws_ourteam_filter",
2485				"data" : ajax_data
2486			}, function ( data, status ){
2487				console.log(data);
2488				var img_loader;
2489				var old_items = jQuery( ".item", grid );
2490				var new_items = jQuery( ".item", jQuery( data ) );
2491				var new_pagination = jQuery( ".pagination", jQuery( data ) );
2492				var new_page_links = jQuery( ".page_links", new_pagination );
2493				var new_page_links_exists = Boolean( new_page_links.children().length );
2494				new_items.css( "display", "none" );
2495				grid.isotope( 'remove', old_items );
2496				grid.append( new_items );
2497				img_loader = imagesLoaded( grid );
2498				img_loader.on( "always", function (){
2499					grid.isotope( 'appended', new_items );
2500					grid.isotope( 'layout' );
2501					ajax_data_input.attr( "value", JSON.stringify( ajax_data ) );
2502					if ( old_pagination.length ){
2503						if ( new_page_links_exists ){
2504							new_page_links.css( "display", "none" );
2505							old_page_links.fadeOut( function (){
2506								old_page_links.remove();
2507								old_pagination.append( new_page_links );
2508								new_page_links.fadeIn();
2509								cws_ourteam_pagination ( old_pagination );
2510							});
2511						}
2512						else{
2513							old_pagination.fadeOut( function (){
2514								old_pagination.remove();
2515							});
2516						}
2517					}
2518					else{
2519						if ( new_page_links_exists ){
2520							new_pagination.css( "display", "none" );
2521							parent.append( new_pagination );
2522							new_pagination.fadeIn();
2523							cws_ourteam_pagination ( new_pagination );
2524						}
2525					}
2526				    if (Retina.isRetina()) {
2527			        	jQuery(window.retina.root).trigger( "load" );
2528				    }
2529					cws_fancybox_init ();
2530				});
2531			});
2532		});
2533	});
2534}
2535
2536function widget_archives_hierarchy_init (){
2537	widget_archives_hierarchy_controller ( ".cws-widget>ul li", "ul.children", "parent_archive", "widget_archive_opener" );
2538	widget_archives_hierarchy_controller ( ".cws-widget .menu li", "ul.sub-menu", "menu-item-has-children", "opener" );
2539}
2540
2541function widget_archives_hierarchy_controller ( list_item_selector, sublist_item_selector, parent_class, opener_class ){
2542	jQuery( list_item_selector ).has( sublist_item_selector ).each( function (){
2543		jQuery( this ).addClass( parent_class );
2544		var sublist = jQuery( this ).children( sublist_item_selector ).first();
2545		var level_height = jQuery( this ).outerHeight() - sublist.outerHeight();
2546		jQuery(this).append( "<span class='fa fa-angle-right " + opener_class + "'></span>" );
2547	});
2548	jQuery( list_item_selector + ">" + sublist_item_selector ).css( "display", "none" );
2549
2550	jQuery( document ).on( "click", "." + opener_class, function (){
2551		var el = jQuery(this);
2552		var sublist = el.siblings( sublist_item_selector );
2553
2554		if ( !sublist.length ) return;
2555		sublist = sublist.first();
2556
2557		el.parent().toggleClass( "active" );
2558		sublist.slideToggle( 300 );
2559	});
2560}
2561/****\ Pages filter/pagination/carousel declaration  \****/
2562
2563
2564/***** CWS Features declaration  *****/
2565
2566function cws_fs_video_bg_init (){
2567	var slider_wrappers, header_height_is_set;
2568	header_height_is_set = document.getElementsByClassName( 'header_video_fs_view' );
2569
2570
2571	if ( !header_height_is_set.length) return;
2572		cws_fs_video_slider_controller( header_height_is_set[0] );
2573	window.addEventListener( 'resize', function (){
2574		cws_fs_video_slider_controller( header_height_is_set[0] );
2575	});
2576}
2577function cws_fs_video_slider_controller ( el ){
2578	cws_set_window_width( el );
2579	cws_set_window_height( el );
2580}
2581
2582function cws_slider_video_height (element){
2583	var height_coef = element.attr('data-wrapper-height')
2584	if (height_coef) {
2585		if (window.innerWidth<960) {
2586			element.height(window.innerWidth/height_coef)
2587		}else{
2588			element.height(960/height_coef)
2589		}
2590	}	
2591}
2592
2593function boxed_var_init (){
2594	var body_el = document.body;
2595	var children = body_el.childNodes;
2596	var child_class = "";
2597	var match;
2598	window.boxed_layout = false;
2599	for ( var i=0; i<children.length; i++ ){
2600		child_class = children[i].className;
2601		if ( child_class != undefined ){
2602			match = /page_boxed/.test( child_class );
2603			if ( match ){
2604				window.boxed_layout = true;
2605				break;
2606			}
2607		}
2608	}
2609}
2610
2611var wait_load_posts = false;
2612
2613function reload_scripts(){
2614	wp_standard_processing();
2615	cws_fancybox_init();
2616}
2617
2618function load_more_init (){
2619	jQuery( document ).on( "click", ".cws_load_more", function (e){
2620		e.preventDefault();
2621		if ( wait_load_posts ) return;
2622		var el = jQuery(this);
2623		var url = el.attr( "href" );
2624		var paged = parseInt( el.data( "paged" ) );
2625		var max_paged = parseInt( el.data( "max-paged" ) );
2626		var template = el.data( "template" );
2627		var item_cont = el.parent().siblings( ".grid" );
2628		var isotope = false;
2629		var args = { ajax : "true", paged : paged, template: template };
2630
2631		if ( !item_cont.length ) return;
2632		el.closest('.cws_wrapper').find('.portfolio_loader_wraper').show();
2633		wait_load_posts = true;
2634		jQuery.post( url, args, function ( data ){
2635			var new_items = jQuery(data).filter( '.item' );
2636			if ( !new_items.length ) return;
2637			new_items.css( 'display' , 'none' );
2638			jQuery(item_cont).append( new_items );
2639			el.closest('.cws_wrapper').find('.portfolio_loader_wraper').hide();
2640			wait_load_posts = false;
2641			var img_loader = imagesLoaded( jQuery(item_cont) );
2642			img_loader.on ('always', function (){
2643				reload_scripts();
2644				new_items.css( 'display', 'block' );
2645				if ( jQuery(item_cont).isotope ){
2646					jQuery(item_cont).isotope( 'appended', new_items);
2647					jQuery(item_cont).isotope( 'layout' );
2648				}
2649			    if (Retina.isRetina()) {
2650		        	jQuery(window.retina.root).trigger( "load" );
2651			    }
2652			    if ( paged == max_paged ){
2653			    	el.fadeOut( { duration : 300, complete : function (){
2654			    		el.remove();
2655			    	}})
2656			    }
2657			    else{
2658			    	el.data( "paged", String( paged + 1 ) );
2659			    }
2660			});
2661		});
2662	});
2663}
2664
2665function cws_go_to_page_init(){
2666	if(!not_desktop()){
2667		var hashTagActive = false;
2668
2669		jQuery('.menu-item a').on('click', function(event) {
2670			if(!jQuery(this).hasClass("fancy") && jQuery(this).attr("href") != "#" && jQuery(this).attr("target") != "_blank"){
2671				event.stopPropagation();
2672			    var anchor = jQuery(this).attr("href");
2673			    var link = anchor.replace('/#','#')
2674				var re = new RegExp( "^#.*$" );
2675				var matches = re.exec( link );
2676
2677				if ((matches == null && jQuery(this).attr("href").indexOf("#") != -1) || (!!navigator.userAgent.match(/Version\/[\d\.]+.*Safari/))){
2678					return true;
2679				} else {
2680					event.preventDefault();
2681				}
2682
2683			    if (hashTagActive) return;
2684			    hashTagActive = true;      
2685			    
2686			    if (jQuery(this).attr("href").indexOf("#") != -1 && matches !== null){
2687
2688			        if (jQuery(link).length){
2689			                jQuery('html, body').animate({
2690			                scrollTop: jQuery(link).offset().top
2691			            }, animation_curve_speed, animation_curve_menu, function () {
2692			                hashTagActive = false;
2693			            });              
2694			        }
2695
2696			    } else {
2697			        jQuery('body').fadeOut(1000, newpage(anchor)); 
2698			    }
2699			       
2700			}
2701		});
2702
2703	   function newpage(e) {
2704	     window.location = e;
2705	   }
2706	}
2707}
2708
2709function cws_parallax_init(){
2710	if (jQuery( ".cws_prlx_section" ).length) {
2711		jQuery( ".cws_prlx_section" ).cws_prlx();
2712	};
2713}
2714
2715function cws_clone_obj ( src_obj ){
2716	var new_obj, keys, i, key, val;
2717	if ( src_obj == undefined || typeof src_obj != 'object' ) return false;
2718	new_obj = {};
2719	keys = Object.keys( src_obj );
2720	for ( i = 0; i < keys.length; i++ ){
2721		key = keys[i];
2722		val = src_obj[key];
2723		new_obj[key] = val;
2724	}
2725	return new_obj;
2726}
2727
2728function cws_prlx_init_waiter (){
2729	var interval, layers, layer_ids, i, layer_id, layer_obj, layer_loaded;
2730	if ( window.cws_prlx == undefined ){
2731		return;
2732	}
2733	layers = cws_clone_obj( window.cws_prlx.layers );
2734	interval = setInterval( function (){
2735		layer_ids = Object.keys( layers );
2736		for ( i = 0; i < layer_ids.length; i++ ){
2737			layer_id = layer_ids[i];
2738			layer_obj = window.cws_prlx.layers[layer_id];
2739			layer_loaded = layer_obj.loaded;
2740			if ( layer_loaded ){
2741				delete layers[layer_id];
2742			}
2743		}
2744		if ( !Object.keys( layers ).length ){
2745			clearInterval ( interval );
2746		}
2747	}, 100);
2748}
2749
2750function cws_message_box_init (){
2751	jQuery( document ).on( 'click', '.cws_msg_box_module .close_btn', function (){
2752		var cls_btn = jQuery(this);
2753		var el = cls_btn.closest( ".cws_msg_box_module" );
2754		el.fadeOut( function (){
2755			el.remove();
2756		});
2757	});
2758}
2759
2760function cws_milestone_init (){
2761	jQuery.fn.cws_milestone = function (){
2762		jQuery(this).each( function (){		
2763			var el = jQuery(this);
2764			var number_container = el.find(".cws_milestone_number");
2765			var done = false;
2766			if (number_container.length){
2767				if ( !done ) done = milestone_controller (el, number_container);
2768				jQuery(window).scroll(function (){
2769					if ( !done ) done = milestone_controller (el, number_container);
2770				});
2771			}
2772		});
2773	}
2774}
2775
2776function milestone_controller (el, number_container){
2777	var od, args;
2778	var speed = number_container.data( 'speed' );
2779	var number = number_container.text();
2780	if (el.is_visible()){
2781		args= {
2782			el: number_container[0],
2783			format: 'd',
2784		};
2785		if ( speed ) args['duration'] = speed;
2786		od = new Odometer( args );
2787		od.update( number );
2788		return true;
2789	}
2790	return false;
2791}
2792
2793function get_digit (number, digit){
2794	var exp = Math.pow(10, digit);
2795	return Math.round(number/exp%1*10);
2796}
2797
2798function cws_progress_bar_init (){
2799	jQuery.fn.cws_progress_bar = function (){
2800		jQuery(this).each( function (){
2801			var el = jQuery(this);
2802			var done = false;
2803			if (!done) done = progress_bar_controller(el);
2804			jQuery(window).scroll(function (){
2805				if (!done) done = progress_bar_controller(el);
2806			});
2807		});
2808	}
2809}
2810
2811function progress_bar_controller (el){
2812	if (el.is_visible()){
2813		var progress = el.find(".progress_bar");
2814		var value = parseInt( progress.attr("data-value") );
2815		var width = parseInt(progress.css('width').replace(/%|(px)|(pt)/,""));
2816		var ind = el.find(".indicator");
2817		if ( width < value ){
2818			var progress_interval = setInterval( function(){
2819				width ++;
2820				progress.css("width", width+"%");
2821				ind.text(width+'%');
2822				if (width == value){
2823					clearInterval(progress_interval);
2824				}
2825			}, 5);
2826		}
2827		return true;
2828	}
2829	return false;
2830}
2831
2832function cws_sticky_sidebars_init(){
2833	//Check if function exist
2834	if (typeof jQuery.fn.theiaStickySidebar === 'function') {
2835		if (sticky_sidebars == 1 && !is_mobile() ){
2836			jQuery('aside.sb_left, aside.sb_right').theiaStickySidebar({
2837			      additionalMarginTop: 60,
2838			      additionalMarginBottom: 60
2839			}); 		
2840		}
2841	}
2842}
2843
2844function cws_set_window_width ( el ){
2845	var window_w;
2846	if ( el != undefined ){
2847		window_w = document.body.clientWidth;
2848		el.style.width = window_w + 'px';
2849	}
2850}
2851function cws_set_window_height ( el ){
2852	var window_h;
2853	if ( el != undefined ){
2854		window_h = window.innerHeight;
2855		el.style.height = window_h + 'px';
2856	}
2857}
2858
2859function single_sticky_content() {
2860	var item = jQuery(".cws_portfolio_single_content.sticky_cont");
2861	var item_p = item.parent();
2862	if(typeof item_p.theiaStickySidebar != 'undefined'){
2863		item_p.theiaStickySidebar({
2864			additionalMarginTop: 80,
2865			additionalMarginBottom: 30
2866		}); 		
2867	}
2868}
2869
2870function smooth_comment_link(){
2871	if( jQuery('body').hasClass('single-post') || jQuery('body').hasClass('attachment') ){
2872		jQuery('.post_comments a').on('click', function(e) {
2873			e.preventDefault();
2874
2875			var href = jQuery(this).attr('href');
2876			var anchor = href.split('#')[1];
2877
2878			jQuery('html, body').animate({
2879				scrollTop: jQuery('#'+anchor).offset().top
2880			}, 500)			
2881		});
2882	}
2883}
2884
2885function cws_widgets_on_tablet(){
2886	if( cws_is_tablet_viewport() ){
2887		var body = jQuery('body');
2888		var widgetsTrigger = jQuery('.sidebar-tablet-trigger');
2889		var aside = jQuery('.page_content aside');
2890		var windowHeight = jQuery(window).height();
2891
2892		var showTrigger = body.height() * 0.4;
2893		var widgetsPos = aside.attr('class');
2894				
2895		widgetsPos = 'trigger_'+widgetsPos;
2896		widgetsTrigger.addClass(widgetsPos);
2897
2898		jQuery(window).on('scroll', function() {
2899			if( jQuery(this).scrollTop() > showTrigger ) {
2900				widgetsTrigger.addClass('active');
2901			} else {
2902				widgetsTrigger.removeClass('active');
2903			}
2904		});
2905
2906		widgetsTrigger.on('click', function() {
2907			aside.addClass('active');
2908			body.addClass('oveflow-hidden');
2909			jQuery('.aside_widgets_overlay').addClass('active');
2910		});
2911
2912		jQuery('.aside_widgets_overlay').on('click', function() {
2913			jQuery(this).removeClass('active');
2914			aside.removeClass('active');
2915			body.removeClass('oveflow-hidden');
2916		});
2917	}
2918}
2919
2920function cws_footer_on_bottom(){
2921	if( jQuery(window).height() > jQuery('body').height() ){
2922		jQuery('.copyrights_area').addClass('bottom_fixed');
2923	} else {
2924		jQuery('.copyrights_area').removeClass('bottom_fixed');
2925	}
2926}
2927
2928function scroll_to_top(){
2929	jQuery(window).on('scroll', function() {
2930		if( jQuery(this).scrollTop() > 500 ){
2931			jQuery('.scroll_to_top').addClass('active');
2932		} else {
2933			jQuery('.scroll_to_top').removeClass('active');
2934		}
2935	});
2936
2937	jQuery('.scroll_to_top').on('click', function() {
2938		jQuery('html, body').animate({
2939			scrollTop: 0
2940		}, 1000)
2941	});
2942}
2943
2944function navigation_hold_post(){
2945	jQuery('.nav_post_links .nav_post').on('click', function() {
2946		jQuery(this).addClass('active');
2947	});
2948}
2949
2950function cws_icons_wheel_init(){
2951	jQuery('.cws_icons_wheel_module').each(function(i, el){
2952		//Animate icons when module is visible
2953		var module_offset = jQuery(el).offset().top;
2954
2955		jQuery(window).on('scroll', function() {
2956			if( jQuery(window).scrollTop() + (jQuery(window).height() * 0.6) >= module_offset ){
2957				jQuery(el).find('.icons_wheel_wrapper').addClass('active');
2958				jQuery(el).find('.circle_wrapper').addClass('active');
2959
2960				setTimeout(function(){
2961					jQuery(el).find('.icons_wheel_wrapper').addClass('done');
2962				}, 1400);
2963			}
2964		});
2965
2966		//Wait for animation
2967		setTimeout(function(){
2968			//Init main icons_wheel script
2969			if( jQuery(el).hasClass('on_hover') && !not_desktop() ){
2970				cws_icons_wheel(jQuery(el), 'hover');
2971			} else {
2972				cws_icons_wheel(jQuery(el), 'click');
2973			}
2974
2975			//Module Autoplay
2976			if( jQuery(el).hasClass('autoplay') ){
2977				var speed = jQuery(el).data('speed');
2978				
2979				//Autoplay init
2980				var wheel_interval = setInterval(function() {
2981					cws_icons_wheel_autoplay(jQuery(el));
2982				}, speed);
2983
2984				if( jQuery(el).hasClass('on_hover') && !not_desktop() ){
2985					//Remove autoplay on hover and start on hover off
2986					jQuery(el).find('.icon_wrapper').hover(function() {
2987						window.clearInterval(wheel_interval);
2988					}, function() {
2989						wheel_interval = setInterval(function() {
2990							cws_icons_wheel_autoplay( jQuery(el) );
2991						}, speed);
2992					});
2993				} else {
2994					//Remove autoplay on click
2995					jQuery(el).find('.icon_wrapper').on('click', function() {
2996						window.clearInterval(wheel_interval);
2997					});
2998				}
2999			}
3000		}, 1400);
3001	});
3002}
3003
3004function cws_icons_wheel(el, active_trigger){
3005	jQuery(el).find('.icon_wrapper').on(active_trigger, function() {
3006		var trigger = jQuery(this).parent().data('trigger');
3007
3008		jQuery(this).closest('.icons_wheel_wrapper').find('.icon_wrapper').removeClass('active');
3009		jQuery(this).addClass('active');
3010
3011		jQuery(this).closest('.icons_wheel_wrapper').find('.icons_wheel_info').removeClass('active');
3012		jQuery(this).closest('.icons_wheel_wrapper').find('.icons_wheel_info[data-id="'+trigger+'"]').addClass('active');
3013	});
3014}
3015
3016function cws_icons_wheel_autoplay(el, speed){
3017	var active_el = jQuery(el).find('.icon_wrapper.active');
3018	var nextEl = active_el.parent().nextAll('.icons_wheel_icon');
3019	nextEl = nextEl[0];
3020
3021	if( typeof nextEl == 'undefined'){
3022		nextEl = jQuery(el).find('.icons_wheel_icon:first-child');
3023	}
3024	
3025	jQuery(el).find('.icon_wrapper').removeClass('active');
3026	jQuery(nextEl).find('.icon_wrapper').addClass('active');
3027
3028	jQuery(el).find('.icons_wheel_info').removeClass('active');
3029	jQuery(nextEl).next('.icons_wheel_info').addClass('active');
3030}
3031
3032function cws_roadmap_before_end_point(){
3033	if( jQuery('body').hasClass('rtl') ){
3034		jQuery('.roadmap_row.breakpoint').find('.end_point').nextAll().addClass('before_end');
3035	} else {
3036		jQuery('.roadmap_row.breakpoint').find('.end_point').prevAll().addClass('before_end');
3037	}
3038}
3039
3040function cws_roadmap_animation(){
3041	jQuery('.roadmap_row').each(function(i, el){
3042		//Animate icons when module is visible
3043		var module_offset = jQuery(el).offset().top;
3044
3045		if( jQuery(window).scrollTop() + (jQuery(window).height() * 0.7) >= module_offset ){
3046			jQuery(el).addClass('active');
3047		} else {
3048			jQuery(window).on('scroll', function() {
3049				if( jQuery(window).scrollTop() + (jQuery(window).height() * 0.7) >= module_offset ){
3050					jQuery(el).addClass('active');
3051				}
3052			});
3053		}
3054	});
3055}
3056
3057function cws_benefits_init(){
3058	if( !not_desktop() ){
3059		cws_benefits_animation('hover');
3060	} else {
3061		cws_benefits_animation('click');
3062	}
3063
3064	cws_benefits_equal_height();
3065}
3066function cws_benefits_animation(trigger){
3067	jQuery('.cws_benefits_module').on(trigger, function() {
3068		jQuery(this).closest('.vc_row').find('.cws_benefits_module').addClass('hidden');
3069		jQuery(this).removeClass('hidden');
3070	});
3071}
3072function cws_benefits_equal_height(){
3073	jQuery('.cws_benefits_module').each(function(i, el){
3074		if( jQuery(el).closest('.vc_row').hasClass('vc_row-o-equal-height') ){
3075			jQuery(el).parent('.wpb_wrapper').css('height', '100%');
3076			jQuery(el).css('height', '100%');
3077		}
3078	});
3079}
3080
3081function cws_infinite_autoplay(){
3082	if( jQuery('.top_bar_ticker').length != 0 ){
3083		jQuery('.top_bar_ticker').simplemarquee();
3084	}
3085}
3086
3087function cws_countdown(){
3088	if( jQuery('.countdown_clock').length != 0 ){
3089
3090		var clock;
3091		var futureDate;
3092		var diff;
3093		var currentDate = new Date();
3094
3095		jQuery('.countdown_clock').each(function(i, el){
3096			futureDate = new Date(jQuery(el).data('time'));
3097			diff = futureDate.getTime() / 1000 - currentDate.getTime() / 1000;
3098
3099			clock = jQuery(el).FlipClock(diff, {
3100				clockFace: 'DailyCounter',
3101				countdown: true
3102			});
3103		});
3104	}
3105}
3106
3107function cws_calculator(){
3108	jQuery('.calculate_form .quantity').on('input', function(){
3109		var count = jQuery('.calculate_form .quantity').val();
3110		var price = jQuery('.calculate_form .crypto_price').data('price');
3111
3112		var result = count * price;
3113
3114		jQuery('.calculate_form .crypto_price').val(result);		
3115	});
3116}
3117/****\ CWS Features declaration  \****/
3118
3119/***** CWS Fixes declaration  *****/
3120
3121function cws_revslider_pause_init (){
3122	var slider_els, slider_el, slider_id, id_parts, revapi_ind, revapi_id, i;
3123	var slider_els = document.getElementsByClassName( "rev_slider" );
3124	window.cws_revsliders = {};
3125	if ( !slider_els.length ) return;
3126	for ( i = 0; i < slider_els.length; i++ ){
3127		slider_el = slider_els[i];
3128		slider_id = slider_el.id;
3129		id_parts = /rev_slider_(\d+)(_\d+)?/.exec( slider_id );
3130		if ( id_parts == null ) continue;
3131		if ( id_parts[1] == undefined ) continue;
3132		revapi_ind = id_parts[1];
3133		revapi_id = "revapi" + revapi_ind;
3134		window.cws_revsliders[slider_id] = {
3135			'el' : slider_el,
3136			'api_id' : revapi_id,
3137			'stopped' : false
3138		}
3139		window[revapi_id].on( 'bind', 'revolution.slide.onloaded', function (){
3140			cws_revslider_scroll_controller ( slider_id );
3141		});
3142		window.addEventListener( 'scroll', function (){
3143			cws_revslider_scroll_controller ( slider_id );
3144		});	
3145	}	
3146}
3147function cws_revslider_scroll_controller ( slider_id ){
3148	var slider_obj, is_visible;
3149	if ( slider_id == undefined ) return;
3150	slider_obj = window.cws_revsliders[slider_id];
3151	is_visible = jQuery( slider_obj.el ).is_visible();
3152	if ( is_visible && slider_obj.stopped ){
3153		window[slider_obj.api_id].revresume();
3154		slider_obj.stopped = false;
3155	}
3156	else if ( !is_visible && !slider_obj.stopped ){
3157		window[slider_obj.api_id].revpause();	
3158		slider_obj.stopped = true;		
3159	}
3160}
3161
3162function cws_first_place_col(){
3163	jQuery('.first_col_trigger').each(function(i, el) {
3164		jQuery(el).next().addClass('vc_inner_col-first-place');
3165	});
3166
3167	jQuery('.vc_col-first-place').closest('.vc_row').addClass('custom_flex_row');
3168	jQuery('.vc_inner_col-first-place').closest('.vc_row').addClass('custom_inner_flex_row');
3169}
3170
3171function staff_advanced_hover() {
3172	if( not_desktop() ){
3173		jQuery('.staff_module_wrapper.style_advanced .staff_item_inner').on('click', function(e) {
3174			jQuery(this).closest('.cws_vc_shortcode_grid').find('.staff_item_inner').removeClass('active');
3175			jQuery(this).addClass('active');
3176
3177			e.preventDefault();
3178			return false;
3179		});
3180	}
3181}
3182
3183function cws_custom_inputs() {
3184	jQuery('.cws_input_mail').closest('p').addClass('cws_input_mail');
3185	jQuery('.cws_submit_mail').closest('p').addClass('cws_submit_mail');
3186
3187	jQuery('.big_input').closest('p').addClass('big_input');
3188	jQuery('.submit_inside').closest('p').addClass('submit_inside');
3189	jQuery('.second_color').closest('p').addClass('second_color');
3190	jQuery('.full_width').closest('p').addClass('full_width');
3191	jQuery('.width_50').closest('p').addClass('width_50');
3192	jQuery('.float_right').closest('p').addClass('float_right');
3193
3194	jQuery('.cws_standart_form').closest('form').addClass('cws_standart_form');
3195
3196	jQuery('.wpcf7-form-control-wrap').children().each(function(i, el) {
3197		if( el.tagName == 'SELECT' ){
3198			jQuery(el).parent().addClass('cws_custom_select');
3199		}
3200	});
3201}
3202
3203function cws_fix_styles_init(){
3204	//Full width map fix
3205	jQuery('#wpgmza_map').closest('.cws-column').addClass('full_width_map');
3206
3207	var browser = cws_detect_browser();
3208	jQuery('body').addClass('browser_'+browser);
3209}
3210
3211function cryptop_services_hover(){
3212	if( !not_desktop() ){
3213		jQuery('.cws_service_module.scale_on_hover').hover( function() {
3214			jQuery(this).closest('.vc_row').find('.cws_column_wrapper').css('z-index', '1');
3215			jQuery(this).closest('.cws_column_wrapper').css('z-index', '2');
3216		});
3217	}
3218}
3219
3220function cryptop_portfolio_tablet_hover(){
3221	if( not_desktop() ){
3222		jQuery('.portfolio_module_wrapper.cws_carousel_wrapper .item .item_content, .cws_vc_shortcode_grid .item .item_content').on('click', function(e) {
3223			if( !jQuery(this).hasClass('active') ){
3224				jQuery('.item .item_content').removeClass('active');
3225				jQuery(this).addClass('active');
3226				e.preventDefault();
3227				return false;
3228			}
3229		});
3230	}
3231}
3232
3233function Video_resizer (){
3234	if (element.length) {
3235		for (var i = element.length - 1; i >= 0; i--) {
3236			video_source = element[i].getAttribute("data-video-source");
3237			video_id = element[i].getAttribute("data-video-id");
3238			el_width = element[i].offsetWidth;
3239		
3240
3241			if (element[i].offsetHeight<((el_width/16)*9)) {
3242				el_height = (element[i].offsetWidth/16)*9;
3243			}else{
3244				el_height = element[i].offsetHeight;
3245				el_width = (el_height/9)*16;
3246			}
3247			var el_iframe = document.getElementById(element[i].getAttribute("data-video-id"));
3248			el_iframe.style.width = el_width+'px';
3249			el_iframe.style.height = el_height+'px';
3250		};
3251	};
3252}
3253
3254function vc_accordion_fix(){
3255	jQuery('.vc_tta-panel-title').each(function(i, el){
3256		if( jQuery(el).hasClass('vc_tta-controls-icon-position-right') ){
3257			jQuery(el).closest('.vc_tta-panel').find('.vc_tta-panel-body').addClass('vc_tta-content-position-right');
3258		}
3259	});
3260}
3261
3262function embed_videos_height(){
3263	jQuery('.cws_oembed_wrapper').each(function(i, el) {
3264		if( typeof jQuery(el).children('iframe').attr('src') !== 'undefined' && jQuery(el).children('iframe').attr('src') != '' ){
3265			jQuery(el).addClass('video_inside');
3266		}
3267	});
3268}
3269
3270function cws_megamenu_active(){
3271	jQuery('.menu-item-object-megamenu_item').each(function(i, el) {
3272		if( jQuery(el).find('.current_page_item').length != 0 ){
3273			jQuery(el).addClass('current_page_ancestor');
3274		}
3275	});
3276}
3277
3278/****\ CWS Fixes declaration  \****/
3279
3280/**********************************
3281****** /SCRIPTS DECLARATION *******
3282**********************************/
3283
3284
3285/*******************************************
3286******** OTHER SCRIPTS DECLARATION *********
3287*******************************************/
3288
3289function is_visible_init (){
3290	jQuery.fn.is_visible = function (){
3291		return ( jQuery(this).offset().top >= jQuery(window).scrollTop() ) && ( jQuery(this).offset().top <= jQuery(window).scrollTop() + jQuery(window).height() );
3292	}
3293}
3294
3295function cws_is_rtl(){
3296	return jQuery("body").hasClass("rtl");
3297}
3298
3299function cws_widget_divider_init (){
3300	jQuery.fn.cws_widget_divider = function (){
3301		jQuery(this).each( function (){
3302			var el = jQuery(this);
3303			var done = false;
3304			if (!done) done = cws_widget_divider_controller(el);
3305			jQuery(window).scroll(function (){
3306				if (!done) done = cws_widget_divider_controller(el);
3307			});
3308		});
3309	}
3310}
3311
3312function cws_widget_divider_controller (el){
3313	if (el.is_visible()){
3314		jQuery(el).addClass('divider_init');
3315		return true;
3316	}
3317	return false;
3318}
3319
3320function cws_widget_services_init (){
3321	jQuery.fn.cws_services_icon = function (){
3322		jQuery(this).each( function (){
3323			var el = jQuery(this);
3324			var done = false;
3325			if (!done) done = cws_icon_animation_controller(el);
3326			jQuery(window).scroll(function (){
3327				if (!done) done = cws_icon_animation_controller(el);
3328			});
3329		});
3330	}
3331}
3332
3333function cws_icon_animation_controller (el){
3334	if (el.is_visible() && jQuery(el).hasClass('add_animation_icon') ){
3335		jQuery(el).addClass('icon_init');
3336		return true;
3337	}
3338	return false;
3339}
3340
3341function hexdec(hex_string) {
3342	hex_string = (hex_string + '')
3343	.replace(/[^a-f0-9]/gi, '');
3344	return parseInt(hex_string, 16);
3345}
3346
3347function cws_Hex2RGB(hex) {
3348	var hex = hex.replace("#", "");
3349	var color = '';
3350	if (hex.length == 3) {
3351		color = hexdec(hex.substr(0,1))+',';
3352		color = color + hexdec(hex.substr(1,1))+',';
3353		color = color + hexdec(hex.substr(2,1));
3354	}else if(hex.length == 6){
3355		color = hexdec(hex.substr(0,2))+',';
3356		color = color + hexdec(hex.substr(2,2))+',';
3357		color = color + hexdec(hex.substr(4,2));
3358	}
3359	return color;
3360}
3361
3362function cws_detect_browser() { 
3363    if((navigator.userAgent.indexOf("Opera") || navigator.userAgent.indexOf('OPR')) != -1 ) 
3364    {
3365        return 'Opera';
3366    }
3367    else if(navigator.userAgent.indexOf("Chrome") != -1 )
3368    {
3369        return 'Chrome';
3370    }
3371    else if(navigator.userAgent.indexOf("Safari") != -1)
3372    {
3373        return 'Safari';
3374    }
3375    else if(navigator.userAgent.indexOf("Firefox") != -1 ) 
3376    {
3377        return 'Firefox';
3378    }
3379    else if((navigator.userAgent.indexOf("MSIE") != -1 ) || (!!document.documentMode == true )) //IF IE > 10
3380    {
3381    	return 'IE';
3382    }  
3383    else 
3384    {
3385       return 'unknown';
3386    }
3387}
3388
3389/*******************************************
3390******* /OTHER SCRIPTS DECLARATION *********
3391*******************************************/
3392
3393
3394/*************************************
3395************** RETINA ****************
3396*************************************/
3397
3398var retina = {};
3399retina.root = (typeof exports === 'undefined' ? window : exports);
3400retina.config = {
3401        // An option to choose a suffix for 2x images
3402        retinaImageSuffix : '@2x',
3403
3404        // Ensure Content-Type is an image before trying to load @2x image
3405        // https://github.com/imulus/retinajs/pull/45)
3406        check_mime_type: true,
3407
3408        // Resize high-resolution images to original image's pixel dimensions
3409        // https://github.com/imulus/retinajs/issues/8
3410        force_original_dimensions: true
3411    };
3412retina.config.retinaImagePattern = new RegExp( retina.config.retinaImageSuffix + "." );
3413
3414(function() {
3415    function Retina() {}
3416
3417    window.retina.root.Retina = Retina;
3418
3419    Retina.configure = function(options) {
3420        if (options === null) {
3421            options = {};
3422        }
3423
3424        for (var prop in options) {
3425            if (options.hasOwnProperty(prop)) {
3426                window.retina.config[prop] = options[prop];
3427            }
3428        }
3429    };
3430
3431    Retina.init = function(context) {
3432        if (context === null) {
3433            context = window.retina.root;
3434        }
3435
3436        var existing_onload = context.onload || function(){};
3437
3438        context.onload = function() {
3439            var images = document.getElementsByTagName('img'), retinaImages = [], i, image;
3440            for (i = 0; i < images.length; i += 1) {
3441                image = images[i];
3442                if ( !retina.config.retinaImagePattern.test(image.getAttribute("src")) ){
3443                    if (!!!image.getAttributeNode('data-no-retina')) {
3444                        retinaImages.push(new RetinaImage(image));
3445                    }
3446                }
3447            }
3448            existing_onload();
3449        };
3450    };
3451
3452    Retina.isRetina = function(){
3453        var mediaQuery = '(-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx)';
3454
3455        if (window.retina.root.devicePixelRatio > 1) {
3456            return true;
3457        }
3458
3459        if (window.retina.root.matchMedia && window.retina.root.matchMedia(mediaQuery).matches) {
3460            return true;
3461        }
3462
3463        return false;
3464    };
3465
3466
3467    var regexMatch = /\.\w+$/;
3468    function suffixReplace (match) {
3469        return window.retina.config.retinaImageSuffix + match;
3470    }
3471
3472    function RetinaImagePath(path, at_2x_path) {
3473        this.path = path || '';
3474        if (typeof at_2x_path !== 'undefined' && at_2x_path !== null) {
3475            this.at_2x_path = at_2x_path;
3476            this.perform_check = false;
3477        } else {
3478            if (undefined !== document.createElement) {
3479                var locationObject = document.createElement('a');
3480                locationObject.href = this.path;
3481                locationObject.pathname = locationObject.pathname.replace(regexMatch, suffixReplace);
3482                this.at_2x_path = locationObject.href;
3483            } else {
3484                var parts = this.path.split('?');
3485                parts[0] = parts[0].replace(regexMatch, suffixReplace);
3486                this.at_2x_path = parts.join('?');
3487            }
3488            this.perform_check = true;
3489        }
3490    }
3491
3492    window.retina.root.RetinaImagePath = RetinaImagePath;
3493
3494    RetinaImagePath.confirmed_paths = [];
3495
3496    RetinaImagePath.prototype.is_external = function() {
3497        return !!(this.path.match(/^https?\:/i) && !this.path.match('//' + document.domain) );
3498    };
3499
3500    RetinaImagePath.prototype.check_2x_variant = function(callback) {
3501        var http, that = this;
3502        if (this.is_external()) {
3503            return callback(false);
3504        } else if (!this.perform_check && typeof this.at_2x_path !== 'undefined' && this.at_2x_path !== null) {
3505            return callback(true);
3506        } else if (this.at_2x_path in RetinaImagePath.confirmed_paths) {
3507            return callback(true);
3508        } else {
3509            return callback(false);
3510        }
3511    };
3512
3513
3514    function RetinaImage(el) {
3515        this.el = el;
3516        this.path = new RetinaImagePath(this.el.getAttribute('src'), this.el.getAttribute('data-at2x'));
3517        var that = this;
3518        this.path.check_2x_variant(function(hasVariant) {
3519            if (hasVariant) {
3520                that.swap();
3521            }
3522        });
3523    }
3524
3525    window.retina.root.RetinaImage = RetinaImage;
3526
3527    RetinaImage.prototype.swap = function(path) {
3528        if (typeof path === 'undefined') {
3529            path = this.path.at_2x_path;
3530        }
3531
3532        var that = this;
3533        function load() {
3534            var width = that.el.offsetWidth;
3535            var height = that.el.offsetHeight;
3536            if ( !that.el.complete || !width || !height ) {
3537                setTimeout(load, 5);
3538            } else {
3539                if (window.retina.config.force_original_dimensions) {
3540                    that.el.setAttribute('width', width);
3541                    that.el.setAttribute('height', height);
3542                }
3543
3544                that.el.setAttribute('src', path);
3545            }
3546        }
3547        load();
3548    };
3549
3550
3551    if (Retina.isRetina()) {
3552        Retina.init(window.retina.root);
3553    }
3554})();
3555
3556/**************************************
3557************** \RETINA ****************
3558**************************************/
3559
3560
3561/*******************************************************
3562************** TIPR ****************
3563*******************************************************/
3564(function($){$.fn.tipr=function(options){var set=$.extend({'speed':200,'mode':'bottom'},options);return this.each(function(){var tipr_cont='.tipr_container_'+set.mode;$(this).hover( function()
3565{var d_m=set.mode;if($(this).attr('data-mode'))
3566{d_m=$(this).attr('data-mode')
3567tipr_cont='.tipr_container_'+d_m;}
3568var out='<div class="tipr_container_'+d_m+'"><div class="tipr_point_'+d_m+'"><div class="tipr_content">'+$(this).attr('data-tip')+'</div></div></div>';$(this).append(out);var w_t=$(tipr_cont).outerWidth();var w_e=$(this).width();var m_l=(w_e / 2)-(w_t / 2);$(tipr_cont).css('margin-left',m_l+'px');$(this).removeAttr('title alt');$(tipr_cont).fadeIn(set.speed);},function()
3569{$(tipr_cont).remove();});});};})(jQuery);
3570/*******************************************************
3571************** \TIPR ****************
3572*******************************************************/

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.