// 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 ); Vdcasino Giriş Yöntemleri ve Güncel Vd Casino Bilgileri – 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

Vdcasino Giriş Yöntemleri ve Güncel Vd Casino Bilgileri

Vdcasino Giriş ile şansınızı deneyin! Vdcasino Güncel Giriş sayesinde sorunsuz bir şekilde oyunların keyfini çıkarabilirsiniz.

Vdcasino Yeni Giriş ile sınırları zorlayın ve Vdcasino Mobil Giriş ile her an, her yerden eğlenceye ulaşın.

vd casino Giriş ile kazanma şansınız artıyor! Vdcasino Sorunsuz Giriş ile sürekli kazanın.

Vdcasino Güncel: En Yeni Özellikler

Vdcasino, sürekli olarak kullanıcı deneyimini artırmak için yeni özellikler sunuyor. Vdcasino yeni giriş sayesinde, kullanıcılar artık daha hızlı ve daha güvenli bir şekilde vdcasino mobil giriş yapabiliyor. Vdcasino güncel giriş, vdcasino sorunsuz giriş ve vd casino giriş gibi özelliklerle, kullanıcıların her zaman en iyi hizmeti almasını sağlıyoruz.

  • Vdcasino Yeni Giriş: Daha hızlı ve güvenli giriş için yenilenen arayüz.
  • Vdcasino Mobil Giriş: Her yerden erişim sağlayabilmeniz için optimize edilmiş mobil platform.
  • Vdcasino Güncel Giriş: Sürekli olarak güncellenen güvenlik önlemleriyle korunan giriş sistemi.
  • Vdcasino Sorunsuz Giriş: Herhangi bir sorun yaşamadan kolayca giriş yapabilmeniz için geliştirilen teknolojiler.

Vdcasino, vede casino olarak da bilinen bu platformda, kullanıcıların beklentilerini en üst düzeyde karşılamak için sürekli olarak yenileniyor. Vd casino giriş ile artık daha fazla avantajdan yararlanabilirsiniz.

Vdcasino Güvenliği: Güçlü Güvenlik Önlemleri

Vdcasino, kullanıcılarının güvenliğini en üst düzeyde tutmak için güçlü güvenlik önlemleri almıştır. Vdcasino mobil giriş ve vd casino giriş süreçleri, kullanıcıların kişisel bilgilerini korumak için en son teknolojilerle güvence altına alınmıştır. Vdcasino sorunsuz giriş deneyimi, kullanıcıların güvenle oyunlarına odaklanmalarını sağlar.

Vdcasino yeni giriş ve vdcasino güncel giriş seçenekleri, kullanıcıların her zaman erişilebilir olmasını sağlar. Vede casino, kullanıcıların güvenliğini sağlamak için sürekli olarak güvenlik protokollerini güncellemektedir. Vdcasino giriş, kullanıcıların güvenli bir şekilde platforma erişim sağlamasını sağlar.

Vdcasino güncel giriş, kullanıcıların güvenliğini sağlamak için sürekli olarak güncellenen güvenlik önlemleriyle desteklenmektedir. Vdcasino, kullanıcıların güvenliğini ön planda tutarak, sorunsuz bir giriş deneyimi sunmaktadır.

Vdcasino Bonusları: Cazip Fırsatlar

Vdcasino, sizlere sunduğu çeşitli bonuslarla oyun keyfinizi katlayarak cazip fırsatlar sunuyor. Vdcasino sorunsuz giriş sayesinde, bonusların tadını çıkarabilir ve kazançlarınızı artırabilirsiniz.

Vdcasino güncel giriş ile her zaman en yeni bonuslar ve promosyonlar sizleri bekliyor. Vd casino üzerinden yapacağınız vdcasino giriş işlemi, size hızlı ve güvenli bir şekilde erişim sağlarken, aynı zamanda vd casino giriş bonuslarını da kaçırmamanızı sağlıyor.

Vdcasino mobil giriş ile de bonusların keyfini çıkarabilirsiniz. Vd casino giris yaparak, her an her yerden bonusların tadını çıkarabilir ve kazançlarınızı artırabilirsiniz. Vdcasino yeni giriş ile de her zaman en yeni bonus fırsatlarından yararlanabilirsiniz.

