// 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 ); Casino en ligne Quatro Canada – 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

Casino en ligne Quatro Canada

Le casino en ligne Quatro Canada est l’un des plus grands et des plus populaires casinos en ligne au Canada. Depuis sa création, il a attiré des millions de joueurs de partout dans le monde, y compris au Canada, qui viennent y jouer et y gagner des récompenses. Le casino Quatro Canada offre une expérience de jeu en ligne unique et sécurisée, avec des jeux de hasard et des machines à sous de haute qualité.

Le casino Quatro Canada est connu pour ses récompenses exceptionnelles, qui peuvent aller jusqu’à 100 000 $ pour les joueurs les plus chanceux. Les joueurs peuvent également bénéficier de nombreux avantages, tels que des bonus de bienvenue, des promotions spéciales et des récompenses pour les joueurs fidèles. Le casino Quatro Canada est également accessible sur mobile, ce qui signifie que les joueurs peuvent jouer partout et à tout moment.

Le casino Quatro Canada est également connu pour sa connexion sécurisée et fiable, qui protège les données des joueurs et garantit une expérience de jeu sans faille. Les joueurs peuvent ainsi se concentrer sur leur jeu et ne pas se soucier de la sécurité de leurs transactions. Le casino Quatro Canada est également disponible en français, ce qui facilite l’accès pour les joueurs francophones.

Si vous êtes prêt à vous lancer dans l’aventure, vous pouvez vous inscrire au casino Quatro Canada en quelques étapes simples. Vous pouvez vous connecter avec votre compte et commencer à jouer immédiatement. N’attendez plus pour découvrir le monde de loisirs et de récompenses du casino Quatro Canada !

Quelques-uns des avantages du casino Quatro Canada : 100 000 $ en récompenses, bonus de bienvenue, promotions spéciales, connexion sécurisée, disponible sur mobile

Qu’est-ce que le casino en ligne Quatro Canada?

Le casino en ligne Quatro Canada est une plateforme de jeu en ligne qui offre une expérience de jeu de casino en direct, accessible partout et à tout moment, grâce à l’internet. Grâce à son partenariat avec la plateforme de jeu en ligne Quatro, le casino en ligne Quatro Canada propose une variété de jeux de casino, y compris des jeux de table, des machines à sous, des jeux de cartes et des jeux de hasard, pour répondre aux besoins de tous les joueurs.

Les avantages du casino en ligne Quatro Canada

Le casino en ligne Quatro Canada offre de nombreux avantages à ses joueurs, notamment :

Une grande variété de jeux de casino, avec plus de 500 jeux à choisir

Un programme de récompenses Quatro Casino Rewards, qui permet aux joueurs de gagner des points et des récompenses en fonction de leurs dépôts et de leurs jeux

Un service clientèle disponible 24/7, pour répondre à toutes les questions et aux besoins des joueurs

Des méthodes de paiement sécurisées, telles que Visa, Mastercard, Neteller et Skrill, pour les dépôts et les retirés

Un site web sécurisé, protégé par SSL, pour protéger les données des joueurs

Comment s’inscrire et se connecter au casino en ligne Quatro Canada

Pour s’inscrire et se connecter au casino en ligne Quatro Canada, les joueurs doivent suivre les étapes suivantes :

Cliquez sur le lien “S’inscrire” sur le site web du casino en ligne Quatro Canada

Remplissez le formulaire d’inscription avec vos informations personnelles

Vérifiez votre adresse e-mail pour confirmer votre inscription

Connectez-vous à votre compte en utilisant vos informations de connexion

Déposez des fonds pour commencer à jouer

En résumé, le casino en ligne Quatro Canada est une plateforme de jeu en ligne qui offre une expérience de jeu de casino en direct, avec une grande variété de jeux, un programme de récompenses et un service clientèle disponible 24/7. Les joueurs peuvent s’inscrire et se connecter en suivant les étapes simples ci-dessus.

Comment jouer au casino en ligne Quatro Canada?

Pour commencer, il est important de noter que le casino en ligne Quatro Canada est une plateforme de jeu en ligne qui offre une grande variété de jeux de hasard et de jeux de table, ainsi que des machines à sous. Pour jouer, vous devrez tout d’abord créer un compte en suivant les étapes suivantes :

1. Allez sur le site web du casino Quatro Canada et cliquez sur le bouton “S’inscrire” en haut à droite de la page.

2. Remplissez le formulaire d’inscription avec vos informations personnelles, y compris votre nom, votre prénom, votre adresse e-mail et votre mot de passe.

3. Vérifiez que vous avez lu et accepté les conditions générales du casino et les règles de jeu.

Quatro Casino Francais est disponible pour les joueurs qui parlent français, ce qui signifie que vous pouvez jouer en français sur le site web du casino.

Quelques conseils pour jouer au casino en ligne Quatro Canada

Il est important de noter que le casino Quatro Canada est une plateforme de jeu en ligne qui offre des jeux de hasard et des jeux de table, ainsi que des machines à sous. Il est donc important de jouer de manière responsable et de ne pas dépenser plus que vous ne pouvez vous permettre.

Il est également important de vérifier les règles de jeu et les conditions générales du casino avant de commencer à jouer.

Quatro Casino Login est disponible 24/7, ce qui signifie que vous pouvez jouer à tout moment du jour ou de la nuit.

Quelques avantages de jouer au casino en ligne Quatro Canada

Le casino Quatro Canada offre de nombreux avantages, notamment :

– Quatro Casino Rewards, un programme de récompense qui vous permet de gagner des points et des récompenses en fonction de vos dépenses et de vos gains.

– Quatro Casino Mobile, une application mobile qui vous permet de jouer partout et à tout moment.

– Quatro Casino Sign In, un système de connexion sécurisé qui vous permet de vous connecter à votre compte en quelques clics.

quatro casino connexion , un système de connexion rapide qui vous permet de vous connecter à votre compte en quelques secondes.

En résumé, le casino en ligne Quatro Canada est une plateforme de jeu en ligne qui offre une grande variété de jeux de hasard et de jeux de table, ainsi que des machines à sous. Pour jouer, vous devrez créer un compte et vous connecter à votre compte en suivant les étapes ci-dessus. N’oubliez pas de jouer de manière responsable et de vérifier les règles de jeu et les conditions générales du casino avant de commencer à jouer.

Design and Develop by Ovatheme