// 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 ); 1win Yüklə Android apk və iOS app 2025 Pulsuz Indir kazino – 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

1win Yüklə Android apk və iOS app 2025 Pulsuz Indir kazino

1win aviator oyunu çox populyar bir onlayn kazinodur ki, burada müxtəlif oyunlar və idman yarışmaları üzrə bahis qoyula bilər. 1win yukle etmək üçün sizə yalnız Android və ya iOS əməliyyat sistemlərindən birinə sahib olan mobil cihaz lazımdır. 1win giriş üçün sizə yalnız hesab açmaq və daxil olmaq kifayətdir.

1win az saytında sizə müxtəlif oyunlar, o cümlədən 1win oyna bölməsi təqdim olunur. Burada sizə slot maşınları, kart oyunları və digər çoxmaraq oyunlar mövcuddur. 1win вход etmək üçün sizə yalnız hesab açmaq və daxil olmaq kifayətdir. Əgər siz artıq hesab sahibisinizsə, 1win indir etmək üçün sizə yalnız mobil aplikasiyanı yükləmək kifayətdir.

1win azerbaycan saytında sizə müxtəlif təkliflər və bonuslar təqdim olunur. 1win yukle etmək üçün sizə yalnız mobil cihaz lazımdır. 1win saytında sizə müxtəlif oyunlar və idman yarışmaları üzrə bahis qoyula bilər. Əgər siz artıq hesab sahibisinizsə, 1win giriş etmək üçün sizə yalnız daxil olmaq kifayətdir.

1win Yüklə Android apk və iOS app 2025 Pulsuz İndir kazino

1win aviator oyununu oynamaq üçün ən ilk addım 1win yukle və ya 1win indir etməkdir. Bu addımı atdıqdan sonra 1win giriş etmək üçün sizdən şəxsi məlumatlarınızı daxil etmək tələb olunacaq. 1win Azerbaycanlı istifadəçilər üçün xüsusi təkliflər və bonuslar təqdim edir. 1win oyna üçün sizə Android və ya iOS cihazınıza 1win apk və ya 1win ios app yükləmək lazımdır.

1win Giriş və Qeydiyyat

1win giriş etmək üçün sizə əvvəlcə qeydiyyatdan keçmək lazımdır. Qeydiyyat prosesi çox asandır və bir neçə dəqiqə vaxtınızı alır. 1win qeydiyyatdan keçdikdən sonra sizə şəxsi kabinetinizə daxil ola bilərsiniz və 1win aviator oyununu oynamağa başlaya bilərsiniz. 1win скачать etmək üçün sizə rəsmi saytına getmək və yükləmə linkinə təqdim etmək lazımdır.

Android İcqisində 1win Yükləmə Prosessi

1win az saytını Android icqisində yükləmək üçün ilk növbədə saytın rəsmi adresinə daxil olun və “1win yukle” bölməsini seçin. Buradan “1win giriş” üçün tələb olunan proqramı yükləyin.

  • 1win saytına daxil olun
  • “1win oyna” bölməsini seçin
  • “1win yukle” düyməsini basın
  • Proqramı yükləyin və quraşdırın

1win Aviator və Digər Oyunlar

