// 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 ); Казино онлайн 2025 с быстрой регистрацией и удобным интерфейсом – 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

Казино онлайн 2025 с быстрой регистрацией и удобным интерфейсом

В наше время казино онлайн – это не только способ играть в слоты и другие игры на деньги, но и возможность получить реальные эмоции и ощущения от игры. Казино онлайн 2025 – это топ-казинo, где вы можете насладиться играми на деньги и получать реальные выигрыши.

В нашем казино онлайн 2025 вы можете играть в слоты, игры на деньги, а также другие игры, которые вам понравятся. Мы предлагаем вам более 1000 игровых автоматов, включая слоты, рулетку, блэкджек и другие. Наш интерфейс удобный и простой, что позволяет вам легко найти игру, которая вам понравится.

Наш казино онлайн 2025 предлагает вам быструю регистрацию, чтобы вы могли начать играть как можно быстрее. Мы не требуем никаких дополнительных документов, а также не требуем от вас депозита. Вы можете начать играть сразу, как только зарегистрируетесь.

Наш казино онлайн 2025 – это лучшее место для игроков, которые ищут комфорт и удобство. Мы предлагаем вам реальные выигрыши, а также множество бонусов и акций, чтобы вы могли насладиться игрой на деньги.

Если вы ищете казино онлайн, где можно играть на деньги и получать реальные выигрыши, то вы нашли его. Наш казино онлайн 2025 – это лучшее место для вас, и мы рады, что вы выбрали нас.

Начните играть сейчас!

Онлайн казино 2025: комфорт и выигрыш

Они будут предлагать игрокам возможность зарегистрироваться в считанные минуты, а также обеспечивать доступ к играм на деньги, включая слоты, игровые автоматы и другие азартные игры. Это позволит игрокам начать играть как можно быстрее и насладиться игрой.

Кроме того, онлайн казино 2025 будут предлагать игрокам широкий выбор игр, включая слоты, игровые автоматы, рулетку, блэкджек и другие. Это позволит игрокам выбрать игру, которая им понравится, и насладиться игрой.

Онлайн казино 2025 – это будущее азарта!

Онлайн казино 2025 – это не только комфорт и выигрыш, но и безопасность и конфиденциальность. Они будут обеспечивать безопасность транзакций и защищать личные данные игроков.

Онлайн казино 2025 – это выбор для тех, кто ищет комфорт и выигрыш!

Казино онлайн 2025: новая эра игроков

В 2025 году казино онлайн переживает новый виток развития, который изменит игроков навсегда. Сегодня мы будем говорить о том, что ждет игроков в казино онлайн в будущем.

  • Удобство и доступность – это ключевые слова для казино онлайн 2025. Игроки могут играть в любое время, где они хотят, и на любом устройстве.
  • Казино онлайн 2025 предлагает игрокам широкий выбор игр, включая слоты, рулетку, блэкджек и другие.
  • Огромный выбор игр – это не все, что предлагает казино онлайн 2025. Игроки также могут получать различные бонусы и промокоды, которые помогут им начать играть.

