/home/arranoyd/magicraft/wp-content/themes/massive-dynamic/assets/js/section_scroll.js
/**
 * *********************
 * * Massive One Page Scroll Options
 * *********************
 * It is added as a part of Massive Dynamic since V3.8 and designed for section scrolling. Enjoy Editing ;)
 *
 *
 * @author PixFlow
 *
 * @version 1.0.0
 * @requires jQuery
 *
 */


// Start with defining global variable
var $row_element = $('.vc_row:not(.vc_inner)'),
	row_count = $row_element.length,
	current_row_index = 0,
	last_row_index = 0,
	do_scroll = true,
	footer_show = false,
	window_height = $(window).height(),
	brightness;


/**
 * Init one page scroll
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_init_one_page_scroll() {
	"use strict";
    if(isMobile() && $('body').hasClass('disable_section_scroll_mobile') ){
        $('body').removeClass('one_page_scroll');
        return false;
    }
    if ($('body').hasClass('compose-mode') && $("body").hasClass('one_page_scroll')) {
		pixflow_one_page_for_customizer();
		return false;
	}
	if ($("body").hasClass('one_page_scroll')) {
		var footer_height = $('footer').height();
		$('footer').css('bottom', '-' + parseInt(footer_height) + 'px');
		pixflow_prepare_pages(row_count);
		if (pixflow_isTouchDevice()) {
			pixflow_set_event_touch_on_document();
		}
		pixflow_set_event_on_window(row_count);
		pixflow_check_url();
		pixflow_bind_event_on_link();
	}
	return false;
}

/**
 * Set touch event for scrolling the page on touch devices
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_set_event_touch_on_document() {
	var last_touch_pos = 0;

	// Detect the position of touching
	$(document).bind('touchstart', function (e) {
		last_touch_pos = e.originalEvent.touches[0].clientY;
	});

	$(document).bind('touchend', function (e) {
		if (do_scroll == false)
			return true;
		var current_touch_pos = e.originalEvent.changedTouches[0].clientY;
		if (last_touch_pos > current_touch_pos + 5) {
			if ($('.row-active').find(' > .wrap').hasClass('mobile-row-over-height')) {
				pixflow_row_scroll(row_count, 'down');
			} else {
				pixflow_scroll_page('down', row_count);
			}
		} else {
			if ($('.row-active').find(' > .wrap').hasClass('mobile-row-over-height')) {
				pixflow_row_scroll(row_count, 'up');
			} else {
				pixflow_scroll_page('up', row_count);
			}
		}
	});
	return true;
}

/**
 * Set scroll event for scrolling page
 *
 * @param int row_num it shows the number if rows in page ( not inner row )
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_set_event_on_window(row_count) {
	$(window).off('wheel').on('wheel', function (event) {
		if (event.originalEvent.deltaY > 0) {
			pixflow_scroll_page('down', row_count);
			$(window).off();
		} else {
			pixflow_scroll_page('up', row_count);
			$(window).off();
		}
	});

	return false;
}

/**
 * Scroll the row if the content of row is bigger that document height
 *
 * @param direction that up or down
 * @param int row_num it shows the number if rows in page ( not inner row )
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_row_scroll( row_count, direction ) {

	if ( pixflow_isMobile() ) {
			if ( current_row_index === ( $( '.vc_row' ).last().index() + 1 )
				&& true === footer_show
				&& 'up' == direction )  {
				pixflow_scroll_page( 'up', row_count );
				return false;
		}

		pixflow_row_scroll_mobile( direction );
	} else {
		pixflow_row_scroll_desktop( row_count, direction);
	}

}


/**
 * Scroll the row if the content of row is bigger that document height in desktop using browser scroll
 *
 * @param direction that up or down
 *
 * @return boolean
 * @since 3.8
 */
var should_scroll_up = false,
	should_scroll_down = false;
function pixflow_row_scroll_mobile(direction) {
	var $active_row = $('.row-active').find(' > .wrap');
	if ($active_row.scrollTop() + $active_row.innerHeight() >= $active_row[0].scrollHeight && direction == 'down') {
		if (should_scroll_down == true) {
			pixflow_scroll_page('down', row_count);
			should_scroll_down = false;
		} else {
			should_scroll_down = true;
		}
	}
	if ($active_row.scrollTop() == 0 && direction == 'up') {
		if (should_scroll_up == true) {
			pixflow_scroll_page('up', row_count);
			should_scroll_up = false;
		} else {
			should_scroll_up = true;
		}
	}
	return false;
}


