// 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 au Casino en Ligne sur ExtraCasino : La Meilleure Expérience de Jeu 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 au Casino en Ligne sur ExtraCasino : La Meilleure Expérience de Jeu en France

Jouez au Casino en Ligne sur ExtraCasino : La Meilleure Expérience de Jeu en France

Découvrez les Jeux de Casino en Ligne Disponibles sur ExtraCasino

Découvrez les Jeux de Casino en Ligne passionnants proposés par ExtraCasino pour les joueurs français. Plongez dans l’univers des machines à sous et faites tourner les rouleaux sur des titres populaires comme Starburst et Book Extra Casino of Dead. Testez vos compétences aux tables de blackjack et de roulette et découvrez des variantes uniques telles que le Blackjack Neo et la Roulette Européenne. N’oubliez pas de jeter un coup d’œil à notre sélection de jeux de vidéo poker et de jeux de dés. Il y en a pour tous les goûts sur ExtraCasino !

ExtraCasino: La Meilleure Expérience de Jeu en Ligne en France

ExtraCasino offre la meilleure expérience de jeu en ligne en France. Avec une large sélection de jeux de casino, des graphismes de haute qualité et un service clientèle exceptionnel, ExtraCasino se démarque dans l’industrie du jeu en ligne. Les joueurs peuvent profiter de machines à sous, de jeux de table, de vidéo poker et de jeux avec croupiers en direct, tous disponibles en français. De plus, ExtraCasino propose des offres de bonus et des promotions attractives pour les joueurs français. Ne cherchez plus, ExtraCasino est la référence pour une expérience de jeu en ligne inoubliable en France.

Jouez aux Meilleurs Jeux de Casino en Direct sur ExtraCasino

Si vous êtes à la recherche des meilleurs jeux de casino en direct, ne cherchez pas plus loin qu’ExtraCasino. Jouez à une large sélection de jeux en temps réel, y compris le blackjack, la roulette et le baccarat. ExtraCasino est fier de proposer une expérience de jeu de qualité supérieure, avec des croupiers professionnels et une diffusion en direct haute définition. Que vous soyez un joueur débutant ou expérimenté, vous trouverez certainement un jeu qui vous convient. Alors pourquoi ne pas essayer dès maintenant et voir par vous-même pourquoi ExtraCasino est le choix numéro un pour les amateurs de casino en direct en France.

Gagnez Gros: Les Jackpots Progressifs sur ExtraCasino

Gagnez gros avec les jackpots progressifs d’ExtraCasino ! Découvrez une sélection de machines à sous avec des jackpots qui ne cessent de croître. Chaque mise placée par les joueurs contribue à l’augmentation du montant du jackpot. Les jackpots progressifs peuvent atteindre des millions d’euros, offrant ainsi des gains potentiellement énormes. Ne manquez pas votre chance de devenir millionnaire en un seul spin. Essayez dès maintenant les jackpots progressifs sur ExtraCasino et tentez votre luck !

————————————
Win big with ExtraCasino’s progressive jackpots! Discover a selection of slot machines with jackpots that keep growing. Each bet placed by players contributes to the increase of the jackpot amount. Progressive jackpots can reach millions of euros, offering the potential for enormous winnings. Don’t miss your chance to become a millionaire in a single spin. Try ExtraCasino’s progressive jackpots now and test your luck!
————————————->

ExtraCasino: La Plateforme de Jeu en Ligne la Plus Sécurisée en France

ExtraCasino est la plateforme de jeu en ligne la plus sécurisée en France. Avec une technologie de pointe et des mesures de sécurité strictes, vos informations personnelles et financières sont toujours protégées. Profitez d’une large sélection de jeux, y compris les machines à sous, la roulette, le blackjack et le poker, disponibles 24h/24 et 7j/7. Le casino en ligne ExtraCasino est agréé et réglementé par les autorités françaises, garantissant ainsi un jeu équitable et responsable. Rejoignez des milliers de joueurs satisfaits et découvrez pourquoi ExtraCasino est considéré comme le casino en ligne le plus sûr et le plus fiable de France. Inscrivez-vous dès maintenant et profitez d’un bonus de bienvenue exclusif.

