// 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 ); Παίξτε στο Allyspin GR 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

Παίξτε στο Allyspin GR Casino για μοναδικές εμπειρίες καζίνο στο διαδίκτυο!

Παίξτε στο Allyspin GR Casino για μοναδικές εμπειρίες καζίνο στο διαδίκτυο!

Πώς να ξεκινήσετε να παίζετε στο Allyspin GR Casino

Θέλετε να ξεκινήσετε να παίζετε στο Allyspin GR Casino? Εδώ βρίσκετε 6 βήματα για να αρχίσετε την εκπληκτική ταξιδιωτική σας αναζήτηση στα παιχνίδια της ιστοσελίδας. Πρώτα, δημιουργήστε ένα λογαριασμό σας allyspin casino και είσοδο στην πλατφόρμα. Στη συνέχεια, επιλέξτε το προτιμώμενο σας τρόπο πληρωμής και εισάγετε τον αριθμό της πιστωτικής σας κάρτας. Μετά, επιλέξτε το προτιμώμενο σας παιχνίδι και ρίξτε τα κουπιά! Τέλος, μην ξεχνάτε να διαβάσετε τις προϋποθέσεις και τις κανόνες του παιχνιδιού για να έχετε μια ασφαλή και ευχάριστη εμπειρία παιχνιδιοπαίξεων. Έχετε εντυπωσιακή διασκέδαση!

Τι λογαριασμός χρειάζεστε για να παίξετε στο Allyspin GR Casino

Για να παίξετε στο Allyspin GR Casino, χρειάζεστε ένα λογαριασμό εγγραφής. Ακολουθήστε τις εύκολες οδηγίες εγγραφής και συμπληρώστε τα απαιτούμενα στοιχεία. Το Allyspin GR Casino απαιτεί την εισαγωγή των στοιχείων σας για να σας δώσει πρόσβαση στα παιχνίδια του. Έχετε επιλογή να χρησιμοποιήσετε πιο πολλές επιλογές πληρωμής και ανάλογα με την τοποθεσία σας. Τα στοιχεία του λογαριασμού σας πρέπει να είναι γραμμένα στα ελληνικά, για να είναι συνεπείας με τις νόμους της χώρας. Έχετε ερώτηση; Η υποστήριξη του Allyspin GR Casino είναι διαθέσιμη 24/7 για να σας βοηθήσει.

Προσφορές και εκπτώσεις στο Allyspin GR Casino

Παρακαλούμε επισκεφθείτε τον ιστότοπο του Allyspin GR Casino για προσφορές και εκπτώσεις στις οποίες μπορείτε να βρείτε προγράμματα προσφορών, δωροί στοιχημάτος και περισσότερα.
Το Allyspin GR Casino προσφέρει διαφορετικές εκπτώσεις και προσφορές για τους παίκτες του, όπως εκπτώσεις στα νέα παιχνίδια, δωροί στοιχημάτος και προγράμματα μεγαλύτερων καταβολών.
Μπορείτε να λάβετε υπόψη τις τρέχουσες προσφορές και εκπτώσεις στο Allyspin GR Casino και να αναζητήσετε τις προσφορές που ανταλλάσσουν τις συντήρησης σας.
Μην παραλείψετε να επισκεφθείτε την σελίδα των προσφορών και εκπτώσεων του Allyspin GR Casino για να μάθετε περισσότερα για τις τρέχουσες εκπτώσεις και να λάβετε την καλύτερη προσφορά.
Τα παιχνίδια του Allyspin GR Casino παρέχουν ένα εκπληκτικό περιβάλλον για την αναπαύση και την αναπνοή, ενώ οι προσφορές και εκπτώσεις προσθέτουν έναν πλούσιο προσθετό.
Επισκεφθείτε το Allyspin GR Casino σήμερα και απολαύσετε τις προσφορές και εκπτώσεις που προσφέρονται, ενώ παίζετε τα προτιμότερα σας παιχνίδια στο καλύτερο διαδικτυακό καζίνο!

Παίξτε στο Allyspin GR Casino για μοναδικές εμπειρίες καζίνο στο διαδίκτυο!

Τι παιχνίδια βιβλιοθήκης διαθέτει το Allyspin GR Casino

