// 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 );
Mostbet Coin nə İşə Yarar: Bahis Strategiyalarında İstifadəsi – 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
Mostbet Coin nə İşə Yarar: Bahis Strategiyalarında İstifadəsi
Mostbet coin, Mostbet platformasında istifadəçilərə əlavə üstünlüklər və bonuslar qazandıran bir virtual valyutadır. Bu coinlər əsasən oyun və bahis təcrübəsini zənginləşdirmək, bonus qazanmaq və platforma daxilində daha sərbəst əməliyyatlar aparmaq məqsədilə istifadə edilir. Bahis strategiyalarında Mostbet coinlərin istifadəsi, oyunçulara riskləri azaltmaq və qazanma şansını artırmaq imkanı verir. Məqalədə Mostbet coinlərin nə işə yaradığı və bahis strategiyalarında necə effektiv istifadə edilə biləcəyini ətraflı şəkildə izah edəcəyik. Eyni zamanda, bu virtual valyutanın oyunçu üçün faydaları və strateji tətbiqləri mövzusunda dərin məlumat verəcəyik.
Mostbet Coin: Əsas Funksiyaları və İstifadə Sahələri
Mostbet coinlər, Mostbet platformasında real pula bərabər olmayan, lakin oyunlarda və bahislərdə istifadə edilən xüsusi bir virtual valyutadır. Bu coinlər istifadəçilərə aşağıdakı imkanları yaradır:
Bonus kimi təklif edilir və hesabınızı artırmaq üçün istifadə olunur.
Oyunlarda mərc qoymaq üçün istifadə edilir, real pul itirmədən təcrübə qazanmaq üçün əlverişlidir.
Platformanın müxtəlif kampaniyalarında mükafat kimi verilir.
Mostbet hesabına əlavə pul yatırmadan, yalnız coinlərlə oyun oynamaq mümkündür.
Coinləri xüsusi aksiyalar zamanı toplamaq və istifadə etmək olur.
Bu funksionallıqlar sayəsində, Mostbet coinlər oyunçulara əlavə rahatlıq və sürətli əməliyyat aparma imkanı təqdim edir.
Bahis Strategiyalarında Mostbet Coinlərin Rolu
Bahis strategiyalarında Mostbet coinlərin rolu olduqca önəmlidir. Bu coinlər, oyunçulara riskləri azaltmaq və müxtəlif mərc metodlarını sınamaq imkanı yaradır. Bahis zamanı risk idarəsi və gəlir optimizasiyası üçün aşağıdakı qaydalar tətbiq edilə bilər:
Risklərin məhdudlaşdırılması: Coin istifadə edərək real pul itirmədən müxtəlif ssenariləri sınaqdan keçirmək mümkündür.
Diverifikasiya: Mərc məbləğini müxtəlif oyun və hadisələr arasında paylamaq. Coinlərlə daha çox mərc növünü sınamaq asandır.
Bonusların artırılması: Toplanmış coinlərdən istifadə edərək əlavə bonuslar qazana və beləliklə də hesabınızı artırmaq olar.
Psixoloji üstünlük: Real pula mərc edilmədiyi üçün oyunçular daha rahat qərar verə və strateji planlarını sınaqdan keçirə bilərlər.
Uzunmüddətli oyun: Coin sayəsində oyun müddətini uzatmaq və daha çox təcrübə toplamaq mümkün olur.
Bu strategiyalar istifadəçilərə həm daha balanslı, həm də effektiv bahis təcrübəsi təqdim etmək üçün idealdır.
Mostbet Coin Toplama və İstifadə Yolları
Mostbet platformasında coin toplamaq üçün istifadəçilər bir neçə üsuldan faydalana bilərlər. Bu üsullar coinləri toplamaq və gələcək mərc üçün hazırlıq keçmək üçün vacibdir. Əsas toplama metodları aşağıdakılardır: mostbet casino
Kampaniyalarda iştirak: Müxtəlif aksiyalarda aktiv olmaqla coinlər qazanmaq mümkündür.
Mərc edərək bonus almaq: Real mərc etdikcə əlavə coinlər əldə edilir.
Referal sistemləri: Dostlarınızı Mostbet-ə dəvət etməklə coin mükafatları qazanmaq mümkündür.
Gündəlik hədiyyələr və özəl hadisələr: Platforma tərəfindən təşkil olunan xüsusi tədbirlərdən yararlanmaq.
Toplanmış coinlər isə növbəti mərc və ya oyunlarda pul kimi istifadə edilə bilər, bu da oyunçulara əlavə sərbəstlik və üstünlüklər təmin edir.
Mostbet coinlərin bahis strategiyalarında istifadəsi aşağıdakı üstünlükləri ortaya qoyur:
Riskin azaldılması: Real məbləğ itirməkdən çəkindiyiniz zaman coinlərlə mərc etmək daha təhlükəsiz olur.
Mərc variantlarının çoxluğu: Əldə olunan coinlər sayəsində müxtəlif mərc növlərini sınamaq imkanı yaranır.
Maliyyə rahatlığı: Pul yatırmadan oyun oynamaq və hesabı böyütmək mümkündür.
Qazanma şansının artırılması: Toplanmış bonus coinlərdən istifadə edərək bahis şansını artırmaq mümkündür.
Nəzarət və idarəetmə: Coinlərlə bahis etmək, mərc davranışlarına daha yaxşı nəzarət etməyə kömək edir.
Bu üstünlüklər bahis edənlər üçün əlavə motivasiya və daha uğurlu strategiyalar qurmaq üçün əsasdır.
Nəticə
Mostbet coinlər, platforma daxilində oyunçulara əlavə bonuslar və pulsuz mərc imkanları təqdim edən effektiv bir vasitədir. Bahis strategiyalarında coinlərin istifadəsi risk azaltma, maliyyə rahatlığı və müxtəlif mərc modellərinin sınaqdan keçirilməsi kimi faydalar verir. Oyunçular Mostbet coinləri toplayaraq uzunmüddətli və effektiv oyun təcrübəsi əldə edə bilər, bu da qazanma şanslarını əhəmiyyətli dərəcədə artırır. Məqalədə göstərilən toplama üsulları və strategiyalar vasitəsilə, Mostbet coinlərdən maksimum dərəcədə faydalanmaq mümkündür. Ümumiyyətlə, Mostbet coin ne işe yarar sualının cavabı, bahis dünyasında təhlükəsiz və sərfəli oyun təcrübəsi təmin etməkdir.
Tez-tez Verilən Suallar (FAQ)
1. Mostbet coinləri necə toplaya bilərəm?
Mostbet coinləri kampaniyalarda iştirak, mərc etmək, referal proqramları və xüsusi aksiyalar vasitəsilə toplaya bilərsiniz.
2. Mostbet coinləri real pula çevirə bilərəm?
Mostbet coinlər birbaşa real pula çevrilmir, amma platforma daxilində mərc etmək və bonus kimi istifadə etmək mümkündür.
3. Coinlərlə mərc etmək risklidir?
Coinlərlə mərc etmək real pula mərc etməkdən daha az risklidir, çünki itki yalnız virtual valyutada olur.
4. Mostbet coinlər bahis strategiyasında necə istifadə olunur?
Coinlər əsasən risk idarəsi üçün istifadə olunur, yeni strategiyalar sınaqdan keçirilir və iştahalı bonuslar qazanılır.
5. Coin toplamaq üçün ən yaxşı üsul hansıdır?
Kampaniyalarda aktiv olmaq və mərc etmək ən effektiv coin toplama üsullarından biridir.