// 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 ); Viva a Emoção do Casino Online: Jogue Fun88 agora! – 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

Viva a Emoção do Casino Online: Jogue Fun88 agora!

Como se Inscrever no Fun88 e Começar a Jogar

Se você está procurando por informações sobre como se inscrever no Fun88 e começar a jogar, está no lugar certo! Siga esses passos simples para criar sua conta e começar a apostar em jogos de casino e esportes online em português, especificamente para o Brasil.
1. Visite o site oficial do Fun88 em fun88.com.br e clique em “Registrar” ou “Cadastre-se” na página inicial.

2. Preencha o formulário de inscrição com suas informações pessoais, incluindo nome completo, data de nascimento, endereço de e-mail e número de telefone.

3. Escolha um nome de usuário e uma senha fortes e únicas para sua conta.

4. Insira o código de bônus de boas-vindas, se você tiver um.

5. Leia e concorde com os termos e condições do site.

6. Verifique sua conta por meio do link enviado para o seu endereço de e-mail.

7. Faça um depósito e comece a jogar seus jogos de casino e esportes favoritos!

Os Melhores Jogos de Casino Online no Fun88

Se você está procurando por os melhores jogos de casino online no Fun88, você chegou ao lugar certo. O Fun88 oferece uma variedade de jogos empolgantes, incluindo slots, blackjack, roleta e bacará. Os jogos de slot no Fun88 são particularmente populares, com títulos emocionantes e gráficos de alta qualidade. Além disso, o casino online oferece versões em língua portuguesa, tornando-o uma ótima opção para jogadores no Brasil.
Experimente sua sorte no blackjack e tente obter o valor perfeito de 21, ou experimente a emocionante roleta e veja se sua sorte está do seu lado. O bacará também é uma opção popular no Fun88, com regras fáceis de aprender e uma chance de ganhar grandes prêmios. Se você está procurando por uma experiência de casino online emocionante e confiável no Brasil, não procure mais além do Fun88.

Promoções Exclusivas no Fun88 para Jogadores Brasileiros

No Fun88, você encontra as melhores Promoções Exclusivas pensadas especialmente para jogadores brasileiros. Aproveite ofertas personalizadas e desfrute de todo o entretenimento do casino. Venha conferir nossa variedade de jogos e participe de nossas promoções para multiplicar suas chances de ganhar. Faça parte da nossa comunidade e tenha acesso a vantagens exclusivas. Não perca a oportunidade de se divertir e aumentar suas ganhos com as nossas Promoções Exclusivas no Fun88.

Viva a Emoção do Casino Ao Vivo no Fun88

Viva a Emoção do Casino Ao Vivo no Fun88: a melhor opção para os amantes de casino online no Brasil. Experimente a emoção de jogar com dealers ao vivo e interaja com outros jogadores em tempo real. No Fun88, você encontrará uma ampla variedade de jogos de casino, como blackjack, roulette e baccarat. Além disso, oferecemos promoções exclusivas e generosos bônus de boas-vindas para nossos jogadores brasileiros.

A nossa plataforma de casino ao vivo é segura, confiável e fácil de usar, o que garante uma experiência de jogo suave e emocionante. E com nosso suporte ao cliente disponível 24/7, você pode ter a confiança de que estaremos lá para ajudar em caso de qualquer dúvida ou problema. Então, se você está procurando por uma experiência de casino online emocionante e autêntica no Brasil, venha e experimente o Fun88 hoje!

Fun88: A Segurança e Confiança do Jogo Online

Nojadeirense e segurança são prioridades no Fun88, plataforma de jogos online confiável no Brasil. Com licenças e regulamentações adequadas, o Fun88 garante a proteção de dados e transações financeiras de seus jogadores. O cassino online oferece jogos justos e transparentes, utilizando geração de números aleatórios para resultados imparciais. Além disso, o suporte ao cliente está disponível 24/7 para ajudar com quaisquer dúvidas ou preocupações. Com opiniões positivas e classificações altas, o Fun88 é sinônimo de diversão e tranquilidade no mundo dos jogos online. Confie na nossa plataforma e experimente uma emoção incomparável em um ambiente seguro e justo.

Viva a Emoção do Casino Online: Jogue Fun88 agora!

Dicas e Estratégias para Jogadores de Casino Online no Fun88

Seja bem-vindo ao Fun88, um dos cassinos online mais populares no Brasil! Aqui estão algumas dicas e estratégias para maximizar sua experiência de jogo:
1. Aprenda as regras: antes de começar a jogar, certifique-se de entender as regras do jogo para tomar decisões informadas.

2. Gerencie seu bankroll: defina um limite de dinheiro para jogar e não exceda esse limite, mesmo que esteja ganhando.

3. Conheça as probabilidades: diferentes jogos têm diferentes probabilidades, então escolha os jogos com as melhores chances de ganhar.

4. Pratique gratuitamente: muitos cassinos online oferecem jogos grátis, então aproveite essa oportunidade para praticar antes de jogar com dinheiro real.

5. Use ofertas e promoções: fique atento às ofertas e promoções do Fun88, pois elas podem ajudar a aumentar suas chances de ganhar.

6. Tenha autocontrole: é fácil se emocionar quando se está ganhando, mas lembre-se de manter a calma e tomar decisões racionais.

7. Aproveite os jogos com jackpot progressivo: os jogos com jackpot progressivo oferecem a chance de ganhar um grande prêmio, então não deixe de tentar sua sorte!

Review 1:
Maria, 35 years old, says: “Estou completamente apaixonada por Fun88! Eu costumava visitar cassinos físicos, mas agora eu posso jogar meus jogos de casino favoritos online e sentir a mesma emoção. A plataforma é fácil de usar e o atendimento ao cliente é excelente. Viva a emoção do Casino Online com Fun88!”
Review 2:
Pedro, 45 years old, says: “Joguei em vários cassinos online, mas Fun88 é de longe o melhor. A seleção de jogos é impressionante e a qualidade gráfica é top-notch. Além disso, a opção de jogar em tempo real com outros jogadores adiciona uma nova dimensão à minha experiência de jogo. Jogue Fun88 agora e viva a emoção do Casino Online!”
Review 3:
Ana, 28 years old, says: “Eu sou novo no mundo dos cassinos online, mas Fun88 me fez me sentir em casa imediatamente. A navegação é intuitiva e tudo o que eu precisei saber estava facilmente disponível em seu site. Além disso, a equipe de suporte foi muito útil em me ajudar a esclarecer minhas dúvidas. Eu recomendo Fun88 para qualquer pessoa que queria viver a emoção do Casino Online.”

Tem interesse em vivenciar a emoção de um cassino online? Tente o Fun88 agora!

Muitas perguntas surgem sobre como jogar no Fun88 – é fácil se registrar e começar a jogar imediatamente.

O Fun88 oferece uma variedade de jogos de cassino, site oficial como jogo de dinheiro real, bingo, slots e muito mais.

Experimente a emoção de jogar contra outros jogadores online e tenha a chance de ganhar grandes prêmios.

Então, o que está esperando? Viva a emoção do cassino online – jogue no Fun88 agora!

Design and Develop by Ovatheme