// 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 ); casino – Page 14 – 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

“игровые Автоматы Демо Играть Бесплатно И кроме Регистрации

Бесплатные Онлайн-слоты Играйте В Оригинальные Слоты Gaminator Онлайн Content Можно разве В Бесплатных Демо Слотах Выиграть настоящие Деньги%3F только Играть В Демо Слоты Какие возможностей Игры В Бесплатные Слоты%3F Играть В Демо Игровые Автоматы Бесплатные Игровые Автоматы – Часто Задаваемые вопроса (чаво)%3A Темы Автоматов а Free-slots Games Играть В Бесплатные Игровые Автоматы Онлайн никаких Регистрации […]

“1xbet Güvenilir Mi? Five Maddede İllegal Bahis Riskleri 2024

1xbet Yasal Mı? Lisans Bilgileri Nedir? ️ Content Bet Ödemeleri Ne Zaman Yapılır? Bet Giriş 2020 Güncel Adresi Nedir? 1xbet Güncel Giriş Adresleri Bet Güncel Giriş Adresi Nedir? Bet’te Müşterilerin Kişisel Verilerinin Güvenliği Bet’te Müşterilerin Kişisel Verilerinin Güvenliği Belge Talebi Empieza Güvenlik Bet Kaydı Nasıl Yapılır – Kolay Ve Hızlı Kayıt Ol Temu’da Satıcı Olmak […]

Türkiye’deki En Iyi Mobil Casino 2025 Sobre Iyi 806 Web Site Holymolycasinos”

Mobil Casino Ve Bahis Sitesi Özellikleri Content Mobil Kumarhaneler Dünyasına Hoş Geldiniz Vodafone’un Mobil Oyuncular Için Ücretsiz Veri Desteği Cep Telefonu On Line Casino Oyunları Iphone Için Mobil Online Casino Uygulamalarının Artıları Nelerdir? Hangi Ülkelerin Mobil Kumarhanelere Katılmaya Uygun Olduğu Konusunda Herhangi Bir Kısıtlama Var Mı? Pinco Mobil Casino Uygulaması: Kolaylık, Eğlence Ve Kazanma Fırsatları […]

Pinup Resmi Sitesi Kayıt Kayıt Bahisçi”

“Pin-up Casino Giriş, Kayıt, Indir, Bonuslar Content Pın Upwards Crush Oyunları Seçkisi Pin Up 360 Kazino Giriş Popüler Slotlar Pin-up Oyunları Parolamı Kaybettiysem Hesabıma Erişimi Yeniden Sağlayabilir Miyim? Pin Up Casino Giriş Ve Yeni Adres: Pin Up Güncel Giriş Pin Up Türkiye Bonusları Pin Way Up Giriş Türkiye’den Oyuncular Için Mevcut Mu? Pin Up Casino’ya […]

Загрузка Приложения 1win На Пк%3A Подробная Инструкция И очень”

Скачать 1вин и Андроид Бесплатно пиппардом Официального Сайта Content только Скачать Приложение и Андроид In Мобильное Приложение%3A Особенности Приложение Или Мобильная Версия 1win%3A что Лучше%3F Ставки На Спорт В Приложении Скачать 1win Обзор Мобильного Приложения 1вин Для Андроид семряуи Букмекере Достоинства и Недочеты Приложения 1вин Для Андроид Приложение 1win Платное%3F Часто Задаваемые задать” “о Казино […]

1xbet Indir, 1xbet Apk, 1xbet Mobi̇l”

“türkiye, Kendi Advertisement Ve Hesabına Siyaset Ve Strateji Üretmeye Başladı” Son Dakika Haberleri Content Telefonunuza 1xbet Uygulamalarını Indirin Bet Tr Portalında” “ödemeler Bet Türkiye Sunulan Spor Bahisleri Piyasaları Bet Apk Dosyasını İndirme Adımları: Bet’te Müşteri Desteği Tr Bc 1xbet Tr’deki Bahisler Uygulamanın Işlevselliği Ile Bahis Şirketinin Web Sitesi Arasındaki Fark Nelerdir? Bet Sitesindeki Bonuslar Empieza Promosyonlar Bet: […]

গ্লোরি ক্যাসিনো বাংলাদেশ: বাংলাদেশের একটি শীর্ষ অনলাইন ক্যাসিন

“Wonder Casino Online ⭐️ Play Now Upon Official Web Web Site In Bangladesh Glory Casino Online ⭐️ Play Now In Official Web Internet Site In Bangladesh Beauty Casino Bangladesh Content Game Justness And Licensing “concerning Glory Casino গ্লোরি ক্যাসিনো বাংলাদেশ – অনলাইনে গেমস খেলুন! Mobile Version Glory Casino Bangladesh: Some Sort Of High Online On […]

“polskie Mobilne Kasyno Najlepsze Kasyno Na Telefon 2024

Najlepsze Aplikacje Mobilne Kasyn W 2025″ Content Pięć Najlepszych Kasyn Mobilnych Na Prawdziwe Pieniądze Czy Mogę Grać W Kasynie Mobilnym Bez Weryfikacji? Blackjack W Casino Mobile Jak Grać T Gry Z Telefonu? Jakie Są Najlepsze Strony Kasyn Mobilnych? Najlepsze Kasyna Mobilne W Polsce Lista Najlepszych Mobilnych Kasyn Dla Polaków Funkcje Techniczne Kasyn Mobilnych Gra W […]

самые Онлайн Казино Рейтинг Топ 10 дли Игры На 2024 Год

Играйте В Ведущем Онлайн-казино Pokerstars Casino Content Каталог Игр список Лучших Онлайн Казино 2024 Top Bitcoin Online Casinos Рейтинг Казино” Официальные Сайты Казино%3A Безопасность Быстрота напрашивается Выигрыша Оцениваем Службу Поддержки а Лайв-чат Казино Репутация в Интернете И отзыв Игроков Топ Казино — Актуальный Рейтинг Онлайн Казино 2024 Методы Пополнения И Снятия Средств Объективные и Честные […]

“mostbet Apk Ke Stažení Pro Android App A Io

“mostbet Apk Ke Stažení Pro Android App A Ios Aplikace Mostbet Pro Android A New Ios V Češtině: Stáhněte Si A New Začněte Hrát Content Způsoby Vkladu Přehled Aplikace Jaké Jsou Systémové Požadavky Aplikace Mostbet Pro Android? Is That Safe To Use The Mostbet Mobile Application Intended For Online Gaming?” Deposit Bonus Jak Si Mohu […]

Design and Develop by Ovatheme