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} Гарантии защиты для клиентов интернет-казино с привилегиями. - premier mills

Гарантии защиты для клиентов интернет-казино с привилегиями.

Гарантии защиты для клиентов интернет-казино с привилегиями.

Вулкан КЗ входит в десятку ведущих казино глобуса. Азартных игроков привлекают гарантии безопасного окружения, сертифицированный софт, высокий уровень пользовательского сервиса и мгновенный вывод средств. Основной сайт онлайн гэмблинг-клуба обладает притягательный оформление, удобный UI и массу навигационных инструментов. В нижерасположенной части главной страницы находится значительный информативный сегмент о деятельности ресурса, приватности, FAQ. Наличие аналитики помогает изучить известными игровыми автоматами, актуальными и предельными призами.

Платформа запускается на любых мобильных и фиксированных устройствах. Совместимость дает возможность участвовать к чемпионатам или развлекаться в аппараты в лайв казино игрокам, которые применяют компьютеры или гаджеты с разной операционной системой.

Чтобы пользователь быстро откликался на новости сайта и имел возможность запускать слоты в комфортном для себя месте, была разработана мобильная версия Вулкан КЗ. Инсталляционный пакет для Айос и Андроид можно безвозмездно стянуть на официальном портале гейминг-платформы. В секции «Мобильное софт» подробно рассмотрена специфика инсталляции и инсталляции приложения на смартфон и планшет. Ключевое требование – доступность на девайсе свободного места и разрешение на скачивание данных с незнакомых источников. Преимущества инсталляции аппа:

  1. Доступ к платформам и ассортименту онлайн увеселений 24/7.
  2. Недостаток привязки к персональному компьютеру, запуск игрушек в комфортном для юзера пространстве.
  3. Стабильная деятельность при низком качестве связи соединения.
  4. Быстрый обнаружение и переход на доступное рабочее зеркало.
  5. Бонусные плюшки за инсталяции софта.
  6. Сохранение информации профиля на конкретном гаджете, логин «В 1 клик».
  7. Обычные настройки безопасности, защита персональных данных.

Если пользователь не желает перегружать телефон ненужными файлами, он может использовать адаптированной версией сайта для мобильных устройств. Отыскать опцию для девайса можно через инсталлированный на мобильнике браузер. Игрок заносит имя интернет-казино с бонусами и переходит по рабочей ссылке. Мобильная модификация распознает тип используемого устройства и мгновенно адаптируется под его технические характеристики. Веб-сайт различается от варианты для ПК увеличенными меню-кнопками, упрощенным пользовательским интерфейсом. Недостаток портативной вариации – для эксплуатации нужно устойчивое подключение к интернету, недоступна при запрете на доступ к центрального ресурса.

Эффект аккредитации на рейтинг игорного дома

С использованием разрешения азартная платформа узаконивает свою работу и значительно расширяет пул клиентов. Обладание официального документа гарантирует безопасность игорного дома и высокое качество предоставляемых услуг. Vulkan KZ благополучно выполнил процедуру сертификации и обладает разрешение на различные формы игорной деятельности. Детальная данные о действующем документе размещена в нижней части официального веб-сайта и в открытых списках.

Лицензия Curacao управляет деятельность сайта. Интернет казино ежегодно проходит через проверку автономной аудиторской фирмой на соответствие сайта международным стандартам качества. Права вошедших игроков безопасно защищены. В появлении спорных спорных клиент клиент обратиться для решения проблемы в уполномоченный орган.

Лицензированная платформа для азартных игр обеспечивает геймерам обширный выбор способов оплаты для перевода средств. Ключевые основы легальной работы – борьба с отмыванием средств, разумная игра, ограничение на мультиаккаунтность, игру несовершеннолетних и другие обманные действия. Азартные игроки всего мира чаще доверяют лицензированным казино, потому что хотят быть уверены в сохранности персональных данных и денежных операций. Конфиденциальная информация игрока защищена на всех стадиях новейшими технологиями SSL-кодирования. Информация клиентов сохраняются на серваках в зашифрованном формате.

Сотрудничество с ведущими разработчиками слотов.

Один среди ключевых черт надежного интернет-казино – слоты от глобально признанных разработчиков. казино Вулкан Казахстан служит законным союзником многих известных и обещающих разработчиков игрового программного обеспечения. Каждые слоты высокого уровня, регулярно проходят через контроль на удовлетворение заявленным параметрам, справедливость и надежность. Ключевые глобальные инспекторы – eCOGRA, iTech Labs, GLI.

Сервис для игр является связующим звеном, потому что предоставляет доступ к слотам, которые находятся на удаленных браузерах производителя. Благодаря данному способу исключена манипуляция итогов со стороны руководства и участников.

Главные признаки официального программного обеспечения:

  • Отчетливая визуализация, яркий дизайн, комфортный геймплей, наличие графических и 3D-эффектов, индивидуальный саундтрек.
  • Тщательное изложение геймплейного хода, перечень выигрышей, настройки.
  • Высокий коэффициент выплат – RTP свыше 90% (оптимальный параметр 92-98%).
  • Вариативная изменчивость – разброс существует низкая, посредственная и значительная, влияет на регулярность и величину предполагаемых призов.
  • Справедливая партия за помощью эксплуатации генератора случайных значений, который гарантирует рандомное генерацию исходов текущего раунда.
  • Присутствие экстра опций в новейших автоматах – риск-игра, множители, заменители, экспандеры, бесплатные вращения, покупка бонусов, этапов и прочее.

