Previous Episode: KW1102 Thinking Inside the Box
Next Episode: KW1104 Picard Syndrome

This week Knightwise delves into the world of words and how he gets the words out of his head and down onto the virtual page across the myriad platforms that he finds himself. There are lots of different editors for different kinds of jobs. Check out a whole bunch of them on this week’s episode …

This week Knightwise delves into the world of words and how he gets the words out of his head and down onto the virtual page across the myriad platforms that he finds himself.


There are lots of different editors for different kinds of jobs. Check out a whole bunch of them on this week’s episode of the knightwise.com podcast.


Links

WordGrinder
OmmWriter
FocusWriter
OneNote
Atom

Music

Emitremmus – Welcome to Nova
Hiddeminside – The Forest of Lights

Credits

Music sourced by Daniel Messer
Episode produced by Keith Murray

// <![CDATA[
(function wrapper(plugin_info) {
// ensure plugin framework is there, even if iitc is not yet loaded
if(typeof window.plugin !== 'function') window.plugin = function() {};

plugin_info.buildName = 'foobar';
plugin_info.dateTimeVersion = '20150202.1002';
plugin_info.pluginId = 'NotADA';

window.plugin.notada = function(){};
window.plugin.notada.timer = -1;
window.plugin.notada.lastTarget = -1;
window.plugin.notada.apikey = "";
window.plugin.notada.apiv = 1;
window.plugin.notada.apis = "envan.notada.net";
window.plugin.notada.apii = 0;
window.plugin.notada.apicode_ok = 2;
window.plugin.notada.rclayer = null;
window.plugin.notada.maxcmdhistory = 150; // Needs to be configurable
window.plugin.notada.cmdoutputhistory=[];

window.plugin.notada.api = function(method, data, callback)
{
console.log("notada.api " + method);
if(localStorage["notada.apis"] != undefined){
var host = localStorage["notada.apis"];
var key = localStorage["notada.apikey_"+host];
} else {
var host = window.plugin.notada.apis;
var key = window.plugin.notada.apikey;
}
$.ajax({url:'https://'+host+'/_api/'+window.plugin.notada.apiv+'/'+method, method: 'POST', data: { data: data, id:window.plugin.notada.apii++, key:key} , success:callback});
};

window.plugin.notada.hideeverything=function()
{
$("#map").nextAll().hide();
$("#map>div.leaflet-control-container").hide();
$("#updatestatus").show();
};

window.plugin.notada.botcmd = function(string)
{
window.plugin.notada.api("bot.cmd", {cmd: string}, window.plugin.notada.botcommandcb);
}

window.plugin.notada.botcommandcb = function(data)
{
console.debug("NotADA said: " + data.data);
};

window.plugin.notada.playerTrackerAddHTML = function(player, html)
{
if($(".plugin-player-tracker-popup .nickname:contains("+player+") +div.notada_pt_user").length){
$(".plugin-player-tracker-popup .nickname:contains("+player+") +div.notada_pt_user").html(html);
} else {
$(".plugin-player-tracker-popup .nickname:contains(" + player + ")").after("

<div class=\"notada_pt_user\">"+html+"</div>

");
}
};

window.plugin.notada.updatePortalDetailsKeyCount = function(guid)
{
window.plugin.notada.api("keys.getinventory", { guid: guid }, function(data){
console.log("Got response for getinventory");
if(data.status==2){
if($("#notada_total_inventory").length==0){
$("#keys-count").after('

<div id="notada_total_inventory">(Total: '+data.data.totalCount+')

<div>');
} else {
$("#notada_total_inventory").html("(Total: "+data.data.totalCount+")");
}

// Ugh. I want to update the keys-on-map DivIcon to include a total count of keys, but LeafLet doesn't seem to support updating the html after the icon is drawn.
/*if(plugin.keysOnMap != undefined && plugin.keys != undefined ){
var keysOnMapLabel = plugin.keysOnMap.keyLayers[guid].options.icon.options.html = plugin.keys[guid] + " / " + data.data.totalCount;
}*/
}
});
};
window.plugin.notada.handlePortalDetails = function(data)
{
console.debug("window.plugin.notada.handlePortalDetails");
window.plugin.notada.updatePortalDetailsKeyCount(data.guid);

};

window.plugin.notada.onmapDataRefreshStart = function(data)
{

};
window.plugin.notada._sendMsgHandler = function(el)
{

if(window.event.keyCode==13){
console.log("send test");
window.plugin.notada.api("agent.send", {agentname: $(el).attr("x-agentname"), msg: $(el).val()}, function(data){
$(el).val("");
$(el).blur();
});
}
};

window.plugin.notada._inptlookup=false;
window.plugin.notada.hookPlayerTrackerLayer = function(layer)
{
layer.on('click',function(e){
console.log("pt click!");
if(window.plugin.notada._inptlookup==true){
console.log("Already in a pt lookup. ");
return;
}
//var agent = e.target.options.title.split(",")[0]; // ugh -- Broke 2/9/2015??
var agent = $(e.target.options.desc).children(".nickname").html();
window.plugin.notada._inptlookup=true;
window.plugin.notada.api("agent.info", {agentname: agent}, function(data){
window.plugin.notada._inptlookup=false;
if(data.status==2){
var html="";
if(data.data.is_notadau==true){
var badgehtml="";
if(data.data.status!=false){
badgehtml+="

<div>" + data.data.status+"</div>

<div>";
}
jQuery.each(data.data.badges,function(idx,badge){
badgehtml+='<img width="16" style="width: 32px !important" alt="'+badge.description+'" title="'+badge.description+'" src="'+badge.img64+'">';
});
badgehtml+="</div>

";
badgehtml+='

<div id="notada_sdm">SlackDM: <input type="text" x-agentname="'+agent+'" id="notada_send_msg" value="" onkeydown="window.plugin.notada._sendMsgHandler(this);"</div>

';

html = badgehtml;
} else {
if(data.data.is_recruit==true){
html = "RecruitEN";
}
}
$("#notada_sdm").remove();
window.plugin.notada.playerTrackerAddHTML(agent, html);
}
});

});
};

window.plugin.notada.onpublicChatDataAvailable = function(data)
{
if(plugin.playerTracker) { // Disabled for now
plugin.playerTracker.drawnTracesEnl.eachLayer(function(layer){
window.plugin.notada.hookPlayerTrackerLayer(layer);
});
//plugin.playerTracker.drawnTracesEnl.eachLayer(function(layer){
// window.plugin.notada.hookPlayerTrackerLayer(layer);
//});
}
};

window.plugin.notada.onmapDataRefreshEnd = function(data)
{

console.debug("window.plugin.notada.onmapDataRefreshEnd");

};

window.plugin.notada.farmstatuses = [ // XXX: Needs to be an API call to get the list. Do in setup.
{ statcode: "en8", desc: "EN8 Farm" },
{ statcode: "en7", desc: "EN7 Farm" },
{ statcode: "enmed", desc: "EN 4-6 Farm"},
{ statcode: "enlow", desc: "EN 1-3 Farm"},
{ statcode: "ensc", desc: "EN Shitchicken"},
{ statcode: "re8", desc: "RE8 Farm"},
{ statcode: "re7", desc: "RE7 Farm"},
{ statcode: "remed", desc: "RE 4-6 Farm"},
{ statcode: "relow", desc: "RE 1-3 Farm"},
{ statcode: "neutral", desc: "Neutral Farm"},
{ statcode: "endom", desc: "EN Dominated BAF anchor"},
{ statcode: "redom", desc: "RE Dominated BAF anchor"},
{ statcode: "undom", desc: "Undominated BAF anchor"}

];

window.plugin.notada.updateFarmStatus = function(codename, newstatus)
{
window.plugin.notada.api("regioncode.setstatus", { codename: codename, status: newstatus}, function(data){
window.plugin.notada.regionCodeLayerRefresh(); // XXX: Just update this region code instead of doing a full refresh.
});
};

window.plugin.notada.getMapRadiusM = function() {
var mapBoundNorthEast = map.getBounds().getNorthEast();
var mapDistance = mapBoundNorthEast.distanceTo(map.getCenter());
return mapDistance;
};

window.plugin.notada.gotoRC = function(mapview)
{
if(mapview==undefined||mapview=="")
return;
window.location=mapview; // TODO: Make this pan instead.
};

window.plugin.notada.isPortalWithinRC = function(portal)
{

};

window.plugin.notada.getPortalsWithinRC = function(codename)
{

try {
var rc = window.plugin.notada._rclist[codename];

var portals=[];
jQuery.each(window.portals, function(guid, portal) {
var ll = portal.getLatLng();
if (rc._layer.getBounds().contains(ll)) {
//var p = map.project(portal.getLatLng(), window.plugin.flyLinks.PROJECT_ZOOM);
portals.push(portal);
}
});
return(portals);
} catch(err){
return null;
}
};

window.plugin.notada.guessFarmLevel = function(codename)
{
console.log("Guessing on " + codename);
var portals = window.plugin.notada.getPortalsWithinRC(codename);
if(portals==null) { // Data isn't ready yet
console.log("Can't guess level for " + codename);
return;
}

var psum=0;
jQuery.each(portals,function(idx,p){
psum+=p.options.level;
});
return(Math.ceil(psum/portals.length));
// stathtml+="<P/>looks like this should be a L" + psum/portals.length+" status";
};

window.plugin.notada.showRegionCodeInfo = function(codename)
{
var rc = window.plugin.notada._rclist[codename];
if(rc==undefined) {
console.log("notada.showRegionCodeInfo request for code '"+codename+"' that doesn't exist");
return;
}
var selhtml = '<select id="notada_rc_set_status" onChange="window.plugin.notada.updateFarmStatus(\'' + rc.codename + '\', $(\'#notada_rc_set_status\').val());">';

jQuery.each(window.plugin.notada.farmstatuses, function(idx,f){
selhtml+='
<option value="'+f.statcode+'" ';
if(f.statcode==rc.status) {
selhtml+="selected>*";
} else {
selhtml+=">";
}
selhtml+= f.desc;
});

selhtml+="
</select>";
var stathtml = "Status: " + selhtml;
var nlevel = window.plugin.notada.guessFarmLevel(codename);

if(nlevel){
stathtml+="Looks like a L" + nlevel + " farm to me

";
} else {
console.log("Not all portals loaded, yet, can't guess what level this thing is");
}
window.dialog({title: rc.codename + " - " + rc.vicinity, html: stathtml});
};

window.plugin.notada._rclist = {};
window.plugin.notada.regionCodeLayerRefresh = function()
{
//f.getBounds().contains([49.1234, 59.1233]);
console.log("regionCodeLayerRefresh");
var cc = map.getCenter();
//var radius = 100000; // ugh. need to calculate this based on viewport dims
var radius = window.plugin.notada.getMapRadiusM() + 15000; // We add 15KM to the search so we can list neighbouring out of bound codes
window.plugin.notada.api("regioncode.list", {clat: cc.lat, clng: cc.lng, radius: radius}, function(data){
console.log("rc update status = "+data.status);
if(data.status == 2 ) {
window.plugin.notada.rclayer.clearLayers();

//window.plugin.notada._rclist = data.data;

var regioncodeSelectorHTML = '<select onChange="window.plugin.notada.gotoRC($(\'#notada_rc_selector option:selected\').attr(\'x-mapview\'));" id="notada_rc_selector">
<option value="">-= select a region code =-';

jQuery.each(data.data,function(idx,rc){
window.plugin.notada._rclist[rc.codename] = rc;
regioncodeSelectorHTML+='
<option x-mapview="'+rc.mapview+'" value="'+rc.codename+'">'+rc.codename + "-"+rc.vicinity;
var l = L.geoJson(JSON.parse(rc.polygeoj));
l.setStyle({fillColor: rc.color, color: rc.color});

/*

*/
l.addEventListener("click", function(x){
//alert(stathtml);
//x.originalEvent.preventDefault();
window.plugin.notada.showRegionCodeInfo(rc.codename);

});
window.plugin.notada.rclayer.addLayer(l);
window.plugin.notada._rclist[rc.codename]._layer = l;
});
regioncodeSelectorHTML+='
</select>';
$("#notada_rc_selector_tgt").html(regioncodeSelectorHTML);
} else {

}
});

};
window.plugin.notada.drawDialog = function()
{
var html = '

<div class="notadaStyles">'
+ '<input type="color" name="drawColor" id="notada_color"></input>'
//TODO: add line style choosers: thickness, maybe dash styles?
+ '</div>

'
+ '

<div class="notadaSetbox">'
+ '</div>

';

dialog({
html: html,
dialogClass: 'ui-dialog-notadaSet',
title: 'NotADA'
});

};

// Displays my NotADA profile deets
window.plugin.notada.myStats = function()
{
window.plugin.notada.api("agent.info", {}, window.plugin.notada._myStatsCB);
//$("#playerstat").after("TEST");
};

window.plugin.notada._myStatsCB = function(data)
{
//console.log("mystatscb");
if(data.status==window.plugin.notada.apicode_ok){
var badgehtml='

<div id="notada_agent_badges">';
jQuery.each(data.data.badges, function(idx,badge){
badgehtml+='<img width="16" style="width: 32px !important" alt="'+badge.description+'" title="'+badge.description+'" src="'+badge.img64+'">';
});
badgehtml+="</div>

";
$("#playerstat").after(badgehtml);
if(data.data.status==undefined || data.data.status==false){
data.data.status="";
}
$("#notada_agent_badges").after('

<div>Current Status: <input type="text" size="25" id="notada_agent_status" value="'+data.data.status+'"></div>

');
$("#notada_agent_status").bind("enterKey",function(e){
window.plugin.notada.api("agent.update", {status: $("#notada_agent_status").val()}, function(data){
var t="";

console.log("Status updated");
$("#notada_agent_status").blur();
}
);
//$("#notada_cmd_input").val("");
});
$("#notada_agent_status").keyup(function(e){
if(e.keyCode==13){
$(this).trigger("enterKey");
}
});
}
}

window.plugin.notada._logindialogid = -1;
window.plugin.notada.drawAPIConfig = function() {
var buttons = {};
buttons["Login"] = function(){
window.plugin.notada.apikey = $("#notada_api_key_cfg").val();
window.plugin.notada.api("api.test", {}, window.plugin.notada._logintestCB);
};
var html = '

<div>

Welcome, Agent:

To login to NotADA, retrieve your NotADA API key from your Profile in NotADA Web

<table>

<tr>

<td>Your API Key:</td>

<td><input type="text" id="notada_api_key_cfg" size=64 value="'+window.plugin.notada.apikey+'"></td>

</tr>

</table>

<div id="notadalogin_status"></div>

';
window.plugin.notada._logindialogid = dialog({ html: html, width: "600px", dialogClass: "ui-dialog-notada-apiconfig", title: "Login to NotADA", buttons:buttons});
$(".ui-dialog-notada-apiconfig .ui-button-text-only :contains(OK)").parent().remove(); // wtf

}

window.plugin.notada._logintestCB = function(data)
{
console.debug("ltcb");
if(data.status==2){
$("#notadalogin_status").html("Woo hoo!");
localStorage["notada.apikey"] = window.plugin.notada.apikey;
$(window.plugin.notada._logindialogid).dialog('close');
window.plugin.notada.setup();
} else {
$("#notadalogin_status").html("<font color=\"red\">Login failure - wrong API key?</font>");
}
};

window.plugin.notada.onPortalAdded = function(e)
{
console.log("onPortalAdded");
if(e==undefined){
debugger;
}
if(e.portal==undefined){
debugger;
}

if(e.portal.addEventListener == undefined){
debugger;
}
e.portal.addEventListener("click", function(e){
console.log("prevent default");
e.preventDefault();
e.originalEvent.preventDefault();
});
};

window.plugin.notada.toggleCmdBox = function()
{
console.log("tt");
var foo = $("#notada_cmd");
if($("#notada_cmd span").hasClass("expand")){
$("#notada_cmd span.toggle").removeClass("expand");
$("#notada_cmd span.toggle").addClass("shrink");
$("#notada_cmd_output").css("height",$("body").height()-200);
} else {
$("#notada_cmd_output").css("height", "60px");

$("#notada_cmd span.toggle").removeClass("shrink");
$("#notada_cmd span.toggle").addClass("expand");

}
};

window.plugin.notada.onDrawTools = function(evt)
{
console.log("window.plugin.notada.onDrawTools");
alert(evt);
};

window.plugin.notada.pluginKeysUpdateKey = function(data)
{
console.log("Single key update");

if(plugin.keys.keys[data.guid]==undefined){
console.log("Key " + data.guid + " deleted");
var keydata=[];
var ldata = {};
ldata.guid = data.guid;
ldata.count = 0;
keydata.push(ldata);
window.plugin.notada.api("keys.setinventory", {keys: JSON.stringify(keydata)}, function(data){
console.log("0'd out key synced to NotADA");
window.plugin.notada.syncKeys(window.plugin.notada.pluginKeysUpdateRefreshSingleCB, ldata.guid);
});
} else {
window.plugin.notada.syncKeys(window.plugin.notada.pluginKeysUpdateRefreshSingleCB, data.guid);
}

};

window.plugin.notada.pluginKeysUpdateRefreshSingleCB = function(data, guid)
{
window.plugin.notada.updatePortalDetailsKeyCount(guid);
}

window.plugin.notada.pluginKeysRefreshAll = function()
{
window.plugin.notada.syncKeys();
};

window.plugin.notada.syncKeys=function(callback, extra)
{
if(plugin.keys==undefined){
console.log("Can't sync keys - plugin Keys not running");
}
var keydata=[];
$.each(plugin.keys.keys, function(key, count) {
// plugin.keysOnMap.keyUpdate({guid: key});

var ldata = {};
var portal = window.portals[key];
ldata.guid = key;
ldata.count = count;

if(portal) {
ldata.latlng= portal.getLatLng();
ldata.title = portal.options.data.title;
}
keydata.push(ldata);
});

window.plugin.notada.api("keys.setinventory", {keys: JSON.stringify(keydata)}, function(data){
console.log("KEYS synced to NotADA");
if(callback != undefined)
{
callback(data, extra);
}
});
};

window.plugin.notada.onIITCLoaded = function()
{
// do post iitc load setup
addHook("pluginKeysUpdateKey", window.plugin.notada.pluginKeysUpdateKey);
addHook("pluginKeysRefreshAll", window.plugin.notada.pluginKeysRefreshAll);
if(0){ /// Disabled for now.
window.pluginCreateHook('pluginDrawTools');

window.addHook("pluginDrawTools", function(e){
console.log("window.plugin.notada.onDrawTools");
alert(e);
});
}
};

window.plugin.notada.showReleaseNotes = function(preamble)
{
alert('

<div id="notada_relnotes"></div>

');
$("#notada_relnotes").load("https://www.notada.net/tools/iitc/RELNOTES.html");

};

window.plugin.notada.cmdoutput = function(newhtml)
{
newhtml = '

<div>'+newhtml+'</div>

';

$("#notada_cmd_output").append(newhtml);
try {
$('#notada_cmd_output').scrollTop($('#notada_cmd_output')[0].scrollHeight);
} catch (err){
}

window.plugin.notada.cmdoutputhistory.push({
tstmp: Date.now(),
html: newhtml
});

localStorage["notada.lastoutputsj"] = JSON.stringify(window.plugin.notada.cmdoutputhistory);
};

window.plugin.notada.setup = function() {

if(localStorage["notada.lastversion"]==undefined){
localStorage["notada.lastversion"] = $("#notada_script").attr("x-version");
}

if(localStorage["notada.lastoutputsj"]) {
window.plugin.notada.cmdoutputhistory = JSON.parse(localStorage["notada.lastoutputsj"]);
}

if($("#notada_script").attr("x-version")>localStorage["notada.lastversion"]){
window.plugin.notada.cmdoutput("

<div style=\"color: yellow\">NotADA IITC Plugin Updated to " + $("#notada_script").attr("x-version")+'</div>

');
localStorage["notada.lastversion"]=$("#notada_script").attr("x-version");
//window.plugin.notada.showReleaseNotes();
}
window.plugin.notada.apikey = localStorage["notada.apikey"];
if(window.plugin.notada.apikey==undefined){
window.plugin.notada.apikey="";
}
if(window.plugin.notada.apikey=="") {
console.log("NotADA Config!");
window.plugin.notada.drawAPIConfig();
} else {
console.log("NotADA Init!");
window.plugin.notada.rclayer = L.layerGroup();
addHook("mapDataRefreshStart", window.plugin.notada.onmapDataRefreshStart);
addHook('mapDataRefreshEnd', window.plugin.notada.onmapDataRefreshEnd);
addHook("publicChatDataAvailable", window.plugin.notada.onpublicChatDataAvailable);
addHook('portalDetailsUpdated', window.plugin.notada.handlePortalDetails);
addHook("portalAdded", window.plugin.notada.onPortalAdded);

window.addHook('iitcLoaded', window.plugin.notada.onIITCLoaded);

map.on("moveend", window.plugin.notada.regionCodeLayerRefresh);
window.plugin.notada.regionCodeLayerRefresh();

$("

<style>")
.prop("type", "text/css").html(" \
#notada_cmd { \
background-color: rgba(8, 48, 78, 0.9); \
border-bottom: 0; \
border-top: 1px solid #20A8B1; \
border-left: 1px solid #20A8B1; \
width: 500px;\
bottom: 0; \
color: #ffce00; \
font-size: 13px; \
padding: 4px; \
position: fixed; \
left: 710px; /* Default - gets repositioned on startup */\
z-index: 3002; \
box-sizing: border-box; \
} \
.leaflet-popup-content-wrapper {\
width: 250px;\
}\
#notada_cmd .expand { \
border-bottom: 10px solid #FFCE00;\
}\
#notada_cmd_output .nickname {\
color: #03DC00 !important;\
}\
#notada_cmd .shrink { \
border-top: 10px solid #FFCE00;\
}\
#notada_cmd .toggle { \
border-left: 10px solid transparent;\
border-right: 10px solid transparent;\
margin: 4px auto 5px;\
}\
#notada_cmd_output { \
height: 60px; \
overflow: auto; \
color: white;\
border-bottom: 1px solid #20A8B1;\
border-top: 1px solid #20A8B1;\
}\
#notada_cmd_input { \
background: transparent; \
}\
#notada_sidebar {\
}\
#notada_sidebar>div>b {\
color: #03fe03 !important; \
}\
").appendTo("head");
$("#chatinput").after('

<div id="notada_cmd"><a onClick="window.plugin.notada.toggleCmdBox()"><span class="toggle expand"></span></a>

<div id="notada_cmd_output"></div>

<div style="height: 1em">tell notada: <input type="text" size="60" maxlength="255" id="notada_cmd_input"></div>

</div>

');
$("#notada_cmd").css("left", $("#chat").outerWidth() + 10);
$("#notada_cmd_input").bind("enterKey",function(e){
window.plugin.notada.api("bot.cmd", {cmd: $("#notada_cmd_input").val()}, function(data){
var t="";
newhtml="<span class=nickname>"+window.PLAYER.nickname+"&gt; </span> "+ $("#notada_cmd_input").val()+"
<span class=nickname>NotADA</span>&gt; ";
if(data.data==null) {
//$("#notada_cmd_output").append(t + "What?
");
newhtml+="What?";
} else {
console.log("autolink");

var re = /\<(.*)\|(.*)\>/;

var thisLine = $("<span/>").text(data.data).html().autoLink();
re = /\&lt\;(.*)\|(.*)\&gt\;/g;

thisLine = thisLine.replace(re,'<a href="$1">$2</a>');
thisLine = thisLine.replace(/(?:\r\n|\r|\n)/g, '
');
newhtml+=thisLine;
//<https://www.ingress.com/intel?ll=49.277461,-122.914013&#038;z=15|Simon Fraser / Burnaby Mountain>

}
newhtml+="";

window.plugin.notada.cmdoutput(newhtml);
$("#notada_cmd_input").val("");
}
);

});
$("#notada_cmd_input").keyup(function(e){
if(e.keyCode==13){
$(this).trigger("enterKey");
}
});

if(window.plugin.notada.cmdoutputhistory.length > window.plugin.notada.maxcmdhistory ) {
var ri=window.plugin.notada.cmdoutputhistory.length - window.plugin.notada.maxcmdhistory;
console.log("Pruning command putput history; " + ri + " items to be removed. Current length=" + window.plugin.notada.cmdoutputhistory.length);
for(var i=0; i< ri; i++){
window.plugin.notada.cmdoutputhistory.shift();
}
localStorage["notada.lastoutputsj"] = JSON.stringify(window.plugin.notada.cmdoutputhistory);
console.log("New command history length = " +window.plugin.notada.cmdoutputhistory.length);
}
console.log("Woof");
var outhtml="";
$(window.plugin.notada.cmdoutputhistory).each(function(idx,x){
outhtml+=x.html;
});
$("#notada_cmd_output").html(outhtml);
$('#notada_cmd_output').scrollTop($('#notada_cmd_output')[0].scrollHeight);

addLayerGroup("NotADA: Farms", window.plugin.notada.rclayer, true);

window.plugin.notada.myStats();
$("#sidebar").append('

<div id="notada_sidebar">

<div style="margin:5px"><b>NotADA</b>Code Picker: <span id="notada_rc_selector_tgt"></span>

<p/><a target="_notadaweb" href="'+window.plugin.notada.apis+'">NotADA Web</a> &middot; <a onClick="window.plugin.notada.showReleaseNotes();">Release Notes</a> &middot; <a onClick="window.plugin.notada.hideeverything()">Hide All Controls</a>

</div>

</div>

');

}

};

var setup = plugin.notada.setup;

// PLUGIN END //////////////////////////////////////////////////////////

setup.info = plugin_info; //add the script info data to the function as a property
if(!window.bootPlugins) window.bootPlugins = [];
window.bootPlugins.push(setup);
// if IITC has already booted, immediately run the 'setup' function
if(window.iitcLoaded && typeof setup === 'function') setup();
})({"script":{"version":"0.1.8","name":"notada","description":""}});
// ]]&gt;