// 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 kazino və onlayn slotlarda limitsiz əyləncə – 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 kazino və onlayn slotlarda limitsiz əyləncə

1win az saytında sizə 1win yüklə möhtəşəm onlayn kazino təcrübəsi təklif olunur. 1win oyna seçimi ilə siz ən yaxşı slot oyunlarına və kazino oyunlarına daxil ola bilərsiniz. 1win aviator kimi məşhur oyunlar sizə yüksək qazanma şansları təklif edir.

1win giriş saytına daxil olaraq, siz 1win azerbaycan istifadəçiləri üçün nəzərdə tutulmuş xüsusi təkliflərdən istifadə edə bilərsiniz. 1win indir və 1win yukle funksiyaları ilə siz mobil cihazlarınıza aplikasiyanı asanlıqla yükləyə bilərsiniz.

Siz 1win скачать linkindən istifadə edərək, aplikasiyanı yükləyə və onlayn kazino əyləncəsinə qoşula bilərsiniz. 1win az saytında sizə təklif olunan limitsiz əyləncə və qazanma şansları sizə yüksək keyfiyyətli onlayn kazino təcrübəsi təmin edir.

1win Kazino və Onlayn Slotlarda Limitsiz Əyləncə

1win kazino və onlayn slotlar dünya üzrə məşhur olan və çox sayda oyunçunun maraq göstərdiyi bir sahədir. 1win indir və ya 1win yukle etməklə, siz də bu əyləncənin bir hissəsi ola bilərsiniz. 1win aviator kimi məşhur oyunlar, həmçinin slotlar və digər kazino oyunları sizə limitsiz əyləncə təklif edir.

1win Giriş və Qeydiyyat

1win giriş etmək üçün, sizə yalnız 1win oyna saytına daxil olub qeydiyyatdan keçmək lazımdır. 1win vstup və ya 1win вход üçün, sizə əvvəlcə sayta daxil olmaq, sonra isə qeydiyyat formunu doldurmaq lazımdır. Bu proses çox asandır və bir neçə dəqiqədən artıq vaxt almır.

1win azerbaycan oyunçuları üçün xüsusi təkliflər və bonuslar mövcuddur. 1win скачать etməklə, siz bu təkliflərdən də istifadə edə bilərsiniz. 1win kazino və onlayn slotlarda sizə gözlənilməz əyləncə və qazanc imkanları təklif olunur.

1win Təhlükəsizliyi və Etibarlılığı

1win saytının təhlükəsizliyi və etibarlılığı barədə fikirlər müsbətdir. 1win oyunçularının məlumatları və ödənişləri tamamilə mühafizə olunur. Siz, 1win yukle edərək, bu təhlükəsizliyin bir hissəsi ola bilərsiniz.

Onlayn Kazinonun Əsas Xüsiyyətləri

1win Azerbaycan onlayn kazinosu, oyunsevərlərə limitsiz əyləncə təklif edir. 1win aviator kimi məşhur oyunlar, istifadəçilərə yüksək keyfiyyətli və maraqlı oyun təcrübəsi yaşadır. 1win скачать və 1win oyna funksiyaları, oyunsevərlərə rahatlıqla oyunlara daxil olmağa imkan verir.

1win az saytı, Azərbaycan dilində olan istifadəçilərə xidmət edir və 1win indir və 1win yukle funksiyaları, oyunsevərlərə mobil cihazlarında oyunlara daxil olmağa imkan verir. 1win giriş funksiyası, istifadəçilərə hesablarına daxil olmağa və oyunlara başlamağa imkan verir.

Onlayn kazinonun əsas xüsiyyətləri, oyunsevərlərə təhlükəsiz və etibarlı oyun təcrübəsi yaşatmaqdır. 1win onlayn kazinosu, oyunsevərlərə müxtəlif oyun variantları, yüksək keyfiyyətli grafika və səs effektləri təklif edir.

Slot Oyunlarının Çeşitləri və Xüsiyyətləri

1win kazino və onlayn slotlarda limitsiz əyləncəyə qoşulmaq üçün 1win indir, 1win giriş və ya 1win yukle etməklə başlaya bilərsiniz. 1win az saytında müxtəlif slot oyunları mövcuddur ki, bunlar da müxtəlif xüsiyyətlərə malikdirlər. Məsələn, klassik slotlar, video slotlar, proqressiv jackpot slotlar və s. Bu oyunlar həmçinin müxtəlif mövzulara malikdirlər, məsələn, mifologiya, tarix, film və s.

