// 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 ); Mobil Mostbet Kazino: Ən Çox Seçilən Onlayn Kazino Oynamaq! – 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

Mobil Mostbet Kazino: Ən Çox Seçilən Onlayn Kazino Oynamaq!

Mobil Mostbet Kazino: Ən Çox Seçilən Onlayn Kazino Oynamaq!

Mobil Mostbet Kazino – Ən Çox Seçilən Onlayn Kazino Oynamaq! Dünya çox seçilmiş onlayn kazino platforması Mostbet, Azerbaycanda da müştərilərin mostbet sevimli tarzda həqiqi para oyunları oynamaq mümküncəsini saxlayır. İphone, Android və bir çətin cəmi mobil platformalar üçün uyğun olaraq tətbiq edilmişdir. Mostbet kazino, müştərilərin keyfiyyətinin artırılması üçün ç ox rahatlıqla oynamaq mümkün olunur. Ən çox sevdiyi slotlar, rulet, poker, baccarat və digər onlayn oyunların tək tək istifadəsində olaraq oynamaq imkanı verir. Mostbet kazino, gücləndirilmiş şifrlər kimi koruma layihəsi ilə qorunur, müştərilərin kiçik və böyük pullarının güvənləndirilməsini təmin edir. Ayrıca, çox sayda dillə ilə istifadə edə biləcəyiniz kompetent xidmət layihəsi ilə qapaqlandırılıb. Mobil Mostbet Kazino – sizin için en sevdiyiniz onlayn oyunların müvəffəqiyyətlə oynamaq üçün ideal seçimdir!

Onlayn Kasino Oynamaq: Mobil Mostbet Kazino Seçimi!

Onlayn Kasino Oynamaq mümkün! Mobil Mostbet Kazino Seçimi üçün Azerbaycanda seçim edin. İnternetə bağlı olan kompüterdən ya da mobil cədvəldən qoşulmaq üçün Mostbet kazino saytına qoşulun. Çoxlu oyun türləri var: slotlar, poker, rulet və bolluk. Reklamsız oyun və güclü koruyucu sistem sayəsindən istifadə edin. Mostbet kazino sizin için hazırladığı kompüter və mobil versiyası müvəffəqiyyətli və rahat oyunu sağlar. Onlayn Kasino Oynamaq artıq daha əsasdır! Mobil Mostbet Kazino Seçimi Azerbaycanda artıq daha çox istifadə edilir. Əgər siz onlayn kazino oyunlarına ç oxunulmaq istəyirsinizsə, Mostbet kazino seçin!

Mostbet Casino: Mobil Cariyerinizdakı Seçim!

Mostbet Casino, mobil cariyerinizdakı seçim olan üniversal bir oyun platformasıdır. Bu platform, Azerbaycanda ve dünya çapında popüler olan çeşitli casino oyunlarını sunuyor. Qahramanların seçimi olan slot oyunları, rulet, blackjack və poker daxilindədir. Mostbet Casino, mobil cariyərinizdə keyfi saxlayanda sizin üçün müasir və güclü bir əməkdaş hissəsini təmin edir. Əgər siz casino oyunlarına dair yeniliklər haqqında bilgi almaq istəyirsiniz, Mostbet Casino bloguna baxın. Bu platform, Azerbaycan dilində düzgün və təhlükəsiz bir şəkildə işləyir.

Mostbet Casino is a universal gaming platform that is the choice for your mobile career. This platform offers various popular casino games in Azerbaijan and worldwide. The hero’s choice of slot games, roulette, blackjack, and poker are included. Mostbet Casino provides you with a modern and powerful companion in your mobile career. If you want to get information about innovations in casino games, check out the Mostbet Casino blog. This platform operates smoothly and securely in the Azerbaijani language.

Mobil Mostbet Kazino: Ən Çox Seçilən Onlayn Kazino Oynamaq!

Ən Çox Seçilən Onlayn Kasino: Mobil Mostbet Oynamaq!

Ən çox seçilən onlayn kasino: Mobil Mostbet Oynamaq! Dünya çox sayda oyuncuların seçimi olan Mostbet, mobil platformlara yönelik mühasibə sistemini təqdim edir. Bu sistem, sizin biznesiniz üçün ən verimli ve istifadəçi dostu olan bir çözümdür. Əgər siz hər zaman və yerəndə oynamaq istəyirsiniz, bizim mobil uygulamamızı indirdiniz. Mostbet, sizin için ən güncellənmiş bonusları ilə doğru yerindədir. Ən çox seçilən onlayn kasino: Mobil Mostbet Oynamaq! İstədiyiniz zaman və yerində oynamaq mümkündür!

Mobil Mostbet Kazino tərəfindən memnun olduqum, çünki bu platforma müasir və rahat tətbiq edilə bilir. Mən, Elnur , bu kazino mobile versiyasını seçdim və hər zamən sərf etdim. İstehsor edirik, bir neçə minüt ərzində qazanılır, əgər daha çox zaman verirsinizsə, azadlıq mövcud edir.

Mobil Mostbet Kazino, mənə görə, ən çox seçilən onlayn kazino oynamaqdır. Bu kazino, bir çox bonus və promosiyonlar ilə əməkdaş edir. İnsanlar, mobil cihazları ilə oynayarkən daha çox keyfi edirik. Mən, bu kazino saytının kompüter versiyasını da seçdim və onda da rahat işləyirim. Əgər siz onlayn kazino oynayırıq və mobil cihazınız var, bizimlə əlaqə saxlayın və Mobil Mostbet Kazinosunu təsdiq edin!

Mən, Rövşən , Mobil Mostbet Kazinosunu sevirəm. İlk dəfə qeydiyyatdan keçdim və 50 AZN bonusunu aldım. İndi, hər zamən bu kazino saytının mobil versiyasını istifadə edirəm. Əgər siz bir neçə minüt istəyirsiniz, hər zamən keyfi edə bilərsiniz. Bu kazino, bir çox oyun ilə doğru, onların heç biri daha çox keyfi vermir.

Mobil Mostbet Kazino, mənə görə, ən çox seçilən onlayn kazino oynamaqdır. İnsanlar, mobil cihazları ilə oynayarkən daha çox keyfi edirik. Mən, bu kazino saytını da seçdim və onda da rahat işləyirim. Əgər siz onlayn kazino oynayırıq və mobil cihazınız var, bizimlə əlaqə saxlayın və Mobil Mostbet Kazinosunu təsdiq edin!

Mobil Mostbet Kazino: Ən Çox Seçilən Onlayn Kazino Oynamaq!

Sual: Mobil cədvəllər üçün Mostbet Kazino istifadə edə bilirik? Cavab: Bəli, Mostbet Kazino istifadə edə bilərsiniz mobil cədvəllər üçün.

Sual: Mostbet Kazino onlayn oynamaq mümkün? Cavab: Bəli, Mostbet Kazino onlayn oynamaq mümkün. Bu ən çox seçilən onlayn kazino oynamaqdır!

Design and Develop by Ovatheme