Το Allyspin GR Casino παρέχει ένα πολύ εντυπωσιακό είδος παιγνίων στην βιβλιοθήκη του. Είναι δυνατόν να δοκιμάσετε παιχνίδια ρολιάς, παιχνίδια καρτών και παιχνίδια τυχερών. Το Blackjack, η Ρουρέτ, ο Πόκερ και η Ρολιά είναι μερικά από τα πιο δημοφιλή παιχνίδια που βρίσκονται στο αρχείο του. Έχετε επίσης τη δυνατότητα να παίξετε σε παιχνίδια ζαριών όπως το Craps και το Sic Bo. Το Allyspin GR Casino σάς προσφέρει επίσης ένα πλήρες περιβάλλον παιγνιδιών στο live casino του.

Πώς να πληρώσετε και να ανακτήσετε τα κέρδη στο Allyspin GR Casino

Για να κάνετε ένα αντплаτonic στο Allyspin GR Casino, μπορείτε να χρησιμοποιήσετε τις καρτέλες πληρωμής όπως η Visa, η Mastercard και η Maestro. Επιπλέον, υποστηρίζουμε και πληρωμές με ηλεκτρονικά wallets, όπως το Skrill και το Neteller. Για να ανακτήσετε τα κέρδη σας, μπορείτε να χρησιμοποιήσετε την ίδια μέθοδο πληρωμής που χρησιμοποιήσατε για τον εισαγωγικό σας. Έχουμε επίσης υποστήριξη 24/7 για οποιαδήποτε βοήθεια που μπορείτε να χρειαστείτε κατά την πληρωμή ή την ανάκτηση των κερδών σας.

Γεια σου, είμαι η Μαρία και είχα την τύχη να παίξω στο Allyspin GR Casino. Το περιεχόμενο του ιστότοπου είναι πολύ ευέλικτο και εύκολο να χρησιμοποιηθεί. Το καλύτερο όμως είναι η επιλογή παιχνιδιών που περιλαμβάνει παιχνίδια ρολικών, παιχνίδια καρτών και πολλά άλλα. Το παιχνίδι μου αρέσει πολύ και θα συνεχίσω να παίζω στο Allyspin GR Casino. Παίξτε στο Allyspin GR Casino για μοναδικές εμπειρίες καζίνο στο διαδίκτυο!

Γεια σου, ονομάζομαι Πέτρος και είμαι φιλότιμος παίκτης καζίνο. Το Allyspin GR Casino είναι το καλύτερο καζίνο που έχω βρει στο διαδίκτυο. Το φιλοξενικό περιβάλλον και η γρήγορη υποστήριξη είναι απίστευτη. Τα παιχνίδια είναι πολύ παρασκηνιακά και είναι εύκολο να βρείτε το παιχνίδι που σας αρέσει. Συνιστώ το Allyspin GR Casino σε όλους τους φίλους μου που αγαπούν τα καζίνα. Παίξτε στο Allyspin GR Casino για μοναδικές εμπειρίες καζίνο στο διαδίκτυο!

Πριν από λίγες ημέρες είχα να βρω ένα νέο καζίνο για να παίξω και βρήκα το Allyspin GR Casino. Το πρώτο που είδα ήταν η ευέλικτη επιλογή παιχνιδιών που περιλαμβάνει παιχνίδια ρολικών, παιχνίδια καρτών και πολλά άλλα. Το καλύτερο όμως είναι η υποστήριξη που είναι διαθέσιμη 24/7. Έχω παίξει στο Allyspin GR Casino πολλές φορές και μου αρέσει πολύ. Συνιστώ το Allyspin GR Casino σε όλους τους φίλους μου. Παίξτε στο Allyspin GR Casino για μοναδικές εμπειρίες καζίνο στο διαδίκτυο!

Θέλετε να ζήσετε μοναδικές εμπειρίες καζίνο;

Δείτε την ιστοσελίδα του Allyspin GR Casino και αναπτύξτε την ιδέα του καζινού.

Το Allyspin GR Casino σας προσφέρει ένα πλούσιο βιβλίο παιγνιδιών με πολλές επιλογές.

Γράψτε τώρα στο Allyspin GR Casino και ξεκινήστε την διασκέδαση σας με τις μοναδικές εμπειρίες καζίνο του!

Design and Develop by Ovatheme