/**
 * Scroll the row if the content of row is bigger that document height in desktop using nicescroll
 *
 * @param direction that up or down
 * @param int row_num it shows the number if rows in page ( not inner row )
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_row_scroll_desktop(row_count, direction) {
	var $nice_scroll = $('.row-active').find('.nicescroll-cursors').last();
	if ((($nice_scroll.offset().top + $nice_scroll.height()) + 4 ) >= $nice_scroll.parent().height() && direction == 'down') {
		pixflow_scroll_page('down', row_count);
		return true;
	}
	if (parseInt($nice_scroll.css('top')) == 0 && direction == 'up') {
		pixflow_scroll_page('up', row_count);
		return true;
	}
}


/**
 * check the page and if the url have row sections scroll into it
 *
 * @return boolean
 * @since 4.4
 */
var first_time_check = false;
function pixflow_check_url(goal_row) {
	var row_src, row_index;
	row_src = ( null != goal_row ) ? goal_row : window.location.hash;
	row_src = row_src.replace('#', '');
	row_index = parseInt($('#' + row_src).closest('.vc_row:not(.vc-inner)').attr('data-index'));
	if ($(window).width() <= 1280 && pixflow_isTouchDevice()) {
		if (first_time_check == true) {
			if ($('.navigation-mobile').css('display') != 'none') {
				$('.navigation-button').click();
			}
		}
		first_time_check = true;
	}
	setTimeout(function () {
		$('#pix-nav').find('li').eq(row_index).find('span').click();
	}, 700);
}

/**
 * Bind events on button and links to scroll in the section
 *
 * @return boolean
 * @since 4.4
 */
function pixflow_bind_event_on_link() {
	$('a:not(.navigation-button)').on('click', function (e) {
		var url = $(this).attr('href');
		if (url.search('#') != -1) {
			var get_url = window.location.origin;
			var url_part = url.split('/');
			var protocol = url_part[0];
			var host = url_part[2];
			var base_target_url = protocol + '//' + host;
			if (
				get_url == base_target_url
				|| protocol == url
			) {
				e.preventDefault();
				var get_hash_part = url.substring(url.indexOf('#') + 1);
				pixflow_check_url(get_hash_part);
			}
		}
	});
}

/**
 * Set min height for rows in customizer
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_one_page_for_customizer() {
	$row_obj = $('.vc_row:not(.vc_inner)');
	var window_screen = parseInt($(window).height());
	$row_obj.each(function () {
		$(this).css({
			minHeight: window_screen + 'px'
		});
	});
}

/**
 * make page ready for section scrolling like Creating bullet and set height for rows
 *
 * @param int row_num it shows the number if rows in page ( not inner row )
 * @return boolean
 * @since 3.8
 */
function pixflow_prepare_pages(row_count) {
	pixflow_set_height_for_rows();
	pixflow_create_bullet(row_count);
	$(window).load(function () {
		pixflow_set_color(0);
	});
	return false;
}

