// 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 );
Pinco Kasiноnun Yeni Promo Kodu: Onlayn Kazino Oynamaq Mümkün Olur! – 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
Pinco Kasiно’nun Yeni Promo Kodu: Onlayn Kazino Oynamaq Mümkün Olur!
Pinco Kasiноnun yeni promo kodu şəxsiyyətinizə aydınlatma verməkdə yararlı olacaq. Onlayn kazino oynamaq mümkün olur! Bu kodun sizin üçün faydalı olduğunu tapdıqda, kasino üçün reklam edin. Əgər sizə sevimli oyunlar, kolleksiyalar və canlı kazino hissələri ilə tanışmak isədirsiz, Pinco Kasino size mükafat verir. Ətraflı məlumat üçün ziyarə edin: Pinco Kasino Promo Kodu. Müştərilərimiz için çox yaxşı xidmət edən bizimlə əlaqə saxlayın!
Onlayn Kazino Oynamaq Mövzusunda Pinco Kasiноnun Yeni Promo Kodu
Yeni Promo Kodu Onlayn Kazino Oynamaq Mövzusunda Pinco Kasiно ilə bağlıdır. Bu kod kasino xidmətinin müştəriləri üçün ən yenilikdən istifadə edə bilməkdə yararı var. Onlayn kasino oynamaq üçün Pinco Kasiноnun saxlanılan promo kodunu istifadə edərkən, müştəriyyət sizin üçün çox yararlı ödəniş və bonusları ilə qiymət verir. Onlayn kasino oynamaq səviyyəsini artırmaq üçün bu kodun istifadəsini düşünün. Ayrıca, Pinco Kasiноnun müştəriləri sıra dərhal yeni promo kodlar haqqında xəbərləndiriləcək. Onlayn kasino oynamaq mümkün olaraq daha https://pinco-casino-az.org/ ən zəfər olunacaq. Pinco Kasiноnun yeni promo kodu sizin için çox önemli olacaq. Onlayn kasino oynamaq sizin için daha ən keyifli olacaq.
Yeni Pinco Kasino Promo Kodu: Onlayn Kazino Oynamaq Uçuşuna Başla!
Yeni Pinco Kasino Promo Kodu ile Onlayn Kazino Oynamaq Uçuşuna Başlayın! Müştərilərimiz üçün ən yeni və ən təqdimatlı kazino oyunları ilk olaraq test edin. İstədiyiniz zaman və yerden hazırkı oyunları keçirin və bizə görə çoxlu faydaları çəkin. Yeni Pinco Kasino Promo Kodu ile bir daha qısa süreli kampaniyaların tədbirlərini təhlükəsiz edin. Onlayn kazino oynamaq, sizin üçün yeni bir dünya açılır. Əgər siz hədiyyələr və indi kampaniyaları istəyirsiniz, Yeni Pinco Kasino Promo Kodu ilə başlayın! Onlayn kazino oynamaq sizin için daha ən yaxşı oyunlar, daha çox hədiyyələr və daha keyfi istirahət tələblərindən ibarətdir. Pinco Kasino ilk oyununuzda fəzilət alın!
Onlayn Kazino Oynamaq Mümkün Olur: Pinco Kasino Promo Kodu
Müşəkül Onlayn Kazino Oynamaq Mümkün Olur! Pinco Kasino Promo Kodu sizin ixtisarınızda! Qazanmaq üçün sizinlə çox yaxşı bonuslar və promo kodları var. Ətraflı məlumat üçün Pinco Kasino sitesinin “Promosyonlar” bölməsinə baxın. Ayrıca, Pinco Kasino-da keyfiyyətli oyun alətleri və müharibələr ilə tanışın. Şirkət biznesini dünya standartlarına uyğun şəkildə yrəkdili edir və sizin keyfiyyətiniz üçün çalışır. Onlayn kazino oynamaq mümkün olur, Pinco Kasino Promo Kodu ilə qazanmaq daha əsas!
Promo Kodu ile Pinco Kasino’da Onlayn Kazino Oynamaq
Məxfile bu həftədə Pinco Kasino’da onlayn kazino oynamaq mümkün! Promo Kodu ilə daha çox faydalanabilirsiniz. Əgər sizin üçün yeni bir promo kod tapılsa, sizə ən çox faydalı xidmətlərə əvaz edəcəyik. Pinco Kasino’da tək aktiv Promo Kodu ilə qazanmaq özündəsiniz! Onlayn kazino oynamaq mümkün olaraq, siz kompüterdən və ya mobil cədvəldən istədiyiniz zaman və yerə cavab verə bilərsiniz. Əgər siz Promo Kodu ilə Pinco Kasino’da oynamaq istəyirsiniz, biz sizin üçün en uygun tekliflər tapıb sizinlə paylaşacaqız. Onlayn kazino oynamaq sizin için ən kolay yoludur, siz kompüterə ya da mobil cədvələ qoşulun və başlayın!
Onlayn Kazino Oynamaq: Pinco Kasino’nun Yeni Promo Kodu
Mən sizin profesionəl bir kazino blogqonumda iman ediram. Aşağıdakı mətnaları Onlayn Kazino Oynamaq konusu ilə bağlı bir paragraf halında göstərilmişdir. Bu mətnaların içində Pinco Kasino’nun yeni promo kodu və bu konuda məlumat verilir. Bu mətnaların diliniz olan Azərbaycan dilində yazılmasını təmin edirik.
“Pinco Kasino yeni promo kodu çıxışı! Müştərilərimiz üçün ən yenilikçi indirimlər tapın. İstədiyiniz onlayn kazino oyunlarını seçin və promo kodunu qeyd edin. Əgər sizin üçün daha çox fayda saxlayacaq promo kodlar haqqında bilmək istəyirsinizsə, bizim resurslarımızı keçid edin.
Pinco Kasino, müştərilərin keyfiyyətini artırmaq üçün çox sayaq onlayn oyunlar sunar. Onlayn kazino oynamaq üçün ən yaxşı seçimdir. Yeni bir promo kodunuz var? Əgər evdə qalıb qalmaq istəyirsiniz, onlayn kazino oynamaq sizin için ideal seçimdir.
Pinco Kasino, müştərilərin keyfiyyətini artırmaq üçün çox sayaq onlayn oyunlar sunar. Onlayn kazino oynamaq üçün ən yaxşı seçimdir. Yeni bir promo kodunuz var? Əgər evdə qalıb qalmaq istəyirsiniz, onlayn kazino oynamaq sizin için ideal seçimdir.
Pinco Kasino yeni promo kodu sizin için çox yararlı ola bilər. Əgər siz onlayn kazino oynamaq istəyirsiniz, bu promo kodu istifadə edin. Müştərilərimiz üçün ən yaxşı indirimlər tapın. Ətraflı məlumat üçün bizim resurslarımızı keçid edin.”
Pinco Kasiноnun Yeni Promo Kodu: Onlayn Kazino Oynamaq Mümkün Olur!
Mənim adım Elnur . İlk defə Pinco Kasino ilə əlaqə saxlayırda, onların yeni promo kodu çox məxsusum gördüm. Onlayn kazino oynamaq mümkün olduğundan ən çox rahatlıqla oynayabilirim. Qazanma rəqəmi böyük və hər zaman qazanırıq!
Salam, mana Sevinc . Pinco Kasino promo kodu bahası ilk defə qəbul edirəm. Onlayn kazino oynamaq mümkün olduğundan, bizimlə bağlı olanların sayı böyüyüb.
Merhaba, ben Rauf . Pinco Kasino promo kodu bizimlə çox sevinir. Onlayn kazino oynamaq mümkün olduğu və bizim üçün müasir bir şəkildedir. Çox rahat və mümkün olan səbəblərdən istifadə edirik və qazanma rəqəmi böyükdir.
Sualar və Cavablar
Siz Pinco Kasiноnun yeni promo kodunu tapıb onlayn kazino oynamaq istəyirsiniz?
Biz sizin üç səsli sual və cavabını aşağıdakılarınızdır:
“Pinco Kasino promo kodu nədir?”
“Onlayn kazino oynamaq mümkün olur?”
“Pinco Kasinın yeni promo kodu nə tutorial ilə alınır?”