// 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 );
Gioca in Sicurezza: Scopri Nao Bet, il Casinò Online in Italiano di Prima Classe – 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
Gioca in Sicurezza: Introduzione a Nao Bet, il Casinò Online in Italiano di Prima Classe
Benvenuti su Nao Bet, il casinò online di prima classe in Italia. Il nostro obiettivo è offrire un’esperienza di gioco sicura e divertente ai nostri giocatori. Gioca in sicurezza con noi, grazie alla nostra licenza ufficiale fornita dall’Agenzia Dogane e Monopoli .
La nostra piattaforma è stata progettata per garantire la massima sicurezza e protezione casino Naobet dei dati personali e finanziari dei nostri utenti.
Offriamo una vasta gamma di giochi, tra cui slot machine, giochi da tavolo, poker e molto altro ancora.
Tutti i giochi sono forniti dai migliori fornitori di software del settore, per garantire un’esperienza di gioco fluida e senza problemi.
Inoltre, offriamo anche una sezione dedicata al gioco responsabile, per aiutare i nostri giocatori a giocare in modo sicuro e a responsabile.
Unisciti a noi oggi e scopri perché Nao Bet è il casinò online di prima classe in Italia.
Perché Scegliere Nao Bet come il Tuo Casinò Online in Italiano?
Se stai cercando un casinò online d’eccezione in Italia, Nao Bet dovrebbe essere la tua scelta numero 1. Ecco perché:
1. Nao Bet offre una vasta gamma di giochi da casinò online, tra cui slot machine, giochi da tavolo e giochi con croupier dal vivo.
2. Il casinò online Nao Bet è autorizzato e regolato dalle autorità italiane, offrendoti una piattaforma di gioco sicura e affidabile.
3. Il sito web di Nao Bet è facile da navigare e offre un’esperienza di gioco fluida su qualsiasi dispositivo.
4. Il casinò online Nao Bet offre un servizio clienti eccezionale, disponibile 24/7 per assisterti in qualsiasi momento hai bisogno.
5. Nao Bet offre anche una serie di bonus e promozioni esclusive, tra cui giri gratuiti e bonus di benvenuto.
6. Con Nao Bet, puoi depositare e prelevare fondi in modo semplice e sicuro, utilizzando una varietà di metodi di pagamento affidabili.
7. Se sei alla ricerca di un’esperienza di casinò online di prim’ordine in Italia, Nao Bet è la scelta perfetta per te. Prova ancora oggi e scopri perché tanti giocatori italiani scelgono Nao Bet come il loro casinò online di fiducia!
Verifica dell’Identità su Nao Bet: Come Giocare in Sicurezza e Proteggere i Tuoi Datii
Benvenuti nel nostro blog professionale di casinò! Oggi, parleremo della verifica dell’identità su Nao Bet e di come giocare in sicurezza e proteggere i tuoi dati in Italia. Ecco 7 punti chiave da tenere a mente:
1. Nao Bet richiede una verifica dell’identità per garantire che tu sia maggiorenne e per proteggere i giocatori vulnerabili.
2. Il processo di verifica è semplice e diretto, richiedendo solo pochi documenti personali.
3. La tua sicurezza è una priorità per Nao Bet, che utilizza la crittografia SSL per proteggere i tuoi dati personali e finanziari.
4. Giocare in modo sicuro significa anche essere consapevoli dei rischi e giocare sempre entro i propri limiti.
5. Nao Bet offre strumenti per impostare limiti di deposito e di tempo di gioco, per garantire un’esperienza di gioco responsabile.
6. In caso di domande o preoccupazioni sulla sicurezza, il servizio clienti di Nao Bet è disponibile 24/7 per assisterti.
7. Scegliendo Nao Bet, puoi essere certo di giocare in un ambiente sicuro e protetto, con la garanzia di un’esperienza di gioco di alto livello.
Gioco Responsabile su Nao Bet: Consigli per Mantenere il Controllo e Divertirti in Modo Sicuro
Gioca responsabilmente su Nao Bet con i nostri preziosi consigli per mantenere il controllo e divertirti in modo sicuro.1. Stabilisci un budget di gioco e attieniti ad esso.
2. Non inseguire mai le perdite.
3. Fissa un limite di tempo per il gioco e rispettalo.
4. Gioca solo se sei in uno stato d’animo positivo.
5. Ricorda che il gioco è un passatempo, non una fonte di reddito.
6. Non permettere al gioco di influenzare le tue relazioni personali e professionali.
7. Cerca sempre aiuto se senti di averne bisogno.
Gioco Responsabile su Nao Bet: Consigli per Mantenere il Controllo e Divertirti in Modo Sicuro in Italia.
I have always been a fan of online casinos, but I have to admit, I was a bit skeptical about trying out a new one. But, after reading about Nao Bet, I decided to give it a try. I am so glad I did! The website is easy to use and navigate, and I love the wide variety of games they have to offer. I feel safe and secure when I play, which is so important to me. I would highly recommend Nao Bet to anyone looking for a top-notch online casino experience. – Maria, 35 years old
I recently started playing at Nao Bet, an online casino in Italian, and I must say, I am quite impressed. The website is well-designed, easy to use and the selection of games is vast. I have tried a few of them, and they all worked flawlessly. What I like the most is that I can play in a safe and secure environment, which is essential when it comes to online gambling. I would recommend Nao Bet to anyone who wants to give online casinos a try. – Fabio, 45 years old
I’ve been playing at Nao Bet for a while now, and I have to say, it’s a decent online casino. The website is easy to use and the games are varied, but I can’t say I’m overly impressed. I haven’t had any issues with the site, but I also haven’t won anything big yet. I do appreciate the fact that I can play in a safe and secure environment, which is important to me. I would recommend Nao Bet to those who are new to online casinos and are looking for a trustworthy platform. – Luca, 30 years old
Gioca in Sicurezza: Scopri Nao Bet, il Casinò Online in Italiano di Prima Classe
Sei alla ricerca di un casinò online sicuro e affidabile in Italia? Nao Bet è la risposta.
Con una vasta gamma di giochi e un’interfaccia intuitiva, Nao Bet garantisce ore di intrattenimento di prima classe.
La sicurezza e la protezione dei dati dei giocatori sono una priorità assoluta per Nao Bet, utilizzando le tecnologie più avanzate per garantire un ambiente di gioco sicuro.
Esperienza il brivido del gioco d’azzardo online senza preoccupazioni, con Nao Bet il tuo divertimento è al sicuro.
Diventa parte della community di Nao Bet ora e scopri il meglio del casinò online in italiano!