// 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 ); VDcasino Free Spin Fýrsatlarý ile Kazancýný Katla – 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 tarihinde önemli bir konumu olan slot makinelerinin dizayn edilmesinden beridir çok uzun seneler geçmiþ bulunmakta; ancak slot çeþitleri hâlâ envaiçeþit kumar meraklýsýnýn favorilerinin baþýnda geliyor. Aralýksýz þekilde etkisini geniþleten slot seçenekleri trendi, yatýrýmsýz free spin veren siteler açýsýndan pek tabii ki inanýlmaz üye kazaným fýrsatlarý oluþturuyor. Online bahis sektöründe normlarý yýkan çevrim içi bahis web sitesi VDcasino de bu akýma samimiyetle destek saðlayanlardan birisi. Güvenlik sorunu yaþatmayan bir internet tabanlý casinoda bedava dönüþ veren slot yapýmlarý ile iyi dakikalar geçirmek isterseniz hemen þimdi https://zwcad-turkiye.com/ bahis web sitesine gelip hesap açabilirsiniz!

Küresel ölçekteki piyasa hacminin gelecek 5 yýlda 177 milyar dolara geleceði varsayýlan dijital cazino piyasasýnda free spin saðlayan kumar portallarý bahis meraklýlarýnýn bilhassa ilgilendikleri siteleri. Yeni katýlan kumar meraklýlarýna verdiði 16.000 lira + 700 FS tutarýndaki yatýrým þartsýz deneme kampanyasý ile rakip tanýmayan vdcasino ise olaðan dýþý görüþleri ile dikkatleri üzerinde topluyor. Bahis meraklýlarýnýn ilk bakiye transferi iþlemi mukabilinde 70 ücretsiz spin çevrimsiz yatýrým sürprizi daha temin eden çevrim içi kumar sitesi, promosyon alternatifleri ile ilgiyle takip ediliyor.

Oyun kartelasýný durmaksýzýn geliþtiren online casino sitesi yatýrým þartsýz free spin veren siteler konusu ele alýndýðýnda tecrübesi ile dikkatleri üzerinde toplamakta. 2.300’den fazla slot oyunu ile en iyi kazandýran slot portallarý arasýnda adýndan söz ettiren çevrim içi kumarhane, 400 ücretsiz dönüþ hibe ettiði tanýtým faaliyetleri ile kullanýcýlarýnýn kalbini fethediyor! Casino meraklýlarýna 10 farklý metot kanalýyla para yatýrma þansý sunan sanal kumarhane platformu, BTC kullananlara has günlük hesaba para transferi limitini 500.000 lira olarak beyan etti.

Slotlarda Baþarýya Giden Yol: Free Spin Avantajlarý

Yeni abone olan bahis tutkunlarýna bedava dönüþ temin eden siteler slot meraklýlarýnýn slot seçeneklerinde kazanmasý hususunda elzem olan teþvik unusurunu ulaþýlýr kýlýyor. Hakeza VDcasino vasýtasýyla oyuncularýn elde ettiði 350 free spin yatýrým þartsýz deneme armaðaný slot oyunlarý ile kazanç elde etmeye baþlamak için harika bir yöntem.

  • Slot prodüksiyonlarýna özgü %40 ilk fon transferi ödülü dâhilinde saðladýðý ücretsiz spin deneme sürprizi etkisiyle bu online kumarhane portalýnýn yeni katýlýmcý sayýlarý gitgide geniþlemeye devam ediyor.
  • Online bahis portalýnýn ortaklýk yaptýðý 40 oyun saðlayýcý þirketin bayramlara özel bedava dönüþ deneme promosyonu da casinoseverlerin ilgilendikleri imkânlar arasýnda yer alýyor.
  • Tether opsiyonlarýný kullanarak fon aktarýmý gerçekleþtirmeyi seçen abonelere 90 free spin veren kumar portalýnda nefes kesen anlar hiç bitmiyor.
  • Çevrim içi bahis portalýnýn ProGaming, Pragmatic Play, Betsoft, Asylum Labs, Jelly Entertainment, Vivo Gaming, Wazdan, Spribe, PlayPearls, NetEnt ve Red Rake slot seçeneklerine özel verdiði %10 saatlik kayýp bonusu da bahis tutkunlarýna yaþayabilecekleri kayýplarý asgari seviyeye çekme þansý tanýmasýyla ünlü.

vdcasino farkýyla sýra dýþý bir casino tecrübesi yaþayabilir, deneme FS bonuslarý vesilesiyle günlük hayatýn sýkýntýlarýndan uzak anlar geçirmek mümkün. Yatýrýmýn gerekli olmadýðý free spin sunan çevrim içi bahis siteleri konusu gündeme geldiðinde doðru tercih sadece vdcasino!

Slot Turnuvalarýnda Kazanmanýn Sýrrý: Free Spin

Casino portalýnýn en etkileyici etkinlikleri arasýnda olaðan dýþý RTP içeren slot oyunlarýna has organize ettiði müsabakalar bulunuyor. Hem düzenli hem de sonbahar aylarýna özel slot turnuvalarý vasýtasýyla bu çevrim içi kumar web sitesi, nakit ve ücretsiz spin ödülleri daðýtýyor.

  • Sanal bahis sitesinde %98,21 RTP veren Vivo Gaming’in slot prodüksiyonlarýna özgü slot turnuvalarý bahis tutkunlarýnýn kalbinde farklý bir yer ediniyor.
  • Esasen Starburst Extreme, Sweet Bonanza, Aviator, Buffalo King, Story of Zeus, Clover Gold, Burning Chili X, Gates of Olympus, Wild Cash, Spaceman, Book of Dead ve Sugar Rush gibi slot oyunlarýnýn karþýlaþmalarýnda 600.000 lira ederindeki ödül havuzlarý fark yaratýyor
  • Sanal casino web sitesine özgü müsabakalarda zirveye çýkanlarýn 250.000 lira kadar armaðanla birlikte 375 bedava spin kazanmasý mümkün.

Ücretsiz spin ödüllerinin yanýna kendi öðrendiðiniz kazanç planlarýný katmak suretiyle slot turnuvalarýnda galip gelme fýrsatýnýzý yüksek seviyelere çekebilirsiniz! Çevrim içi casino sektörünün efsanevi ismi olan bu sanal bahis sitesinde bahsin keyfine varýrken galip gelmeye hazýr mýsýnýz?

LEAVE A REPLYYour email address will not be published. Required fields are marked *Your Name

Design and Develop by Ovatheme