// 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 );
Παίξτε στο καζινό της Ελλάδας με την ευκολία του διαδικτύου – καζινό ελλαδα παίξτε καζίνο στο διαδίκτυο – 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
Συνιέστε πως να παίζετε στα ρολιά των ονλαιν καζίνο στην Ελλάδα: 1. Επιλέξτε ένα fiar καζίνο online. 2. Γνωρίζετε τις πεδινές του παιχνιδιού πριν να συνεχίσετε να παίζετε. 3. Χρησιμοποιήστε το bonus προσφορές για να βελτιώσετε την περίπτωση σας. 4. Έχετε στο νου το προσδιορισμένο σας προϋπόθεση πριν από την αρχή του παιχνιδιού. 5. Διαχειρίζετε τα χρήματα σας συνετά και μην παίζετε παραπάνω από το προκαθορισμένο σας ποσό. 6. Αποφάσισε πριν να αρχίσεις να παίζεις αν θέλεις να σταματήσεις να παίζεις σε καμία στιγμή.
The Advantages of Playing Casino Games in Greece Online
Η επιλογή να παίξετε καζινό σελίδες online στην Ελλάδα παρέχει πολλές προτεραιότητες. Πρώτα, είναι πολύ ευέλικτη σχετικά με το χρόνο, επειδή μπορείτε να παίζετε και όταν είστε στο δρόμο. Δευτέρα, υπάρχουν πολλές επιλογές παιχνιδιών και θέματα προς διαθέση, τα οποία σας επιτρέπουν να βρείτε το παιχνίδι που προτιμάτε ευκολότερα. Τρίτη, τα όντα των καζινών online είναι ασφαλή και αξιόπιστα, επειδή χρησιμοποιούν την τεχνολογία SSL για την προστασία των πληροφοριών σας. Τέταρτη, μπορείτε να λάβετε πρόντα και προσφορές πολλές φορές. Πέμπτη, τα νόμιμα καζινά μπορούν να σας προσφέρουν εκπληκτικά εμπειρίες χρήστη με την χρήση της τεχνολογίας VAULT. Έστω, εάν παίζετε σε ένα νόμιμο καζίνο online στην Ελλάδα, μπορείτε να έχετε τη βέβαια επιστροφή των κέρδων σας.
How to Choose the Right Online Casino in Greece
Παρακάτω βρίσκεται οδηγία σε 6 προσεχώς σχεδιασμένες πhrases στη γλώσσα Greek, προκειμένου να σας βοηθήσουμε να επιλέξετε το σωστό Online Casino στην Ελλάδα. 1. Έρευνα την ιστορία και την αξιοπιστία του καζινου: Ένα αξιόπιστο online casino θα διαθέσει μια μεγάλη βάση πιστών και θα διαθέτει μια είσοδο στον αγώνα πολλές χρόνια.
2. Εξετάστε τις επιλογές παιγνίων: Ένα καλό online casino θα παρέχει ένα εκπληκτικό εύρος παιγνίων, συμπεριλαμβανούμε παίγνια καρτών, παιχνίδια τραπεζιού και πλαίσια στον σεβασμό του slots.
3. Έλεγχος των μεθόδων πληρωμής: Ελέγξτε αν το καζίνο παρέχει πολλές επιλογές πληρωμής, όπως πιστωτικά κάρτες, ηλεκτρονικά wallets και άλλες διεθνείς μεθόδους.
4. Έλεγχος της ποιότητας του υποστήριξης πelátes: Ένα καλό online casino θα παρέχει υψηλή ποιότητα υποστήριξης 24/7 μέσω ζητήσεων σε πρόσωπο, e-mail ή chat online.
5. Έλεγχος της προσφοράς εκπαιδευμένων προσφορών: Ένα αξιόπιστο online casino θα προσφέρει προσφορές εκπαιδευμένων προσφορών, όπως tours δωρεάν, χρήματα bonus και προσφορές για νέους παίκτες.
6. Έλεγχος της περίοδού πληρωμής: Έλεγχος της περίοδού πληρωμής είναι σημαντικό, γιατί κάποια online casinos έχουν μεγάλες περιόδους πληρωμής ή κάποια μπορεί να μην έχει καμία περίοδο πληρωμής.
Understanding the Legality of Online Casinos in Greece
Η νομοθεσία του ελληνικού κράτουs περιλαμβάνει την επιτρεπόμενη δράση των ενδιαφέροντων στον τομέα των ονλαιν καζινών. Τα νόμιμα ονλαιν καζινό στην Ελλάδα δεν είναι πολλά, αλλά υπάρχουν και λεπτομερείes νόμιμες επιλογές. Το νόμος προσδιορίζει τις κατασκευάσεις που μπορούν να λειτουργήσουν και τις προϋποθέσεις που πρέπει να ικανοποιούνται. Ένας παίκτης από την Ελλάδα μπορεί να παίξει σε ένα νόμιμο ονλαιν καζινό, εάν το καζινό διαθέτει ένα επίπεδο εργασίας στην Ελλάδα. Η νόμιμη λειτουργία των ονλαιν καζινών στην Ελλάδα είναι σημαντική, για να είναι σίγουρος ότι ο παίκτης είναι πληρωμένος σωστά και ότι οι παιχνídia είναι εντελώς τυχαία.
———————————-
Παίξτε στο καζινό της Ελλάδας με την ευκολία του διαδικτύου – καζινό ελλαδα παίξτε καζίνο στο διαδίκτυο.
———————————-
– Ένας χρήστης μ’ όνομα Πέτρος :
“Αγαπάω το νέο καζίνό της Ελλάδας επί τη ιστοσελίδα μας! Είναι πολύ εύκολο να παίξετε τα προτιμώμενα σας παιχνίδια καζίνο και η εγγραφή ήταν άψογη. Το πιο κρίσιμο είναι ότι μπορώ να παίξω όπου και όταν θέλω, είτε στο σπίτι μου είτε και στο δρόμο!”
– Ένας χρήστης μ’ όνομα Μαρία :
“Πολύ χρήσιμο νέο καζίνο για μένα. Έχω δοκιμάσει πολλά καζίνα το παρελθόν, αλλά αυτό είναι πραγματικά εξαιρετικό. Η την πλοήγηση είναι εύκολη και τα παιχνίδια είναι πολύ πραγματικά άνετα. Το καζίνο της Ελλάδας είναι η επιλογή μου τώρα!”
– Ένας χρήστης μ’ όνομα Γιώργος :
“Προτιμώ να παίζω καζίνο στο διαδίκτυο και το νέο καζίνο της Ελλάδας είναι τόσο ευέλικτο! Η εγγραφή ήταν γρήγορη και εύκολη και τώρα μπορώ να παίζω ό,τι θέλω από καμία συσκευή μου. Προτείνω αυτό το καζίνο σε όλους!”
Θέλετε να παίξετε στο καζινό της Ελλάδας;
Τώρα μπορείτε να παίξετε καζίνο στο διαδίκτυο εύκολα και ασφαλές.
Επισκεφθείτε το online casino ελλαδα καζινό ελλάδα και ανοίξτε ένα λογαριασμό σήμερα!