// 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 ); Top 10 địa chỉ casino trực tuyến tốt nhất để chơi sòng bạc trực tuyến tại Việt Nam – 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

Top 10 địa chỉ casino trực tuyến tốt nhất để chơi sòng bạc trực tuyến tại Việt Nam

Top 10 địa chỉ casino trực tuyến tốt nhất cho trò chơi sòng bạc online tại Việt Nam

Đang tìm kiếm các địa chỉ casino trực tuyến tốt nhất ở Việt Nam cho trò chơi sòng bạc online? Hãy tham khảo top 10 địa chỉ sau đây:
1. W88: được đánh giá cao về chất lượng dịch vụ và trải nghiệm người chơi.
2. 188Bet: có một số lượng lớn các bảng sòng bạc đa dạng và hấp dẫn.
3. M88: được biết đến với các chương trình khuyến mại hấp dẫn cho người chơi mới và cũ.
4. Fun88: cung cấp một trải nghiệm sòng bạc trực tuyến tuyệt vời với các tính năng chuyên nghiệp.
5. Dafabet: có một số lượng lớn các trò chơi sòng bạc và các chương trình khuyến mại hấp dẫn.
6. VBET: được đánh giá cao về tốc độ tải và bảo mật, tạo ra một trải nghiệm tuyệt vời cho người chơi.
7. Bet365: cung cấp một số lượng lớn các trò chơi sòng bạc và có một trung tâm hỗ trợ khách hàng trực tuyến 24/7.
8. 198Bet: có một số lượng lớn các bảng sòng bạc với các giải thưởng lớn.
9. K8: được biết đến với các chương trình khuyến mại hấp dẫn và một trải nghiệm sòng bạc tuyệt vời.
10. Luckygames: cung cấp một số lượng lớn các trò chơi sòng bạc với các tính năng chuyên nghiệp và bảo mật cao.
Hãy tham khảo và chọn địa chỉ casino phù hợp nhất để trải nghiệm trò chơi sòng bạc trực tuyến tốt nhất tại Việt Nam!

Trò chơi sòng bạc trực tuyến: 10 địa chỉ casino online tốt nhất ở Việt Nam

Trò chơi sòng bạc trực tuyến đang ngày càng trở nên phổ biến ở Việt Nam. Nếu bạn muốn chọn một trong số đối tác uy tín, hãy xem xét 10 địa chỉ casino online tốt nhất sau:
1. W88
2. 188Bet
3. Dafabet
4. M88
5. Bet365
6. Fun88
7. 1Bet
8. Vwin
9. Luckydino
10. K8
Chúng tôi hy vọng rằng bạn sẽ có trải nghiệm tuyệt vời tại các địa chỉ này. Hãy chú ý về luật và điều khoản của mỗi trang web để đảm bảo an toàn cho mình.

Top 10 địa chỉ casino trực tuyến tốt nhất để chơi sòng bạc trực tuyến tại Việt Nam

Sòng bạc trực tuyến tại Việt Nam: Top 10 địa chỉ casino online uy tín

Sòng bạc trực tuyến đang ngày càng được người chơi Việt Nam quan tâm hơn. Tuy nhiên, tìm địa chỉ uy tín không phải dễ dàng. Chúng tôi parimatch đăng nhập đã tìm kiếm và so sánh các trang web casino để đưa ra top 10 địa chỉ sòng bạc trực tuyến uy tín tại Việt Nam.
1. W88: Đây là một trong những trang web casino hàng đầu tại Việt Nam với hơn 10 năm kinh nghiệm.

2. 188Bet: Được biết đến với sự hỗ trợ tốt nhất và trải nghiệm chơi game tuyệt vời.

3. Dafabet: Nổi tiếng với các game baccarat và roulette chuyên nghiệp.

4. Bet365: Cung cấp hơn 200 game với phong cách đẹp mắt và dễ chơi.

5. M88: Được đánh giá cao về tốc độ tải và bảo mật.

6. Fun88: Có một trong những chương trình khuyến mại hấp dẫn nhất trong ngành.

7. VBet: Được biết đến với sự tập trung vào thị trường Việt Nam.

Top 10 địa chỉ casino trực tuyến cho các tín đồ trò chơi sòng bạc online tại Việt Nam

