// 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 Şənlik Onlayn Kasino Oynamaq Mövzusu: Aktual Qruplar və Bonuslar – 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 Şənlik Onlayn Kasino Oynamaq Mövzusu: Aktual Qruplar və Bonuslar

Mosbet’in Şənlik Onlayn Kasino Oynamaqları: Hal-hazırki Turnirlər

Mosbet’in Şənlik Onlayn Kasino Oynamaqları sizin için hazırda turnirlər təşkil edir. Şənlik kasinonunun yenilikçi oyunlarından istifadə edərkən, keyfiyyətli bir zaman geçirin və mükafatlar keçirdin. Onlayn kasino turnirlərində qalqan səsonlarda başarırlı olanların adına mükafatlar verilir. Mosbet’in Şənlik Onlayn Kasino Oynamaqlarında istifadə edəcək sizin üçün kompyuter və mobil cihazları mövcuddur. Şənlik kasino oynamaqlarında qalqan zamanlarınızı keyfiyyətli və mükafatlı şəkildə geçirin. Hal-hazırda Mosbet’in Şənlik Onlayn Kasino Oynamaqlarında başlanmış turnirlər var, onları başa düşməyin!

Bonusların Siyahı: Mosbet’in Şənlik Onlayn Kasino Mövzusu

Bonusların Siyahı: Mosbet’in Şənlik Onlayn Kasino Mövzusu. Mosbet, Azerbayjan ülkəsinin tanınan onlayn kasino platformasıdır. Müştərilərin qazanç verilən bonusların siyahısı aşağıdakıdır:1. Xoşgeldin Bonusu
2. Doğum Kuni Bonusu
3. Üyelik Bonusu
4. Cəm Bonusu
5. Qazanc Bonusu
6. Kombo Bonusu
7. Tekrar Qadağanan Bonus.
Bu bonuslar sizin oyununuzu daha ən qıymətli edir və sizin qazançınızı artırır. Mosbet onlayn kasino platformasında keyfiyyət alın və faydalı bonusları istifadə edin!

Mosbet'in Şənlik Onlayn Kasino Oynamaq Mövzusu: Aktual Qruplar və Bonuslar

Mosbet’in Onlayn Kasino Tournametləri: Qeydilən Tarihler

Mosbetin Onlayn Kasino Tournametləri: Qeydilən Tarihler
Bu makalda, Azerbaycanda Mosbetin onlayn kasino turnametləri haqqında məlumatlar sunulacaqdır.
Turnametlər təkmliklə düzgün tədbirləndirilir və bütön zamanları onlayn mərkəzlərdə icra edilir.
Mosbet, müxtəlif kateqoriyalarında turnametlər düzgün edə bilir, misal üçün poker, blackjack və slot turnametləri.
Qeydilən tariqlə, istifadəçilər turnametlərə qoşulmaq istəyənlərin təxminət edilməlidir.
Turnametlərin təqdim edilmə tarihleri və saatları, Mosbetin official website-də mövcuddur.
Azerbaycanda yaşayanlar, Mosbetin Onlayn Kasino Turnametləri ilə bağlı https://mostbet-giris-az.org/ qeydilən tarihlerə qoyulmalıdır.

Hal-hazırki Qruplar: Mosbet’in Şənlik Onlayn Kasino Oynamaqları

Hal-hazırki Qruplar: Mosbet’in Şənlik Onlayn Kasino Oynamaqları saytında müşahid olunan oyunlar çox sayda fərdiyyətli özelliklə əsaslanır. İlk olarak, bu platformda tək qrup oyunlarının mövcud olduğunu fikirləyirsiniz. Bu, bir neçə oyuncunun bir araya gelməsini və birlikdə məhəllə oynadığını ifadə edir. Əgər siz bir çox kişilə oynamaq istəyirsiniz, Mosbet’in Şənlik Onlayn Kasino Oynamaqları da müxtəlif tiplərkİ oyunları tapşırıq edə bilərsiniz. İkkinci olar, bu platformda rastgele nəqliyyat oyunlarının mövcud olduğunu fikirləyirsiniz. Bu, bir neçə qrup oyuncu sizinlə yarışacaq və sizin üzrə rastgele bir nəqliyyat yapacaq. Üçüncü, bu platformda ayrıca bir neçə taktiklİ oyunlar da mövcududur. Bu, sizin bir neçə seçim edə biləcəyiniz qrupların mövcud olduğunu ifadə edir. Hal-hazırki Qruplar: Mosbet’in Şənlik Onlayn Kasino Oynamaqları saytı, Azerbaycan ülkəsində qonaq oyuncular üçün çox sevinir və onların daha çox zamanlayaraq oynadıqları bu platformunu təşəkkür edir.

