document.write('\\\\\
",
"(lol)":"
",
"(love)":"
",
"(sorry)":"
",
"(why)":"
",
":D":"
",
";(":"
",
";)":"
",
":)":"
"
};
this.parseSmileys = function(text) {
for (var symbol in this.smileys) {
var image = this.smileys[symbol];
text = text.replaceAll(symbol,image);
}
return text;
};
this.stripHTML = function(html) {
var div = document.createElement("div");
div.innerHTML = html;
return div.textContent || div.innerText || "";
};
this.clearChat = function() {
$("#shoutChat").html("");
};
this.refreshChat = function() {
this.clearChat();
var that = this;
$.post('https://www.shoutbox.com/chat/ajax.php',{a:'getLastMessages', id:that.myUser.room},function(data) {
var messages = JSON.parse(data);
//console.log(messages.length);
for (var i=messages.length-1;i>=0;i--) {
var message = messages[i];
that.receiveText(message.username , message.message, message.date,0,message.avatar,message.ip, message.id);
}
});
};
this.getLastMessages = function() {
var that = this;
$.post('https://www.shoutbox.com/chat/ajax.php',{a:'getLastMessages', id:that.myUser.room},function(data) {
var messages = JSON.parse(data);
//console.log(messages.length);
for (var i=messages.length-1;i>=0;i--) {
var message = messages[i];
that.receiveText(message.username , message.message, message.date, 0, message.avatar, message.ip, message.id);
}
if (that.myUser.username!=='') {
that.welcome();
}
});
};
function keyPressedFunction(e){
//console.log("keyPressed");
if (!e) {
e = window.event;
}
var keyCode = e.keyCode || e.which;
if (keyCode == '13'){
this.sendText();
}
}
this.sendText = function() {
var texte = $('#shoutBoxInput').val();
texte = this.stripHTML(texte);
if (texte==='') {
return;
}
// enter username
if (this.enteringAdminPassword) {
this.enteringAdminPassword = false;
this.shoutboxSocket.emit("checkPassword", texte);
$("#shoutBoxInput").removeClass("adminShoutBoxInput");
$('#shoutBoxInput').val('');
$('#shoutBoxInput').get(0).type = 'text';
$('#shoutBoxInput').attr("placeholder", that.traductions.enterYourTextHere);
return;
}
if (this.myUser.username==='') {
this.myUser.username = texte;
$('#shoutBoxInput').val("");
that.welcome();
that.shoutboxSocket.emit('changeUser', that.myUser);
return;
}
$('#shoutBoxInput').val("");
this.shoutboxSocket.emit("send", this.myUser, texte);
};
this.welcome = function() {
$('#shoutBoxInput').attr("placeholder", that.traductions.enterYourTextHere);
localStorage.setItem("username", this.myUser.username);
this.serverMessage(sprintf(that.traductions.welcome, this.myUser.username));
$("#shoutBoxInput").removeClass("shoutInputRed");
localStorage.setItem('username', this.myUser.username);
};
this.serverMessage = function(texte) {
$("#shoutChat").append(sprintf(that.traductions.serverMessage, texte));
$("#shoutChat").animate({ scrollTop: $("#shoutChat")[0].scrollHeight}, 1000);
};
this.receiveText = function(username, message, date, scrollTimer, avatar, ip, id) {
message = that.parseSmileys(message);
if (avatar!=="") {
avatar = sprintf(that.traductions.imageAvatar, avatar);
}
if (date!=='') {
date="("+date+")";
}
var text = sprintf(that.traductions.receivedText, id, ip, avatar, date, username, message);
//console.log(text);
$("#shoutChat").animate({ scrollTop: $("#shoutChat")[0].scrollHeight}, scrollTimer);
$(text).hide().appendTo("#shoutChat").fadeIn(2000);
};
this.addUser = function(user) {
if (user.username==='') {
user.username='Guest';
}
this.updateNumberUsersDisplay();
var avatar = user.avatar;
if (avatar!=='') {
var image = user.avatar || 'avatars/' + Math.ceil(Math.random()*29) + '.svg';
avatar = sprintf(that.traductions.imageAvatar, image);
}
var txt = sprintf(that.traductions.addUser, user.id, user.id, avatar, user.username);
//console.log(user);
//console.log("shoutBoxUserList"+txt);
$("#shoutBoxUserList").append(txt);
};
//******************************************* init ********************************************
document.getElementById('shoutBoxInput').addEventListener("keypress", keyPressedFunction.bind(this), false);
this.getLastMessages();
this.users = [];
this.shoutboxSocket = io.connect(server+":1400");
this.shoutboxSocket.on('connect', function() {
var username = localStorage.getItem('username');
if(username) {
that.myUser.username = username;
}
that.shoutboxSocket.emit('enterRoom', that.myUser);
});
this.shoutboxSocket.on('roomEntered', function () {
var username = localStorage.getItem('username');
if (username) {
that.welcome();
}
});
this.shoutboxSocket.on('del', function (id) {
$('*[data-id='+id+']').remove();
});
this.shoutboxSocket.on('ban', function (ip) {
$('*[data-ip='+ip+']').remove();
});
this.shoutboxSocket.on('receiveText', function (user, message, ip, id) {
that.receiveText(user.username, message , "",200,user.avatar, ip, id);
var snd = new Audio(that.traductions.mp3);
snd.play();
});
this.setAdminMode = function(password) {
this.myUser.password = password;
that.serverMessage(that.traductions.youAreAdminNow);
$("#shoutBoxAdminImage").toggle();
};
$( ".shoutBoxContainer").on( "click", ".shoutboxBanBtn", function() {
var ip = ($(this).parent().data("ip"));
that.shoutboxSocket.emit("ban", ip);
});
$( ".shoutBoxContainer").on( "click", ".shoutboxDelBtn", function() {
var id = ($(this).parent().data("id"));
that.shoutboxSocket.emit("del", id);
});
this.shoutboxSocket.on('userChanged', function (user) {
var avatar = user.avatar;
if (avatar!=='') {
avatar = sprintf(that.traductions.imageAvatar, avatar);
}
var txt = sprintf(that.traductions.addUser, user.id, user.id, avatar, user.username);
//console.log(txt);
$("#shoutBoxUser"+user.id).html(txt);
});
this.shoutboxSocket.on('setAdminMode', function (password) {
that.setAdminMode(password);
$(".shoutboxBanBtn").css("display","block");
$(".shoutboxDelBtn").css("display","block");
});
this.shoutboxSocket.on('error', function (errorMessage) {
console.log(errorMessage);
});
this.shoutboxSocket.on('addUser', function(user) {
that.users.push(user);
that.addUser(user);
});
$(document).on('click', ".changeUsernameBtn", function() {
localStorage.clear();
that.myUser.username = '';
$("#shoutBoxInput").addClass("shoutInputRed");
$('#shoutBoxInput').val('');
$('#shoutBoxInput').attr("placeholder", 'Enter new nickname');
});
this.updateNumberUsersDisplay = function() {
var len = Object.keys(that.users).length;
var text = sprintf(that.traductions.userOnline, len);
if (that.users.length>1) {
text = sprintf(that.traductions.usersOnline, len);
}
$("#shoutBoxHeaderText").text(text);
};
this.shoutboxSocket.on('getUsers', function(usersInRoom) {
// convert to array !
//console.log("usersInRoom="+usersInRoom+ "len=" + usersInRoom.length);
that.users = usersInRoom;
that.updateNumberUsersDisplay();
//that.sortUsers();
for (var id in usersInRoom) {
that.addUser(usersInRoom[id]);
}
});
this.sortUsers = function() {
that.users.sort(function(user1, user2) {
return user1.avatar < user2.avatar;
});
};
this.shoutboxSocket.on('removeUser', function(user) {
var index = that.users.indexOf(user);
that.users.splice(index, 1);
that.updateNumberUsersDisplay();
$("#shoutBoxUser"+user.id).remove();
});
$(".shoutBoxContainer").on( "click", ".shoutBoxUserItem", function(e) {
e.stopImmediatePropagation();
var userid = ($(e.currentTarget).data("id"));
that.openPrivateChat(userid);
});
this.openPrivateChat = function(userid) {
//$("body").append("