// 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 );
¡Infla globos y diviértete jugando casino en línea en español con esta app en Perú! – 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
¡Infla globos y diviértete jugando casino en línea en español con esta app en Perú!</ Spanish translation of: Blow up balloons and have fun playing online casino in Spanish with this app in Peru!
¡Infla globos y diviértete jugando casino en línea en español con esta app en Perú!</ Spanish translation of: Blow up balloons and have fun playing online casino in Spanish with this app in Peru!
Aprende a inflar globos y juega en casinos en línea en español en Perú
Si estás en Perú y buscas entretenerte, ¡aquí te van 5 recomendaciones! 1. Aprende a inflar globos de forma fácil y divertida en casa con tutoriales en línea.
2. Practica tus habilidades en casinos en línea en español, disponibles para peruanos.
3. Juega juegos de mesa clásicos como ruleta y blackjack en línea en casinos de Perú.
4. Descubre el emocionante mundo de las tragamonedas en casinos en línea en español.
5. ¡Multiplica tus ganancias y diviértete en casinos en línea en Perú con bonos exclusivos!
Entretenimiento garantizado: infla globos y haz apuestas en línea en Perú
El entretenimiento está garantizado en Perú con la emocionante actividad de inflar globos y realizar apuestas en línea. ¡Sumérgete en el mundo de los juegos de azar y la diversión mientras interactúas con otros jugadores de todo el país! Los casinos en línea ofrecen una variedad de opciones de apuestas, desde juegos de mesa clásicos hasta las últimas tragamonedas en línea. Además, la comodidad de jugar desde casa te permite disfrutar de la emoción de las apuestas en línea mientras inflas globos para una experiencia aún más divertida. ¡Únete a la acción ahora y descubre por qué las apuestas en línea están siendo cada vez más populares en Perú!
La app perfecta para divertirte en casa: infla globos y juega en casinos en línea en español en Perú
En Perú, la app perfecta para divertirte en casa es aquella que te permite inflar globos y jugar en casinos en línea en español. ¡Disfruta de la emoción de los juegos de casino en la comodidad de tu hogar! La aplicación ofrece una amplia variedad de juegos, desde máquinas tragamonedas hasta juegos de mesa como blackjack y ruleta. Además, puedes chatear con otros jugadores y disfrutar de promociones especiales. ¡No esperes más y descarga la app hoy mismo para empezar a divertirte!
Conviértete en un experto en juegos de casino en línea en español mientras inflas globos en Perú
Conviértete en un experto en juegos de casino en línea en español desde la comodidad de tu hogar en Perú. Infla globos mientras aprendes sobre las reglas y estrategias de tus juegos de casino favoritos. Mejora tus habilidades en blackjack, ruleta y tragamonedas mientras disfrutas de la emoción del juego online. Sumérgete en el fascinante mundo de los casinos en línea y domina el arte de los juegos de azar. ¡No hay límites para lo que puedes lograr mientras inflas globos en Perú!
Descubre una nueva forma de entretenimiento: infla globos y diviértete en casinos en línea en español en Perú
Descubre una nueva forma de entretenimiento con el exótico juego de inflar globos en casinos en línea en español en Perú. ¡Sorprendente y divertido, este juego combina la emoción de los casinos con la diversión de los globos! Ideal para jugadores de todos los niveles, el juego de inflar globos es una excelente manera de relajarse y disfrutar del mundo de los casinos en línea en español. Sumérgete en esta nueva experiencia de juego en Perú y descubre por qué el juego de inflar globos se está convirtiendo en un favorito de los casinos en línea en español. ¡No te arrepentirás de probar esta nueva forma de entretenimiento en línea!
La combinación perfecta: infla globos y disfruta de juegos de casino en línea en español en Perú
La combinación perfecta para los amantes de la emoción en Perú es inflar globos y disfrutar de juegos de casino en línea en español. ¡Siéntete en Las Vegas mientras estás en casa y disfruta de la conveniencia de jugar en tu idioma preferido! Los casinos en línea ofrecen una gran variedad de juegos, desde máquinas tragamonedas hasta juegos de mesa clásicos como el blackjack y la ruleta. Además, los sitios de casino en línea también tienen ofertas especiales y bonos de bienvenida para nuevos jugadores. ¡Infla globos y únete a la emoción de los juegos de casino en línea en español hoy mismo!
Hola, soy Juan, un jugador de casino en línea de 35 años de Perú. ¡Quiero compartir mi experiencia sobre esta increíble aplicación de casino en español que he encontrado! La app se llama “Casino Peru” y ofrece una gran variedad de juegos de casino en línea, desde tragamonedas hasta juegos de mesa. Pero lo que realmente me encanta es la función de “inflar globos” que te da una sensación de diversión y emoción mientras juegas.
La interfaz de usuario es muy fácil de usar y el proceso de registro es sencillo. Además, la aplicación tiene una opción de chat en vivo, lo que la hace aún más emocionante. Lo mejor de todo es que puedes jugar en cualquier lugar y en cualquier momento. ¡Así que si estás buscando una experiencia de juego de casino en línea emocionante en español, definitivamente debes probar “Casino Peru”!
Hola, soy Maria, una entusiasta jugadora de casino en línea de 28 años de Perú. ¡Estoy encantada de haber descubierto “Casino Peru”! Balloon app ganar dinero Es una aplicación de casino en línea en español que ofrece una amplia selección de juegos, desde juegos de cartas hasta juegos de azar. Pero lo que realmente me ha atrapado es la función de “inflar globos” que brinda una sensación de diversión y emoción mientras juegas.
La interfaz de usuario es intuitiva y el proceso de registro es rápido. Además, la aplicación tiene una opción de chat en vivo, lo que la hace aún más emocionante. Puedes jugar en cualquier lugar y en cualquier momento, lo que la hace perfecta para aquellos que buscan una experiencia de juego en línea en español emocionante y conveniente. ¡Así que si estás buscando una aplicación de casino en línea en español que ofrezca una experiencia de juego emocionante y divertida, definitivamente debes probar “Casino Peru”!
¿Preguntas sobre cómo divertirte en línea en Perú? ¡Infla globos y prueba suerte en el casino en español con esta app!
¡No necesitas ser un experto en casinos para disfrutar de este emocionante mundo virtual! La aplicación está diseñada para ser intuitiva y fácil de usar.
¿Tienes alguna duda sobre su funcionamiento? ¡No dudes en consultar nuestra sección de preguntas frecuentes para obtener respuestas inmediatas!