MirkoGrief

Adds mirkoczat.pl integration

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name     MirkoGrief
// @author   Nizax
// @include  http://*mirkoczat.pl*
// @include  https://*mirkoczat.pl*
// @version  0.1
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @namespace http://mirkoczat.pl
// @description Adds mirkoczat.pl integration
// ==/UserScript==

(function() {
    'use strict';
let chat = document.getElementsByClassName( 'chat' )[0];
let chat_section = document.getElementsByClassName( 'col-xs-12 mid' )[0];
let chat_input = chat.getElementsByClassName('form-control');
let chat_monitor = chat.getElementsByTagName('div')[6];
let container = document.getElementById( 'content' );
let inputMenu = [];
let nickName;
if(window.location.pathname.slice(0,8) == '/embed_t'){
	container.style.margin = '0';
}

/*
	TODO:
		- ukośne szlaczki
*/


if(window.location.pathname.slice(0,3)=='/i/'){
	let _iframe = document.getElementsByTagName( 'iframe' )[0].src;
	if((_iframe !== undefined || '' || null) && !(_iframe.includes('mirkoczat.pl'))){
		setCookie(window.location.pathname.slice(3, window.location.pathname.length), _iframe, 999);
	};
	window.location.href='http://mirkoczat.pl/embed_t/'+window.location.pathname.slice(3,window.location.pathname.length);
}
if( window.location.protocol != 'http:' ){
	window.location.href= 'http://' + window.location.host + window.location.pathname;
}else if((window.location.pathname.slice(0,8) == '/embed_t' || window.location.pathname.slice(0,2) == '/t') && !(window.frameElement)){
	
	$(document).ready(function() { 
	//
	// PREPARACJA SKRYPTU ABY DZIAŁAŁ NA /t/ i /i/
	//
	let iframe = document.createElement( 'iframe' );
	let _channel = window.location.pathname.slice(9,window.location.pathname.length);
	let _guziczek = document.createElement( 'button' );
	let _okienko = document.createElement( 'div' );
	let _rubryka = document.createElement( 'input' );
	if(window.location.pathname.slice(0,8) == '/embed_t'){
		chat_section.style.position = 'absolute'; chat_section.style.right = '0px'; chat_section.style.height = (window.innerHeight + 30) + 'px'; chat_section.style.width = '30%';
		
		if(getCookie(_channel) != ''){
			let _ciastko = getCookie(_channel);
			if(_ciastko.includes('http:') || _ciastko.includes('https:') || _ciastko.includes('www.')){
				iframe.src = _ciastko;
			} else {
				iframe.src = 'https://www.youtube.com/embed/live_stream?channel=' + _ciastko;
			};
		} else {
			_okienko.style.margin = '0'; _okienko.style.position = 'absolute'; _okienko.style.top = '5%'; _okienko.style.width = '70%';
			
			_rubryka.style.position = 'relative'; _rubryka.style.width = '100%'; _rubryka.style.height = '4%';
			_rubryka.type = 'text'; _rubryka.placeholder = 'podaj link do KANAŁU youtube np. https://www.youtube.com/channel/UCNArdo_iHMiRBbFvFk_e--w';
			_guziczek.style.width = '100%'; _guziczek.style.color = 'black'; _guziczek.style.height = '2%';
			_guziczek.innerHTML = 'gotowe';
			
			_okienko.appendChild( _rubryka );
			_okienko.appendChild( _guziczek );
			container.prepend( _okienko );
		};
		
		iframe.style.position = 'absolute'; iframe.style.left = '0px'; iframe.style.height = (window.innerHeight + 30) + 'px'; iframe.style.width = '70%'; iframe.frameBorder = '0';
		container.prepend( iframe );
	}
	_guziczek.onclick = function(){
		let _ytchannelID;
		let _type = _rubryka.value;
		_type = _type.split('/');
		if(_type[_type.length - 1].slice(0,8) === 'watch?v='){
			_type = _type[_type.length - 1];
			_type = _type.slice(8,_type.length);
		} else if(_type[_type.length - 2] === 'youtu.be'){
			_type = _type[_type.length - 1];
		} else {
			_type = _type[_type.length - 2];
		};
		if(_type === "user"){
			let _userName = _rubryka.value.slice( _rubryka.value.lastIndexOf("/") + 1, _rubryka.value.length );
			getChannelID( _userName );
			setTimeout(function()
			{
				_ytchannelID = _getChannelIDhandler.items[0].id;
				iframe.src = "https://www.youtube.com/embed/live_stream?channel=" + _ytchannelID;
				setCookie(_channel, _ytchannelID, 999);
				_okienko.removeChild( _rubryka );
				_okienko.removeChild( _guziczek );
				container.removeChild( _okienko );
			}, 1000);
		} else if(_type === "channel"){
			_ytchannelID = _rubryka.value.slice( _rubryka.value.lastIndexOf("/") + 1, _rubryka.value.length );
			iframe.src = "https://www.youtube.com/embed/live_stream?channel=" + _ytchannelID;
			setCookie(_channel, _ytchannelID, 999);
			_okienko.removeChild( _rubryka );
			_okienko.removeChild( _guziczek );
			container.removeChild( _okienko );
		} else if(_type === undefined){ 
			alert("Niepoprawny format linku. Musisz podać link do KANAŁU np.\nhttps://www.youtube.com/channel/UCNArdo_iHMiRBbFvFk_e--w \nEWENTUALNIE \nhttps://www.youtube.com/user/Owsiaknet");
			throw new Error('[MirkoGrief] Podano zły format linku. Skrypt obsługuje tylko yt.com/channel (yt user) lub yt.com/user (google user)');
		} else {
			iframe.src = 'https://www.youtube.com/embed/' + _type;
		};
	}
	
	
	//
	// GUZIK MirkoGrief
	//
	let input_box = chat.getElementsByTagName( 'div' )[2];
	let MirkoGrief = document.createElement( 'button' );
	MirkoGrief.style.color = "#00FF00"; MirkoGrief.style.backgroundColor = "black"; MirkoGrief.style.borderRadius = "5px"; MirkoGrief.style.height = "30px"; MirkoGrief.style.border = "2px solid #d3d3d3"; MirkoGrief.style.width = "37px"; MirkoGrief.style.position = "absolute"; MirkoGrief.style.top = "3px"; MirkoGrief.style.margin = "auto"; MirkoGrief.innerHTML = "MG"; MirkoGrief.style.fontWeight = "bold"; MirkoGrief.style.fontFamily = 'Lucida Console, Monaco, monospace'; MirkoGrief.style.fontSize = '15px';
	let mirko_buttons = input_box.getElementsByTagName('button');
	input_box.style.marginRight = parseInt(input_box.style.marginRight.slice(0,input_box.style.marginRight.length-2)) + (40*mirko_buttons.length) + 'px';
	for(var i=0;i<mirko_buttons.length;i++){
		if(mirko_buttons[i].innerHTML == 'M+')
		mirko_buttons=false;
	}
	if(!mirko_buttons){
		MirkoGrief.style.right = '130px';
	} else {
		MirkoGrief.style.right = '85px';
	}
	input_box.prepend( MirkoGrief );
	let MirkoGriefTrigger = false;
	
	let menuMirko = document.createElement( 'div' );
	menuMirko.style.backgroundColor = "rgba(0,0,0,0.95)";
	menuMirko.style.position = "absolute"; menuMirko.style.width = "100%"; menuMirko.style.border = "2px solid #d3d3d3";
	menuMirko.style.color = "#00cc00"; menuMirko.style.marginRight = "-130px";
	chat.style.pointerEvents = "auto"; MirkoGrief.style.pointerEvents = "auto"; 
	menuMirko.style.pointerEvents = "none";
	input_box.style.pointerEvents = "none";
	menuMirko.style.zIndex = '99';
	menuMirko.style.visibility = 'hidden';
	input_box.append( menuMirko );
	
	menuMirko.style.fontSize = '11px';
	menuMirko.innerHTML = '<ul style="padding:0;margin:0px;list-style:none;-ms-box-orient:horizontal"><li><p>FLOOD</p><hr><selector></selector></li><li><p>ZALGO/GLITCH TEXT</p><hr><selector></selector></li><li><p>DODATKOWE BAJERY</p><hr><selector></selector><br /><div style="font-size:10px;color:gray;text-align:right;width:100%;">'+String.fromCharCode(32,78,105,122,97,120)+'</div></li></ul>';
	menuMirko.getElementsByTagName('ul')[0].style.display = '-webkit-box';
	menuMirko.getElementsByTagName('ul')[0].style.display = '-moz-box';
	menuMirko.getElementsByTagName('ul')[0].style.display = '-ms-flexbox';
	menuMirko.getElementsByTagName('ul')[0].style.display = '-moz-flex';
	menuMirko.getElementsByTagName('ul')[0].style.display = '-webkit-flex';
	menuMirko.getElementsByTagName('ul')[0].style.display = 'flex';
	let menuMirkoList = menuMirko.getElementsByTagName('li');
	for(var i=0;i<menuMirkoList.length;i++){
		menuMirkoList[i].style.flex = '4 1 auto';
		menuMirkoList[i].style.flexBasis = '25%';
		menuMirkoList[i].style.border = '1px solid #d3d3d3';
	}
	let menuMirkoHead = menuMirko.getElementsByTagName('p');
	for(var i=0;i<menuMirkoHead.length;i++){
		menuMirkoHead[i].style.fontWeight = 'bold';
		menuMirkoHead[i].style.width = '100%';
		menuMirkoHead[i].style.color = 'gold';
		menuMirkoHead[i].style.textAlign = 'center';
		menuMirkoHead[i].style.marginTop = '3px';
		menuMirkoHead[i].style.marginBottom = '2px';
	}
	let menuMirkoHr = menuMirko.getElementsByTagName('hr');
	for(var i=0;i<menuMirkoHr.length;i++){
		menuMirkoHr[i].style.marginTop = '1px';
		menuMirkoHr[i].style.marginBottom = '1px';
	}
	

	let menuMirkoInput = menuMirko.getElementsByTagName('selector');
	menuMirkoInput[0].innerHTML = 'Wysylaj:<br /><div><input type="text" style="width:50px;" value="1"> wiadomości</div><div>co <input type="text" style="width:50px;" value="1"> sekund</div><div>na <select><option value="czat">czat</option><option value="PW">PW</option></select></div>Nie wysyłaj do: <div><input type="text" style="width:99%" placeholder="nicki oddzielaj spacja"></div>Wysyłaj tylko do: <div><input type="text" style="width:99%" placeholder="jesli puste - wszyscy"></div>';
	let floodButton = document.createElement('button');
	floodButton.innerHTML = 'nieaktywne';floodButton.style = 'width:100%;color:gold;background-color:black;border-radius:20px;border:2px solid gray;margin:auto;';
	floodButton.onclick = function(){
		if(floodButton.innerHTML=='nieaktywne'){
			floodButton.innerHTML='aktywne';
			floodButton.style.backgroundColor='#0000d3';
			floodButton.setAttribute('bool','true');
		} else {
			floodButton.innerHTML='nieaktywne';
			floodButton.style.backgroundColor='black';
			floodButton.setAttribute('bool','false');
		}
	}
	menuMirkoInput[0].append(floodButton);
	
	
	menuMirkoInput[1].innerHTML = '<br /><br /><br />Szlaczki:<br /><div>kierunek <select><option value="losowy">losowy</option><option value="góra">góra</option><option value="dół">dół</option><option>góra i dół</option><option>środek</option></select></div><div>limit długości <input type="text" style="width:50px" value="999"></div>';
	menuMirkoInput[1].style.lineHeight = "200%";
	let zalgoButton = document.createElement('button');
	zalgoButton.innerHTML = 'nieaktywne';zalgoButton.style = 'width:100%;color:gold;background-color:black;border-radius:20px;border:2px solid gray;margin:auto;';
	zalgoButton.onclick = function(){
		if(zalgoButton.innerHTML=='nieaktywne'){
			zalgoButton.innerHTML='aktywne';
			zalgoButton.style.backgroundColor='#0000d3';
			zalgoButton.setAttribute('bool','true');
		} else {
			zalgoButton.innerHTML='nieaktywne';
			zalgoButton.style.backgroundColor='black';
			zalgoButton.setAttribute('bool','false');
		}
	}
	menuMirkoInput[1].append(zalgoButton);
	
	
	menuMirkoInput[2].innerHTML = 'Tekst:<br /><div><input type="checkbox"> do góry nogami</input></div><div><input type="checkbox"> od tyłu</input></div><div><input type="checkbox"> w bąbelkach</input></div><div><input type="checkbox"> w stylu pisma</input></div><div><input type="checkbox"> max szerokość</input></div><div><input type="checkbox"> długi tekst na raty</div>';
	let showUpMutedContainer = document.createElement('div');
	let showUpMuted = document.createElement('button');
	showUpMuted.innerHTML = 'pokaż uciszone';showUpMuted.style = 'width:80%;color:#00cc00;background-color:#d5d5d5;border-radius:3px;border:2px solid gray;margin:auto;';
	showUpMuted.onclick = function(){
		if(parseFloat(input_box.style.marginRight.slice(0,input_box.style.marginRight.length-2))<170){
			alert('Ta opcja wymaga rozszerzenia MirkoczatPremium. Znajdziesz je na wykop pod tagiem #mirkoczatpremium - to nie są żarty xD');
		} else {
			var element,uid,user;
			var found = 0;
			var allMessages = chat_monitor.querySelectorAll( 'div.avatar-plus' );
			var i = 0;
			while((allMessages[i]!==undefined) && (i <= 50) && (allMessages.length>i)){
				user = allMessages[i].parentElement.querySelector('a').innerHTML;
				element = allMessages[i].parentElement;
				if(element !== undefined){
					var _lastmsg = element.innerHTML;
					var msgRegex = /([0-9] -->)/g;
					var str = _lastmsg;
					var _lastIndex;
					while ((msgRegex.exec(str)) !== null) {
						_lastIndex = msgRegex.lastIndex;
					}
					var _msg = _lastmsg.slice(_lastIndex, _lastmsg.length - 20);

					var _lastMsg = element.getAttribute('msg');
					var _uid = element.getAttribute('uid');	
					
					if(_msg=='*uciszone*'){
						found++;
						element.innerHTML = element.innerHTML.replace('*uciszone*',_lastMsg);
					}
				} else {
					break;
				}
				i++
			}
			if(found==0) {
				alert('Nie odnaleziono uciszonych wiadomości w pamięci');
			} else {
				inputMenu[13].innerHTML = 'odkryto ' + found + ' wiadomości';
				setInterval(function(){
					inputMenu[13].innerHTML = 'pokaż uciszone';
				}, 3000);
			}
		}
	}
	menuMirkoInput[2].append(showUpMutedContainer);
	showUpMutedContainer.append(showUpMuted);
	for(var i=0;i<menuMirkoInput.length;i++){//-1 zeby nie dodawalo guzika showUpMuted przedwcześnie, bo jest w divie
		menuMirkoInput[i].style.padding = '5px';
		menuMirkoInput[i].style.fontFamily = 'Lucida Console, Monaco, monospace';
		let _inputs = menuMirkoInput[i].getElementsByTagName('div');
		for(var j=0;j<_inputs.length;j++){
			_inputs[j].style.margin = '0px 0px 0px 20px';
			if(_inputs[j].getElementsByTagName('input')[0]){
				_inputs[j].getElementsByTagName('input')[0].setAttribute('bool','false');
				_inputs[j].getElementsByTagName('input')[0].style.backgroundColor = '#d5d5d5';
			}
			inputMenu.push(_inputs[j].lastElementChild);
		}
	}
	inputMenu.push(floodButton);
	inputMenu.push(zalgoButton);
	
	inputMenu[7].onclick = function(e){ turn(inputMenu[7],[9,10,11]) };
	inputMenu[8].onclick = function(e){ turn(inputMenu[8],[]) };
	inputMenu[9].onclick = function(e){ turn(inputMenu[9],[7,10,11]) };
	inputMenu[10].onclick = function(e){ turn(inputMenu[10],[7,9,11]) };
	inputMenu[11].onclick = function(e){ turn(inputMenu[11],[7,9,10]) };
	inputMenu[12].onclick = function(e){ turn(inputMenu[12],[]) };
	inputMenu[2].value = 'czat';
	
	/* ID dla inputMenu
		- zalgo
		5	> kierunek: gora/dol/losowo
		6	> limit dlugosci - domyslnie '999'
initPush15	> guzik ON/OFF
				if ON:
					dlugosc w pionie - jesli wieksza niz (1000 - inputText.length) to (1000 - inputText.length)/inputText.length to ilosc znakow na 1 znak
		- inne bajery do tekstu:
		7	pisanie do gory nogami
		8	pisanie od tylu
		9	w babelkach
		10	pismo
		11	fullwidth
		12	długi tekst na raty
initPush13	odkryj uciszone [tylko dla mirkoczat premium]
		- flood
			if zalgo:
				odczytaj msg z variable
		0	> X wiadomosci
		1	> co ile sekund wysylac wiadomosc
initPush14	> guzik ON/OFF - gdy enable to od momentu wyslania wiadomosci bedzie sie ona powtarzac
		2	> chat/PW
				if PW:
					zabroń wpisywania komend czyli pierwszy znak nie moze byc slashem /
		3		> czarna lista do ktorej nie mozna pisac PW
		4		> biala lista do ktorej TYLKO pisac PW
*/
		
	
	
	MirkoGrief.onclick = function(){
		if(MirkoGriefTrigger){
			menuMirko.style.visibility = 'hidden';
			menuMirko.style.pointerEvents = "none";
			MirkoGriefTrigger = false;
			setCookie('MirkoGrief_blacklist',inputMenu[3].value,999);
			setCookie('MirkoGrief_whitelist',inputMenu[4].value,999);
			setCookie('MirkoGrief_chatOrPriv',inputMenu[2].value,999);
		} else {
			menuMirko.style.visibility = 'visible';
			menuMirko.style.pointerEvents = "auto";
			MirkoGriefTrigger = true;
			if(getCookie('MirkoGrief_blacklist')!==undefined){
				inputMenu[3].value = getCookie('MirkoGrief_blacklist');
			}
			if(getCookie('MirkoGrief_whitelist')!==undefined){
				inputMenu[4].value = getCookie('MirkoGrief_whitelist');
			}
			if(getCookie('MirkoGrief_chatOrPriv')!==undefined){
				inputMenu[2].value = getCookie('MirkoGrief_chatOrPriv');
			}
		}
	}
	chat_input[0].onclick = function(){
		menuMirko.style.visibility = 'hidden';
		menuMirko.style.pointerEvents = "none";
		MirkoGriefTrigger = false;
		setCookie('MirkoGrief_blacklist',inputMenu[3].value,999);
		setCookie('MirkoGrief_whitelist',inputMenu[4].value,999);
		setCookie('MirkoGrief_chatOrPriv',inputMenu[2].value,999);
	}
	chat_monitor.onclick = function(){
		menuMirko.style.visibility = 'hidden';
		menuMirko.style.pointerEvents = "none";
		MirkoGriefTrigger = false;
		setCookie('MirkoGrief_blacklist',inputMenu[3].value,999);
		setCookie('MirkoGrief_whitelist',inputMenu[4].value,999);
		setCookie('MirkoGrief_chatOrPriv',inputMenu[2].value,999);
	}
	setInterval(function(){
		if(getCookie('user')!==undefined){
			nickName = getCookie('user');
		}
		function getNickName(){
			setTimeout(function(){
				if(document.querySelector('html body#body div#content div.row div.col-sm-2.col-md-2.right div div div span')===null){
					getNickName();
				} else {
					nickName = String(document.querySelector('html body#body div#content div.row div.col-sm-2.col-md-2.right div div div span').innerHTML);
					setCookie('user',nickName,999);
				}
			}, 1000);
		}
		getNickName();
	},1000);
	});
}

function exec(msg){
	var _txt = { body: msg };
	mirkoczat.stream.doSendMessage(_txt);
}
function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = 'expires='+d.toUTCString();
    document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';
}
function getCookie(cname) {
    var name = cname + '=';
    var ca = document.cookie.split(';');
    for(var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return '';
}
var _getChannelIDhandler;
function getChannelID(name){
	$.get( "https://www.googleapis.com/youtube/v3/channels?key=AIzaSyAdJzOTTumbq4oo4SmlL_N_OiDJjunxfHI&forUsername=" + name + "&part=id&items=id", function( data ) {
		setTimeout(function()
		{
			_getChannelIDhandler = data;
		}, 500);
	});
}
function turn(e,toDisable){
	if(e.getAttribute('bool')=='true'){
		e.setAttribute('bool','false');
		if(toDisable){
			for(var i=0;i<toDisable.length;i++){
				inputMenu[parseInt(toDisable[i])].removeAttribute('disabled');
		}	}
	} else {
		e.setAttribute('bool','true');
		if(toDisable){
			for(var i=0;i<toDisable.length;i++){
				inputMenu[parseInt(toDisable[i])].setAttribute('disabled','');
	}	}	}
}


function textZalgo(input){
	let amountOfLetters = input.replace(/ /g,'').length;
	let zalgo = [ '\u030d','\u030e','\u0304','\u0305','\u033f','\u0311','\u0306','\u0310','\u0352','\u0357','\u0351','\u0307','\u0308','\u030a','\u0342','\u0343','\u0344','\u034a','\u034b','\u034c','\u0303','\u0302','\u030c','\u0350','\u0300','\u0301','\u030b','\u030f','\u0312','\u0313','\u0314','\u033d','\u0309','\u0363','\u0364','\u0365','\u0366','\u0367','\u0368','\u0369','\u036a','\u036b','\u036c','\u036d','\u036e','\u036f','\u033e','\u035b','\u0346','\u031a','\u0316','\u0317','\u0318','\u0319','\u031c','\u031d','\u031e','\u031f','\u0320','\u0324','\u0325','\u0326','\u0329','\u032a','\u032b','\u032c','\u032d','\u032e','\u032f','\u0330','\u0331','\u0332','\u0333','\u0339','\u033a','\u033b','\u033c','\u0345','\u0347','\u0348','\u0349','\u034d','\u034e','\u0353','\u0354','\u0355','\u0356','\u0359','\u035a','\u0323',
	//ukośne:
		'\u0315','\u031b','\u0340','\u0341','\u0358','\u035d','\u035e','\u0360','\u0361','\u0489', //up -10
		'\u0321','\u0322','\u0327','\u0328', '\u035c','\u035f','\u0362','\u0337','\u0489',//down -9
		'\u0334','\u0335','\u0336','\u034f','\u0338','\u0489']; // mid -6
		//0-49 up; 50-89 down; 90-99 midUP; midDOWN 100-109, midMID 110-115
         
	let zakresDown = 0;
	let zakresUp = 89;
	if(inputMenu[5].value=='góra')
		zakresUp=49;
	if(inputMenu[5].value=='dół')
		zakresDown=50;
	if(inputMenu[5].value=='góra i doł')
		zakresUp=89;
	let limitPerChar;
	if(((parseInt(inputMenu[6].value)*amountOfLetters)<=(500-amountOfLetters))||((inputMenu[11].innerHTML=='aktywne')&&(inputMenu[1].value=='PW'))){
		limitPerChar = parseInt(inputMenu[6].value);
	} else {
		limitPerChar = parseInt((500 - amountOfLetters)/amountOfLetters);
	}
	let output = '';
	for(var i=0;i<input.length;i++){
		if(input[i]==' '){
			output += input[i];
		} else {
			let glitch = '';
			if(inputMenu[5].value=='środek'){
				for(var j=0;j<limitPerChar/2;j++){
					glitch += zalgo[Math.floor((Math.random() * 89) + 0)];
					glitch += zalgo[Math.floor((Math.random() * (115-90)) + 90)];
				}
			} else {
				for(var j=0;j<limitPerChar;j++){
					glitch += zalgo[Math.floor((Math.random() * (zakresUp-zakresDown)) + zakresDown)];
				}
			}
			output += input[i] + glitch;
		}
	}
	console.log(output);
	return output;
}
function textUpSideDown(input){
	let alphabet = 'qwertyuiopasdfghjklzxcvbnm0123456789QWERTYUIOPASDFGHJKLZXCVBNM!?&()[]{}.,\'';
	let modified = 'bʍǝɹʇʎnᴉodɐspɟƃɥɾʞlzxɔʌquɯ0ƖᄅƐㄣϛ9ㄥ86QMƎɹ┴⅄∩IOԀ∀SpℲפHſʞ˥ZXƆΛqNW¡¿⅋)(][}{˙\',';
	let output = '';
	for(var i=input.length-1;i>=0;i--){
		if(modified[alphabet.indexOf(input[i])]!=undefined){
			output += modified[alphabet.indexOf(input[i])];
		} else {
			output += input[i];
		}
	}
	return output.replace('"',',,');
}
function textBackwards(input){
	let output = '';
	for(var i=input.length-1;i>=0;i--){
		output += input[i];
	}
	return output;
}
function textBubble(input){
	let alphabet = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';
	let modified = 'ⓠⓦⓔⓡⓣⓨⓤⓘⓞⓟⓐⓢⓓⓕⓖⓗⓙⓚⓛⓩⓧⓒⓥⓑⓝⓜⓆⓌⒺⓇⓉⓎⓊⒾⓄⓅⒶⓈⒹⒻⒼⒽⒿⓀⓁⓏⓍⒸⓋⒷⓃⓂ';
	let output = '';
	for(var i=0;i<input.length;i++){
		if(modified[alphabet.indexOf(input[i])]!=undefined){
			output += modified[alphabet.indexOf(input[i])];
		} else {
			output += input[i];
		}
	}
	return output;
}
function textHand(input){
	let alphabet = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBN ';
	let modified = '???????????????????????????????????????????????????  ';
	let output = '';
	for(var i=0;i<input.length;i++){
		if(modified[alphabet.indexOf(input[i])]!=undefined){
			output += modified[alphabet.indexOf(input[i])*2] + modified[(alphabet.indexOf(input[i])*2)+1];
		} else {
			output += input[i];
		}
	}
	return output;
}
function textFullWidth(input){	
	let alphabet = 'qwertyuiopasdfghjklzxcvbnm0123456789QWERTYUIOPASDFGHJKLZXCVBNM!?&().,\' ';
	let modified = 'qwertyuiopasdfghjklzxcvbnm0123456789QWERTYUIOPASDFGHJKLZXCVBNM!?&().,' ';
	let output = '';
	for(var i=0;i<input.length;i++){
		if(modified[alphabet.indexOf(input[i])]!=undefined){
			output += modified[alphabet.indexOf(input[i])];
		} else {
			output += input[i];
		}
	}
	return output;
}


chat_input[0].addEventListener( 'keypress', function(e){
	let key = e.which || e.keyCode;
	if(key === 13 && chat_input[0].value.length > 0){
        let _input = chat_input[0].value;
		
		if(inputMenu[7].checked)
			_input = textUpSideDown(_input);
		if(inputMenu[8].checked)
			_input = textBackwards(_input);
		if(inputMenu[9].checked)
			_input = textBubble(_input);
		if(inputMenu[10].checked)
			_input = textHand(_input);
		if(inputMenu[11].checked)
			_input = textFullWidth(_input);
		if(inputMenu[15].innerHTML=='aktywne')
			_input = textZalgo(_input);
		
		if(inputMenu[12].checked){
			let amount = parseInt(inputMenu[0].value);
			let rate = inputMenu[1].value * 1000;
			let executeLobby = [];
			
			function update(){
				if(executeLobby.length > 0){
					exec( executeLobby[0] );
					executeLobby.splice( 0, 1 );
					setTimeout(function(){
						update();
					}, rate);
				}
			}
			let _lastIndex = 0; let _parts = Math.ceil(_input.length / 900); let _onePartLength = Math.ceil(_input.length / _parts); let _nextIndex = _onePartLength;
			let i=0;
			while(i < _parts){
				var _txt = _input.slice(_lastIndex, _nextIndex);
				var _txt2 = _txt.slice(0, _txt.lastIndexOf(' '));
				var _txtToRead;
				if(_txt.length<800){
					_txtToRead = _txt.slice(0, _txt.length);
				} else {
					_txtToRead = _txt.slice(0, _txt.lastIndexOf(' '));
				};
				var _diff = _txt.length - _txt2.length;
				if(_diff > 0){
					_lastIndex += _onePartLength;
					_nextIndex += _onePartLength;
					_lastIndex -= _diff;
					_nextIndex -= _diff;
				} else {
					_lastIndex += _onePartLength;
					_nextIndex += _onePartLength;
				}
				if((_nextIndex - _onePartLength < _input.length) && ((i+2) < _parts)){
					_parts++;
				};
				executeLobby.push(_txtToRead);
				i++;
			}
			update();
		} else if(inputMenu[14].innerHTML=='aktywne'){
			let amount = parseInt(inputMenu[0].value);
			let rate = inputMenu[1].value * 1000;
			let blacklist = inputMenu[3].value.split(' ');
			let whitelist = inputMenu[4].value.split(' ');
			if(inputMenu[2].value=='PW'){
				if(_input[0]=='/')
					alert('Nie używaj komend dla flood PW, bo i tak nie zadziałają !!!');
				if(whitelist[0]!=''){
					let iteration = 0;
					let intervalID = setInterval(function(){
						if(inputMenu[14].innerHTML=='nieaktywne')
							clearInterval( intervalID );
						for(var i=0;i<amount;i++){
							if(whitelist[iteration]=='')
								iteration++;
							if(iteration>whitelist.length-1)
								iteration=0;
							if(whitelist[iteration].length<1)
								iteration++;
							exec('/msg ' + whitelist[iteration] + ' ' + _input);
							iteration++;
						}
					}, rate);
				} else {
					let users = chat_input[0].getAttribute('data-mentions');
					for(var i=0;i<blacklist.length;i++){
						users = users.replace(blacklist[i],'').replace('  ',' ');
					}
					users = users.replace(nickName,'').replace('  ',' ');
					users = users.split(' ');
					let iteration = 0; let lastUser = '';
					let intervalID = setInterval(function(){
						
						users = chat_input[0].getAttribute('data-mentions');
						for(var i=0;i<blacklist.length;i++){
							users = users.replace(blacklist[i],'').replace('  ',' ');
						}
						users = users.replace(nickName,'').replace('  ',' ');
						users = users.split(' ');
						if(users.indexOf(lastUser)!=-1)
							iteration = users.indexOf(lastUser)+1;
						
						if(inputMenu[14].innerHTML=='nieaktywne')
							clearInterval( intervalID );
						for(var i=0;i<amount;i++){
							if(users[iteration]=='')
								iteration++;
							if(iteration>users.length-1)
								iteration=0;
							if(users[iteration].length<1)
								iteration++;
							exec('/msg ' + users[iteration] + ' ' + _input);
							lastUser = users[iteration];
							iteration++;
						}
					}, rate);
				}
			} else {
				let intervalID = setInterval(function(){
					if(inputMenu[14].innerHTML=='nieaktywne')
						clearInterval( intervalID );
					for(var i=0;i<amount;i++){
						exec(_input);
					}
				}, rate);
			}
		} else {
			exec(_input);
		}
	chat_input[0].value = '';
	}
});
})();