/**
 * Set the height of each rows equal screen height
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_set_height_for_rows() {
	pixflow_set_style_for_onepage();
	var screen_height = $(window).height(),
		$vc_row = $('.vc_row:not(.vc_inner)'),
		count = 0;
	$('.layout').css('min-height', screen_height);
	$vc_row.each(function () {
		pixflow_detect_color(count);
		$(this).attr('data-index', count);
		$(this).addClass('full-page').css({
			'height': screen_height + 'px',
			'top': screen_height + 'px',
			zIndex: 8
		});
		pixflow_check_for_nicescoll(count);
		count++;
	});
	$vc_row.first().addClass('row-active').css({
		'top': '0px',
		zIndex: 10
	});
	return true;
}

/**
 * Set the important styles for one page
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_set_style_for_onepage() {
	var ua = navigator.userAgent;
	if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile|CriOS/i.test(ua)) {
		$('body , html').css({overflow: 'hidden', height: '100%', position: 'static'});
	} else {
		$('body').css({overflow: 'hidden', height: '100%'});
	}

	var style = document.createElement('style');
	style.type = 'text/css';
	if (style.styleSheet) {
		style.styleSheet.cssText = '::-webkit-scrollbar {display: none;} html { overflow: -moz-scrollbars-none; } body{overflow: hidden;} .gather-overlay{position:fixed !important}';
	} else {
		style.appendChild(document.createTextNode('::-webkit-scrollbar {display: none;} html { overflow: -moz-scrollbars-none; } .gather-overlay{position:fixed !important}'));
	}
	document.getElementsByTagName('head')[0].appendChild(style);
	var header_top = parseInt($('header:not(.header-clone)').css('top'));
	if ($('body').hasClass('admin-bar')) {
		header_top += 32;
	}
	$('body.one_page_scroll:not(.compose-mode) header:not(.header-clone)').css({top: header_top});
	return false;
}

/**
 * Check the content of row and add class if row is bigger than window
 *
 * @param int index that show the index  of row
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_set_over_height_for_mobile(index) {
	var $element = $('.vc_row:not(.vc_inner)').eq(index);
	if ($element.hasClass('row-over-height'))
		return;

	$element.find('>.wrap').addClass('mobile-row-over-height');

}

/**
 * Check the content of row and add nicescroll if row is bigger than window
 *
 * @param int index that show the index  of row
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_check_for_nicescoll(index) {
	if (pixflow_isMobile()) {
		pixflow_set_over_height_for_mobile(index);
		pixflow_mobile_row_over_height();
		return false;
	}
	var $element = $('.vc_row:not(.vc_inner)').eq(index);
	if ($element.hasClass('row-over-height'))
		return;
	if ($element.find('>.wrap').height() > $(window).height()) {
		$element.addClass('row-over-height').find('>.wrap').niceScroll({
			horizrailenabled: false,
			cursorcolor: "rgba(204, 204, 204, 0.2)",
			cursorborder: "1px solid rgba(204, 204, 204, 0.2)",
			cursorwidth: "2px",
			touchbehavior: true,
			preventmultitouchscrolling: false,
			enablescrollonselection: false
		});
	}
	return false;
}

/**
 * Create bullet for each row
 *
 * @param int row_num it shows the number if rows in page ( not inner row )
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_create_bullet(row_count) {
	var bullet_source = '<div id="pix-nav" class="background--light"><ul>';
	bullet_source += '<li class="bullet-active" ><span data-index="0"></span></li>';
	for (var count = 1; count < row_count; count++) {
		bullet_source += '<li><span data-index="' + count + '"></span></li>';
	}
	bullet_source += "</ul></div>";
	$('body').append(bullet_source);
	$('#pix-nav').css('top', ( $(window).height() / 2 ) + 'px');
	pixflow_add_event_for_bullet(row_count);
}

/**
 * Add click event on bullet for each row
 *
 * @param int row_num it shows the number if rows in page ( not inner row )
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_add_event_for_bullet(row_count) {
	$('body').on('click', '#pix-nav span', function () {
		var current_index = parseInt($('.bullet-active').find('span').attr('data-index'));
		var move_to = parseInt($(this).attr('data-index'));
		if (move_to > current_index) {
			last_row_index = current_row_index;
			if (current_row_index == move_to) {
				return;
			}
			current_row_index = move_to;
			pixflow_scroll_page('down', row_count, type = 'click');
		} else {
			if (footer_show == true) {
				pixflow_footer_scroll_up_visible();
				footer_show = false;
			}
			last_row_index = current_row_index;
			if (current_row_index == move_to) {
				return;
			}
			current_row_index = move_to;
			pixflow_scroll_page('up', row_count, type = 'click');
		}
	});
}

/**
 * Detect the direction of scrolling and call the Intended function
 *
 * @param direction that up or down
 * @param int row_num it shows the number if rows in page ( not inner row )
 * @param String type it says the user behavior in how user scrolling the row ( click or scroll )
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_scroll_page(direction, row_count, type) {

	if (do_scroll == false)
		return;

	switch (direction) {
		case'up':
			pixflow_scroll_up(row_count, type);
			break;
		case 'down':
			pixflow_scroll_down(row_count, type);
			break;
		default:
			return false;
			break;
	}
	return false;
}

/**
 * Scroll the row to down
 *
 * @param int row_num it shows the number if rows in page ( not inner row )
 * @param String type it says the user behavior in how user scrolling the row ( click or scroll )
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_scroll_down(row_count, type) {
	do_scroll = false;
	if (current_row_index >= row_count - 1 && type != 'click') {
		pixflow_footer_visibilty(row_count);
		setTimeout(function () {
			pixflow_set_event_on_window(row_count);
		}, 10);
		return;
	}
	pixflow_check_for_nicescoll();
	$('.bullet-active').removeClass('bullet-active');
	if (type == 'click') {
		$('#pix-nav').find('li').eq(current_row_index).addClass('bullet-active');
		pixflow_check_for_nicescoll(current_row_index);
	} else {
		$('#pix-nav').find('li').eq(current_row_index + 1).addClass('bullet-active');
		pixflow_check_for_nicescoll(current_row_index + 1);
	}
	pixflow_scroll_down_animate(type);
}

/**
 * Anmiate the rows on scrolling down
 *
 * @param String type it says the user behavior in how user scrolling the row ( click or scroll )
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_scroll_down_animate(type) {
	setTimeout(function () {
		pixflow_set_color(current_row_index);
	}, 500);
	if (type == 'click') {
		if (last_row_index == current_row_index)
			last_row_index = current_row_index - 1;
		$this_row = $('.vc_row:not(.vc_inner)').eq(last_row_index);
		$next_row = $('.vc_row:not(.vc_inner)').eq(current_row_index);

	} else {
		$this_row = $('.vc_row:not(.vc_inner)').eq(current_row_index);
		$next_row = $this_row.next();
	}
	$this_row.css({zIndex: 9});
	setTimeout(function () {
		pixflow_shortcodeAnimationScroll();
		pixflow_onepage_scroll_svg_animate();
	}, 800);
	pixflow_call_tweenMax_for_scroll_down($this_row, $next_row);
	if (type != 'click') {
		current_row_index++;
	}
	pixflow_back_shortcode_to_position();
	$('.row-active').removeClass('row-active');
	$('.vc_row:not(.vc_inner)').eq(current_row_index).addClass('row-active');
}

/**
 * Scroll the row to up
 *
 * @param int row_num it shows the number if rows in page ( not inner row )
 * @param String type it says the user behavior in how user scrolling the row ( click or scroll )
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_scroll_up(row_count, type) {
	do_scroll = false;
	if (footer_show == true) {
		pixflow_footer_scroll_up_visible();
		return;
	}
	if (current_row_index <= 0 && type != 'click') {
		current_row_index = 0;
		do_scroll = true;
		setTimeout(function () {
			pixflow_set_event_on_window(row_count);
		}, 1);
		return;
	}
	$('.bullet-active').removeClass('bullet-active');
	if (type != 'click') {
		$('#pix-nav').find('li').eq(current_row_index - 1).addClass('bullet-active');
	} else {
		$('#pix-nav').find('li').eq(current_row_index).addClass('bullet-active');
	}
	if (type != 'click') {
		pixflow_set_color(current_row_index - 1);
		pixflow_check_for_nicescoll(current_row_index - 1);
	} else {
		pixflow_set_color(current_row_index);
		pixflow_check_for_nicescoll(current_row_index);
	}
	pixflow_scroll_up_animate(type);
}

/**
 * Anmiate the rows on scrolling up
 *
 * @param String type it says the user behavior in how user scrolling the row ( click or scroll )
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_scroll_up_animate(type) {
	var $this_row, $prev_row;
	if (type != 'click') {
		$this_row = $('.vc_row:not(.vc_inner)').eq(current_row_index);
		$prev_row = $this_row.prev();
	} else {
		$this_row = $('.vc_row:not(.vc_inner)').eq(last_row_index);
		$prev_row = $('.vc_row:not(.vc_inner)').eq(current_row_index);
	}
	pixflow_call_tweenMax_for_scroll_up($this_row, $prev_row, type);
	if (type != 'click') {
		current_row_index--;
	}
	pixflow_back_shortcode_to_position();
	$('.row-active').removeClass('row-active');
	$('.vc_row:not(.vc_inner)').eq(current_row_index).addClass('row-active');
	return;
}

/**
 * Anmiate the rows on scrolling down
 *
 * @param Object this_row it shows the current row should animated
 * @param Object prev_row it highlighting the last row
 * @param String type it says the user behavior in how user scrolling the row ( click or scroll )
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_call_tweenMax_for_scroll_up($this_row, $prev_row, type) {
	$this_row.css({zIndex: 9});
	TweenMax.to($this_row, 1, {
		scale: .75, opacity: 0, ease: Power4.easeOut, onComplete: function () {
			if (type != 'click') {
				TweenMax.to($this_row, 0, {top: window_height, scale: 1, opacity: 1, zIndex: 8, ease: Power4.easeOut});
			} else {
				var count = 0;
				$('.vc_row:not(.vc_inner)').each(function () {
					if (count > parseInt($prev_row.attr('data-index'))) {
						TweenMax.to($(this), 0, {
							top: window_height,
							scale: 1,
							opacity: 1,
							zIndex: 8,
							ease: Power4.easeOut
						});
					}
					count++;
				});
			}
		}
	});
	setTimeout(function () {
		pixflow_shortcodeAnimationScroll();
		pixflow_onepage_scroll_svg_animate();
	}, 800);
	$prev_row.css({zIndex: '10'});
	TweenMax.to($prev_row, 1, {
		top: "0px", ease: Power4.easeOut, delay: .1, onComplete: function () {
			do_scroll = true;
			pixflow_set_event_on_window(row_count);
		}
	});
}

/**
 * Anmiate the rows on scrolling down
 *
 * @param Object this_row it shows the current row should animated
 * @param Object next_row it highlighting the next row
 * @param String type it says the user behavior in how user scrolling the row ( click or scroll )
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_call_tweenMax_for_scroll_down($this_row, $next_row, type) {
	TweenMax.to($this_row, 1, {
		scale: .75, opacity: 0, ease: Power4.easeOut, onComplete: function () {
			if (type != 'click') {
				TweenMax.to($this_row, 0, {
					top: '-' + window_height,
					scale: 1,
					opacity: 1,
					zIndex: 8,
					ease: Power4.easeOut
				});
			} else {
				var count = 0;
				$('.vc_row:not(.vc_inner)').each(function () {
					if (count == parseInt($next_row.attr('data-index'))) {
						return;
					}
					TweenMax.to($(this), 0, {
						top: '-' + window_height,
						scale: 1,
						opacity: 1,
						zIndex: 8,
						ease: Power4.easeOut
					});
					count++;
				});
			}
			do_scroll = true;
		}
	});
	$next_row.css({zIndex: 10});
	TweenMax.to($next_row, 1, {
		top: "0px", ease: Power4.easeOut, delay: .1, onComplete: function () {
			pixflow_set_event_on_window(row_count);
		}
	});
}

/**
 * get back the shortcodes to their position after their animation executed
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_back_shortcode_to_position() {
	$('.row-active').find('.has-animation').each(function () {
		var $this = $(this),
			animation_speed = Number($this.attr('data-animation-speed')) * 0.001,
			animation_delay = Number($this.attr('data-animation-delay')),
			animation_position = $this.attr('data-animation-position'),
			animation_easing = $this.attr('data-animation-easing'),
			move = 50;
		$(this).removeClass('show-animation');
		var shortcode_animation_list = [animation_position, $this, animation_speed, animation_delay, animation_easing, move];
		pixflow_get_shortcode_back_to_position(shortcode_animation_list);
	});
}

/**
 * Ready for scroll footer
 *
 * @param int row_num it shows the number if rows in page ( not inner row )
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_footer_visibilty(row_count) {
	if ($('footer').attr('data-footer-status') == 'off') {
		do_scroll = true;
		return false;
	}
	footer_show = true;
	current_row_index = row_count - 1;
	var footer_height = $('footer').height();
	this_row = $('.vc_row:not(.vc_inner)').last();
	TweenMax.to(this_row, 1, {top: "-" + footer_height + "px", ease: Power4.easeOut});
	TweenMax.to($('footer'), 1, {
		bottom: "0px", opacity: 1, ease: Power4.easeOut, onComplete: function () {
			do_scroll = true;
			pixflow_set_event_on_window(row_count);
		}
	});
	return false;
}

/**
 * Scroll up the footer if visible
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_footer_scroll_up_visible() {
	if ($('footer').attr('data-footer-status') == 'off') {
		do_scroll = true;
		return;
	}
	var footer_height = $('footer').height(),
		$this_row = $('.vc_row:not(.vc_inner)').last();
	TweenMax.to($this_row, 1, {top: "0px", repeatDelay: 0.5, ease: Power4.easeOut});
	TweenMax.to($('footer'), 1, {
		bottom: "-" + footer_height + "px",
		opacity: 0,
		repeatDelay: 0.5,
		ease: Power4.easeOut,
		onComplete: function () {
			do_scroll = true;
			footer_show = false;
			pixflow_set_event_on_window(row_count);
		}
	});
	return false;
}

/**
 * Set color of each row
 *
 * @param index of row
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_set_color(row) {
	pixflow_change_color($('.vc_row:not(.vc_inner)').eq(row).attr('data-detect-color'));
}

/**
 * Detect the color
 *
 * @param index of row
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_detect_color(index) {
	var canvas = document.createElement('canvas'),
		canvas_obj = canvas.getContext('2d');
	if ($('.vc_row:not(.vc_inner)').eq(index).find('> .row-image').last().length) {
		var bg_url = $('.vc_row:not(.vc_inner)').eq(index).find('> .row-image').last().css('backgroundImage').replace(/.*\s?url\([\'\"]?/, '').replace(/[\'\"]?\).*/, '');
		if (bg_url != "none") {
			var img = new Image();
			img.onload = function () {
				canvas_obj.drawImage(img, 0, 0);
				pixflow_get_image_brightness(canvas.toDataURL(), function (brightness) {
					$('.vc_row:not(.vc_inner)').eq(index).attr('data-detect-color', brightness);
					return;
				});
			};
			img.src = bg_url;
		}
	} else {
		canvas.setAttribute('width', '20px');
		canvas.setAttribute('height', '20px');
		canvas_obj.beginPath();
		canvas_obj.rect(0, 0, 20, 20);
		canvas_obj.fillStyle = $('.vc_row:not(.vc_inner)').eq(index).attr('data-bgcolor');
		canvas_obj.fill();
		pixflow_get_image_brightness(canvas.toDataURL(), function (brightness) {
			$('.vc_row:not(.vc_inner)').eq(index).attr('data-detect-color', brightness);
			return;
		});
	}
}

