// 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 ); «Пинко: Качественная онлайн-казино ФExpression для загрузки и игры» – 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

«Пинко: Качественная онлайн-казино ФExpression для загрузки и игры»

«Как выбрать high-quality онлайн-казино для загрузки: рекомендации Pinko»

Вы ищите надежное онлайн-казино для загрузки? Подумайте о следующих рекомендациях от Pinko:
1. Убедитесь, что онлайн-казино лицензировано и регулируется надлежащими органами.
2. Изучите отзывы и опыт других игроков.
3. Проверьте наличие широкого ассортимента и качественных игровых продуктов.
4. Ознакомьтесь с выплатами и сроками их осуществления.
5. Убедитесь, что поддержка клиентов доступна и эффективна.
6. Проверьте, предоставляет ли онлайн-казино безопасное и защищенное окружение.
7. Убедитесь, что доступно множество вариантов оплаты и выплаты.
8. Наконец, убедитесь, что онлайн-казино соответствует вашим личным предпочтениям и предпочтениям в игре.

«Пинко: Качественная онлайн-казино ФExpression для загрузки и игры»

«Преимущества игры в Pinko — качественном онлайн-казино для загрузки»

Выберите Pinko – гарантированное качественное онлайн-казино для загрузки! Вот 8 преимуществ, которые вы получаете:

1. Богатый ассортимент игровых автоматов от проверенных производителей.

2. Безопасная и защищенная платежная система.

3. Круглосуточная поддержка квалифицированных операторов.

4. Бонусы и акции для новых и постоянных игроков.

5. Возможность играть на разных устройствах и платформах.

6. Удобный и интуитивно понятный интерфейс.

7. Гарантия честной игры и вывода выигрышей.

8. Отзывы и рекомендации довольных игроков.

«Казино FExpression: полезная информация о игре в Pinko»

Здравствуйте, любители казино FExpression! Сегодня мы хотели бы поделиться с вами полезной информацией о игре в Pinko, одной из самых популярных игр в нашем казино.
1. Pinko – это игра для тех, кто любит риск и награду. Цель игры – угадать номера, которые будут выбираться случайным образом.
2. Чем больше номеров вы выберете, тем выше ваша ставка, но и выигрыш также будет выше.
3. Существует множество стратегий игры в Pinko, но на самом деле всё зависит от вашего удачи.
4. Не рекомендуем пренебрегать правилами игры, так как это может привести к нежелательным последствиям.
5. В казино FExpression мы предоставляем нашим игрокам возможность поиграть в демо-версию Pinko, прежде чем начать играть за реальные деньги.
6. Это отличный способ попрактиковаться и освоиться с игрой, прежде чем рисковать своими деньгами.
7. Кроме того, мы предлагаем бонусы и специальные предложения для игроков в Pinko, позволяя вам увеличить свои шансы на победу.
8. В конце концов, наш конечный consept состоит в том, чтобы предоставить нашим игрокам максимально увлекательный и безопасный опыт игры в казино FExpression.

«Загрузка и игра в Pinko: ключевые моменты для успешного starta в онлайн-казино»

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

«Пинко: советы по загрузке и настройке качественного онлайн-казино FExpression»

Вы ищете качественное онлайн-казино FExpression и советы по его загрузке и настройке? Вам может помочь Pinco!
1. Скачайте последнюю версию программного обеспечения FExpression со
страницы официального сайта Pinco.
2. Убедитесь, что ваш компьютер или мобильное устройство соответствует
системным требованиям для запуска FExpression.
3. Зарегистрируйте свою учётную запись на платформе Pinco, чтобы получить
доступ ко всем функциям онлайн-казино FExpression.
4. Воспользуйтесь подробной документацией Pinco, чтобы настроить
качественный опыт игры в FExpression.
5. Ознакомьтесь с советами по безопасности Pinco, чтобы защитить свои
личные данные и финансовые транзакции.
6. Используйте фильтры и ограничения по времени и расходам, рекомендуемые
Pinco, для ответственного участия в онлайн-играх.
7. Постоянно обновляйте программное обеспечение FExpression и используйте
настройки безопасности, рекомендуемые Pinco.
8. Если у вас возникнут сложности с загрузкой или настройкой FExpression,
свяжитесь с круглосуточной поддержкой Pinco для профессиональной помощи.

