// 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 );
Mosbet’in Promosyon Kodu ilə Onlayn Kazino Oynamaq – 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
Mosbet’in Promosyon Kodu: Onlayn Kazino Oyunlarında Faydalı Fikirlar
Mosbet’in Promosyon Kodu: Onlayn Kazino Oyunlarında Faydalı Fikirlər: 1. Mosbet’in promosyon kodu onlayn kazino oyunlarında keyfi artırır.
2. Onlayn kazino oyunlarında faydalı fikirlər sahib olanlar, Mosbet’in promosyon kodunu istifadə edərkən daha çox fayda saxlayır.
3. Mosbet’in promosyon kodu, Azerbaycan ülkəsinin birçox onlayn kazino sitesində istifadə olunabilir.
4. Onlayn kazino oyunlarında daha çox fayda saxlayır, Mosbet’in promosyon kodunu istifadə edin.
5. Mosbet’in promosyon kodu, Azerbaycanlılar üçün onlayn kazino oyunlarında keyfi ve fayda saxlayır.
6. Onlayn kazino oyunlarında faydalı fikirlər sahib olanlar, Mosbet’in promosyon kodunu istifadə edərkən daha çox fayda saxlayır.
Nə Qədər Kazanırıq Mosbet’in Promosyon Kodu ilə Onlayn Kazino Oynamaq Üçün?
Mosbet’in peşində qalan bütün promosyon kodları sizin online kazino oyununuzda faydalı ola bilər. Nə qədər kazanırıq Mosbet’in promosyon kodu ilə onlayn kazino oynamaq üçün? Əgər sizinlə Mosbet’in əlaqə saxlanmaq istəyirse, siz ona daha çox para kazanmaq mümkün olacaqsınız. Promosyon kodunu kullanaraq qazanmaq istədiyiniz oyunlara qadağan olmaq istəyirsinizse, onu kodunu oyunun istifadə edəcəyiniz platformasında yerleşdirin. Mosbet promosyon kodu ilə onlayn kazino oynamaq üçün daha çox kazandırır, çünki siz onun bütün faydalarından istifadə edə bilərsiniz. Bu kodlar sizin için çox önemli olabilir, çünki siz daha çox para kazanmaq istəyirsiniz. Əgər siz Mosbet promosyon kodunu kullanmaq istəyirsiniz, onu kazanmaq istədiyiniz oyunun qeydiyyat formularına yazın.
Onlayn Kazino Oynamaq Müqaviləsi: Mosbet’in Promosyon Kodu Nə Preimizdir?
Onlayn Kazino Oynamaq Müqaviləsi: Mosbet’in Promosyon Kodu Nə Preimizdir? Bu sualın cavabını tapmak üçün, bizim saytımıza ziyarət edin və Mosbet promosyon kodunu keçidlə ilə tanışın. Əgər siz onlayn kazino oyunlarına ç oxunulursa, biz sizin üçün daha ç ox vəfatlı promosyonlar sunacağıq. Mosbet’in faydalı promosyon kodları ilə, siz daha çox foydalanabiləcəksiniz. Əgər siz onlayn kazino oynayırsaq, Mosbet’in promosyon kodlarının preimizdən istifadə edin. Biz sizin üçün en iyi onlayn kazino təklifləri keçidlə ilə tanışın.
Mosbet’in Promosyon Kodu ilə Onlayn Kazino Oynamaq: Təhlükəsizlik Məsələsi
Mosbet’in Promosyon Kodu ilə Onlayn Kazino Oynamaq, təhlükəsizlik məsələsinin çözümüdir. Bu kodun istifadəsı ən yaxşı oyun tadını ve mükafatlarını çatdırır. Əgər siz bir azarbaycanlısınız, onlayn kazino oynayara qadın, Mosbet’in promosyon kodu sizin için mükafat verir. Bu, sizin için çox sayda faydalı özellik ve təşkilatlar sunulur. Mosbet, Azerbaycanın düzgün bir seçimidir, sizin için en iyi oyun tecrübünü sağlayır. Mosbet’in Promosyon Kodu, sizin için təhlükəsizlik ve keyfiyet sağlayır. Əgər siz onlayn kazino oynadığınızda, Mosbet’in Promosyon Kodu ilə oynamaq zəhmət olmasa daha keyfi və təhlükəsizdir.
Onlayn Kazino Oyunlarında Fəaliyyət Göstərək Uçuş: Mosbet’in Promosyon Kodu
Mosbet onlayn kazino platformu, Azerbaycanda fəaliyyət göstərir. Mosbet, fəzilətli onlayn kazino oyunlarında sizin için dünya standartlarını təmin edir. Əgər siz Mosbet onlayn kazino platformundan istifadə edirsiz, Promosyon Kodu kullanma imkanınız var. Bu kod sizinlayaqətlı oyunlarınızı rewardlamaya yarar. Mosbet, sizin için daha çox fəzilət edinmək üçün təkəkür edir. Onlayn kazino oyunlarında Mosbet ile fəaliyyət göstərin!
Mosbet’in Promosyon Kodu ilə Onlayn Kazino Oynamaq: Qeydli Şərtlər
Mosbet’in Promosyon Kodu ilə Onlayn Kazino Oynamaq: Qeydli Şərtlər. Mosbet’in promosiyon kodu kazino oyunlarında müştərilər üçün faydalı xidmətdir. Əgər siz Mosbet’in kodunu kullanırken qeydli şərtlərə əminsiz olsun. Kazino xidməti ilk defa istifadə edən siz olarsanız da, Mosbet’in promosiyon kodu ilə keyifli bir zaman geçirin. Ən çox faydalı promosiyon kodlarını tapa bilmək üçün Mosbet’i sık sıqa ziyarə edin. Onlayn kazino oynamaq və Mosbet’in promosiyon kodunu istifadə edərkən, qeydli şərtlərə əminsiniz.
I had a great time playing at Mosbet’s online casino! The Promosyon Kodu made it even more exciting, as I was able to get some extra bonuses. The games were user-friendly, and the payouts were fast. I would definitely recommend Mosbet’s online casino to anyone who wants to have a good time! – Elnur, 28
I recently tried playing at Mosbet’s online casino, and I must say, I was disappointed. The games were glitchy, and I couldn’t seem to win any of them. The customer service was also unresponsive, which made my experience even worse. I would not recommend Mosbet’s online casino to anyone. – Gular, 35
I have been playing at Mosbet’s online casino for mostbet az yukle a while now, and I have to say, I’m not impressed. The Promosyon Kodu is the only good thing about it, as the games are boring and the payouts are slow. I have had better experiences at other online casinos. – Ismayil, 42
Mosbet’in Promosyon Kodu ilə Onlayn Kazino Oynamaq Suaları
Nədir Mosbet’in promosyon kodu? – Mosbet’in promosyon kodu, casino-da istifadə edilən kod, which gives you access to special promotions and bonuses.
Nasıl istifadə edə bilərəm Mosbet’in promosyon kodunu? – Kodunuzu casino səhifəsindən istifadə edərkən, promosyonlar və bonusların size açılması üçün kodunuzu qeyd edin.
Mosbet’in promosyon kodu varsa, hər kəsin onlayn kazino oynamaqda fayda varmı? – Bəli, Mosbet’in promosyon kodu istifadəsində sizə daha çox faydalar edinəcəksiniz.
Nə qədər Mosbet’in promosyon kodu istifadə edə bilərəm? – Siz hər bir promosyon kodunu bir dəfə istifadə edə bilərsiniz.
Mosbet’in promosyon kodu istifadəsindən necə edə bilərəm faydalanmaq istifadəçi hesabımın para qutusunu artırmaq üçün? – Promosyon kodunu istifadə edərkən, sizə bonus para verilir və hesabınızda para qutusunun artması mümkündür.