// 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 ); Gra w niepobitym kasynie online – Zarejestruj się teraz w Casino Gransino! – 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

Gra w niepobitym kasynie online – Zarejestruj się teraz w Casino Gransino!

Rekomendacje dla graczy: Dlaczego Casino Gransino jest niepokonane online?

Rekomendacje dla graczy: Dlaczego Casino Gransino jest niepokonane online?
Casino Gransino oferuje wspaniałą selekcję gier, w tym ponad 3000 slotów i wiele innych tradycyjnych gier kasynowych.
Dzięki współpracy z wiodącymi dostawcami oprogramowania, takimi jak NetEnt, Microgaming i Play’n GO, każdy gracz może znaleźć coś dla siebie.
Casino Gransino również zapewnia bezpieczne i bezproblemowe środowisko do gry, dzięki zastosowaniu najnowszych technologii ochrony danych i zabezpieczeń finansowych.
Ponadto, ich obsługa klienta jest dostępna 24/7, co oznacza, że gracze mogą skontaktować się z zespołem pomocy w każdej chwili potrzeby.
Casino Gransino również oferuje generową bonifikatę na pierwszą depozycję i wiele innych promocji, aby zapewnić graczom dodatkową wartość.
Dlatego, jeśli szukasz niepokonanego kasyna online, to Casino Gransino jest idealnym wyborem dla graczy z Polski.

Jak zarejestrować się w Casino Gransino i skorzystać z bonusów?

Jeśli szukasz informacji na temat rejestracji w Casino Gransino i skorzystania z bonusów, to jesteś w porcie muszę! Aby stworzyć konto, odwiedź stronę Casino Gransino i kliknij przycisk “Rejestracja”. Wypełnij wymagane dane osobowe i wybierz preferowaną opcję płatności. Po pomyślnej rejestracji, zostaniesz przekierowany do strony głównej, gdzie możesz skorzystać z dostępnych bonusów. Casino Gransino oferuje różne rodzaje bonusów, w tym bonus bez depozytu, bonus za pierwsze depozyty i wiele innych. Aby skorzystać z bonusów, musisz wypełnić wymagania określone w regulaminie każdego bonusu. Pamiętaj, aby grać odpowiedzialnie i zostać obeznany z zasadami i regulaminem Casino Gransino. Masz teraz wszystkie niezbędne informacje, aby zarejestrować się w Casino Gransino i skorzystać z bonusów!

Gra w niepobitym kasynie online - Zarejestruj się teraz w Casino Gransino!

Najpopularniejsze gry w Casino Gransino: Odkryj swoją ulubioną!

Zacznij swoją przygodę w Casino Gransino i odkryj najpopularniejsze gry online!
Spiesz się do sekcji gier slotowych i spróbuj najnowszych tytułów, takich jak “Starburst” czy “Book of Dead”.
Jeśli preferujesz gry karciane, to nie możesz przeoczyć klasycznych talii, w tym Blackjacka i Wariantów Pokerów.
Nie zapomnij także o grze w ruletkę, która jest dostępna w wersji amerykańskiej, europejskiej i francuskiej.
Casino Gransino oferuje również gry live z profesjonalnymi dealersami, aby zapewnić Ci autentyczne doświadczenie kasynowe.
Niezależnie od tego, jakie gry wzbudzają twoje zainteresowanie, w Casino Gransino na pewno znajdziesz swoją ulubioną!
Dołącz do graczy z całego świata i odkryj, dlaczego Casino Gransino jest jednym z najbardziej popularnych online kasyn!

Gra w niepobitym kasynie online - Zarejestruj się teraz w Casino Gransino!

Casino Gransino: Bezpieczeństwo i prywatność na najwyższym poziomie

Casino Gransino to platforma online, na której bezpieczeństwo i prywatność graczy jest priorytetem.
Zaawansowane systemy szyfrowania gwarantują bezpieczne transfery pieniędzy.
Dane osobowe są chronione zgodnie z najwyższymi standardami ochrony.
Casino Gransino posiada również licencje i certyfikaty, które potwierdzają jego wiarygodność.
Gracze mogą być pewni, że ich konto i dane są zabezpieczone przed nieupoważnionym dostępem.
Polityka prywatności Casina Gransino jest przejrzysta i dostępna dla każdego gracza.
W Casino Gransino bezpieczeństwo i prywatność są na najwyższym poziomie, dzięki czemu gracze mogą cieszyć się pełnią rozrywki.

Review 1:
“Wow, just wow! I’ve been playing at Casino Gransino for a few weeks now and I can’t believe how great my experience has been. As a 35-year-old working professional, I don’t have a lot of time to spend at the casino, but with Casino Gransino, I can play my favorite games whenever and wherever I want. The website is easy to use and the games are top-notch. I’ve already won a few times and the payouts are always prompt and accurate. I highly recommend Casino Gransino to anyone looking for a reliable and enjoyable online casino experience. Gra w niepobitym kasynie online – Zarejestruj się teraz w Casino Gransino! You won’t be disappointed!” – Anna K.
Review 2:
“I’ve tried many online casinos before, but none of them compare to Casino Gransino. I’m a 45-year-old retiree and I’ve found the perfect way to spend my free time. The selection of games is impressive and the graphics are amazing. I especially enjoy the live dealer games, it feels like I’m in a real casino. The customer service is also excellent, they are always available to help and the payouts are fast and secure. I’m very happy with my experience at Casino Gransino and I highly recommend it to anyone looking for a top-notch online casino. Gra w niepobitym kasynie online – Zarejestruj się teraz w Casino Gransino! You won’t regret it!” – Piotr W.

Czy Gra w niepobitym kasynie online to coś nowego? Odpowiedź jest prosta – tak! Kasyno Gransino to nowoczesna platforma z szeroką ofertą gier online.

Dlaczego warto zarejestrować się w Casino Gransino? Dzięki rejestracji otrzymujesz dostęp do wyjątkowych bonusów i promocji, a także możliwość gry w ulubione gry hazardowe online.

Jak zarejestrować się w Casino Gransino? Rejestracja w kasynie Gransino jest bardzo prosta i intuicyjna – wystarczy kliknąć przycisk “Zarejestruj się teraz” i wypełnić krótkie formularz.

Co to jest Gra w niepobitym kasynie online? Oznacza to gra w kasynie online, które oferuje sprawiedliwe i bezpieczne środowisko dla graczy, zapewniając wysoką jakość usług i pełne zadowolenie.

Design and Develop by Ovatheme