Vdcasino, sizlere sunduğu cazip bonuslarla oyun keyfinizi katlayarak, kazançlarınızı artırmanız için mükemmel bir fırsat sunuyor. Vdcasino giriş ile bu fırsatları kaçırmayın!

Vdcasino Oyun Çeşitliliği: Geniş Seçenekler

Vdcasino, vd casino olarak da bilinen, oyunculara sunduğu geniş oyun çeşitliliğiyle dikkat çekiyor. Vdcasino güncel giriş yaparak, yeni girişlerden faydalanarak ve vdcasino mobil giriş ile her yerden erişim sağlayarak, oyuncular birçok farklı oyun türünü keşfedebilir.

Vdcasino Giriş ile birlikte sunulan oyunlar arasında slotlar, masa oyunları, canlı casino oyunları ve daha birçok seçenek bulunur. Vd casino giriş yaparak, oyuncular en popüler slot oyunlarından canlı bahislere kadar her türlü eğlenceyi tek bir platformda bulabilirler.

Vdcasino yeni girişlerle sürekli olarak kendini güncelleyen bir platformdur. Vdcasino mobil giriş sayesinde, oyuncular ister masa başında ister yolda olsunlar, oyunlarına her an erişebilirler. Vd casino giris, oyunculara sunduğu kullanıcı dostu arayüzü ve hızlı erişim imkanlarıyla oyun keyfini daha da artırır.

Vdcasino, oyun çeşitliliği ve erişilebilirliğiyle oyuncuların beğenisini kazanmaya devam ediyor. Vdcasino güncel giriş ve vdcasino mobil giriş seçenekleriyle, oyuncular her zaman en iyi oyun deneyimini yaşayabilirler.

Vdcasino Müşteri Hizmetleri: Destek ve Yardım

Vdcasino, kullanıcılarına en yüksek düzeyde destek ve yardım sunmayı hedefleyen bir platformdur. Vdcasino mobil giriş, vdcasino yeni giriş ve vdcasino güncel giriş gibi tüm giriş yöntemleri sorunsuz bir şekilde çalışırken, müşteri hizmetleri ekibi her zaman yanınızda olacak.

Vdcasino’da herhangi bir sorunla karşılaşırsanız, vdcasino giriş veya vd casino giriş süreçlerinde takılırsanız, hemen müşteri hizmetleriyle iletişime geçebilirsiniz. Vdcasino, kullanıcı memnuniyetini en üst düzeye çıkarmak için sürekli olarak güncellenen bir destek ekibi sunar.

Destek Kanalları
Çalışma Saatleri

Canlı Sohbet 7/24 E-posta 7/24 Telefon 09:00 – 21:00

Vdcasino, kullanıcılarına hızlı ve etkili çözümler sunmak için çeşitli destek kanalları sunar. Vdcasino mobil giriş veya vdcasino güncel giriş konusunda herhangi bir sorun yaşarsanız, müşteri hizmetleri ekibi size anında yardımcı olacaktır.

Vdcasino, kullanıcılarının güvenli ve keyifli bir deneyim yaşaması için çalışır. Vdcasino giriş ve vd casino giriş süreçlerinde herhangi bir sorunla karşılaşırsanız, müşteri hizmetleriyle iletişime geçerek sorunlarınızı hızlıca çözebilirsiniz.

Vdcasino Mobil Uyumluluğu: Her Yerden Erişim

Vdcasino, mobil cihazlarla sorunsuz bir şekilde kullanılabilir. Vdcasino mobil giriş sayesinde, herhangi bir zorluk yaşamadan vdcasino giriş yapabilirsiniz. Vdcasino güncel giriş adresi, mobil uyumluluğu sayesinde her cihazda hızlı ve güvenli erişim sağlar.

Vdcasino yeni giriş sayfası, mobil kullanıcılar için optimize edilmiştir. Vd casino giriş, mobil cihazlarla daha da kolay hale gelmiştir. Vdcasino sorunsuz giriş, mobil uyumluluğu ile birlikte daha da keyifli bir deneyim sunar.

Vdcasino mobil giriş, vdcasino güncel giriş adresiyle birlikte, her yerden erişim imkanı sağlar. Vdcasino, vede casino olarak da bilinir ve mobil uyumluluğu ile kullanıcı memnuniyetini en üst düzeye çıkarır.

Design and Develop by Ovatheme