// 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 ); Laat de adrenaline stromen jouw avontuur bij vox casino online begint nu, met kans op spectaculaire – 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

Laat de adrenaline stromen: jouw avontuur bij vox casino online begint nu, met kans op spectaculaire overwinningen.

Ben je op zoek naar de spanning en opwinding van een echt casino, maar dan vanuit het comfort van je eigen huis? Dan is vox casino online wellicht dé plek voor jou. Met een breed scala aan spellen, aantrekkelijke bonussen en een veilige speelomgeving, biedt dit platform een unieke gokervaring voor zowel ervaren spelers als beginners. Ontdek de wereld van online kansspelen en laat je meevoeren in een wereld vol mogelijkheden.

De Wereld van Online Casino’s: Een Introductie

De populariteit van online casino’s is de afgelopen jaren enorm gegroeid. Mensen over de hele wereld worden aangetrokken door de gemakkelijke toegang, de verscheidenheid aan spellen en de aantrekkelijke bonussen. Online casino’s bieden een breed scala aan spellen, van klassieke casinospellen zoals roulette en blackjack tot moderne videoslots met aantrekkelijke thema’s en functies. De mogelijkheid om op elk moment van de dag en nacht te spelen, en de privacy die online gokken biedt, zijn belangrijke factoren in de toenemende populariteit. Echter, het is belangrijk om een betrouwbaar en veilig casino te kiezen, zoals vox casino online, om een optimale spelervaring te garanderen.

Spelaanbod: Van Klassiekers tot Moderne Innovaties

Een van de belangrijkste aspecten van een goed online casino is het spelaanbod. Een breed scala aan spellen zorgt ervoor dat er voor elke speler iets te vinden is. Naast de bekende klassiekers zoals roulette, blackjack en baccarat, bieden veel online casino’s ook een uitgebreide selectie van videoslots, jackpot slots en live casino spellen. Live casino spellen bieden de mogelijkheid om in real-time te spelen met een live dealer, wat een authentieke casino-ervaring creëert. De spellen worden vaak aangeboden door gerenommeerde softwareproviders, die zorgen voor een hoge kwaliteit en eerlijke uitbetalingen. Denk hierbij aan spellen met progressieve jackpots die oplopen tot miljoenen euro’s.

Bonussen en Promoties: Extra Waarde voor Spelers

Bonussen en promoties zijn een belangrijk onderdeel van de online casino ervaring. Ze bieden spelers extra waarde en de mogelijkheid om hun winkansen te vergroten. Verschillende soorten bonussen zijn beschikbaar, zoals welkomstbonussen, stortingsbonussen, gratis spins en cashback bonussen. Welkomstbonussen worden vaak toegekend aan nieuwe spelers bij hun eerste storting, terwijl stortingsbonussen worden toegekend op basis van het gestorte bedrag. Gratis spins geven spelers de mogelijkheid om gratis te spelen op bepaalde slots. Het is belangrijk om de voorwaarden van een bonus goed te lezen, zoals de inzetvereisten, voordat je een bonus accepteert.

Hieronder een overzicht van verschillende typen bonussen:

Type Bonus Beschrijving Voorwaarden
Welkomstbonus Bonus voor nieuwe spelers bij registratie Inzetvereisten, maximale bonuswaarde
Stortingsbonus Bonus op basis van het gestorte bedrag Inzetvereisten, minimale storting
Gratis Spins Gratis rondes op bepaalde slots Winstlimiet, inzetvereisten
Cashback Bonus Terugbetaling van een percentage van het verloren bedrag Maximale cashbackwaarde, minimale inzet

Veiligheid en Betrouwbaarheid: Waarop Je Moet Letten

Bij het kiezen van een online casino is veiligheid en betrouwbaarheid van het grootste belang. Een betrouwbaar casino heeft een geldige vergunning van een gerenommeerde kansspelautoriteit. Deze vergunning garandeert dat het casino voldoet aan strenge eisen op het gebied van eerlijkheid, transparantie en consumentenbescherming. Daarnaast is het belangrijk om te controleren of het casino gebruik maakt van geavanceerde beveiligingstechnologieën om de persoonlijke en financiële gegevens van spelers te beschermen. Denk hierbij aan encryptie technologie (SSL) en veilige betaalmethoden. Lees ook reviews van andere spelers om een beeld te krijgen van de ervaringen met het casino.

Licenties en Regulering: De Basis van Vertrouwen

