Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Build the Parallax Animation for jQuery
- * @author Michael Jones <[email protected]> 2019
- */
- (function($, window) {
- var parallax_log_times = false;
- var parallax_start = new Date().getTime();
- var px_transparent_con = "transparent-parallax-con";
- var px_transparent_width = "transparent-parallax-width";
- var px_transparent_height = "transparent-parallax-height";
- var px_parent_attached = 'px_init_slideshow_attached';
- var px_parent_slide_attached = 'px_init_slideshow_slide_attached';
- jQuery(document).ready(function() {
- jQuery.px_execution_times("Open INIT PARALLAX");
- jQuery.parallax_js_doc_ready('parallaxjs');
- });
- jQuery.parallax_js_doc_ready = function(parallax_name, extra_parallax_elements, parallax_options, parallax_bgtext) {
- // The Selected Parallax Items
- var parallax_ele_patterns = jQuery.parallax_js_items_pattern(parallax_name);
- // No Patterns
- if (!parallax_ele_patterns.length) {
- return false;
- } else {
- jQuery.px_execution_times("Finished Pattern Check", parallax_ele_patterns);
- };
- // Parallax Items
- var parallax_ele_items = jQuery(parallax_ele_patterns);
- // No Items
- if (!parallax_ele_items.length) {
- return false;
- } else {
- jQuery.px_execution_times("Finished Element Check", parallax_ele_items);
- };
- // Filtered Parallax Items
- var filtered_px_items = parallax_ele_items.filter_parallax_unwanted_items(parallax_name, 'parallax_js_doc_ready');
- if (!filtered_px_items.length) {
- return false;
- } else {
- jQuery.px_execution_times('Finished DOC READY filter Check', filtered_px_items);
- };
- // We have PX ITEMS
- var filterResult = filtered_px_items.parallax_js_doc_elements(parallax_name, extra_parallax_elements, parallax_options, parallax_bgtext);
- // Undefind Test
- if (typeof(filterResult) === 'undefined') {
- filterResult = true;
- };
- jQuery.px_execution_times('Finished DOC READY Event', filterResult);
- // Done
- return filterResult;
- };
- jQuery.parallax_js_items_pattern = function(parallax_name) {
- if (Boolean(parallax_name) == false) {
- return false;
- };
- if (String(parallax_name).length == false) {
- return false;
- };
- var parallax_pattern_suffix = [];
- parallax_pattern_suffix.push('text-parallax-parent');
- var parallax_ele_patterns = [];
- // Build the Patterns from NAME and SUFFIX ITEMS
- for (var x = 0; x < parallax_pattern_suffix.length; x++) {
- var parallax_pattern_suffix_x = parallax_pattern_suffix[x];
- var parallax_pattern_name_suffix = "div." + String(parallax_name).trim() + '-' + String(parallax_pattern_suffix_x).trim();
- parallax_pattern_name_suffix += ":not([data-parallax=\"scroll\"])";
- parallax_ele_patterns.push(parallax_pattern_name_suffix);
- };
- // Px Pattern String
- return parallax_ele_patterns.join(',');
- };
- jQuery.fn.find_parallax_js_items = function(parallax_name, find_px_key) {
- var originalElement = jQuery(this);
- var parentClassName = String(jQuery.parallax_js_items(parallax_name).items[find_px_key]).trim();
- if (originalElement.hasClass(parentClassName.replace('.', ''))) {
- return originalElement;
- };
- return jQuery(originalElement).find(parentClassName).first();
- };
- jQuery.fn.parallax_js_doc_elements = function(parallax_name, extra_parallax_elements, parallax_options, parallax_bgtext) {
- var parallax_ele_items = jQuery(this);
- if (!parallax_ele_items.length) {
- return false;
- } else {
- jQuery.px_execution_times("Finished Item Check", parallax_ele_items);
- };
- var filtered_ele_items = parallax_ele_items.filter_parallax_unwanted_items(parallax_name, 'parallax_js_doc_elements');
- if (!filtered_ele_items.length) {
- return false;
- } else {
- jQuery.px_execution_times("Finished Item Filter", filtered_ele_items);
- };
- if (Boolean(jQuery().parallax_js_init_effects) == false) {
- console.warn("fn.parallax_js_init_effects Cannot be Found");
- return false;
- } else {
- jQuery.px_execution_times("Finished Checking for Effects");
- }
- if (Boolean(jQuery().parallax) == false) {
- console.warn("Load Parallax Library");
- return false;
- } else {
- jQuery.px_execution_times("Finished Checking for Parallax");
- };
- if (typeof(parallax_options) === 'undefined') {
- parallax_options = {};
- } else {
- jQuery.px_execution_times("Finished Option Configuration");
- }
- var parallax_attach_px = function(this_px_parent) {
- var parallax_parent = jQuery(this_px_parent);
- var parallax_px_patterns = jQuery.parallax_js_items(parallax_name).items;
- var parallax_img_patterns = [];
- // Primary TEXT item
- parallax_img_patterns.push(parallax_px_patterns.text);
- // Other Elements that we can Parallax
- if (typeof(extra_parallax_elements) !== 'undefined') {
- parallax_img_patterns.push(extra_parallax_elements)
- };
- var parallax_img_patterns_string = parallax_img_patterns.join(',');
- // Find the Parallax DATA
- var parallax_window = parallax_parent.find(parallax_px_patterns.window);
- var parallax_img = parallax_parent.find(parallax_img_patterns_string);
- // No Image
- if (!parallax_img.length) {
- console.warn("No Parallax Image Section can found");
- return false;
- };
- // Parallax Box DATA
- var px_box_options = parallax_parent.Find_Parallax_Init_Boxes(parallax_img);
- // Default Parallax Information
- var parallax_default_options = {
- 'boxElement': px_box_options.parallaxBox,
- 'boxWidthElement': px_box_options.widthBox,
- 'boxHeightElement': px_box_options.heightBox,
- 'mirrorContainer': parallax_window,
- };
- if (!parallax_default_options.boxElement.length) {
- parallax_default_options.boxElement = false;
- };
- if (!parallax_default_options.boxWidthElement.length) {
- parallax_default_options.boxWidthElement = false;
- };
- if (!parallax_default_options.boxHeightElement.length) {
- parallax_default_options.boxHeightElement = false;
- };
- var parallax_img_class = '';
- if (typeof(parallax_bgtext) === 'undefined') {
- parallax_bgtext = "ckeditor-bgimage";
- }
- if (parallax_img.hasClass(parallax_name + '-text-parallax-img')) {
- parallax_img_class = false;
- } else if (parallax_img.hasClass(parallax_bgtext)) {
- parallax_img_class = parallax_bgtext;
- };
- // Default Settings for Parallax
- var parallax_result_options = {};
- // Option Values
- parallax_result_options = jQuery.extend(parallax_result_options, parallax_default_options);
- // Option Keys
- var parallax_options_keys = Object.keys(parallax_options);
- // Loop over Parallax Options
- for (var x = 0; x < parallax_options_keys.length; x++) {
- var parallax_options_key = parallax_options_keys[x];
- var parallax_options_value = parallax_options[parallax_options_key];
- var parallax_options_result = false;
- if (typeof(parallax_result_options[parallax_options_key]) === 'undefined') {
- parallax_options_result = parallax_options_value;
- } else {
- parallax_options_result = parallax_result_options[parallax_options_key];
- };
- parallax_result_options[parallax_options_key] = parallax_options_result;
- };
- var pxEffectResult = parallax_img.parallax_js_init_effects(parallax_img_class, parallax_result_options, parallax_name, extra_parallax_elements);
- if (typeof(pxEffectResult) === 'undefined') {
- pxEffectResult = true;
- };
- return Boolean(pxEffectResult);
- };
- var slideshow_px_types = {
- 'malsup_cycle': [],
- };
- var first_parallax_ele_item = parallax_ele_items.first();
- var hasMalSupCycle = Boolean(typeof(slideshow_px_types['malsup_cycle']) !== 'undefined');
- jQuery.px_execution_times("Started PX Loop", parallax_ele_items);
- jQuery.px_execution_times("First Loop Item", first_parallax_ele_item);
- parallax_ele_items.each(function(this_px_index, this_px_item) {
- var px_item = jQuery(this_px_item);
- var isFirst = px_item.get(0).isSameNode(first_parallax_ele_item.get(0));
- if (hasMalSupCycle && !isFirst) {
- var cycle_parent = jQuery();
- cycle_parent = px_item.parents('.cycle-slideshow').length;
- if (typeof(px_item.data('parallax-img-src')) !== 'undefined') {
- cycle_parent = jQuery();
- };
- if (cycle_parent) {
- slideshow_px_types.malsup_cycle.push(px_item);
- return true;
- };
- };
- jQuery.px_execution_times("Attached PX during loop", this_px_item);
- parallax_attach_px(this_px_item);
- });
- var slideshow_px_type_keys = Object.keys(slideshow_px_types);
- var slideshow_px_type_parents = {};
- for (var y = 0; y < slideshow_px_type_keys.length; y++) {
- var slideshow_px_type_key = slideshow_px_type_keys[y];
- var slideshow_px_type_items = slideshow_px_types[slideshow_px_type_key];
- if (slideshow_px_type_items.length == false) {
- continue;
- } else {
- slideshow_px_type_parents[slideshow_px_type_key] = [];
- };
- jQuery(slideshow_px_type_items).each(function(this_cycle_index, this_cycle_item) {
- var slideshow_px_item = jQuery(this_cycle_item);
- var slideshow_px_parent = jQuery();
- switch (slideshow_px_type_key) {
- case 'malsup_cycle':
- slideshow_px_parent = slideshow_px_item.parents('.cycle-slideshow');
- break;
- };
- if (slideshow_px_parent.length && slideshow_px_parent.hasClass(px_parent_attached)) {
- return true;
- };
- slideshow_px_type_parents[slideshow_px_type_key].push(slideshow_px_parent.get(0));
- });
- };
- var slideshow_px_type_parents_keys = Object.keys(slideshow_px_type_parents);
- var parallax_attach_px_slide = function(cycleSlide) {
- var cycleSlide = jQuery(cycleSlide);
- if (cycleSlide.hasClass(px_parent_slide_attached)) {
- return true;
- };
- var pxItems = cycleSlide.find_parallax_js_items(parallax_name, 'parent');
- if (!pxItems.length) {
- return true;
- };
- var cycleSuccess = false;
- // Parallax Elements
- jQuery(pxItems).each(function(this_cycle_px_index, this_cycle_px_item) {
- // Attach Parallax
- var cycleAttached = parallax_attach_px(this_cycle_px_item);
- // Update the Success of this Element
- cycleSuccess = (Boolean(cycleSuccess) || Boolean(cycleAttached));
- });
- // Cycle Success
- if (cycleSuccess) {
- cycleSlide.addClass(px_parent_slide_attached);
- };
- // Done
- return cycleSuccess;
- };
- var parallax_attach_px_first_slide = function(cycleSlideShow, cycleDataPattern, cycleActiveClass) {
- var cyclePattern = String(jQuery(cycleSlideShow).data(cycleDataPattern)).trim();
- var cycleActivePattern = String(cyclePattern + '' + cycleActiveClass).trim();
- var cycleSlider = jQuery(cycleSlideShow).find(cycleActivePattern);
- if (!cycleSlider.length) {
- cycleSlider = jQuery(cycleSlideShow).find(cyclePattern);
- };
- jQuery.px_execution_times("Attach Parallax to First Slide");
- var pxAttached = parallax_attach_px_slide(cycleSlider);
- if (Boolean(pxAttached)) {
- jQuery(cycleSlideShow).addClass(px_parent_attached);
- };
- };
- for (var x = 0; x < slideshow_px_type_parents_keys.length; x++) {
- var slideshow_px_type_parent_key = slideshow_px_type_parents_keys[x];
- var slideshow_px_type_parent_err_suffix = 'is not set for slideshow_px_type_parent_key (' + slideshow_px_type_parent_key + ')';
- var slideshow_px_type_parent_s = [];
- slideshow_px_type_parent_s = slideshow_px_type_parents[slideshow_px_type_parent_key];
- slideshow_px_type_parent_s = jQuery.unique(slideshow_px_type_parent_s);
- jQuery(slideshow_px_type_parent_s).each(function(this_slider_index, this_slider_item) {
- var px_slider_item = jQuery(this_slider_item);
- // Property for Slider
- var px_cycle_active = false;
- var px_cycle_loop = false;
- var px_cycle_start = false;
- var px_cycle_slide_pattern = false;
- // Case to find Info
- switch (slideshow_px_type_parent_key) {
- case 'malsup_cycle':
- px_cycle_active = '.cycle-slide-active';
- px_cycle_loop = 'cycle-update-view-after';
- px_cycle_start = 'cycle-initialized';
- px_cycle_slide_pattern = "cycle-slides";
- break;
- };
- if (Boolean(px_cycle_slide_pattern) == false) {
- console.error('px_cycle_slide_pattern ' + slideshow_px_type_parent_err_suffix);
- return true;
- };
- if (Boolean(px_cycle_loop) == false) {
- console.error('px_cycle_loop is not set ' + slideshow_px_type_parent_err_suffix);
- return true;
- };
- if (Boolean(px_cycle_start) == false) {
- console.error('px_cycle_start is not set for ' + slideshow_px_type_parent_err_suffix);
- return true;
- };
- if (Boolean(px_cycle_active) == false) {
- console.error('px_cycle_active is not set for ' + slideshow_px_type_parent_err_suffix);
- return true;
- };
- var px_slider_started = Boolean(false);
- px_slider_started = (px_slider_started || Boolean(px_slider_item.find(px_cycle_active).length));
- px_slider_started = (px_slider_started || Boolean(px_slider_item.data('cycle-auto-init') == false));
- jQuery(this_slider_item).on(px_cycle_loop, function(evt) {
- var cycleSlide = arguments[3];
- parallax_attach_px_slide(cycleSlide);
- });
- if (px_slider_started) {
- parallax_attach_px_first_slide(px_slider_item.get(0), px_cycle_slide_pattern, px_cycle_active);
- };
- });
- };
- };
- jQuery.parallax_js_items = function(parallax_name) {
- if (typeof(parallax_name) === 'undefined') {
- parallax_name = 'parallaxjs';
- };
- var parallax_class_name = '.' + String(parallax_name).trim();
- var parallaxjs_class_items = {
- parent: parallax_class_name + '-text-parallax-parent',
- window: parallax_class_name + '-text-parallax-window',
- text: parallax_class_name + '-text-parallax-img',
- data: parallax_class_name + '-text-parallax-data',
- };
- var parallaxjs_items = {
- name: parallax_name,
- loaded: 'parallaxjs-init-parallax-init-loaded',
- loaded_class: '',
- items: parallaxjs_class_items,
- };
- parallaxjs_items.loaded_class = '.' + parallaxjs_items.loaded;
- parallaxjs_items.loaded_class = String(parallaxjs_items.loaded_class).trim();
- // Parallax DATA
- return parallaxjs_items;
- };
- jQuery.fn.parallax_js_init_items = function(parallax_class, parallax_options, parallax_name) {
- var ParallaxParent = jQuery(this);
- ParallaxParent = ParallaxParent.filter_parallax_unwanted_items(parallax_name, 'parallax_js_init_items');
- if (!ParallaxParent.length) {
- return false;
- };
- var ParallaxElement = jQuery();
- var ParallaxWindowElement = jQuery();
- var ParallaxResults = [];
- if (!Boolean(parallax_class) || ParallaxParent.hasClass(parallax_class)) {
- ParallaxElement = ParallaxParent;
- } else {
- ParallaxElement = ParallaxParent.find(parallax_class);
- };
- if (!Boolean(parallax_options)) {
- parallax_options = {};
- };
- var parallaxjs_data = jQuery.parallax_js_items(parallax_name);
- var parallaxjs_items = parallaxjs_data.items;
- var parallaxjs_items_keys = Object.keys(parallaxjs_items);
- var parallaxjs_dummy_function = function() {
- // Do nothing
- };
- ParallaxElement.each(function(img_index, img_element) {
- var img_element = jQuery(img_element);
- var is_loaded = Boolean(img_element.hasClass(parallaxjs_data.loaded));
- var parallax_parent = img_element.parents(parallaxjs_items.parent);
- if (is_loaded == false) {
- img_element.addClass(parallaxjs_data.loaded);
- } else {
- return true;
- };
- if (!parallax_parent.length) {
- return true;
- };
- var parallax_obj = {
- 'img': img_element,
- 'classes': parallaxjs_data,
- 'items': {},
- 'parallax_started': false,
- 'start_parallax': parallaxjs_dummy_function,
- };
- // Find the Items on this Parallax Obj
- for (var x = 0; x < parallaxjs_items_keys.length; x++) {
- var parallaxjs_key = parallaxjs_items_keys[x];
- var parallaxjs_value = parallaxjs_items[parallaxjs_key];
- var parallaxjs_result = false;
- switch (parallaxjs_key) {
- case 'parent':
- parallaxjs_result = parallax_parent;
- break;
- default:
- parallaxjs_result = parallax_parent.find(parallaxjs_value);
- break;
- };
- parallax_obj.items[parallaxjs_key] = parallaxjs_result;
- };
- // Start the Parallax Object
- parallax_obj.start_parallax = function() {
- var parallax_item = this;
- var img_element = jQuery(parallax_item.img);
- // Parallax has already started
- if (parallax_item.parallax_started) {
- jQuery.px_execution_times("Parallax has already started");
- return true;
- } else {
- jQuery.px_execution_times("Applying Parallax!");
- }
- var img_element = jQuery(parallax_item.img);
- var parallax_parent = jQuery(parallax_item.items.parent);
- var parallax_window = jQuery(parallax_item.items.window);
- // var parallax_text = jQuery(parallax_item.items.img);
- var parallax_data_item = jQuery();
- var parallax_data_text = "";
- var parallax_data = {};
- if (!parallax_window.length) {
- jQuery.px_execution_times("Cannot find PX Window");
- return false;
- } else {
- jQuery.px_execution_times("Found PX Window");
- };
- if (parallax_parent && parallax_parent.length) {
- parallax_data_item = parallax_parent.find(parallax_item.items.data);
- } else {
- parallax_data_item = img_element.closest(parallax_item.items.data);
- };
- if (parallax_data_item && parallax_data_item.length) {
- parallax_data_text = parallax_data_item.text().trim();
- };
- if (parallax_data_text && parallax_data_text.length) {
- parallax_data = JSON.parse(parallax_data_text);
- };
- var img_bg_elment = img_element.clone();
- var img_bg_elment_data = img_bg_elment.data();
- var img_bg_elment_type = img_bg_elment.prop('tagName');
- var img_bg_src = false;
- switch (img_bg_elment_type) {
- case 'IMG':
- img_bg_src = img_bg_elment.attr('src');
- img_bg_src = Boolean(img_bg_src) ? img_bg_src : false;
- break;
- default:
- img_bg_src = img_bg_elment.css('background-image');
- img_bg_src = Boolean(img_bg_src) ? img_bg_src : img_bg_elment.data('image-src');
- img_bg_src = Boolean(img_bg_src) ? img_bg_src : img_bg_elment.data("image-src");
- img_bg_src = Boolean(img_bg_src) ? img_bg_src : false;
- break;
- };
- if (Boolean(img_bg_src) == false) {
- jQuery.px_execution_times("Extracting \"img_bg_src\" from parallax_window", parallax_window);
- img_bg_src = Boolean(img_bg_src) ? img_bg_src : parallax_window.data('image-src');
- };
- if (typeof(img_bg_src) === 'undefined') {
- img_bg_src = "";
- } else if (img_bg_src === 'initial') {
- img_bg_src = "";
- };
- if (!Boolean(img_bg_src)) {
- img_bg_src = img_bg_elment.data('parallax-img-src');
- img_bg_src = typeof(img_bg_src) !== 'undefined' ? img_bg_src : "";
- };
- // https://stackoverflow.com/questions/2116558/fastest-method-to-replace-all-instances-of-a-character-in-a-string
- img_bg_src = img_bg_src.replace('url("', '');
- img_bg_src = img_bg_src.replace("\")", '');
- img_bg_src = img_bg_src.replace('url(\'', '');
- img_bg_src = img_bg_src.replace("')", '');
- // img_bg_src = img_bg_src.replace(new RegExp("\"", 'g'), '');
- // img_bg_src = img_bg_src.replace(new RegExp("'", 'g'), '');
- img_bg_src = img_bg_src.trim();
- img_bg_src = (!img_bg_src.length || String(img_bg_src) === 'none') ? false : img_bg_src;
- if (typeof(img_bg_src) !== 'undefined' && img_bg_src == 'initial') {
- img_bg_src = false;
- };
- if (Boolean(img_bg_src) && img_bg_src.length) {
- jQuery.px_execution_times("Found img_bg_src for PX EVENT", img_bg_src);
- var img_bg_position = img_bg_elment.css('background-position');
- if (typeof(img_bg_position) === 'undefined') {
- img_bg_position = "";
- };
- if (!img_bg_position.length) {
- img_bg_position = "auto auto";
- };
- var parallax_img_options = {
- imageSrc: img_bg_src,
- sliderParallaxClasses: 'normal_image',
- speed: img_bg_elment.data('parallaxSpeed'),
- position: img_bg_position,
- parallaxIsFullWidth: img_bg_elment.data('parallaxFullWidth'),
- overScrollFix: true,
- };
- if (typeof(parallax_img_options.parallaxIsFullWidth) === 'undefined') {
- parallax_img_options.parallaxIsFullWidth = true;
- } else {
- parallax_img_options.parallaxIsFullWidth = Boolean(parallax_img_options.parallaxIsFullWidth);
- };
- var parallax_data_keys = [];
- // Image Option Keys
- var parallax_img_options_keys = Object.keys(parallax_img_options);
- // Add the Default Options
- parallax_data_keys.add_parallax_keys(parallax_img_options_keys);
- // Option Keys
- var parallax_options_keys = Object.keys(parallax_options);
- // Add the Option Keys to our LIST
- if (parallax_options_keys && parallax_options_keys.length) {
- parallax_data_keys.add_parallax_keys(parallax_options_keys);
- };
- // Add our DATA options
- if (parallax_data && parallax_data.length) {
- parallax_data_keys.add_parallax_keys(parallax_data.keys);
- };
- // Make the List Unique
- parallax_data_keys = parallax_data_keys.unique_parallax_keys();
- // Merge the DATA into the Parallax
- if (parallax_data_keys && parallax_data_keys.length) {
- for (var i = 0; i < parallax_data_keys.length; i++) {
- var parallax_data_key = parallax_data_keys[i];
- var parallax_extended_value = undefined;
- if (typeof(parallax_data[parallax_data_key]) !== 'undefined') {
- parallax_extended_value = parallax_data[parallax_data_key];
- } else if (typeof(parallax_options[parallax_data_key]) !== 'undefined') {
- parallax_extended_value = parallax_options[parallax_data_key];
- };
- var parallax_input_value = false;
- if (typeof(parallax_img_options[parallax_data_key]) !== 'undefined') {
- parallax_input_value = parallax_img_options[parallax_data_key];
- } else if (typeof(parallax_extended_value) !== 'undefined') {
- parallax_input_value = parallax_extended_value;
- } else {
- parallax_input_value = false;
- };
- if (typeof(parallax_extended_value) !== 'undefined') {
- switch (parallax_data_key) {
- case 'sliderParallaxClasses':
- parallax_img_options[parallax_data_key] += ' ' + String(parallax_extended_value).trim();
- break;
- default:
- parallax_img_options[parallax_data_key] = parallax_input_value;
- break;
- };
- } else {
- parallax_img_options[parallax_data_key] = parallax_input_value;
- };
- };
- };
- if (typeof(parallax_img_options['speed']) === 'undefined' || !parallax_img_options['speed']) {
- delete parallax_img_options['speed'];
- };
- switch (parallax_img_options.position) {
- case 'center center':
- img_element.addClass('parallax-mirror-center-center');
- break
- };
- img_element.addClass('parallax-mirror-origin');
- parallax_parent.addClass("parallax-mirror-parent");
- // The Parallax Options
- jQuery.px_execution_times("parallax_img_options", parallax_img_options);
- // Parallax Applied
- img_element.parallax(parallax_img_options);
- // Parallax Finished
- parallax_item.parallax_started = true;
- // Applied Result
- return true;
- } else {
- jQuery.px_execution_times("Cannot find img_bg_src (" + img_bg_src + ")");
- };
- // Nothing was done
- return false;
- };
- ParallaxResults.push(parallax_obj);
- });
- return ParallaxResults;
- };
- jQuery.fn.parallax_js_init_effects = function(parallax_class, parallax_options, parallax_name, extra_parallax_elements) {
- var parallaxjs_items = jQuery(this).parallax_js_init_items(parallax_class, parallax_options, parallax_name);
- var parallaxjs_items_len = Number(parallaxjs_items.length);
- if (!parallaxjs_items.length) {
- // console.warn("parallaxjs_items is empty");
- return false;
- } else {
- jQuery.px_execution_times("Finished Locating PX js items");
- }
- for (var y = 0; y < parallaxjs_items.length; y++) {
- var parallax_item = parallaxjs_items[y];
- parallax_item.start_parallax();
- };
- return true;
- };
- jQuery.fn.Find_Parallax_Init_Boxes = function(parallax_img) {
- var parallax_parent = jQuery(this);
- var px_pos_boxes = {
- 'widthBox': parallax_parent.Find_Parallax_Init_Box(px_transparent_width, parallax_img),
- 'heightBox': parallax_parent.Find_Parallax_Init_Box(px_transparent_height, parallax_img),
- 'parallaxBox': parallax_parent.Find_Parallax_Init_Box(px_transparent_con, parallax_img),
- };
- px_pos_boxes.widthBox = px_pos_boxes.widthBox.length ? px_pos_boxes.widthBox : px_pos_boxes.heightBox;
- px_pos_boxes.heightBox = px_pos_boxes.heightBox.length ? px_pos_boxes.heightBox : px_pos_boxes.widthBox;
- return px_pos_boxes;
- };
- jQuery.fn.Find_Parallax_Init_Box = function(parallax_class_name, parallax_img) {
- var parallax_parent = jQuery(this);
- var parallax_result = parallax_parent.parents("div." + parallax_class_name);
- parallax_result = parallax_result.length ? parallax_result : jQuery();
- if (!parallax_result.length && parallax_img.hasClass(parallax_class_name)) {
- parallax_result = parallax_img;
- };
- if (!parallax_result.length && parallax_parent.hasClass(parallax_class_name)) {
- parallax_result = parallax_parent;
- };
- return parallax_result;
- };
- function unique_parallax_key(value, index, self) {
- return Boolean(self.indexOf(value) === index);
- };
- Array.prototype.unique_parallax_keys = function() {
- var current_list = this;
- var unique_list = current_list.filter(unique_parallax_key);
- return unique_list;
- };
- Array.prototype.add_parallax_keys = function(new_px_keys) {
- var current_list = this;
- for (var x = 0; x < new_px_keys.length; x++) {
- var px = new_px_keys[x];
- current_list.push(px);
- };
- return current_list;
- };
- jQuery.fn.filter_parallax_unwanted_items = function(parallax_name, caller_name) {
- var currentParallaxItems = jQuery(this);
- var wantedParallaxItems = [];
- var unwanted_parallax_class_names = [];
- unwanted_parallax_class_names.push("cycle-sentinel");
- if (!unwanted_parallax_class_names.length) {
- return currentParallaxItems;
- };
- currentParallaxItems.each(function(current_px_index, current_px_item) {
- var px_item = jQuery(current_px_item);
- var is_unwanted = jQuery();
- for (var x = 0; x < unwanted_parallax_class_names.length; x++) {
- var unwanted_px_class_name = unwanted_parallax_class_names[x];
- if (px_item.hasClass(unwanted_px_class_name)) {
- is_unwanted = px_item;
- break;
- };
- if (px_item.parents('.' + unwanted_px_class_name).length) {
- is_unwanted = px_item;
- break;
- };
- };
- if (!is_unwanted.length) {
- wantedParallaxItems.push(px_item.get(0));
- };
- });
- return jQuery(wantedParallaxItems);
- };
- jQuery.px_execution_times = function(message_text, message_item) {
- if (!parallax_log_times) {
- return false;
- };
- var parallax_end = new Date().getTime();
- var parallax_duration = (parallax_end - parallax_start);
- var parallax_content = [];
- parallax_content.push("[parallax_init.js]");
- parallax_content.push(message_text);
- parallax_content.push(" (Time: " + parallax_duration + ")");
- var parallax_content_text = parallax_content.join(" ").trim();
- if (typeof(message_item) !== 'undefined') {
- console.log(parallax_content_text, message_item);
- } else {
- console.log(parallax_content_text);
- };
- };
- }(jQuery, window));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement