Additional Lepro Buttons

By Patricy Last update Dec 23, 2008 — Installed 382 times.
// ==UserScript==
// @name           Additional Lepro Buttons
// @namespace      http://*.leprosorium.ru/*
// @include        http://*.leprosorium.ru/*
// ==/UserScript==
function getCursor(input){
	var result = {start: 0, end: 0};
	if (input.setSelectionRange){
		result.start= input.selectionStart;
		result.end = input.selectionEnd;
	} else if (!document.selection) {
		return false;
	} else if (document.selection && document.selection.createRange) {
		var range = document.selection.createRange();
		var stored_range = range.duplicate();
		stored_range.moveToElementText(input);
		stored_range.setEndPoint('EndToEnd', range);
		result.start = stored_range.text.length - range.text.length;
		result.end = result.start + range.text.length;
	}
	return result;
}

function setCursor(txtarea, start, end){
	if(txtarea.createTextRange) {
		var range = txtarea.createTextRange();
		range.move("character", start);
		range.select();
	} else if(txtarea.selectionStart) {
		txtarea.setSelectionRange(start, end);
	}
}

function urlencode( str ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Philip Peterson
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: AJ
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // %          note: info on what encoding functions to use from: http://xkr.us/articles/javascript/encode-compare/
    // *     example 1: urlencode('Kevin van Zonneveld!');
    // *     returns 1: 'Kevin+van+Zonneveld%21'
    // *     example 2: urlencode('http://kevin.vanzonneveld.net/');
    // *     returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
    // *     example 3: urlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
    // *     returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'

    var histogram = {}, histogram_r = {}, code = 0, tmp_arr = [];
    var ret = str.toString();

    var replacer = function(search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };

    // The histogram is identical to the one in urldecode.
    histogram['!']   = '%21';
    histogram['%20'] = '+';

    // Begin with encodeURIComponent, which most resembles PHP's encoding functions
    ret = encodeURIComponent(ret);

    for (search in histogram) {
        replace = histogram[search];
        ret = replacer(search, replace, ret) // Custom replace. No regexing
    }

    // Uppercase for full PHP compatibility
    return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) {
        return "%"+m2.toUpperCase();
    });

    return ret;
}

function insertFignyu(color,fig_color,figTxt1){
		bl = document.getElementById('reply_form');
		container = bl.appendChild(document.createElement("A"));
		container.style.cursor = 'pointer';
		container.style.color = fig_color;
		container.appendChild(document.createTextNode(figTxt1));
		container.addEventListener("click", function(event) {
			var src = prompt('Введите текст ' + figTxt1+' (меньше 80 букв): ' );
			if(src){
			if (src.length>80) {
				alert('Очень длинная фигня, надо меньше 80');
				return false;
			}

			src = urlencode( src );
			var txtarea = document.getElementById("comment_textarea");
			txtarea.focus();
			var scrtop = txtarea.scrollTop;
		    var txt_str = '<img src="http://93.188.36.94/fignya/magic.php?cvet_figni=' + color + '&fignya=' + src + '" alt="' + src + '">';
			var cursorPos = getCursor(txtarea);
			var txt_pre = txtarea.value.substring(0, cursorPos.start);
			var txt_sel = txtarea.value.substring(cursorPos.start, cursorPos.end);
			var txt_aft = txtarea.value.substring(cursorPos.end);
			if (cursorPos.start == cursorPos.end){
				var nuCursorPos = cursorPos.start;
			}else{
				var nuCursorPos=String(txt_pre + txt_str + txt_sel).length;
			}
			txtarea.value = txt_pre +  txt_sel + txt_str + txt_aft;
			if (scrtop) txtarea.scrollTop=scrtop;
            }
    return false;
	}, false);

}


function addSimpleButton(but_color,but_text, but_texareatext){
	bl = document.getElementById('reply_form');
	container = bl.appendChild(document.createElement("A"));
	container.style.cursor = 'pointer';
	container.style.color = but_color;
	container.appendChild(document.createTextNode(but_text));
	container.addEventListener("click", function(event) {
	var txtarea = document.getElementById("comment_textarea");
	txtarea.focus();
	var scrtop = txtarea.scrollTop;
    var txt_str = but_texareatext;
	var cursorPos = getCursor(txtarea);
	var txt_pre = txtarea.value.substring(0, cursorPos.start);
	var txt_sel = txtarea.value.substring(cursorPos.start, cursorPos.end);
	var txt_aft = txtarea.value.substring(cursorPos.end);
	if (cursorPos.start == cursorPos.end){
		var nuCursorPos = cursorPos.start;
	}else{
		var nuCursorPos=String(txt_pre + txt_str + txt_sel).length;
	}
	txtarea.value = txt_pre +  txt_sel + txt_str + txt_aft;
	//setCursor(txtarea,nuCursorPos,nuCursorPos);
	if (scrtop) txtarea.scrollTop=scrtop;
    return false;
	}, false);
}
insertFignyu('seraya','#999999','серой фигнёй ')
insertFignyu('sinyaya','#326ccd','синей фигнёй ')
insertFignyu('ukropchikom','#009900','укропчиком ')


addSimpleButton('#666666','[x] ','[x]');
addSimpleButton('#aa0000','Сука, взрыв ', 'И ТУТ СУКА ВЗРЫВ НАХУЙ КИШКИ В СТЕНУ БЛЯДЬ МОЗГИ ГОВНО РАСЧЛЕНЕНКА ПРОЕБАШИЛО БЕШЕНО РАЗДРЮЧИЛО В ГОВНО СУКА РАСПИДОРАСИЛО БЛЯТЬ В ДЕРЬМО');
addSimpleButton('#880088','Заебали со своим... ', 'Заебали со своим ');
addSimpleButton('#888800','Превосходство Лепрозория ', 'Пост доказывающий превосходство Лепрозория над другими жалкими коллективными блогами');