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} Nejlepší online kasina mimo Velkou Británii Objevte své šance na výhru! - premier mills

Nejlepší online kasina mimo Velkou Británii Objevte své šance na výhru!

Nejlepší online kasina mimo Velkou Británii: Objevte své šance na výhru!

Online kasina se stala v posledních letech stále populárnějšími po celém světě. S rostoucím počtem uživatelů online hazardních her se objevilo také množství kasin, která se snaží přilákat hráče nabídkou různých her, bonusů a služeb. Ačkoli mnozí hráči preferují britská kasina, která jsou známá svou odborností a regulací, existuje také široký výběr vysoce kvalitních online kasin mimo Velkou Británii, která nabízejí konkurenceschopné výhody a šance na výhru. V této příručce se zaměříme na některé z nejlepších online kasin mimo Británii, abychom vám pomohli objevit nové možnosti a zvýšit vaše šance na výhru.

V best non uk casino této příručce prozkoumáme různé aspekty hodnocení online kasin, jako jsou licencování, nabídka her, zákaznický servis a další důležité faktory, které hrají roli v uživatelském zážitku. Naším cílem je poskytnout vám informace, které vám pomohou s rozhodováním, kde hrát, abyste si užili své hazardní hry naplno. Ať už jste zkušený hráč nebo nováček, věříme, že informace, které zde najdete, vám pomohou najít to pravé kasino.

Jedním z nejvíce diskutovaných témat při volbě online kasina je bezpečnost a důvěryhodnost. Hráči by měli být obeznámeni s klíčovými faktory, které ovlivňují jejich rozhodování, a to nejen proto, aby si zajistili spravedlivé hraní, ale také aby ochránili svá osobní a finanční data. V následujících sekcích se podíváme na nejlépe hodnocená online kasina mimo Velkou Británii, přičemž se zaměříme na jejich klíčové vlastnosti.

Jak vybírat nejlepší online kasina mimo Velkou Británii

Při výběru nejlepšího online kasina mimo Velkou Británii je důležité vzít v úvahu několik zásadních kritérií, které vám mohou pomoci udělat správné rozhodnutí. Mezi nejdůležitější faktory patří licence, rozmanitost her, kvalita bonusů a zákaznický servis. Tyto aspekty mohou významně ovlivnit vaši celkovou zkušenost s hazardními hrami.

Prvním krokem při hodnocení online kasina je zkontrolovat, zda má platnou licenci od uznávaného regulačního orgánu. To je klíčové pro zajištění spravedlivého hraní a ochrany vašich financí. Dále je dobré zjistit, jaké typy her kasino nabízí, zda má širokou nabídku a zda jsou hry vyvinuty renomovanými poskytovateli.

Název kasina
Licence
Typy her
Bonusy
Casino A MGA Sloty, Ruleta, Blackjack 100% až do 200 EUR
Casino B Curacao Sloty, Poker, Živé hry 50 roztočení zdarma
Casino C Gibraltar Sloty, Baccarat, Keno Bonus 200% na první vklad

Licencování a regulace

Licencování a regulace jsou klíčové aspekty pro bezpečnost hráčů. Každé důvěryhodné kasino musí mít licenci, která zajišťuje dodržování zákonů a norem stanovených regulačními orgány. V Evropě se jedná často o licence vydávané Maltským úřadem pro hazard, UK Gambling Commission nebo Curacao eGaming. Tyto licence zajišťují, že kasino dodržuje spravedlivé herní praktiky.

Je důležité si uvědomit, že každá licence má své vlastnosti a úroveň regulace, což může ovlivnit vaši zkušenost s kasinem. Například, kasina s licencí od UK Gambling Commission podléhají přísnějším pravidlům než kuraciánská kasina, což může být pro hráče rozhodující faktor.

Proto je náš doporučení pro hráče důsledně kontrolovat licenční informace na webových stránkách kasin a zhodnocovat jejich důvěryhodnost na základě těchto údajů. To vám pomůže nalézt nejlepší online kasina mimo Velkou Británii a zvýšit vaše šance na příjemný zážitek při hraní.

Diversita herních možností

Diversita herních možností, které kasino nabízí, je dalším klíčovým faktorem, který by měl hráče zajímat. Hráči mohou mít velmi odlišné preference a přání, což činí široký výběr her nezbytným. Mnohá kasina se snaží přitáhnout hráče nabídnutím nejen klasických her, jako jsou sloty a stolní hry, ale i živých her, které přinášejí autentickou atmosféru kasina přímo do vašich domovů.

