1(function($){'use strict';var GLOBAL=window.PRCHAT_APP||(window.PRCHAT_APP={pollId:null,initedOnce:!1});var LS={USERNAME:'prchat_username',PRIVACY:'prchat_privacy',YOB:'prchat_yob'};function lsGet(key,def){try{var v=localStorage.getItem(key);return(v==null)?def:v}catch(e){return def}} 2function lsSet(key,val){try{localStorage.setItem(key,val)}catch(e){}} 3function lsDel(key){try{localStorage.removeItem(key)}catch(e){}} 4function nowYear(){return(new Date()).getFullYear()} 5function renderMessage(m){var time=new Date(m.t*1000).toLocaleTimeString();return'<div class="prchat-rowmsg" data-id="'+m.id+'">'+'<span class="prchat-time">['+time+']</span> '+'<span class="prchat-user">'+m.u+':</span> '+'<span class="prchat-text">'+m.m+'</span>'+'</div>'} 6function getState($wrap){var st=$wrap.data('prchatState');if(!st){st={lastId:0,busy:!1,unlocked:!PRCHAT.agegate,yob:null,initialized:!1};$wrap.data('prchatState',st)} 7return st} 8function scope($wrap,sel){return $wrap.find(sel)} 9function buildEmojiPicker($wrap){var $pop=scope($wrap,'#prchat-emoji-pop');if(!$pop.length)return;var list=(window.PRCHAT&&PRCHAT.emojis)||[];var html='<div class="prchat-emoji-grid">';for(var i=0;i<list.length;i++){var e=list[i];html+='<button type="button" class="prchat-emoji-item" data-emoji="'+e+'">'+e+'</button>'} 10html+='</div>';$pop.html(html)} 11function buildYOB($wrap){if(!PRCHAT.agegate)return;var $sel=scope($wrap,'#prchat-yob');if(!$sel.length)return;if($sel.children('option').length===0){$sel.append('<option value="">'+PRCHAT.strings.yob+'</option>');var yMax=PRCHAT.yMax||nowYear();var yMin=PRCHAT.yMin||1900;for(var y=yMax;y>=yMin;y--)$sel.append('<option value="'+y+'">'+y+'</option>');}} 12function prefillFromLocal($wrap){var st=getState($wrap);var u=lsGet(LS.USERNAME,'');if(u)scope($wrap,'#prchat-username').val(u);var pv=lsGet(LS.PRIVACY,'');if(pv==='1')scope($wrap,'#prchat-privacy').prop('checked',!0);var yob=lsGet(LS.YOB,'');if(yob){scope($wrap,'#prchat-yob').val(yob);st.yob=yob;if(PRCHAT.agegate){var age=nowYear()-parseInt(yob,10);if(PRCHAT.minAge&&age>=PRCHAT.minAge){st.unlocked=!0;$wrap.removeClass('prchat-locked');scope($wrap,'#prchat-agegate').remove()}}}} 13function insertAtCursor($input,text){var el=$input.get(0);if(!el)return;el.focus();if(typeof el.selectionStart==='number'){var start=el.selectionStart,end=el.selectionEnd;var val=el.value;el.value=val.slice(0,start)+text+val.slice(end);el.selectionStart=el.selectionEnd=start+text.length}else{el.value+=text} 14$input.trigger('input')} 15function lockUsername($wrap){var $u=scope($wrap,'#prchat-username');if($u.length&&!$u.prop('disabled')){$u.prop('disabled',!0).attr('title','Username locked for this session')}} 16function loadMessages($wrap){var st=getState($wrap);if(PRCHAT.agegate&&!st.unlocked)return;if(st.busy)return;var $body=scope($wrap,'#prchat-body');if(!$body.length)return;st.busy=!0;$.post(PRCHAT.ajax,{action:'prchat_get',nonce:PRCHAT.nonce,since:st.lastId},function(resp){if(resp&&resp.success&&resp.data&&resp.data.messages){resp.data.messages.forEach(function(m){$body.append(renderMessage(m));st.lastId=Math.max(st.lastId,m.id)});if(resp.data.messages&&resp.data.messages.length){$body.scrollTop($body[0].scrollHeight)}}}).always(function(){st.busy=!1})} 17function sendMessage($wrap,u,m,pv,hp){var st=getState($wrap);return $.post(PRCHAT.ajax,{action:'prchat_post',nonce:PRCHAT.nonce,u:u,m:m,pv:pv?'1':'0',hp:hp||'',yob:st.yob||''})} 18function initInstance($wrap){var st=getState($wrap);if(st.initialized)return;buildEmojiPicker($wrap);buildYOB($wrap);prefillFromLocal($wrap);if(st.unlocked)loadMessages($wrap);st.initialized=!0;$wrap.attr('data-prchat-initialized','true')} 19function initAll(){$('.prchat-wrap').each(function(){initInstance($(this))})} 20function bindDelegatedEvents(){if(GLOBAL.initedOnce)return;GLOBAL.initedOnce=!0;$(document).on('click','#prchat-unlock',function(){var $wrap=$(this).closest('.prchat-wrap');var st=getState($wrap);var $yob=scope($wrap,'#prchat-yob');var yob=$yob.val();if(!yob){alert(PRCHAT.strings.yob);return} 21st.yob=yob;lsSet(LS.YOB,yob);var age=nowYear()-parseInt(yob,10);if(PRCHAT.minAge&&age<PRCHAT.minAge){alert(PRCHAT.strings.age);return} 22st.unlocked=!0;$wrap.removeClass('prchat-locked');scope($wrap,'#prchat-agegate').remove();loadMessages($wrap)});$(document).on('click','#prchat-emoji-btn',function(e){e.preventDefault();var $wrap=$(this).closest('.prchat-wrap');var $pop=scope($wrap,'#prchat-emoji-pop');var isOpen=!$pop.attr('hidden');if(isOpen){$pop.attr('hidden',!0);$(this).attr('aria-expanded','false')}else{$pop.attr('hidden',!1);$(this).attr('aria-expanded','true')}});$(document).on('click',function(e){var $t=$(e.target);if(!$t.closest('#prchat-emoji-pop').length&&!$t.closest('#prchat-emoji-btn').length){$('.prchat-emoji-pop').attr('hidden',!0);$('#prchat-emoji-btn').attr('aria-expanded','false')}});$(document).on('click','.prchat-emoji-item',function(){var $wrap=$(this).closest('.prchat-wrap');var $input=scope($wrap,'#prchat-message');insertAtCursor($input,$(this).data('emoji'))});$(document).on('input','#prchat-username',function(){lsSet(LS.USERNAME,$.trim($(this).val()))});$(document).on('change','#prchat-privacy',function(){lsSet(LS.PRIVACY,$(this).is(':checked')?'1':'0')});$(document).on('change','#prchat-yob',function(){lsSet(LS.YOB,$(this).val()||'')});$(document).on('submit','#prchat-form',function(e){e.preventDefault();var $wrap=$(this).closest('.prchat-wrap');var st=getState($wrap);if(PRCHAT.agegate&&!st.unlocked){alert(PRCHAT.strings.unlock);return} 23var $u=scope($wrap,'#prchat-username');var $m=scope($wrap,'#prchat-message');var $pv=scope($wrap,'#prchat-privacy');var $hp=scope($wrap,'#prchat_hp');var u=$.trim($u.val());var m=$.trim($m.val());var pv=$pv.is(':checked');var hp=$hp.val();if(!u||!m||!pv){alert(PRCHAT.strings.required);return} 24lsSet(LS.USERNAME,u);lsSet(LS.PRIVACY,pv?'1':'0');var $btn=$(this).find('.prchat-btn').prop('disabled',!0);sendMessage($wrap,u,m,pv,hp).done(function(resp){if(resp&&resp.success&&resp.data&&resp.data.message){var $body=scope($wrap,'#prchat-body');var msg=resp.data.message;$body.append(renderMessage(msg));st.lastId=Math.max(st.lastId,msg.id);$m.val('');$body.scrollTop($body[0].scrollHeight);lockUsername($wrap)}else if(resp&&resp.data&&resp.data.error==='rate'){alert(PRCHAT.strings.rate)}else if(resp&&resp.data&&resp.data.error==='age'){alert(PRCHAT.strings.age)}}).fail(function(xhr){if(xhr&&xhr.responseJSON){var err=xhr.responseJSON.data&&xhr.responseJSON.data.error;if(err==='banned')alert(PRCHAT.strings.banned);else if(err==='rate')alert(PRCHAT.strings.rate);else if(err==='age')alert(PRCHAT.strings.age);}}).always(function(){$btn.prop('disabled',!1)})})} 25function ensurePolling(){if(GLOBAL.pollId)return;GLOBAL.pollId=setInterval(function(){$('.prchat-wrap').each(function(){var $wrap=$(this);var st=getState($wrap);if(!st.initialized)return;loadMessages($wrap)})},4000)} 26function boot(){bindDelegatedEvents();initAll();ensurePolling()} 27$(function(){boot()});$(window).on('qtAjaxpageLoadEnd',function(){boot()});try{var obs=new MutationObserver(function(){boot()});obs.observe(document.body,{childList:!0,subtree:!0})}catch(e){}})(jQuery)
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.