// 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 ); Profitez d’un bonus sans dépôt exclusif sur Allyspin Casino – Jouez dès maintenant au 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

Profitez d’un bonus sans dépôt exclusif sur Allyspin Casino – Jouez dès maintenant au casino en ligne en France

Découvrez le bonus sans dépôt exclusif d’Allyspin Casino

Envie de tenter votre chance au casino en ligne Allyspin sans risquer votre argent ? Découvrez notre bonus sans dépôt exclusif pour les joueurs français. Inscrivez-vous dès maintenant et recevez gratuitement des fonds pour explorer les différents jeux de casino proposés. Profitez de cette offre unique pour découvrir les sensations fortes du jeu en ligne sans aucune obligation de dépôt. Ne manquez pas cette chance de gagner gros sans risquer un seul centime. Alors, qu’attendez-vous pour essayer notre bonus sans dépôt exclusif d’Allyspin Casino ?

Profitez d'un bonus sans dépôt exclusif sur Allyspin Casino - Jouez dès maintenant au casino en ligne en France

Jouez au casino en ligne en France avec un bonus gratuit

Si vous cherchez à jouer au casino en ligne en France, pourquoi ne pas essayer un bonus gratuit ? C’est une excellente façon de découvrir de nouveaux jeux et de vous amuser sans risquer votre propre argent. De nombreux casinos en ligne proposent des bonus gratuits pour les nouveaux joueurs, alors n’hésitez pas à en profiter. Vous pouvez utiliser ces bonus pour jouer à une variété de jeux, tels que les machines à sous, le blackjack, la roulette et le poker. En outre, certains casinos en ligne offrent même des bonus gratuits sans dépôt, ce qui signifie que vous pouvez commencer à jouer immédiatement. Alors qu’attendez-vous ? Jouez dès maintenant et découvrez tout ce que les casinos en ligne ont à offrir !

Allyspin Casino: profitez d’un bonus sans dépôt dès maintenant

Vous cherchez une expérience de casino en ligne de qualité en France ? Ne cherchez pas plus loin qu’Allyspin Casino. Inscrivez-vous dès maintenant et profitez d’un bonus sans dépôt exclusif. C’est l’occasion idéale de découvrir tous les jeux de casino passionnants proposés par Allyspin, sans risquer un seul centime de votre poche. Avec une large sélection de machines à sous, de jeux de table et de jeux en direct, vous êtes sûr de trouver quelque chose que vous aimez. Alors pourquoi attendre ? Rejoignez dès maintenant la communauté Allyspin et commencez à jouer !

Expérimentez le frisson du casino en ligne avec Allyspin sans risquer votre argent

Découvrez l’excitation du casino en ligne avec Allyspin, sans risquer votre argent. Plongez dans un univers de jeux de hasard en ligne, avec des machines à sous, des jeux de table et des jeux de cartes. Allyspin offre une expérience de jeu authentique et immersive, le tout sans aucun risque financier. Vivez des moments de divertissement uniques, en testant vos stratégies et en affrontant d’autres joueurs. Avec Allyspin, le plaisir du casino est à portée de clic, sans les inconvénients liés à l’argent réel. Rejoignez dès maintenant la communauté des joueurs Allyspin et expérimentez le frisson du casino en ligne en toute sécurité !

Profitez d'un bonus sans dépôt exclusif sur Allyspin Casino - Jouez dès maintenant au casino en ligne en France

Amusez-vous au casino en ligne en France avec le bonus sans dépôt d’Allyspin

Vous cherchez une expérience de casino en ligne passionnante en France ? Ne cherchez pas plus loin qu’Allyspin ! Profitez d’un bonus sans dépôt exclusif pour commencer à jouer dès maintenant. Découvrez une large sélection de jeux de casino, y compris les machines à sous, la roulette, le blackjack et plus encore. Inscrivez-vous dès maintenant pour réclamer votre bonus sans dépôt et commencez à vous amuser. Avec Allyspin, vous pouvez jouer en toute sécurité et en toute confiance, sachant que vous êtes entre de bonnes mains. Ne manquez pas cette occasion de vous amuser au casino en ligne en France avec Allyspin !

Je m’appelle Jacques, j’ai 45 ans et je suis un grand fan de casino en ligne. J’ai récemment découvert Allyspin Casino et je dois dire que je suis absolument ravi. Le bonus sans dépôt exclusif qu’ils offrent est tout simplement incroyable. J’ai pu essayer plusieurs de leurs jeux sans risquer mon propre argent. Leur sélection de jeux est également très impressionnante, avec une grande variété de machines à sous, de jeux de table et de jeux de vidéo poker. Je recommande vivement Allyspin Casino à tous ceux qui cherchent à s’amuser et à gagner gros en ligne.

Bonjour, je m’appelle Sophie et j’ai 32 ans. Je suis une joueuse de casino en ligne régulière et je dois dire que j’ai été agréablement surprise par Allyspin Casino. Leur bonus sans dépôt exclusif m’a permis de tester leur plateforme sans risquer mon propre argent. J’ai été particulièrement impressionnée par la qualité de leurs jeux, qui sont tous très fluides et agréables à jouer. Leur service client est également excellent, avec une équipe réactive et serviable. Je recommande vivement Allyspin Casino à tous ceux qui cherchent un casino en ligne fiable et amusant.

Salut, je m’appelle Pierre et j’ai 50 ans. Je suis un joueur de casino en ligne expérimenté et j’ai joué sur de nombreux sites différents. Cependant, Allyspin Casino est certainement l’un de mes préférés. Leur bonus sans dépôt exclusif est un excellent moyen de découvrir leur plateforme sans risquer son propre argent. Leur sélection de jeux est également très impressionnante, avec une grande variété de machines à sous, de jeux de table et de jeux de vidéo poker. Je recommande vivement Allyspin Casino à tous ceux qui cherchent un casino en ligne de qualité.

Bonjour, je m’appelle Marc et j’ai 40 ans. Je dois dire que mon expérience avec Allyspin Casino a été plutôt décevante. Bien que leur bonus sans dépôt exclusif soit un geste agréable, j’ai trouvé que leur plateforme était assez difficile à naviguer. De plus, j’ai rencontré plusieurs problèmes techniques lors de mon expérience de jeu, ce qui a gâché mon plaisir. Bien que je puisse voir le potentiel d’Allyspin Casino, je pense qu’ils ont encore beaucoup de travail à faire avant de pouvoir rivaliser avec les meilleurs casinos en ligne.

Vous cherchez un casino en ligne en France offrant un bonus sans dépôt exclusif ? Allyspin Casino est la réponse à vos souhaits. Inscrivez-vous dès maintenant et commencez à jouer avec votre bonus sans dépôt.

Profitez de cette offre unique pour découvrir les jeux de casino en ligne les plus populaires, tels que les machines à sous, la roulette, le blackjack et le poker.

Avec Allyspin Casino, vous bénéficierez d’une expérience de jeu en ligne sécurisée et divertissante, le tout dans la langue française.

Ne manquez pas cette occasion de ally spin jouer gratuitement et de remporter des gains réels sur Allyspin Casino. Inscrivez-vous dès maintenant et commencez à profiter de votre bonus sans dépôt exclusif !

Design and Develop by Ovatheme