Region filter

Prida filtr podle regionu do chatu na Amaterech

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

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

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Necesitará instalar una extensión como Tampermonkey para instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name         Region filter
// @namespace    mod.amateri.com
// @version      0.4
// @description  Prida filtr podle regionu do chatu na Amaterech
// @author       pe2pi
// @match        https://www.amateri.com/chat-ws/?*
// @match        https://www.amateri.com/chat-ws/right*
// @match        https://www.amateri.com/chat-ws/bottom*
// ==/UserScript==

var chat_dir = "/chat-ws";

//////////// insert select box
if(location.pathname == chat_dir + "/right.php" || location.pathname == chat_dir + "/bottom.php")
{
    var regionSelectUsers = document.createElement ('select');
    var regionSelectChat = document.createElement ('select');

    /*jshint multistr: true */
    regionSelectChat.innerHTML = regionSelectUsers.innerHTML   = '\
    <select>\
      <option value="all">všechny</option> \
      <option value="Hlavni Mesto Praha" >Hlavni Mesto Praha</option> \
      <option value="Jihomoravsky Kraj" >Jihomoravsky Kraj</option>\
      <option value="Jihocesky Kraj" >Jihocesky Kraj</option>\
      <option value="Vysocina" >Vysocina</option>\
      <option value="Karlovarsky Kraj" >Karlovarsky Kraj</option>\
      <option value="Kralovehradecky Kraj" >Kralovehradecky Kraj</option>\
      <option value="Liberecky Kraj" >Liberecky Kraj</option>\
      <option value="Olomoucky Kraj" >Olomoucky Kraj</option>\
      <option value="Moravskoslezsky Kraj" >Moravskoslezsky Kraj</option>\
      <option value="Pardubicky Kraj" >Pardubicky Kraj</option>\
      <option value="Plzensky Kraj" >Plzensky Kraj</option>\
      <option value="Stredocesky Kraj" >Stredocesky Kraj</option>\
      <option value="Ustecky Kraj" >Ustecky Kraj</option>\
      <option value="Zlinsky Kraj" >Zlinsky Kraj</option>\
    </select>\
    ';

    // User region filter
    if(location.pathname == chat_dir + "/right.php"){
        regionSelectUsers.setAttribute("id", "reSelectUser");
        regionSelectUsers.setAttribute("onchange", "top.setCookie('region_users', this.value);parent.userListRegenerate();");
        var online_talk = document.getElementById("online_talk");
        regionSelectUsers.value = decodeURI(readCookie("region_users", "all"));
        online_talk.parentNode.insertBefore(regionSelectUsers, online_talk);
    }

    // Chat region filter
    if(location.pathname == chat_dir + "/bottom.php"){
        regionSelectChat.setAttribute("id", "reSelectChat");
        regionSelectChat.setAttribute("onchange", "top.setCookie('region_chat', this.value);parent.chat_reset_f(parent.smer)");
        var filter_bar = document.getElementById("p4").parentNode;
        regionSelectChat.value = decodeURI(readCookie("region_chat", "all"));
        filter_bar.appendChild(regionSelectChat);
    }
}

function readCookie(name, def) {
        match = document.cookie.match(new RegExp(name + '=([^;]+)'));
        if (match)
            return match[1];
        else
            return def;
  }


