if (location.protocol != 'https:') { var protoc = 'http:'; } else { var protoc = 'https:'; } var $ = jQuery; var host = 'chat.siakapkeli.my'; var room = window.location.hostname+window.location.pathname; console.log('room is: '+room); var chatid; var totalcomment = 0; var nameHasChanged = false; loadcss(protoc+'//'+host+'/style5.css'); function loadEvent() { socket.on('total',function(data){ $('#chat_total').html(data); }); socket.on('message',function(data){ var senderid = data.from; var name = data.nickname; var message = data.message; if (senderid == chatid) { var from = 'me'; } else { var from = 'other'; } let scrollMark = autoscroll(); $('#livechat').append("
"+name+": "+message+"
"); if(scrollMark == true) { $('#livechatcontainer').scrollTop($("#livechatcontainer").prop("scrollHeight")-$("#livechatcontainer").height()); scrollMark = false; } viewallbutton(); }); socket.on('history',function(data){ var current = Object.keys(data).length; for (i = 1; i <= current; i++) { var senderid = data[i].sender.chat_id; var name = data[i].sender.name; var message = data[i].message; if (senderid == chatid) { var from = 'me'; } else { var from = 'other'; } $('#livechat').append("
"+name+": "+message+"
"); } viewallbutton(); }) socket.on('name',function(name){ $('[withinsession][chatid="'+name.chatid+'"] .chat-name').html(name.name); }); socket.on('disconnect',function() { console.log('disconnected'); $('#disconnected').show(); }); socket.on('connect', function () { console.log('connected') loadChat(); }); } if ((window.location.pathname.split('/').length == 6) && (jQuery(window).width() <= 579)) { var socket = io.connect(protoc+'//'+host); loadEvent(); function loadChat() { socket.emit('register',function(confirmation) { if (confirmation) { chatid = confirmation.chatid; nameHasChanged = confirmation.changeName; socket.emit('join',room); $('#skchat').remove(); var backdrop = ''; var namelabel = ''; var nameerror = '' var nameeditor = ''; var namebuttonok = ''; var namebuttoncancel = ''; var namebuttonholder = '
'+namebuttonok+namebuttoncancel+'
'; var nameholder = ''; var changename = nameholder; var disconnected = '
' var livechatholder = '
'; var viewallbutton = '
Lihat semua ()
' var livechattopcontainer = '
Tutup
'; var livechatcontainer = "
"+viewallbutton+livechatholder+"
"; var counter = '0'; var chatnamebutton = ''; var chatsend = ''; var chatbox = ''; var chaticon = ""+counter+"" var container = "
"+backdrop+changename+"
"+chaticon+"
"+chatbox+"
"+chatsend+"
"+chatnamebutton+"
"+livechattopcontainer+livechatcontainer+disconnected+"
"; $('body').append(container); $('#chatform').submit(function(event) { if ($('#chateditor').val() != '') { if (nameHasChanged == true) { var message = $('#chateditor').val(); $('#chateditor').val(''); socket.emit('message',{room: room, message: message}); } else { opennamedialog(); } } event.preventDefault(); }); $('#nameform').submit(function(event) { let val = $('#nameeditor').val(); val = val.replace(/ +(?= )/g,''); val = val.trim(); if ((validateName(val) == true) && (val != '')) { $('#nameeditor').val(''); socket.emit('name',val); closenamedialog(); nameHasChanged = true; } else { $('#nameerror').show(); } event.preventDefault(); }); $('#namebutton').click(function() { opennamedialog(); }); $('#cancelname').click(function(){ closenamedialog(); }) $('#viewallbutton').click(function(){ $('#livechatcontainer').addClass('viewall'); $('#livechattopcontainer').addClass('viewall'); $('#livechatcontainer').scrollTop($("#livechatcontainer").prop("scrollHeight")-$("#livechatcontainer").height()); }) $('#closebutton').click(function(){ $('#livechatcontainer').removeClass('viewall'); $('#livechattopcontainer').removeClass('viewall'); }) } }); } function viewallbutton() { let total = $('#livechat>div').length; if (total > 2) { let posTop = $('#livechatholder').height()-5; let posLeft = $('#livechat div:nth-last-child(2)').position().left+3; $('#viewallbutton').css('bottom',posTop).css('left',posLeft).addClass('show'); $('#livechatcontainer #totalcomment').text(total); } } function opennamedialog() { $('#nameerror').hide(); $('#skchatbackdrop').show(); $('#newname').show(); $("#nameeditor").focus(); } function closenamedialog() { $('#skchatbackdrop').hide(); $('#newname').hide(); $('#nameeditor').blur(); } function autoscroll() { if ($('#livechatcontainer').hasClass('viewall')) { let scroll = $('#livechatcontainer').scrollTop(); let maxscroll = ($("#livechatcontainer").prop("scrollHeight")-$("#livechatcontainer").height()); if ($('#livechatcontainer').scrollTop()==$("#livechatcontainer").prop("scrollHeight")-$("#livechatcontainer").height()) { return true; } } } $(window).on("focus", function(e) { if (socket.connected == false) { socket.disconnect(); console.log('connecting after diconnect'); socket = io.connect(protoc+'//'+host); loadEvent(); } }); function validateName(val){ var reg = /^[A-Za-z\d\s]+$/; return reg.test(val); } } jQuery.loadScript = function (url, callback) { jQuery.ajax({ url: url, dataType: 'script', success: callback, async: true, xhrFields: { withCredentials: true }, beforeSend: function (request) { request.withCredentials = true; request.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); request.setRequestHeader("Access-Control-Allow-Origin", "https://siakapkeli.my"); }, crossDomain: true, }); }; function loadcss(url) { var head = document.getElementsByTagName('head')[0], link = document.createElement('link'); link.type = 'text/css'; link.rel = 'stylesheet'; link.href = url; head.appendChild(link); return link; }