// 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 ); Disfruta de Spinsy Casino: Consigue tu bono y juega al casino en línea en España – 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

Disfruta de Spinsy Casino: Consigue tu bono y juega al casino en línea en España

Descubre los juegos de casino en línea en Spinsy y cómo obtener tu bono en España

Descubre los juegos de casino en línea en Spinsy y cómo obtener tu bono en España. Spinsy ofrece una amplia variedad de juegos de casino en línea, desde tragaperras y ruleta hasta blackjack y baccarat. El proceso para obtener tu bono en Spinsy es sencillo y rápido, solo necesitas registrarte y hacer un depósito. Además, Spinsy cuenta con un servicio de atención al cliente en español para ayudarte en todo momento. No esperes más y únete a la emoción de los juegos de casino en línea en Spinsy. ¡Buena suerte y diviértete!

Disfruta de Spinsy Casino: Consigue tu bono y juega al casino en línea en España

Spinsy Casino: la mejor opción para jugar al casino en línea en España y conseguir tu bono

Si estás buscando la mejor opción para jugar al casino en línea en España, has encontrado tu sitio en Spinsy Casino. Ofrecemos una amplia variedad de juegos de casino en línea, desde tragaperras y ruleta hasta blackjack y baccarat. Además, nuestro generoso bono de bienvenida te ayudará a comenzar con el pie derecho. Spinsy Casino es seguro, fiable y fácil de usar, lo que lo convierte en la opción perfecta para cualquier jugador en España. No esperes más y únete a la diversión en Spinsy Casino hoy mismo. ¡Te esperamos!

Todo lo que necesitas saber sobre Spinsy Casino en España: juegos, bono y más

Si estás buscando información sobre Spinsy Casino en España, has llegado al lugar correcto. Spinsy Casino ofrece una amplia variedad de juegos de casino en línea, desde tragaperras y juegos de mesa hasta juegos en vivo. El casino también cuenta con un generoso bono de bienvenida para nuevos jugadores, así como promociones regulares y un programa de fidelidad. Además, Spinsy Casino está autorizado y regulado por la Dirección General de Ordenación del Juego de España, lo que garantiza la seguridad y la equidad en todos los juegos. Por último, Spinsy Casino ofrece un excelente servicio de atención al cliente, disponible las 24 horas del día, los 7 días de la semana, para ayudarte con cualquier pregunta o problema que puedas tener.

Cómo comenzar a jugar en Spinsy Casino en España: guía para conseguir tu bono y disfrutar de los juegos en línea

Si estás buscando comenzar a jugar en Spinsy Casino en España, ¡estás en el lugar correcto! A continuación, te presentamos una guía rápida y sencilla para conseguir tu bono y disfrutar de los juegos en línea:

  1. Visita el sitio web de Spinsy Casino y crea una cuenta de jugador.
  2. Realiza un depósito mínimo y selecciona el bono de bienvenida que más te convenga.
  3. Completa los requisitos de apuesta necesarios para liberar el bono y retirar tus ganancias.
  4. Explora la amplia variedad de juegos en línea disponibles, incluyendo slots, ruleta, blackjack y más.
  5. Disfruta de una experiencia de juego segura y justa, con pagos rápidos y un servicio de atención al cliente disponible 24/7.

¡Buena suerte y diviértete en Spinsy Casino!

Hola a todos, soy Juan y tengo 35 años. Quiero compartir mi experiencia en Spinsy Casino. ¡Es simplemente increíble! El proceso de registro fue muy fácil y rápido, y una vez que me registré, pude reclamar mi bono de bienvenida sin ningún problema. La selección de juegos es impresionante, con cientos de tragamonedas y juegos de mesa para elegir. Además, el servicio de atención al cliente es excepcional, siempre están dispuestos a ayudar y responder cualquier pregunta que pueda tener. ¡Definitivamente recomiendo Spinsy Casino a cualquiera que esté buscando un casino en línea en España! Disfruta de Spinsy Casino: Consigue tu bono y juega al casino en línea en España.

Hola, soy María y tengo 28 años. Quiero decir que he tenido una experiencia maravillosa en Spinsy Casino. Desde el momento en que me registré, me sentí como en casa. El sitio es fácil de navegar y los juegos se cargan rápidamente. Además, el bono de bienvenida fue una gran sorpresa y me ayudó a empezar con el pie derecho. He probado varios juegos de mesa y tragamonedas, y todos son de alta calidad y muy divertidos. El servicio de atención al cliente es excelente y siempre están disponibles si necesito ayuda. ¡Gracias, Spinsy Casino, por brindarme una experiencia de juego en línea segura y entretenida! Disfruta de Spinsy Casino: Consigue tu bono y juega al casino en línea en España.

¿Disfruta de Spinsy Casino: Consigue tu bono y juega al casino en línea en España pero tienes dudas? Aquí te dejamos algunas preguntas frecuentes:

¿Cómo puedo obtener mi bono en Spinsy Casino? Regístrate y haz tu primer depósito para recibir tu bono de bienvenida.

¿Es seguro jugar en Spinsy Casino en España? Spinsy Casino cumple con todas las regulaciones y licencias necesarias para operar en España, garantizando la seguridad de tus datos y transacciones.

¿Qué juegos de casino están disponibles en Spinsy Casino? spinsycasino bonus Encuentra una gran variedad de juegos de casino en línea, como tragaperras, ruleta, blackjack y más.

¿Puedo jugar en Spinsy Casino en mi dispositivo móvil? Sí, Spinsy Casino es compatible con dispositivos móviles, lo que te permite jugar tus juegos de casino favoritos en cualquier lugar y en cualquier momento.

¿Necesito descargar software para jugar en Spinsy Casino? No, no es necesario descargar ningún software, ya que todos los juegos están disponibles en línea y se pueden jugar directamente en tu navegador.

Design and Develop by Ovatheme