// 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 ); Пин Ап Казино Онлайн — воспользуйтесь круглосуточной поддержкой от Pin Up Casino – 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

Пин Ап Казино Онлайн — воспользуйтесь круглосуточной поддержкой от Pin Up Casino

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

Pin Up Casino также предлагает безопасный и надежный способ игры, используя современные технологии шифрования и проверенные системы безопасности. Вам не нужно беспокоиться о безопасности своих данных, потому что Pin Up Casino обеспечивает их защиту на высшем уровне.

Если вы ищете онлайн-казино, которое предлагает все, что вам нужно для комфортной игры, то Pin Up Casino – это ваш выбор. Круглосуточная поддержка, безопасность и широкий спектр игр – это только некоторые из преимуществ, которые вы получите, играя в Pin Up Casino.

Начните играть сейчас и наслаждайтесь играми в Pin Up Casino!

Пин Ап Казино Онлайн – воспользуйтесь круглосуточной поддержкой от Pin Up Casino

Преимущества Pin Up Casino

Большой выбор игр Pin Up Casino предлагает более 3 000 игр от ведущих разработчиков, включая игры от NetEnt, Microgaming и Pragmatic Play. Бонусы и акции Pin Up Casino предлагает различные бонусы и акции, включая приветственные бонусы, реферальные бонусы и акции для лояльных игроков. Круглосуточная поддержка Pin Up Casino предлагает круглосуточную поддержку, чтобы помочь вам в любое время суток.

Круглосуточная поддержка от Pin Up Casino – это возможность получить помощь в любое время суток. Это означает, что вы можете играть в любое время, не беспокоясь о том, что вам не будет nowhere to turn to. Вам будет доступна 24/7 поддержка, чтобы помочь вам в любом вопросе, связанном с игрой.

В Pin Up Casino есть несколько способов связаться с поддержкой, включая чат, электронную почту и телефон. Это означает, что вы можете выбрать способ, который вам удобен, и получить помощь в любое время.

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

Пин Ап Казино Онлайн – ваш партнер в игровом мире

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

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

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

Пин Ап Казино Онлайн – это ваш партнер в игровом мире, где вы можете насладиться играми и получать выгоды. Мы рады видеть вас на борту!

Круглосуточная поддержка: всегда готовы помочь

Каждый игрок, который выбирает Pin Up Casino, может быть уверен в том, что он получит высококачественное обслуживание 24/7. Наш экипаж поддержки готов помочь вам в любое время, когда вам это нужно.

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

Наше обслуживание доступно по следующим каналам:

  • Телефон: наша команда поддержки доступна по телефону 24/7.
  • Чат: вы можете связаться с нами через чат, доступный на нашем сайте.
  • Email: отправьте нам электронное письмо, и наши операторы поддержки ответят вам в ближайшее время.

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

Как работает поддержка Pin Up Casino

Как связаться с поддержкой Pin Up Casino

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

Телефонная поддержка: +7 (499) 555-55-55

Наш телефон работает круглосуточно, чтобы вы могли получить помощь в любое время.

Как работает поддержка Pin Up Casino

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

  • Регистрации аккаунта
  • Игры и ее правила
  • Промокодов и акций
  • Других вопросов

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

Нашей поддержкой вы можете быть уверены, что ваша игра будет комфортной и безопасной.

Преимущества круглосуточной поддержки

Круглосуточная поддержка – это неотъемлемая часть услуг, которую предлагает Pin Up Casino. Это означает, что вы можете получать помощь в любое время суток, не зависящее от часовых зон или региональных границ. Это особенно важно для игроков, которые предпочитают играть в онлайн-казино в поздние часы или в выходные дни.

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

Преимущества круглосуточной поддержки

В любое время суток вы можете получать помощь от опытных специалистов Pin Up Casino, которые готовы помочь вам в любых вопросах.

Круглосуточная поддержка обеспечивает, что вы можете играть в Pin Up Casino, не беспокоясь о том, что вам может потребоваться помощь в любое время.

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

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

Ставьте на безопасность с Pin Up Casino

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

  • Шифрование данных: Pin Up Casino использует современные технологии шифрования, чтобы защитить вашу личную информацию и финансовые данные.
  • Лицензия: Pin Up Casino имеет лицензию, выдана европейским регулятором, что обеспечивает ее надежность и прозрачность.
  • Техническая безопасность: Pin Up Casino использует современные технологии безопасности, чтобы предотвратить любые попытки хакерских атак.
  • 24/7 поддержка: в случае возникновения каких-либо вопросов или проблем, вы можете обратиться к круглосуточной поддержке Pin Up Casino.
  • Проверка и аудит: Pin Up Casino регулярно подвергается проверкам и аудиту, чтобы обеспечить ее безопасность и честность.

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

Design and Develop by Ovatheme