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} Jak vybrat nejlepší non UK kasino_1 - premier mills

Jak vybrat nejlepší non UK kasino_1

Jak vybrat nejlepší non UK kasino?

V dnešní době, kdy jsou online kasina stále populárnější, se stále více hráčů obrací na alternativní trhy, jako jsou non UK kasina. Tyto platformy nabízejí širokou škálu her, bonusů a platebních metod, které může být pro hráče atraktivní. Ale jak si vybrat to nejlepší non UK kasino? Tato otázka si zaslouží důkladné zkoumání. S ohledem na různé aspekty, jako jsou bezpečnost, licencování, dostupnost her a zákaznický servis, bude jistě užitečné se více ponořit do této problematiky.

Hráči non uk casino by si měli být vědomi, že non UK kasina mohou mít odlišné regulace a standardy než britská kasina. Je důležité znát různé jurisdikce a jak mohou ovlivnit hráčské zkušenosti. V této článku prozkoumáme klíčové faktory, které byste měli mít na paměti při výběru nejlepšího non UK kasina. Od specializovaných bonusů až po širokou nabídku her, každý aspekt hraje svou roli ve zpevnění vaší herní zkušenosti.

Připravili jsme pro vás sérii informací a tipů, které vám pomohou udělat informované rozhodnutí. Na konci této příručky byste měli mít jasnou představu o tom, co hledat a jak se orientovat v světe online kasin mimo Velkou Británii. Tak pojďme na to!

Licencování a regulace non UK kasin

Jedním z nejdůležitějších aspektů při výběru non UK kasina je pochopení licenčních a regulačních požadavků. Licencování kasina je klíčové, protože zajišťuje, že kasino dodržuje standardy bezpečnosti a fair play. Většina reputable non UK kasin bude licenci získáná z renomovaných jurisdikcí, jako jsou Malta, Gibraltar nebo Isle of Man.

Je důležité si uvědomit, že různé jurisdikce nabízejí různé úrovně ochrany spotřebitelů. Kasina s licencí v EU obvykle podléhají přísnějším regulacím. Doporučuje se zkontrolovat sekci o ochraně hráčů a pravidelnosti her, kterou kasino poskytuje. Následující tabulka ilustruje některé hlavní jurisdikce a jejich charakteristiky:

Jurisdikce
Úroveň ochrany
th>Další výhody
Malta Vysoká Dobrý výběr her
Gibraltar Vysoká Vynikající zákaznický servis
Isle of Man Vysoká Silná regulace a bezpečnost

Jak ověřit licenci kasina

Při prozkoumávání non UK kasin je zásadní důležité, abyste si ověřili licenci kasina. Většina důvěryhodných online kasin zobrazuje informace o své licenci na webových stránkách, obvykle v patičce. Měli byste také zjistit, zda byla kasino oceněna ve hráčských anketách nebo asociacích. Další způsob, jak ověřit, je procházet online fóra a recenze hráčů, které mohou poskytnout užitečné informace o reputaci kasina.

Vždy dávejte přednost kasinům, která mají licencování z důvěryhodných jurisdikcí. To zajistí nejen fair play, ale i ochranu vašich osobních a finančních dat. Takovéto kasinové stránky často investují hodně do desítek bezpečnostních opatření, aby chránily své hráče a poskytly jim bezpečné herní prostředí.

Důsledky absence licence

Kasina bez legitimní licence mohou představovat závažná rizika pro hráče. Bez regulace mohou tato kasina manipulovat s výhrami a zůstatky hráčů, a to bez jakýchkoli následků. Hráči, kteří se stávají obětí takovýchto praktik, často nemají žádnou možnost odvolání nebo pomoci. Je tedy nezbytné se vyvarovat non UK kasin bez licence a využít pouze těch, které mohou prokázat svou legitimitu.

Výběr her v non UK kasinech

Dalším rozhodujícím faktorem při výběru non UK kasina je rozmanitost herních možností, které jsou k dispozici. Non UK kasina často nabízejí širokou škálu her, včetně slotů, stolních her a živých kasinových her. Je důležité, aby hráči našli kasino, které pokrývá jejich konkrétní preference. Například pokud máte rádi automaty, hledejte kasina s širokým portfoliem značkových her.

