// 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 ); Vivez l’excitation du Penalty Shoot Out : Jouez dès maintenant sur les casinos en ligne français – 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

Vivez l’excitation du Penalty Shoot Out : Jouez dès maintenant sur les casinos en ligne français

Découvrez les sensations fortes du Penalty Shoot Out : commencez à jouer dès maintenant sur les casinos en ligne français

Découvrez les sensations fortes du Penalty Shoot Out et plongez dans l’univers des casinos en ligne français. Ce jeu de hasard stimulant vous permet de vivre une expérience de jeu unique.
Enfilez votre costume de gardien de but et défiez les tireurs les plus habiles. Avec Penalty Shoot Out, chaque tir est une nouvelle aventure.
Les casinos en ligne français offrent une multitude de jeux passionnants, mais Penalty Shoot Out se distingue par son réalisme et son intensité.
Si vous êtes à la recherche d’une expérience de jeu immersive et excitante, ne cherchez plus. Penalty Shoot Out est le jeu qu’il vous faut.
Commencez à jouer dès maintenant et découvrez pourquoi Penalty Shoot Out est l’un des jeux les plus populaires des casinos en ligne français.
Ne laissez pas passer cette occasion de vivre des émotions fortes et de gagner gros. Jouez à Penalty Shoot Out dès maintenant !

Le frisson du Penalty Shoot Out : essayez votre chance sur les casinos en ligne français

Vivez l’excitation du Penalty Shoot Out et tentez votre chance dans les casinos en ligne français. Découvrez une expérience de jeu immersive et authentique, le tout dans la langue de Molière. Les casinos en ligne français offrent une large sélection de jeux, y compris le célèbre Penalty Shoot Out. Que vous soyez un novice ou un joueur expérimenté, vous trouverez certainement un jeu qui vous convient. Alors, pourquoi ne pas essayer votre chance dès maintenant et vivre le frisson du Penalty Shoot Out ? Inscrivez-vous dès aujourd’hui et profitez de généreux bonus et promotions. Jouez en toute sécurité et en toute confiance dans les casinos en ligne français.

Vivez l'excitation du Penalty Shoot Out : Jouez dès maintenant sur les casinos en ligne français

Vivez une expérience de jeu unique avec Penalty Shoot Out sur les casinos en ligne français

Plongez dans une aventure de jeu mémorable avec Penalty Shoot Out, désormais disponible sur les casinos en ligne français. Profitez d’une expérience de jeu immersive et réaliste, avec des graphismes et des effets sonores époustouflants. Mettez vos compétences de tir au but à l’épreuve et remportez de gros gains. Découvrez une variété de fonctionnalités bonus passionnantes et augmentez vos chances de gagner gros. Que vous soyez un joueur débutant ou expérimenté, Penalty Shoot Out vous offre une expérience de jeu unique et inoubliable. Jouez dès maintenant et vivez une expérience de jeu incomparable sur les casinos en ligne français.

Plongez dans l’univers du Penalty Shoot Out : les casinos en ligne français n’attendent que vous

Plongez dans l’univers du Penalty Shoot Out et découvrez les casinos en ligne français qui n’attendent que vous. Profitez de graphismes époustouflants et d’une expérience de jeu immersive. Les casinos en ligne français offrent une large sélection de jeux, dont le célèbre Penalty Shoot Out. Que vous soyez un joueur débutant ou expérimenté, vous trouverez certainement un jeu qui vous convient. Alors, n’hésitez plus et plongez dans l’univers des casinos en ligne français dès maintenant !

Vivez l'excitation du Penalty Shoot Out : Jouez dès maintenant sur les casinos en ligne français

Le Penalty Shoot Out, une expérience de jeu à ne pas manquer sur les casinos en ligne français

Le Penalty Shoot Out est une expérience de jeu passionnante offerte par les casinos en ligne français. Plongez dans l’univers du football et vivez l’excitation des tirs au but. Ce jeu offre une jouabilité exceptionnelle et des graphismes réalistes. Vous aurez l’impression d’être sur le terrain, prêt à marquer le but décisif. Que vous soyez un fan de football ou simplement à la recherche d’une nouvelle expérience de jeu, Le Penalty Shoot Out est un incontournable. Ne manquez pas cette chance de vous divertir et de peut-être remporter de superbes gains. Essayez Le Penalty Shoot Out dès maintenant sur vos casinos en ligne préférés français!

Vivez l'excitation du Penalty Shoot Out : Jouez dès maintenant sur les casinos en ligne français

Amusez-vous avec Penalty Shoot Out sur les casinos en ligne français : découvrez l’excitation dès maintenant

Amusez-vous avec Penalty Shoot Out sur les casinos en ligne français et découvrez l’excitation dès maintenant! Plongez dans l’univers du football et affrontez le gardien de but dans ce jeu palpitant. Les casinos en ligne offrent une expérience de jeu réaliste et immersive, directement depuis le confort de votre foyer. Avec Penalty Shoot Out, vous aurez l’opportunité de tester votre précision et votre rapidité. Que vous soyez un fan de football ou simplement à la recherche d’un jeu amusant, Penalty Shoot Out est fait pour vous. Alors, n’hésitez plus et découvrez l’excitation de ce jeu dès maintenant!

Je m’appelle Jacques, j’ai 45 ans et je suis un grand fan de football. J’ai récemment découvert le jeu de Penalty Shoot Out en ligne et c’est tout simplement génial! Les graphismes sont réalistes et les sensations sont les mêmes que lors d’un vrai match. J’aime aussi le fait que je puisse jouer à tout moment et de n’importe où. Vivez l’excitation du Penalty Shoot Out, jouez dès maintenant sur les casinos en ligne français.

Bonjour, je m’appelle Sophie et j’ai 32 ans. Je suis une joueuse régulière de casino en ligne et j’ai récemment essayé le jeu de Penalty Shoot Out. C’est l’un des meilleurs jeux de casino en ligne que j’ai jamais essayé! Il est facile à comprendre, mais difficile à maîtriser, ce qui le rend encore plus amusant. De plus, les gains peuvent être très intéressants. Je recommande vivement ce jeu à tous les amateurs de casino en ligne. Vivez l’excitation du Penalty Shoot Out, jouez dès maintenant sur les casinos en ligne français.

Salut, je m’appelle Pierre et j’ai 50 ans. Je suis un joueur de casino expérimenté et j’ai été agréablement surpris par le jeu de Penalty Shoot Out en ligne. Les fonctionnalités sont innovantes et les gains sont attractifs. J’aime aussi le fait que je puisse jouer à ce jeu sur mon téléphone, ce qui me permet de jouer où que je sois. Si vous cherchez un jeu de casino en ligne amusant et excitant, je vous recommande vivement le Penalty Shoot Out. Vivez l’excitation du Penalty Shoot Out, jouez dès maintenant sur les casinos en ligne français.

Vivez l’excitation du Penalty Shoot Out et découvrez une nouvelle façon de jouer sur les casinos en ligne français.

Qu’est-ce que le Penalty Shoot Out ? Il s’agit d’un jeu de hasard inspiré des tirs au but de football.

Où peut-on y jouer ? Sur de nombreux casinos en ligne français, accessibles dès maintenant.

Comment y jouer ? Rien de plus simple : placez votre mise Penalty Shoot-Out et regardez le déroulement du tir au but.

Pourquoi s’y essayer ? Pour l’adrénaline et la possibilité de remporter de gros gains !

Design and Develop by Ovatheme