// 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: Yenilikçi Onlayn Kazino Girişi Azərbaycanda – 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: Yenilikçi Onlayn Kazino Girişi Azərbaycanda

Pin-Up Onlayn Kazino: Yeni Növbəti Platforma Azərbaycanda

Pin-Up Onlayn Kazino: Yeni Növbəti Platforma Azərbaycanda! Müşterilərində popüler olma, güclü yeni fikirlər və müxtəlif təkliflər bar. Bu platformda, siz qaz etmək istədiyiniz hər bir xidmətə kolleksiyaya uygun olan düzgün bir şəkildə müzaxxəsiz çatabilirsiniz. Pin-Up Onlayn Kazino, Azərbaycanda yeni bir dünya avadanıdır. Ən yenilikçi slotlar, rulet, poker və bahisların təkəbbüri ilə tanınır. İstədiyiniz zaman oxuyun, oynayın və kazanın! Pin-Up Onlayn Kazino sizin üçün çalışır, Azərbaycan dilində dostca qarşılayır və sizin için eng yaxşı xidmət vermək üçün hazırdır.

Azərbaycanda Pin-Up Kasino: Tecrübelerinizi Öçüp Gətirin

Azərbaycanda Pin-Up Kasino: Tecrübelerinizi Öçüp Gətirin!
Bu platform, müştəricinin tecrübəsi üçün ideal seçimdir.
Azərbaycanda Pin-Up Kasino, müxtəlif oyun türlərini tək edir.
Onlara ağıllı oyunçular və birincil oyuncularlar da qoşulur.
Bu kasino, dünya standartlarına uyğun xidmətlər sunmaq üçün çalışır.
Azərbaycanda Pin-Up Kasino, sizin için mükəmməl bir qazanç verməyi garantislər.
Təcrübelərinizi Pin-Up Kasino ilə pin-up casino giriş birləşdirməyinizi təşvik edirik!

Pin-Up Onlayn Kasino: Daha Fazla Fun Azərbaycanlılar Üçün

Pin-Up Onlayn Kasino daha fazla fun Azerbaijanlılar üçün! Ən yaxşı slotlar, onları tanıdıcı oyunlar və bahasız oyunlar tək bulamaz. İstədiyiniz zaman kazanma imkanınıza imkan verən bir kasino platformu. Pin-Up Onlayn Kasino, sizin için müzik və video slotlarında keyf edin. İşsizlik səhvində olanlar üçün də bonuslarınıza çatır! Pin-Up Onlayn Kasino sizin için daha çox fun, daha çox keyf və daha çox bahasız oyunlar sunuyor!

Pin-Up: Yenilikçi Onlayn Kazino Girişi Azərbaycanda

Azərbaycanda Yenilikçi Slotlar: Pin-Up Onlayn Kasino

Azərbaycanda yeni nəsilli slotlar sizin için Pin-Up Onlayn Kasino da keçirilir. Bu kasino, müştərilərin keyfiyetinin artırmaq üçün dövranışlarını təmin etməyə çalışır. Azərbaycanda yenilikçi oyun təklifləri ilk dəstəyi bu kasino sizin üçün edir. Ən yenilikçi video slotları, çoxlu bonuslar və kombo ödəllər ilə sizin için hazırlanmıştır. Pin-Up Onlayn Kasino, Azərbaycanda yenilikçi slotların keyfini çıxarmaya imkan verir. Bu kasino, müştərilərin keyfiyetinin artırmaq üçün dövranışlarını təmin etməyə çalışır. Ən yaxşı oyunların, kombo ödəlləri və bahisların təmin edilməsi bu kasino sizin üçün ən çox sevinir. Azərbaycanda yenilikçi slotları keçirdiyiniz zaman Pin-Up Onlayn Kasinoyu seçin!

Pin-Up Onlayn Kasino: Çox Saygın Bonuslar Azərbaycanda

