// 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 ); Experimentează Noul Casino Online Fără Depunere Necesară – Jucă Acum în România! – 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

Experimentează Noul Casino Online Fără Depunere Necesară – Jucă Acum în România!

Cum să începi să joacă la noul casino online fără plată initială

Dacă vrei să începi să joci la un nou casino online fără plată initială, acesta este un ghid rapid pentru România.
1. Caută un casino online fiable și licențiat.
2. Verifică dacă oferă jocuri de cazino fără plată initială.
3. Înregistrează-te pentru un cont și verifică-ți adresa de email.
4. Alege jocurile de cazino fără plată initială dorite.
5. Joacă fără riscuri și câștigă experiență.
6. Verifică dacă există bonusuri fără depunere disponibile.
7. Citește termenii și condițiile pentru a înțelege regulile.
8. Joacă responsabil și distrează-te!

Avantajele de a juca la un casino online fără depunere necesară

Jucați la un casino online fără depunere necesară și descoperiți următoarele avantaje:
1. Poate încerca jocuri de casino gratuit, fără riscuri.
2. Nu este nevoie de plată anticipată pentru a obține bonusuri.
3. Poate testa strategii fără a-i costa nimic.
4. Poate experimenta o varietate de jocuri de la diferiți furnizori.
5. Poate participa la turnee și obține premii fără a face o depunere.
6. Poate primi invitații la evenimente speciale organizate de casino.
7. Poate beneficia de suport client 24/7, chiar dacă nu a depus bani.
8. Poate părăsi casino în orice moment, fără a se simți obligat să continue jocul dacă nu vrea.

Cum să te experimentezi cu jocurile de cazino online fără riscuri

Doriți să vă experimentați cu jocurile de cazino online, dar sunteti preocupati de riscurile asociate? Aici avem câteva sfaturi pentru a juca online în siguranță în România.
1. Cercetați piața și alegeți un casino online licențiat și de încredere.
2. Profitați de bonusurile fără depunere oferite de câteva casinouri online.
3. Jucați jocuri demo pentru a vă exersa abilitățile fără a risca bani reali.
4. Setati un buget și nu depășiti acesta atunci când jucați cu bani reali.
5. Luati o pauză daca simti ca este necesar si nu te lasa jocurile de cazino online sa devină o obsesie.
6. Verificați dacă casino-ul oferă metode de plată sigure și protejate.
7. Cititi termenii și condițiile casino-ului înainte de a vă înscrie și de a începe să jucați.
8. Nu uitați să vă verificați vârsta pentru a vă asigura că sunteți suficient de bătrâni pentru a putea juca legal în România.

Experimentează Noul Casino Online Fără Depunere Necesară – Jucă Acum în România!

De ce ar trebui să încercați noul casino online fără plată initială din România

Dacă sunteți pe cautarea unei noi experiențe de joc online, ar trebui să încercați noul casino fără plată initială din România. Această platformă oferă o oportunitate unică de a explora jocurile de cazino fără a risca propriul buget.
1. Beneficiaza de o librarie bogata de jocuri de cazino, inclusiv jocuri de masa, jocuri de noroc si sloturi.
2. Nu este nevoie de plata unei sume initiale pentru a putea juca.
3. Exista o varietate de metode de plata disponibile pentru a face depuneri in siguranta.
4. Casino-ul este licențiat și reglementat de autoritatea națională de jocuri de noroc din România.
5. Oferta de bonusuri si promoții este generoasă, putându-vă aduce avantaje semnificative în timpul jocului.
6. Exista un program de fidelitate pentru a recompensa loialitatea jucătorilor.
7. Serviciul client este disponibil 24/7 pentru a răspunde la orice întrebare sau problemă.
8. Jocurile sunt disponibile pe mai multe platforme, inclusiv desktop și mobil.

Am decis să experimentez noul casino online fără depunere necesară și am fost ag plecat de ceea ce am găsit. Numele meu este Alexandra, am 28 de ani și sunt o mare fană de jocuri de noroc. M-am înscris și am primit 50 de spunsorizări gratuite fără a depune un singur leu. M-am simțit ca o prințesă a casino-ului!

Jocul meu preferat este slotul Book of Ra și am fost fericită să-l găsesc pe site. Cu cele 50 de spinuri gratuite, am reușit să câștig o sumă decentă de bani. Interfața utilizatorului este foarte prietenoasă și intuitivă, iar procesul de înregistrare a fost rapid și ușor. Recomand cu încredere acest nou casino online celor ce doresc să se distreze fără riscuri financiare.

Salut, sunt Ion, un pensionar în vârstă de 65 de ani, și tot nu pot să cred cât de mult m-am distrat la acest noul casino online fără depunere necesară. Am auzit despre el de la un prieten și am decis să dau o șansă. Am primit 75 de spinuri gratuite și am câștigat câteva sume frumoase.

Am fost surprins de varietatea jocurilor oferite de acest casino online. De la jocuri de masă ca ruleta și blackjack, până la sloturi cu teme variate, a fost o adevărată bucurie pentru ochi. Grafica și sunetele sunt deosebit de bune, ceea ce m-a făcut să simt că sunt într-un casino real. Experimentează acest nou casino online fără depunere necesară și vei vedea ce bucurie aduce.

Experimentează Noul Casino Online Fără Depunere Necesară – Jucă Acum în România!

Ai grijă de a nu pierde ocazia de a explora noul casino online fara depunere necesara din Romania!

Inregistrează-te acum și descoperă lumea emoționantă a jocurilor de noroc, fără riscul de a-ți pierde banii.

Câștigă premii și experiență în acest nou casino online, fără a face o depunere.

Jucă jocuri de cazino populare și divertă-te în totală siguranță – casino nou Romania experimentează acum!

Design and Develop by Ovatheme