V dnešní době existují kasina, která spolupracují s poskytovateli her, jako jsou NetEnt, Microgaming či Evolution Gaming, aby zajistila vysokou kvalitu a rozmanitost her, což zahrnuje od nejnovějších slotů po soutěžní pokerové stoly. Hráči by měli být opatrní při výběru kasina, které nemá širokou nabídku her, protože to může ovlivnit jejich herní zážitek.

Navíc je dobré prověřit také dostupnost mobilní platformy, aby bylo možné hrát kdykoliv a kdekoliv. Mnohá kasina dnes nabízejí vysoce kvalitní mobilní aplikace, které umožňují upravený herní zážitek i na chytrých telefonech a tabletech.

Bonusy a promoakce

Bonusy a promoakce patří mezi nejatraktivnější aspekty online kasin, a přitahují hráče různými nabídkami. Každé kasino má své specifické bonusové programy, které se liší nejen výší, ale také podmínkami, které je nutné splnit pro jejich aktivaci a vyplacení.

Jedním z nejčastějších typů bonusů jsou uvítací bonusy, které nabízí novým hráčům při registraci. Tyto bonusy mohou mít různé formy, například bezplatná zatočení nebo procentuální navýšení prvního vkladu. Dalším důležitým typem bonusu jsou bonusy za vklad, které motivují hráče, aby investovali více peněz do hry.

  • Uvítací bonusy – většinou nabízeny novým hráčům při registraci.
  • Bonusy za vklad – pro hráče, kteří provádějí další vklady.
  • Bezplatná zatočení – umožňují hráčům hrát zdarma na vybraných slotech.
  • Promo akce – mohou zahrnovat pravidelné soutěže a výzvy pro hráče.

Podmínky pro aktivaci bonusů

Každé kasino stanovuje specifické podmínky pro aktyvaci a splnění bonusů. Hráči by měli být vždy obeznámeni s těmito podmínkami, aby měli jasno v tom, co musí udělat pro předpoklad vyplacení bonusového kreditu. Tyto podmínky se mohou toulat od počtu sázek, které je nutné uskutečnit s použitím bonusových prostředků, až po časový rámec, ve kterém musí být sázky provedeny.

Dalším faktorem jsou maximální výhry, které si můžete z bonusu vybrat. Je důležité přečíst si podmínky, protože některé kasina omezují maximální částky. Mnohdy se také setkáte se specifickými hrami, na kterých se bonusy aktivují, což může omezovat výběr her, které můžete hrát.

Pokud budete mít vše jasné a budete se řídit podmínkami, můžete využít bonusových nabídek k maximalizaci své herní zkušenosti. Kromě toho se bonusy často mění a pravidelně mohou ovlivnit celkovou nabídku.

Kompatibilita s mobilními zařízeními

V dnešní době je mobilní hraní stále populárnější, a to nejen mezi mladšími hráči. Většina online kasin se snaží zajistit, aby jejich platformy byly optimalizovány pro mobilní zařízení, což znamená, že můžete hrát kdykoliv a kdekoliv. Většina casina mají své mobilní aplikace nebo jsou kompatibilní s mobilními prohlížeči.

Pro hráče je velmi důležité, aby měli přístup k široké nabídce her i na stolních počítačích, takže by měly být nabízeny stejné hry na mobilních i desktopových platformách. Pokud kasino nedokáže poskytnout kvalitní mobilní zážitek, může to potenciálně znamenat ztrátu hráčů, kteří preferují mobilní hraní a chtějí využít jeho výhod.

Úspěšná kasina pravidelně aktualizují své aplikace a webové stránky, aby optimalizovaly chod a uživatelskou přívětivost na všech zařízeních.

Zákaznický servis a podpora

Zákaznický servis je dalším klíčovým miliardářem pro úspěch online kasin. Pokud se vám stane problém nebo potřebujete jakoukoliv pomoc, je důležité moci se obrátit na kvalifikované pracovníky. Kvalitní zákaznický servis zajišťuje rychlou a efektivní odpověď na otázky a problémy hráčů.

Většina online kasin nabízí různé kanály pro kontakt, jako jsou živé chaty, emaily nebo telefonní čísla. Je dobré zkontrolovat dostupné hodiny a času, kdy je zákaznický servis aktivní, abyste se ujistili, že pomoc bude dostupná, kdy ji opravdu potřebujete.

Některá kasina nabízejí také FAQ sekce, které obsahují často kladené otázky a odpovědi, které mohou pomoci rychleji vyřešit běžné problémy. To však nemění nic na významu živého kontaktu, který může být mnohem efektivnější pro složitější dotazy.