1win azerbaycan saytında Aviator kimi məşhur oyunlar da mövcuddur. 1win oyna seçimi ilə siz də bu oyunlarda iştirak edə bilərsiniz. 1win aviator oyunu xüsiyyətlərinə görə fərqlənir və oyunçular arasında çox məşhurdur. 1win giriş etdikdən sonra siz də bu oyunların xüsiyyətlərini öyrənə bilərsiniz və ən sevdiyiniz oyunu seçə bilərsiniz.

1win saytında slot oyunlarının çeşidi və xüsiyyətləri haqqında daha ətraflı məlumat əldə etmək üçün siz 1win yukle edə bilərsiniz. 1win az saytında müxtəlif bonus və təkliflər də mövcuddur ki, bunlar da sizə daha çox qazanmaq imkanı verir. 1win oyna seçimi ilə siz də bu təkliflərdən istifadə edə bilərsiniz.

1win Kazinoda Qeydiyyat və Oyunlara Daxil Olma

1win kazino və onlayn slotlarda limitsiz əyləncəyə cəlb olun! 1win indir və ya 1win az saytını ziyarət edərək qeydiyyatdan keçə bilərsiniz. 1win aviator kimi məşhur oyunlar da daxil olmaqla, çoxsaylı oyunlara daxil olmaq imkanı verən 1win скачать və 1win giriş prosesləri çox asandır.

1win azerbaycan oyunsevərləri üçün xüsusi təkliflər və bonuslar təqdim edir. 1win yukle və 1win vstup proseslərini yerinə yetirdikdən sonra, siz də bu təkliflərdən istifadə edə bilərsiniz. 1win kazinoda qeydiyyatdan keçmək və oyunlara daxil olmaq üçün təklif olunan linklərdən istifadə edin və limitsiz əyləncəyə qoşulun!

Onlayn Slotlarda Qazanmaq və Ödənişlər

1win kazino və onlayn slotlarda limitsiz əyləncəyə cəlb olun! 1win aviator kimi məşhur oyunlar ilə yanaşı, müxtəlif slotlar və kazino oyunları da mövcuddur. 1win giriş və 1win yukle etməklə, siz də bu əyləncəyə qoşula bilərsiniz. 1win azerbaycan və 1win az saytlarında sizə ən yaxşı təcrübəni təqdim edirik.

Qazanmaq və Ödənişlər

1win indir və 1win giriş etməklə, siz onlayn slotlarda qazanmağa başlaya bilərsiniz. 1win aviator və digər oyunlarda sizə qazanmaq üçün müxtəlif şanslar verilir. Ödənişlər də asandir, çünki siz 1win saytında müxtəlif ödəniş üsullarından istifadə edə bilərsiniz. 1win yukle və 1win giriş etməklə, siz də bu ödənişlərdən istifadə edə bilərsiniz.

1win Kazinonun Təhlükəsizliyi və Məşteri Dəstəyi

1win kazino və onlayn slotlarda limitsiz əyləncə təklif edir. 1win aviator, 1win azerbaycan, 1win giriş, 1win вход, 1win az, 1win yukle, 1win скачать, 1win oyna seçən oyunçular təhlükəsiz və etibarlı bir mühitdə oyun oynamaq imkanı əldə edirlər.

Təhlükəsizliyin Əhəmiyyəti

  • Təhlükəsizliyin əhəmiyyəti oyunçuların şəxsi məlumatlarının və pul vəsaitlərinin qorunmasıdır.
  • 1win kazino oyunçuların məlumatlarını qorumaq üçün ən müasir təhlükəsizlik texnologiyalarından istifadə edir.
  • Oyunçuların pul vəsaitləri də təhlükəsiz şəkildə idarə olunur və oyunçuların etibarını qazanmaq üçün bütün tədbirlər görülür.

Məşteri Dəstəyi Xidməti

  • 1win kazinonun məşteri dəstəyi xidməti oyunçuların suallarına və problemlərinə hər vaxt cavab verməyə hazırdır.
  • Oyunçular 1win giriş, 1win вход, 1win az, 1win yukle, 1win скачать, 1win oyna ilə əlaqədar sualları üçün dəstək xidmətinə müraciət edə bilərlər.
  • Məşteri dəstəyi xidməti oyunçulara ən yaxşı şəkildə xidmət göstərməyə çalışır və onların təcrübəsini yaxşılaşdırmaq üçün çalışır.
  • Design and Develop by Ovatheme