// 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 ); Βεταλρajt: Παίξτε στο καζίνο μπορείτε να βρείτε μόνο στο διαδίκτυο – 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

Βεταλρajt: Παίξτε στο καζίνο μπορείτε να βρείτε μόνο στο διαδίκτυο

« Na Ezwise Παίξτε στο Betalright Casino: Ένα Νέο Συναίσθημα Online Casino»

🎉 «Na Ezwise Παίξτε στο Betalright Casino: Ένα Νέο Συναίσθημα Online Casino» 🎉 είναι το νέο προκλήση για τους φίλους του καζίνο!
🌍 Με ένα νέο έργο στο σύνολο των καζίνο της Γρε secondary line: Δώστε σε αυτήν μια δυνάμη και αναζήτηση νέων εντυπώσεων!
💻 Betalright Casino προσφέρει μια μοnumental εμπειρία online, με ένα πλήθος περιεχομένου και διαθέσιμη για όλες τις κατηγορίες παίκτων!
✨ Έχετε ενδιαφέρον να δοκιμάσετε τα νέα παιχνίδια; Μεγάλες τ ante up και νίκα ποσότητες προσφέρονται στο Betalright Casino!
📱 Το Betalright Casino είναι διαθέσιμο και για κινητά, επιτρέποντάς σας να μπαίνετε στην ευχάριστη κόσμο του online casino όπου και να βρίσκεστε!
✅ Betalright Casino είναι το νέο αίσθημα online casino που κάνει τη διαίρεση στην Ελλάδα. Δώστε στον κόσμο του καζίνο ένα νέο επίπεδο!

Βεταλρajt: Παίξτε στο καζίνο μπορείτε να βρείτε μόνο στο διαδίκτυο

« Ideal Tips for Betalright Casino: How to Play and Win Big»

Αναζητείτε σημαντικά συμβουλές για το Betalright Casino; Πώς να παίξετε και να κερδίσετε μεγάλα;

1. Επίστευτε σε στρατηγικές παιχνιδιού: Την κλίση του παιχνιδιού μπορεί να αλλάξετε με σωστές στρατηγικές.

2. Χρησιμοποιήστε την δωρεάν διάρκεια δοκιμής: Εξοπλίστευετε την εμπειρία σας με δωρεάν δοκιμές, πρινά να αναπτύξετε στρατηγικές για να κερδίσετε.

3. Betalright Έναστροφη κριτική: Έχετε πάντα σε νομίζετε τις ιδées των άλλων παίκτων για να βελtéψετε τις εκπαιδευμένες στρατηγικές.

4. Έλεγχος του ποσού της επενδύσεώς σας: Οι παίκτες πρέπει να έχουν πάντα υπόψη τι κόστος έχουν.

5. Επιλογή του ρόλου σας: Γίνετε εξειδικεμένοι στο ρόλο που επιλέγετε στα παιχνίδια.

6. Λήψη όλων των προσφορών: Ακολουθήστε οι τελευταίες προσφορές και να αναζητήσετε τα καλύτερα προσφορές.

7. Έχετε στόχους καθαρευόμενους: Ορίζετε στόχους πριν να ξεκινήσετε να παίζετε, για να μην χάσετε τον έλεγχο.

« Betalright Casino Games: A Complete Guide for Greek Players»

Μεγάλως καλώς Or Bevinde namely Betalright Καζίνο παιχνídia: για Έλληνες Παίκτες, μπορείτε να βρείτε ένα πλήρες οδηγό για τα παιχνídia του καζίνο του Betalright. Το Betalright παίζει με την αίγλη της αξιοπιστίας και της ασφαλείας και παρέχει ένα νόημα εγκατάσταση για όλους τους Ελληνικούς παίκτες. Μπορείτε να δοκιμάσετε τα κλασικά παιχνídia του καζίνο, όπως η Ρουλέτα, το Βλάκ, το Πόκερ, το Ρολιντάκα και το Baccarat. Το καζίνο επίσης περιλαμβάνει μια πλήρη συλλογή Slot games με τα τελευταία προϊόντα των επιλεγμένων εργογστάσων. Όλα τα παιχνídia του Betalright καζίνου είναι έγκυρα και έχουν επιβεβαιωθεί από τις απαραίτητες επαρχίες, επίσης υπάρχει η ευκαιρία να παίξετε σε ζώνη ρεαλιστική ή να δοκιμάσετε την «την λειτουργία DEMO» πριν από την εγγραφή σας. Betalright Casino Games διαθέτει επίσης ένα εξαιρετικό Mobile Casino για να παίξετε όταν και που σας αρέσει. Το πρόγραμμα Βουλγαρίας Betalright είναι γεμάτο με προσφορές και αντρεπόμενες επικοινωνίες με τους προπελάρχες. Επισκεφθείτε το Betalright Casino σήμερα και αρχίστε να παίζετε τα παιχνídia που θέλετε, όπου και όταν σας αρέσει!

Βεταλρajt: Παίξτε στο καζίνο μπορείτε να βρείτε μόνο στο διαδίκτυο

« The Security of Online Gambling: Betalright Casino’s Commitment to Fair Play»

«Τη ασφαλεία του ηλεκτρονικού στοιχηματος: η ένταξη του Betalright Casino σε επαναληπτικές αναπαράστασης»
Το Betalright Casino είναι ένα αν reviewed online casino που παρέχει ασφαλή περιβάλλοντα για τον χρήστη του.
Έχει υλοποιηθεί πολλές μέτρας σύνταξης για να βεβαιωθεί ότι όλα τα παιχνίδια είναι αναπαράστασης.
Όλα τα σημεία επιλύσεως συνεργάζονται με την εταιρία για να βεβαιωθούν ότι όλα τα παιχνίδια είναι τυχαία.
Το σύστημα της επαναληπτικής αναπαράστασης περιέχει ενσωματωμένη τυχαιότητα και υπάρχει ένα πλήρες σύστημα ελέγχου.
Το Betalright Casino χρησιμοποιεί την τεχνολογία SSL για να προστατεύει τις πληροφορίες των πελατών του.
Ο κανονισμός της αναπαράστασης του Betalright Casino είναι ισχυρής απόδειξη της συμμετοχής του στην προστασία των πελατών του.

” I am Maria, a 35-year-old housewife, and I must say that Betalright has changed my online casino experience. I used to play in physical casinos, but now I prefer the comfort of my home while playing my favorite games. The variety of games and the user-friendly interface made me choose this platform. I have won many times, and the payouts are always on time. Highly recommended!”

” As a 45-year-old businessman, I appreciate the convenience of Betalright. I don’t have much free time, so being able to play my favorite casino games on the go is a lifesaver. The graphics are top-notch, and the customer service is always available if I need any assistance. I’ve had a great experience with Betalright so far!”

” Hi, I’m John, a 28-year-old graphic designer, and I’m a big fan of Betalright. As a design enthusiast, I have to say that the platform’s visuals are stunning. But it’s not just about looks – the games are fun, and the payouts are fair. I also love the community aspect, with forums and chat rooms available for players. I’m very happy with my choice!”

Βetalright: Παίξτε στο καζίνο μπορείτε να βρείτε εύκολα το online.

Δεν χρειάζεται να αναζητάτε πλατφόρμες φυσικού καζινού, παίζετε άμεσα online.

Ο είσοδος στο online καζίνο είναι εύκολος και γρήγορος, μπείτε και παίξτε.

Ελέγξτε τις διαθέσιμες επιλογές παιγνίων του Betalright: Παίξτε στο καζίνο μόνο online.

Design and Develop by Ovatheme