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} Online-Glücksspielseiten in Deutschland Ein Überblick.291 - premier mills

Online-Glücksspielseiten in Deutschland Ein Überblick.291

Online-Glücksspielseiten in Deutschland – Ein Überblick

▶️ SPIELEN

Содержимое

In Deutschland echtgeld casino ist das Glücksspiel ein beliebtes Hobby für viele Menschen. Im Internet finden sich viele Online-Glücksspielseiten, die es ermöglichen, von überall aus zu spielen. Aber wie kann man sicherstellen, dass man sich an die richtigen Online-Glücksspielseiten wendet?

Die beste Online-Glücksspielseite ist eine, die sich an die strengen Regeln des Deutschen Glücksspielrechts hält. Einige Online-Glücksspielseiten bieten auch mobile Versionen an, die es ermöglichen, von überall aus zu spielen. Aber wie kann man sicherstellen, dass man sich an die richtigen Online-Glücksspielseiten wendet?

Ein Online-Casino-Testbericht kann helfen, die beste Online-Glücksspielseite zu finden. Ein solcher Testbericht sollte alle wichtigen Aspekte eines Online-Casinos berücksichtigen, wie zum Beispiel die Spiele, die Boni, die Zahlungsmethoden und die Sicherheit. Ein Online-Casino-Testbericht kann helfen, die beste Online-Glücksspielseite zu finden.

Die beste Online-Glücksspielseite ist eine, die sich an die strengen Regeln des Deutschen Glücksspielrechts hält. Einige Online-Glücksspielseiten bieten auch mobile Versionen an, die es ermöglichen, von überall aus zu spielen. Aber wie kann man sicherstellen, dass man sich an die richtigen Online-Glücksspielseiten wendet?

Einige der besten Online-Glücksspielseiten in Deutschland sind Book of Ra, Starburst und Book of Dead. Diese Spiele sind sehr beliebt und werden von vielen Spielern gespielt. Aber wie kann man sicherstellen, dass man sich an die richtigen Online-Glücksspielseiten wendet?

Es ist wichtig, dass man sich an die richtigen Online-Glücksspielseiten wendet, um sicherzustellen, dass man sich an die strengen Regeln des Deutschen Glücksspielrechts hält.

Die beste Online-Glücksspielseite ist eine, die sich an die strengen Regeln des Deutschen Glücksspielrechts hält. Einige Online-Glücksspielseiten bieten auch mobile Versionen an, die es ermöglichen, von überall aus zu spielen. Aber wie kann man sicherstellen, dass man sich an die richtigen Online-Glücksspielseiten wendet?

Die Geschichte von Online-Glücksspielen in Deutschland

Die Geschichte von Online-Glücksspielen in Deutschland ist eine lange und komplexe. Im Jahr 2000 wurde das erste Online-Casino in Deutschland gegründet, aber es dauerte einige Jahre, bis sich das Geschäft entwickelt hatte. Im Jahr 2005 wurde das erste Online-Casino in Deutschland lizenziert, das “CasinoClub” genannt wurde. Dieses Casino war ein wichtiger Schritt in der Entwicklung des Online-Glücksspiels in Deutschland.

In den folgenden Jahren wuchs das Angebot an Online-Casinos in Deutschland kontinuierlich. Im Jahr 2010 gab es bereits über 100 lizenzierte Online-Casinos in Deutschland. Dieses Wachstum war auf die steigende Nachfrage nach Online-Glücksspielen zurückzuführen. Viele Deutsche bevorzugten das Spielen in Online-Casinos vor dem Spielen in traditionellen Casinos.

Im Jahr 2013 wurde das “Gesetz zur Steuerung und Regulierung der Online-Glücksspiele” verabschiedet. Dieses Gesetz regelte das Online-Glücksspiel in Deutschland und bestimmte die Voraussetzungen für die Lizenzierung von Online-Casinos. Das Gesetz bestimmte auch die Mindestanforderungen an die Sicherheit und Transparenz von Online-Casinos.

Heute gibt es in Deutschland viele Top-Online-Casinos, die von der Regierung lizenziert sind. Diese Casinos bieten ein breites Angebot an Spielen, von Slots bis hin zu Tischspielen. Viele Deutsche bevorugen das Spielen in Online-Casinos, da sie von der Bequemlichkeit und der Vielfalt der Angebote profitieren.

Für diejenigen, die sich für das Spielen in Online-Casinos interessieren, gibt es viele Möglichkeiten, um die besten Online-Casinos zu finden. Ein Online-Casino-Testbericht kann helfen, die beste Wahl zu treffen. Es gibt auch viele Online-Casinos, die speziell für Mobilgeräte optimiert sind, so dass man auch auf dem Weg oder zu Hause spielen kann.

