window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.1.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.1.0\/svg\/","svgExt":".svg","source":{"wpemoji":"https:\/\/davetheravebangkok.com\/wp-includes\/js\/wp-emoji.js?ver=6.8.1","twemoji":"https:\/\/davetheravebangkok.com\/wp-includes\/js\/twemoji.js?ver=6.8.1"}};
/**
* @output wp-includes/js/wp-emoji-loader.js
*//**
* Emoji Settings as exported in PHP via _print_emoji_detection_script().
* @typedef WPEmojiSettings
* @type {object}
* @property {?object} source
* @property {?string} source.concatemoji
* @property {?string} source.twemoji
* @property {?string} source.wpemoji
* @property {?boolean} DOMReady
* @property {?Function} readyCallback
*//**
* Support tests.
* @typedef SupportTests
* @type {object}
* @property {?boolean} flag
* @property {?boolean} emoji
*//**
* IIFE to detect emoji support and load Twemoji if needed.
*
* @param {Window} window
* @param {Document} document
* @param {WPEmojiSettings} settings
*/
( function wpEmojiLoader( window, document, settings ) {
if ( typeof Promise === 'undefined' ) {
return;
}var sessionStorageKey = 'wpEmojiSettingsSupports';
var tests = [ 'flag', 'emoji' ];/**
* Checks whether the browser supports offloading to a Worker.
*
* @since 6.3.0
*
* @private
*
* @returns {boolean}
*/
function supportsWorkerOffloading() {
return (
typeof Worker !== 'undefined' &&
typeof OffscreenCanvas !== 'undefined' &&
typeof URL !== 'undefined' &&
URL.createObjectURL &&
typeof Blob !== 'undefined'
);
}/**
* @typedef SessionSupportTests
* @type {object}
* @property {number} timestamp
* @property {SupportTests} supportTests
*//**
* Get support tests from session.
*
* @since 6.3.0
*
* @private
*
* @returns {?SupportTests} Support tests, or null if not set or older than 1 week.
*/
function getSessionSupportTests() {
try {
/** @type {SessionSupportTests} */
var item = JSON.parse(
sessionStorage.getItem( sessionStorageKey )
);
if (
typeof item === 'object' &&
typeof item.timestamp === 'number' &&
new Date().valueOf() < item.timestamp + 604800 && // Note: Number is a week in seconds.
typeof item.supportTests === 'object'
) {
return item.supportTests;
}
} catch ( e ) {}
return null;
}/**
* Persist the supports in session storage.
*
* @since 6.3.0
*
* @private
*
* @param {SupportTests} supportTests Support tests.
*/
function setSessionSupportTests( supportTests ) {
try {
/** @type {SessionSupportTests} */
var item = {
supportTests: supportTests,
timestamp: new Date().valueOf()
};sessionStorage.setItem(
sessionStorageKey,
JSON.stringify( item )
);
} catch ( e ) {}
}/**
* Checks if two sets of Emoji characters render the same visually.
*
* This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing
* scope. Everything must be passed by parameters.
*
* @since 4.9.0
*
* @private
*
* @param {CanvasRenderingContext2D} context 2D Context.
* @param {string} set1 Set of Emoji to test.
* @param {string} set2 Set of Emoji to test.
*
* @return {boolean} True if the two sets render the same.
*/
function emojiSetsRenderIdentically( context, set1, set2 ) {
// Cleanup from previous test.
context.clearRect( 0, 0, context.canvas.width, context.canvas.height );
context.fillText( set1, 0, 0 );
var rendered1 = new Uint32Array(
context.getImageData(
0,
0,
context.canvas.width,
context.canvas.height
).data
);// Cleanup from previous test.
context.clearRect( 0, 0, context.canvas.width, context.canvas.height );
context.fillText( set2, 0, 0 );
var rendered2 = new Uint32Array(
context.getImageData(
0,
0,
context.canvas.width,
context.canvas.height
).data
);return rendered1.every( function ( rendered2Data, index ) {
return rendered2Data === rendered2[ index ];
} );
}/**
* Determines if the browser properly renders Emoji that Twemoji can supplement.
*
* This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing
* scope. Everything must be passed by parameters.
*
* @since 4.2.0
*
* @private
*
* @param {CanvasRenderingContext2D} context 2D Context.
* @param {string} type Whether to test for support of "flag" or "emoji".
* @param {Function} emojiSetsRenderIdentically Reference to emojiSetsRenderIdentically function, needed due to minification.
*
* @return {boolean} True if the browser can render emoji, false if it cannot.
*/
function browserSupportsEmoji( context, type, emojiSetsRenderIdentically ) {
var isIdentical;switch ( type ) {
case 'flag':
/*
* Test for Transgender flag compatibility. Added in Unicode 13.
*
* To test for support, we try to render it, and compare the rendering to how it would look if
* the browser doesn't render it correctly (white flag emoji + transgender symbol).
*/
isIdentical = emojiSetsRenderIdentically(
context,
'\uD83C\uDFF3\uFE0F\u200D\u26A7\uFE0F', // as a zero-width joiner sequence
'\uD83C\uDFF3\uFE0F\u200B\u26A7\uFE0F' // separated by a zero-width space
);if ( isIdentical ) {
return false;
}/*
* Test for UN flag compatibility. This is the least supported of the letter locale flags,
* so gives us an easy test for full support.
*
* To test for support, we try to render it, and compare the rendering to how it would look if
* the browser doesn't render it correctly ([U] + [N]).
*/
isIdentical = emojiSetsRenderIdentically(
context,
'\uD83C\uDDFA\uD83C\uDDF3', // as the sequence of two code points
'\uD83C\uDDFA\u200B\uD83C\uDDF3' // as the two code points separated by a zero-width space
);if ( isIdentical ) {
return false;
}/*
* Test for English flag compatibility. England is a country in the United Kingdom, it
* does not have a two letter locale code but rather a five letter sub-division code.
*
* To test for support, we try to render it, and compare the rendering to how it would look if
* the browser doesn't render it correctly (black flag emoji + [G] + [B] + [E] + [N] + [G]).
*/
isIdentical = emojiSetsRenderIdentically(
context,
// as the flag sequence
'\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67\uDB40\uDC7F',
// with each code point separated by a zero-width space
'\uD83C\uDFF4\u200B\uDB40\uDC67\u200B\uDB40\uDC62\u200B\uDB40\uDC65\u200B\uDB40\uDC6E\u200B\uDB40\uDC67\u200B\uDB40\uDC7F'
);return ! isIdentical;
case 'emoji':
/*
* Rise Like a Phoenix.
*
* To test for Emoji 15.1 support, try to render a new emoji: Phoenix.
*
* A phoenix, a mythical immortal bird with flame-like feathers found in the folklore of many global
* cultures. Often used to symbolize renewal or rebirth.
*
* The Phoenix emoji is a ZWJ sequence combining 🐦 Bird, Zero Width Joiner and 🔥 Fire.
* These display as a single emoji on supported platforms.
*
* 0xD83D 0xDC26 (\uD83D\uDC26) == 🐦 Bird
* 0x200D == Zero-Width Joiner (ZWJ) that links the code points for the new emoji or
* 0x200B == Zero-Width Space (ZWS) that is rendered for clients not supporting the new emoji.
* 0xD83D 0xDD25 (\uD83D\uDD25) == 🔥 Fire
*
* When updating this test for future Emoji releases, ensure that individual emoji that make up the
* sequence come from older emoji standards.
*/
isIdentical = emojiSetsRenderIdentically(
context,
'\uD83D\uDC26\u200D\uD83D\uDD25', // as the zero-width joiner sequence
'\uD83D\uDC26\u200B\uD83D\uDD25' // separated by a zero-width space
);return ! isIdentical;
}return false;
}/**
* Checks emoji support tests.
*
* This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing
* scope. Everything must be passed by parameters.
*
* @since 6.3.0
*
* @private
*
* @param {string[]} tests Tests.
* @param {Function} browserSupportsEmoji Reference to browserSupportsEmoji function, needed due to minification.
* @param {Function} emojiSetsRenderIdentically Reference to emojiSetsRenderIdentically function, needed due to minification.
*
* @return {SupportTests} Support tests.
*/
function testEmojiSupports( tests, browserSupportsEmoji, emojiSetsRenderIdentically ) {
var canvas;
if (
typeof WorkerGlobalScope !== 'undefined' &&
self instanceof WorkerGlobalScope
) {
canvas = new OffscreenCanvas( 300, 150 ); // Dimensions are default for HTMLCanvasElement.
} else {
canvas = document.createElement( 'canvas' );
}var context = canvas.getContext( '2d', { willReadFrequently: true } );/*
* Chrome on OS X added native emoji rendering in M41. Unfortunately,
* it doesn't work when the font is bolder than 500 weight. So, we
* check for bold rendering support to avoid invisible emoji in Chrome.
*/
context.textBaseline = 'top';
context.font = '600 32px Arial';var supports = {};
tests.forEach( function ( test ) {
supports[ test ] = browserSupportsEmoji( context, test, emojiSetsRenderIdentically );
} );
return supports;
}/**
* Adds a script to the head of the document.
*
* @ignore
*
* @since 4.2.0
*
* @param {string} src The url where the script is located.
*
* @return {void}
*/
function addScript( src ) {
var script = document.createElement( 'script' );
script.src = src;
script.defer = true;
document.head.appendChild( script );
}settings.supports = {
everything: true,
everythingExceptFlag: true
};// Create a promise for DOMContentLoaded since the worker logic may finish after the event has fired.
var domReadyPromise = new Promise( function ( resolve ) {
document.addEventListener( 'DOMContentLoaded', resolve, {
once: true
} );
} );// Obtain the emoji support from the browser, asynchronously when possible.
new Promise( function ( resolve ) {
var supportTests = getSessionSupportTests();
if ( supportTests ) {
resolve( supportTests );
return;
}if ( supportsWorkerOffloading() ) {
try {
// Note that the functions are being passed as arguments due to minification.
var workerScript =
'postMessage(' +
testEmojiSupports.toString() +
'(' +
[
JSON.stringify( tests ),
browserSupportsEmoji.toString(),
emojiSetsRenderIdentically.toString()
].join( ',' ) +
'));';
var blob = new Blob( [ workerScript ], {
type: 'text/javascript'
} );
var worker = new Worker( URL.createObjectURL( blob ), { name: 'wpTestEmojiSupports' } );
worker.onmessage = function ( event ) {
supportTests = event.data;
setSessionSupportTests( supportTests );
worker.terminate();
resolve( supportTests );
};
return;
} catch ( e ) {}
}supportTests = testEmojiSupports( tests, browserSupportsEmoji, emojiSetsRenderIdentically );
setSessionSupportTests( supportTests );
resolve( supportTests );
} )
// Once the browser emoji support has been obtained from the session, finalize the settings.
.then( function ( supportTests ) {
/*
* Tests the browser support for flag emojis and other emojis, and adjusts the
* support settings accordingly.
*/
for ( var test in supportTests ) {
settings.supports[ test ] = supportTests[ test ];settings.supports.everything =
settings.supports.everything && settings.supports[ test ];if ( 'flag' !== test ) {
settings.supports.everythingExceptFlag =
settings.supports.everythingExceptFlag &&
settings.supports[ test ];
}
}settings.supports.everythingExceptFlag =
settings.supports.everythingExceptFlag &&
! settings.supports.flag;// Sets DOMReady to false and assigns a ready function to settings.
settings.DOMReady = false;
settings.readyCallback = function () {
settings.DOMReady = true;
};
} )
.then( function () {
return domReadyPromise;
} )
.then( function () {
// When the browser can not render everything we need to load a polyfill.
if ( ! settings.supports.everything ) {
settings.readyCallback();var src = settings.source || {};if ( src.concatemoji ) {
addScript( src.concatemoji );
} else if ( src.wpemoji && src.twemoji ) {
addScript( src.twemoji );
addScript( src.wpemoji );
}
}
} );
} )( window, document, window._wpemojiSettings );
var breeze_prefetch = {"local_url":"https:\/\/davetheravebangkok.com","ignore_remote_prefetch":"1","ignore_list":["\/wp-admin","wp-admin","wp-login.php"]};
var e = document.getElementsByTagName('body')[0];
if(e)
{
e.setAttribute('unselectable',"on");
}
var tdBlocksArray = []; //here we store all the items for the current page// td_block class - each ajax block uses a object of this class for requests
function tdBlock() {
this.id = '';
this.block_type = 1; //block type id (1-234 etc)
this.atts = '';
this.td_column_number = '';
this.td_current_page = 1; //
this.post_count = 0; //from wp
this.found_posts = 0; //from wp
this.max_num_pages = 0; //from wp
this.td_filter_value = ''; //current live filter value
this.is_ajax_running = false;
this.td_user_action = ''; // load more or infinite loader (used by the animation)
this.header_color = '';
this.ajax_pagination_infinite_stop = ''; //show load more at page x
}// td_js_generator - mini detector
( function () {
var htmlTag = document.getElementsByTagName("html")[0];if ( navigator.userAgent.indexOf("MSIE 10.0") > -1 ) {
htmlTag.className += ' ie10';
}if ( !!navigator.userAgent.match(/Trident.*rv\:11\./) ) {
htmlTag.className += ' ie11';
}if ( navigator.userAgent.indexOf("Edge") > -1 ) {
htmlTag.className += ' ieEdge';
}if ( /(iPad|iPhone|iPod)/g.test(navigator.userAgent) ) {
htmlTag.className += ' td-md-is-ios';
}var user_agent = navigator.userAgent.toLowerCase();
if ( user_agent.indexOf("android") > -1 ) {
htmlTag.className += ' td-md-is-android';
}if ( -1 !== navigator.userAgent.indexOf('Mac OS X') ) {
htmlTag.className += ' td-md-is-os-x';
}if ( /chrom(e|ium)/.test(navigator.userAgent.toLowerCase()) ) {
htmlTag.className += ' td-md-is-chrome';
}if ( -1 !== navigator.userAgent.indexOf('Firefox') ) {
htmlTag.className += ' td-md-is-firefox';
}if ( -1 !== navigator.userAgent.indexOf('Safari') && -1 === navigator.userAgent.indexOf('Chrome') ) {
htmlTag.className += ' td-md-is-safari';
}if( -1 !== navigator.userAgent.indexOf('IEMobile') ){
htmlTag.className += ' td-md-is-iemobile';
}})();var tdLocalCache = {};( function () {
"use strict";tdLocalCache = {
data: {},
remove: function (resource_id) {
delete tdLocalCache.data[resource_id];
},
exist: function (resource_id) {
return tdLocalCache.data.hasOwnProperty(resource_id) && tdLocalCache.data[resource_id] !== null;
},
get: function (resource_id) {
return tdLocalCache.data[resource_id];
},
set: function (resource_id, cachedData) {
tdLocalCache.remove(resource_id);
tdLocalCache.data[resource_id] = cachedData;
}
};
})();
var td_viewport_interval_list=[{"limitBottom":767,"sidebarWidth":251},{"limitBottom":1023,"sidebarWidth":339}];
var td_animation_stack_effect="type0";
var tds_animation_stack=true;
var td_animation_stack_specific_selectors=".entry-thumb, img, .td-lazy-img";
var td_animation_stack_general_selectors=".td-animation-stack img, .td-animation-stack .entry-thumb, .post img, .td-animation-stack .td-lazy-img";
var tds_general_modal_image="yes";
var tdc_is_installed="yes";
var td_ajax_url="https:\/\/davetheravebangkok.com\/wp-admin\/admin-ajax.php?td_theme_name=Newsmag&v=5.4.3.3";
var td_get_template_directory_uri="https:\/\/davetheravebangkok.com\/wp-content\/plugins\/td-composer\/legacy\/common";
var tds_snap_menu="smart_snap_always";
var tds_logo_on_sticky="show_header_logo";
var tds_header_style="10";
var td_please_wait="Please wait...";
var td_email_user_pass_incorrect="User or password incorrect!";
var td_email_user_incorrect="Email or username incorrect!";
var td_email_incorrect="Email incorrect!";
var td_user_incorrect="Username incorrect!";
var td_email_user_empty="Email or username empty!";
var td_pass_empty="Pass empty!";
var td_pass_pattern_incorrect="Invalid Pass Pattern!";
var td_retype_pass_incorrect="Retyped Pass incorrect!";
var tds_more_articles_on_post_enable="";
var tds_more_articles_on_post_time_to_wait="";
var tds_more_articles_on_post_pages_distance_from_top=0;
var tds_captcha="";
var tds_theme_color_site_wide="#e81202";
var tds_smart_sidebar="enabled";
var tdThemeName="Newsmag";
var tdThemeNameWl="Newsmag";
var td_magnific_popup_translation_tPrev="Previous (Left arrow key)";
var td_magnific_popup_translation_tNext="Next (Right arrow key)";
var td_magnific_popup_translation_tCounter="%curr% of %total%";
var td_magnific_popup_translation_ajax_tError="The content from %url% could not be loaded.";
var td_magnific_popup_translation_image_tError="The image #%curr% could not be loaded.";
var tdBlockNonce="412c191fd2";
var tdMobileMenu="enabled";
var tdMobileSearch="enabled";
var tdDateNamesI18n={"month_names":["January","February","March","April","May","June","July","August","September","October","November","December"],"month_names_short":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"day_names":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"day_names_short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]};
var td_deploy_mode="deploy";
var td_ad_background_click_link="";
var td_ad_background_click_target="";
In the unlikely tale of “Gateshead Teen Runaway in Pattaya,” 17-year-old Ryan White, your not-so-average adolescent adventurer from Gateshead, U.K., embarked on an unsanctioned escapade to the titillating sois of Pattaya.
Spoiler alert: He’s been found safe and is being whisked away on an expedited flight back to the watchful eyes of his doting guardians.
Teen Runaway in Pattaya
This intriguing story of a wayward teen in Pattaya and the anxious scramble of his family at home may very well serve as a lesson for other hormone-ridden youngsters considering similar antics.
Ryan initially graced the bustling city of Bangkok on May 12, where he presumably shrugged off the familiar shackles of adolescence in favor of the adrenaline-fueled thrill of the unknown.
However, unbeknownst to his family, our cherubic hero had set his sights on Pattaya, the sex capital of the world. That spicy town, of course, is known more for its risqué ’round-the-clock entertainment than its museums or cultural landmarks.
Upon realizing that their beloved minor was not, in fact, safely exploring temples in Bangkok but navigating the salacious streets of Pattaya, panic swept through his family back in Gateshead. Never underestimate the power of a desperate family, especially one equipped with the far-reaching arms of social media.
Facebook Pleas to ‘Detain’ Teen Horndog
The Whites unleashed a fervent online campaign, offering a 10,000 baht (£234) reward for the safe return of their prodigal son. Their heartfelt pleas have reverberated through cyberspace, even as they continually reminded Ryan, “Nothing you could do or say would ever change how loved you are.”
Aunt Kimberley, playing the role of the concerned matriarch, spearheaded the Facebook campaign, prompting a search and rescue worthy of a thriller movie. Her plea to detain the teen runaway, combined with a fervent appeal for information from Pattaya residents or holidaymakers, demonstrated the palpable desperation of a family on edge.
Pattaya’s reputation, as a modern-day Sodom and Gomorrah, was undoubtedly a contributing factor to the family’s distress. Their calls for help with their teen runaway in Pattaya were echoed by almost 900 online users, who shared their post in an outpouring of digital camaraderie.
Not the 1st to Go ‘Missing’ in Pattaya
A series of similar instances in recent years, particularly in Thailand and Southeast Asia, where unsuspecting travelers find themselves embroiled in unsavory scenarios, raises concerns. These narratives often involve online scams or accidental wanderings into less than reputable corners of these bustling cities.
The family’s distress over their teen runaway in Pattaya was finally alleviated when news broke that Ryan had been found safe. Now, he’s set for a swift journey back to the UK, where he’ll likely face an eager crowd of relieved family members and perhaps a couple of stern lectures on responsible travel.
A Lesson for Horny Teen Tourists
This saga of a teen runaway in Pattaya serves as a stark reminder of the potential pitfalls that await unsuspecting and ill-prepared travelers in foreign lands. It emphasizes the need for vigilance, not just for individuals but also for the broader community, in ensuring the safety of all in an increasingly interconnected world.
Our takeaway from this story about a teen runaway in Pattaya? A quick vacation in Pattaya might not be the best way for a hormone-crazed teenager to explore his freedom, as the worried Whites from Gateshead can surely attest. So, to all potential adventurers out there, remember, an exotic escapade might seem appealing, but home will always be where the heart (and sometimes the grounding) is.
Thailand’s popularity as a travel destination might make it a tempting place for teenagers to run away to, despite the potential dangers involved.
One notable case, although not a teen runaway in Pattaya, involved a British teenager named Jordan Jacobs who went missing in Thailand in 2015. After a highly-publicized search effort, he was eventually found safe on a famous tourist island, Koh Phi Phi.
// this makes it so the page does not scroll if you reach the end of scroll bar or go back to top
jQuery.fn.isolatedScrollFacebookFTS = function () {
this.bind('mousewheel DOMMouseScroll', function (e) {
var delta = e.wheelDelta || (e.originalEvent && e.originalEvent.wheelDelta) || -e.detail,
bottomOverflow = this.scrollTop + jQuery(this).outerHeight() - this.scrollHeight >= 0,
topOverflow = this.scrollTop <= 0;
if ((delta < 0 && bottomOverflow) || (delta > 0 && topOverflow)) {
e.preventDefault();
}
});
return this;
};
jQuery('.fts-instagram-scrollable').isolatedScrollFacebookFTS();
// This needs to load here below the feed to load properly for
// Elementor page preview, and also some types of tabs that use js to load.
document.addEventListener("DOMContentLoaded", function(event) {
if (typeof slickremixImageResizing === 'function') {
slickremixImageResizing();
}
if (typeof ftsShare === 'function') {
ftsShare();
}
});
var timeout_result;
function show_wpcp_message(smessage)
{
if (smessage !== "")
{
var smessage_text = '<span>Alert: </span>'+smessage;
document.getElementById("wpcp-error-message").innerHTML = smessage_text;
document.getElementById("wpcp-error-message").className = "msgmsg-box-wpcp warning-wpcp showme";
clearTimeout(timeout_result);
timeout_result = setTimeout(hide_message, 3000);
}
}
function hide_message()
{
document.getElementById("wpcp-error-message").className = "msgmsg-box-wpcp warning-wpcp hideme";
}
var impression_object = {"ajax_url":"https:\/\/davetheravebangkok.com\/wp-admin\/admin-ajax.php"};