Разработчики веб-ресурса позаботились о комфорте пользователей. В азартном пространстве предусмотрена классификация виртуальных аттракционов по категориям, создателям, тематике. Чтобы скорого нахождения по заголовку разработан поисковый инструмент. Автоматы можно упорядочить в категориях по известности, выигрышам, рейтингу пользователей, в по алфавиту. Регулярное апгрейд материалов новыми играми и формальное коллаборация с разработчиками игр позволяет участникам первыми протестировать свежие релизы в мире азартных игр.

Присутствие тестового режима представляет собой значительным преимуществом Вулкан КЗ. Безвозмездный вариант предоставляется в слотах, табличных и аварийных играх. Категория Live гэмблинга не имеет демонстрационного варианта ставок из-за того, что действие происходит в онлайн режиме с наличием живого дилера. Для клиентов демо-версии – это хороший возможность освоить особенности игрового автомата и попробовать без материальных расходов. Тестовый режим не имеет ограничений по времени, предоставляется без учетной записи и депозита.

Методы регистрации для игры на деньги

Условия к будущим игрокам онлайн казино:

  • Лет от восемнадцати.
  • Оформление регистрационной анкеты и профиля учетной записи.
  • Подтверждение связных информации.
  • Процесс верификации.
  • Ограничение на мультиаккаунты.
  • Согласие с регламентом эксплуатации портала.

Процедура регистрации профиля простая, занимает пару минут. Пользователь попадает на главный сайт или в доступное зеркало, жмет на клавишу «Регистрация» и вводит данные в появившуюся бланк личными данными. В игровом клубе доступно 3 способа оформления аккаунта: через имейл, по телефонному номеру, с использованием социальных медиа или чат-приложений. Пользователь определяет комфортный по своему усмотрению способ и заканчивает процедуру щелчком на кнопку «Зарегистрироваться».

Важное значение имеет созданный ключ. Тайный шифр необходимо быть замысловатым, содержать не менее шести букв верхнего и нижнего регистра латинского алфавита и чисел. Пользователь способен задействовать уникальное приложение для генерации безопасного пароля или придумывает его самостоятельно.

Создание аккаунта в виртуальном казино позволяет участнику вкладывать средства в игру, приобретать щедрые вознаграждения от казино и разработчиков, быть частью конкурсов и специальных предложений. Пользователь делается держателем личного профиля, в каком следит за свой уровень в программе лояльности, предоставляемые премии, осуществляет платежи, просматривает историю посещений и транзакций.

После завершения заполнения регистрационной формы пользователь добавляет деньги на депозит в пределах заданного лимита и приобретает внушительный бонус за вступление. Поднять величину приза возможно используя промокода. Отыскать специальный промо шифр от Vulkan KZ можно на специализированных веб-ресурсах и обсуждениях, на аккаунтах инфлюенсеров в соцсетях, в онлайн-чате мессенджеров.

Пользователям предоставляется кешбэк в размере до 10% от потерь. Проверенные клиенты забирают безвложенный подарок на День Рождения, при инсталляции мобильной программы, после подтверждения контактной информации или выполнения условий текущих акций. Участие в регулярных турнирах даст возможность завоевать главный приз или получить поощрение за активность. Каждый клиент онлайн казино может вступить в разыгрывании главного приза.

Особенности логина в персональный кабинет.

Кнопка «Авторизация» закреплена в верхней части официального сайта. Пользователь подбирает тот вариант идентификации, через который осуществлял запись на портале. В высветившейся бланке пользователь вносит аккаунт (e-mail, мобильный номер) и код доступа или активирует символ социальной сети. С целью войти в личный профиль посредством социальные медиа, пользователь применяет информацию учетной записи определенного интернет сообщества. В случае если игрок утратил секретный пароль, ему доступна функцией «Забыли пароль?».

Авторизация в персональный аккаунт возможен с основного портала, через действующее зеркало, адаптированную версию или приложение для андроид и айос. Вне зависимости относительно категории применяемого гаджета алгоритм входа на портале проходит по типичному плану. Vulkan KZ позволяет авторизованным игрокам активировать двухфакторную аутентификацию.

В определённых государствах из-за запрета касательно азартные игры, интернет-казино блокируются поставщиками интернета. Для того чтобы пользователи имели возможность получить подключение к сайту в любой точке мира, создатели делают зеркальные сайты. Копирующий ресурс представляет собой 100% копией главного ресурса, но размещен в другой доменной области.

Чтобы обхода ограничений пользователи способны использовать TOR-браузер, прокси-сервисы, анонимайзеры, VPN-сервисы. Всякий из указанных вариантов содержит свои плюсы и недостатки. Клиенты азартной сайта в большинстве случаев для доступа в заблокированный ресурс выбирают актуальные зеркала. Основные критерии выбора – актуальные параметры сохранности и оперативная быстродействие работы.

