var tribe_dropdowns = window.tribe_dropdowns || {}; ( function( $, obj, _ ) { 'use strict'; obj.selector = { dropdown: '.tribe-dropdown', created: '.tribe-dropdown-created', searchField: '.select2-search__field', }; // Setup a Dependent $.fn.tribe_dropdowns = function() { obj.dropdown( this, {} ); return this; }; obj.freefrom_create_search_choice = function( params ) { if ( 'string' !== typeof params.term ) { return null; } var term = params.term.trim(); if ( '' === term ) { return null; } var args = this.options.options; var $select = args.$select; if ( term.match( args.regexToken ) && ( ! $select.is( '[data-int]' ) || ( $select.is( '[data-int]' ) && term.match( /\d+/ ) ) ) ) { var choice = { id: term, text: term, new: true }; if ( $select.is( '[data-create-choice-template]' ) ) { choice.text = _.template( $select.data( 'createChoiceTemplate' ) )( { term: term } ); } return choice; } return null; }; /** * Better Search ID for Select2, compatible with WordPress ID from WP_Query * * @param {object|string} e Searched object or the actual ID * @return {string} ID of the object */ obj.search_id = function( e ) { var id = undefined; if ( 'undefined' !== typeof e.id ) { id = e.id; } else if ( 'undefined' !== typeof e.ID ) { id = e.ID; } else if ( 'undefined' !== typeof e.value ) { id = e.value; } return undefined === e ? undefined : id; }; /** * Better way of matching results * * @param {string} term Which term we are searching for * @param {string} text Search here * @return {boolean} */ obj.matcher = function( params, data ) { // If there are no search terms, return all of the data if ( 'string' !== typeof params.term || params.term.trim() === '') { return data; } // Do not display the item if there is no 'text' property if ( typeof data.text === 'undefined' ) { return null; } var term = params.term.trim(); var text = data.text; var $select = $( data.element ).closest( 'select' ); var args = $select.data( 'dropdown' ); var result = text.toUpperCase().indexOf( term.toUpperCase() ) !== -1; if ( ! result && 'undefined' !== typeof args.tags ){ var possible = _.where( args.tags, { text: text } ); if ( args.tags.length > 0 && _.isObject( possible ) ){ var test_value = obj.search_id( possible[0] ); result = test_value.toUpperCase().indexOf( term.toUpperCase() ) !== -1; } } return result; }; /** * If the element used as the basis of a dropdown specifies one or more numeric/text * identifiers in its val attribute, then use those to preselect the appropriate options. * * @param {object} $select * @param {function} make_selection */ obj.init_selection = function( $select, make_selection ) { var isMultiple = $select.is( '[multiple]' ); var options = $select.data( 'dropdown' ); var currentValues = $select.val().split( options.regexSplit ); var selectedItems = []; $( currentValues ).each( function( index, value ) { // eslint-disable-line no-unused-vars var searchFor = { id: this, text: this }; var data = options.ajax ? $select.data( 'options' ) : options.data; var locatedItem = find_item( searchFor, data ); if ( locatedItem && locatedItem.selected ) { selectedItems.push( locatedItem ); } } ); if ( selectedItems.length && isMultiple ) { make_selection( selectedItems ); } else if ( selectedItems.length ) { make_selection( selectedItems[ 0 ] ); } else { make_selection( false ); return; } }; /** * Searches array 'haystack' for objects that match 'description'. * * The 'description' object should take the form { id: number, text: string }. The first * object within the haystack that matches one of those two properties will be returned. * * If objects contain an array named 'children', then that array will also be searched. * * @param {Object} description * @param {Array} haystack * * @return {Object|boolean} */ function find_item( description, haystack ) { if ( ! _.isArray( haystack ) ) { return false; } for ( var index in haystack ) { var possible_match = haystack[ index ]; if ( possible_match.hasOwnProperty( 'id' ) && possible_match.id == description.id ) { // eslint-disable-line no-prototype-builtins,eqeqeq,max-len return possible_match; } if ( possible_match.hasOwnProperty( 'text' ) && possible_match.text == description.text ) { // eslint-disable-line no-prototype-builtins,eqeqeq,max-len return possible_match; } if ( possible_match.hasOwnProperty( 'children' ) && _.isArray( possible_match.children ) ) { // eslint-disable-line no-prototype-builtins,max-len var subsearch = find_item( description, possible_match.children ); if ( subsearch ) { return subsearch; } } } return false; } obj.getSelectClasses = function( $select ) { var classesToRemove = [ 'select2-hidden-accessible', 'hide-before-select2-init', ]; var originalClasses = $select.attr( 'class' ).split( /\s+/ ); return _.difference( originalClasses, classesToRemove ); }; obj.element = function( field, args ) { var $select = $( field ); var args = $.extend( {}, args ); // eslint-disable-line no-redeclare var carryOverData = [ // eslint-disable-line no-unused-vars 'depends', 'condition', 'conditionNot', 'condition-not', 'conditionNotEmpty', 'condition-not-empty', 'conditionEmpty', 'condition-empty', 'conditionIsNumeric', 'condition-is-numeric', 'conditionIsNotNumeric', 'condition-is-not-numeric', 'conditionChecked', 'condition-is-checked', ]; var $container; // Add a class for dropdown created $select.addClass( obj.selector.created.className() ); // args.debug = true; // For Reference we save the jQuery element as an Arg. args.$select = $select; // Auto define the Width of the Select2. args.dropdownAutoWidth = true; args.width = 'resolve'; // CSS for the container args.containerCss = {}; // Only apply visibility when it's a Visible Select2. if ( $select.is( ':visible' ) ) { args.containerCss.display = 'inline-block'; args.containerCss.position = 'relative'; } // CSS for the dropdown args.dropdownCss = {}; args.dropdownCss.width = 'auto'; // When we have this we replace the default with what's in the param. if ( $select.is( '[data-dropdown-css-width]' ) ) { args.dropdownCss.width = $select.data( 'dropdown-css-width' ); if ( ! args.dropdownCss.width || 'false' === args.dropdownCss.width ) { delete args.dropdownCss.width; delete args.containerCss; } } // By default we allow The field to be cleared args.allowClear = true; if ( $select.is( '[data-prevent-clear]' ) ) { args.allowClear = false; } // Pass the "Searching..." placeholder if specified if ( $select.is( '[data-searching-placeholder]' ) ) { args.formatSearching = $select.data( 'searching-placeholder' ); } // If we are dealing with a Input Hidden we need to set the Data for it to work if ( ! $select.is( '[data-placeholder]' ) && $select.is( '[placeholder]' ) ) { args.placeholder = $select.attr( 'placeholder' ); } // If we are dealing with a Input Hidden we need to set the Data for it to work. if ( $select.is( '[data-options]' ) ) { args.data = $select.data( 'options' ); } // With less then 10 args we wouldn't show the search. args.minimumResultsForSearch = 10; // Prevents the Search box to show if ( $select.is( '[data-hide-search]' ) ) { args.minimumResultsForSearch = Infinity; } // Makes sure search shows up. if ( $select.is( '[data-force-search]' ) ) { delete args.minimumResultsForSearch; } // Allows freeform entry if ( $select.is( '[data-freeform]' ) ) { args.createTag = obj.freefrom_create_search_choice; args.tags = true; $select.data( 'tags', true ); } if ( $select.is( '[multiple]' ) ) { args.multiple = true; // Set the max select items, if defined if ( $select.is( '[data-maximum-selection-size]' ) ) { args.maximumSelectionSize = $select.data( 'maximum-selection-size' ); } // If you don't have separator, add one (comma) if ( ! $select.is( 'data-separator' ) ) { $select.data( 'separator', ',' ); } if ( ! _.isArray( $select.data( 'separator' ) ) ) { args.tokenSeparators = [ $select.data( 'separator' ) ]; } else { args.tokenSeparators = $select.data( 'separator' ); } args.separator = $select.data( 'separator' ); // Define the regular Exp based on args.regexSeparatorElements = [ '^(' ]; args.regexSplitElements = [ '(?:' ]; $.each( args.tokenSeparators, function ( i, token ) { args.regexSeparatorElements.push( '[^' + token + ']+' ); args.regexSplitElements.push( '[' + token + ']' ); } ); args.regexSeparatorElements.push( ')$' ); args.regexSplitElements.push( ')' ); args.regexSeparatorString = args.regexSeparatorElements.join( '' ); args.regexSplitString = args.regexSplitElements.join( '' ); args.regexToken = new RegExp( args.regexSeparatorString, 'ig' ); args.regexSplit = new RegExp( args.regexSplitString, 'ig' ); } // Select also allows Tags, so we go with that too if ( $select.is( '[data-tags]' ) ) { args.tags = $select.data( 'tags' ); args.createSearchChoice = function( term, data ) { // eslint-disable-line no-unused-vars if ( term.match( args.regexToken ) ) { return { id: term, text: term }; } }; if ( 0 === args.tags.length ) { args.formatNoMatches = function() { return $select.attr( 'placeholder' ); }; } } // When we have a source, we do an AJAX call if ( $select.is( '[data-source]' ) ) { var source = $select.data( 'source' ); // For AJAX we reset the data args.data = { results: [] }; // Format for Parents breadcrumbs args.formatResult = function ( item, container, query ) { // eslint-disable-line no-unused-vars,max-len if ( 'undefined' !== typeof item.breadcrumbs ) { return $.merge( item.breadcrumbs, [ item.text ] ).join( ' » ' ); } return item.text; }; // instead of writing the function to execute the request we use Select2's convenient helper. args.ajax = { dataType: 'json', type: 'POST', url: obj.ajaxurl(), // parse the results into the format expected by Select2. processResults: function ( response, page, query ) { // eslint-disable-line no-unused-vars if ( ! $.isPlainObject( response ) || 'undefined' === typeof response.success ) { console.error( 'We received a malformed Object, could not complete the Select2 Search.' ); // eslint-disable-line max-len return { results: [] }; } if ( ! $.isPlainObject( response.data ) || 'undefined' === typeof response.data.results ) { console.error( 'We received a malformed results array, could not complete the Select2 Search.' ); // eslint-disable-line max-len return { results: [] }; } if ( ! response.success ) { if ( 'string' === $.type( response.data.message ) ) { console.error( response.data.message ); } else { console.error( 'The Select2 search failed in some way... Verify the source.' ); } return { results: [] }; } return response.data; }, }; // By default only send the source args.ajax.data = function( search, page ) { return { action: 'tribe_dropdown', source: source, search: search, page: page, args: $select.data( 'source-args' ), }; }; } // Attach dropdown to container in DOM. if ( $select.is( '[data-attach-container]' ) ) { // If multiple, attach container without search. if ( $select.is( '[multiple]' ) ) { $.fn.select2.amd.define( 'AttachedDropdownAdapter', [ 'select2/utils', 'select2/dropdown', 'select2/dropdown/attachContainer', ], function( utils, dropdown, attachContainer ) { return utils.Decorate( dropdown, attachContainer ); } ); args.dropdownAdapter = $.fn.select2.amd.require( 'AttachedDropdownAdapter' ); // If not multiple, attach container with search. } else { $.fn.select2.amd.define( 'AttachedWithSearchDropdownAdapter', [ 'select2/utils', 'select2/dropdown', 'select2/dropdown/search', 'select2/dropdown/minimumResultsForSearch', 'select2/dropdown/attachContainer', ], function( utils, dropdown, search, minimumResultsForSearch, attachContainer ) { var adapter = utils.Decorate( dropdown, attachContainer ); adapter = utils.Decorate( adapter, search ); adapter = utils.Decorate( adapter, minimumResultsForSearch ); return adapter; } ); args.dropdownAdapter = $.fn.select2.amd.require( 'AttachedWithSearchDropdownAdapter' ); } } // Save data on Dropdown $select.data( 'dropdown', args ); $container = $select.select2TEC( args ); // Propagating original input classes to the select2 container. $container.data( 'select2' ).$container.addClass( obj.getSelectClasses( $select ).join( ' ' ) ); // Propagating original input classes to the select2 container. $container.data( 'select2' ).$container.removeClass( 'hide-before-select2-init' ); $container.on( 'select2:open', obj.action_select2_open ); /** * @todo @bordoni Investigate how and if we should be doing this. * if ( carryOverData.length > 0 ) { carryOverData.map( function( dataKey ) { var attr = 'data-' + dataKey; var val = $select.attr( attr ); if ( ! val ) { return; } this.attr( attr, val ); }, $container ); } */ }; obj.ajaxurl = function() { if ( 'undefined' !== typeof window.ajaxurl ) { return window.ajaxurl; } if ( 'undefined' !== typeof TEC && 'undefined' !== typeof TEC.ajaxurl ) { return TEC.ajaxurl; } console.error( 'Dropdowns framework cannot properly do an AJAX request without the WordPress `ajaxurl` variable setup.' ); // eslint-disable-line max-len }; obj.action_select2_open = function( event ) { // eslint-disable-line no-unused-vars var $select = $( this ); var select2Data = $select.data( 'select2' ); var $search = select2Data.$dropdown.find( obj.selector.searchField ); // eslint-disable-line es5/no-es6-methods,max-len select2Data.$dropdown.addClass( obj.selector.dropdown.className() ); // If we have a placeholder for search, apply it! if ( $select.is( '[data-search-placeholder]' ) ) { $search.attr( 'placeholder', $select.data( 'searchPlaceholder' ) ); } }; /** * Configure the Drop Down Fields * * @param {jQuery} $fields All the fields from the page * @param {array} args Allow extending the arguments * * @return {jQuery} Affected fields */ obj.dropdown = function( $fields, args ) { var $elements = $fields.not( '.select2-offscreen, .select2-container, ' + obj.selector.created.className() ); // eslint-disable-line max-len if ( 0 === $elements.length ) { return $elements; } // Default args to avoid Undefined if ( ! args ) { args = {}; } $elements .each( function( index, element ) { // Apply element to all given items and pass args obj.element( element, args ); } ); // return to be able to chain jQuery calls return $elements; }; $( function() { $( obj.selector.dropdown ).tribe_dropdowns(); } ); // Addresses some problems with Select2 inputs not being initialized when using a browser's "Back" button. $( window ).on( 'unload', function() { $( obj.selector.dropdown ).tribe_dropdowns(); }); } )( jQuery, tribe_dropdowns, window.underscore || window._ ); /*! elementor-pro - v3.5.1 - 10-11-2021 */ .elementor-cta,.elementor-widget-call-to-action .elementor-widget-container{overflow:hidden}.elementor-cta{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.5s;-o-transition:.5s;transition:.5s}.elementor-cta--skin-classic .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--skin-classic .elementor-cta__bg-wrapper{position:relative;min-height:200px;width:100%}.elementor-cta--skin-classic .elementor-cta__content{-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%;background-color:#f7f7f7}.elementor-cta--skin-classic .elementor-cta__content-item,.elementor-cta--skin-classic .elementor-cta__content-item .elementor-icon{color:#55595c;border-color:#55595c;fill:#55595c}.elementor-cta--skin-classic .elementor-cta__button.elementor-button{color:#55595c;border-color:#55595c}.elementor-cta--skin-cover .elementor-cta{display:block}.elementor-cta--skin-cover .elementor-cta__bg-wrapper{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%}.elementor-cta--skin-cover .elementor-cta__content{min-height:280px}.elementor-cta--skin-cover .elementor-cta__button.elementor-button,.elementor-cta--skin-cover .elementor-cta__content-item,.elementor-cta--skin-cover .elementor-cta__content-item .elementor-icon{color:#fff;border-color:#fff}.elementor-cta--layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--layout-image-left .elementor-cta,.elementor-cta--layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--layout-image-left .elementor-cta__content,.elementor-cta--layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta__bg,.elementor-cta__bg-overlay{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s}.elementor-cta__bg-wrapper{z-index:1;overflow:hidden}.elementor-cta__bg{-webkit-background-size:cover;background-size:cover;background-position:50%;z-index:1}.elementor-cta__bg-overlay{z-index:2}.elementor-cta__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-cta__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-cta__title{font-size:23px}.elementor-cta__content{z-index:1;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;padding:35px;width:100%}.elementor-cta__content,.elementor-cta__content-item{position:relative;-webkit-transition:.5s;-o-transition:.5s;transition:.5s;color:#fff}.elementor-cta__content-item{width:100%;margin:0}.elementor-cta__content-item:not(:last-child){margin-bottom:15px}.elementor-cta__content-item .elementor-icon{color:#fff}.elementor-cta--valign-top .elementor-cta__content{-ms-flex-line-pack:start;align-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-cta--valign-middle .elementor-cta__content{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-cta--valign-bottom .elementor-cta__content{-ms-flex-line-pack:end;align-content:flex-end;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor-cta:hover .elementor-cta__bg-overlay{background-color:rgba(0,0,0,.3)}@media (max-device-width:1024px){.elementor-cta{cursor:pointer}}@media (min-width:-1px){.elementor-cta--widescreen-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--widescreen-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--widescreen-layout-image-left .elementor-cta,.elementor-cta--widescreen-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--widescreen-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--widescreen-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--widescreen-layout-image-left .elementor-cta__content,.elementor-cta--widescreen-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--widescreen-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--widescreen-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--laptop-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--laptop-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--laptop-layout-image-left .elementor-cta,.elementor-cta--laptop-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--laptop-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--laptop-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--laptop-layout-image-left .elementor-cta__content,.elementor-cta--laptop-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--laptop-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--laptop-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--tablet_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta,.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__content,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:1024px){.elementor-cta--tablet-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet-layout-image-left .elementor-cta,.elementor-cta--tablet-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet-layout-image-left .elementor-cta__content,.elementor-cta--tablet-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--tablet-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--mobile_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta,.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__content,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:767px){.elementor-cta--mobile-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile-layout-image-left .elementor-cta,.elementor-cta--mobile-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile-layout-image-left .elementor-cta__content,.elementor-cta--mobile-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--mobile-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.elementor-ribbon{position:absolute;z-index:1;top:0;left:0;right:auto;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);width:150px;overflow:hidden;height:150px}.elementor-ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000;color:#fff}.elementor-ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0} لعبة Zeus 1000 Slots، لعبة فيديو سلوتس بدخل حقيقي وتجربة لعب مجانية - premier mills

لعبة Zeus 1000 Slots، لعبة فيديو سلوتس بدخل حقيقي وتجربة لعب مجانية

بالنسبة icheque online payment methods لأيقونة زيوس، يُمكنك العثور عليها في المؤسسات من خلال جولة مكافأة واحدة أو أكثر. يوفر نظام إدارة المكافآت (WMS) زيوس بخيار تشغيل تلقائي اقتصادي وموفر للوقت. اضبط تفضيلاتك على الخادم – عدد الخيارات المُخصص، وعدد الدورات، والفرق اليومي الذي تحتاجه بين دورتين، وما إلى ذلك. اسمح لتطبيق WMS الجديد بلعب اللعبة بالكامل، ويمكنك ربح الأرباح. تُعتبر لعبة زيوس الأولى اسمًا رائدًا، ولا تزال من أكثر ألعاب السلوتس شيوعًا في السوق، وقد تُشيد بسمعة WMS الراسخة في مجتمع ألعاب السلوتس.

زيوس ألف موقف الأسئلة الشائعة

تُجري شركات مُنفصلة هذا النوع من التدقيق لتحديد أعلى جودة ونزاهة كازينوك. على سبيل المثال، eCOGRA هي وكالة مُعتمدة دوليًا مُكلفة باختبار ألعاب الكازينو للتأكد من نزاهة مُولد الأرقام العشوائية ونسبة الدفع. يضمن هذا التعيين الاحترافي أن ألعاب الكازينو المجانية لدينا آمنة ومضمونة وحقيقية.

هل أنت سعيد بالبدء؟

يستمتع مهندسو تصميم الفضاء والطيران باستخدام أنبوب الانكماش الحراري FEP Put-Flat™ الخاص بنا، والذي يوفر تفريغًا سلسًا، مما يضمن الحصول على مادة ناشئة بفضل سهولة تزليقه وإمكانية إعادة استخدامه. لطالما طالب مصنعو القسطرة بإمكانية أكبر للتخلص من الانكماش الحراري بعد تقنيات إعادة التدفق. وقد استجابت Zeus بـ FluoroPEELZ™، وهو أنبوب انكماش حراري شفاف بصريًا وقابل للتقشير، يزيد من الإنتاجية ويحسن من سلامة العمال. بفضل التمزق الخطي البسيط، يمكن للعمال إزالة الانكماش الحراري بسهولة للحصول على طبقة خارجية ناعمة وخالية من العيوب. نصنع أنابيب انكماش حراري عالية الأداء بمختلف أنواع راتنجات البوليمر، بما في ذلك PTFE، وFEP، وPFA، وETFE، وLock، وPTFE/FEP Twin-Shrink™.

لكن ليس عليك أن تكون من القوات الجوية الأمريكية الحديثة لاستخدام شروط النهج الاستباقي هذه. على أي حال، "النضال" مصطلح مألوف، و"العملية الجديدة تجاوزت" مصطلح نهج استباقي رائع لتسويق المشكلات. سأحصل على لقطات شاشة ودروس لكل فصل، ولكن عندما تحتاج إلى نسيان عبارات الحث على اتخاذ إجراء النصية تمامًا، سأعرف.

3 dice online casino

تدور أحداث هذه المهمة السحرية في عالمٍ سماويٍّ ساحر، وتدور أحداثها على شبكة ألعاب فيديو رائعة 5×3، بحد أقصى 30 خط دفع، ما يتيح لك ربح المال. تُعد لعبة زيوس ألف من أفضل الألعاب التي اختبرتها على موقع Scientific Video Game. تفتقر ألعاب المطورين عادةً إلى ميزات المكافآت الإضافية، إلا أنها تُعوّض عن ذلك بجولات دورات مجانية ممتعة ومربحة.

أحدث العلامات المجنونة تُغيّر زيوس الجديد، وتُقدّم للمراهنين فرصًا أكبر بـ 500 ضعف. يُعدّ لعب لعبة زيوس الجديدة على الحد الأعلى، حيث يدفع رمز بيغاسوس على بكرتين، مفيدًا أيضًا. مكافأة زيوس هي السبب الرئيسي وراء حصول اللاعبين على أعلى المكافآت؛ وإلا، فلن تجد الكثير لتستمتع به في هذه اللعبة، إلا إذا كنت راضيًا.

  • من بين ألعاب الفيديو المفضلة لديك هناك سلسلة Ra من Novomatic، وCleopatra القديمة من IGT، وHall of Gods من NetEnt، وDracula.
  • الموانئ المجانية عبر الإنترنت الأكثر شعبية هي في الواقع Starburst من NetEnt، وBonanza Megaways من BTG، وWolf Silver من Fundamental Delight، وPrimate King من Red Tiger Gaming.
  • ومع ذلك، يتم تحديد RTP الجديد بناءً على عدد لا يحصى من الدورات، مما يعني أن الإنتاجية الجديدة لكل دورة تكون دائمًا عشوائية.
  • لا توجد منافذ ذات حدود أعلى للعبة، وهو ما رأيته، ولكنني لن أندهش أبدًا إذا رأيت 25c لكل نوع نطاق في مكان ما.
  • تضفي هذه الميزات طبقة إضافية من الإثارة وقد تتمكن من تحقيق انتصارات ضخمة، مما يجعل اللعبة تتفوق على خيارات الكازينو الأخرى.

لقد قمتُ بالفعل بالمهمة الصعبة، ويمكنكَ مراجعة جميع الكازينوهات الإلكترونية التي تُتيح اللعب المجاني على أجهزة الكمبيوتر والهواتف المحمولة. فيما يلي، أقدّم أفضل نصائحنا للاعبين في الولايات المتحدة الأمريكية والمملكة المتحدة وإيطاليا. كما عرضنا لكم باقات المكافآت الجديدة بدون إيداع، مع دورات مجانية لكل كازينو إلكتروني.

no deposit bonus in zar

هناك العديد من خيارات الدفع القياسية التي تُتيح لك البحث عن رموز صفحات متناسقة، بالإضافة إلى أيقونات ألعاب مجانية والعديد من القطع الأثرية اليونانية، مما يُسهّل عليك تحسين رصيدك في اللعبة الأساسية. لكن ألعاب المكافآت هي ما يجعلك تشعر وكأن الآلهة الجديدة قد استولت عليك. خلال هذه الدورات المجانية، إذا ظهرت رموز زيوس الأربعة المحمّلة على البكرة الأولى من البكرات الخمس × الأربع، فإنها عادةً ما تُستبدل برموز زيوس الأخرى على البكرات الأخرى. هذه الأيقونات هي في الأساس زيوس، ولكن مع لمسة من اللون الأحمر.

العمولة المثلى لهذا الموقع هي 1000 ضعف مجموع خياراتهم، وهي منخفضة وقد لا توفر انتصارات كبيرة، ولكنها غالبًا ما تكون أكثر تكرارًا من الانتصارات القصيرة. يُحسب الحد الأقصى للفوز بعدد كبير من الدورات، يتراوح بين دورة واحدة ومليار دورة. يمكنك المراهنة مجانًا دون قيود، أو حتى بدون قيود على اليوم أو أي شكل آخر. لا يجب عليك تثبيت أي برامج للعب. لا يسمح موقع Slots-777 بقبول الرهانات، ولا يجمع أي معلومات عن الشركاء التابعين، ولذلك فنحن لسنا موقع مراهنات، بل مجرد دليل لألعاب الإنترنت. موقع Slots-777.com هو موقع مستقل، ويمكنك من خلاله لعب ألعاب السلوتس على الإنترنت.

قد يجدها البعض مثيرة للاهتمام، لكن قد لا يجدها آخرون كذلك، لأن المتعة تعتمد على الذوق الشخصي. يتواصل الناس مع ألعاب الإنترنت من منظورهم الخاص – ما يُثير اهتمامك سيُشعر الآخرين بالملل. نحاول التسريع بناءً على معايير قابلة للقياس، أو يمكنك تجربة النسخة التجريبية الجديدة من لعبة زيوس ألف مرة، ثم اتخاذ القرار بنفسك. ستجد دائمًا نسبة عائد اللاعب العالية للعبة في هذه الكازينوهات، وقد أثبتت هذه الكازينوهات باستمرار ارتفاع نسبة عائد اللاعب في معظم الألعاب التي حللناها. أفضل الكازينوهات على الإنترنت، وفقًا لتصنيفنا، تُصنفها من بين الأعلى تصنيفًا. تعتمد أحدث مهارة في لعبة زيوس ألف على الحصول على كومة كاملة من رموز زيوس على البكرة الرئيسية.

best online casino no deposit codes

في الوقت الحالي، يستخدم دوم إمكانياته لكتابة وصف شامل للموقف، وسيقدم لك توصيات لمواقع المقامرة. لن تتوفر أي دورات مجانية على لعبة زيوس الجديدة، ولكن يمكنك اعتبارها من أفضل مكافآت الكازينو على موقعنا. كل مكافأة أكثر متعة من الثانية، وستجد قوانين لعب سهلة. علاوة على ذلك، اللعبة متشابهة بغض النظر عن الكازينو الإلكتروني المفضل لديك. سيستمتع عشاق الأساطير اليونانية بلعب الأيقونات والقطع الأثرية عالية القيمة، مثل مزهرية فاخرة، وعربة، وعرش، ودرع.

تُقدّم الشركات للمُشغّلين نصائحَ حول العناصر، بالإضافة إلى تحليلاتٍ مثل نسبة العائد إلى اللاعب (RTP)، وأقصى ربح، وتقلّب الأسعار، وما إلى ذلك. تختلف استراتيجية الوحدة؛ فهي تُحدّد الإحصائيات من خلال تجميع المعلومات التي يجمعها مُستخدمونا من بياناتٍ أخرى. بدلاً من لوحة البكرات الخمس الكلاسيكية، تُنفق لعبة زيوس ألف دولار على شبكتين من ماكينات القمار.