/**
 * Change the color of bullet and menus
 *
 * @param index of row
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_change_color(brightness) {
	if (brightness > 160) {
		$('#pix-nav').removeClass('background--dark').addClass('background--light');
		if ($('header').hasClass('top-gather')) {
			$('header .logo').find('img').attr('src', $('header .logo-img').attr('data-dark-url'));
			$('.gather-menu-icon').css('color', 'black');
			if ($('.navigation-button').length) {
				$('.navigation-button').find('span').css('color', 'black');
			}
			if ($('.shopcart-item').length) {
				$('.shopcart-item').find('.icon').css('color', 'black');
			}
			if ($('.notification-item').length) {
				$('.notification-item').find('.icon').css('color', 'black');
			}
			if ($('.search-item').length) {
				$('.search-item').find('.icon').css('color', 'black');
			}
			if ($('.mobile-shopcart').length) {
				$('.mobile-shopcart').find('span').css('color', 'black');
			}
		}
	} else {
		$('#pix-nav').addClass('background--dark').removeClass('background--light');
		if ($('header').hasClass('top-gather')) {
			$('header .logo-img').attr('src', $('header .logo-img').attr('data-light-url'));
			$('.gather-menu-icon').css('color', '#ffffff');
			if ($('.shopcart-item').length) {
				$('.shopcart-item').find('.icon').css('color', '#ffffff');
			}
			if ($('.navigation-button').length) {
				$('.navigation-button').find('span').css('color', '#ffffff');
			}
			if ($('.notification-item').length) {
				$('.notification-item').find('.icon').css('color', '#ffffff');
			}
			if ($('.search-item').length) {
				$('.search-item').find('.icon').css('color', '#ffffff');
			}
			if ($('.mobile-shopcart').length) {
				$('.mobile-shopcart').find('span').css('color', '#ffffff');
			}
		}
	}
}

/**
 * Calculate the brightness of image
 *
 * @param image url
 * @param Callbcak function
 *
 * @return boolean
 * @since 3.8
 */
