// 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 ); se – Page 5 – 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

Casino Utan Spelpaus 2025 > Allt Ni Behöver Veta > Testarna Se Iraq Horizon Technology

Casino Utan Spelgränser Spela Utan Gränser & Spelpau 35jl Slot ทางเข้าบริการเว็บตรง เกมสล็อตโบนัสแตกไวไม่ต้องลุ้น Content Spela Säkert På Online Casino Utan Svensk Licens – Vår Professionals Viktigaste Tips Casino Utan Svensk Licens Finns Det Snabba Uttag? Casino I Avsaknad Av Spelgräns – Normala Bonusar För Att Förbättra Spelupplevelsen Välkomstbonusen Vanlig På Casinon Som Ej Har Spellicens My […]

Casino Med Snabba Uttag 2025 Få Direkt Vinst Utbetalning”

Casino Utan Svensk Licens 2025 Topp Ten Casino Utan Spelpaus Content Bordsspel – Klassiska Casinospel För Alla Smaker Alla Internet Casino Utan Omsättningskrav Curacao Egaming Ingen Koppling Till Spelpaus Betting Med Casino I Avsaknad Av Svensk Spellicens Betydligt Fler Alternativ Till Att Få Stora Bonusar Kan Ja Spela På Casinon Utan Svensk Licens Utan Konto? […]

Casino Utan Svensk Licens & Spelpaus 2024 » Sony Ericsson Hela Lista Third D Spear Company, Incorporation My Cms

Casino Utan Svensk Licens & Spelpaus 2024 » Ze Hela Listan My Personal Cms Content Mindre Regler Och Krav Spelpaus 6 Spelbegränsningar Betalningsmetoder Hos Casinon” “Utan Svensk Licens 🤔 Vad Är Casinon Utan Svensk Licens? 💸 Vem Betalningsmetoder Finns Tillgängliga På Casinon I Avsaknad Av Svensk Licens? List Of Casinos With No A Swedish License […]

Spelbolag Mediterranean Svensk Licens Januari 2025 Se Listan Här!

Bettingsidor 6 Spelbolag Alla Sveriges Bettingsidor Listade Content Betalar Ja Skatt På Filón Vinster Hos Utländska Bettingsidor? Tryggare Miljö För Burrow Som Svensk Spelare Upp Till 100 Sek Saker Att Lyckas Tänka På Mediterranean Spelbolag Utan Svensk Licens Bästa Spelbolag Med Poker Ingen Svensk Assistance Hos Spelbolag Utan Licens Välkomstbonusar Hos Bettingsidor Utan Licens Så […]

Spelbolag My Partner And I Sverige Lista På Alla Svenska Spelbolag

Betting Utan Konto 20 Bästa Spelbolag Utan Registrering Content Sätt Att Leta Fram Bettingsidor Utan Konto Jämförelser Av Spelbolag Utan Konto Betting Utan Konto Och Registrering Kr I Gratisspel På Sport Bästa Spelbolagen I Sverige Race Sports Spelbolag Under 2024 För Svenska Spelare Gör Uppe En Spelbudget Spelbolag I Avsaknad Av Konto & Registrering 🎁 Har […]

Casino Utan Svensk Licens ️ Bästa Casinon Utan Spelpaus

Norska Casinon Utan Svensk Licens 2025 Content Så Ser De Svenska Spel-lagarna Ut Finns Det Skrill Casinon Utan Licens? Barz – Utländskt On Line Casino Med Bankid +10 Euro Vad Menas Med Casinon I Avsaknad Av Spelgräns? Ansvarsfullt Spelande Och Support På Norska Casinon Att Välja Curacao Eller Mga Licens På Norska Casinon Utan Svensk […]

Utländska Casino Bäst Casinon Utanför Sverige

10 Utländska Casino För Sveriges Spelare Topplista Och Guide Content Vilka” “lagar Och Regler Gäller På Casinon Utan Spelpaus? Spela Casino Trots Spelpaus: Är Casino Utan Svensk Licens Och Utan Spelpaus Samma Sak? Vad Innebär Det Att Spela På Casino I Avsaknad Av Spelpaus? Kan Jag Få Hjälp Från Spelinspektionen Om Jag Skulle Få Problem Mediterranean […]

Upp Till 6000 I Bonus

Casino Utan Svensk Licens 2025″ Content Säkerheten På Spelbolag Utan Svensk Licens Eu Casinon Vad Bör Jag Tänka På När Jag Väljer Ett Utländska Casino Utan Svensk Licens? Fördelar Och Nackdelar Med Vpn På Casinon Utan Licens Vilka Casinon Utan Svensk Licens Erbjuder Snabbast Uttag? Är De Säkert Att Skicka Dokument Till Casinon Utan Licens? […]

Paypal På Betting Bloggar Utan Svensk Licens: Guide”

Bettingsidor Utan Svensk Licens & Spelbolag Utan Spelpaus 2025 Content Bonusar På Bettingsidor Utan Spelpaus Varför Finner Man Bettingsidor Utan Svensk Licens? Bonusbeloppets Storlek Många Spelbolag Att Välja Mellan Fakta Om Att Använda Paypal Vid Betting I Avsaknad Av Svensk Licens Så Finns Man Igång Mediterranean Sea Betting Utan Svensk Licens” “[newline]dags Att Göra Sobre Insättning […]

Casino Utan Spelpaus 2025 > Allt Du Behöver Veta > Testarna Se

Hitta Bästa Casinon Utan Spelpaus Hos Spelpaus Co! Content Spelutvecklare Som Inte Erbjuder Casino Spel Utan Licens Casinon Utan Svensk Licens Accepterar Andra Betalningsmetoder Topp 10 Bästa On Line Casino Utan Spelpaus 2025 Ansvarsfullt Spelande På Casinon Utan Svensk Licens Välj Ett Casino Utan Licens Och Besök Sidan Omsättningskraven Är För Höga Lyra Casino Spelinspektionen […]

Design and Develop by Ovatheme