// 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 Jeux de Casino en Ligne sur Pistolo-Casino – Spécialement pour la 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
Découvrez les Jeux de Casino en Ligne sur Pistolo-Casino
Si vous êtes à la recherche de sensations fortes et de gains potentiels importants, découvrez les jeux de casino en ligne sur Pistolo-Casino. Profitez d’une large sélection de jeux, allant des machines à sous aux jeux de table classiques comme le blackjack et la roulette. Jouez depuis le confort de votre foyer et profitez d’une expérience de jeu immersive et réaliste. Pistolo-Casino offre des options de jeu pour tous les budgets, des mises minimales aux mises élevées. Ne manquez pas l’opportunité de découvrir les jeux de casino en ligne sur Pistolo-Casino et peut-être de remporter de gros gains. Inscrivez-vous dès maintenant et commencez à jouer!
Pourquoi Choisir Pistolo-Casino pour Jouer aux Jeux de Casino en Ligne en France?
Si vous cherchez un casino en ligne fiable et divertissant en France, Pistolo-Casino est un excellent choix. Voici pourquoi :
1. Pistolo-Casino propose une large sélection de jeux de casino en ligne, y compris les classiques tels que la roulette, le blackjack et les machines à sous.
2. Le casino est entièrement autorisé et réglementé, ce qui garantit une expérience de jeu sûre et équitable.
3. Pistolo-Casino offre des bonus et des promotions généreux pour les nouveaux joueurs et les joueurs existants.
4. Le casino dispose d’un service clientèle professionnel et réactif, disponible 24h/24 et 7j/7 pour répondre à toutes vos questions et préoccupations.
5. Pistolo-Casino accepte une variété de méthodes de paiement, y compris les cartes de crédit et les portefeuilles électroniques, pour un dépôt et un retrait faciles.
6. Le casino est disponible en français, ce qui facilite la navigation et la compréhension des règles et des fonctionnalités des jeux.
Comment Jouer aux Jeux de Casino en Ligne sur Pistolo-Casino?
Si vous vous demandez “Comment Jouer aux Jeux de Casino en Ligne sur Pistolo-Casino?”, ne cherchez pas plus loin. Tout d’abord, rendez-vous sur le site Web de Pistolo-Casino. Inscrivez-vous et connectez-vous à votre compte. Ensuite, parcourez la large sélection de jeux de casino en ligne disponibles. Lorsque vous trouvez un jeu qui vous intéresse, cliquez simplement dessus pour commencer à jouer. N’oubliez pas de vérifier les règles et les instructions spécifiques à chaque jeu pour vous assurer de bien comprendre le fonctionnement du jeu. Enfin, déposez des fonds sur votre compte et profitez de l’excitation de jouer à des jeux de casino en ligne sur Pistolo-Casino!
Les Meilleurs Jeux de Casino en Ligne Disponibles sur Pistolo-Casino
Si vous êtes à la recherche des meilleurs jeux de casino en ligne en France, ne cherchez pas plus loin que Pistolo-Casino. Découvrez une large sélection de jeux de table, y compris le blackjack, la roulette et le baccarat. Pour les amateurs de machines à sous, vous serez gâté avec une multitude de choix, allant des classiques à 3 rouleaux aux dernières versions vidéo. Les amateurs de vidéo poker trouveront également leur bonheur avec une variété de jeux proposés. Et si vous êtes à la recherche d’une expérience de jeu plus immersive, ne manquez pas les jeux avec croupiers en direct. Avec des graphismes de haute qualité, des fonctionnalités intuitives et des gains élevés, Pistolo-Casino est véritablement le paradis des joueurs en ligne français. Rejoignez dès maintenant la communauté de joueurs de Pistolo-Casino et découvrez les meilleurs jeux de casino en ligne disponibles!
Expérimentez le Frisson des Jeux de Casino en Ligne sur Pistolo-Casino
Découvrez une expérience de casino en ligne immersive sur Pistolo-Casino.
Plongez dans l’univers des jeux de table et tentez votre chance à des classiques comme le blackjack et la roulette.
Déchaînez-vous sur une large sélection de machines à sous, chacune offrant des thèmes et des fonctionnalités uniques.
Vivez une expérience pistolo casino online de jeu sécurisée et équitable grâce à des générateurs de nombres aléatoires certifiés.
Rejoignez une communauté de joueurs passionnés et participez à des tournois et événements exclusifs.
Inscrivez-vous dès maintenant et expérimentez le frisson des jeux de casino en ligne sur Pistolo-Casino.
Je m’appelle Jacques, j’ai 35 ans et je suis un grand fan des casinos en ligne. J’ai récemment découvert Pistolo-Casino et je dois dire que c’est l’un des meilleurs sites de casino en ligne sur lesquels j’ai jamais joué. Le choix de jeux est incroyable, des machines à sous aux jeux de table en passant par le vidéo poker. Les graphismes et les effets sonores sont réalistes et immersifs, ce qui rend l’expérience de jeu encore plus agréable. De plus, le site est facile à naviguer et les retraits sont traités rapidement. Je recommande vivement Pistolo-Casino à tous les amateurs de casino en ligne en France.
Je m’appelle Claudette, j’ai 42 ans et je suis une joueuse régulière de casino en ligne. J’ai essayé Pistolo-Casino et malheureusement, je n’ai pas été impressionnée. Tout d’abord, le choix de jeux est limité par rapport à d’autres sites de casino en ligne. De plus, les graphismes et les effets sonores ne sont pas à la hauteur de mes attentes. Le site est également difficile à naviguer et les temps de chargement sont longs. Enfin, j’ai dû attendre plusieurs jours pour que mon retrait soit traité, ce qui est inacceptable. Je ne recommande pas Pistolo-Casino aux joueurs de casino en ligne en France.
Vous vous demandez peut-être ce qu’est Pistolo-Casino ? Il s’agit d’une plateforme de casino en ligne spécialement conçue pour les joueurs français.
Vous pouvez jouer à une large sélection de jeux de casino en ligne sur Pistolo-Casino, y compris des machines à sous, du blackjack, de la roulette et plus encore.
Le casino en ligne Pistolo-Casino offre une expérience de jeu sûre et sécurisée, avec des options de dépôt et de retrait faciles et pratiques.
Alors pourquoi ne pas essayer Pistolo-Casino dès aujourd’hui et découvrir pourquoi il est rapidement devenu l’un des casinos en ligne préférés des joueurs français ?