function pixflow_get_image_brightness(image_src, callback) {
	var img = document.createElement("img");
	var brightness = 0;
	img.src = image_src;
	img.classList.add('pixflow-bright-img');
	img.style.display = "none";
	document.body.appendChild(img);

	var color_sum = 0;

	img.onload = function () {
		// create canvas
		var canvas = document.createElement("canvas");
		canvas.width = this.width;
		canvas.height = this.height;

		var ctx = canvas.getContext("2d");
		ctx.drawImage(this, 0, 0);

		var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
		var data = imageData.data;
		var r, g, b, avg;

		for (var x = 0, len = data.length; x < len; x += 4) {
			r = data[x];
			g = data[x + 1];
			b = data[x + 2];

			avg = Math.floor((r + g + b) / 3);
			color_sum += avg;
		}

		brightness = Math.floor(color_sum / (this.width * this.height));
		callback(brightness);
		$('.pixflow-bright-img').remove();
	}
}

/**
 * Close footer if scroll on last section
 *
 * This function execute just in mobile devices
 *
 *
 * @return void
 * @since 5.1
 */
function pixflow_mobile_row_over_height() {

	$('.mobile-row-over-height').last().on('scroll', function () {

		if (true == footer_show) {
			pixflow_footer_scroll_up_visible();
			footer_show = false;
		}

	});

}