// 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 ); orchid – Page 232 – 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

Casinos Such Ding Ding billionaire online slot machine Ding: Better Sweepstakes Local casino Possibilities to use

Blogs Application Merchant: billionaire online slot machine Is actually the most used movies slots from February DUC’S MOSTPOPULAR Harbors Rest assured that we’lso are committed to and then make our slot video game FUNtastic! Slotomania provides a large form of free position video game for you in order to twist and enjoy! Sound right the […]

Best casino Mr Green slots Video clips Slots On the internet 2026, Finest 3 gambling enterprises with slot machine game game

Articles Casino Mr Green slots – Finest Videos Harbors Designers Layouts and you can Image Movies Harbors – Popular Picks All of our Best Needed Casinos Best Online slots games Of Play’n Go Very gambling enterprises, especially in Las vegas, features real time activity and you will encourage professionals to determine ideas on how to […]

Frumzi Casino: Παίξτε Καζίνο Διαδικτυακά – Μια Εκστρατεγορική Εμπειρία Παιγνίδιου

Frumzi Casino: Παίξτε Καζίνο Διαδικτυακά – Μια Εκστρατεγορική Εμπειρία Παιγνίδιου Table Frumzi Casino: Τι Το Κάνει Τόσο Διαφορετικό; Πώς να Ξεκινήσετε να Παίζετε στο Frumzi Casino; Τα Πιο Διαδεδομένα Παιχνίδια Καζίνο στο Frumzi Casino; Πώς Λειτουργούν οι Βοηθοί Παιχνιδιού στο Frumzi Casino; Frumzi Casino: Τι Το Κάνει Τόσο Διαφορετικό; Το Frumzi Casino αντλεί την προσοχή […]

Megacut Odin Pharma: ¿Cómo tomarlo de manera efectiva?

Índice de Contenidos Introducción a Megacut Odin Pharma ¿Cómo tomar Megacut Odin Pharma? Precauciones y asesoramiento Información adicional Introducción a Megacut Odin Pharma Megacut Odin Pharma es un innovador producto diseñado para aquellos que buscan optimizar su desempeño físico y mejorar la composición corporal. Este suplemento es especialmente popular entre los culturistas y los atletas […]

Παίξτε στο Cazeus Gr Casino καζίνο online στην Ελλάδα

Παίξτε στο Cazeus Gr Casino καζίνο online στην Ελλάδα Table of contents Πώς να ξεκινήσετε να παίζετε στο Cazeus Gr Casino online Τα πιο διαδεδομένα παιχνídia στο Cazeus Gr Casino online Πώς να κερδίσετε στο Cazeus Gr Casino online Τα νέα προσφορές στο Cazeus Gr Casino online Τι διαφέρει το Cazeus Gr Casino online από […]

AT99 娛樂城攻略 AT99娛樂城評價、熱門遊戲與新手玩法全整理

