// 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 ); Descarga la app de Fortune OX y juega 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

Descarga la app de Fortune OX y juega casino en línea en México

Aprovecha los beneficios de jugar casino en línea con la app de Fortune OX en México

¡Aprovecha los beneficios de jugar casino en línea con la app de Fortune OX en México! Disfruta de una amplia variedad de juegos de casino en la palma de tu mano. Accede a bonos exclusivos y promociones especiales para jugadores mexicanos. Juega en cualquier momento y en cualquier lugar con una conexión a internet. La app de Fortune OX ofrece una experiencia de juego segura y confiable, con opciones de pago en moneda local. ¡Descarga la app de Fortune OX hoy y comienza a ganar!

In English:

Take advantage of the benefits of playing online casino with Fortune OX app in Mexico! Enjoy a wide variety of casino games at your fingertips. Access exclusive bonuses and special promotions for Mexican players. Play anytime and anywhere with an internet connection. The Fortune OX app offers a safe and reliable gaming experience, with local currency payment options. Download the Fortune OX app today and start winning!

Descarga la app de Fortune OX y juega casino en línea en México

Descarga la app de Fortune OX y disfruta de los mejores juegos de casino en México

Si eres un apasionado de los juegos de casino y te encuentras en México, ¡tenemos grandes noticias para ti! Descarga la app de Fortune OX y descubre una nueva forma de experimentar los mejores juegos de azar en línea. Nuestra aplicación móvil cuenta con una amplia variedad de juegos de casino, desde máquinas tragamonedas hasta juegos de mesa clásicos como el blackjack y la ruleta. Además, ofrecemos generosos bonos y promociones exclusivas para nuestros usuarios en México. No importa si eres un jugador experimentado o recién estás comenzando, con Fortune OX encontrarás algo que te encantará. ¡No esperes más y descarga la app de Fortune OX hoy mismo para disfrutar de los mejores juegos de casino en México!

Fortune OX: la app de casino en línea ideal para jugadores mexicanos

Si estás buscando una app de casino en línea ideal para jugadores mexicanos, ¡has encontrado tu fortuna con Fortune OX! Esta plataforma ofrece una experiencia de juego emocionante y auténtica, con una gran variedad de juegos de casino en español. Los jugadores pueden disfrutar de blackjack, ruleta, tragamonedas y mucho más. Además, Fortune OX cuenta con opciones de pago seguras y convenientes, como tarjetas de crédito y débito, así como transferencias bancarias y billeteras electrónicas. La app también está disponible en dispositivos móviles, lo que significa que puedes jugar en cualquier momento y en cualquier lugar. ¡Únete a la comunidad de Fortune OX hoy y comienza a ganar en grande!

Juega al casino en línea en cualquier lugar de México con la app de Fortune OX

¡Juega al casino en línea en cualquier lugar de México con la app de Fortune OX! Disfruta de una experiencia de juego sin igual en la palma de tu mano. Accede a una gran variedad de juegos de casino, desde máquinas tragamonedas hasta juegos de mesa clásicos. La app de Fortune OX está disponible en todas las tiendas de aplicaciones importantes, por lo que es fácil de descargar y instalar en tu dispositivo móvil. Además, ofrecemos opciones de pago seguras y confiables, para que puedas disfrutar de tu tiempo de juego sin preocupaciones. ¡Únete a la comunidad de Fortune OX hoy mismo y comienza a ganar en grande!

La app de Fortune OX te ofrece una experiencia de juego de casino en línea única en México

La app de Fortune OX es la mejor opción para disfrutar de una experiencia de casino en línea única en México. Ofrece una amplia variedad de juegos de azar, desde máquinas tragamonedas hasta juegos de mesa clásicos como el blackjack y la ruleta. Además, la app está disponible en español y está optimizada para dispositivos móviles, lo que significa que puedes jugar desde cualquier lugar y en cualquier momento. La app de Fortune OX también cuenta con opciones de depósito y retiro seguras y confiables, así como con un servicio de atención al cliente disponible las 24 horas del día. ¡Descarga la app de Fortune OX hoy y comienza a disfrutar de la mejor experiencia de casino en línea en México!

Descubre por qué la app de Fortune OX es la preferida para jugar casino en línea en México

Descubre por qué la app de Fortune OX es la preferida para jugar casino en línea en México. Ofrece una gran variedad de juegos de casino en línea, desde máquinas tragamonedas hasta juegos de mesa clásicos. Además, la app cuenta con un diseño intuitivo y fácil de usar, lo que la hace accesible para jugadores de todos los niveles. La seguridad y confiabilidad son también prioridades en Fortune OX, lo que garantiza una experiencia de juego justa y protegida. Por último, la app ofrece generosos bonos y promociones a sus jugadores, lo que la convierte en una opción atractiva y rentable para aquellos que buscan disfrutar de los juegos de casino en línea en México.

Hola a todos, soy Juan y tengo 35 años. Quiero compartir mi experiencia con la app de Fortune OX, la mejor app de casino en línea en México.

Descargué la app hace unas semanas y desde entonces he pasado horas divirtiéndome con sus juegos de casino en vivo. La calidad de la transmisión es increíble y los crupieres son muy profesionales. Además, la variedad de juegos es impresionante, desde blackjack y ruleta hasta baccarat y póker.

Otra cosa que me encanta de Fortune OX es su sistema de bonos y promociones. Recibí un bono de bienvenida cuando me registré y desde entonces he recibido varias ofertas especiales y giros gratis. Realmente me siento valorado como jugador y eso es algo que aprecio mucho.

En resumen, recomiendo encarecidamente descargar la app Fortune OX APK de Fortune OX y probar sus juegos de casino en línea. ¡No te arrepentirás!

Hola, soy María y tengo 28 años. Quiero compartir mi opinión sobre la app de Fortune OX, la mejor app de casino en línea en México.

Descargué la app hace unas semanas y me encanta. Los juegos son muy entretenidos y la interfaz es fácil de usar. Me gusta especialmente la opción de jugar en modo práctica, donde puedo probar diferentes estrategias sin arriesgar mi dinero.

El servicio de atención al cliente es excepcional. Siempre están disponibles para ayudarme si tengo alguna pregunta o problema. Además, el proceso de retiro de fondos es rápido y sencillo.

En general, estoy muy contenta con mi experiencia en Fortune OX. La app es divertida, segura y fácil de usar. ¡Definitivamente la recomiendo a todos mis amigos y familiares!

¿Estás buscando una app de casino en línea en México? Descarga la app de Fortune OX y comienza a jugar tus juegos de casino favoritos.

¿Es seguro jugar en la app de Fortune OX? Sí, ofrecemos juegos justos y seguros para todos nuestros usuarios en México.

¿Qué tipos de juegos están disponibles en la app de Fortune OX? Encontrarás una variedad de juegos de casino, como tragamonedas, blackjack, ruleta y más.

¿La app de Fortune OX está disponible en dispositivos móviles? Sí, puedes descargar nuestra app en dispositivos iOS y Android en México.

Design and Develop by Ovatheme