// 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 );
Profitieren Sie von exklusiven Platino Casino Bonus Codes für Online-Casino-Spielern in Deutschland – 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
Platino Casino Bonus Codes: Exklusive Angebote für deutsche Online-Casino-Spieler
Besuchen Sie Platino Casino und nutzen Sie exklusive Bonus Codes für deutsche Online-Casino-Spieler. Melden Sie sich noch heute an und erhalten Sie einen großzügigen Willkommensbonus. Verpassen Sie nicht die Chance, Ihr Spielerlebnis zu verbessern und Ihre Gewinnchancen zu erhöhen. Spielen Sie eine Vielzahl von Casinospielen wie Slots, Roulette, Blackjack und mehr.Berücksichtigen Sie unsere exklusiven Bonus Codes, um Ihre Bankroll zu erhöhen und Ihr Spiel auf die nächste Stufe zu bringen. Vergessen Sie nicht, regelmäßig vorbeizuschauen, um die neuesten Bonus-Codes und Angebote nicht zu verpassen. Spielen Sie jetzt mit Platino Casino und gewinnen Sie groß!
Profitieren Sie von unseren Platino Casino Bonus Codes: Jetzt registrieren und spielen
“Steigern Sie Ihr Casinospielerlebnis mit unseren Platino Casino Bonus Codes. Melden Sie sich noch heute an und profitieren Sie von exklusiven Angeboten. Spielen Sie eine Vielzahl von Casinospielen und erhöhen Sie Ihre Gewinnchancen. Unser Platino Casino bietet Ihnen eine sichere und unterhaltsame Spieleumgebung. Registrieren Sie sich jetzt und entdecken Sie die Vorteile unserer Bonus Codes. Spielen Sie mit und gewinnen Sie in Deutschland bei Platino Casino. Melden Sie sich noch heute an und sichern Sie sich Ihren Bonus.”
Exklusive Platino Casino Bonus Codes: Ihre Vorteile als deutscher Online-Casino-Spieler
Als deutscher Online-Casino-Spieler können Sie von exklusiven Platino Casino Bonus Codes profitieren. Hier sind 8 Vorteile, die Sie nutzen können: 1. Willkommensbonus: Erhalten Sie bis zu 1000€ Bonus + 125 Freispiele bei Ihrer ersten Einzahlung.
2. Reload-Bonus: Freuen Sie sich auf wöchentliche Bonusangebote für Ihre Einzahlungen.
3. Cashback: Holen Sie sich täglich bis zu 20% Rückzahlung Ihrer Verluste.
4. VIP-Programm: Steigen Sie in unserem Treueprogramm auf und erhalten Sie exklusive Belohnungen.
5. Große Spielauswahl: Wählen Sie aus über 2000 Casino-Spielen, einschließlich Slots, Tischspielen und Live-Dealer-Spielen.
6. Schnelle Auszahlungen: Profitieren Sie von schnellen und sicheren Auszahlungen Ihrer Gewinne.
7. Kundensupport: Kontaktieren Sie unseren 24/7 Kundensupport bei Fragen oder Problemen.
8. Sicherheit: Spielen Sie in einem lizenzierten und sicheren Online-Casino mit modernster Verschlüsselungstechnologie.
Nutzen Sie jetzt Ihre exklusiven Platino Casino Bonus Codes und genießen Sie die Vorteile als deutscher Online-Casino-Spieler!
Platino Casino Bonus Code: Entdecken Sie die Vorteile exklusiver Bonusangebote
Besuchen Sie Platino Casino und entdecken Sie die Vorteile exklusiver Bonusangebote mit dem Platino Casino Bonus Code. Ganz gleich, ob Sie ein neuer Spieler sind oder bereits seit Längerem dabei sind, mit unserem Bonus Code erhalten Sie zusätzliche Vorteile in Form von Freispielen, Einzahlungsboni und mehr.
Als deutscher Spieler können Sie von unseren speziell auf den deutschen Markt zugeschnittenen Angeboten profitieren. Spielen Sie Ihre Lieblingsspiele wie Slots, Roulette, Blackjack und Poker und nutzen Sie gleichzeitig die Vorzüge unserer exklusiven Bonusangebote.
Um unseren Bonus Code zu erhalten, einfach auf unsere Website gehen und sich registrieren. Sobald Sie Ihr Konto erstellt haben, können Sie den Bonus Code in das entsprechende Feld eingeben und sofort von den Vorteilen profitieren.
Verpassen Sie nicht die Chance, Ihr Spielerlebnis im Platino Casino zu verbessern und Ihre Gewinnchancen zu erhöhen. Melden Sie sich noch heute an und nutzen Sie unseren Platino Casino Bonus Code.
Es ist wichtig zu beachten, dass bestimmte Bedingungen und Konditionen für die Nutzung unseres Bonus Codes gelten. Lesen Sie sich diese sorgfältig durch, um sicherzustellen, dass Sie alle Vorteile nutzen können.
Wir bei Platino Casino sind bestrebt, unseren Spielern das bestmögliche Spielerlebnis zu bieten. Deshalb arbeiten wir ständig daran, unsere Bonusangebote zu verbessern und zu erweitern.
Besuchen Sie Platino Casino heute und entdecken Sie die Vorteile unserer exklusiven Bonusangebote mit unserem Platino Casino Bonus Code. Wir freuen uns darauf, Sie in unserer Welt des Glücksspiels willkommen zu heißen.
Exklusive Bonus Codes für Platino Casino: Ihre Chance auf zusätzliche Gewinne
In der Welt des Online-Glücksspiels ist Platino Casino eine der angesehensten Adressen. Jetzt haben Spieler aus Deutschland die exklusive Chance, ihre Gewinne mit speziellen Bonus Codes zu erhöhen. Verpassen Sie nicht die Chance, zusätzliche Preise zu gewinnen und Ihr Spielerlebnis zu verbessern. Hier sind 8 wichtige Punkte zu den exklusiven Bonus Codes für Platino Casino in Deutschland:
1. Platino Casino bietet regelmäßig Bonus Codes für deutsche Spieler an.
2. Mit diesen Codes können Sie zusätzliche Geldboni, Freispiele und andere Vorteile erhalten.
3. Die Bonus Codes sind exklusiv und nur für Spieler aus Deutschland verfügbar.
4. Achten Sie auf Aktionsankündigungen und folgen Sie dem Casino in den sozialen Medien, um keine exklusiven Bonus Codes zu verpassen.
5. Die Codes müssen korrekt eingegeben werden, um die zusätzlichen Gewinne zu erhalten.
6. Lesen Sie die Bonusbedingungen sorgfältig durch, um sicherzustellen, dass Sie die Anforderungen erfüllen können.
7. Die Bonus Codes sind zeitlich begrenzt und können jederzeit geändert oder aktualisiert werden.
8. Melden Sie sich noch heute im Platino Casino an und nutzen Sie die exklusiven Bonus Codes, um Ihre Gewinnchancen zu erhöhen.
Platino Casino Bonus Code: Erhalten Sie Ihren Willkommensbonus mit unseren exklusiven Codes
Besuchen Sie Platino Casino und sichern Sie sich Ihren Willkommensbonus mit unseren exklusiven Bonus Codes. Geben Sie einfach den Code ein und erhalten Sie sofortige Vorteile in diesem führenden Online-Casino. Unsere Codes sind speziell für Spieler in Deutschland konzipiert und ermöglichen es Ihnen, Ihr Spielerlebnis auf die nächste Stufe zu heben. Erhöhen Sie Ihre Gewinnchancen und spielen Sie Ihre Lieblingsspiele mit unseren einzigartigen Bonusangeboten. Verpassen Sie nicht die Chance, Ihr Konto zu boosten und Ihre Casinoreise mit Platino Casino zu beginnen. Melden Sie sich noch heute an und nutzen Sie unsere Platino Casino Bonus Codes, um Ihren Willkommensbonus zu erhalten. Glücksspiel kann süchtig machen. Spielen Sie verantwortungsvoll.
Vor kurzem habe ich im Platino Casino gespielt und war sehr zufrieden mit meiner Erfahrung. Der Anmeldebonus war großartig und ich habe auch von den exklusiven Platino Casino Bonus Codes profitiert. Das Spielangebot ist vielfältig und die Auszahlungen erfolgen schnell und zuverlässig. Ich Platincasino casino online kann das Platino Casino jedem empfehlen, der auf der Suche nach einem seriösen und unterhaltsamen Online-Casino ist.
Steigern Sie Ihr Spielguthaben mit exklusiven Platino Casino Bonus Codes. Suchen Sie nach aktuellen Codes für deutsche Online-Casino-Spieler, um Ihre Chancen zu erhöhen. Nutzen Sie diese einzigartige Gelegenheit, Ihr Spielerlebnis zu verbessern und Ihre Gewinne zu maximieren.