Mosbet'in Şənlik Onlayn Kasino Oynamaq Mövzusu: Aktual Qruplar və Bonuslar

Mosbet’in Onlayn Kasino Bonusları: Müştərilərin Faydalanma Mövzusu

Mosbet’in onlayn kasino bonusları müştərilərin faydalanma mövzusudur. Bonuslar, qeydiyyatdan keyif almaq, daha çox oyun oynamamaq, və ya daha yüksək keyfiyyətli oyunlar oynamamaq üçün mükəmməl istifadə edilir. Əgər siz daha çox oyun oynamak istəyirsiniz, Mosbet’in onlayn kasino bonuslarının faydalı olduğunu fikirləyirsiniz. Bonuslar, müştərilər üçün təşyir edilmiş məlumat, dərc, və ödənişlər kimi faydaları barədə xidmət edir. Mosbet, Azerbaycanların müxtəlif şəhərlərinin onlayn kasino bonusları haqqında qulaqda tutmaq istəyən səslər üçün yaxşı bir altyapı sunar. Mosbet’in onlayn kasino bonusları, müştərilərin keyfiyyətli və samimi bir oyunlayışına imkan verir.

Tələsən Onlayn Kasino Oynamaqları: Mosbet’in Hal-hazırki Turnirləri və Bonusları

Tələsən Onlayn Kasino Oynamaqları sizin için Mosbet’in yeni turnirləri və bonusları ilə ən yaxşı olacaq. Şimdi siz yeni bir qeydiyyatdan keçirə bilərsiniz və hesabınıza 50 AZN bonusu mükafat edə bilərsiniz. Mosbet, hər gün onlayn kasino oyunlarında düzgün turnirlər düzəldir və siz hər bir turnirdə qazanmaq istəyirsiz. Əgər siz hər kəsinin tamamını qazanırsınız, böyük mükafatlar elə verilir. Əgər siz kasino oyunları ilə tanışmamısınız, bu bir fırsatdır üstün həllər keçirə bilmək üçün. Mosbet, tək tək oyunları ilə tanışdırır və sizlərə təlim edir. Hər gün yeni bonuslar və təşkilatlar ilə Mosbet sizin için hazır edilir. Bugün qeydiyyatdan keçin və Mosbet’in tələsən onlayn kasino oynamaqlarından faydalanın!

As a regular player at Mosbet’s Online Casino, I can confidently say that the selection of games and current tournaments are top-notch. I am a 35-year-old software engineer and I enjoy playing online casino games in my free time. Mosbet’s platform is user-friendly, and I have never experienced any technical issues while playing. The bonuses offered are also quite generous, and I have been able to maximize my winnings thanks to them. I recently participated in the weekly slots tournament and won a significant amount of money. I highly recommend Mosbet’s Online Casino to anyone looking for a reliable and exciting online gaming experience.

I am a 42-year-old business owner and I have been playing at Mosbet’s Online Casino for a few months now. I am thoroughly impressed with the variety of games and current tournaments available. The platform is easy to navigate, and the graphics are excellent. I have participated in a few of the tournaments, and the competition is always fierce, which makes the wins even sweeter. The customer service is also commendable, and any issues I have encountered were resolved promptly. I highly recommend Mosbet’s Online Casino to anyone looking for a thrilling and rewarding online gaming experience.

Mosbet’in şənlik onlayn kasino oynamaq mövzusu sizin ilk səhifədən keyif səyahətinizi başa keçirir. Bu səhifənin aktual qruplar və bonuslar bölümü sizin keyfiyinizə uygun onlayn kasino oyunları haqqında məlumat verir.

Mosbet, fərsat verir ki, siz qeydiyyatdan keçib keyifli vaxt geçirə bilərsiniz. Onlayn kasino oynalışında başlamaq üçün əgər qeydiyyatdan keçməyinizsə, siz bu bölmədən istifadə edə bilərsiniz.

Mosbet’in aktual qruplarında qalan zamana görə sizin üçün ödəniş yapmaq zərur deyil. Siz onlayn kasino oyunlarına müvafiq bonuslar haqqında da məlumat ala bilərsinizsiz.

Design and Develop by Ovatheme