Region filter

Prida filtr podle regionu do chatu na Amaterech

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==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);
};