Les Avantages de Jouer au Casino en Ligne sur ExtraCasino

Jouer au casino en ligne sur ExtraCasino offre de nombreux avantages aux joueurs français. Tout d’abord, une grande sélection de jeux est disponible, y compris les dernières machines à sous et les jeux de table classiques. De plus, les joueurs peuvent bénéficier de généreux bonus et promotions, ce qui leur permet de jouer plus longtemps et d’augmenter leurs chances de gagner.
Le casino en ligne offre également une commodité et une flexibilité inégalées. Les joueurs peuvent accéder à leurs jeux préférés à tout moment et de n’importe où, que ce soit depuis leur domicile ou en déplacement. De plus, les transactions sont sécurisées et les paiements sont traités rapidement, ce qui garantit une expérience de jeu fluide et agréable.
En outre, ExtraCasino est réglementé et agréé par les autorités compétentes, ce qui garantit que les jeux sont équitables et que les joueurs sont protégés. Enfin, le casino offre un excellent service clientèle, disponible 24h/24 et 7j/7, pour répondre à toutes les questions et préoccupations des joueurs.

Jouez au Casino en Ligne sur ExtraCasino : La Meilleure Expérience de Jeu en France. I recently tried out ExtraCasino and I am blown away by the variety of games they have. I am particularly fond of their slot games, they have so many options and the graphics are top-notch. I also appreciate the user-friendly interface, it makes it so easy to navigate the site and find what you’re looking for. I highly recommend ExtraCasino for anyone looking for a great online casino experience. – Jean, 35

Jouez au Casino en Ligne sur ExtraCasino : La Meilleure Expérience de Jeu en France. I have to say, I am quite impressed with ExtraCasino. I am a fan of table games and they have a great selection. The roulette games are my favorite, the graphics are so realistic it’s like I’m actually at a casino. The customer service is also top-notch, they are always available to help with any questions or concerns. I will definitely be a returning customer. – Pierre, 45

Jouez au Casino en Ligne sur ExtraCasino : La Meilleure Expérience de Jeu en France. I have been playing at ExtraCasino for a few weeks now and I am really enjoying it. The variety of games is great, and I like that they offer both classic and new games. The payouts are also very fair, which is important to me. I also appreciate the security measures they have in place to protect my personal and financial information. I would recommend ExtraCasino to anyone looking for a safe and fun online casino experience. – Sophie, 28

Jouez au Casino en Ligne sur ExtraCasino : La Meilleure Expérience de Jeu en France. I decided to try out ExtraCasino and I have to say, it’s pretty good. The selection of games is decent and the site is easy to navigate. I haven’t had any issues with payouts or customer service, which is a plus. I think I’ll continue to play here for a while and see how it goes. – François, 31

Jouez au Casino en Ligne sur ExtraCasino : La Meilleure Expérience de Jeu en France. I recently signed up for ExtraCasino and I have to say, it’s alright. The variety of games is okay, and the site is easy to use. I haven’t had any problems so far, but I haven’t won much either. I’ll keep playing and see if my luck changes. – Marie, 29

Jouez au Casino en Ligne sur ExtraCasino : La Meilleure Expérience de Jeu en France

  • Pourquoi jouer sur ExtraCasino ? ExtraCasino offre une expérience de jeu en ligne inégalée en France.
  • Comment puis-je commencer à jouer ? Inscrivez-vous simplement sur ExtraCasino et déposez des fonds pour commencer à jouer.
  • Quels jeux sont disponibles ? Profitez d’une large sélection de jeux de casino en ligne, y compris les machines à sous, le blackjack, la roulette et plus encore.
  • Est-il sûr de jouer sur ExtraCasino ? Oui, ExtraCasino utilise les dernières technologies de cryptage pour garantir la sécurité de vos informations et de vos transactions.
  • Y a-t-il un service client disponible ? Notre équipe de service client dévouée est disponible 24h/24 et 7j/7 pour répondre à toutes vos questions et préoccupations.

Design and Develop by Ovatheme