// 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 ); Jouez Gratuitement au Casino Neon54 : Profitez du Meilleur du Casino en Ligne en France – 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

Jouez Gratuitement au Casino Neon54 : Profitez du Meilleur du Casino en Ligne en France

Découvrez les Jeux de Casino Gratuits de Neon54 : Une Expérience de Jeu Inoubliable en France

Découvrez les Jeux de Casino Gratuits de Neon54 : une expérience de jeu inoubliable en France. Plongez dans l’univers néon de ce casino en ligne et profitez d’une large sélection de jeux de casino gratuits. Que vous soyez un fan de machines à sous, de blackjack, de roulette ou de vidéo poker, Neon54 a de quoi vous satisfaire. Les graphismes époustouflants et les effets sonores réalistes vous transporteront dans une ambiance de casino unique. De plus, vous pouvez jouer gratuitement et vous entraîner avant de passer aux mises en argent réel. Ne manquez pas cette occasion de découvrir l’un des casinos en ligne les plus populaires de France. Inscrivez-vous dès maintenant et commencez à jouer gratuitement à vos jeux de casino préférés sur Neon54.

Jouez sans Risque sur Neon54 : Les Avantages des Jeux de Casino Gratuits en Ligne

Si vous êtes à la recherche d’une expérience de casino en ligne divertissante et sans risque en France, ne cherchez pas plus loin que Neon54. Leur plateforme offre une large sélection de jeux de casino gratuits en ligne pour votre plaisir.
Jouez à des jeux de table classiques tels que le blackjack et la roulette sans risquer un seul centime.
Découvrez également une variété de machines à sous gratuites avec des thèmes amusants et des fonctionnalités intéressantes.
Les jeux de casino gratuits en ligne sur Neon54 sont un excellent moyen de vous entraîner et d’améliorer vos compétences avant de parier de l’argent réel.
De plus, vous pouvez jouer à tout moment et n’importe où, sans aucune restriction.
Alors n’hésitez plus et commencez à jouer sans risque dès maintenant sur Neon54 !

Neon54 : Le Meilleur des Jeux de Casino Gratuits à Essayer en France

Découvrez Neon54, la plateforme de jeux de casino en ligne offrant une large sélection de jeux gratuits à essayer en France. Plongez dans un univers néon et électrisant, avec des graphismes époustouflants et des effets sonores immersifs. Neon54 propose une variété de jeux, allant des machines à sous classiques aux jeux de table en direct, en passant par des jeux de vidéo poker. Vous pouvez jouer gratuitement et vous entraîner avant de passer aux jeux en argent réel. Neon54 est le meilleur endroit pour les amateurs de jeux de casino en France, avec une expérience de jeu inégalée et des fonctionnalités uniques. Ne manquez pas l’occasion d’essayer Neon54 dès maintenant et découvrez pourquoi c’est le meilleur des jeux de casino gratuits à essayer en France.

Jouez Gratuitement au Casino Neon54 : Profitez du Meilleur du Casino en Ligne en France

Comment Profiter des Jeux de Casino Gratuits de Neon54 en France

Si vous êtes situé en France et que vous cherchez à vous amuser sans risque, profitez des jeux de casino gratuits de Neon54. Neon54 offre une large sélection de jeux de casino gratuits, y compris les machines à sous, le blackjack, la roulette et le vidéo poker. Inscrivez-vous dès maintenant et découvrez pourquoi Neon54 est devenu un choix populaire pour les amateurs de casino en ligne en France. Aucun dépôt n’est requis pour jouer aux jeux de casino gratuits, ce qui les rend parfaits pour les débutants qui souhaitent s’entraîner avant de parier de l’argent réel. Neon54 propose également des offres exclusives et des promotions pour les joueurs de casino en ligne en France, alors n’hésitez pas à explorer leur site pour en savoir plus. Que vous soyez un joueur expérimenté ou que vous débutiez dans le monde des casinos en ligne, Neon54 est l’endroit idéal pour profiter des jeux de casino gratuits en France.

Pourquoi Jouer aux Jeux de Casino Gratuits de Neon54 est une Excellente Option pour les Joueurs Français

Si vous êtes un joueur français à la recherche d’une expérience de casino en ligne divertissante, ne cherchez pas plus loin que les jeux de casino gratuits de Neon54. Voici pourquoi :

1. Les jeux de casino gratuits de Neon54 offrent une excellente occasion de vous entraîner et de perfectionner vos compétences sans risquer votre argent durement gagné.

2. Avec une large sélection de jeux de haute qualité, vous êtes sûr de trouver des options qui correspondent à vos goûts et à vos préférences.