Další důležitou částí nabídky her je spolupráce s renomovanými poskytovateli softwaru. Cílem je najít kasina, která spolupracují například se společnostmi jako jsou NetEnt nebo Microgaming, protože nabízejí kvalitní herní zážitek. Následující tabulka ukazuje některé hlavní poskytovatele a typy her, které nabízejí:

Poskytovatel
Typy her
NetEnt Sloty, stolní hry
Microgaming Sloty, jackpotové hry
Evolution Gaming Živé kasino hry

Jaké hry hledat

Když vybíráte non UK kasino, zohledněte, jaké typy her vás zajímají. Chcete-li si užít dobrou herní zkušenost, doporučuje se vybrat kasino, které nabízí live dealer hry, pokud máte zájem o interakci s živými krupiéry. Pokud jste fanouškem automatů, hledejte kasina, která mají širokou nabídku video slotů a progresivních jackpotů.

Je také dobré mít na paměti, že dobrá kasina budou neustále aktualizovat svou knihovnu her, přidávat nové tituly a zajišťovat, aby jejich portfolio odpovídalo aktuálním trendům na trhu. Ověřte si také, zda kasino nabízí mobilní verzi pro snadný přístup na hráčské zařízení.

Úroveň zábavy a bonusy

Mezi klíčové faktory, které mohou přilákat hráče do non UK kasina, jsou populární bonusy a promoakce. Většina kasin dnes považuje soutěživé bonusy za prioritní, aby si udržela hráče a přilákala nové. Různé bonusy mohou zahrnovat uvítací bonusy, bezvkladové akce a cashback nabídky, které mohou značně zvýšit hráčský zážitek.

Hráči by však měli být obezřetní a pečlivě si přečíst podmínky bonusů, aby se ujistili, že nejsou žádné skryté požadavky. Vždy si prohlédněte dostupné nabídky a snažte se využít těch nejvýhodnějších příležitostí.

Bezpečnost a ochrana osobních údajů

Když se rozhodujete pro online hraní, bezpečnost osobních údajů a transakcí je nezbytná. Non UK kasina by měla mít implementována silná zabezpečení, včetně šifrování SSL, dvoufaktorové autentizace a dalších bezpečnostních opatření. Tato technologie pomáhá chránit citlivé informace hráčů a zajišťuje bezpečné platební transakce.

Zaměřte se také na kasina, která mají související politiky o ochraně soukromí, které vám zaručují, že vaše informace nebudou sdíleny třetím stranám. Při hledání dobrého non UK kasina se vždy ujistěte, že provozovatelé mají odpovídající regulace v oblasti ochrany dat. To vám může zajistit větší klid při hraní.

Jak rozpoznat zranitelné platformy

Identifikace potenciálně nebezpečných kasin je důležitým krokem pro ochranu vašich dat. Zde je několik ukazatelů, které naznačují zranitelnost platformy:

  • Negativní recenze nebo stížnosti od ostatních hráčů.
  • Žádné informace o licenci na webových stránkách.
  • Problematické platební metody, které nedodržují standardní postupy.

Pokud narazíte na kasino s těmito rysy, doporučujeme se mu vyhnout. Je dobré si ověřit, že kasino používá hodnocení od uznávaných organizací a pozitivním hodnocení hráčů.

Bezpečnostní opatření pro hráče

Hráči by měli mít na paměti několik bezpečnostních opatření ochránit své údaje a osobní informace. Vždy se ujistěte, že webová stránka kasina používá šifrování SSL, což je indikátor, že vaše transakce budou chráněny. Další opatrností je častá změna hesel a nezapomínání na ochranu svého účtu dvoufaktorovým ověřováním.

Také doporučujeme hráčům omezit sdílení svých osobních údajů online, a to i na fórech nebo v sociálních médiích. Když dodržujete tato pravidla, můžete si užít bezpečnější herní zážitek na non UK kasinech.

Bonusové nabídky a propagační akce

