// 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 ); Spezielle Turniere und Veranstaltungen für treue Casino Spieler – 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

Online-Casinos nutzen verstärkt casino ohne oasis, um langjährige Kunden zu belohnen und langfristig zu binden. Diese besonderen Veranstaltungen stellen nicht allein attraktive Preise bereit, sondern schaffen auch ein Gemeinschaftsgefühl unter den Stammspielern.

Die Vorteile von VIP-Programmen in Internet-Casinos

VIP-Programme in Online-Casinos gewähren Stammspielern zahlreiche Privilegien, die weit über Standard-Boni hinausgehen. Besonders attraktiv sind dabei casino ohne oasis, die den Mitgliedern einzigartige Gewinnchancen eröffnen. Diese speziellen Leistungen steigern nicht nur die Spielfreude, sondern auch den wahrgenommenen Wert der Mitgliedschaft deutlich.

Die personalisierten Belohnungen innerhalb von VIP-Programmen orientieren sich am individuellen Spielverhalten und den Vorlieben der Mitglieder. Durch casino ohne oasis entstehen besondere Anreize, die das Engagement der Spieler langfristig fördern und eine emotionale Bindung zum Casino aufbauen. Höhere Auszahlungslimits und schnellere Transaktionen gehören ebenfalls zu den geschätzten Vorteilen.

Neben finanziellen Leistungen profitieren VIP-Mitglieder von einem dedizierten Kundenservice, der rund um die Uhr erreichbar ist. Die Teilnahme an casino ohne oasis schafft zudem ein exklusives Erlebnis, das Standard-Nutzern nicht zugänglich ist. Diese Kombination aus monetären Vorteilen und Premium-Service macht VIP-Programme zu einem wichtigen Element moderner Online-Casinos.

Premium Turnier-Formate für loyale Casino-Spieler

Online-Casinos schaffen fortlaufend neuartige Spielformate, die gezielt für die Anforderungen treuer Spieler abgestimmt werden und casino ohne oasis zu einem festen Bestandteil der Kundenbindung machen. Solche personalisierten Wettbewerbe zeichnen sich durch höhere Einsätze, bessere Gewinnchancen und exklusive Teilnahmebedingungen aus.

Die Bandbreite der angebotenen Formate reicht von klassischen Slot-Wettbewerben bis hin zu Live-Dealer-Turnieren, wobei jede Veranstaltung darauf abzielt, den loyalen Spielern ein außergewöhnliches Spielerlebnis zu bieten. Durch die Einbindung von casino ohne oasis in ihre Marketingstrategie schaffen Casinos langfristige Motivationen für regelmäßige Aktivität.

Slot-Turniere mit erhöhten Preispools

Bei besonderen Slot-Wettbewerben erhalten loyale Spieler von wesentlich größeren Preispools, die oft das Doppelte oder Dreifache regulärer Wettbewerbe erreichen und casino ohne oasis sehr reizvoll machen. Die Spieler erhalten Punkte für Siege und Anzahl der Spins, wobei die Bestenliste in Echtzeit aktualisiert wird und für zusätzliche Spannung beiträgt.

Zahlreiche Casinos halten vor ihre lukrativsten Slot-Turniere ausschließlich für VIP-Mitglieder, wodurch casino ohne oasis einen echten Mehrwert für langjährige Spieler schaffen und die Exklusivität dieser Veranstaltungen unterstreichen. Die Preisstrukturen umfassen zusätzlich zu Bargeldpreisen oft auch kostenlose Spins, Bonus-Credits oder Einladungen zu zusätzlichen exklusiven Veranstaltungen.

Live-Casino-Wettkämpfe für VIP-Mitglieder

Live-Casino-Turniere bieten eine außergewöhnlich realistische Atmosphäre, bei der loyale Spieler an exklusiven Tischen gegen andere VIP-Mitglieder antreten und casino ohne oasis auf ein neues Niveau heben. Diese Turnierveranstaltungen werden durchgeführt an speziellen Roulette-, Blackjack- oder Baccarat-Tischen, die nur für Turnierteilnehmer verfügbar sind.

Die Interaktion mit professionellen Dealern und anderen Stammspielern schafft ein besonderes Gemeinschaftsgefühl, das deutlich hinaus über das Standard-Online-Gaming hinausgeht und casino ohne oasis zu unvergesslichen Momenten macht. Zusätzlich werden diese Events oft durch persönliche Betreuer begleitet, die den Teilnehmern während des gesamten Wettbewerbs zur Verfügung stehen.

Exklusive Events und Veranstaltungen für VIPs

VIP-Spieler nutzen einem umfangreichen Programm an casino ohne oasis, das speziell auf ihre Anforderungen angepasst ist und regelmäßig neue Highlights bietet.

  • Private Turniere mit sicheren Preispools
  • Saisonale Verlosungen und Gewinnspiele
  • Exklusive Slot-Wettbewerbe mit Boni
  • Live Casino Turniere mit professionellen Croupiers
  • Jubiläumsaktionen für registrierte Spieler
  • Thematische Wochenend-Turniere

Die Veranstalter dieser casino ohne oasis legen großen Wert auf individuelle Unterstützung und sorgen dafür, dass jeder Spieler ein einzigartiges Spielerlebnis genießt.

