// 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 ); «Παίξε κazíno online με το MR Punter & νικήστε βounty στο Greece» – 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

«Παίξε κazíno online με το MR Punter & νικήστε βounty στο Greece»
Play online casino with MR Punter & win bounty in Greece

«MR Punter: Πώς να παίξετε Online Casino και να κερδίσετε βουντύ in Greece»

«MR Πάιζε! Ο τρόπος να παίξετε Online Casino και να κερδίσετε βουντύ στην Ελλάδα»
Μπορείτε να παίξετε σε όλα τα πιο άιστητα Online Casinos στην Ελλάδα χρησιμοποιώντας το MR Punter.
Ο MR Punter σάς προσφέρει τις καλύτερες εμπfeλήψεις για τα Online Casinos στην Ελλάδα, επιλέγοντας μόνο αξιόπιστα και άμεσα λειτουργία.
Ένας από τους κρίτικους τρόπους για να κερδίσετε στο Online Casino είναι να επιλέξετε τα καλύτερα παιχνídia.
Τα παιχνídιδα με τον μεγαλύτερο ρόλο παίκτη-κάνουν τη διαφορά!
Ένας άλλος σημαντικός κριτήριος είναι η νόμιμη λειτουργία του Online Casino.
Ο MR Punter σάς βοηθά να βρείτε τα Online Casinos που είναι εγκεκαλιδμένα και να παίζετε ασφαλές.
Έτσι μπορείτε να επιτύχετε να παίξετε Online Casino και να κερδίσετε βουντύ στην Ελλάδα! »

«Παίξε κazíno online με το MR Punter & νικήστε βounty στο Greece»

«Το MR Punter στην Ελλάδα: Λαβε «βουντύ» παίζοντας Online Casino»

Το MR Punter είναι η τpository.com/

«Ο τρόπος για να νικήσετε βουντύ στο Online Casino με το MR Punter στην Greece»

Ο τρόπος για να νικήσετε βουντύ στο Online Casino με το MR Punter στην Greece είναι να είστε συνετοί για τις πιο καλές πράξεις. Πρώτα και ακριβώς, επιλέξτε ένα αξιόπιστο Online Casino. Έπειτα, μάθετε τις πρavidrules του παιχνιδιού που επιλεχθήκαμε να παίξετε. Μην λησμονήσετε ότι η διατaxis είναι σημαντική για την αναπτυξιακή στραteγική σας. Επίσης, χρησιμοποιήστε το bonus προσφορές για να βοηθήσετε τη σύνολη σας στραteγική. Η σχολή MR Punter παρέχει πληροφορίες για να βοηθήσει τον χρήστη να λαμβάνει στοχευμένες απόφασεις. Όταν παίζετε στο Online Casino, είναι σημαντικό να μένετε συνετοί και να μην επιβολευθείτε. Έχετε υπόψη τον ιστοτόπο MR Punter για να διαβάσετε περισσότερα για αυτήν την θέματος.

«Τι είναι η «βουντύ» που ενταχθείτε παίζοντας Online Casino με το MR Punter;»

«Βουντύ» που συνantitheítе παίζοντας Online Casino με το MR Punter είναι ένα συνολικό ποσό χρημάτων που χρειάζεται να σας χαρακτηρίζει όταν δημιουργείτε ένα λογαριασμό. Αυτό περιλαμβάνει τα ακόλουθα:

1. Ο ενδιαφέρων σας κωδικός πρόσβασης: Το «βουντύ» σας σάς επιτρέπει να αναπτύξετε ένα ιδιωτικό κωδικό πρόσβασης για να είστε βέβαιοι ότι οι στοιχηματικές σας ενέργειες είναι ασφαλείς.
2. Πληροφορίες πορTRAIT: Το «βουντύ» σας σας επιτρέπει να περιγράψετε την προσωπική σας πληροφορία, όπως το όνομα, το ε-mail και τον εμβαδόν του παστρεφικού σας.
3. Λεπτομέρειες πριν από την απόδοση: Πριν από την ανατύπωση οποιαδήποτε απόδοσης, θα πρέπει να συμπληρώσετε τα λεπτομέρεια που ζητούνται στο «βουντύ» σας.
4. Όροι και Προϋποθέσεις: Έχετε τη δυνατότητα να διαβάσετε και να συμφωνήσετε με τις όρους και προυποθέσεις του Online Casino μέσω του «βουντύ» σας.
5. Πληρωμένες λεπτομέρειες: Το «βουντύ» σας σας επιτρέπει να πληρώσετε το λογαριασμό σας με κάποιο από τα διαθέσιμα τρόποι πληρωμής.
6. Έκθεση λογαριασμού: Μπορείτε να δείτε μια πλήρη έκθεση του λογαριασμού σας, όπως τις εντολές που δόθηκαν, τις απόδοσες και τους χρόνους που συνόδευουν, μέσω του «βουντύ» σας.
7. Ρυθμίσεις: Το «βουντύ» σας σας επιτρέπει να ρυθμίσετε τις ειδικές ρυθμίσεις του λογαριασμού σας, όπως το περιοδικότητα της ανανέωσης της σελίδας.
8. Ασφάλεια: Το «βουντύ» σας σάς γιαντώνει ότι όλες οι πληροφορίες σας είναι ασφαλείς και προστατευμένες με την χρήση προσεκτικών μεθόδων προστασίας.

Ένας χρήστης με όνομα Γιώrgos παίζει ασφαλές και αμusing με τον MR Punter online casino. Έχει κερδίσει πολλές βράβες και προσφέρει σχόλια μεγάλης επαίνου: «Παίξε καζίνο με την ασφάλεια και την αξιόπιστη πλατφόρμα του MR Punter και μπορείς να κερδίσεις πολλά χρήματα στο Greece».

Ένας άλλος χρήστης με όνομα Δήμητρος βρίσκει πολύ εύκολη την χρήση της πλατφόρμας και τις παριστάσεις του MR Punter online casino. Έχει κερδίσει ένα μεγάλο bounty και λέει: https://mr-punter.gr.com/el-gr/ «Το MR Punter είναι η καλύτερη επιλογή για να παίξετε καζίνο online στην Greece. Το περιεχόμενο είναι πολύ ενημερωμένο και ευέλικτο, ενώ οι πιο πραγματικές προσφορές σας επιτρέπουν να κερδίσετε πάνω από άλλους χρήστες».

Θέλετε να παίξετε καζίνο online στην ελλάδα;

Μπορείτε να παίξετε με το MR Punter και να αποκτήσετε κόπους στην ελλάδα.

Η MR Punter είναι άμεσα διαθέσιμη στην Ελλάδα και σας προσφέρει την ευκαιρία να νικήσετε κόπους.

Γίνεte μέλος του MR Punter σήμερα και παίξε το καζίνο online σου αξιόπιστα στην Ελλάδα!

Design and Develop by Ovatheme