var mrooms = null;
var mroom = null;
var oldm = null;
var newm = null;
var mtext = null;
var results = null;
var added_users_1 = null;
var added_users_1_2 = null;
var input_add_search = null;
var add_results = null;
var add_results_2 = null;
var obscure = null;
var text2 = null;
var current_room_name = null;
var current_room_settings = null;
var author_settings = null;
var normal_settings = null;
var room_settings = null;
var mains = null;
var sections = null;
var mmrooms = null;
var mmmessages = null;
var add_tabs = null;
var add_controls = null;
var choose_modes = null;
var added_users_2 = null;
var current_container = null;
var current_settings_state = 0;
var socket = null;
var user = '';
var nuser = '';
var key = '';
var croom = {name: '', author: ''};
var croomname = '';
var cmode = 0;
var did_i_add_users = 0;
var rooms = [];
var room_counts = [];
var lasts = {};
var fixed_oldm = -1;
window.onload = function() {
mrooms = document.getElementById('rooms');
mroom = document.getElementById('room');
oldm = document.getElementById('oldm');
newm = document.getElementById('newm');
mtext = document.getElementById('text');
results = document.getElementById('results');
added_users_1 = document.getElementById('added_users');
added_users_1_2 = document.getElementById('added_users_2');
add_results = document.getElementById('add_results');
add_results_2 = document.getElementById('add_results_2');
input_add_search = document.getElementById('input_add_search');
obscure = document.getElementById('obscure');
text2 = document.getElementById('text2');
current_room_name = document.getElementById('current_room_name');
current_room_settings = document.getElementById('current_room_settings');
author_settings = document.getElementById('author_settings');
normal_settings = document.getElementById('normal_settings');
room_settings = document.getElementById('room_settings');
mains = document.getElementsByClassName('main');
sections = document.getElementsByClassName('section');
mmrooms = document.getElementsByClassName('room');
add_tabs = document.getElementsByClassName('add_tab');
add_controls = document.getElementsByClassName('add_control');
choose_modes = document.getElementsByClassName('choose_mode');
added_users_2 = document.getElementsByClassName('added_user');
current_container = mrooms;
user = document.getElementById('user').innerHTML;
//nuser = CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(user));
nuser = toUtf8(user);
hash = document.getElementById('hash').innerHTML;
key = document.getElementById('key').innerHTML;
mroom.style.display = 'none';
for(i = 0; i < mmrooms.length; i++) {
var data_name = mmrooms[i].getAttribute('data-name');
rooms.push(data_name);
var val = -1;
try {
val = parseInt(mmrooms[i].getElementsByClassName('unseen')[0].getAttribute('data-seen'));
} catch(ex) {
val = 0;
}
lasts[data_name] = val;
}
try {
Android.tellmecreds(user, hash);
} catch(err) {
}
mlogin();
}
function omessage(message) {
console.log(message);
var msgs = document.getElementsByClassName('message');
var author_elem = '';
var time_elem = '
';
if(croom.name.split(',').length >= 3) {
if(msgs.length != 0) {
if(msgs[msgs.length - 1].getAttribute('data-user') != message.user) {
author_elem = '
' + toUtf8(message.user) + '
';
}
} else {
author_elem = '
' + toUtf8(message.user) + '
';
}
}
var mtime = message.time.split(':');
mtime.pop();
if(msgs.length > 0) {
if(msgs[msgs.length - 1].getAttribute('data-time').split(' ')[0] != message.time.split(' ')[0]) {
time_elem += mtime.join(':') + '
';
} else {
time_elem += mtime.join(':').split(' ')[1] + '';
}
} else {
time_elem += mtime.join(':') + '';
}
var ctext = message.text;
try {
do {
ctext = ctext.replace('<', '<').replace('>', '>');
} while(ctext.indexOf('<') != -1 || ctext.indexOf('>') != -1)
} catch(err) {
}
oldm.innerHTML += '' + author_elem + ctext + time_elem + '
';
oldm.scrollTop = oldm.scrollHeight;
lasts[croom.name] = message.last;
mmmessages = document.getElementsByClassName('msgcon');
}
function oreceived(received) {
console.log(received);
//var index = rooms.indexOf(received.room);
var index = -1;
for(i = 0; i < mmrooms.length; i++) {
if(mmrooms[i].getAttribute('data-name') == received.room) {
index = i;
break;
}
}
var all = received.all;
var last = (lasts[received.room] == undefined ? 0 : lasts[received.room]);
var unseen = (all - last > 0 ? '' + (all - last) + '
' : '');
if(index != -1) {
if(mmrooms[index].getElementsByClassName('unseen').length == 0) {
mmrooms[index].innerHTML += unseen;
} else {
mmrooms[index].getElementsByClassName('unseen')[0].outerHTML = unseen;
}
mmrooms[index].style.background = '#ff5151';
mrooms.insertBefore(mmrooms[index], mmrooms[0]);
} else {
mrooms.innerHTML = '' + received.display_name + '' + unseen + "
" + mrooms.innerHTML;
}
mmrooms = document.getElementsByClassName('room');
}
function oentered(room) {
croom.name = room.room;
croom.author = room.author;
croom.users = room.users;
croomname = room.roomname || croomname;
var first = added_users_1_2.innerHTML.split('')[0];
added_users_1_2.innerHTML = first;
var iusers = croom.users;
iusers.splice(iusers.indexOf(user), 1);
for(i = 0; i < iusers.length; i++) {
add_user_2(toUtf8(iusers[i]));
}
if(croom.name.split(',').length > 2) {
current_room_settings.style.display = 'block';
} else {
current_room_settings.style.display = 'none';
}
oldm.innerHTML = '';
var lastuser = '';
for(i = 0; i < room.messages.length; i++) {
var ctext = room.messages[i].text;
do {
ctext = ctext.replace('<', '<').replace('>', '>');
} while(ctext.indexOf('<') != -1 || ctext.indexOf('>') != -1);
var time_elem = '';
var mtime = room.messages[i].time.split(':');
mtime.pop();
if(i > 0) {
if(room.messages[i - 1].time.split(' ')[0] != room.messages[i].time.split(' ')[0]) {
time_elem += mtime.join(':') + '
';
} else {
time_elem += mtime.join(':').split(' ')[1] + '';
}
} else {
time_elem += mtime.join(':') + '';
}
oldm.innerHTML += '' + (croom.name.split(',').length > 2 && lastuser != room.messages[i].user ? '
' + toUtf8(room.messages[i].user) + '
' : '') + ctext + time_elem + '
';
lastuser = room.messages[i].user;
}
mmmessages = document.getElementsByClassName('msgcon');
lasts[croom.name] = mmmessages.length;
current_room_name.innerHTML = croomname;
mroom.style.display = 'block';
current_container.style.zIndex = '';
mroom.style.zIndex = '10000';
current_container = mroom;
var room_elem = null;
for(i = 0; i < mmrooms.length; i++) {
if(mmrooms[i].getAttribute('data-name') == croom.name) {
room_elem = mmrooms[i];
break;
}
}
try {
room_elem.getElementsByClassName('unseen')[0].remove();
} catch(ex) {
}
room_elem.style.background = 'thistle';
var potential = oldm.scrollHeight - oldm.getBoundingClientRect().height;
if(potential > 0) {
oldm.scrollTop = potential;
}
}
function ocreated(c) {
console.log(c);
mrooms.innerHTML = '' + c.display_name + "
" + mrooms.innerHTML;
switch_sections(0, sections[0]);
lasts[c.room] = byfm;
}
function ofailed_created(f_c) {
console.log(f_c.message);
show_message(f_c.message);
}
function oleft(room) {
console.log(room);
croom.name = '';
croom.author = '';
croom.users = room.users;
croomname = '';
lasts[room] = mmmessages.length;
switch_section(0, sections[0]);
/*mroom.style.display = 'none';
current_room_name.innerHTML = '';
current_room_settings.style.display = 'none';
author_settings.style.display = 'none';
normal_settings.style.display = 'none';
current_container.style.zIndex = '';
mrooms.style.zIndex = '10000';
current_container = mrooms;*/
}
function oleft_permanently(room) {
document.querySelector('[data-name="' + room + '"]').remove();
}
function osearch(search) {
window[search.callback](search);
}
function enter_room(room) {
menter_room(room);
croomname = elem.getElementsByClassName('pure_name')[0].innerHTML;
}
function message(text) {
mmessage(text);
mtext.value = '';
mtext.style.heigth = '7vh';
try {
console.log(mmrooms[0].getAttribute('data-name') + ' : ' + croom.name);
if(mmrooms[0].getAttribute('data-name') != croom.name) {
mrooms.insertBefore(document.querySelector('[data-name="' + croom.name + '"]'), mmrooms[0]);
}
} catch(ex) {
}
}
function create_group() {
var name = document.getElementById('input_group_name').value;
var mode = cmode;
var user_elems = added_users_1.getElementsByClassName('added_user');
mcreate_group(name, mode, user_elems);
}
function update_group() {
var users = added_users_1_2.getElementsByClassName('added_user');
mupdate_group(users);
}
function logout() {
mlogout();
window.location = '/?s_login';
Android.removecreds();
}
function reload() {
mreload();
window.location.reload();
}
function normal_search(search) {
results.innerHTML = '';
for(i = 0; i < search.chosen.length; i++) {
results.innerHTML += '' + search.chosen[i] + '
';
}
}
function add_search(search) {
add_results.innerHTML = '';
var count = 0;
for(i = 0; i < search.chosen.length; i++) {
add_results.innerHTML += '' + search.chosen[i] + '
';
++count;
}
if(count == 0) {
add_results.innerHTML = 'No users found.'
}
}
function add_search_2(search) {
add_results_2.innerHTML = '';
var count = 0;
for(i = 0; i < search.chosen.length; i++) {
add_results_2.innerHTML += '' + search.chosen[i] + '
';
++count;
}
if(count == 0) {
add_results_2.innerHTML = 'No users found.'
}
}
function switch_section(which, elem) {
for(i = 0; i < mains.length; i++) {
mains[i].style.display = 'none';
}
current_container.style.zIndex = '';
mains[which].style.display = 'block';
mains[which].style.zIndex = '10000';
close_room_settings();
current_container = mains[which];
for(i = 0; i < sections.length; i++) {
sections[i].style.background = '';
}
elem.style.background = 'rgb(60, 60, 60)';
}
function switch_add_tab(which, elem) {
for(i = 0; i < add_tabs.length; i++) {
add_tabs[i].style.display = 'none';
}
current_container.style.zIndex = '';
add_tabs[which].style.display = 'block';
add_tabs[which].style.zIndex = '10000';
current_container = add_tabs[which];
for(i = 0; i < add_controls.length; i++) {
add_controls[i].style.background = '';
}
elem.style.background = 'rgb(60, 60, 60)';
}
function change_mode(mode) {
if(mode != cmode) {
choose_modes[cmode].style.background = 'gray';
choose_modes[mode].style.background = '#7cff7c';
document.getElementById('text_participants').innerHTML = (mode == 0 ? 'Add participants' : 'Exclude users');
added_users_1.innerHTML = (mode == 0 ? '' + nuser + '
' : 'No users excluded.');
cmode = mode;
did_i_add_users = 0;
}
}
function add_user(user) {
if(added_users_1.innerHTML.indexOf('>' + user + '<') == -1) {
var toadd = '';
if(cmode == 1) {
if(did_i_add_users == 0) {
added_users_1.innerHTML = toadd;
} else {
added_users_1.innerHTML += toadd;
}
} else if(cmode == 0) {
added_users_1.innerHTML += toadd;
}
input_add_search.value = '';
add_results.innerHTML = 'No users found.';
did_i_add_users = 1;
}
}
function add_user_2(user) {
if(added_users_1_2.innerHTML.indexOf('>' + user + '<') == -1) {
var toadd = '';
if(cmode == 1) {
if(did_i_add_users == 0) {
added_users_1_2.innerHTML = toadd;
} else {
added_users_1_2.innerHTML += toadd;
}
} else if(cmode == 0) {
added_users_1_2.innerHTML += toadd;
}
input_add_search.value = '';
add_results_2.innerHTML = 'No users found.';
did_i_add_users = 1;
}
}
function remove_user(elem) {
elem.parentElement.outerHTML = '';
if(added_users_1.innerHTML == '') {
did_i_add_users = 0;
added_users_1.innerHTML = 'No users excluded.';
}
}
function remove_user_2(elem) {
elem.parentElement.outerHTML = '';
if(added_users_1_2.innerHTML == '') {
did_i_add_users = 0;
added_users_1_2.innerHTML = 'No users excluded.';
}
}
function show_message(text) {
obscure.style.display = 'block';
text2.style.display = '';
text2.getElementsByTagName('h2')[0].innerHTML = text;
}
function hide_message() {
obscure.style.display = 'none';
text2.style.display = 'none';
}
function open_room_settings() {
room_settings.style.display = 'block';
room_settings.style.zIndex = '10000';
if(croom.author == user) {
author_settings.style.display = 'block';
} else {
normal_settings.style.display = 'block';
}
current_room_settings.style.backgroundColor = 'rgb(142, 140, 124)';
current_settings_state = 1;
}
function close_room_settings() {
room_settings.style.display = 'none';
room_settings.style.zIndex = '';
author_settings.style.display = 'none';
normal_settings.style.display = 'none';
current_room_settings.style.backgroundColor = '';
current_settings_state = 0;
}
function toBase64(string) {
return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(string));
}
function toUtf8(string) {
return CryptoJS.enc.Base64.parse(string).toString(CryptoJS.enc.Utf8);
}
function nameless_2(i) { // Resizes on input
newm.style.bottom = (i != 0 ? 'calc(' + i + 'px - 6vh)' : '0');
// NICHT BENÜTZEN: das ist ein Monument meiner Torheit. Unten richtig ↓ // var old = oldm.scrollHeight / (oldm.scrollTop + Math.round(oldm.getBoundingClientRect().height));
var old = oldm.scrollTop / (oldm.scrollHeight - oldm.getBoundingClientRect().height);
fixed_oldm = (i != 0 ? 'calc(77vh - ' + i + 'px - 6vh)' : -1);
oldm.style.height = (fixed_oldm != -1 ? fixed_oldm : '');
// NICHT BENÜTZEN: das ist ein Monument meiner Torheit. Unten richtig ↓ // oldm.scrollTop = (oldm.scrollHeight - Math.round(oldm.getBoundingClientRect().height)) * old;
oldm.scrollTop = (oldm.scrollHeight - oldm.getBoundingClientRect().height) * old;
//Android.showToast(oldm.style.height);
}
function adapt_size(elem) {
elem.style.height = (elem.scrollHeight < (window.innerHeight / 2) ? elem.scrollHeight + 'px' : (window.innerHeight / 2) + 'px');
document.getElementById('oldm').style.height = 'calc(84vh - ' + (elem.scrollHeight + fixed_oldm) + 'px)';
}
function hold_size() {
if(fixed_oldm != -1) {
oldm.style.height = fixed_oldm;
}
}
function caniexit() {
if(croom.name != '') {
leave_room();
} else {
Android.exitapp();
}
}