// 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 Legiano Casino Bonus Angeboten für Online-Casino Spieler in der Schweiz – 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
Legiano Casino: Genießen Sie exklusive Bonusangebote in der Schweiz
Spielen Sie im Legiano Casino und genießen Sie exklusive Bonusangebote in der Schweiz. Entdecken Sie eine Welt der Unterhaltung mit einer breiten Palette von Casinospielen. Profitieren Sie von regelmäßigen Bonusaktionen und Promotionen. Spielen Sie sich zum Jackpot und sichern Sie sich Ihren Anteil an den Gewinnen. Das Legiano Casino bietet Ihnen ein unvergessliches Spielerlebnis in einem sicheren und geschützten Umfeld. Treten Sie noch heute bei und werden Sie Teil der Legiano Casino-Community.
Online-Casino in der Schweiz: Profitieren Sie von Legiano’s Bonusaktionen
Spielen Sie in Online-Casinos in der Schweiz und nutzen Sie die Bonusaktionen von Legiano. Legiano bietet eine Vielzahl von Boni und Aktionen, die Ihr Spielerlebnis verbessern. Verpassen Sie nicht die Chance, Ihre Gewinne zu maximieren und Ihr Online-Casino-Erlebnis zu intensivieren. Legiano ist bekannt für seine großzügigen Boni und Aktionen, also stellen Sie sicher, dass Sie sie nicht verpassen. Spielen Sie noch heute in Online-Casinos in der Schweiz und nutzen Sie die Vorteile von Legiano. Ihre Online-Casino-Erfahrung wird es Ihnen danken.
Legiano Casino Bonus: Entdecken Sie die Vorteile für Schweizer Spieler
Erleben Sie das Legiano Casino und entdecken Sie exklusive Vorteile als Spieler aus der Schweiz. Geniessen Sie ein reiches Angebot an Casino Spielen und profitieren Sie von lukrativen Boni. Legiano Casino heisst Sie willkommen und bietet Ihnen eine sichere und unterhaltsame Spieleplattform. Spielen Sie Ihre Lieblingsspiele und sichern Sie sich attraktive Bonusangebote. Entdecke jetzt die Welt von Legiano Casino und lassen Sie sich von den Vorteilen überraschen. Ihre Zufriedenheit ist unsere Priorität.
Exklusive Angebote: Legiano Casino Bonusse für Online-Spieler in der Schweiz
Spielen Sie im Legiano Casino und entdecken Sie unsere exklusiven Angebote für Online-Spieler in der Schweiz. Geniessen Sie Boni auf Ihre ersten Einzahlungen und regelmässige Promotionen. Werden Sie zum VIP-Spieler und erhalten Sie Zugang zu exklusiven Boni und Vergünstigungen. Verpassen Sie nicht unsere täglichen Turniere und Jackpots. Spielen Sie jetzt im Legiano Casino und profitieren Sie von unseren unschlagbaren Angeboten.
Legiano Casino: Die besten Bonusangebote für Schweizer Online-Casino Spieler
Erleben Sie die aufregende Welt von Legiano Casino, dem besten Online-Casino für Schweizer Spieler. Profitieren Sie von unseren erstklassigen Bonusangeboten und erleben Sie Spitzenunterhaltung. Genießen Sie eine riesige Auswahl an Spielen, darunter Slots, Roulette, Blackjack und vieles mehr. Legiano Casino ist bekannt für seine sichere und zuverlässige Spielumgebung, die von renommierten Behörden lizenziert und reguliert wird. Unsere Spieler stehen immer an erster Stelle, daher bieten wir großzügige Boni und Promotionen an, um Ihr Spielerlebnis zu verbessern. Werden Sie noch heute Teil der Legiano Casino-Community und erhalten Sie exklusive Bonusangebote.
Positive Review 1:
Vor kurzem habe ich im Legiano Casino angefangen zu spielen und ich muss sagen, ich bin begeistert! Das Angebot an Spielen ist riesig und die Qualität der Spiele ist hervorragend. Besonders gefallen mir die vielen verschiedenen Slot-Spiele. Auch der Kundenservice ist top und hat mir schnell und unkompliziert geholfen, als ich einmal eine Frage hatte. Profitieren Sie von exklusiven Legiano Casino Bonus Angeboten für Online-Casino Spieler in der Schweiz und probieren Sie es selbst aus. Ich kann das Legiano Casino nur empfehlen!
– Maria, 35 Jahre alt
Positive Review 2:
Ich habe schon in einigen Online-Casinos gespielt, aber das Legiano Casino ist definitiv eines der besten! Die Spielauswahl ist riesig und es gibt viele verschiedene Bonus-Angebote, von denen man profitieren kann. Auch die Auszahlungen sind schnell und unkompliziert. Ich habe schon ein paar Mal gewonnen und war sehr zufrieden mit dem gesamten Ablauf. Ich kann das Legiano Casino nur weiterempfehlen!
Ich habe vor kurzem im Legiano Casino angefangen zu spielen und bisher bin ich zufrieden. Die Spielauswahl ist gut und die Qualität der Spiele ist in Ordnung. Auch der Kundenservice ist okay, aber ich habe bisher noch keine besonderen Probleme gehabt. Es gibt einige Bonus-Angebote, aber ich habe noch nicht alle ausprobiert. Insgesamt bin ich zufrieden, aber ich kann noch nicht sagen, ob ich das Casino auf Dauer weiterempfehlen würde.
– Sarah, 28 Jahre alt
Neutral Review 2:
Ich spiele schon seit einiger Zeit im Legiano Casino und bisher gibt es nichts Besonderes zu berichten. Die Spielauswahl ist in Ordnung und die Qualität der Spiele ist okay. Auch der Kundenservice ist okay, aber ich habe noch nie wirklich Hilfe benötigt. Es gibt einige Bonus-Angebote, aber ich habe noch nicht alle ausprobiert. Insgesamt bin ich zufrieden, aber ich kann nicht sagen, ob ich das Casino auf Dauer weiterempfehlen würde.
– Markus, 31 Jahre alt
Möchten Sie Ihr Casino-Erlebnis in der Schweiz auf die nächste Stufe heben? Entdecken Sie exklusive Legiano Casino Bonus Angebote und profitieren Sie von Vorteilen, die nur bei uns erhältlich sind.
Sind Sie auf der Suche nach lukrativen Boni und Aktionen? Legiano Casino bietet Ihnen eine Vielzahl von Möglichkeiten, Ihre Gewinne zu maximieren und Ihr Spielerlebnis zu verbessern.
Registrieren Sie sich noch heute und sichern Sie sich Ihren Willkommensbonus. Profitieren Sie von exklusiven Angeboten und erleben Sie die Welt des Online-Casinos wie nie zuvor.
Legiano Casino ist Ihr vertrauenswürdiger Partner für Online-Casino-Unterhaltung in der Schweiz. Genießen Sie unsere erstklassigen Spiele und exklusiven Bonusangebote.