Нормы осознанной игры для игроков казино

Беттинг на деньги никого не оставляют безразличными. Большинство пользователей входят в Вулкан КЗ, чтобы расслабиться и приятно провести время отдыха. Малая часть пользователей рассматривает игровой сайт, как возможность главного дохода. Желание выиграть любой ценой, чтобы заполучить долгожданный джекпот, часто приводит к неблагоприятных исходов для геймера.

Игровая зависимость – это болезненное положение, которое приводит к полной потере контроля над поведением. Проявляется расстройство у игроков виртуальных казино на почве материальной заинтересованности и вследствие сочетания определённых неблагоприятных обстоятельств. Наиболее часто обычно попадают в зависимость игроки в диапазоне 20-40 годов, у которых фиксируются эмоциональные и психические расстройства.

Для предотвращения геймерской зависимости геймер необходимо ответственно подходить к ставкам на деньги. Ответственные пользователи ограничивают время посещения на платформе, выставляют лимит на суточное увеличение баланса, контролируют объемом дневных ставок, никогда не используют кредитные средства. Когда у данного пользователя обнаружились трудности с самообладанием, он может на период заблокировать свою аккаунт.

На портале недопустима игра детей, которые входят в группу риска. Проверка учетной записи дает возможность найти геймеров, которым не достигли 18 лет, и запретить доступ к их аккаунт вместе с средствами на счете. В правилах функционирования портала указана обязанность игрока за внесение ложной данных и применение личной информации, платежных инструментов, принадлежащих третьим лицам.

Надежные финансовые транзакции, верификация профиля

казино Вулкан Казахстан предлагает обширный выбор достоверных денежных операторов. Каждые перечисления осуществляются посредством оператора, который применялся для изначального депозитации депозита. Финансовая валюта также устанавливается разово. Популярные платежные инструменты: пластиковые карточки Виза, Mastercard, цифровые кошельки, цифровые валюты на биржи.

Внесение денег и снятие выигрыша проходят в профиле по определенному алгоритму. Игрок определяет тип транзакции «Пополнить» или «Вывести средства», способ оплаты, указывает размер средств и кликает на «Оплатить». После того как подбора посреднической компании высвечивается актуальный ограничение на трансфер средств для конкретного оператора.

Средства зачисляются на счет учетной записи моментально, не облагаются сбором. Высокая быстрота транзакции связана тем фактом, что депозитные запросы обрабатываются без участия человека. Администратор берет комиссию за снятие денег. Время поступления финансов на персональный счет определяется предпочтительного платежного сервиса.

Первый кэшаут джекпота возможен по завершении отыгрыша бонусных денег и положительной идентификации. Этап подтверждения персональных данных позволяет полностью полноценно воспользоваться функциями виртуального казино. Пользователь вводит профиль аккаунта персональной информацией (имя и фамилия, год рождения, адрес проживания), указывает контактный номер, почтовый адрес, выбирает валюту и платежный инструмент.

Для того чтобы пройти этап идентификации личности, участник выполняет определённое количество поочерёдных шагов:

  • Входит в личный аккаунт и выбирает категорию «Верификация».
  • Загружает изображение удостоверения личности или водительского удостоверения, фотографию с документом в руках.
  • Дожидается исхода аудита – обычное период проверки от 2-3 часов до 5 деловых дней.

Изображения должны быть отличного качества, ясные, заданного формата. В нечастых обстоятельствах работникам игорного заведения нужно дополнительные папки для завершения идентификации. По завершении успешного выполнения верификации у игрока меняется уровень учетной записи.

Поддержка помощи виртуального казино с акциями.

В инфо части веб-ресурса можно отыскать контакты техподдержки. Контактировать с сотрудниками можно с помощью фирменную e-mail или онлайн чат. Поддержка функционирует круглосуточно, без остановок и отдыха. Игроки виртуального казино контактируют в поддержку клиентов в таких случаях:

  1. Затруднения с регистрационным процессом, верификацией, логином.
  2. Задержки с пополнением баланса или выводом джекпота.
  3. Восстановить секретного кода для перехода в профиль.
  4. Содействие с инсталляцией аппа.
  5. Сложности с активацией и использованием бонуса.
  6. Обход блокировки – ссылки на доступные функционирующие альтернативные адреса.
  7. Пояснение оснований заморозки аккаунта.

Если запрос нуждается в срочного разрешения, стоит использовать онлайн чат. Период ответа на обращение – 1-2 минуты. На платформе предусмотрен комфортный модуль «История запросов», где участник может просмотреть свое взаимодействие с операторами портала.

В нижерасположенной части центральной страницы размещён раздел «FAQ», где пользователь находит решения на распространённые запросы. Бланк отзыва помогает компании более точно понимать своих клиентов и быстро решать возникшие трудности. Игрок может написать свое впечатление о любом мероприятии, поделиться положительным или отрицательным переживанием, написать рецензию о посещении сайта. В мобильной варианте казино Вулкан Казахстан и в программе функционирование сервиса организована подобным способом.

Leave a Comment

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