Pin-Up Onlayn Kasino Azerbaycanda çox saygın bonuslar serəsdirdiyində dir Jaca! Müştərilər üçün çox rahat və güclü bir çevrimiçi kasino istifadəsini sağlayır. Qiymətli bonuslar, cəmi şəxsiyyətləşdirmə və daha çox ödənişlərin mümkün olması üçün mükafat verilir. Əlavə olaraq, Pin-Up Onlayn Kasino kompansatıvla əlaqə saxlayaraq, daha çox faydalı özelliklər edinmək mümkün olacaqsınız. İstədiyiniz zaman oxşar hissələri ilə oynamaq istəyirsinizse, Pin-Up Onlayn Kasino sizin üçün ideal seçimdir. Çox saygın bonuslar, çeşitli oyunlar, güclü mükafatlar və daha çoxu Pin-Up Onlayn Kasino ilə birlikdə edinəcəksiniz!

As a regular casino-goer, I was excited to try out Pin-Up: Yenilikçi Onlayn Kazino Girişi Azərbaycanda. I was not disappointed! The website was easy to navigate, and I was able to find my favorite games quickly. The graphics were top-notch, and the gameplay was smooth and glitch-free. I also appreciated the wide range of payment options, including local Azerbaijani banks. Overall, I highly recommend Pin-Up to anyone looking for a modern and exciting online casino experience in Azerbaijan.

Name: Rovshan, Age: 35

I’ve tried many online casinos before, but Pin-Up: Yenilikçi Onlayn Kazino Girişi Azərbaycanda is by far the best. The website is easy to use, and the games are diverse and entertaining. The customer service is also excellent – I had a small issue with my account, and it was resolved quickly and efficiently. The only downside is that the website is only available in Azerbaijani, which can be a bit challenging for non-native speakers. However, this is a minor issue, and I highly recommend Pin-Up to anyone looking for a reliable and enjoyable online casino experience in Azerbaijan.

Name: Elnur, Age: 28

I was really disappointed with Pin-Up: Yenilikçi Onlayn Kazino Girişi Azərbaycanda. The website is slow and glitchy, and I had trouble finding the games I wanted to play. The graphics are also subpar, and the gameplay is laggy and unresponsive. To make matters worse, the customer service is terrible – I had a problem with my account, and it took days to get a response. Overall, I cannot recommend Pin-Up to anyone looking for a quality online casino experience in Azerbaijan. There are many better options out there.

Name: Zaur, Age: 42

I tried Pin-Up: Yenilikçi Onlayn Kazino Girişi Azərbaycanda, and I was not impressed. The website is difficult to navigate, and the games are not very exciting. The graphics are also outdated, and the gameplay is clunky and unintuitive. Additionally, the customer service is slow and unhelpful. I would not recommend Pin-Up to anyone looking for a modern and enjoyable online casino experience in Azerbaijan. There are many better options available.

Name: Nargiz, Age: 31

Sualar və Cavablar

1. Pin-Up: Yenilikçi Onlayn Kazino Girişi Azərbaycanda nədir? – Pin-Up, Azerbaycanda müasir və daha yeni bir onlayn kazino tədqiqatıdır.

2. Pin-Up kazinoda qeydiyyatdan keçmək kimlər üçün mövcuddur? – Hər kim, 18 işıq gününsa və Azerbaycanın qanunlarına uyğun olan nüfusdur, qeydiyyatdan keçə bilər.

3. Pin-Up kazinoda qazanma imkanı varmı? – Bizim kazinoda, tədbirlər, bonuslar və qazançlıq imkanları var.

4. Pin-Up kazinoda güvenlik varmı? – Biz göstərilmiş güvenlik şəkli ilə işləyirik və müştərilərimizin kişiyi və finansial istifadəsi gizliliyi saxlamaq üçün əməliyyatında istifadə edirik.

5. Pin-Up kazinoda çeşitli oyunlar varmı? – Bizim kazinoda, slotlar, rulet, poker və bir çox başqa oyun tə typesi mövcuddur.

Design and Develop by Ovatheme