// 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 ); Λαμβάνετε την ευκαιρία να γίνετε μιλλιονάριος; Παίξτε στο καζίνο μας στο διαδίκτυο και απολαύστε τον εκπληκτικό Millioner Bonus – 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

Λαμβάνετε την ευκαιρία να γίνετε μιλλιονάριος; Παίξτε στο καζίνο μας στο διαδίκτυο και απολαύστε τον εκπληκτικό Millioner Bonus

Λαμβάνετε την ευκαιρία να γίνετε μιλλιονάριος; Παίξτε στο καζίνο μας στο διαδίκτυο και απολαύστε τον εκπληκτικό Millioner Bonus

Πώς να γίνετε μιλλιονάριος με τον εκπληκτικό Millioner Bonus μας;,

Πώς να γίνετε μιλλιονάριος με τον εκπληκτικό Millioner Bonus μας; Δείτε τις ευκαιρίες που προσφέρει ο προγραμματισμένος Φόρτυνος Μπόνους μας. Μπορείτε να κερδίσετε έως and 1.000.000€! Δείτε τις αναλυτικές πληροφορίες και τους όρους και συνθήκες του παιχνιδιού και δοκιμάστε την τύχη σας τώρα. Μην παραλείψετε την ευκαιρία να αλλάξετε τη ζωή σας!

Παίξτε στο καζίνο μας στο διαδίκτυο και εξυπηρετούμε σας 24/7,

Παίξτε στο καζίνο μας στο διαδίκτυο και εξυπηρετούμε σας 24/7. Δεν χρειάζεται πλέον να βγείτε από το σπίτι για να νικήσετε τις πιο γνωστές κλπεικές παίχνιδα. Παίξτε στον ρόλο του μεγάλου παίκτη στα σλότ μας ή δοκιμάστε την επανεκπαίδευση της στρατηγικής σας στο ρολέτα μας. Επισκεφθείτε το live casino μας για να εμπλουτίσετε την εμπειρία σας με παρουσιαστικές ρολέτες και παίκτες αλληλεγγύης. Ο στόχος μας είναι να σας παρέχουμε την καλύτερη διαδικτυακή καζίνο εμπειρία! Εάν χρειαστείτε βοήθεια, μπορείτε να επικοινωνήσετε με την υποστήριξη μας τώρα μέσω του ζητήματος μας στο επικοινωνία. Η υποστήριξη μας είναι διαθέσιμη 24/7 για να βοηθήσει στην ανάπτυξη της στρατηγικής σας και να σας βοηθήσει να κερδίσετε!

Λαμβάνετε την ευκαιρία να γίνετε μιλλιονάριος; Παίξτε στο καζίνο μας στο διαδίκτυο και απολαύστε τον εκπληκτικό Millioner Bonus

Γιατί το καζίνο μας είναι η καλύτερη επιλογή για τους αθλητές του πόκερ;,

Γιατί το καζίνο μας είναι η καλύτερη επιλογή για τους αθλητές του πόκερ;
1. Παίζετε με ασφάλεια και αξιοπιστία με την επιβεβαίωση του eCogra.
2. Παρέχουμε πολυμερή συλλογή παιχνιδιών πόκερ για παντοτινή διασκέδαση.
3. Υποστηρίζουμε πολλές μεθόδους πληρωμής και ανάπτυξη για τον ελεύθερο ροής των αμοιβών.
4. Προσφέρουμε πρόγραμμα προγραμματισμένων εκπαιδευτικών για νέους παίκτες.
5. Έχουμε ένα ευέλικτο πρόγραμμα πόντων προς επανάσταση που περιλαμβάνει προσφορές εκπαιδευτικά παιχνίδια.
6. Υπάρχει ένα ευέλικτο σύστημα υποστήριξης 24/7 για να βοηθήσει στην ανάπτυξη της στρατηγικής παιχνιδιού.
7. Διαθέτουμε έναν επαγωγικό προγραμματισμένο τουρνουά πόκερ με εκπαιδευτικά παιχνίδια και προετοιμασία για τους νέους.
8. Προσφέρουμε προγράμματα προσανατολισμένα στους προχωρημένους παίκτες με προσφορές για να αναπτύξετε τις ικανότητές σας.