1win aviator və digər oyunları oynamaq üçün “1win вход” hissəsində hesabınıza daxil olun. Əgər hesabınız yoxdursa, “1win azerbaycan” saytında qeydiyyatdan keçin.

  • Hesabınıza daxil olun
  • “1win oyna” bölməsini seçin
  • İstədiyiniz oyunu seçin, məsələn “1win aviator”
  • Oyunu oynamağa başlayın
  • 1win saytını Android icqisində yükləmək və “1win скачать” proqramını quraşdırmaq üçün yuxarıdakı addımları izləyin. “1win az” saytında daha çox məlumat əldə edin.

    iOS İcqisində 1win Yükləmə Prosessi

    iOS istifadəçiləri üçün 1win yükləmə prosesi olduqca sadədir. 1win az saytına daxil olaraq, “1win giriş” bölməsindən “1win yukle” seçeneğini seçmək lazımdır. Bundan sonra, “1win indir” əməliyyatını yerinə yetirmək üçün təklif olunan linkə keçid etmək lazımdır.

    1win Aviator və Digər Oyunlar

    1win aviator və digər məşhur oyunları oynamaq üçün, əvvəlcə “1win oyna” bölməsinə daxil olmaq lazımdır. “1win azerbaycan” saytında mövcud olan bütün oyunlar, o cümlədən “1win aviator”, yüksək keyfiyyətli və əyləncəli təcrübə təmin edir. “1win giriş” etməklə, siz dərhal “1win oyna” bölməsinə keçid edə bilərsiniz.

    “1win вход” əməliyyatını yerinə yetirdikdən sonra, siz “1win yukle” və “1win indir” funksiyalarını asanlıqla istifadə edə bilərsiniz. 1win saytının təklif etdiyi bütün xidmətlərdən, o cümlədən “1win aviator” oyunundan, asanlıqla istifadə etmək üçün, “1win azerbaycan” saytını yaxşı şəkildə öyrənmək lazımdır.

    1win Aplikasiyasının Xüsiyyətləri

    1win aplikasiyası çoxsaylı xüsiyyətləri ilə fərqlənir. 1win aviator oyunu, 1win azerbaycan istifadəçiləri üçün xüsusi təkliflər, 1win oyna funksiyası və s. bu xüsiyyətlərdən bəziləridir. 1win indir və 1win yukle prosesləri asandır və istifadəçilər 1win az saytına daxil olaraq 1win giriş və 1win вход proseslərini keçə bilərlər.

    1win Aplikasiyasının Əsas Xüsiyyətləri

    1win aplikasiyasının əsas xüsiyyətləri arasında sürətli və etibarlı oyun prosesi, müxtəlif oyun variantları, yüksək keyfiyyətli qrafika və s. var. 1win aplikasiyası həmçinin mobil cihazlar üçün nəzərdə tutulmuşdur və istifadəçilər 1win aplikasiyasını Android və iOS cihazlarına yükləyə bilərlər.

    1win Aplikasiyasını İndirərkən Təhlükəsizlik Nəzərə Alınması

    1win az saytını ziyarət edərkən və 1win giriş prosedurunu keçərkən təhlükəsizlik nəzərə alınmalıdır. 1win azerbaycan istifadəçiləri üçün təhlükəsizlik ən vacib amillərdən biridir. 1win aviator və digər oyunlar üçün 1win скачать və 1win вход prosedurları zamanı istifadəçilər təhlükəsizlik tədbirlərini nəzərə almalıdır.

    1win oyna və 1win yukle prosedurları zamanı istifadəçilər əmin ola bilərlər ki, onların məlumatları qorunur. 1win aplikasiyasını indirərkən istifadəçilər aşağıdakı təhlükəsizlik tədbirlərini nəzərə almalıdır:

    Təhlükəsizlik Tədbiri
    Əhəmiyyəti

    Şəxsi məlumatların qorunması İstifadəçilərin şəxsi məlumatlarının qorunması ən vacib amillərdən biridir. Parolun möhkəmliyi İstifadəçilər möhkəm parol seçməli və onu gizli saxlamalıdır. Proqram təminatının yenilənməsi İstifadəçilər 1win aplikasiyasını müntəzəm olaraq yeniləməli və yeni versiyaları indirərkən təhlükəsizlik tədbirlərini nəzərə almalıdır.

    1win aplikasiyasını indirərkən təhlükəsizlik nəzərə alınmalıdır. 1win az saytını ziyarət edərkən və 1win giriş prosedurunu keçərkən istifadəçilər təhlükəsizlik tədbirlərini nəzərə almalıdır. 1win azerbaycan istifadəçiləri üçün təhlükəsizlik ən vacib amillərdən biridir.

    Design and Develop by Ovatheme