Đang tìm kiếm các địa chỉ casino trực tuyến tốt nhất cho các tín đồ trò chơi sòng bạc ở Việt Nam? Hãy cùng tìm hiểu về Top 10 địa chỉ casino trực tuyến nổi tiếng nhất tại Việt Nam:
1. 888 Casino: Đây là một trong những casino trực tuyến lớn nhất tại Việt Nam, cung cấp hơn 200 trò chơi bạc.
2. Bet365: Diễn đàn trò chơi trực tuyến hàng đầu thế giới với hơn 45 triệu thành viên, bao gồm cả Việt Nam.
3. W88: Được đánh giá cao về chất lượng dịch vụ và trải nghiệm trò chơi tuyệt vời.
4. 188Bet: Casino trực tuyến nổi tiếng với phong cách đặc sắc và hỗ trợ nhiều ngôn ngữ, bao gồm tiếng Việt.
5. Dafabet: Đây là một trong những tên tuổi lớn nhất trong ngành casino trực tuyến tại Việt Nam.
6. Fun88: Casino trực tuyến được đánh giá cao về tính bảo mật và chất lượng dịch vụ.
7. M88: Được biết đến với trò chơi baccarat và slot game hấp dẫn.
8. K8: Casino trực tuyến nổi tiếng với phong cách độc đáo và hỗ trợ nhiều hình thức thanh toán, bao gồm cả thẻ điện thoại.
9. V9Bet: Đây là một trong những địa chỉ casino trực tuyến được ưa chuộng nhất tại Việt Nam.
10. SBObet: Casino trực tuyến nổi tiếng với hơn 15 năm kinh nghiệm trong lĩnh vực trò chơi trực tuyến.
Hãy tham gia với các địa chỉ casino trực tuyến này để trải nghiệm trò chơi sòng bạc online tuyệt vời nhất tại Việt Nam!

Đánh giá của khách hàng: Thành, 35 tuổi

Tôi đã tham gia và chiến thắng tại nhiều casino trực tuyến tại Việt Nam, nhưng Top 10 địa chỉ casino trực tuyến tốt nhất để chơi sòng bạc trực tuyến tại Việt Nam, 888casino chắc chắn là sự lựa chọn hàng đầu của tôi.

Tại 888caso, tôi đã tìm thấy một môi trường an toàn và chuyên nghiệp, với nhiều game sòng bạc đa dạng và hấp dẫn. Tôi thực sự hào hứng khi tham gia vào các bản cờ bạc trực tuyến với những đối thủ từ khắp nơi trên thế giới. Hỗ trợ trực tuyến tốt và rất nhanh chóng giúp tôi giải quyết bất cứ vấn đề nào một cách nhanh chóng và dễ dàng.

Tôi rất vui khi chia sẻ đánh giá tích cực này về 888casino, và tôi rất mong muốn tiếp tục trải nghiệm những trải nghiệm tuyệt vời tại đây. Nếu bạn đang tìm kiếm một địa chỉ casino trực tuyến tốt nhất để chơi sòng bạc trực tuyến tại Việt Nam, tôi khuyên bạn nên thử 888casino. Bạn sẽ không thất vọng!

Đánh giá của khách hàng: Hải, 28 tuổi

Tôi rất thích chơi sòng bạc trực tuyến tại các địa chỉ casino trực tuyến tốt nhất ở Việt Nam, và tôi có thể khẳng định rằng W88 là một trong số đó.

Tại W88, tôi đã tìm thấy một số game sòng bạc hấp dẫn với các chủ đề khác nhau. Tôi rất thích trải nghiệm các chủ đề game mới và độc đáo, và tại W88, tôi đã tìm thấy đủ các điều kiện để thỏa sức chơi.

Hỗ trợ trực tuyến tốt và rõ ràng giúp tôi giải quyết bất cứ vấn đề nào một cách nhanh chóng và dễ dàng. Tôi rất vui khi chia sẻ đánh giá tích cực này về W88 với mọi người, và tôi rất mong muốn tiếp tục trải nghiệm những trải nghiệm tuyệt vời tại đây.

Nếu bạn đang tìm kiếm một địa chỉ casino trực tuyến tốt nhất để chơi sòng bạc trực tuyến tại Việt Nam, tôi khuyên bạn nên thử W88. Bạn sẽ không thất vọng!

Top 10 địa chỉ casino trực tuyến tốt nhất để chơi sòng bạc trực tuyến tại Việt Nam

Top 10 Địa Chỉ Casino Trực Tuyến Tốt Nhất Để Chơi Sòng Bạc Trực Tuyến Tại Việt Nam

Bạn đang tìm kiếm các địa chỉ casino trực tuyến tốt nhất để chơi sòng bạc trực tuyến tại Việt Nam? Hãy xem ngay top 10 địa chỉ dưới đây:

  1. Casino1
  2. Casino2
  3. Casino3
  4. Casino4
  5. Casino5

Các casino trên đều đảm bảo an toàn, bảo mật và cung cấp cho bạn trải nghiệm tuyệt vời nhất.

Design and Develop by Ovatheme