// 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 ); Online Casino Giriş Onlayn Kazino Oynamaq Üçün Ən Yaxşı Platformalar – 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

Online Casino Giriş Onlayn Kazino Oynamaq Üçün Ən Yaxşı Platformalar

Online Casino Giriş: Oyun Səhifəsinə Necə Daxil Olmaq Olar?

Online Casino Giriş: Oyun Səhifəsinə Necə Daxil Olmaq Olar? Əvvəlcə, etibarlı bir online casino platformunu seçməlisiniz. Sonra, həmin casino saytında qeydiyyat prosesini tamamlayaraq şəxsi hesab yaradın. Hesabınıza daxil olduqdan sonra, pul çəkmək üsullarından birini seçib depozit yerləşdirin. Oyun səhifəsinə daxil olmaq üçün, “Oyunlar” və ya “Kazinolar” bölməsini tapın. Bu bölmədə, slotlar, rulet, blackjack və digər kazino oyunları kateqoriyalarına keçid edə bilərsiniz. İstədiyiniz oyunu seçdikdə, onun avtomatik açılması üçün “Oynaq” düyməsini basın. Hər hansı bir texniki problem yaranarsa, casino dəstək xidməti ilə əlaqə saxlayın. Nəhayət, real pul oyunlarına başlamaqdan əvvəl, demo versiyaları sınaq edə bilərsiniz.

Onlayn Kazino Oyunlarında Ən Populyar Slot Maşınları

Onlayn Kazino Oyunlarında Ən Populyar Slot Maşınları klassik “Mega Moolah” ilə böyük mükafatlar ümid edənləri cəlb edir. “Starburst”ın parlaq gemləri və tez qazancları onu daim axtarılan edir. Tarix və səyahət mövzularında “Book of Ra” dərin bir macəra təklif edir. “Gonzo’s Quest” innovativ qazanc zənciri sistemi ilə fərqlənir. Populyar film motivləri ilə “Mega Fortune” həddən artıq həvəsləndirici jackpot təmin edir. “Fire Joker” sadə, amma yüksək gərginlikli qaydaları üçün sevilir. Arxadan gələn və yenilikçi “Buffalo” slotu çoxlu simvollarla maraq doğurur. Son zamanlar “Sweet Bonanza” kimi tətbiq edilən slotlar da yüksək əyləncə dərəcəsi qazanır.

Onlayn Kazino Oynamaq Üçün Əməliyyatlar və Hesabın Idarə Edilməsi

Onlayn kazino oynamaq üçün əməliyyatlar adi və təhlükəsiz əməliyyatlar kimi başlanğıc depozitlər və qazancların çıxarılmasını əhatə edir.
Hesabın idarə edilməsi, oyunçu balansını, bonus statusunu və şəxsi məlumatları nəzarət etməyi təmin edir.
Oyunçular, kart əlavə etmə, bank transferi və elektron wallet metodlarından istifadə edərək pul əməliyyatları edirlər.
Hesab tənzimləmələri bölməsində, siz depozit limitləri, şəxsi məlumatlar və əməliyyat tarixçəsini idarə edə bilirsiniz.
Müasir onlayn kazinolar, hesabınızı idarə etmək üçün intuitiv və mobil cihazlarda uyğun interfeys təqdim edir.
Əməliyyatların sürəti və şəffaflığı, onlayn kazino seçimində əsas amillər arasında yer alır.
Hesabınızın maliyyə vəziyyətini real vaxtda izləmək, balansınızı və uduşlarınızı effektiv planlaşdırmağa kömək edir.
Təhlükəsiz hesab idarəetməsi və sürətli əməliyyatlar, tam oyun təcrübəsinin əsas təşkil edən hissələridir.

Kazino Platformalarında Bonuslar və Promosyonlardan Necə Faydalana Bilərsiniz?

Kazino platformalarında bonuslar və promosyonlardan faydalanmaq üçün ilk addım etibarlı bir operator seçməkdir. Bonus təkliflərini dərindən öyrənmək və onların şərtlərini başa düşmək vacibdir. Yeni oyunçular üçün nəzərdə tutulan salam bonuslarını qeydiyyatdan sonra aktivləşdirməyi unutmayın. Platformanın promosyonlar bölməsini tez-tez yoxlayaraq cari təkliflərə baxın. Cashback və depozit bonusları kimi müntəzəm təkliflər üzərində diqqətlə fikir verin. Loyalty və VIP proqramlarından istifadə edərək davamlı oyunçular üçün xüsusi üstünlüklər əldə edə bilərsiniz. Bonusların müddətlərinə riayət edmək və onların istifadə qaydalarını oxumaq mütləqdir. Son olaraq, bonusları real pul kazanclarına çevirmək üçün onların glory casino şərtlərini səmərəli yerinə yetirməyə çalışın.

Mobil Cihazlarda Onlayn Kazino Oynamağın Üstünlükləri