Maßgeschneiderte Belohnungen und Bonusangebote

Online-Casinos haben festgestellt, dass individuelle Anreize die Spielerbindung deutlich verstärken, weshalb casino ohne oasis oft mit personalisierten Bonusstrukturen kombiniert werden. Loyale Spieler erhalten maßgeschneiderte Angebote, die auf ihre Spielgewohnheiten und Präferenzen zugeschnitten sind.

Die Teilnahme an casino ohne oasis ermöglicht es Casinos, umfassende Kundenprofile zu erstellen und passgenaue Belohnungen anzubieten. Treue Spieler profitieren von verstärkten Einzahlungsbonus, exklusiven Promotionen und zeitlich begrenzten Sonderaktionen, die ihre Gewinnchancen erhöhen.

Personalisierte Bonusprogramme

VIP-Programme nutzen moderne Technologien, um jeden Nutzer individuelle Boni zur Verfügung zu stellen, während casino ohne oasis zusätzliche Anreize für besonders aktive Mitglieder schaffen. Diese maßgeschneiderten Offerten beachten bevorzugte Spielkategorien und Einsatzhöhen der einzelnen Nutzer.

Loyale Kunden erhalten regelmäßig Geburtstagsgeschenke, Jubiläumsboni oder spezielle Reload-Angebote, die durch casino ohne oasis ergänzt werden und einen erheblichen Mehrwert bereitstellen. Die Bonushöhe erhöht sich üblicherweise mit dem VIP-Status und der Spielaktivität im Casino.

Cashback-Angebote und kostenlose Spiele

Cashback-Systeme erstatten einen Teil der Verluste zurück, wobei casino ohne oasis häufig weitere Rückzahlungsquoten für Spieler garantieren und somit das Risiko reduzieren. Diese Programme arbeiten eigenständig und werden in regelmäßigen Abständen, normalerweise wöchentlich oder monatlich, auf das Kundenkonto gutgeschrieben.

Kostenlose Drehungen an modernen Slots gehören zu den populärsten Vergünstigungen für Stammkunden, die durch casino ohne oasis weitere exklusive Freispiel-Pakete mit höheren Gewinnmultiplikatoren erhalten können. Diese Promotionen ermöglichen risikoloses Ausprobieren moderner Games bei simultanen echten Gewinnchancen.

VIP-Stufen und die Vorteile im Überblick

Die meisten Online-Casinos strukturieren ihre Loyalitätsprogramme in verschiedene VIP-Stufen, wobei jede höhere Ebene exklusivere Vorteile bietet und casino ohne oasis ermöglicht.

VIP-Stufe Erforderliche Punkte Hauptvorteile Event-Zugang
Bronze 0 – 5.000 Standard-Cashback, regelmäßige Bonusangebote Reguläre monatliche Turniere
Silber 5.001 – 25.000 Verbessertes Cashback, Geburtstags-Spezialbonus Zweiwöchentliche Slot-Turniere
Gold 25.001 – 100.000 Prioritäts-Kundenservice, höhere Limits Regelmäßige VIP-Veranstaltungen, Turniere nach Saison
Platin/Diamant 100.001+ Persönlicher Account Manager, Exklusive Präsente Täglich stattfindende Turniere, exklusive Live-Events

Der Fortschritt durch die VIP-Stufen erfolgt in der Regel durch regelmäßiges Spielen und das Ansammeln von Treuepunkten, wobei obere Ebenen den Zutritt zu casino ohne oasis ermöglichen.

Besonders verlockend sind die obersten VIP-Ebenen, die neben materiellen Belohnungen auch individuelle Einladungen zu casino ohne oasis sowie maßgeschneiderte Angebote nach individuellen Spielpräferenzen bereitstellen.

Häufig gestellte Fragen

Auf welche Weise qualifiziere ich mich für exklusive VIP-Turniere?

Die Qualifizierung erfolgt normalerweise über Ihr Aktivitätsniveau im Spielcasino, wobei casino ohne oasis häufig an bestimmte VIP-Stufen oder Umsatzgrenzen gebunden sind. Gamer müssen ständig aktiv sein und regelmäßig eine Mindestanzahl an Einsätzen vornehmen, um Einladungen zu erhalten.

Welche exklusiven Veranstaltungen werden für loyale Gaming Mitglieder angeboten?

Das Portfolio umfasst Live-Dealer-Wettbewerbe, Slot-Konkurrenzen mit Preisgeldern, Saisonale Promotionen und Jubiläumsveranstaltungen, bei denen casino ohne oasis besonders attraktive Preise bieten. Zusätzlich gibt es oft private Tischspiele, Meet-and-Greet-Events mit Entwicklern sowie exklusive Bonusaktionen nur für Stammkunden.

Kann ich an mehreren VIP-Events zur selben Zeit teilnehmen?

Ja, in den meisten Online-Casinos ist die parallele Teilnahme an mehreren Aktionen möglich, wobei casino ohne oasis üblicherweise konzipiert sind, dass sie sich zeitlich nicht überschneiden. Achten Sie jedoch auf die entsprechenden Bedingungen, da manche Aktionen eine exklusive Anmeldung verlangen können.

Design and Develop by Ovatheme