Insgesamt hat sich das Online-Glücksspiel in Deutschland zu einem wichtigen Teil der Glücksspielkultur entwickelt. Viele Deutsche genießen das Spielen in Online-Casinos und profitieren von der Vielfalt der Angebote und der Bequemlichkeit.

Rechtliche Rahmenbedingungen für Online-Glücksspielseiten

Die Online-Glücksspielseiten in Deutschland müssen sich an die strengen rechtlichen Vorgaben des Landes halten. Im Folgenden werden die wichtigsten Aspekte erläutert, die für Online-Casinos in Deutschland gelten.

Die Glücksspielordnung (GlückSSPIeLORDnung) von 2012 regelt das Glücksspiel in Deutschland und legt die Voraussetzungen für die Lizenzierung von Online-Casinos fest. Nach dieser Gesetzeslage müssen Online-Casinos in Deutschland eine Lizenz von der zuständigen Behörde, der Glücksspielbehörde, erhalten, bevor sie ihre Tätigkeit aufnehmen können.

  • Die Lizenzierung von Online-Casinos in Deutschland ist streng geregelt und setzt hohe Anforderungen an die Sicherheit und Transparenz der Spiele.
  • Die Online-Casinos müssen sich an die Vorgaben der GlückSSPIeLORDnung halten und müssen sicherstellen, dass ihre Spiele fair und transparent sind.
  • Die Online-Casinos müssen auch sicherstellen, dass ihre Kundeninformationen und -daten sicher und vertraulich behandelt werden.

Die GlückSSPIeLORDnung von 2012 regelt auch die Mindestanforderungen an die Sicherheit und Transparenz der Spiele. So müssen Online-Casinos in Deutschland sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden.

  • Die Online-Casinos müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden.
  • Die Online-Casinos müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden.
  • Die Online-Casinos müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden.
  • Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Kundeninformationen und -daten sicher und vertraulich behandelt werden. Dazu gehören auch die Verwendung von SSL-Verschlüsselung und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaßnahmen, um die Vertraulichkeit der Daten zu gewährleisten.

    Die Online-Casinos in Deutschland müssen auch sicherstellen, dass ihre Spiele von unabhängigen Testinstituten getestet und zertifiziert werden. Dazu gehören auch die Verwendung von unabhängigen Testinstituten und die Implementierung von Sicherheitsmaß

    Die beliebtesten Online-Glücksspielseiten in Deutschland

    Die Online-Glücksspielbranche in Deutschland ist sehr umsatzstark und bietet eine Vielzahl an Möglichkeiten, um zu spielen und zu gewinnen. Im Folgenden werden die beliebtesten Online-Glücksspielseiten in Deutschland vorgestellt.

    Die Top-5 Online-Casinos in Deutschland

    1. Novoline Casino – Ein Klassiker unter den Online-Casinos, das von der Novomatic-Gruppe betrieben wird. Das Casino bietet eine Vielzahl an Spielen, darunter auch einige beliebte Novoline-Slots.

    2. Tipico Casino – Ein weiteres beliebtes Online-Casino, das von der Tipico-Gruppe betrieben wird. Das Casino bietet eine Vielzahl an Spielen, darunter auch einige beliebte Sportwetten.

    3. Mr. Green Casino – Ein Online-Casino, das von der Mr. Green-Gruppe betrieben wird. Das Casino bietet eine Vielzahl an Spielen, darunter auch einige beliebte Slots und Tischspiele.

    4. Unibet Casino – Ein Online-Casino, das von der Unibet-Gruppe betrieben wird. Das Casino bietet eine Vielzahl an Spielen, darunter auch einige beliebte Sportwetten.

    5. 888 Casino – Ein Online-Casino, das von der 888-Gruppe betrieben wird. Das Casino bietet eine Vielzahl an Spielen, darunter auch einige beliebte Slots und Tischspiele.

    Mobile Online-Casinos in Deutschland

    Die meisten Online-Casinos bieten heute auch mobile Versionen ihrer Websites an, die auf Smartphones und Tablets zugänglich sind. Einige der beliebtesten mobile Online-Casinos in Deutschland sind:

    Novoline Mobile Casino

    Tipico Mobile Casino

    Mr. Green Mobile Casino

    Unibet Mobile Casino

    888 Mobile Casino

    Es ist wichtig zu beachten, dass die Verfügbarkeit von Spielen und die Registrierungsmöglichkeiten je nach Bundesland variieren können.

    Wir empfehlen, vor der Registrierung und dem Spiel, einen Online-Casino-Testbericht zu lesen, um sich über die Sicherheit und Seriosität des Casinos zu informieren.

    Leave a Comment

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