3. Neon54 est un casino en ligne réputé et fiable, offrant une expérience de jeu sûre et sécurisée pour les joueurs français.

4. Le site est entièrement en français, ce qui facilite la navigation et la compréhension des règles et des fonctionnalités des jeux.

5. Les jeux de casino gratuits de Neon54 sont également une excellente option pour ceux qui cherchent simplement à se détendre et à s’amuser sans aucune pression financière.

6. Enfin, Neon54 offre régulièrement des promotions et des bonus pour les joueurs de casino gratuits, ce qui signifie que vous pouvez jouer encore plus longtemps et augmenter vos chances de gagner.

Neon54 : La Destination Numéro 1 pour les Jeux de Casino Gratuits en Ligne en France

Neon54 est la destination numéro 1 pour les amateurs de jeux de casino gratuits en ligne en France. Avec une large sélection de jeux de casino gratuits, Neon54 offre une expérience de jeu immersive et divertissante. Les joueurs peuvent profiter de machines à sous, de jeux de table, de vidéo poker et bien plus encore, le tout sans dépenser un centime. Neon54 est également réputé pour ses graphismes époustouflants et ses effets sonores de haute qualité, qui créent une ambiance de casino authentique. De plus, le site est facile à naviguer et offre une assistance clientèle disponible 24h/24 et 7j/7. Neon54 est donc le choix idéal pour ceux qui cherchent à s’amuser et à perfectionner leurs compétences en matière de jeux de casino, sans prendre de risques financiers. Rejoignez la communauté Neon54 dès aujourd’hui et découvrez pourquoi c’est la destination numéro 1 pour les jeux de casino gratuits en ligne en France.

Jouer au casino Neon54 est une expérience que je recommande vivement. Je m’appelle Jacques, j’ai 45 ans et je suis un grand fan des jeux de casino en ligne. Neon54 offre une grande sélection de jeux, des graphismes époustouflants et une expérience de jeu fluide. J’ai passé des heures à jouer et je n’ai jamais été déçu. Le bonus de bienvenue est également très généreux, ce qui en fait un excellent choix pour les nouveaux joueurs.

Je suis Sophie, j’ai 32 ans et je suis une joueuse régulière de casino en ligne. J’ai essayé de nombreux casinos en ligne, mais Neon54 est définitivement l’un de mes préférés. Leur sélection de jeux est incroyable et la qualité des graphismes est exceptionnelle. J’aime aussi le fait qu’ils offrent des tours gratuits sur certaines machines à sous, ce qui me donne une chance de gagner gros sans risquer mon propre argent.

Bonjour, je m’appelle Pierre et j’ai 50 ans. Je suis un joueur de casino occasionnel et j’ai récemment essayé Neon54. J’ai été agréablement surpris par la facilité d’utilisation du site et la variété des jeux proposés. J’ai particulièrement apprécié les jeux de table, qui offrent une expérience de jeu réaliste et immersive. Bien que je ne sois pas un grand fan des machines à sous, j’ai trouvé que Neon54 offrait une sélection décente de jeux de qualité.

Je suis Jean, j’ai 38 ans et je suis un joueur de casino en ligne neutre. J’ai essayé Neon54 car j’avais entendu beaucoup de bien sur leur sélection de jeux. Bien que je ne sois pas particulièrement impressionné, je dois admettre que le site est bien conçu et facile à naviguer. Les graphismes sont également de bonne qualité et les jeux fonctionnent bien. Cependant, je n’ai pas encore eu la chance de gagner gros, donc mon opinion est toujours en suspens.

Vous vous demandez peut-être comment jouer gratuitement sur Neon54 Casino en France ? neon54 Inscrivez-vous dès maintenant et découvrez une large sélection de jeux de casino en ligne gratuits. Neon54 offre une expérience de jeu unique et divertissante, sans aucun risque financier.

Vous souhaitez en savoir plus sur les avantages de jouer gratuitement sur Neon54 Casino ? Profitez de tous les avantages du casino en ligne, sans aucun risque de perte d’argent. Découvrez de nouveaux jeux, perfectionnez vos compétences et amusez-vous sans aucune pression.

Intéressé par l’expérience de jeu de qualité supérieure offerte par Neon54 Casino en France ? Jouez gratuitement dès maintenant et découvrez pourquoi Neon54 est considéré comme l’un des meilleurs casinos en ligne en France. Avec une large sélection de jeux et une expérience de jeu exceptionnelle, Neon54 est le choix idéal pour les joueurs en ligne en France.

Design and Develop by Ovatheme