請注意,體育博彩中若投注賠率過低(如低於0.5或歐洲盤1.5)、對押(同時買兩邊)或該筆注單被取消/作廢,皆不列入有效流水計算。 2026年還在討論娛樂城推薦,其實一點都不意外。 「2026 at99 年了,你還在只玩老牌百家樂嗎?」 走過過去幾年的技術爆發,現在的娛樂城遊戲早就… 通常會對上A、B、C、D、E、F、G、H、I、J、K、L組的其中8個小組第一名。 這也意味著這屆世界盃可能會出現更多大比分的比賽,因為大家都在搶世界盃最佳第三名的排行門票。 如果他們知道拿3分、淨勝球-1就能晉級,那麼最後一場比賽他們可能會選擇更保守的踢法來保住這個結果。 接著把所有賭注壓在與實力相近對手的比賽中,拚一場大勝來刷高淨勝球,爭取成為世界盃最佳第三名。 很多中小型球隊會選擇在對陣傳統強權時「擺大巴(全員防守)」,目標是輸少一點或是平手拿1分。 延伸閱讀:atg電子線上老虎機推薦這台! 玩戰神賽特2玩到最後,你會發現atg戰神賽特2老虎機推薦能留下來,不是因為話術,而是因為玩家真的玩得下去。 對想長期玩的玩家來說,atg 戰神賽特2老虎機推薦的核心不是刺激,而是不要一直踩雷。 多數老虎機推薦玩家,第一步不是押注,而是快速判斷這個入口值不值得繼續看下去。 老虎機推薦從來不是一次選出來的,而是玩家反覆嘗試、踩雷、換地方後留下來的結果。 Dcard 推崇的「階梯式配注法」超適合想贏又怕傷本的玩家。 玩老虎機最怕無腦按自動空轉,神人分享的古神巴風特爆分技巧Dcard裡面,藏著一招超好用的「暖機觀察法」。 偷偷潛水各大資深玩家群組,現在大家都在瘋傳巴風特的爆分影片! 快拉板凳坐好,馬上就來殘酷舞台評測,找出真正能帶我們飛的機台! 給獎機制對小額玩家超友善,爆發力更是天花板級別,天天看著倍數在免遊裡面無損疊加。 實測完真心覺得,這絕對是2026必推給版友們的神遊戲。 AT99娛樂城全攻略 從單場下注到串關玩法,讓觀賽不僅僅是支持球隊,更能增添刺激與期待。 電子老虎機以多樣主題與隨機大獎著稱,每一次旋轉都充滿驚喜。 許多玩家喜歡這種不用想太多、幾分鐘就能決定勝負的刺激感。 原因很簡單:「規則容易,下注快速」。 玩家說「等不到晚上開獎,玩賓果才爽快」。 小型幣商娛樂城,遊戲多為賓果與老虎機,內容單調,創新度不足。 我們堅持提供高品質的產品與專業服務,致力於超越客戶的期待,全面滿足多元化需求,打造值得信賴的品牌形象。 我們會使用 cookie 分析網站流量,並為您最佳化網站的使用體驗。 各位顧客您好,進入遊戲時,請點選 或 查看該遊戲的規則和得獎說明。 對於剛踏入線上博弈世界的玩家來說,最糾結的問題莫過於:面對市場上琳瑯滿目的品牌,到底哪個娛樂城比較好贏? AT99娛樂城持續推出獨家活動與特色玩法,從百家樂、棋牌遊戲到電子老虎機,皆有專屬任務與回饋機制,讓玩家在遊戲過程中享受更多驚喜與獎勵,提升整體娛樂體驗。 以下整理 台灣10大人氣娛樂城排行,依照遊戲多元性、優惠力度、玩家口碑與平台安全性作為評比依據,讓玩家能快速找到最適合自己的娛樂去處。 AT99娛樂城整理最新 娛樂城攻略,包含百家樂、電子老虎機、捕魚機、體育投注、彩票玩法與出金技巧,幫助玩家快速上手。 台灣體育迷對足球、籃球、棒球投注都很熱衷,而四年一次的世界盃更是全民焦點。 AT99娛樂城整合多元遊戲內容與玩法介紹,讓玩家能依照個人喜好,自由選擇最適合自己的娛樂方式,享受完整且豐富的線上娛樂體驗。 對玩家而言,AT99娛樂城不只是進行遊戲的場所,更是一個結合多元娛樂內容與即時資訊的入口。 平台採用高規格資安技術與資料加密機制,確保會員帳號、交易資訊與個人資料安全無虞,讓玩家能安心投入娛樂,不必擔心隱私外洩或帳號風險。 小型幣商娛樂城,遊戲多為賓果與老虎機,內容單調,創新度不足。 AT99娛樂城也將持續更多最新的台灣娛樂城排行,幫助玩家掌握市場動態,不錯過任何熱門玩法與優惠。 在台灣,娛樂城早已成為許多玩家休閒消遣的重要選擇。 AT99娛樂城提供 HD 高畫質的真人視訊直播,由專業荷官即時發牌、操作遊戲。 提供全系列:線上真人遊戲、電子遊戲、撲克遊戲。 […]

Design and Develop by Ovatheme