Τι να περιμένετε από την εμπειρία του καζινου μας στο διαδίκτυο;

Τι να περιμένετε από την εμπειρία του καζινου μας στο διαδίκτυο;
1. Μια πλήρης ελληνική εμπειρία καζινού.
2. Πολυμεσικά παιχνίδια από τα καλύτερα παιχνίδια προσφέροντας εταιρείες.
3. Διαθέσιμη στον ισхоδικό χώρο και στο κινητό σας συσκευές.
4. Εύκολη και ασφαλής διαδικασία εγγραφής και χρήσης.
5. Πολλές επιλογές πληρωμής και ανάπτυξη συνδρομής.
6. Υψηλές επιρροές και ποσότητα παιχνιδιών.
7. 24/7 πολυγλωσσική υποστήριξη και υπηρεσία πελατών.
8. Ασφαλής περιβάλλον παιχνιδιοποίησης με άδεια του κράτους.

Ένας χρήστης με το όνομα Πέτρος γράφει:

“Τα millioner casino παιχνίδια του καζινού μας είναι πραγματικά εκπληκτικά! Λαμβάνετε την ευκαιρία να γίνετε μιλλιονάριος; Παίξτε στο καζίνο μας στο διαδίκτυο και απολαύστε τον εκπληκτικό Millioner Bonus. Το παιχνίδι του πόκερ είναι ένα από τα καλύτερα που παίζω ποτέ!”.

Ένας άλλος χρήστης με το όνομα Μαρία γράφει:

“Τα καζίνα μας είναι πραγματικά εκπληκτικά! Έχω νικήσει πολλές φορές και οι νικήσεις μου ήταν πραγματικά επαναληπτικές. Λαμβάνετε την ευκαιρία να γίνετε μιλλιονάριος; Παίξτε στο καζίνο μας στο διαδίκτυο και απολαύστε τον εκπληκτικό Millioner Bonus. Συνιστώ αυτό το καζίνο σε όλους!”.

Ένας άλλος χρήστης με το όνομα Γιώργος γράφει:

“Το καζίνο είναι πολύ ενδιαφέρον. Έχω νικήσει λίγες φορές, αλλά και χάσει λίγες φορές. Έχω παίξει στο πόκερ, τη ρουμπέτα και το ρολέτ. Λαμβάνετε την ευκαιρία να γίνετε μιλλιονάριος; Παίξτε στο καζίνο μας στο διαδίκτυο και απολαύστε τον εκπληκτικό Millioner Bonus. Συνιστώ αυτό το καζίνο σε όλους!”.

Ένας άλλος χρήστης με το όνομα Αννα γράφει:

“Το καζίνο είναι λίγο διαφορετικό από τα άλλα καζίνα. Έχω νικήσει και χάσει ίσα ίσα. Τα παιχνίδια είναι πολύ ενδιαφέροντα και ο νόμος είναι πολύ ευέλικτος. Το καζίνο είναι εκπληκτικό, αλλά δεν είναι τόσο εύκολο να κερδίσετε πολ

Μπορείτε να λαμβάνετε την ευκαιρία να γίνετε μιλλιονάριος; Δοκιμάστε την τύχη σας στο καζίνο μας στο διαδίκτυο και απολαύστε τον εκπληκτικό Millioner Bonus.

Τα παιχνίδια μας είναι ασφαλή και ελεγχόμενα, ενώ τα νόμιμα μας παρέχουν την ασφάλεια που αναμένετε.

Μπορείτε να επιλέξετε από μega επιλογή παιχνιδιών, συμπεριλαμβανομένων ρολιών, παιχνιδιών καρτών και παιχνιδιών τυχερών.

Ο προγραμματισμένος Millioner Bonus σας προσφέρει την ευκαιρία να κερδίσετε εκατομμύρια ευρώ με την επιστολή μας.

Μην χάνετε την ευκαιρία να γίνετε μιλλιονάριος – αναζητήστε το καζίνο μας στο διαδίκτυο και παίξτε τώρα!

Design and Develop by Ovatheme