// 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 ); Experience the Thrill of PinUp Mobile Casino: Play Online in English, Tailored for India – 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

Experience the Thrill of PinUp Mobile Casino: Play Online in English, Tailored for India

Unleashing the Excitement of PinUp Mobile Casino: A Comprehensive Guide for Indian Players

Unleashing the Excitement of PinUp Mobile Casino: A Comprehensive Guide for Indian Players
Are you ready to embark on an unforgettable gaming journey? PinUp Mobile Casino is here to provide Indian players with a thrilling and immersive experience.
Discover the world of online gambling with PinUp, offering a wide range of games from classic slots to live dealer tables.
Join the PinUp community and take advantage of exciting bonuses and promotions, specifically tailored for Indian players.
Experience seamless gameplay on-the-go, with a mobile-optimized platform that brings the casino to your fingertips.
From Hindi-speaking customer support to local payment methods, PinUp ensures a smooth and authentic experience for Indian players.
Dive into the action and discover the endless possibilities of PinUp Mobile Casino, where excitement knows no bounds.
Get started today and unleash the excitement of PinUp pinup apk – the ultimate destination for Indian casino enthusiasts!

Experience the Thrill of Online Gambling with PinUp Mobile Casino in India

Are you ready to experience the thrill of online gambling in India? Look no further than PinUp Mobile Casino! Here are 8 reasons why you should check it out:
1. PinUp Mobile Casino offers a wide variety of games, including slots, table games, and live dealer games, all optimized for mobile play.
2. The casino is licensed and regulated, ensuring a safe and secure gaming experience for Indian players.
3. PinUp Mobile Casino accepts a range of payment methods popular in India, such as UPI, Paytm, and Netbanking.
4. The casino offers generous bonuses and promotions, including a welcome bonus for new players and ongoing rewards for loyal customers.
5. PinUp Mobile Casino’s customer support team is available 24/7 to assist with any questions or concerns.
6. The casino’s user-friendly interface makes it easy to navigate and find your favorite games.
7. PinUp Mobile Casino is compatible with both iOS and Android devices, so you can play on the go.
8. With PinUp Mobile Casino, you can experience the excitement of a real casino from the comfort of your own home. Try it out today and see for yourself!

PinUp Mobile Casino: The Ultimate English Language Gaming Destination for Indian Players

PinUp Mobile Casino is the ultimate English language gaming destination for Indian players. 1 This top-rated online casino offers a wide variety of games, including slots, table games, and live dealer games, all available in English. 2 Indian players will feel right at home with PinUp’s user-friendly interface and support for Indian Rupees.
3 With a license from the Curacao Gaming Authority, PinUp Mobile Casino ensures fair play and secure transactions. 4 The casino’s mobile-optimized platform allows for seamless gaming on-the-go, making it easy to play your favorite games anytime, anywhere.
5 PinUp also offers a generous welcome bonus and ongoing promotions for Indian players, giving you even more chances to win big. 6 The casino’s customer support team is available 24/7 to assist with any questions or concerns.
7 With a wide range of payment options, including popular e-wallets like Skrill and Neteller, making a deposit or withdrawal is quick and easy.
8 Whether you’re a seasoned pro or new to online casinos, PinUp Mobile Casino is the perfect choice for Indian players looking for a top-quality, English language gaming experience.

Why PinUp Mobile Casino is the Perfect Choice for Indian Players Seeking an Authentic Gambling Experience

PinUp Mobile Casino is quickly becoming the top choice for Indian players looking for an authentic gambling experience. Here’s why:
1. PinUp offers a wide range of casino games, including popular Indian favorites like Andar Bahar and Teen Patti.
2. The casino is fully optimized for mobile play, allowing players to access their favorite games from anywhere, at any time.
3. PinUp holds a valid Curacao gaming license, ensuring that all games are fair and transparent.
4. The casino supports popular Indian payment methods, such as UPI, Paytm, and PhonePe, making it easy for players to make deposits and withdrawals.
5. PinUp offers attractive bonuses and promotions, including a generous welcome bonus for new players.
6. The casino has a user-friendly interface, making it easy for players to navigate and find their favorite games.
7. PinUp’s customer support team is available 24/7 to assist players with any questions or concerns.
8. The casino prioritizes player safety and security, using advanced encryption technology to protect player data and transactions.