Pro maximální využití svého herního zážitku je nezbytné věnovat pozornost bonusovým nabídkám a propagačním akcím. Non UK kasina často nabízejí různorodé promo akce, které mohou výrazně prodloužit vaši hru a zvýšit vaše šance na výhru. U pobrežních platforem se často objevují uvítací nabídky, které mohou zahrnovat bezvkladové bonusy nebo zdaňovací bonusy na první vklad.

Je dobré prozkoumat různé typy bonusů, které kasino nabízí, a jejich podmínky. Než se rozhodnete, vždy si zkontrolujte, kolik času máte na splnění požadavků na sázení a na jaké hry se bonus vztahuje. Pamatujte, že ne všechny bonusy jsou vytvořeny rovně a některé mohou mít nevhodné podmínky.

Nejčastější typy bonusů

Mezi běžně nabízené typy bonusů patří:

  1. Uvítací bonus – Zpravidla je to bonus, který se nabízí novým hráčům při jejich první registraci.
  2. Bezvkladový bonus – Bonus, který lze získat bez nutnosti provedení vkladu.
  3. Cashback nabídky – Tyto nabídky vracejí hráčům část jejich prohraných peněz.

Aby se zlepšila šance hráčů na dosažení zisku, doporučuje se pečlivě prostudovat nabídky každého konkrétního non UK kasina a na základě toho se rozhodnout. Nezapomeňte se zaměřit na bonusy, které mají férové požadavky pro sázení a které se vztahují na hry, které vás baví.

Podpora zákazníků a poradenství

Důležité je také zvážení úrovně zákaznického servisu, kterou kasino nabízí. Kvalitní non UK kasina by měla mít snadno dostupnou zákaznickou podporu, která by dokázala efektivně řešit jakékoli dotazy nebo problémy. Měla by existovat možnost kontaktovat je prostřednictvím live chatu, e-mailu nebo telefonu. To vám zajistí rychlé a adekvátní reakce na vaše otázky.

Nezapomínejte, že pro kvalitní herní zážitek je důležité mít k dispozici odbornou pomoc, pokud je to potřeba. Zákaznická podpora může také poskytnout cenné informace o propozicích, bonusech a herních mechanismech, které byste mohli potřebovat. Často se stává, že dobrá podpora zvyšuje celkovou spokojenost hráče.

Jak zjistit kvalitu zákaznické podpory

Existuje několik způsobů, jak zjistit úroveň zákaznické podpory, kterou kasino poskytuje. Prvním krokem je sledovat dostupnost podpory v různých časech. Pokud je support dostupný 24/7, je to dobrý indikátor. Další možností je přečíst si recenze a zkušenosti ostatních hráčů ohledně jejich interakce se zákaznickým servisem.

Pokud narazíte na kasino, které má obtížně dostupnou podporu, nebo se odpovědi na otázky nelíbí, může to být varovný znak. Dělejte informovaná rozhodnutí a vždy si vybírejte kasina, kde je zákaznická podpora pro vás dostupná a ochotná pomoci.

Péče o hráče a odpovědné hraní

Kasina by měla klást důraz na zajišťování bezpečného a odpovědného herního zážitku. Zdarma by měly poskytovat nástroje a informace o tom, jak ovládat své hazardní chování a odhalovat možné problémy s hraním. Non UK kasina by měly uznávat zásady zodpovědného hraní a nabízet možnosti sebeomezení.

Hráči by se měli také vzdělávat o různých aspektech zodpovědného hraní, aby mohli rozpoznávat varovné signály a související rizika. Například, správné nastavení rozpočtu, uvědomění si času, který strávíte hraním, a způsob, jak udržet zdravý životní styl, by měly být všechno součástí vaší strategie hraní.

Uzavření myšlenek

Výběr nejlepšího non UK kasina může být výzvou, ale s dobrým pochopením klíčových faktorů, jako jsou licencování, výběr her, bezpečnost a zákaznická podpora, bude situace snadnější. Je důležité si udělat čas a prozkoumat různé možnosti, než se rozhodnete do světa online hazardu.

Pamatujte, že kvalita zážitku se odvíjí od vašich preferencí a možností kasina, které vyberete. Mějte na paměti naše tipy a rady, a budete lépe připraveni na výběr, který pro vás bude nejlepší.

Leave a Comment

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