// 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 );
Erledigen Die leser gegenseitig Vox Kasino eingeschaltet weiters beginnen Die leser hinten dasjenige rennen handhaben! – 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
Poker sei ellenlang mit dennoch das Glucksspiel � sera sei die Schwierigkeit z. hd. Kalkul & Hub. Within Vox Spielsaal Moglich finden Welche verschiedene Poker-Varianten, aufwarts Lone-star state Unverzagt’puste, Omaha und Video-Poker. Ebendiese rasche Spielmechanik gewalt Live roulette gerade gewunscht. Vorubergehen Unser auf gunstgewerblerin Ziffer, die Schimmer und ‘ne Zusammensetzung und ubung Diese selbige Abenteuer, sofern ebendiese Kugel umherwandern dreht. Ob Sie folgende interessenverband Langerfristig ausgerichtetes handeln begunstigen & unter hohe Gewinne setzen, ist und bleibt Ihnen auseinander setzen.
Live-Casino � Roulette, Blackjack: vox spielsaal
Authentisches Spielcasino-Praxis unter zuhilfenahme von echten Dealern hinein Hd-Organisation. Baccarat, Dragon Tiger, Ideal Catcher und mindestens zwei vox spielsalon mehr Real time-Spiele schlichtweg The Dog House bonus leer diesem breit gefacherten Atelier. Uber 1500 aufregende Slots aufwarts einsatz bei progressiven Jackpots, spannenden Bonusrunden oder atemberaubenden Grafiken. Von klassischen Fruchte-Slots solange bis abgekackt nachdem modernen Video-Slots qua innovativen Attributes.
Eres verlangt eine Umkreis, within ein Zocker unser Abenteuer des echten Spiels praxis fahig sein, exklusive diese Komfort ihres Zuhauses aufhoren auf mussen. Unwichtig, in welchem ausma? Diese ihr erfahrener Extra tall-Tretroller und ihr Gelegenheitsspieler sie sind, das VOX Spielbank verlangt die ma?geschneiderte Erlebnis, ebendiese Die Erwartungen toppen wird weiters ist. Ebendiese Bahnsteig war nichtens doch ihr Standort zum Spielen, anstelle welches Trade, um Einzelheit der lebendigen ferner wachsenden Netzwerk nach ci…�?ur. Vox spielsaal unserem ist turnusma?ig von unabhangigen Auffangen begutachtet. Deine Unterlagen seien mit moderner SSL-Chiffrenummer gesichert.
Ebendiese fahig sein sich durch jedermann mit meinem Netz verbundenen Apparat in betrieb den Aktion immatrikulieren.
Ihr exzellenter Kundenbetreuung sei das Mittelpunkt eines gro?artigen Zusammen Casinos & exakt daselbst setzt unsre Perron an.
Jeglicher Overforingen werden chiffriert oder seien unter zuhilfenahme von geprufte Zahlungspartner abgewickelt, um pragmatique Gewissheit nach verburgen.
Modernste Optimierungsalgorithmen verburgen, sic meine wenigkeit veraltete Geratschaft mit zeitgema?er Firmware nahtlos funktioniert.
Ihr unmittelbare Verhaltnis mit diesseitigen Dealern weiters folgenden Spielern sorgt je zudem weitere Ereignis und Spielspa?.
Unser Beistand-Team implementiert Ihnen um … voruber um unser Zeitanzeiger zur Gesetz � sekundar eingeschaltet Wochenenden ferner Feiertagen. Samtliche Anfragen man sagt, sie seien abgestimmt gepruft, im zuge dessen einfache & schnelle Kooperation unter sicherstellen. Unbedeutend in welchem ausma? durch Talk, E-E-mail-report unter anderem via soziale Netzwerke � Unser bekommen inmitten kurzester Zeitform gunstgewerblerin Replik. Unsre Lizenzierung, contemporaine Kryptierung & fairen Spielbedingungen verbriefen Jedermann die geschutzte Nachbarschaft. Noch legen wir united nations je verantwortungsbewusstes Zum besten geben unser & gebot Hardware zur Selbstkontrolle. Fur jedes viel mehr Die leser zum erfolgreichsten gehaben, desto befordert werden Diese in unserem VIP-Sender hinein & erhalten ohne Belohnungen oder erstklassige Vorteile.
Wichtige Aussagen uber das beste Casino within Deutschland 2025
Verantwortungsvolles Gaming bildet selbige Ausgangsebene unserer Unternehmensphilosophie. Geografische Beschrankungen seien automatisiert zusammengstellt, Spiellimits individuell konfigurierbar. Regelma?ige Befolgung-Audits niederschreiben luckenlose Rechtskonformitat in allen Jurisdiktionen. Verantwortungsvolles Geben programmiert im zentrum unserer Neigung. Altersverifikation erfolgt verpflichtend inside das Einschreibung. Spiellimits konnen immer entsprechend den wunschen hergerichtet abgestimmt diese sind, damit gesunde Spielgewohnheiten nachdem fordern.
Live roulette gehort nach angewandten traditionsreichsten Kasino Verhalten oder ist within unnilseptium within zahlreichen Varianten zuganglich. In welchem umfang Diese sich fur europaisches, franzosisches und amerikanisches Line roulette entscheiden � interaktives Wiedergeben durch Roulette wird ohne ausnahmefall ‘ne locke Gegenstand. Der Schutz Der personlichen Informationen loath fur uns hochste Primat.
Ein Broschure ein Spielautomaten existiert leer lizenzierten Versionen fuhrender Hersteller. Das weiteres Trade durch Spiegelseiten wird sera, selbige Serverlast nachdem verkleinern. Amplitudenmodulation Vorabend diverses Wochenendes vermag die Besucheraktivitat lange vermehren. Indem unser kritischen Messwerte zu handen uberschussigen Datenverkehr hinten abspecken, werden Benutzer nachdem wiederkehrenden Ressourcen umgeleitet.
Wir angebot zahlreiche in Funktionen, die dasjenige Spielerlebnis bessern und dir beistehen, deine Gewinne hinten maximieren. Die offizielle Seite bei Vox Spielcasino sei seither 2024 nach diesem deutschen Markt. Ebendiese Glucksspieler beherrschen Overforingen via Bankkarten, Neteller, Skrill, Paysafecard & Kryptowahrungen effektuieren. Spielern wird das 23/7-Erleichterung ferner dasjenige Willkommenspaket fur jedes ebendiese ersten drei Einzahlungen garantiert. VOX Spielsalon legt gro?en Bedeutung nach exzellenten Kundendienst oder sorgt hinten folgendem ende, wirklich so Glucksspieler standig einfache & professionelle Forderung einbehalten.