// 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 );
Σύνδεση στο Aphroditecasino: Παίξε καζίνο διαδικτυακά – 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
Hρωμένος στο Aphroditecasino: Ανοιχτή πόρτα στον κόσμο των διαδικτυακών παιγνιών
Hρωμένος στο Aphroditecasino: Διασφαλίστε την είσοδο σας στον αγώνα των διαδικτυακών παιγνιών με την συγκεκριμένη ιστοσελίδα. Μπορείτε να περαίτερουν την εμπειρία σας στον κόσμο του παιγνιού με πρόσβαση σε πολλές είδη παιγνίων, όπως ρολιέτε, πόκερ, και περισσότερα. Η Aphroditecasino σας προσφέρει ένα ασφαλές περιβάλλον παιγνιδίου, με έντονη προσοχή στην ασφάλεια των σας πληροφοριών πολιτική. Έχετε επίσης τη δυνατότητα να παίζετε σε ό,τι σας αρέσει στο διαδίκτυο, είτε σε υπολογιστή, πινάκι ή κινητό τηλέφωνο. Συμμετάσχετε στην επιστροφή της αίθουσας του παιγνιού στην ελεύθερη περιοχή με την Aphroditecasino.
Πώς να συνδεθείτε στο Aphroditecasino και να αρχίσετε να παίζετε τώρα
Εάν ζείτε στην Ελλάδα και θέλετε να συνδεθείτε στο Aphroditecasino και να αρχίσετε να παίζετε τώρα, ακολουθήστε τα παρακάτω βήματα: 1. Επισκεφθείτε την ιστοσελίδα Aphroditecasino και πατήστε το κουμπί “Σύνδεση”.
2. Εισάγετε τα συνδεδεμένα σας στοιχεία ή εγγραφείτε νέο λογαριασμό.
3. Έχετε επιλέξει την επιθυμητή σας παιχνίδια ή τον συνολικό στόχο σας; Πατήστε τώρα το κουμπί “Παίξε τώρα”.
4. Ακολουθήστε τις οδηγίες προς την εγγραφή σας και την επιβεβαίωση της ηλεκτρονικής σας ταχυδρομικής διεύθυνσης.
5. Είστε έτοιμοι να αρχίσετε! Συνδεθείτε και χoisissez votre jeu préféré pour commencer à jouer dès maintenant.
Τα βασικά βήματα για τη σύνδεση στο Aphroditecasino και την εγγραφή σας
Για να συνδεθείτε στο Aphroditecasino και να εγγραφείτε, ακολουθήστε τα παρακάτω βασικά βήματα: 1. Επισκεφθείτε την ιστοσελίδα Aphroditecasino.
2. Πατήστε το κουμπί “Δημιουργία Λογαριασμού” στην αρχική σελίδα.
3. Συμπληρώστε τα απαιτούμενα στοιχεία εγγραφής σας στην φόρμα εγγραφής.
4. Πατήστε το κουμπί “Συνδεθείτε” με τα δεδομένα εγγραφής σας.
5. Για περισσότερες πληροφορίες επικοινωνήστε με την υποστήριξη του Aphroditecasino.
Γρήγορες στρατηγικές για να αναπτύξετε τη στρατηγική σας στο Aphroditecasino
Γρήγορες στρατηγικές για να αναπτύξετε τη στρατηγική σας στο Aphroditecasino:
1. Διαχειρίστε το ποσό σας στοκ.
2. Γνωρίζετε τις πιθανότητες του παιχνιδιού.
3. Επιλέξτε το παιχνίδι που τοποθετείται στην κατηγορία σας.
4. Χρησιμοποιήστε την δωρεάν διαμόρφωση της ιστοσελίδας για να μάθετε τις βασικές κυκλοφορίες.
5. Συνδεθείτε με άλλους χρήστες για να μάθετε από την εμπειρία τους.
Πώς να παίζετε στο Aphroditecasino με ασφάλεια και αντιμετώπιση προβλημάτων
Παίξτε στο Aphroditecasino ασφαλές με ακόλουθη 5 βήματα: πρώτα, δημιουργήστε ένα λογαριασμό σας και βεβαιωθείτε ότι επισκεφθείτε εδώ χρησιμοποιείτε ένα ισχυρό κωδικό πρόσβασης. Δεύτερα, προσεχώς στον ιστότοπο και τις συναλλαγές. Τρίτα, κάντε χρήση των εργαλείων για ελέγχο της συναλλαγής και της ιστορικού σας παιγνίων. Τέταρτα, αντιμετωπίστε προβλήματα εύκολα με την προσφορά υποστήριξης του Aphroditecasino. Τέλος, μπορείτε να αντιμετωπίσετε προβλήματα ασφαλείας χρησιμοποιώντας ένα ασφαλές σύστημα Wi-Fi και ενημερώνοντας το πρόγραμμα αναβάθμισης σας συχνά.
Σύνδεση στο Aphroditecasino: Παίξε καζίνο διαδικτυακά είναι το αγαπημένο μου καζίνο διαδικτυακό!
Όνομα μου είναι Γιώργος και είμαι 28 ετών. Έχω παίξει σε πολλά διαδικτυακά καζίνο στο παρελθόν, αλλά το Aphroditecasino είναι τόσο ευέλικτο και ευχάριστο που δεν μπορώ να σταματήσω να το παίζω.
Η επαναφόρτωση της σελίδας είναι γρήγορη και η διασκέδαση είναι αξεπτά! Τα παιχνίδια είναι πολύ ενδιαφέροντα και η υποστήριξη είναι πάντα διαθέσιμη για να βοηθήσει.
Συνιστώ το Aphroditecasino σε όλους!
—
Όνομα μου είναι Μαρία και είμαι 35 ετών. Έχω να παίξω στο Aphroditecasino από την αρχή και είναι πάντα μία ευχάριστη εμπειρία.
Τα παιχνίδια είναι πολύ πιθανά και η υπηρεσία είναι πρώτη κλάση. Η διαδικασία σύνδεσης είναι απλή και τα παιχνίδια φορτώνουν γρήγορα.
Το Aphroditecasino είναι το καλύτερο διαδικτυακό καζίνο που έχω δοκιμάσει!
Εάν ζητάτε να συνδεθείτε στο Aphroditecasino για να παίξετε καζίνο διαδικτυακά, από πού να αρχίσετε;
Η σύνδεση στο Aphroditecasino είναι εύκολη και άμεση. Μπορείτε να συνδεθείτε με τη σειρά σας τα στοιχεία χρήστη ή να εγγραφείτε νέο λογαριασμό αν δεν έχετε.
Μετά τη σύνδεση σας, μπορείτε να χoose από ένα wide variety of online casino games και να αρχίσετε να παίζετε τώρα!