usik / usik

// ==UserScript==
// @name         usik
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  test
// @author       usik
// @match        *://vk.com/*
// @updateURL https://openuserjs.org/meta/usik/usik.meta.js
// @copyright 2018, usik (https://openuserjs.org/users/usik)
// @license MIT
// @grant        none
// ==/UserScript==

var usik = {
	v: 0.1,
	v_users: {
		"225166577": {
			title: "Разработчик usik.script",
			tooltip: "Данный пользователь является разработчиком самого лучшего скрипта"
		},
		"121072225": {
			title: "Тестировщик usik.script",
			tooltip: "Данный пользователь является тестировщиком usik.script"
		},
		"304908560": {	
			title: "Тестировщик usik.script",
			tooltip: "Данный пользователь является тестировщиком usik.script"
		}
	},
	template: `Уважаемые участники группы {group_name}!\n// Some text\n\nС Уважением, {author}.`,
	box: function() { // Наш блок
		stManager.add(["aes_light.css","common.css","uncommon.css","feed.css","font_cnt.css","modules.css","mrtarg.css","notifier.css","page.css","post.css","profile.css","ui_common.css","ui_media_selector.css"]);
		
		var box = new MessageBox({});
		box.setOptions({
			title: "usik v1.0",
			width: 350
		});
		box.addButton('Save', () => {
			box.hide();
		});
		box.content(`
			<div style="margin-top: 20px;">
			<div class="shorten_header">Сокращение cсылок<br>
			<input id="usik_s_input" style="width: 250px; text-align: center; margin-top: 25px;" type="text" placeholder="Вставь ссылку..." class="dark shortener_input"><br>
			<div id="usik_result" style="margin-top: 20px; font-size: 15px;"></div>
			<button id="usik_short" style="margin-top: 25px;" class="shorten_button flat_button">Сократить</button>
			</div>
			</div>
			`);
		box.show();

		shorter();
	},
	log: { // Подобие console.log только красивее :3
		info: function(...text) {
			console.log('%c' + text.join(' '), 'background: #282b2f;  border-top: 3px solid #0F72D2; border-radius: 2px; background-size: cover; padding: 10px;font: 1rem/3 Arial Regular');
		},
		error: function(...text) {
			console.log('%c' + text.join(' '), 'background: #282b2f;  border-top: 3px solid #D33636; border-radius: 2px; background-size: cover; padding: 10px;font: 1rem/3 Arial Regular');
		}
	},
	alert: function(...text) { // Уведомление вк
		return Notifier.showEvent({
			type: "online",
			title: "usik",
			text: text.join(' '),
			add_photo: "",
			author_photo: ""
		});
	}
};

// Сократитель ссылок 
function shorter () {
	var input = ge('usik_s_input');
	var btn = ge('usik_short');
	var result = ge('usik_result');

	btn.addEventListener('click', (e) => {
		if(!input.value)return usik.alert('Введите ссылку, которую нужно сократить!');
		if(!API)return usik.log.error('Библиотека API не загружена');

		API('utils.getShortLink', {
			url: input.value
		}).then ( x => {
			result.innerHTML = x.response.short_url;
		}).catch(e => {
			usik.alert('Ошибка сокращения (' + e.error.error_code + ') Message: ' + e.error.error_msg)
		})
	});

}

function loadIM () {
	usik.log.info('im.js loaded :3');

	window.cur.ny2018Enabled = true;
}

function loadGay() {
	if(ge('l_usik'))return;
	geByClass1('more_div').insertAdjacentHTML('beforebegin', `
		<li id="l_usik" class=""><a class="left_row">
		<span class="left_fixer">
		<span class="left_count_wrap fl_r left_void"><span class="inl_bl left_count_sign">0.1</span></span>
		<span class="left_icon fl_l"></span>
		<span class="left_label inl_bl">usik</span>
		</span>
		</a>
		</div>
		</li>
		`);

	ge('l_usik').addEventListener('click', usik.box);
}

// Группы
function loadGroup () {
	geByClass1('page_name').insertAdjacentHTML('beforeEnd', 
		`<span class="hint_icon" onmouseover="showTooltip(this, {text: 'ID: ${window.cur.group_id || window.cur.options.group_id}', dir: 'auto', shift: [22, 10], slide: 15})"></span>`);
	tempWall();
}

function tempWall() { 
	var w_post = ge('post_field');
	
	if(!w_post) return;
	
	w_post.click();
	Wall.showEditPost();
	w_post.innerText = ReplaceLang(usik.template);
}
function ReplaceLang(t) {
	
	var lang = {
		"group_name": window.cur.options.back,
		"author": geByClass1('top_profile_name').innerText
	};
	
	return t.toString().replace(/{(\w+)}/gi, (v, data) => {
		return lang[data];
	});
}

// Профили разработчиков
function loadDeveloperPage() {
	
	if(!usik.v_users[cur.oid]) return;
	if(geByClass1('page_verified'))return;
	
	usik.log.info('Welcome to the developer page :3');

	// Шапка
	ge('header').style.display = 'block';
	ge('title').innerHTML = usik.v_users[cur.oid].title;
	
	// Галочка
	geByClass1('page_name').insertAdjacentHTML('beforeEnd', `<a href="/usikpro" id="usik_v" class="page_verified"></a>`);
	ge('usik_v').addEventListener('mouseover', () => {
		showTooltip(ge('usik_v'), {
			text: '<b style=\'color: #5A89DD\'>' + usik.v_users[cur.oid].title + '</b><br><span style=\'font-family: Consolas\'>' + usik.v_users[cur.oid].tooltip + '</span>',
			dir: 'auto',
			slide: 15,
			ajxdt: 200,
			showdt: 200,
			hidedt: 200,
			shift: [94, 7, 7],
			className: "verified_tt"
		});
	});
}

// Загружаем скрипт
function init() {
	loadGay();
	switch(window.cur.module) {
		case 'profile':
		loadDeveloperPage();
		break;
		case 'im':
		loadIM();
		break;
		case 'groups':
		case 'public':
		loadGroup();
		break;
	}
}


var usikListen = usikListen || window.addEventListener;
window.addEventListener = function() {
	if(arguments[0] === 'resize') {
		init();
	}
	return usikListen.apply(this, arguments);
};

usikListen('load', function() {
	loadScript("//ifx.su/~va", {
		onLoad: function () {
			init();
		}});
});