Metoda kontaktu
Dostupnost
Hlavní výhody
Živý chat 24/7 Rychlá reakce, přímočará komunikace
Email Odpověď do 24 hodin Možnost podrobného vysvětlení
Telefon Pracovní hodin Osobní přístup a rychlé vyřešení problému

Recenze a hodnocení hráčů

Před výběrem kasina je velmi užitečné přečíst si recenze a hodnocení jiných hráčů. Tento způsob poskytuje pohled na zkušenosti, které ostatní lidé měli, a může odhalit potenciální slabé stránky jednotlivých kasin. Internet je plný fór a webových stránek, kde hráči sdílejí své názory a doporučení.

Důležité je, že byste měli mít na paměti, že ne všechny recenze jsou objektivní, a některé mohou být ovlivněny osobními názory. Je důležité číst různé recenze a soustředit se na opakující se témata a názory.

Sledováním hodnocení a zkušeností jiných hráčů můžete předejít problémům a najít takové kasino, které skutečně splňuje vaši představu o kvalitním online hraní.

Tendence a inovace v online hazardních hrách

Online hazardní hry se neustále vyvíjejí a přizpůsobují se měnícím se trendům a technologiím. Vývoj technologií, jako je virtuální realita (VR) a umělá inteligence (AI), přináší revoluci do online kasin. Tato inovace umožňuje kasinům poskytovat ještě lepší uživatelský zážitek a rozšiřovat možnosti interakce s hráči.

Některá kasina zavádějí VR hry, které simulačně reprodukují atmosféru fyzického kasina, a umožňují hráčům se cítit jako v reálném prostředí. Také se stále více objevují hry s živými dealery, které kombinují prvky tradičních kasin s online hraním. Tato hra přidává další úroveň interakce a autenticity.

Hráči by měli být vždy pozorní na nové inovace a trendy, které se objevují na trhu, aby měli přehled o tom, co je k dispozici a co by si mohli užít.

Nejlepší platformy pro platby

Bezpečnost a pohodlí při platbách jsou pro hráče zásadními faktory. Při rozhodování o volbě online kasina je důležité zhodnotit, jaké možnosti plateb a výběru kasino nabízí. Rychlost transakcí, poplatky a další vlastnosti související s plněním plateb rovněž ovlivňují celkový herní zážitek.

Existuje řada různých platebních metod, které mohou hráči využít, včetně kreditních karet, e-wallet služeb, bankovních převodů a dokonce i kryptoměn. Každá z těchto metod má své pro a proti. Například, kreditní karty mohou nabízet rychlost, ale mohou mít zmanipulované poplatky.

  1. Kreditní a debetní karty – rychlé a snadné použití, ale mohou mít poplatky.
  2. E-wallety – jako PayPal nebo Skrill, často nabídnou rychlé transakce a vyšší úroveň bezpečnosti.
  3. Kryptoměny – nabízejí anonymitu a nižší transakční poplatky, nicméně je třeba zajistit zdravotní gramotnosti.

Bezpečnost a šifrování dat

Bezpečnostní aspekty jsou v online hazardním průmyslu absolutně nutné. Skutečně důvěryhodná kasina používají šifrovací technologie, které chrání osobní a platební údaje hráčů. Většina renomovaných kasin implementuje 128 nebo 256-bitovou šifrovací technologii SSL, abych zajistila, že vaše citlivé informace zůstanou v bezpečí.

Také byste měli hledat kasina, která mají jasné zásady ochrany osobních údajů a transparentně informují hráče o tom, jak a proč budou jejich data zpracovávána. Vybírejte kasina, která se v této oblasti prokázala jako důvěryhodná a spolehlivá, aby váš zážitek z online hazardních her byl co nejpríjemnější.

Olovně se vyhněte kasinům s jednou nelicencovanou či pochybného záznamu v oblasti ochrany osobních údajů. Bezpečnost by měla být vždy prioritou číslo jedna, takže mějte na paměti, že vaši osobní a finanční údaje by měly být v bezpečí.

Závěr

V této příručce jsme analyzovali klíčové aspekty, které pomáhají hráčům najít nejlepší online kasina mimo Velkou Británii. Od licencování až po zákaznickou podporu a platební metody, všechny tyto faktory hrají důležitou roli v zážitku z hraní. S naší pomocí máte nyní možnost objevit nové příležitosti a zvýšit vaše šance na výhru.

Pamatujte, že volba správného kasina je klíčová pro vaše úspěchy a spokojenost s hazardními hrami. Ať už se rozhodnete pro jakékoli z kasin zmíněných v tomto článku, přejeme vám hodně štěstí a mnoho zábavy!

Leave a Comment

Your email address will not be published. Required fields are marked *