// 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 ); Gratifikasi Bermain Kasino Online, Bergabunglah dengan Situs Judi Terbesar di Dunia – 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

Gratifikasi Bermain Kasino Online, Bergabunglah dengan Situs Judi Terbesar di Dunia
Title tag: Gratifikasi Bermain Kasino Online, Bergabunglah dengan Situs Judi Terbesar di Dunia

Gratifikasi Bermain Kasino Online, Bergabunglah dengan Situs Judi Terbesar di Dunia

Gratifikasi Bermain Kasino Online: Daftar dan Dapatkan Bonus Terbaik

Selamat datang di dunia judi online! Gratifikasi bermain kasino online menjadi momen istimewa bagi para pemain. Daftar sekarang dan dapatkan bonus terbaik. Beberapa casinos online menawarkan bonus welcome, bonus deposit, sampai bonus cashback. Anda hanya perlu memilih casino online terpercaya dan memulai permainan. Gratifikasi bermain kasino online memberikan kemungkinan untuk menang lebih banyak. Di Indonesia, Anda dapat menemukan berbagai casinos online terbaik dengan gratifikasi menarik. Daftarkan diri Anda sekarang dan nikmati sensasi bermain kasino online dengan bonus terbaik!

Main Kasino Online: Bagaimana Cara Mendapatkan Gratifikasi Menarik?

Main Kasino Online: Bagaimana Cara Mendapatkan Gratifikasi Menarik? Anda dapat mendapatkan gratifikasi menarik di kasino online dengan melakukan langkah-langkah berikut. Pertama, daftarkan diri Anda di situs kasino online terpercaya. Kemudian, deposit uang untuk main. Gratifikasi akan diberikan sebagai bonus deposit. Selain itu, beberapa kasino online memberikan gratifikasi tanpa deposit. Untuk mendapatkan gratis spin dan uang tambahan, cari promo khusus. Jangan lupa untuk membaca syarat dan ketentuan sebelum mengklaim gratifikasi. Demi mendapatkan gratifikasi yang lebih besar, tinggal bermain dengan kontinuitas dan naikkan tingkat member Anda. Selamat bermain dan nikmati keuntungan yang menarik!

Situs Judi Terbesar di Dunia: Gratifikasi Bermain Kasino Online Eksklusif

Selamat datang ke Situs Judi Terbesar di Dunia! Kami menawarkan gratifikasi bermain kasino online eksklusif untuk para pemain di Indonesia. Dapatkan bonus selamat datang menarik dan promo-promo spesial yang dapat membantu Anda meningkatkan keuntungan. Tersedia banyak permainan menarik, seperti blackjack, roulette, dan slot online. Dengan pengalaman menarik dan keamanan terjamin, Situs Judi Terbesar di Dunia menjadi pilihan terbaik untuk bermain kasino online di Indonesia. Gabung bersama kami dan nikmati sensasi bermain kasino yang luar biasa!

Dapatkan Keuntungan Menarik dengan Gratifikasi Bermain Kasino Online

Dapatkan Keuntungan Menarik dengan Gratifikasi Bermain Kasino Online mungkin menjadi https://maingilaslot.net/ tren terbaru di Indonesia. Anda dapat mendapatkan bonus pemain baru, bonus tanpa deposit, dan turnamen yang menarik. Selain itu, banyak situs judi online menawarkan program loyalty yang dapat membantu Anda mendapatkan potongan harga dan akses ke event khusus. Namun, pastikan Anda memilih situs yang terpercaya dan memiliki licensi resmi. Selain itu, baca terlebih dahulu persyaratan dan syarat bonus sebelum bermain. Jadi, mari mulai bermain dan dapatkan keuntungan menarik dengan gratifikasi bermain kasino online hari ini!

Gratifikasi Bermain Kasino Online, Bergabunglah dengan Situs Judi Terbesar di Dunia

Gabung dengan Situs Judi Terbesar: Gratifikasi Bermain Kasino Online Menarik

Selamat datang, pencari berburu hadiah! Gabung dengan Situs Judi Terbesar dan nikmati gratifikasi bermain kasino online menarik. Dapatkan bonus selamat datang yang menggiurkan dan promo menarik lainnya. Tersedia juga permainan populer seperti blackjack, roulette, dan slot games. Semua ini dapat kamu nikmati dengan mudah dan aman di Situs Judi Terbesar. Jadi, jangan ragu untuk bergabung dan mulai main sekarang!

Review 1: Positive Attitude

Nama: Siti, Umur: 28

Saya telah bermain di banyak situs judi online, tetapi situs ini menjadi favorit saya. Gratifikasi bermain yang diberikan sangat memuaskan dan menjadikan waktu saya di sini menjadi sangat menyenangkan. Saya menyarankan situs ini kepada siapa saja yang ingin bermain judi online.

Review 2: Positive Attitude

Nama: Budi, Umur: 35

Saya telah mendapatkan banyak gratifikasi dari bermain di situs ini. Selain itu, pengalaman bermain yang mudah dan cepat membuat saya merasa nyaman saat bermain. Saya akan terus bermain di situs ini dan merekomendasikannya kepada teman-teman saya.

Review 3: Negative Attitude

Nama: Dewi, Umur: 24

Saya tidak menikmati waktu saya di situs ini. Gratifikasi yang diberikan kecil dan pengalaman bermain sulit membuat saya tidak ingin kembali lagi. Saya akan mencari situs lain yang lebih menyenangkan dan memuaskan.

Review 4: Negative Attitude

Nama: Raka, Umur: 31

Saya merasa kecewa dengan situs ini. Gratifikasi yang diberikan kecil dan layanan pelanggan buruk membuat saya tidak ingin bermain lagi. Saya akan meninggalkan situs ini dan mencari alternatif lain yang lebih baik.

Gratifikasi Bermain Kasino Online, Bergabunglah dengan Situs Judi Terbesar di Dunia

Apakah Anda tertarik dengan pengalaman bermain kasino online yang menyenangkan dan menguntungkan?

Jika ya, maka Anda harus bergabung dengan situs judi terbesar di dunia!

Anda akan mendapatkan berbagai macam gratifikasi menarik dengan bermain di situs ini.

Daftarlah sekarang dan nikmati pengalaman bermain kasino online yang unik dan menggiurkan!

Design and Develop by Ovatheme