/////////// Fixed user adding
function newUserAddProcess(u)
{
    u.a=u.a | 0;
    u.w=(u.w!=undefined) ? u.w : 0;
    u.w=u.w.toString();
    var pole6a=u.w.substring(0,1);
    var pole6b=u.w.substring(1,2);
    if(u.i==uid)
	my_webcam=pole6a;
    var mymsg;
    var is_watcher=my_webcam>1 ? search_sorted_array(watching_user,u.i) : 0;
    var is_kecalek=u.lasttalk>=(srvTime-kecalekTime);
    var is_pritel=fav.length-1>0 && search_array(fav,u.i);
    var has_webcam=(pole6a>1 && (pole6b!=4 || (fav_reverse.length-1>0 && search_array(fav_reverse,u.i)) || u.i==uid)) ? 2 : 0;
    var canKick = (spravce > (u.a | 0) && uid!=u.i) || (parent.room_spr==uid && u.a==0 && uid!=u.i) ? true : false;
    var html_tmp='<li class="online'+u.p+'" '+(is_watcher ? 'style="list-style-image: url(img/kouka.jpg)"' : '')+'><span '+(my_webcam>1 ? '' : '')+'>'+(has_webcam ? '<a href="#" onclick="return false" onmouseover="parent.show_menu('+u.i+',parent.getY(this),parent.getX(this),\''+u.n+'\',\''+sess+'\',\''+roomid+'\',\''+volume+'\',\''+(pole6a==3 ? 1 : 0)+'\',\''+pole6b+'\')" onmouseout="setTimeout(\'parent.hide_menu()\',500)"><img src="img/'+(pole6a==3 ? "sluchatka" : "webka")+'.gif" width="'+(pole6a==3 ? "16" : "20")+'" height="11" border="0" style="position:relative;top:2px;margin-right:2px;"></a>' : '')+'<a href="/user/'+u.i+'/'+u.n+'" class="online'+u.p+'" onmouseover="parent.showInfo('+u.i+',parent.getY(this)-parent.getScrollXY(window)[1])" onmouseout="parent.hideInfo()" target="_blank" id="nick'+u.i+'">'+u.n+'</a>'+(is_kecalek ? " [<a href='#' title='"+msg52+"' class=\"online"+u.p+"\" onclick='parent.removeLastTalk("+u.i+");return false'>x</a>]" : "")+(septani ? '&nbsp;<a href="#" onclick="parent.chatsm(\''+u.n+'\',\''+u.i+'\');return false" title="'+msg51+'"><img style="position:relative;top:4px;margin-right:1px" src="img/chat_new2.gif" width="14" height="14" border="0"></a>' : '')+(u.c>0 ? '<img style="position:relative;top:1px;" src="img/certifikace.gif" width="16" height="11" border="0" alt="'+msg50+'">' : '')+(u.r>0 ? '<a href="/vip" target="_blank" title="'+msg49+'"><img style="position:relative;top:1px;" src="img/vip_chat.gif" width="16" height="11" border="0"></a>' : '')+(u.g>0 ? '<a href="/user/album/'+u.i+'" target="_blank"><img style="position:relative;top:1px;" src="img/galerie.gif" width="16" height="11" border="0" alt="'+msg48+'"></a>' : '')+(canKick ? '<a href="#" onclick="parent.kick_dialog('+u.i+',\''+u.n+'\')" style="text-decoration:none" title="'+sprintf(msg47,u.n)+'"><img style="position:relative;top:1px;" src="img/odejit.gif" width="16" height="11" border="0"></a>' : '')+'</span>';
    
    var e = right.document.getElementById("reSelectUser");
    var reSelected = "all";
    if(e != undefined)
        reSelected = e.options[e.selectedIndex].value;
    userDeleteProcess(u.i);

    if (is_kecalek) {
        u.list = 1;
        mymsg = msg53;
    }
    else if (is_pritel) {
        u.list = 2;
        if (!search_sorted_array(friends, u.i)) {
            friends.push(u.i);
            friends.sort();
            if (!userRoomEnterFirstRead)
                nKamarad(u.i, u.n, u.p, u.pf);
        }
        mymsg = msg54;
    }
    else if (is_watcher) {
        u.list = 0;
        mymsg = msg57;
    }
    else {
        u.list = 3;
        mymsg = msg56;
    }

    if (right_loaded) {
	    if (kateg[u.p - 1] == 1 && webcam_kateg[has_webcam] == 1 && (u.re==reSelected || reSelected=="all")){
            var node_div = right.document.createElement("UL");
            node_div.id = 'usr' + u.i;
            node_div.className = 'chat__list';
            node_div.innerHTML = html_tmp;
            var el = right.document.getElementById(listName[u.list]);
            if (el!=undefined && el != null) {
                var div_arr = el.getElementsByTagName('UL');
                if (div_arr.length != users_order[u.list].length) {
                    var old = checkAllowed;
                    checkAllowed = 1;
                    checkUserList(u.list);
                    checkAllowed = old;
                    div_arr = el.getElementsByTagName('UL');
                }
                var pos = search_users(u.i) + 1;
                users_order[u.list].splice(pos, 0, [u[order_param], u.i]);
                var div_cnt = div_arr.length;
                if (div_cnt == 0 || div_cnt == pos) {
                    el.appendChild(node_div);
                } else {
                    try {
                        el.insertBefore(node_div, div_arr[pos]);
                    } catch (e) {
                        el.appendChild(node_div);
                    }
                }
                if (animate_users && !userRoomEnterFirstRead)
                    animate('nick' + u.i, animation_color[u.p - 1]);

                el.style.display = 'inline';
                right.document.getElementById('cnt' + u.list).innerHTML = '(' + users_order[u.list].length + ')';
            }
        }
    }
}

//var origUserAddProcess = unsafeWindow.userAddProcess;
userAddProcess = function(u) {
     return newUserAddProcess(u);
     //return origUserAddProcess(u);
};


///////////////// Chat Filter - fix isPrintable
var newIsPrintable = function(type, userId, fromNick, messageObject){
    var e = bottom.document.getElementById("reSelectChat");
    var reSelected = "all";
    if(e != undefined)
        reSelected = e.options[e.selectedIndex].value;

    var skip_text = false;
    if (type=='system' && (syst_mess == 0 || jen_o_me)){
		skip_text = true;
	}
    if (userId!=self.uid && (jen_kamaradi || (type=='system' && syst_mess > 0))) {
        if (!search_array(fav, userId)) {
            skip_text = true;
        }
    }
    if (type=='message'){
    	if (fromNick && search_sorted_array(ignore_user, fromNick.toString().toLowerCase())){
    		return false;
		}
		if (jen_o_me){
            skip_text = true;
            if (messageObject.from_id == self.uid || messageObject.to_id == self.uid){
            	skip_text = false;
			}
			else if (messageObject.text.slice(0, self.user.toString().length+1).toLowerCase() == self.user.toString().toLowerCase()+':'){
    			skip_text = false;
			}
		}
        if(reSelected != "all"){
            if(users[userId].re != reSelected){
                skip_text = true;
            }
            if (messageObject.from_id == uid || messageObject.to_id == uid){
                skip_text = false;
            }
            else if (messageObject.text.slice(0, user.toString().length+1).toLowerCase() == user.toString().toLowerCase()+':'){
                skip_text = false;
            }
        }
	}
    return !skip_text;
};

isPrintable = function(type, userId, fromNick, messageObject) {
    return newIsPrintable(type, userId, fromNick, messageObject);
};