// ==UserScript==

// @name TagPro Chat Macros Userscript

// @namespace http://www.reddit.com/user/contact_lens_linux/

// @description Help your team with quick chat macros.

// @include http://tagpro-*.koalabeast.com:*

// @include http://tangent.jukejuice.com:*

// @include http://maptest.newcompte.fr:*

// @license GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html

// @author steppin, Watball

// @version 0.4

// ==/UserScript==

(function() {

function contentEval(source) {

// Check for function input.

if ('function' == typeof source) {

// Execute this function with no arguments, by adding parentheses.

// One set around the function, required for valid syntax, and a

// second empty set calls the surrounded function.

source = '(' + source + ')();'

}

// Create a script node holding this source code.

var script = document.createElement('script');

script.setAttribute("type", "application/javascript");

script.textContent = source;

// Insert the script node into the page, so it will run, and immediately

// remove it to clean up.

document.body.appendChild(script);

document.body.removeChild(script);

}

function actualScript() {

var macros = {};

macros[50] = {"message": "Business and math are INTEGRAL to who I am.", "toAll": true}; // 2

macros[51] = {"message": " But you can't truly know me without knowing my musical side. ", "toAll": true}; // 3

macros[52] = {"message": "At launch I can help lead our team. I can help us achieve our dreams.", "toAll": true}; // 4

macros[53] = {"message": " As officer in my DECA class I can manage projects and organize.", "toAll": true}; // 5

macros[54] = {"message": " I work hard to get things done. I've built planes helped vehicles run", "toAll": true}; // 6

macros[55] = {"message": " Putting hours in to make things work. More than just one time", "toAll": true}; // 7

macros[56] = {"message": " I've helped teams work together. Fixing conflicts to help us succeed.", "toAll": true}; // 8

macros[57] = {"message": "Collaboration is the key. I'll help us work as one to get stuff done.", "toAll": true}; // 9

macros[48] = {"message": "Teaching is my passion. I've designed lectures and taught a class", "toAll": true}; // 0

macros[81] = {"message": " I want to make this a business plan. ", "toAll": true}; // Q

macros[69] = {"message": "With MIT Launch team I'll make my vision reality. ", "toAll": true}; // E

macros[82] = {"message": "Teaching math with technology. Launch class, this is me.", "toAll": true}; // R

macros[89] = {"message": "Stick with me I guarantee. Work together and we will succeed.", "toAll": true}; // Y

macros[85] = {"message": "HI MY NAME IS PAOLO ADAJAR", "toAll": true}; // U

// Game bindings overriding adapted from JohnnyPopcorn's NeoMacro https://gist.github.com/JohnnyPopcorn/8150909

var handlerbtn = $('#macrohandlerbutton');

handlerbtn.keydown(keydownHandler)

.keyup(keyupHandler);

handlerbtn.focus();

$(document).keydown(documentKeydown);

function documentKeydown(event) {

if (!tagpro.disableControls) {

handlerbtn.focus(); // The handler button should be always focused

}

}

function keydownHandler(event) {

var code = event.keyCode || event.which;

if (code in macros && !tagpro.disableControls) {

chat(macros[code]);

event.preventDefault();

event.stopPropagation();

//console.log(macros[code]);

}

}

function keyupHandler(event) {

if (event.keyCode in macros && !tagpro.disableControls) {

event.preventDefault();

event.stopPropagation();

}

}

var lastMessage = 0;

var active = false;

function chat(chatMessage) {

var limit = 500 + 10;

var now = new Date();

var timeDiff = now - lastMessage;

if (timeDiff > limit) {

tagpro.socket.emit("chat", chatMessage);

lastMessage = new Date();

} else if (timeDiff >= 0 && !active) {

active = true;

setTimeout(function(chatMessage) { chat(chatMessage); active = false }, limit - timeDiff, chatMessage);

}

}

}

// This dummy input will handle macro keypresses

var btn = document.createElement("input");

btn.style.opacity = 0;

btn.style.position = "absolute";

btn.style.top = "-100px";

btn.style.left = "-100px";

btn.id = "macrohandlerbutton";

document.body.appendChild(btn);

contentEval(actualScript);