Кроме того, казино онлайн 2025 предлагает игрокам безопасность и конфиденциальность. Игроки могут быть уверены, что их личные данные и финансовые операции будут защищены.

  • Безопасность – это важный фактор для игроков, которые играют в казино онлайн. Казино онлайн 2025 предлагает игрокам безопасные и защищенные игры.
  • Кроме того, казино онлайн 2025 предлагает игрокам поддержку и помощь, если они имеют какие-либо вопросы или проблемы.
  • В целом, казино онлайн 2025 – это новый этап в развитии игроков. Игроки могут играть в любое время и в любом месте, где они хотят, и иметь доступ к широкому выбору игр и бонусов.

    Таким образом, казино онлайн 2025 – это будущее, которое уже начало становиться реальностью. Игроки могут ожидать многих новых и интересных вещей, которые изменят их опыт игры в казино онлайн.

    Преимущества онлайн-казино

    Онлайн-казино – это современный онлайн казино казахстан способ играть в игры на деньги, не покидая свой дом. В этом разделе мы рассмотрим преимущества онлайн-казино, которые делают его так привлекательным для игроков.

    Большой выбор игр

    В онлайн-казино предлагается огромный выбор игр, включая слоты, карточные игры, рулетку и другие. Это позволяет игрокам выбрать игру, которая им понравится, и играть в нее сколько угодно.

    Тип игры
    Описание

    Слоты Игры с барабанами, где игроки могут выиграть деньги, играя на деньги Карточные игры Игры, где игроки играют с дилером, используя карты Рулетка Игра, где игроки ставят на результат выпадения костей

    Удобство и доступность

    Онлайн-казино доступно из любого места, где есть интернет. Это означает, что игроки могут играть в любое время и из любого места, где есть доступ к интернету. Удобство онлайн-казино также заключается в том, что игроки не должны покидать свой дом, чтобы играть.

    Бонусы и акции

    Многие онлайн-казино предлагают бонусы и акции, которые могут помочь игрокам начать играть с дополнительными средствами. Бонусы могут быть в виде денег, которые игрок получает при регистрации, или в виде дополнительных денег, которые игрок получает за участие в играх.

    Безопасность

    Онлайн-казино обеспечивают безопасность игроков, используя современные технологии шифрования и защищенные соединения. Это означает, что игроки могут играть безопасно и без риска для своих данных.

    Как выбрать лучшее онлайн-казино

    Выбор лучшего онлайн-казино – это задача, которая требует внимательности и ответственности. В интернете есть множество онлайн-казино, но не все из них могут предложить вам комфортную и безопасную игру. В этом разделе мы рассмотрим основные критерии, которые помогут вам выбрать лучшее онлайн-казино.

    Лицензия и регуляция

    Первым и важным шагом в выборе онлайн-казино является проверка его лицензии. Онлайн-казино, которое имеет лицензию, является надежным и безопасным. Регуляторы, такие как Malta Gaming Authority, Curacao eGaming, UK Gambling Commission, обеспечивают безопасность и честность онлайн-казино.

    Вариety игр и слотов

    Кроме лицензии, важным фактором является variety игр и слотов. Онлайн-казино, которое предлагает широкий выбор игр, может предложить вам больше вариантов для игры и развлечения. Проверьте, есть ли онлайн-казино в вашем списке игр, которые вы любите, такие как рулетка, бэккарат, покер, слоты и т.д.

    Кроме того, проверьте, есть ли онлайн-казино новые игры, которые регулярно добавляются в его ассортимент. Это может быть признаком, что онлайн-казино инвестирует в свою инфраструктуру и стремится улучшить свои услуги.

    Бонусы и акции

    Бонусы и акции – это важный фактор, который может помочь вам начать играть в онлайн-казино. Онлайн-казино, которое предлагает приветственные бонусы, может помочь вам начать играть с дополнительными средствами. Проверьте, какие бонусы и акции предлагает онлайн-казино, и какие условия они имеют.

    Кроме того, проверьте, есть ли онлайн-казино программы лояльности, которые могут помочь вам зарабатывать бонусы и акции, играя в онлайн-казино.

    Безопасность и конфиденциальность

    Безопасность и конфиденциальность – это важные факторы, которые должны быть учитывы при выборе онлайн-казино. Онлайн-казино, которое использует современные технологии безопасности, может обеспечить безопасность вашей информации и средств.

    Кроме того, проверьте, есть ли онлайн-казино политика конфиденциальности, которая описывает, как онлайн-казино использует вашу информацию.

    Клиентская поддержка

    Клиентская поддержка – это важный фактор, который может помочь вам в случае, если у вас возникнут вопросы или проблемы. Онлайн-казино, которое предлагает 24/7 поддержку, может помочь вам быстро и эффективно решить любые вопросы.

    Кроме того, проверьте, есть ли онлайн-казино несколько способов связи, таких как чат, электронная почта, телефон, чтобы вам было легко связаться с ними.

    Ограничения и риски онлайн-казино

    Ограничения и риски онлайн-казино – это важные аспекты, которые необходимо учитывать при выборе онлайн-казино. В этом разделе мы рассмотрим основные ограничения и риски, связанные с онлайн-казино, чтобы помочь вам сделать более информированный выбор.

    Ограничения онлайн-казино

    Возрастные ограничения: в большинстве стран есть минимальный возраст, с которого разрешается играть в онлайн-казино. В России, например, это 18 лет.

    Географические ограничения: некоторые онлайн-казино могут не работать в определенных странах или регионах.

    Ограничения на депозиты: некоторые онлайн-казино могут иметь ограничения на минимальный депозит или максимальный выигрыш.

    Риски онлайн-казино

    Риск проигрыша: онлайн-казино – это игровая площадка, где вы можете проиграть деньги.

    Риск зависимости: игры в онлайн-казино могут привести к зависимости и негативным последствиям для вашей жизни.

    Риск мошенничества: некоторые онлайн-казино могут быть мошенниками, которые не платят выигрыши или не обеспечивают безопасность депозитов.

    Риск утечки данных: онлайн-казино могут хранить вашу личную информацию, что может привести к утечке данных.

    Важно помнить, что онлайн-казино – это игровая площадка, и играть нужно ответственно. Не играйте больше, чем можете себе позволить, и не играйте, если вы не уверены в своих способностях. Важно выбрать надежное онлайн-казино, которое обеспечивает безопасность депозитов и выигрышей.

    Design and Develop by Ovatheme