From English to Indian Rupees: How PinUp Mobile Casino Caters to the Needs of the Indian Market

From English to Indian Rupees, PinUp Mobile Casino has taken significant steps to cater to the needs of the Indian market. Firstly, the casino supports transactions in INR, making it convenient for Indian players to deposit and withdraw funds. Secondly, PinUp offers a wide range of popular Indian casino games, including Andar Bahar and Teen Patti. Thirdly, the casino accepts various Indian payment methods, such as UPI, Paytm, and PhonePe. Fourthly, PinUp Mobile Casino provides customer support in multiple languages, including Hindi.
Fifthly, the casino offers attractive bonuses and promotions tailored to Indian players, such as the Diwali Bonus. Sixthly, PinUp Mobile Casino has a user-friendly interface that supports both English and Hindi languages. Seventhly, the casino has a mobile-optimized platform, enabling Indian players to access their favorite games on-the-go. Lastly, PinUp Mobile Casino promotes responsible gaming and follows all the regulations set by the Indian government.

Experience the Thrill of PinUp Mobile Casino with Rakesh, a 28-year-old software engineer from Bangalore. Rakesh was looking for an online casino that offered a wide variety of games and was specifically tailored for Indian players. He was excited to find PinUp Mobile Casino, which offered all of that and more in English. Rakesh was particularly impressed with the user-friendly interface, which made it easy for him to navigate and find his favorite games. He also appreciated the fact that the casino offered a variety of payment options, including popular Indian methods like UPI and Paytm. Overall, Rakesh has had a great experience with PinUp Mobile Casino and highly recommends it to other Indian players looking for a top-notch online casino experience.

Another satisfied customer is Priya, a 35-year-old businesswoman from Mumbai. Priya was looking for a way to pass the time and relax after a long day at work, and she found it with PinUp Mobile Casino. She loves the fact that she can play her favorite casino games from the comfort of her own home, and that the casino is available in English, which makes it easy for her to understand and navigate. Priya has also been impressed with the customer service at PinUp Mobile Casino, which she has found to be friendly, helpful, and responsive. Overall, Priya has had a fantastic experience with PinUp Mobile Casino and plans to continue playing there for a long time to come.

Finally, there’s Raj, a 42-year-old marketing manager from Delhi. Raj was looking for an online casino that offered a wide variety of games and was specifically tailored for Indian players. He was thrilled to find PinUp Mobile Casino, which offered all of that and more in English. Raj has been particularly impressed with the quality of the games at PinUp Mobile Casino, which he has found to be both engaging and visually stunning. He also appreciates the fact that the casino offers a variety of bonuses and promotions, which have helped him to boost his winnings and extend his playing time. Overall, Raj has had an amazing experience with PinUp Mobile Casino and highly recommends it to other Indian players looking for a top-notch online casino experience.

Are you ready to experience the excitement of a real casino from the comfort of your home? PinUp Mobile Casino offers a thrilling gaming experience, fully available in English and tailored for Indian players.

Wondering how to get started? It’s easy! Simply create an account, make a deposit in your preferred currency, and choose from a wide variety of casino games, including slots, roulette, blackjack, and more.

Not sure if PinUp Mobile Casino is right for you? With its user-friendly interface, secure payment options, and 24/7 customer support, you can trust that you’re in good hands.

So what are you waiting for? Experience the thrill of PinUp Mobile Casino today and discover why it’s the go-to destination for online gaming in India!

Design and Develop by Ovatheme