// 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 los emocionantes juegos de Pin Up slots casino en línea en México – 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 los emocionantes juegos de Pin Up slots casino en línea en México

Disfruta de los emocionantes juegos de Pin Up slots casino en línea en México

Descubre la emoción de Pin Up slots casino en línea en México

Descubre la emoción de Pin Up slots casino en línea en México. Sumérgete en un mundo de diversión y emoción con una gran variedad de juegos de tragamonedas en línea. Podrás jugar desde la comodidad de tu hogar y disfrutar de increíbles gráficos y efectos de sonido. Pin Up casino en línea ofrece juegos justos y seguros, con pagos rápidos y una atención al cliente excepcional. No importa si eres un principiante o un jugador experimentado, encontrarás los juegos perfectos para ti. Además, podrás aprovechar bonos y promociones especiales para aumentar tus posibilidades de ganar. ¡Únete a la diversión en Pin Up casino en línea y descubre la emoción de los juegos de tragamonedas en México!

Disfruta de los emocionantes juegos de Pin Up slots casino en línea en México

Juega a tus slots favoritos en Pin Up casino en línea en México

Si eres un apasionado de las tragamonedas y te encuentras en México, ¡tenemos la opción perfecta para ti! Juega a tus slots favoritos en Pin Up casino en línea, donde podrás encontrar una amplia variedad de juegos de alta calidad. ¡Pin Up casino es conocido por su excelente servicio y su interfaz fácil de usar!
Los jugadores mexicanos pueden disfrutar de una gran selección de juegos de máquinas tragamonedas en Pin Up casino en línea, desde clásicos de tres rodillos hasta las últimas video slots con giros gratis y botes progresivos. Además, el casino ofrece generosos bonos y promociones para mantenerte entretenido y aumentar tus posibilidades de ganar.
Pin Up casino en línea está disponible en dispositivos de escritorio y móviles, lo que significa que puedes jugar tus slots favoritos en cualquier momento y en cualquier lugar. El casino también cuenta con un equipo de soporte al cliente disponible las 24 horas del día, los 7 días de la semana, para ayudarte con cualquier pregunta o inquietud que puedas tener.
En resumen, si estás buscando una experiencia de juego en línea emocionante y conveniente en México, ¡no busques más allá de Pin Up casino! Con una gran selección de juegos de tragamonedas, excelentes bonos y un servicio al cliente de primera clase, Pin Up casino es el lugar perfecto para jugar a tus slots favoritos. ¡Regístrate hoy y comienza a ganar!

Pin Up slots casino en línea: la mejor opción para jugadores mexicanos

Pin Up slots casino en línea es la mejor opción para los jugadores mexicanos que buscan emoción y diversión en un entorno seguro y confiable. Ofrece una amplia variedad de juegos de tragamonedas en línea, incluyendo los favoritos de los jugadores como Starburst, Gonzo’s Quest y Book of Dead. Además, Pin Up casino cuenta con una plataforma fácil de usar y una aplicación móvil, lo que permite a los jugadores disfrutar de sus juegos favoritos en cualquier momento y en cualquier lugar. Los jugadores también pueden aprovechar los generosos bonos y promociones que ofrece Pin Up casino, como el bono de bienvenida del 100% hasta $5000 MXN y giros gratis en algunos de los juegos de tragamonedas más populares. Con un servicio de atención al cliente disponible 24/7 y una variedad de opciones de pago seguras, Pin Up slots casino en línea es definitivamente la mejor opción para los jugadores mexicanos que buscan una experiencia de juego en línea de primera clase.

Aprende a jugar slots en línea con Pin Up casino en México

Si estás buscando una experiencia emocionante de juego en línea en México, ¡has llegado al lugar correcto! Pin Up casino te ofrece la oportunidad de aprender a jugar slots mientras disfrutas de increíbles beneficios. ¡Sigue leyendo para saber más!
1. Pin Up casino es una plataforma en línea confiable y segura que ofrece una gran variedad de juegos de azar, incluyendo slots.
2. Aprender a jugar slots en Pin Up casino es fácil y divertido, gracias a su interfaz intuitiva y fácil de usar.
3. Pin Up casino cuenta con un equipo de atención al cliente disponible 24/7 para ayudarte en todo lo que necesites.
4. Los jugadores mexicanos pueden disfrutar de bonos y promociones especiales al unirse a Pin Up casino.
5. Pin Up casino ofrece una gran variedad de slots temáticas, desde clásicas hasta las últimas novedades del mercado.
6. Los juegos de slots en Pin Up casino están diseñados con gráficos de alta calidad y efectos de sonido envolventes.
7. Además, Pin Up casino cuenta con un programa de fidelidad que recompensa a los jugadores por su lealtad.
8. ¡No esperes más y únete a la comunidad de jugadores de Pin Up casino en México para aprender a jugar slots y ganar grandes premios!

¡Diviértete con Pin Up slots casino en línea en la comodidad de tu hogar!

¡Bienvenido a Pin Up, el casino de slots en línea que te hará vivir una experiencia emocionante y conveniente desde la comodidad de tu hogar! En Pin Up, encontrarás una gran variedad de juegos de slots que se ajustan a tus gustos y preferencias.
No importa si eres un principiante o un jugador experimentado, en Pin Up siempre habrá algo para ti. Nuestra plataforma es fácil de usar y está disponible en dispositivos móviles, lo que te permite jugar en cualquier momento y en cualquier lugar.
Además, ofrecemos bonos y promociones exclusivas para nuestros jugadores en México, para que puedas aumentar tus posibilidades de ganar y disfrutar de más tiempo de juego.
¡No esperes más y únete a la diversión en Pin Up slots casino en línea! Con nuestras opciones de pago seguras y nuestro servicio de atención al cliente disponible 24/7, te garantizamos una experiencia de juego sin preocupaciones.
¡Diviértete con Pin Up slots casino en línea en la comodidad de tu hogar y descubre por qué somos la opción preferida de miles de jugadores en México!

Marta, 35 years old: “Disfruto mucho de los emocionantes juegos de Pin Up slots casino en línea en México. La variedad de juegos es impresionante y la calidad de gráficos y sonido es de primera. Me encanta la opción de jugar en vivo con dealers reales y la atención al cliente es excelente. ¡Recomiendo Pin Up slots casino a todos los amantes de los juegos de azar en línea!”

Juan, 40 years old: “He tenido una mala experiencia con Pin Up slots casino en línea en México. El proceso de registro es complicado y tardé mucho en poder empezar a jugar. Además, los juegos se congelaron varias veces y perdí dinero por su culpa. No volveré a jugar en Pin Up slots casino.”

Ana, 45 years old: “Pin Up slots casino en línea en México es una estafa. Me registré y deposité dinero, pero cuando quise retirar mis ganancias, me dijeron que no podía porque no había cumplido con los requisitos de apuesta. Cuando leí los términos y condiciones, me di cuenta de que eran muy complicados y confusos. No recomiendo Pin Up slots casino a nadie.”

¿Qué son los juegos de Pin Up slots casino en línea?

Disfruta de una experiencia de juego emocionante con los juegos de Pin Up slots casino en línea en México.

¿Por qué elegir Pin Up slots casino en línea en México? Ofrecemos una amplia variedad de juegos y promociones emocionantes.

¿Cómo puedo comenzar a jugar en Pin Up slots casino en línea en México? Regístrate hoy y aprovecha nuestras ofertas de bienvenida.

¿Es seguro jugar en Pin Up slots casino en línea Pin up online en México? Sí, garantizamos la seguridad y la privacidad de tus datos personales y financieros.

Design and Develop by Ovatheme