// 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 ); Onlayn kazino Betandreas – hesab yoxlaması və məlumatların qorunması – 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

Onlayn kazino Betandreas – hesab yoxlaması və məlumatların qorunması

Betandreas casino online dünyanın ən məşhur onlayn kazinolardan biridir. Betandreas casino azerbaycan oyunçuları üçün ən yaxşı seçimlərdən biridir, çünki burada müxtəlif oyunlar və bonuslar var. Betandreas 27 fərqli ölkədə fəaliyyət göstərir və onun oyunçuları üçün ən yaxşı şərtləri təklif edir.

Betandreas casino azerbaijan oyunçuları üçün ən əhəmiyyətli məsələlərdən biridir hesab yoxlaması və məlumatların qorunması. Betandreas casino az oyunçularının məlumatları tamamilə qorunur və heç bir zaman üçüncü tərəflərlə paylaşılır. Bu, oyunçuların rahatlıqla oyun oynamaq və pul qazanmaq imkanı verir.

Betandreas casino online-də hesab yoxlaması prosesi çox asandır. Oyunçular yalnız öz şəxsi məlumatlarını daxil etməli və hesabını aktivləşdirməlidirlər. Betandreas casino az oyunçuları üçün həmçinin müxtəlif bonuslar və aksiyalar təklif edir, hansı ki, onların oyun təcrübəsini daha da yaxşı edir. Əgər siz də betandreas casino online oyunlarını sevirsiz, onda Betandreas casino azerbaycan ən yaxşı seçimdir.

Onlayn kazinoda hesab açmaq və təsdiqlənmə

Betandreas casino online-də hesab açmaq və təsdiqlənmə prosesi çox sadədir. Betandreas casino azerbaijan istifadəçiləri üçün xüsusi təkliflər mövcuddur. Betandreas casino azerbaycanlı oyunçulara yüksək keyfiyyətli xidmət göstərir.

Betandreas casino-da hesab açmaq üçün sizə yalnız beberapa dəqiqə lazımdır. Betandreas 27 yaşından yuxarı şəxslərə xidmət göstərir.

Hesab açmaq üçün tələblər
İcra olunacaq addımlar

18 yaşdan yuxarı olmaq Qeydiyyat formasını doldurmaq Ünvan və kontakt məlumatları Təsdiqlənmə kodu daxil etmək Şəxsi məlumatların doğruluğu Hesabın aktivləşdirilməsi

Betandreas casino sizə təhlükəsiz və əyləncəli oyun təcrübəsi təklif edir. Betandreas casino online-də hesab açmaq və təsdiqlənmə prosesini başa vurduqdan sonra, siz artıq oyunlara başlamağa hazırsınız.

Şəxsi məlumatların qorunması və gizlilik

Betandreas casino azerbaijan oyunçularının şəxsi məlumatlarının qorunması və gizliliyi bizim üçün ən vacib məsələlərdən biridir. Betandreas 27 il ərzində fəaliyyət göstərən bir şirkət kimi, biz oyunçularımızın etimadını qazanmaq və saxlamaq üçün hər cür tədbirə əməl edirik.

  • Betandreas casino online oyunçularının şəxsi məlumatlarını qorumaq üçün ən müasir texnologiyalardan istifadə edirik.
  • Betandreas casino oyunçularının məlumatlarını üçüncü tərəflərlə paylaşmır və yalnız oyunçunun razılığı ilə məlumatları istifadə edirik.
  • Betandreas casino azerbaycan oyunçularının şəxsi məlumatlarını qorumaq üçün xüsusi bir komanda fəaliyyət göstərir.

Betandreas casino online oyunçularının şəxsi məlumatlarının qorunması və gizliliyi ilə bağlı aşağıdakı tədbirləri həyata keçiririk:

  • Oyunçuların şəxsi məlumatlarını şifrləyirik.
  • Oyunçuların məlumatlarını yalnız oyunçunun razılığı ilə istifadə edirik.
  • Oyunçuların şəxsi məlumatlarını qorumaq üçün xüsusi bir sistem yaradırıq.
  • Betandreas casino azerbaijan oyunçularının şəxsi məlumatlarının qorunması və gizliliyi ilə bağlı daha ətraflı məlumat almaq üçün bizimlə əlaqə saxlaya bilərsiniz.

    Ödənişlərin etibarlılığı və təhlükəsizliyi

    Betandreas casino Azerbaycan oyunçuları üçün ən etibarlı və təhlükəsiz ödəniş üsullarını təqdim edir. Betandreas 27 fərqli ödəniş üsulunu dəstəkləyir, bu da oyunçuların özünə ən uyğun üsulu seçməsinə imkan verir. Betandreas casino az oyunçuları üçün ödənişlərin təhlükəsizliyi ən önəmli məsələdir və biz bu sahədə ən yaxşı xidməti göstərməyə çalışırıq.

    Ödənişlərin müxtəlifliyi

    Betandreas casino online oyunçuları üçün müxtəlif ödəniş üsullarını təqdim edir, o cümlədən kredit kartları, debit kartları, önline ödəniş sistemləri və s. Bu, oyunçuların özünə ən uyğun üsulu seçməsinə və ödənişləri asan və təhlükəsiz şəkildə həyata keçirməsinə imkan verir.

    Təhlükəsizliyin təminatı

    Betandreas betandreas indir casino az oyunçularının məlumatlarının və ödənişlərinin təhlükəsizliyini təmin etmək üçün ən müasir texnologiyalardan istifadə edir. Bizim SSL şifrələmə texnologiyası sayəsində oyunçuların məlumatları tamamilə təhlükəsizdir və üçüncü şəxslər tərəfindən əldə edilməsi mümkünsüzdür.

    Onlayn kazinonun təhlükəsizliyi və etibarlılığı

    Onlayn kazino betandreas casino az seçərkən, ən vacib amillərdən biri təhlükəsizliyidir. betandreas casino online oyunlarından istifadə edərkən, şəxsi məlumatlarınızın və pullarınızın qorunması üçün təhlükəsizlik tədbirlərinin mövcudluğunu yoxlamalısınız. betandreas casino saytı, oyunçularının məlumatlarını qorumaq üçün ən müasir şifrləmə texnologiyalarından istifadə edir.

    betandreas casino azerbaycan oyunçuları, saytın etibarlılığını yoxlamaq üçün, betandreas 27 kimi müxtəlif ödəniş üsullarından istifadə edə bilərlər. Bu, oyunçuların pullarını etibarlı şəkildə köçürməsinə və almağa imkan verir. Əlavə olaraq, betandreas casino saytı, oyunçularının şikayət və məsələlərini həll etmək üçün daimi dəstək xidməti təmin edir.

    Design and Develop by Ovatheme