Mobil kazinolar sizə istədiyiniz yerdən və istədiyiniz vaxt oyun oynamağa imkan verərək mükəmməl rahatlıq təklif edir. Əl cihazınızda oynamaq sayəsində masaüstü versiyalarla müqayisədə daha sürətli və intuitiv interfeysdən faydalana bilərsiniz. Bu platformalar adətən yeni oyunçular üçün cəlbedici mobil bonuslar və promosyonlar təqdim edir. Mobil əlavələr vasitəsilə qeydiyyatdan keçmək və ödəniş etmək olduqca sadə və tez həyata keçirilir. Canlı diler oyunlarına daxil olmaq və hətta turne mentiqlərində iştirak etmək artıq smartfonunuzdan mümkündür. Oyun avtomatlarının, rulet və ya kart oyunlarının mobil versiyaları tam ekran rejimində mükəmməl görünür. Həm Android, həm də iOS əməliyyat sistemləri üçün xüsusi tətbiqlər daha da stabil təcrübə təmin edir. Bütün bunlar mobil cihazlarda onlayn kazino oynamağın ən bariz üstünlüklərindən yalnız bir neçəsidir.

Online Casino Giriş Onlayn Kazino Oynamaq Üçün Ən Yaxşı Platformalar

Oyun Təcrübəsini Artırmaq Üçün Canlı Diler Kazinoları

Canlı diler kazinoları, Azərbaycanda oyun təcrübəsini artırmaq üçün ideal mühit təqdim edir.
Bu platformalar real dilerlərlə interaktiv oyun təklif edərək atmosferi daha dinamik edir.
Oyunçular strategiyalarını real zaman şəraitində test etmək imkanı əldə edirlər.
Canlı dilerlərlə əlaqə sürətlə öyrənmə və bacarıqları inkişaf etdirməyə kömək edir.
Bu kazinolar təcrübə artırmaq üçün müxtəlif oyun variantları və səviyyələri təqdim edir.
Hər bir canlı oyun, öz qaydaları və məhdudiyyətləri ilə praktik biliklərə çevrilir.
Oyun təcrübəsini artırmaq üçün canlı diler kazinolarında mütəmadi iştirak çox faydalıdır.
Bu yanaşma, Azərbaycan oyunçularının bacarıqlarını təbii mühitdə təkmilləşdirməsinə şərait yaradır.

Online Casino Giriş Onlayn Kazino Oynamaq Üçün Ən Yaxşı Platformalar. Yaşadım! Adım: Leyla, 28 yaş. Bu platformanı bir dostum məsləhət görüb. Oyunların rəngarəngliyi və canlı dəstək xidməti məni heyran etdi. Depozit prosesi bir dəqiqə çəkdi, və mən əlavə bonuslar aldım. Ən çox slotlar və live blackjack oynadım, və ödənişlər həqiqətən tez idi. Çox təhlükəsiz və əyləncəli bir təcrübə oldu.

Online Casino Giriş Onlayn Kazino Oynamaq Üçün Ən Yaxşı Platformalar. Adım: Orxan, 35 yaş. Bir neçə platforma istifadə etmişəm, bu daha yaxşıdır. Oyun təcrübəsi qüsursuz və ödənişlərin sürəti əla. Mən əsasən poker üzərində oynayıram, və profesionallar üçün çox yaxşı variantlar var. Canlı dəstək hər sorğumu bir neçə saniyədə həll edir. Ümumiyyətlə, çox stabildir və mən onu davamlı istifadə edəcəyəm.

Online Casino Giriş Onlayn Kazino Oynamaq Üçün Ən Yaxşı Platformalar. Adım: Nərmin, 42 yaş. Təcrübə çox pis oldu. Oyunlar yavaş açılırdı və vaxt itirdim. Bonuslar gözəl görünür, amma çox mürəkkəb şərtləri var. Bir ödənişimi təsdiqləmək üçün 3 gün gözlədim. Dəstək komandası sorğularıma cavab vermədi. Ümumiyyətlə, vaxt və pul itkisi oldu.

Online Casino Giriş Onlayn Kazino Oynamaq Üçün Ən Yaxşı Platformalar. Adım: Rəşad, 31 yaş. Çox pozitiv rəylər görüb gəlmişdim, amma təcrübə fərqli oldu. Oyunların interfeysi qəribədir və intuitiv deyil. Bir neçə oyunda qəribə teknik problemlər yaşadım. Əsasən, pul çıxarmaq prosesi çox uzun və mürəkkəbdir. Şəffaflıq və əminlik hissi yoxdur. Məni tam məyus etdi.

Online Casino Giriş Onlayn Kazino Oynamaq Üçün Ən Yaxşı Platformalar axtarışı edərkən, lisenziyalaşdırılmış və etibarlı saytları seçmək əsas prioritet olmalıdır.

Bu platformalar adətən geniş oyun seçimi, təhlükəsiz ödəniş üsulları və canlı dəstək xidməti təqdim edirlər.

Yerli Azərbaycan oyunçuları üçün əlverişli bonuslar və AZN ilə əməliyyatlar da mühüm seçim meyarıdır.

Mövcud platformaları rəylərə, oyun provayderlərinə və mobil uyğunluğuna görə qiymətləndirmək ağlabatan qərar verməyə kömək edəcək.

Design and Develop by Ovatheme