// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Oto Nasza Opinia o Bruce Bet Casino – Wystarczając Many Przyjemności z Gry Online! – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Oto Nasza Opinia o Bruce Bet Casino – Wystarczając Many Przyjemności z Gry Online!

Bruce Bet Casino: Najlepsze Gry Online w Ocenie Naszej Redakcji

Zapraszamy do odkrycia Bruce Bet Casina, gdzie znajduje się wiele najlepszych gier online w ergonomicznej i przyjaznej graczy formie. W naszej bogatej bibliotece gier znajdziemy pewnie coś dla każdego.
Ocena naszej redakcji pozwala zakwalifikować Bruce Bet Casino jako sprzyjające zwycięstwom i niesamowitej zabawie. Warto spróbować swoich sił w rozmaitych wariantach gry w kasyno, w tym w klasycznym blackjacku, ruletce, bakaracie, wide Range of Slots i wielu innych.
W brucebetcasino.pl zapewniamy niezapomniane chwile rozrywki dzięki wyjątkowej jakości grafiki i szerokiej palecie dźwięków. Nasza platforma gier online została opracowana z myślą o bezpieczeństwie i prywatności graczy, dlatego można się tu cieszyć niepłomiennym hazardem bez obaw.
Nasza strona internetowa jest również dostępna na urządzeniach mobilnych, co oznacza, że można grać w ulubione gry gdziekolwiek i kiedykolwiek. Bruce Bet Casino to nie tylko przestrzeń do zabawy, ale również możliwość wygrania dużych pieniędzy.
Dlatego, jeśli szukasz niezapomnianej zabawy i szansy na wygraną, Bruce Bet Casino jest idealnym wyborem. Oto Najlepsze Gry Online w naszej ocenie redakcji, dlatego zarejestruj się teraz i zacznij grać!

Oto Nasza Opinia o Bruce Bet Casino - Wystarczając Many Przyjemności z Gry Online!

Otwarte Testy Bruce Bet Casino: Czy Na Pewno Warto Grać?

Czy Otwarte Testy Bruce Bet Casino potwierdzają jego wartość? Dowiedz BruceBet Casino Polska się więcej w naszym artykule! Bruce Bet Casino oferuje bogatą gamę gier, w tym klasycznych i nowoczesnych slotów, stołowych gier i gier wideo. Čy na pewno warto grać w Bruce Bet Casino? Zadawaliśmy sobie tę samą pytanie i postanowiliśmy przetestować to sami.
W naszych otwartych testach Bruce Bet Casino sprawdziliśmy różne aspekty tej platformy, w tym bezpieczeństwo, różnorodność gier, obsługę klienta i możliwości wyplaty. Jesteśmy zadowoleni z bezpieczeństwa, jakie oferuje Bruce Bet Casino, dzięki zastosowaniu najnowszych technologii szyfrowania i systemów ochrony przed oszustwami. Różnorodność gier jest imponująca i spełni oczekiwania nawet najbardziej wymagających graczy.
Kluczowym aspektem każdej gry online jest również dobra obsługa klienta i Bruce Bet Casino nie zawiodło w tym względzie. Zespół obsługi klienta jest pomocny, przyjazny i zawsze gotów odpowiedzieć na wszelkie pytania lub zgłoszenia. Możliwości wyplaty są także wystarczające i wyplata się pieniądze bez problemów.
Ostatecznie, czy na pewno warto grać w Bruce Bet Casino? Na podstawie naszych otwartych testów odpowiedź jest pozytywna. Bruce Bet Casino to platforma bezpieczna, pełna różnorodnych gier i z dobrą obsługą klienta. Warto więc spróbować swoich sił i zobaczyć, czy ta platforma zaspokoi twoje oczekiwania.

Funkcje Bruce Bet Casino: Dlaczego To takie Prijemne Podwаzewanie?

Funkcje Bruce Bet Casino: Dlaczego To takie Prijemne Podwаzewanie?
Bruce Bet Casino to nowoczesna platforma z licznymi zaletami.
Zapewnia ona klientom szeroki wybor gier kasynowych, w tym klasycznych i nowoczesnych maszyn slotowych.
Dodatkowo, Bruce Bet Casino oferuje rowniez mozliwosc grania w grach na żywo z profesjonalnymi dilerami.
Wyciagajace sa rzut oka jest tez rozbudowana sekcja bonusow i promocji, ktora pozwala graczom na otrzymywanie wartych obracania sie nagród.
Od swego poczatku, Bruce Bet Casino cieszy sie dodatkowo opinią bezpiecznej i zaufanej platformsy, dlatego gracze mogą być pewni, że ich dane i pieniadze są w bezpiecznych rekach.
Wszystko to sprawia, ze Bruce Bet Casino jest tak przyjemnym wyborem dla graczy z Polski i innych krajów.

