// 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 7 – 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

Kumarhanede Bahis Oynamak: Ünlü Bahisçilerin Hayat Hikayeleri Vr Gravity

Kumarhanede Bahis Oynamak: Tarzınıza Uygun Bahis Stratejiler Content Kumar Oynamanın Psikolojik Etkileri Bütün Oyunlarda Bilgisayar Yazılımları Kullanabilir Miyim? Kumarhanede Bahis Oynamak: Karşılaşılan Riskler Nelerdir? What To Use Throughout A Casino On Line Casino Costume Code Total Guid Casino In Plaats Van Cruks Een Opgeleide Zero-cruks Gokbedrijven 2024 “karavan Casino – Türkiye’nin Hayal Edebileceğiniz En Kaliteli […]

Betwoon729 Possuindo Betwoon Bahis Sitesi

Casibom Bahis Sitesi Casibom Güncel Girişi Casibom Güncel Adresi” Content Hangi Sporlar Canlı Bahis İçin Daha Uygun? Bahis Sitelerini Güvenilir Yapan Faktörler Show Bahis Yasal Canlı Bahis Sitelerinin Adresleri Hangileridir? Sultanbet’te Yeni Kullanıcı Deneyimi Bahis Com Hakkında Bahis Sitelerinde Bonus Ve Kampanyaların Kullanımı Slot Keyfini Prime Bahis’te Yaşa! Canlı Bahis Platformlarının Teknik Özellikleri Canlı Bahis […]

“başarıbet Giriş Başarıbet Güncel Giriş

Basaribet Casino’ya Giriş Resmi Siteye Kayıt, Geniş Oyun Yelpazesi, Cömert Hoşgeldin Bonusu Content Basaribet Güvenilir Una? Yenilikçi Özellikler Başarıbet’teki Ödeme Yöntemleri Başarıbet Reward Ve Kampanyalar Başarıbet Giriş Basaribet Güncel Giriş Başarıbet Oyun Tedarikçileri Basaribet Bonusları Basaribet Vpn Başarıbet Mobil Uygulaması Basaribet Kayıt Özel Promosyonlar Empieza Turnuvalar Basaribet’te Canlı Bahis Avantajları Basaribet Bonus Siteye Giriş Basaribet […]

Jak Wypłacić Pieniądze Z Kasyna Vulkan Vegas?

Logowanie I Rejestracja Watts Kasynie Online” Content Proces Wypłaty Pieniędzy Z Kasyna Vulkan Vegas Bonus Bez Depozytu Fifty Darmowych Spinów T Vulkan Vegas Bonusy I Promocje W Vulkan Vegas Pl Livecareer Jak Odzyskać Pieniądze Podstawowe Informacje O Wypłatach Środków Pieniężnych Vulkan Las Vegas Jak Wypłacić Pieniądze Book Of Useless W Vulkan Bet Aplikacja Mobilna Vulkan […]

1xbet Giriş 1xbet Türkiye Resmi Sitesi, Kayıt, Spor Bahisleri”

Canlı Online Casino Oyunları Oynayın Empieza Spor Bahisleri Yapın Content Bet Kullanmak Suretiyle Mobil Ortamda Nasıl Bahis Oynanır? Bet’te Bahis Oynamak Güvenli Midir? Taşınabilir Cihazlar Için 1xbet Uygulamaları Bet Mobil Giriş Adresi Nereden Bulunur? Bir Acemi Olarak Bahis Yapabilirmiyim? Bet Web Sitesinin Yasallığı Ve Olası Engelleme Bet’te Promosyon Kodları Almak Mümkün Mü? Bet Live’da Canlı […]

“Durante İyi Türkiye On The Internet Casinolar 2025-top Çevrimiçi Casino Rehberi

Türkiyenin #1 Canlı Casinoları Gerçek Krupiyeli Online Casinolar! Content Casinolarda Konukseverlik Ve Hizmet Kalitesi Betonred: Canlı Rulet Empieza” “bakara – Popüler Oyunlar Ve Büyük Ödüller #9 Jackbit — En Yeni Oyunları Ilk Getiren Upon The Internet Site Kullanıcı Memnuniyetinin Önemi Türkiye’de Casinolara Yatırım Yapmak Yasal Mı? Casino Sitesine Nasıl Afin De Yatırılır Ve Çekilir? Casinolarda Güvenlik […]

Betwinner Türkiye: Güvenilir Bahis Ve On Line Casino Oyunları

Bahis Şirketi Online Spor Bahisleri Bahis Şirketi 1xbet Com Content Hangi Spor Dalları Bahis İçin Daha Çok Tercih Edilir? Paribahis’in Ana Oyunları Bonus Veren Blackjack Siteleri Bahis Sitelerinde Aranması Gereken Özellikler Sultanbet’te Canlı Bahis Deneyimi Slot Oyunları Nasıl Oynanır? Betivo Spor Bahisleri Kapsamı Slot Oyunları Bahis Sitelerine Yatırılan” “parayı Geri Alma Bisiklet Bahisleri Nereden Oynanır? […]

Glory Casino Giriş, Güncel Giriş, Kayıt Güvenle Kumar Oynayın

Türkiye’deki Sah Web Sitesi Content Şifremi Unuttum, Nasıl Yenileyebilirim? Mobil Hizmet Casibom Lisans Bilgileri Ve Güvenlik Önlemleri Holeybet Giriş Sürecinin Önemi Betrupi Para Yatırma Yöntemleri Türkiye’nin Güvenilir On Line Casino Ve Bonus Sitesi Casibom Canlı Destek Casibom Yeni Giriş Adresi 7/24 Kesintisiz Yeni Üyelere Özel Bonuslar Ve Fırsatlar Glorycasino 2024 Güncel Giriş Betrupi Canlı Bahis […]

Paribahis: Spor Bahisleri, Canlı Casino Empieza Slot Oyunlarıyla Kazançlı Eğlence

Mobilbahis Giriş, Canlı Bahis, Spor Bahisleri Content Haftanın Popüler Futbol Bahisleri Kingbetting Tv Canlı Maç Izleme Sitesi Nedir? Sultanbet Müşteri Hizmetleri Ve Güvenilirlik Canlı Casino Betosfer Canlı Bahis Ve Spor Bahisleri Lucky Obstruct Canlı Bahis Empieza Güncel Analizler Kingbetting Giriş Adresi Kaç Oldu? Damabet’in Sunduğu Avantajlar Çevrim Şartlarını Anlamanın Önemi Espor Bahis Çeşitleri Espor Oyunları […]

Logowanie I Actually Rejestracja W Kasynie Online”

Graj I Wygrywaj Mhh Vulkan Vegas Pl Najlepsze Kasyno On-line W Polsce Kasyno zastrzega sobie prawo do zmiany swoich ofert bonusowych w dowolnym momencie. Jeśli chodzi to narzędzia, można znaleźć tylko samowykluczenie i cool-off. Oba narzędzia blokują dostęp perform witryny na określony czas, ale watts przypadku samowykluczenia keineswegs” “można się zalogować we wypłacić pozostałych środków. […]

Design and Develop by Ovatheme