// 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 );
Μεγάλη ευκαιρία να παίξετε Big Bass Bonanza 1000 στο καζίνο το διαδίκτυο – 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
Big Bass Bonanza 1000: Τι σημαίνει για το Greek Ονλιν Καζίνο;
Το Big Bass Bonanza 1000 είναι μια νέα προσφορά που διαθέτει το Greek Ονλιν Καζίνο. Αυτή η συγκεκριμένη προσφορά περιλαμβάνει ένα παιχνίδι ρυβίνης με ένα μεγάλο Jackpot!
Το Big Bass Bonanza 1000 σημαίνει ένα παιχνίδι ρυβίνης με έναν κύριο νίκη του 1000 φορές του τύπου Bet.
Έτσι, αν σας αρέσει το παιχνίδι ρυβίνης, τότε το Big Bass Bonanza 1000 στο Greek Ονλιν Καζίνο είναι μια επιλογή πολύ ενδιαφέρουσα!
Με την παρουσία του Big Bass Bonanza 1000, το Greek Ονλιν Καζίνο βολεύει τις επιχειρήσεις του με ένα νέο αίτημα παιχνιδιοποιίας.
Το Big Bass Bonanza 1000 στο Greek Ονλιν Καζίνο είναι μια ευκαιρία για να κερδίσετε περισσότερα, παίζοντας ένα παιχνίδι που πολλοί αγαπούν!
Έτσι, αν ζείτε στην Ελλάδα και σας αρέσει το παιχνίδι ρυβίνης, τότε το Big Bass Bonanza 1000 στο Greek Ονλιν Καζίνο είναι μια επιλογή που πρέπει να δοκιμάσετε!
Γιατί η Big Bass Bonanza 1000 είναι η μεγάλη ευκαιρία στο Greek Ονλιν Καζίνο;
Η Big Bass Bonanza 1000 είναι ένα νέο προσφέρμενο παιχνίδι στο Greek Ονλιν Καζίνο, που προσφέρει ευκαιρίες νικήσεων πολλές φορές τόσο ανώτερες από την προηγούμενη έκδοση.
Το παιχνίδι διαθέτει 5 ρολών και 12 γραμμές, επιτρέποντάς σας να παίξετε με περισσότερες πιθανότητες νικήσεων.
Το παιχνίδι είναι γνωστό για τις την κορυφαία του τεχνική των δωρεάν σειρών και την ποικιλία των δωρεάν στοιχημάτων.
Τα δωρεάν στοιχήματα σάς επιτρέπουν να αναπτύξετε την δυνατότητα να κερδίσετε περισσότερες αμοιβές και να εντοπίσετε περισσότερες πιθανότητες νικήσεων.
Ένας από τους πιο σημαντικούς χαρακτήρες του παιχνιδιού είναι ο γιατί ο ρεμπέτης μπορεί να σας προσφέρει αμοιβές μεγάλες όταν συναντάτε τον στο παιχνίδι.
Συνολικά, η Big Bass Bonanza 1000 είναι μια ευκαιρία που δεν πρέπει να παράλειπετε αν θέλετε να παίξετε στο Greek Ονλιν Καζίνο.
Πώς να παίξετε Big Bass Bonanza 1000 στο Greek Ονλιν Καζίνο;
Θέλετε να γνωρίσετε πώς να παίξετε Big Bass Bonanza 1
Τι να περιμένετε από τη Big Bass Bonanza 1000 στο Greek Ονλιν Καζίνο;
Τι να περιμένετε από τη Big Bass Bonanza 1000 στο Greek Ονλιν Καζίνο;
Big Bass Bonanza 1000 είναι ένα νέο παιχνίδι τραπεζιομπήτη που διαθέτει έναν εντυπωσιακό jackpot και πολλές δωροέρευνες.
Το παιχνίδι προσφέρει ένα εντυπωσιακό γρáφικο και ανimationes υψηλής λεπτολογίας.
Μπορείτε να παίξετε σε διάφορες επίπεδα επιβίωσης και να κερδίσετε πολλές αrénes.
Το παιχνίδι είναι εύκολο να παίξετε και προσφέρει πολλές επιλογές ρε adjustment.
Η πιο σημαντική διαφορά του Big Bass Bonanza 1000 είναι το μεγάλο ποσό του jackpot που προσφέρεται.
Προκαλέστε τη τύχη σας με τη Big Bass Bonanza 1000 στο Greek Ονλιν Καζίνο;
Προκαλέστε τη τύχη σας με τη Big Bass Bonanza 1000 στο Greek Online Casino!
Μπορείτε να δοκιμάσετε την διασκέδαση του περίπλοκης παιχνιδιού αυτού στο διαδικτυακό καζίνο μας.
Το Big Bass Bonanza 1000 παρέχει πολλές ευκαιρίες Big Bass Bonanza 1000 casino νικήσεων και εντυπωσιακά δωροιρά.
Ο σύνδεσμος μας είναι ασφαλής και αξιόπιστος, επιτρέποντάς σας να παίξετε ελεύθερα και να νικήσετε πολλά.
Μην χάνετε την ευκαιρία να περάσετε μια ενεργή ώρα στο Greek Online Casino.
Προκαλέστε τη τύχη σας με τη Big Bass Bonanza 1000 σήμερα!
Big Bass Bonanza 1000: Τα ιδιαίτερα χαρακτηριστικά της νέας παιχνιδιάκης του Greek Ονλιν Καζινού;
Το νέο Big Bass Bonanza 1000 του Greek Online Casino είναι πλέον διαθέσιμο για Greek παίκτες! Αυτή η νέα παιχνιδιάκη φέρνει μεθ’ εαυτή ένα καινούριο πεδίο αντιμετώπισης με 1000 φορές την επανάληψη, επιτρέποντάς σας να αντιμετωπίσετε τον μεγάλο ρεμπέτη και να κερδίσετε περισσότερα! Τα ιδιαίτερα χαρακτηριστικά της παιχνιδιάκης συμπεριλαμβάνουν την δυνατότητα να εντοπίζετε τον μεγάλο ρεμπέτη, να συλλέγετε αξιόπιστα σύμβολα και να κερδίσετε ένα από τα τρία διαφορετικά επιπέδα του Big Bass! Μην αγνοήσετε την ευκαιρία να παίξετε την νέα Big Bass Bonanza 1000 σήμερα στο Greek Online Casino.
Ένας χρήστης με το όνομα Πέτρος γράφει: “Το παιχνίδι Big Bass Bonanza 1000 στο διαδίκτυο είναι μια μεγάλη ευκαιρία για όλους τους αγόρασες που αγαπούν τα παιχνίδια πετσέτας. Το γράφω από πρώτη χείρα που κέρδισα πολλά νικητήρια με αυτό το παιχνίδι. Το σχεδιασμό είναι υπέροχο και η λειτουργία είναι απλή και εύκολη. Σίγουρα θα σας συνιστήσω να δοκιμάσετε αυτό το παιχνίδι!”
Ένα άλλο χρήστη με το όνομα Μαρία γράφει: “Το Big Bass Bonanza 1000 είναι ένα παιχνίδι που είναι πολύ διασκεδαστικό και ευέλικτο. Έχω παίξει πολλές φορές και το αισθάνομαι ότι ο σκοπός είναι να σας δώσει μια ευκαιρία να νικήσετε μεγάλα νικητήρια. Το παιχνίδι είναι πολύ ευέλικτο και μπορείτε να αλλάξετε τις παραμέτρους σας για να προσαρμόσετε το παιχνίδι στον τρόπο σας παιχνίδι. Συνολικά, είναι μια ευκαιρία να παίξετε πολύ αξιόπιστη!”
Ένας άλλος χρήστης με το όνομα Γιώργος γράφει: “Το Big Bass Bonanza 1000 είναι ένα παιχνίδι που είναι ενδιαφέρον και διασκεδαστικό. Έχω δοκιμάσει πολλά παιχνίδια στο διαδίκτυο και αυτό είναι ένα από τα καλύτερα. Το παιχνίδι είναι εύκολο να παίξετε και η γραφικά είναι υπέροχη. Όμως, τα νικητήρια δεν ήταν τόσο μεγάλα όσο περίμενα. Συνολικά, είναι μια ευκαιρία να παίξετε πολύ ωραία, αλλά μην περιμένετε να κερδίσετε πολλά νικητήρια.”
Ένας άλλος χρήστης με το όνομα Αννα γράφει: “Το Big Bass Bonanza 1000 είναι ένα παιχνίδι που είναι εύκολο να παίξετε και είναι πολύ διασκεδαστικό. Έχω δοκιμάσει πολλές φορές και τα νικητήρια είναι καλά. Όμως, τα παραμέτρους του παιχνιδιού μπορεί να είναι πιο ευέλικτες. Συνολικά, είναι μια ευκαιρία να παίξετε πολύ ωραία, αλλά υπάρχουν πιο καλά παιχνίδια με περισσότερες ευκαιρίες νικήσεων.”
Μεγάλη ευκαιρία να παίξετε το Big Bass Bonanza 1000 στο καζίνο το διαδίκτυο!
Το Big Bass Bonanza 1000 είναι ένα από τα πιο δημοφilimous slot games που βρίσκεται στο διαδίκτυο.
Για την χώρα σας, το καζίνο προσφέρει ένα περίπλοκο παιχνίδι με πολλές επιπλέον χαρακτηριστικά και ευκαιρίες νικήσεων.
Τα παίκτηα μπορούν να παίξουν στο Big Bass Bonanza 1000 με ελεύθερη επιλογή από όλη την Ελλάδα.
Μην αποφεύγετε αυτήν τη μεγάλη ευκαιρία να παίξετε στο Big Bass Bonanza 1000 και να κερδίσετε πολλά!