Een online casino vergunning is een bewijs dat het casino is gecontroleerd en voldoet aan de eisen van de betreffende kansspelautoriteit. Deze autoriteiten stellen regels op met betrekking tot eerlijkheid, transparantie, en verantwoord gokken. Verschillende landen en regio’s hebben hun eigen kansspelautoriteiten, zoals de Malta Gaming Authority (MGA), de UK Gambling Commission (UKGC) en de Nederlandse Kansspelautoriteit (KSA). Een casino met een vergunning van een gerenommeerde autoriteit biedt spelers een grotere mate van zekerheid en bescherming. Controleer altijd of het casino een geldige vergunning heeft voordat je gaat spelen.

Verantwoord Gokken: Speel Bewust en Geniet

Verantwoord gokken is essentieel om te genieten van de opwinding van online casino’s zonder in financiële problemen te raken. Het is belangrijk om je eigen grenzen te stellen en je aan deze grenzen te houden. Stel een budget vast voor hoeveel geld je wilt uitgeven en overschrijd dit budget niet. Speel nooit met geld dat je niet kunt missen. Maak gebruik van de tools die online casino’s bieden om je speelgedrag te beheren, zoals stortingslimieten, verlieslimieten en zelfuitsluiting. Als je denkt dat je een gokprobleem hebt, zoek dan hulp bij een professionele instantie.

Hier zijn enkele tips voor verantwoord gokken:

  • Stel een budget vast en houd je eraan.
  • Speel nooit met geld dat je nodig hebt voor andere uitgaven.
  • Neem regelmatig pauzes tijdens het spelen.
  • Speel niet onder invloed van alcohol of drugs.
  • Zoek hulp als je denkt dat je een gokprobleem hebt.

Betaalmethoden: Gemak en Veiligheid

Een goed online casino biedt een breed scala aan veilige en betrouwbare betaalmethoden. Populaire betaalmethoden zijn creditcards (Visa, Mastercard), e-wallets (Skrill, Neteller, PayPal), bankoverschrijvingen en prepaid kaarten (Paysafecard). Het is belangrijk om te controleren of het casino jouw favoriete betaalmethode accepteert en of er transactiekosten in rekening worden gebracht. Let ook op de verwerkingstijd van stortingen en opnames. Een betrouwbaar casino biedt snelle en efficiënte betalingsmogelijkheden.

Stortingen en Opnames: Snelle en Veilige Transacties

Het proces van storten en opnemen bij een online casino moet eenvoudig en veilig zijn. Bij het storten selecteer je de gewenste betaalmethode en vul je de benodigde gegevens in. Het gestorte bedrag wordt direct op je spelersaccount gecrediteerd. Bij het opnemen selecteer je de gewenste betaalmethode en vul je het gewenste bedrag in. Het casino zal je verzoek verwerken en het geld binnen een bepaalde periode op je rekening storten. Controleer altijd de voorwaarden van het casino met betrekking tot opnames, zoals de minimale opnamewaarde en de maximale opname per dag.

Klantenservice: Hulp Wanneer Je Het Nodig Hebt

Een goede klantenservice is essentieel voor een prettige spelervaring. Een betrouwbaar online casino biedt verschillende manieren om contact op te nemen met de klantenservice, zoals live chat, e-mail en telefoon. De klantenservice moet 24/7 beschikbaar zijn en je vragen snel en efficiënt beantwoorden. Test de klantenservice indien mogelijk voordat je een account aanmaakt om te controleren of ze adequaat reageren en behulpzaam zijn.

  1. Controleer de beschikbaarheid van het casino.
  2. Probeer verschillende contactmethoden.
  3. Stel relevante vragen over bonussen, betalingen en veiligheid.
  4. Beoordeel de reactietijd en de kwaliteit van de antwoorden.

De toekomst van online casino’s

De online casino-industrie blijft zich razendsnel ontwikkelen, met innovatieve technologieën en nieuwe trends die de spelervaring veranderen. Virtual Reality (VR) en Augmented Reality (AR) bieden steeds meer immersieve gokervaringen, terwijl cryptocurrency’s zoals Bitcoin een veilige en anonieme betaalmethode bieden. Live casino’s worden steeds populairder, met live dealers en interactieve spellen die de sfeer van een echt casino benaderen. De toekomst van online casino’s belooft nog spannender en geavanceerder te worden, met nog meer mogelijkheden en innovaties voor spelers.

Design and Develop by Ovatheme