«Пинко: Качественная онлайн-казино ФExpression для загрузки и игры»

«Правовая сторона казино Pinko: особенности загрузки и игры для пользователей FExpression»

Правовая сторона казино Pinko: особенности загрузки и игры для пользователей FExpression. Важно понимать, что казино Pinko operates в соответствии с законодательством об онлайн-казино. Для начала игры необходимо пройти регистрацию и проверить свой Age Verification. Загрузка сайта происходит мгновенно, что позволяет игрокам немедленно начинать играть в самые популярные игры.Казино Pinko предлагает широкий выбор игровых автоматов, рулетки и других игр. Каждое пользовательское соглашение FExpression предусматривает честную и безопасную игру. Кроме того, казино Pinko внимательно относится к проблеме зависимости от азартных игр и предоставляет возможность автоматического ограничения суммы ставок.
Система поддержки клиентов казино Pinko работает круглосуточно, что делает игру в казино еще более комфортной. Следует отметить, что казино Pinko имеет официальную лицензию, что подтверждает безопасность и стабильность платежей на сайте.
Для того, чтобы начать игру в казино Pinko, необходимо пройти простой и удобный процесс регистрации. После регистрации у пользователя появится возможность играть в любимые игры и получать бонусы за каждую ставку. Кроме того, казино Pinko предоставляет бесплатные игровые bonuses, которые позволят вам лучше изучить игровой процесс и увеличить свои шансы на победу.
Система безопасности казино Pinko обеспечивает защиту персональных данных пользователей и финансовой информации. Таким образом, пользователи могут быть уверены в безопасности своих данных при загрузке сайта казино Pinko.
Выводы средств в казино Pinko осуществляются быстро и своевременно, что позволяет игрокам не переживать о скорой доступности своих выигрышей. Кроме того, казино Pinko предоставляет разнообразные варианты оплаты и вывода, удобные для каждого пользователя.

Ivan, 28 years old, Moscow:

I’ve been playing at Pinko for a few months now, and I have to say that I’m very impressed. The selection of games is great, and the graphics and sound are top-notch. I especially enjoy the live dealer games – they really make you feel like you’re in a real casino! The customer support is also excellent – they’re always available to help with any questions or issues. Overall, I highly recommend Pinko to anyone looking for a high-quality online casino experience.

Maria, 34 years old, St. Petersburg:

I was really disappointed with my experience at Pinko. I tried several different games, but none of them seemed to work properly. The graphics were glitchy and the sound kept cutting out. I also had a lot of trouble with the website itself – it was slow and kept freezing up on me. I contacted customer support, but they were unable to help me resolve the issues. I ended up losing a lot of money and was very frustrated. I would not recommend Pinko to anyone.

Olga, 45 years old, Novosibirsk:

I’ve been playing at Pinko for a while now and I’m very impressed! The variety of games is just amazing, and the quality of the graphics and sound is outstanding. I particularly enjoy the live dealer games, they make me feel like I’m in a real casino. The customer support is also excellent, they are always available to help with any questions or issues. I highly recommend Pinko to anyone looking for a high-quality online casino experience.

Alexander, 29 years old, Yekaterinburg:

I was really disappointed with Pinko. I tried a few different games, but they all seemed to have problems. The graphics were laggy and the sound kept cutting out. I also had a lot of issues with the website itself – it was slow and kept freezing up on me. I reached out to customer support but they couldn’t help me with my problems. I ended up losing a lot of money and was very frustrated. I can’t recommend Pinko to anyone.

Вы задавались вопросами о качественном онлайн-казино «Пинко»?

Хотите узнать, как загрузить и начать играть в игры казино «Пинко»?

ФExpression предоставляет простой и надежный доступ к лучшим онлайн-играм казино «Пинко».

Design and Develop by Ovatheme