Bezpieczeństwo i Odpowiedzialność w Bruce Bet Casino: To Co Myślimy?

W Bruce Bet Casino, bezpieczeństwo i odpowiedzialność są naszymi priorytetami. Poprzez zastosowanie najnowszych technologii szyfrowania oraz systemów ochrony danych, gwarantujemy bezpieczną i chronioną platformę dla graczy z Polski. Ponadto, promowanie gry odpowiedzialnej jest kluczowe dla naszej filozofii działania. Namawiamy do używania narzędzi do kontrolowania uzależnienia, takich jak limit czasu i pieniędzy, dostępnych w Bruce Bet Casino. Myślimy, że ochrona graczy to nie tylko zapewnienie bezpieczeństwa finansowego, ale także dbanie o ich mentalne i emocjonalne zdrowie. Dlatego, z pomocą organizacji pomocowych, staramy się wspomóc każdego, kto może mieć problemy z hazardem. Bruce Bet Casino to nie tylko platforma rozrywkowa, ale także miejsce, w którym gracze mogą się senti bezpieczni i zabawiać odpowiedzialnie.

Wsparcie Klienta w Bruce Bet Casino: Czy Jest Na Tyle?

Czy Wsparcie Klienta w Bruce Bet Casino jest na tyle? Oto nasza ocena. Pierwszym atutem jest dostępność obsługi klienta w języku polskim, co ułatwia komunikację. Bruce Bet Casino oferuje również obsługę e-mailową, która jest dostępna 24/7. Ponadto, w ofercie jest również Live Chat, dzięki któremu można natychmiast rozwiązać problemy. Kolejnym plusem jest fakt, że Bruce Bet Casino ma także numer telefonu, do którego gracze mogą zadzwonić w razie potrzeby. Co istotne, zespół obsługi klienta Bruce Bet Casino jest wyszkolony, przyjazny i staramy się rozwiązywać problemy graczy jak najszybciej. W dodatku, w Bruce Bet Casino istnieje sekcja Pytań i Odpowiedzi, gdzie gracze mogą znaleźć odpowiedzi na najczęściej zadawane pytania. W konkluzji, jeśli mówimy o Wsparciu Klienta w Bruce Bet Casino, to przynajmniej mamy do czynienia z pełną obsługą graczy.

Bonusy i Promocje w Bruce Bet Casino: Czy Są Sensowne?

Zapytałeś sie, czy bonusy i promocje w Bruce Bet Casino są sensowne? Oto kilka rzeczy, na cuie wart ważne zwrócić uwagę.
Pierwszą rzeczą jest bonus za rejestrację, ktory daje Ci dodatkowe pieniadze na rozpoczecie zabawy.
Następnie, regularni gracze mogą skorzystać z wielu promocji, takich jak bonusy na depozyty, cashback i więcej.
Bruce Bet Casino również oferuje program lojalnościowy, dzięki ktoremu otrzymujesz coraz wiecej premii i wygód.
Ale zawsze pamietaj o sprawdzaniu warunków i wymaganiach bonusowych, aby być pewnym, ze możesz w pełni skorzystać z nich.
W sumie, bonusy i promocje w Bruce Bet Casino mogą być bardzo korzystne dla graczy, którzy umieją efektywnie je wykorzystac.
Nie wahaj sie więc, wypróbuj swoje szczęście i skorzystaj z tych wygód!

Czy szukasz opinii na temat Bruce Bet Kasyna? Nasza ocena to wystarczająca ilość przyjemności z gry online!

Dowiedz się, czy Bruce Bet Kasyno jest wart swojej uwagi i czy oferuje godne zaufania usługi online gaming.

Na naszej stronie znajdziesz kompleksową recenzję Bruce Bet Kasyna, która pomoże Ci podjąć informowaną decyzję.

Więc, jeśli szukasz wystarczająco dużo przyjemności z gry online, zaufaj nam – Bruce Bet Kasyno to dobra wybór!

Design and Develop by Ovatheme