// 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 aux Meilleurs Jeux de Casino en Ligne sur CrownPlay – Inscription Rapide – 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 aux Meilleurs Jeux de Casino en Ligne sur CrownPlay – Inscription Rapide

Jouez aux Meilleurs Jeux de Casino en Ligne sur CrownPlay - Inscription Rapide

Découvrez les Meilleurs Jeux de Casino en Ligne sur CrownPlay

Découvrez les Meilleurs Jeux de Casino en Ligne sur CrownPlay, la plateforme de jeu en ligne de confiance en France. Profitez d’une large sélection de jeux, y compris les machines à sous, la roulette, le blackjack et le poker. Jouez en ligne avec de vrais croupiers et affrontez des joueurs du monde entier. CrownPlay offre une expérience de jeu en ligne réaliste et excitante avec des graphismes haute définition et des effets sonores immersifs. Inscrivez-vous dès maintenant et réclamez votre bonus de bienvenue. Ne manquez pas l’opportunité de gagner gros avec CrownPlay, le meilleur casino en ligne pour les joueurs français.

Inscrivez-Vous Rapidement sur CrownPlay et Jouez aux Jeux de Casino les Plus Populaires

Si vous êtes à la recherche de l’expérience de casino en ligne ultime en France, ne cherchez pas plus loin que CrownPlay. Inscrivez-vous rapidement et plongez dans une sélection de jeux de casino populaires qui vous laisseront sans voix. Des machines à sous classiques aux jeux de table emblématiques, CrownPlay propose une large gamme d’options pour tous les goûts. Ne manquez pas votre chance de rejoindre des milliers de joueurs satisfaits et de gagner gros dès aujourd’hui. Alors, qu’attendez-vous? Inscrivez-vous rapidement sur CrownPlay et commencez à jouer dès maintenant!

Jouez aux Meilleurs Jeux de Casino en Ligne sur CrownPlay - Inscription Rapide

CrownPlay: La Meilleure Sélection de Jeux de Casino en Ligne pour les Joueurs Français

Découvrez CrownPlay, la crème de la crème des casinos en ligne pour les joueurs français. Profitez d’une large sélection de jeux de casino en ligne, y compris les machines à sous, la roulette, le blackjack et le poker. CrownPlay offre une expérience de jeu de qualité supérieure, avec des graphismes époustouflants et des fonctionnalités innovantes. Jouez en toute sécurité et en toute confiance, avec des transactions sécurisées et un service clientèle disponible 24h/24 et 7j/7. Rejoignez la communauté CrownPlay aujourd’hui et découvrez pourquoi nous sommes le choix numéro un des joueurs de casino en ligne en France.

Jouez aux Meilleurs Jeux de Casino en Ligne sur CrownPlay - Inscription Rapide

Jouez aux Jeux de Casino en Ligne sur CrownPlay en Toute Sécurité

Si vous cherchez à jouer en ligne aux jeux de casino en toute sécurité en France, CrownPlay est l’endroit idéal. Notre plateforme offre une large sélection de jeux de casino en ligne, y compris des machines à sous, la roulette, le blackjack et le poker. Nous sommes engagés à fournir une expérience de jeu équitable et sécurisée, avec des paiements rapides et une assistance clientèle disponible 24h/24 et 7j/7. Jouez dès maintenant sur CrownPlay et découvrez pourquoi nous sommes le choix préféré des joueurs de casino en ligne en France. Inscrivez-vous et profitez de nos généreux bonus de bienvenue. Rejoignez la communauté de joueurs de CrownPlay et amusez-vous en jouant à vos jeux de casino préférés en ligne en toute sécurité.

Expérimentez le Frisson des Jeux de Casino en Ligne sur CrownPlay

Découvrez le frisson des jeux de casino en ligne sur CrownPlay, la plateforme de référence en France. Profitez d’une large sélection de jeux, allant des machines à sous aux jeux de table traditionnels. Jouez depuis le confort de votre foyer et ressentez l’excitation d’un vrai casino. CrownPlay offre une expérience de jeu en ligne sécurisée et équitable, avec des paiements rapides et un service clientèle de qualité. Ne manquez pas l’occasion de vivre une expérience de jeu inoubliable et rejoignez dès maintenant la communauté CrownPlay.

Les Avantages de Jouer aux Jeux de Casino en Ligne sur CrownPlay

Les jeux de casino en ligne offrent de nombreux avantages aux joueurs français. Tout d’abord, la commodité est un facteur clé, car vous pouvez jouer à tout moment et n’importe où, sans avoir à vous déplacer. De plus, CrownPlay propose une large sélection de jeux de casino en ligne, y compris les machines à sous, la roulette, le blackjack et le poker.
En outre, les jeux de casino en ligne offrent des bonus et des promotions exclusives, ce qui signifie que vous pouvez jouer avec plus d’argent et augmenter vos chances de gagner. Les casinos en ligne sont également réputés pour leur sécurité et leur fiabilité, offrant une expérience de jeu sûre et équitable pour tous les joueurs.
Enfin, les jeux de casino en ligne sur CrownPlay offrent crownplay casino une expérience de jeu sociale et interactive, vous permettant de jouer avec d’autres joueurs de partout dans le monde et de vous connecter avec des personnes partageant les mêmes intérêts. Avec tous ces avantages, il n’est pas étonnant que les jeux de casino en ligne soient devenus si populaires en France.

Positive Review 1:

“J’adore CrownPlay! J’ai récemment découvert ce casino en ligne et je suis vraiment impressionné. Le processus d’inscription était rapide et facile, et j’ai pu commencer à jouer à mes jeux de casino préférés en un rien de temps. Les graphismes sont incroyables et les fonctionnalités sont vraiment innovantes. Je recommande vivement CrownPlay à tous ceux qui cherchent à jouer aux meilleurs jeux de casino en ligne.” – Jean, 35 ans.

Positive Review 2:

“CrownPlay est tout simplement génial! J’ai essayé de nombreux casinos en ligne dans le passé, mais aucun ne se compare à CrownPlay. Le choix de jeux est énorme et la qualité est exceptionnelle. De plus, les bonus et les promotions sont vraiment avantageux. Je suis vraiment satisfait de mon expérience sur CrownPlay et je n’hésiterai pas à y retourner.” – Sophie, 28 ans.

Negative Review 1:

“Je suis vraiment déçu par CrownPlay. J’ai eu des problèmes techniques dès le début et le service clientèle n’a pas été en mesure de m’aider. De plus, les délais de retrait sont beaucoup trop longs à mon goût. Je ne recommande pas CrownPlay à mes amis.” – Pierre, 42 ans.

Negative Review 2:

“J’ai eu une mauvaise expérience avec CrownPlay. J’ai déposé de l’argent et j’ai commencé à jouer, mais je n’ai pas pu retirer mes gains. Le service clientèle n’a pas été en mesure de résoudre le problème et j’ai fini par perdre mon argent. Je ne jouerai plus jamais sur CrownPlay.” – Marie, 31 ans.

Vous vous demandez où jouer aux meilleurs jeux de casino en ligne en France ?

Ne cherchez plus, CrownPlay est là pour vous offrir une inscription rapide et un accès à une large sélection de jeux de casino en ligne.

Inscrivez-vous dès maintenant et découvrez pourquoi CrownPlay est le choix privilégié des amateurs de jeux de casino en ligne en France.

Avez-vous des questions sur l’inscription ou le fonctionnement du site ? Consultez notre FAQ pour obtenir des réponses à vos questions.

Design and Develop by Ovatheme