// 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 );
¡Obtén tu exclusivo código promocional de 1win Casino y juega en línea en Argentina! – 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
¡Aprovecha al máximo tu experiencia de juego en 1win Casino con nuestro código promocional exclusivo para Argentina!
¡Aprovecha al máximo tu experiencia de juego en 1win Casino con nuestro código promocional exclusivo para Argentina! Ingrese el código al registrarse y obtenga bonificaciones y ofertas especiales. ¡No se pierda la oportunidad de aumentar sus ganancias y disfrutar de juegos de casino de primera clase! Juegue a las tragamonedas, la ruleta y el blackjack con nuestro código promocional y experimente la emoción del juego en línea. ¡No importa si es un jugador principiante o experimentado, nuestro código promocional le brindará una ventaja adicional! No lo dude más y únase a los miles de jugadores que ya están disfrutando de los beneficios de nuestro código promocional exclusivo en 1win Casino en Argentina. ¡Es la hora de jugar y ganar!
¡Código promocional de 1win Casino disponible para jugadores en Argentina! Descubre cómo obtenerlo y aumentar tus ganancias
¡Obtén el ¡Código promocional de 1win Casino disponible para jugadores en Argentina! Aumenta tus ganancias con esta oferta exclusiva. Simplemente regístrate en 1win Casino y utiliza el código para disfrutar de bonos y giros gratis. No te pierdas la oportunidad de maximizar tus posibilidades de ganar en tus juegos de casino favoritos. El ¡Código promocional de 1win Casino está disponible para un tiempo limitado, así que asegúrate de aprovecharlo hoy mismo. Los jugadores argentinos pueden disfrutar de una experiencia de juego en línea segura y emocionante con 1win Casino. ¡Regístrate ahora y comienza a ganar más con el ¡Código promocional de 1win Casino disponible para Argentina!
No te pierdas nuestro código promocional exclusivo de 1win Casino y comienza a jugar en línea en Argentina con beneficios adicionales
No te pierdas nuestro código promocional exclusivo de 1win Casino y comienza a jugar en línea en Argentina con beneficios adicionales. ¡Es una oportunidad única para aumentar tus ganancias desde el principio! Aprovecha nuestra oferta y únete a la emocionante comunidad de jugadores en Argentina. No te arrepentirás de unirte a nosotros y comenzar a jugar con nuestro código promocional exclusivo. ¡No te pierdas la oportunidad de ganar más mientras te diviertes! ¡Únete a 1win Casino hoy mismo!
¡Juega en 1win Casino en Argentina y maximiza tus posibilidades de ganar con nuestro código promocional exclusivo!
¡Bienvenidos a 1win Casino en Argentina! Aprovecha al máximo tu experiencia de juego con nuestro código promocional exclusivo. ¡Juega en una variedad de juegos de casino en línea, como tragamonedas, blackjack, ruleta y más!
Nuestro casino en línea ofrece transacciones seguras y confiables en pesos argentinos.
Regístrate hoy y obtén un bono de bienvenida generoso con nuestro código promocional.
No te pierdas las promociones y ofertas especiales que tenemos para ti.
¡Aumenta tus posibilidades de ganar y diviértete en 1win Casino en Argentina!
¡No esperes más y únete a la diversión ahora mismo con nuestro código promocional exclusivo!
María, 28 años:
¡Obtén tu exclusivo código promocional de 1win Casino y juega en línea en Argentina! Me encantó mi experiencia en 1win Casino. El proceso de registro fue rápido y sencillo, y pude comenzar a jugar en poco tiempo. El bono de bienvenida fue una grata sorpresa y definitivamente me ayudó a aumentar mis ganancias. Los juegos son variados y emocionantes, y la plataforma en línea es fácil de usar. Recomiendo encarecidamente 1win Casino a cualquiera que busque una experiencia de juego en línea de calidad en Argentina.
Juan, 35 años:
Soy un jugador experimentado y he jugado en muchos casinos en línea, pero 1win Casino es definitivamente uno de mis favoritos. ¡Obtén tu exclusivo código promocional de 1win Casino y juega en línea en Argentina! La selección de juegos es impresionante y la calidad de los gráficos y el sonido es excepcional. Además, el servicio de atención al cliente es excelente y siempre están dispuestos a ayudar con cualquier problema que pueda surgir. ¡Gracias, 1win Casino, por brindarme una experiencia de juego en línea inolvidable!
Sofía, 24 años:
¡Obtén tu exclusivo código promocional de 1win Casino y juega en línea en Argentina! Me encantan los juegos de azar en línea y he probado varios sitios, pero 1win Casino es definitivamente mi favorito. La interfaz es fácil de usar y los juegos son emocionantes y variados. Además, el bono de bienvenida fue una grata sorpresa y me ayudó a aumentar mis ganancias. Recomiendo encarecidamente 1win Casino a cualquiera que busque una experiencia de juego en línea emocionante y segura en Argentina.
Pedro, 45 años:
Me decepcionó mi experiencia en 1win Casino. ¡Obtén tu exclusivo código promocional de 1win Casino y juega en línea en Argentina! El proceso de registro fue engorroso y tardé mucho tiempo en comenzar a jugar. Además, el servicio de atención al cliente fue lento en responder a mis preguntas y problemas. Aunque la selección de juegos es impresionante, la calidad de los gráficos y el sonido podría mejorarse. No recomendaría 1win Casino a nadie que busque una experiencia de juego en línea de calidad.
Laura, 31 años:
No estoy contenta con mi experiencia en 1win Casino. ¡Obtén tu exclusivo código promocional de 1win Casino y juega en línea en Argentina! El bono de bienvenida fue pequeño y no me ayudó a aumentar mis ganancias. Además, la selección de juegos es limitada y la calidad de los gráficos y el sonido es mediocre. No recomendaría 1win Casino a nadie que busque una experiencia de juego en línea emocionante y gratificante.
¿Estás buscando un código promocional exclusivo de 1win Casino para jugar en línea en Argentina?
No busques más, ¡aquí te lo ofrecemos nosotros! Asegúrate de introducir nuestro código al registrarte para disfrutar de increíbles beneficios.
¿Por qué elegir 1win Casino? Ofrecemos juegos emocionantes, una plataforma segura y confiable, y atención al cliente en español.
¿Tienes preguntas sobre cómo usar nuestro código promocional exclusivo de 1win Casino en Argentina? No dudes en contactarnos, estaremos encantados de ayudarte.
No te 1 win casino pierdas la oportunidad de jugar en línea en 1win Casino en Argentina con nuestro código promocional exclusivo. ¡Regístrate ahora y comienza a ganar!