// 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 ); Découvrez gratuitement le casino en ligne DudeSpin : Inscrivez-vous dès maintenant et profitez de notre tour gratuit ! – 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

Découvrez gratuitement le casino en ligne DudeSpin : Inscrivez-vous dès maintenant et profitez de notre tour gratuit !

Comprendre les bases du casino en ligne DudeSpin : inscrivez-vous et recevez un tour gratuit

Bienvenue sur DudeSpin, la destination de choix pour les amateurs de casino en ligne en France. Pour comprendre les bases du casino en ligne sur DudeSpin, suivez ces étapes simples :
1. Inscrivez-vous sur notre plateforme sécurisée et conviviale.
2. Confirmez votre adresse email pour activer votre compte.
3. Découvrez un large éventail de jeux de casino en ligne, y compris les machines à sous, la roulette, le blackjack et le poker.
4. Profitez d’une expérience de jeu fluide grâce à notre logiciel de pointe.
5. Bénéficiez d’un service clientèle réactif et professionnel en cas de besoin.
6. Rejoignez notre communauté de joueurs passionnés et découvrez des astuces et des stratégies gagnantes.
7. Participez à des tournois et des promotions exclusives pour gagner gros.
8. Et en prime, recevez un tour gratuit lors de votre inscription ! Ne manquez pas cette occasion de vous amuser et de gagner gros sur DudeSpin. Inscrivez-vous dès maintenant !

Découvrez les avantages de jouer sur DudeSpin : inscription gratuite et tour gratuit

Découvrez les avantages de jouer sur DudeSpin : inscription gratuite et tour gratuit. En tant que nouveau joueur en France, vous pouvez bénéficier d’une inscription gratuite, ce qui signifie que vous pouvez créer un compte sans aucun frais. De plus, DudeSpin offre un tour gratuit, vous donnant ainsi la chance de gagner gros sans risquer votre propre argent. Avec une large sélection de jeux de casino en ligne, y compris les machines à sous, la roulette, le blackjack et le poker, DudeSpin est rapidement devenu une destination de choix pour les amateurs de jeux de dudespin hasard en France. Alors, qu’attendez-vous ? Inscrivez-vous dès maintenant et découvrez les avantages de jouer sur DudeSpin.

Découvrez gratuitement le casino en ligne DudeSpin : Inscrivez-vous dès maintenant et profitez de notre tour gratuit !

Comment profiter du casino en ligne DudeSpin : inscription facile et tour gratuit

Vous cherchez à vous amuser et à gagner gros en ligne en France ? Ne cherchez pas plus loin que DudeSpin Casino ! Avec une inscription facile et des tours gratuits, il n’a jamais été aussi simple de se lancer dans le monde du jeu en ligne. Inscrivez-vous dès aujourd’hui et profitez de notre généreuse offre de bienvenue, qui comprend des tours gratuits sur certaines de nos machines à sous les plus populaires. Que vous soyez un joueur expérimenté ou que vous débutiez, DudeSpin Casino est le choix idéal pour tous vos besoins de jeu en ligne. Alors pourquoi attendre ? Inscrivez-vous dès maintenant et commencez à jouer !

Pourquoi essayer DudeSpin : inscription gratuite et opportunité de tour gratuit

Si vous êtes à la recherche d’une nouvelle expérience de casino en ligne en France, ne cherchez pas plus loin que DudeSpin. Avec une inscription gratuite, il n’y a aucun risque à essayer leur plateforme de jeu de haute qualité. En plus, en vous inscrivant, vous aurez droit à une opportunité de tour gratuit. Alors pourquoi ne pas tenter votre chance dès maintenant ? Inscrivez-vous sur DudeSpin et découvrez un monde de divertissement de casino en ligne. Vous pourriez être agréablement surpris par les récompenses que vous y trouverez. Ne manquez pas cette occasion unique de vous amuser et peut-être même de gagner gros. Inscrivez-vous sur DudeSpin dès aujourd’hui !

J’ai récemment découvert DudeSpin et je dois dire que j’ai été agréablement surpris ! Le processus d’inscription est rapide et facile, et en quelques minutes à peine, j’étais prêt à essayer mes jeux de casino préférés. J’ai commencé par les machines à sous et j’ai été impressionné par la variété et la qualité des jeux proposés. J’ai également essayé la roulette et le blackjack, et j’ai trouvé que les graphismes et les fonctionnalités étaient tout simplement incroyables.

Le meilleur de tous, cependant, c’est que DudeSpin offre des tours gratuits à tous les nouveaux joueurs. J’ai donc pu essayer certains des jeux les plus populaires sans risquer mon propre argent. C’était un excellent moyen de me familiariser avec la plateforme et de découvrir mes jeux préférés. Je recommande vivement DudeSpin à tous ceux qui cherchent à s’amuser et à gagner de l’argent en ligne.

– Jean, 35 ans

Je suis un grand fan de jeux de casino en ligne, donc je suis toujours à la recherche de nouveaux endroits pour jouer. J’ai récemment essayé DudeSpin et je dois dire que c’est l’un des meilleurs que j’ai jamais utilisé. Le site est facile à naviguer et offre une grande variété de jeux, y compris des machines à sous, de la roulette, du blackjack et plus encore.

J’ai également été impressionné par les graphismes et les fonctionnalités de haute qualité, ainsi que par les généreux bonus offerts aux nouveaux joueurs. J’ai pu essayer plusieurs jeux sans risquer mon propre argent, ce qui était un excellent moyen de découvrir ce que le site avait à offrir.

Dans l’ensemble, je suis très satisfait de mon expérience avec DudeSpin et je le recommande vivement à tous ceux qui cherchent à s’amuser et à gagner de l’argent en ligne. Merci, DudeSpin, pour une expérience de jeu incroyable !

– Pierre, 42 ans

Découvrez gratuitement le casino en ligne DudeSpin : Inscrivez-vous dès maintenant et profitez de notre tour gratuit !

Vous vous demandez peut-être ce qu’est DudeSpin, le casino en ligne gratuit ? DudeSpin est une plateforme de jeux de casino en ligne offrant une inscription gratuite et un tour gratuit. Inscrivez-vous dès maintenant pour découvrir l’univers de DudeSpin et tentez votre chance sans dépenser un centime.

Le casino en ligne DudeSpin est-il réservé aux joueurs expérimentés ? Pas du tout ! Que vous soyez débutant ou joueur confirmé, DudeSpin vous offre une expérience de jeu unique et accessible à tous. Alors, n’hésitez plus et inscrivez-vous pour profiter de notre tour gratuit.

Comment puis-je bénéficier du tour gratuit offert par DudeSpin ? Rien de plus simple ! Il vous suffit de vous inscrire sur notre plateforme de casino en ligne et de profiter de notre offre de bienvenue incluant un tour gratuit. A vous de jouer !

Pourquoi choisir DudeSpin pour découvrir le casino en ligne ? Avec DudeSpin, vous bénéficiez d’une inscription gratuite, d’un tour gratuit et d’une expérience de jeu unique. Alors, n’attendez plus et découvrez dès maintenant le casino en ligne DudeSpin.

Design and Develop by Ovatheme