/* ========================================================= * composer-view.js v0.2.1 * ========================================================= * Copyright 2013 Wpbakery * * Visual composer backbone/underscore version * ========================================================= */ (function ( $ ) { var i18n = window.i18nLocale, store = vc.storage, Shortcodes = vc.shortcodes; vc.templateOptions = { default: { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g }, custom: { evaluate: /<#([\s\S]+?)#>/g, interpolate: /\{\{\{([\s\S]+?)\}\}\}/g, escape: /\{\{([^\}]+?)\}\}(?!\})/g } }; vc.builder = { toString: function ( model, type ) { var params = model.get( 'params' ), content = _.isString( params.content ) ? params.content : ''; return wp.shortcode.string( { tag: model.get( 'shortcode' ), attrs: _.omit( params, 'content' ), content: content, type: _.isString( type ) ? type : '' } ); } }; /** * Default view for shortcode as block inside Visual composer design mode. * @type {*} */ vc.clone_index = 1; vc.saved_custom_css = false; var ShortcodeView = vc.shortcode_view = Backbone.View.extend( { tagName: 'div', $content: '', use_default_content: false, params: {}, events: { 'click .column_delete,.vc_control-btn-delete': 'deleteShortcode', 'click .column_add,.vc_control-btn-prepend': 'addElement', 'click .column_edit,.vc_control-btn-edit, .column_edit_trigger': 'editElement', 'click .column_clone,.vc_control-btn-clone': 'clone', 'mousemove': 'checkControlsPosition' }, removeView: function () { vc.closeActivePanel( this.model ); this.remove(); }, checkControlsPosition: function () { if ( ! this.$controls_buttons ) { return; } var window_top, element_position_top, new_position, element_height = this.$el.height(), window_height = $( window ).height(); if ( element_height > window_height ) { window_top = $( window ).scrollTop(); element_position_top = this.$el.offset().top; new_position = (window_top - element_position_top) + $( window ).height() / 2; if ( 40 < new_position && new_position < element_height ) { this.$controls_buttons.css( 'top', new_position ); } else if ( new_position > element_height ) { this.$controls_buttons.css( 'top', element_height - 40 ); } else { this.$controls_buttons.css( 'top', 40 ); } } }, initialize: function () { this.model.bind( 'destroy', this.removeView, this ); this.model.bind( 'change:params', this.changeShortcodeParams, this ); this.model.bind( 'change_parent_id', this.changeShortcodeParent, this ); this.createParams(); }, hasUserAccess: function () { var shortcodeTag; shortcodeTag = this.model.get( 'shortcode' ); if ( - 1 < _.indexOf( [ "vc_row", "vc_column", "vc_row_inner", "vc_column_inner" ], shortcodeTag ) ) { return true; // we cannot block controls for these shortcodes; } if ( ! _.every( vc.roles.current_user, function ( role ) { return ! (! _.isUndefined( vc.roles[ role ] ) && ! _.isUndefined( vc.roles[ role ][ 'shortcodes' ] ) && _.isUndefined( vc.roles[ role ][ 'shortcodes' ][ shortcodeTag ] )); } ) ) { return false; } return true; }, createParams: function () { var tag, settings, params; tag = this.model.get( 'shortcode' ); settings = _.isObject( vc.map[ tag ] ) && _.isArray( vc.map[ tag ].params ) ? vc.map[ tag ].params : []; params = this.model.get( 'params' ); this.params = {}; _.each( settings, function ( param ) { this.params[ param.param_name ] = param; }, this ); }, setContent: function () { this.$content = this.$el.find( '> .wpb_element_wrapper > .vc_container_for_children,' + ' > .vc_element-wrapper > .vc_container_for_children' ); }, setEmpty: function () { }, unsetEmpty: function () { }, checkIsEmpty: function () { if ( this.model.get( 'parent_id' ) ) { vc.app.views[ this.model.get( 'parent_id' ) ].checkIsEmpty(); } }, /** * Convert html into correct element * @param html */ html2element: function ( html ) { var attributes = {}, $template; if ( _.isString( html ) ) { this.template = _.template( html ); $template = $( this.template( this.model.toJSON(), vc.templateOptions.default ).trim() ); } else { this.template = html; $template = html; } _.each( $template.get( 0 ).attributes, function ( attr ) { attributes[ attr.name ] = attr.value; } ); this.$el.attr( attributes ).html( $template.html() ); this.setContent(); this.renderContent(); }, render: function () { var $shortcode_template_el = $( '#vc_shortcode-template-' + this.model.get( 'shortcode' ) ); if ( $shortcode_template_el.is( 'script' ) ) { this.html2element( _.template( $shortcode_template_el.html(), this.model.toJSON(), vc.templateOptions.default ) ); } else { var params = this.model.get( 'params' ); $.ajax( { type: 'POST', url: window.ajaxurl, data: { action: 'wpb_get_element_backend_html', data_element: this.model.get( 'shortcode' ), data_width: _.isUndefined( params.width ) ? '1/1' : params.width, _vcnonce: window.vcAdminNonce }, dataType: 'html', context: this } ).done( function ( html ) { this.html2element( html ); } ); } this.model.view = this; this.$controls_buttons = this.$el.find( '.vc_controls > :first' ); return this; }, renderContent: function () { this.$el.attr( 'data-model-id', this.model.get( 'id' ) ); this.$el.data( 'model', this.model ); return this; }, changedContent: function ( view ) { }, _loadDefaults: function () { var tag, hasChilds; tag = this.model.get( 'shortcode' ); hasChilds = ! ! vc.shortcodes.where( { parent_id: this.model.get( 'id' ) } ).length; if ( ! hasChilds && true === this.use_default_content && _.isObject( vc.map[ tag ] ) && _.isString( vc.map[ tag ].default_content ) && vc.map[ tag ].default_content.length ) { this.use_default_content = false; Shortcodes.createFromString( vc.map[ tag ].default_content, this.model ); } }, _callJsCallback: function () { //Fire INIT callback if it is defined var tag = this.model.get( 'shortcode' ); if ( _.isObject( vc.map[ tag ] ) && _.isObject( vc.map[ tag ].js_callback ) && ! _.isUndefined( vc.map[ tag ].js_callback.init ) ) { var fn = vc.map[ tag ].js_callback.init; window[ fn ]( this.$el ); } }, ready: function ( e ) { this._loadDefaults(); this._callJsCallback(); if ( this.model.get( 'parent_id' ) && _.isObject( vc.app.views[ this.model.get( 'parent_id' ) ] ) ) { vc.app.views[ this.model.get( 'parent_id' ) ].changedContent( this ); } _.defer( _.bind( function () { vc.events.trigger( 'shortcodeView:ready' ); vc.events.trigger( 'shortcodeView:ready:' + this.model.get( 'shortcode' ) ); }, this ) ); return this; }, // View utils {{ addShortcode: function ( view, method ) { var before_shortcode; before_shortcode = _.last( vc.shortcodes.filter( function ( shortcode ) { return shortcode.get( 'parent_id' ) === this.get( 'parent_id' ) && parseFloat( shortcode.get( 'order' ) ) < parseFloat( this.get( 'order' ) ); }, view.model ) ); if ( before_shortcode ) { view.render().$el.insertAfter( '[data-model-id=' + before_shortcode.id + ']' ); } else if ( 'append' === method ) { this.$content.append( view.render().el ); } else { this.$content.prepend( view.render().el ); } }, changeShortcodeParams: function ( model ) { var tag, params, settings, view; // Triggered when shortcode being updated tag = model.get( 'shortcode' ); params = model.get( 'params' ); settings = vc.map[ tag ]; _.defer( function () { vc.events.trigger( 'backend.shortcodeViewChangeParams:' + tag ); } ); if ( _.isArray( settings.params ) ) { _.each( settings.params, function ( param_settings ) { var name, value, $wrapper, label_value, $admin_label; name = param_settings.param_name; value = params[ name ]; $wrapper = this.$el.find( '> .wpb_element_wrapper, > .vc_element-wrapper' ); label_value = value; $admin_label = $wrapper.children( '.admin_label_' + name ); if ( _.isObject( vc.atts[ param_settings.type ] ) && _.isFunction( vc.atts[ param_settings.type ].render ) ) { value = vc.atts[ param_settings.type ].render.call( this, param_settings, value ); } if ( $wrapper.children( '.' + param_settings.param_name ).is( 'input,textarea,select' ) ) { $wrapper.children( '[name=' + param_settings.param_name + ']' ).val( value ); } else if ( $wrapper.children( '.' + param_settings.param_name ).is( 'iframe' ) ) { $wrapper.children( '[name=' + param_settings.param_name + ']' ).attr( 'src', value ); } else if ( $wrapper.children( '.' + param_settings.param_name ).is( 'img' ) ) { var $img; $img = $wrapper.children( '[name=' + param_settings.param_name + ']' ); if ( value && value.match( /^\d+$/ ) ) { $.ajax( { type: 'POST', url: window.ajaxurl, data: { action: 'wpb_single_image_src', content: value, size: 'thumbnail', _vcnonce: window.vcAdminNonce }, dataType: 'html', context: this } ).done( function ( url ) { $img.attr( 'src', url ); } ); } else if ( value ) { $img.attr( 'src', value ); } } else { $wrapper.children( '[name=' + param_settings.param_name + ']' ).html( value ? value : '' ); } if ( $admin_label.length ) { var inverted_value; if ( '' === value || _.isUndefined( value ) ) { $admin_label.hide().addClass( 'hidden-label' ); } else { if ( _.isObject( param_settings.value ) && ! _.isArray( param_settings.value ) && 'checkbox' === param_settings.type ) { inverted_value = _.invert( param_settings.value ); label_value = _.map( value.split( /[\s]*\,[\s]*/ ), function ( val ) { return _.isString( inverted_value[ val ] ) ? inverted_value[ val ] : val; } ).join( ', ' ); } else if ( _.isObject( param_settings.value ) && ! _.isArray( param_settings.value ) ) { inverted_value = _.invert( param_settings.value ); label_value = _.isString( inverted_value[ value ] ) ? inverted_value[ value ] : value; } $admin_label.html( ': ' + label_value ); $admin_label.show().removeClass( 'hidden-label' ); } } }, this ); } view = vc.app.views[ model.get( 'parent_id' ) ]; if ( false !== model.get( 'parent_id' ) && _.isObject( view ) ) { view.checkIsEmpty(); } }, changeShortcodeParent: function ( model ) { if ( false === this.model.get( 'parent_id' ) ) { return model; } var $parent_view = $( '[data-model-id=' + this.model.get( 'parent_id' ) + ']' ), view = vc.app.views[ this.model.get( 'parent_id' ) ]; this.$el.appendTo( $parent_view.find( '> .wpb_element_wrapper > .wpb_column_container,' + ' > .vc_element-wrapper > .wpb_column_container' ) ); view.checkIsEmpty(); }, // }} // Event Actions {{ deleteShortcode: function ( e ) { if ( _.isObject( e ) ) { e.preventDefault(); } var answer = confirm( i18n.press_ok_to_delete_section ); if ( true === answer ) { this.model.destroy(); } }, addElement: function ( e ) { _.isObject( e ) && e.preventDefault(); vc.add_element_block_view.render( this.model, ! _.isObject( e ) || ! $( e.currentTarget ).closest( '.bottom-controls' ).hasClass( 'bottom-controls' ) ); }, editElement: function ( e ) { if ( _.isObject( e ) ) { e.preventDefault(); } if ( ! vc.active_panel || ! vc.active_panel.model || ! this.model || ( vc.active_panel.model && this.model && vc.active_panel.model.get( 'id' ) != this.model.get( 'id' ) ) ) { vc.closeActivePanel(); vc.edit_element_block_view.render( this.model ); } }, clone: function ( e ) { if ( _.isObject( e ) ) { e.preventDefault(); } vc.clone_index = vc.clone_index / 10; return this.cloneModel( this.model, this.model.get( 'parent_id' ) ); }, cloneModel: function ( model, parent_id, save_order ) { var new_order, model_clone, params, tag; new_order = _.isBoolean( save_order ) && true === save_order ? model.get( 'order' ) : parseFloat( model.get( 'order' ) ) + vc.clone_index; params = _.extend( {}, model.get( 'params' ) ); tag = model.get( 'shortcode' ); model_clone = Shortcodes.create( { shortcode: tag, id: window.vc_guid(), parent_id: parent_id, order: new_order, cloned: true, cloned_from: model.toJSON(), params: params } ); _.each( Shortcodes.where( { parent_id: model.id } ), function ( shortcode ) { this.cloneModel( shortcode, model_clone.get( 'id' ), true ); }, this ); return model_clone; } } ); var VisualComposer = vc.visualComposerView = Backbone.View.extend( { el: $( '#wpb_visual_composer' ), views: {}, disableFixedNav: false, events: { "click #wpb-add-new-row": 'createRow', 'click #vc_post-settings-button': 'editSettings', 'click #vc_add-new-element, .vc_add-element-button, .vc_add-element-not-empty-button': 'addElement', 'click .vc_add-text-block-button': 'addTextBlock', 'click .wpb_switch-to-composer': 'switchComposer', 'click #vc_templates-editor-button': 'openTemplatesWindow', 'click #vc_templates-more-layouts': 'openTemplatesWindow', 'click .vc_template[data-template_unique_id] > .wpb_wrapper': 'loadDefaultTemplate', 'click #wpb-save-post': 'save', 'click .vc_control-preview': 'preview' }, initialize: function () { this.accessPolicy = $( '.vc_js_composer_group_access_show_rule' ).val(); if ( 'no' === this.accessPolicy ) { return false; } this.buildRelevance(); _.bindAll( this, 'switchComposer', 'dropButton', 'processScroll', 'updateRowsSorting', 'updateElementsSorting' ); vc.events.on( 'shortcodes:add', vcAddShortcodeDefaultParams, this ); vc.events.on( 'shortcodes:add', vc.atts.addShortcodeIdParam, this ); // update vc_grid_id on shortcode adding vc.events.on( 'shortcodes:add', this.addShortcode, this ); vc.events.on( 'shortcodes:destroy', this.checkEmpty, this ); Shortcodes.on( 'change:params', this.changeParamsEvents, this ); Shortcodes.on( 'reset', this.addAll, this ); this.render(); }, changeParamsEvents: function ( model ) { vc.events.triggerShortcodeEvents( 'update', model ); }, render: function () { var front = ''; // Find required elemnts of the view. this.$vcStatus = $( '#wpb_vc_js_status' ); this.$metablock_content = $( '.metabox-composer-content' ); this.$content = $( "#visual_composer_content" ); this.$post = $( '#postdivrich' ); this.$loading_block = $( '#vc_logo' ); if ( 'only' !== this.accessPolicy ) { if ( vc_frontend_enabled ) { front = '' + window.i18nLocale.main_button_title_frontend_editor + ''; } this.$buttonsContainer = $( '
' ).insertAfter( 'div#titlediv' ); this.$switchButton = this.$buttonsContainer.find( '.wpb_switch-to-composer' ); this.$switchButton.click( this.switchComposer ); } vc.add_element_block_view = new vc.AddElementUIPanelBackendEditor( { el: '#vc_ui-panel-add-element' } ); vc.edit_element_block_view = new vc.EditElementUIPanel( { el: '#vc_ui-panel-edit-element' } ); /** * @deprecated 4.4 * @type {vc.TemplatesEditorPanelViewBackendEditor} */ vc.templates_editor_view = new vc.TemplatesEditorPanelViewBackendEditor( { el: '#vc_templates-editor' } ); vc.templates_panel_view = new vc.TemplateWindowUIPanelBackendEditor( { el: '#vc_ui-panel-templates' } ); vc.post_settings_view = new vc.PostSettingsUIPanelBackendEditor( { el: '#vc_ui-panel-post-settings' } ); this.setSortable(); this.setDraggable(); vc.is_mobile = 0 < $( 'body.mobile' ).length; vc.saved_custom_css = $( '#wpb_custom_post_css_field' ).val(); vc.updateSettingsBadge(); /** * @since 4.5 */ _.defer( function () { vc.events.trigger( 'app.render' ); } ); return this; }, addAll: function () { this.views = {}; this.$content.removeClass( 'loading' ).empty(); this.addChild( false ); this.checkEmpty(); this.$loading_block.removeClass( 'vc_ajax-loading' ); this.$metablock_content.removeClass( 'vc_loading-shortcodes' ); }, addChild: function ( parent_id ) { _.each( vc.shortcodes.where( { parent_id: parent_id } ), function ( shortcode ) { this.appendShortcode( shortcode ); this.setSortable(); this.addChild( shortcode.get( 'id' ) ); }, this ); }, getView: function ( model ) { var view; if ( _.isObject( vc.map[ model.get( 'shortcode' ) ] ) && _.isString( vc.map[ model.get( 'shortcode' ) ].js_view ) && vc.map[ model.get( 'shortcode' ) ].js_view.length && ! _.isUndefined( window[ window.vc.map[ model.get( 'shortcode' ) ].js_view ] ) ) { view = new window[ window.vc.map[ model.get( 'shortcode' ) ].js_view ]( { model: model } ); } else { view = new ShortcodeView( { model: model } ); } model.set( { view: view } ); return view; }, setDraggable: function () { $( '#wpb-add-new-element, #wpb-add-new-row' ).draggable( { helper: function () { return $( '' ).appendTo( 'body' ); }, zIndex: 99999, // cursorAt: { left: 10, top : 20 }, cursor: "move", // appendTo: "body", revert: "invalid", start: function ( event, ui ) { $( "#drag_placeholder" ).addClass( "column_placeholder" ).html( window.i18nLocale.drag_drop_me_in_column ); } } ); this.$content.droppable( { greedy: true, accept: ".dropable_el,.dropable_row", hoverClass: "wpb_ui-state-active", drop: this.dropButton } ); }, dropButton: function ( event, ui ) { if ( ui.draggable.is( '#wpb-add-new-element' ) ) { this.addElement(); } else if ( ui.draggable.is( '#wpb-add-new-row' ) ) { this.createRow(); } }, appendShortcode: function ( model ) { var view, parentModelView, params; view = this.getView( model ); params = _.extend( vc.getDefaults( model.get( 'shortcode' ) ), model.get( 'params' ) ); model.set( 'params', params, { silent: true } ); parentModelView = false !== model.get( 'parent_id' ) ? this.views[ model.get( 'parent_id' ) ] : false; this.views[ model.id ] = view; if ( model.get( 'parent_id' ) ) { var parentView; parentView = this.views[ model.get( 'parent_id' ) ]; parentView.unsetEmpty(); } if ( parentModelView ) { parentModelView.addShortcode( view, 'append' ); } else { this.$content.append( view.render().el ); } view.ready(); view.changeShortcodeParams( model ); // Refactor view.checkIsEmpty(); this.setNotEmpty(); }, addShortcode: function ( model ) { var view, parentModelView, params; params = _.extend( vc.getDefaults( model.get( 'shortcode' ) ), model.get( 'params' ) ); model.set( 'params', params, { silent: true } ); view = this.getView( model ); parentModelView = false !== model.get( 'parent_id' ) ? this.views[ model.get( 'parent_id' ) ] : false; view.use_default_content = true !== model.get( 'cloned' ); this.views[ model.id ] = view; if ( parentModelView ) { parentModelView.addShortcode( view ); parentModelView.checkIsEmpty(); var self; self = this; _.defer( function () { view.changeShortcodeParams && view.changeShortcodeParams( model ); view.ready(); self.setSortable(); self.setNotEmpty(); } ); } else { this.addRow( view ); _.defer( function () { view.changeShortcodeParams && view.changeShortcodeParams( model ); } ); } }, addRow: function ( view ) { var before_shortcode; before_shortcode = _.last( vc.shortcodes.filter( function ( shortcode ) { return false === shortcode.get( 'parent_id' ) && parseFloat( shortcode.get( 'order' ) ) < parseFloat( this.get( 'order' ) ); }, view.model ) ); if ( before_shortcode ) { view.render().$el.insertAfter( '[data-model-id=' + before_shortcode.id + ']' ); } else { this.$content.append( view.render().el ); } }, addTextBlock: function ( e ) { var row, column, params; e.preventDefault(); row = Shortcodes.create( { shortcode: 'vc_row' } ); column = Shortcodes.create( { shortcode: 'vc_column', params: { width: '1/1' }, parent_id: row.id, root_id: row.id } ); params = vc.getDefaults( 'vc_column_text' ); if ( 'undefined' !== typeof(window.vc_settings_presets[ 'vc_column_text' ]) ) { params = _.extend( params, window.vc_settings_presets[ 'vc_column_text' ] ); } return Shortcodes.create( { shortcode: 'vc_column_text', parent_id: column.id, root_id: row.id, params: params } ); }, /** * Create row */ createRow: function () { var row = Shortcodes.create( { shortcode: 'vc_row' } ); Shortcodes.create( { shortcode: 'vc_column', params: { width: '1/1' }, parent_id: row.id, root_id: row.id } ); return row; }, /** * Add Element with a help of modal view. */ addElement: function ( e ) { _.isObject( e ) && e.preventDefault(); vc.add_element_block_view.render( false ); }, /** * @deprecated 4.4 use openTemplatesWindow * @param e */ openTemplatesEditor: function ( e ) { e && e.preventDefault(); vc.templates_editor_view.render().show(); }, openTemplatesWindow: function ( e ) { e && e.preventDefault(); if ( $( e.currentTarget ).is( '#vc_templates-more-layouts' ) ) { vc.templates_panel_view.once( 'show', function () { $( '[data-vc-ui-element-target="[data-tab=default_templates]"]' ).click(); } ); } vc.templates_panel_view.render().show(); }, loadDefaultTemplate: function ( e ) { e && e.preventDefault(); vc.templates_panel_view.loadTemplate( e ); }, editSettings: function ( e ) { e && e.preventDefault(); vc.post_settings_view.render().show(); }, sortingStarted: function ( event, ui ) { $( '#visual_composer_content' ).addClass( 'vc_sorting-started' ); }, sortingStopped: function ( event, ui ) { $( '#visual_composer_content' ).removeClass( 'vc_sorting-started' ); }, updateElementsSorting: function ( event, ui ) { _.defer( function ( app, event, ui ) { var $current_container = ui.item.parent().closest( '[data-model-id]' ), parent = $current_container.data( 'model' ), model = ui.item.data( 'model' ), models = app.views[ parent.id ].$content.find( '> [data-model-id]' ), i = 0; // Change parent if block moved to another container. if ( ! _.isNull( ui.sender ) ) { var old_parent_id = model.get( 'parent_id' ); store.lock(); model.save( { parent_id: parent.id } ); app.views[ old_parent_id ].checkIsEmpty(); app.views[ parent.id ].checkIsEmpty(); } models.each( function () { var shortcode = $( this ).data( 'model' ); store.lock(); shortcode.save( { 'order': i ++ } ); } ); model.save(); }, this, event, ui ); }, updateRowsSorting: function () { _.defer( function ( app ) { var $rows = app.$content.find( app.rowSortableSelector ); $rows.each( function () { var index = $( this ).index(); if ( $rows.length - 1 > index ) { store.lock(); } $( this ).data( 'model' ).save( { 'order': index } ); } ); }, this ); }, renderPlaceholder: function ( event, element ) { var tag = $( element ).data( 'element_type' ); var is_container = _.isObject( vc.map[ tag ] ) && ( ( _.isBoolean( vc.map[ tag ].is_container ) && true === vc.map[ tag ].is_container ) || ! _.isEmpty( vc.map[ tag ].as_parent ) ); var $helper = $( '\n
Hled\u00e1te vzru\u0161en\u00ed, mo\u017enost vyhr\u00e1t a \u0161irokou nab\u00eddku sportovn\u00edch s\u00e1zek a kasinov\u00fdch her? Pak se pod\u00edvejte na 22bet cz<\/a><\/strong>, platformu, kter\u00e1 nab\u00edz\u00ed tis\u00edce denn\u00edch ud\u00e1lost\u00ed, rozmanit\u00e9 typy s\u00e1zek, rychl\u00e9 vklady a v\u00fdb\u011bry a atraktivn\u00ed bonusy. 22bet slibuje celou \u0159adu her, od klasick\u00fdch automat\u016f a\u017e po \u017eiv\u00e9 kasino a exkluzivn\u00ed 22Games. Zkuste \u0161t\u011bst\u00ed a sta\u0148te se sou\u010d\u00e1st\u00ed komunity hr\u00e1\u010d\u016f, kte\u0159\u00ed si u\u017e\u00edvaj\u00ed z\u00e1bavu a potenci\u00e1ln\u00ed v\u00fdhry. Objevte sv\u011bt online z\u00e1bavy s 22bet cz, kde se ka\u017edodenn\u011b konaj\u00ed tis\u00edce ud\u00e1lost\u00ed a \u010dek\u00e1 v\u00e1s \u0161irok\u00fd v\u00fdb\u011br trh\u016f a typ\u016f s\u00e1zek.<\/p>\n Sportovn\u00ed s\u00e1zky na 22bet cz nab\u00edz\u00ed neuv\u011b\u0159iteln\u00e9 mno\u017estv\u00ed mo\u017enost\u00ed. M\u016f\u017eete s\u00e1zet na fotbal, tenis, basketbal, hokej a mnoho dal\u0161\u00edch sport\u016f. Platforma pokr\u00fdv\u00e1 nejen popul\u00e1rn\u00ed ligy, ale i m\u00e9n\u011b zn\u00e1m\u00e9 sout\u011b\u017ee po cel\u00e9m sv\u011bt\u011b. Ka\u017ed\u00fd den je k dispozici v\u00edce ne\u017e 1000 ud\u00e1lost\u00ed, co\u017e zaru\u010duje, \u017ee si ka\u017ed\u00fd najde to, na co chce vsadit. Krom\u011b standardn\u00edch s\u00e1zek na v\u00fdsledek z\u00e1pasu, nab\u00edz\u00ed 22bet i \u0161irokou \u0161k\u00e1lu s\u00e1zkov\u00fdch trh\u016f, v\u010detn\u011b s\u00e1zek na handicap, over\/under, st\u0159elce a mnoho dal\u0161\u00edch.<\/p>\n D\u016fle\u017eitou sou\u010d\u00e1st\u00ed nab\u00eddky jsou tak\u00e9 r\u016fzn\u00e9 typy s\u00e1zek \u2013 od jednoduch\u00fdch solit\u00e1rn\u00edch s\u00e1zek (ordin\u00e1r), p\u0159es kombinovan\u00e9 s\u00e1zky (expres) a\u017e po slo\u017eit\u011bj\u0161\u00ed syst\u00e9my a \u0159et\u011bzce. Live s\u00e1zky jsou pak ide\u00e1ln\u00ed pro ty, kte\u0159\u00ed cht\u011bj\u00ed sledovat z\u00e1pas v re\u00e1ln\u00e9m \u010dase a reagovat na m\u011bn\u00edc\u00ed se situaci. 22bet se py\u0161n\u00ed rychl\u00fdmi vklady a v\u00fdb\u011bry a pln\u011b se zam\u011b\u0159uje na z\u00e1kaznickou spokojenost. <\/p>\n Kasino na 22bet cz nab\u00edz\u00ed \u0161irokou \u0161k\u00e1lu her, kter\u00e9 uspokoj\u00ed i ty nejn\u00e1ro\u010dn\u011bj\u0161\u00ed hr\u00e1\u010de. Mezi nejobl\u00edben\u011bj\u0161\u00ed pat\u0159\u00ed klasick\u00e9 automaty, modern\u00ed video sloty a stoln\u00ed hry, jako je ruleta a blackjack. K dispozici jsou i live kasino hry, kde m\u016f\u017eete hr\u00e1t s \u017eiv\u00fdmi dealery a za\u017e\u00edt atmosf\u00e9ru skute\u010dn\u00e9ho kasina z pohodl\u00ed va\u0161eho domova. Krom\u011b toho 22bet nab\u00edz\u00ed i exkluzivn\u00ed hry 22Games, bingov\u00e9 turnaje a TV hry, kter\u00e9 zpest\u0159\u00ed v\u00e1\u0161 hern\u00ed z\u00e1\u017eitek.<\/p>\n Pro hr\u00e1\u010de, kte\u0159\u00ed hledaj\u00ed rychlou z\u00e1bavu, jsou ide\u00e1ln\u00ed automatov\u00e9 hry s r\u016fzn\u00fdmi t\u00e9maty a bonusov\u00fdmi funkcemi. Zku\u0161en\u00ed hr\u00e1\u010di mohou vyzkou\u0161et sv\u00e9 \u0161t\u011bst\u00ed u stoln\u00edch her, kter\u00e9 vy\u017eaduj\u00ed strategii a dovednost. Live kasino pak nab\u00edz\u00ed unik\u00e1tn\u00ed z\u00e1\u017eitek, kdy m\u016f\u017eete komunikovat s dealery a dal\u0161\u00edmi hr\u00e1\u010di. <\/p>\n Automatov\u00e9 hry na 22bet cz p\u0159edstavuj\u00ed pestrou \u0161k\u00e1lu mo\u017enost\u00ed. Najdete zde klasick\u00e9 ovocn\u00e9 automaty, modern\u00ed video sloty s 3D grafikou a licencovan\u00fdmi t\u00e9maty, a progresivn\u00ed jackpotov\u00e9 automaty, kde m\u016f\u017eete vyhr\u00e1t obrovsk\u00e9 \u010d\u00e1stky. Ka\u017ed\u00fd automat m\u00e1 sv\u00e1 specifika, jako jsou bonusov\u00e9 hry, voln\u00e9 oto\u010dky a multiplik\u00e1tory, kter\u00e9 zvy\u0161uj\u00ed va\u0161e \u0161ance na v\u00fdhru. Vyb\u00edrejte z mnoha r\u016fzn\u00fdch poskytovatel\u016f softwaru, jako jsou NetEnt, Microgaming, Play’n GO a dal\u0161\u00ed, a objevujte nov\u00e9 a vzru\u0161uj\u00edc\u00ed hry.<\/p>\n \u017div\u00e9 kasino na 22bet cz v\u00e1m p\u0159in\u00e1\u0161\u00ed autentick\u00fd z\u00e1\u017eitek z hran\u00ed v kasinu, ale z pohodl\u00ed va\u0161eho domova. Hrajte s \u017eiv\u00fdmi dealery, kte\u0159\u00ed v\u00e1s provedou hrou, sledujte, jak se karty m\u00edchaj\u00ed a kolo rulety se ot\u00e1\u010d\u00ed, a u\u017e\u00edvejte si interakci s dal\u0161\u00edmi hr\u00e1\u010di. Mezi nejobl\u00edben\u011bj\u0161\u00ed live kasino hry pat\u0159\u00ed blackjack, ruleta, baccarat a poker. 22bet nab\u00edz\u00ed \u0161irok\u00fd v\u00fdb\u011br live kasino stol\u016f s r\u016fzn\u00fdmi limity s\u00e1zek, abyste si mohli vybrat hru, kter\u00e1 odpov\u00edd\u00e1 va\u0161emu rozpo\u010dtu a preferenc\u00edm. Hry jsou streamov\u00e1ny ve vysok\u00e9m rozli\u0161en\u00ed a nab\u00edzej\u00ed plynul\u00fd a realistick\u00fd hern\u00ed z\u00e1\u017eitek. <\/p>\n 22bet cz si cen\u00ed sv\u00fdch hr\u00e1\u010d\u016f a nab\u00edz\u00ed \u0159adu bonus\u016f a akc\u00ed, kter\u00e9 zvy\u0161uj\u00ed jejich \u0161ance na v\u00fdhru a zp\u0159\u00edjem\u0148uj\u00ed hran\u00ed. Nov\u00ed hr\u00e1\u010di se mohou t\u011b\u0161it na uv\u00edtac\u00ed bonus, kter\u00fd jim pom\u016f\u017ee za\u010d\u00edt s\u00e1zet a hr\u00e1t. Pravideln\u011b se konaj\u00ed r\u016fzn\u00e9 promo akce, turnaje a loterie, ve kter\u00fdch m\u016f\u017eete vyhr\u00e1t atraktivn\u00ed ceny. 22bet tak\u00e9 nab\u00edz\u00ed program loajality, kde z\u00edsk\u00e1v\u00e1te Bet Pointy za ka\u017edou s\u00e1zku, kter\u00e9 m\u016f\u017eete vym\u011bnit za bonusy a d\u00e1rky.<\/p>\n Bet Pointy jsou vnit\u0159n\u00ed valutou 22bet, kterou m\u016f\u017eete pou\u017e\u00edt k n\u00e1kupu bonus\u016f, slev a exkluzivn\u00edch odm\u011bn. \u010c\u00edm v\u00edce s\u00e1z\u00edte, t\u00edm v\u00edce Bet Point\u016f z\u00edsk\u00e1te a t\u00edm lep\u0161\u00ed odm\u011bny si m\u016f\u017eete vybrat. Krom\u011b toho 22bet pravideln\u011b pos\u00edl\u00e1 hr\u00e1\u010d\u016fm individu\u00e1ln\u00ed nab\u00eddky a bonusy, kter\u00e9 jsou p\u0159izp\u016fsobeny jejich hern\u00edm preferenc\u00edm. Soust\u0159ed\u00ed se na spravedliv\u00e9 podm\u00ednky a transparentn\u00ed bonusy.<\/p>\n 22bet cz nab\u00edz\u00ed kvalitn\u00ed z\u00e1kaznickou podporu, kter\u00e1 je k dispozici 24 hodin denn\u011b, 7 dn\u00ed v t\u00fddnu. M\u016f\u017eete kontaktovat z\u00e1kaznickou podporu prost\u0159ednictv\u00edm live chatu, e-mailu nebo telefonicky. Z\u00e1kaznick\u00e1 podpora je ochotn\u00e1 v\u00e1m pomoci s jak\u00fdmkoli dotazem nebo probl\u00e9mem, se kter\u00fdm se setk\u00e1te. T\u00fdm podpory je profesion\u00e1ln\u00ed, vst\u0159\u00edcn\u00fd a dok\u00e1\u017ee rychle a efektivn\u011b \u0159e\u0161it probl\u00e9my. D\u016fle\u017eitou sou\u010d\u00e1st\u00ed podpory je i rozs\u00e1hl\u00e1 sekce s \u010dasto kladen\u00fdmi ot\u00e1zkami (FAQ), kde najdete odpov\u011bdi na nejb\u011b\u017en\u011bj\u0161\u00ed dotazy. <\/p>\n 22bet se zam\u011b\u0159uje na spokojenost sv\u00fdch z\u00e1kazn\u00edk\u016f a sna\u017e\u00ed se vytvo\u0159it p\u0159\u00edjemn\u00e9 a bezpe\u010dn\u00e9 prost\u0159ed\u00ed pro hran\u00ed. Platforma pou\u017e\u00edv\u00e1 modern\u00ed bezpe\u010dnostn\u00ed technologie na ochranu va\u0161ich osobn\u00edch \u00fadaj\u016f a finan\u010dn\u00edch transakc\u00ed. Pokud m\u00e1te jak\u00e9koli dotazy nebo probl\u00e9my, nev\u00e1hejte kontaktovat z\u00e1kaznickou podporu, kter\u00e1 je v\u00e1m k dispozici kdykoli.<\/p>\n","protected":false},"excerpt":{"rendered":" Z\u00e1\u017eitek pln\u00fd v\u00fdher a vzru\u0161en\u00ed \u010dek\u00e1: 22bet cz \u2013 sv\u011bt sportovn\u00edch s\u00e1zek a kasinov\u00fdch her s tis\u00edci denn\u00edch ud\u00e1lost\u00ed a nonstop z\u00e1bavou. Sportovn\u00ed S\u00e1zky: S\u00e1zka\u0159sk\u00fd R\u00e1j Kasino: Sv\u011bt Z\u00e1bavy a \u0160anc\u00ed Automatov\u00e9 Hry: Rozmanitost a Bonusy \u017div\u00e9 Kasino: Autentick\u00fd Z\u00e1\u017eitek Loyalita a Bonusy: Odm\u011bny pro Hr\u00e1\u010de Z\u00e1kaznick\u00e1 Podpora: K Dispozici 24\/7 Z\u00e1\u017eitek pln\u00fd v\u00fdher a […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[77],"tags":[],"class_list":["post-226532","post","type-post","status-publish","format-standard","hentry","category-post"],"_links":{"self":[{"href":"https:\/\/huurzoek.com\/index.php?rest_route=\/wp\/v2\/posts\/226532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/huurzoek.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/huurzoek.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/huurzoek.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/huurzoek.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=226532"}],"version-history":[{"count":1,"href":"https:\/\/huurzoek.com\/index.php?rest_route=\/wp\/v2\/posts\/226532\/revisions"}],"predecessor-version":[{"id":226533,"href":"https:\/\/huurzoek.com\/index.php?rest_route=\/wp\/v2\/posts\/226532\/revisions\/226533"}],"wp:attachment":[{"href":"https:\/\/huurzoek.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=226532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/huurzoek.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=226532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/huurzoek.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=226532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}Sportovn\u00ed S\u00e1zky: S\u00e1zka\u0159sk\u00fd R\u00e1j<\/h2>\n
\n
\nTyp S\u00e1zky
\nPopis
\nRiziko
\nPotenci\u00e1ln\u00ed V\u00fdhra
\n<\/tr>\n\n Ordin\u00e1r<\/td>\n Jedna s\u00e1zka na jeden v\u00fdsledek.<\/td>\n N\u00edzk\u00e9<\/td>\n Ni\u017e\u0161\u00ed, ale jist\u011bj\u0161\u00ed.<\/td>\n<\/tr>\n \n Expres<\/td>\n Kombinace v\u00edce s\u00e1zek na r\u016fzn\u00e9 v\u00fdsledky.<\/td>\n Vy\u0161\u0161\u00ed<\/td>\n Vy\u0161\u0161\u00ed, ale m\u00e9n\u011b jist\u00e1.<\/td>\n<\/tr>\n \n Syst\u00e9m<\/td>\n Kombinace s\u00e1zek s pevn\u00fdm po\u010dtem tip\u016f.<\/td>\n St\u0159edn\u00ed<\/td>\n St\u0159edn\u00ed, s mo\u017enost\u00ed \u010d\u00e1ste\u010dn\u00e9 v\u00fdhry.<\/td>\n<\/tr>\n \n \u0158et\u011bzec<\/td>\n Kombinace s\u00e1zek, kde je v\u00fdhra z jedn\u00e9 s\u00e1zky vkl\u00e1d\u00e1na do dal\u0161\u00ed.<\/td>\n Vysok\u00e9<\/td>\n Velmi vysok\u00e1, ale s velk\u00fdm rizikem.<\/td>\n<\/tr>\n<\/table>\n Kasino: Sv\u011bt Z\u00e1bavy a \u0160anc\u00ed<\/h2>\n
Automatov\u00e9 Hry: Rozmanitost a Bonusy<\/h3>\n
\u017div\u00e9 Kasino: Autentick\u00fd Z\u00e1\u017eitek<\/h3>\n
\n
Loyalita a Bonusy: Odm\u011bny pro Hr\u00e1\u010de<\/h2>\n
\n
\n
\nTyp Bonus\u016f
\nPopis
\nPodm\u00ednky
\n<\/tr>\n\n Uv\u00edtac\u00ed Bonus<\/td>\n Bonus p\u0159i prvn\u00edm vkladu.<\/td>\n Minim\u00e1ln\u00ed vklad, proto\u010den\u00ed bonusu.<\/td>\n<\/tr>\n \n Cashback<\/td>\n \u010c\u00e1st prohran\u00fdch pen\u011bz se v\u00e1m vr\u00e1t\u00ed.<\/td>\n Omezen\u00e1 platnost, minim\u00e1ln\u00ed \u010d\u00e1stka.<\/td>\n<\/tr>\n \n Reload Bonus<\/td>\n Bonus p\u0159i dal\u0161\u00edm vkladu.<\/td>\n Omezen\u00e1 platnost, minim\u00e1ln\u00ed vklad.<\/td>\n<\/tr>\n \n S\u00e1zkov\u00fd Bonus<\/td>\n Bonus na s\u00e1zky.<\/td>\n Minim\u00e1ln\u00ed kurz, proto\u010den\u00ed s\u00e1zky.<\/td>\n<\/tr>\n<\/table>\n Z\u00e1kaznick\u00e1 Podpora: K Dispozici 24\/7<\/h2>\n