spiperMenu

planets.nu menu for plugins this handles all of the menu controls.

// ==UserScript==
// @name          spiperMenu
// @description   planets.nu menu for plugins this handles all of the menu controls.
//			      The only thing child scripts need to call is 
//				  vgapMap.prototype.addTool(text, class, function)
// 				  if you want to hook to the global clear function use "_massClear" 
// 				  as your class name when you call addTool
//
// @example		  vgapMap.prototype.addTool(menuText, class, function);
// @example		  vgapMap.prototype.addTool(ignored, "_massClear", clearFunction);
// @include       http://play.planets.nu/*
// @include 	  http://test.planets.nu/*
// @include 	  http://planets.nu/*
// @version       3.0.0
// @homepage      https://greasyfork.org/en/users/32642-stephen-piper
// @namespace https://greasyfork.org/en/users/32642-stephen-piper
// ==/UserScript==

function wrapper() {
  var showReady = false;
  var showMenu = false;
  var clearList = [];

  function spTools() {
  }
  spTools.prototype = {

    // this handles all of the menu controls. The only thing child scripts
    // need to call is vgapMap.prototype.addTool(text, class, function)

    loadControls : function() {
      // debugger;

      var a = "<div id='spControls'><div id='spToolsMenu'>sp Tools</div><ul id='spTools'></ul></div>";
      $(a).appendTo("#PlanetsContainer");

      var s = {
	"top" : "0px",
	"display" : "block",
	"position" : "absolute",
	"right" : "260px",
	"color" : "rgb(255,255,255)",
	"z-index" : "0",
	"width" : "100px",
	"background-color" : "rgb(51,51,51)",
	"border-bottom-left-radius" : "10px",
	"border-bottom-right-radius" : "10px",
	"text-align" : "center",
      };
      $("#spControls").css(s);

      s = {
	"display" : "block",
	"width" : "90px",
	"text-align" : "center",
	"font-size" : "11px",
	"list-style" : "none",
	"line-height" : "20px",
	"padding" : "0",
	"margin" : "5px",
	"cursor" : "default",
      };
      $("#spTools").css(s);

      s = {
	"display" : "block",
	"padding" : "0",
	"line-height" : " 38px",
	"width" : "80px",
	"background-color" : "rgb(51,51,51)",
	"cursor" : "default",
      };
      $("#spToolsMenu").css(s);

      s = {
	"border-bottom-style" : "groove",
	"line-height" : "24px",
      };
      $("#spTools li").css(s);

      this.clearControls();

      $("#spControls").mouseenter(function() {
        $("#spControls").css("cursor:pointer");
      });

      $("#spControls").mouseleave(function() {
	$("#spControls").css("cursor:default");
      });

      $("#spToolsMenu").mousedown(function() {
	spTools.prototype.toggleMenu();
      });

      // text, class, function
      vgaPlanets.prototype = {
	spMenuItem : function(c, a, b) {
	  spTools.prototype.addTool(c, a, b);
	}
      };


      this.addTool("Read Only", "spTools", function() {
	vgap.readOnly = true;
	vgap.indicator.text("Read Only");
	vgap.indicateOn();
      });

      this.addTool("Clear All", "clearAll", function() {
	for (i = 0; i < clearList.length; ++i)
	  clearList[i]();
	vgap.map.draw();
      });
    },

    addTool : function(c, a, b) {
      if (a == "_massClear") {
	clearList.push(b);
      } else {
	var html = $("<li class='" + a + "'>" + c + "</li>").tclick(b).appendTo("#spTools");

	html.mouseenter(function() {
	  var border = {
	    "border-style" : "inset",
	  }
	  html.css(border);
	});

	html.mouseleave(function() {
	  var border = {
	    "border-style" : "none",
	  }
	  html.css(border);
	});
      }
    },

    // show hide menu when top is clicked
    toggleMenu : function() {
      if (showMenu) {
	showMenu = false;
	$("#spTools").hide();
      } else {
	showMenu = true;
	$("#spTools").show();
      }
    },

    clearControls : function() {

     showMenu = false;
      $("#spControls").hide();
      $("#spTools").hide();

      this.clearData();
    },

    clearData : function() {
      showReady = false;
      showMenu = false;
    },

  };

  var oldShowMap = vgaPlanets.prototype.showMap;
  vgaPlanets.prototype.showMap = function() {
    oldShowMap.apply(this, arguments);

    $("#spControls").show();
  };

  var oldShowDashboard = vgaPlanets.prototype.showDashboard;
  vgaPlanets.prototype.showDashboard = function() {
    oldShowDashboard.apply(this, arguments);

    $("#spControls").hide();
  };

  var oldLoad = vgapMap.prototype.load;
  vgapMap.prototype.load = function() {
    oldLoad.apply(this, arguments);

    $("#MapTip").remove();
    vgap.map.setZoom(1);
    vgap.map.centerMap(1860, 2646);
  };

  var oldLoadControls = vgapMap.prototype.loadControls;
  vgapMap.prototype.loadControls = function() {

    spTools.prototype.loadControls();
    oldLoadControls.apply(this, arguments);
  };

};

var script = document.createElement("script");
script.type = "application/javascript";
script.textContent = "(" + wrapper + ")();";

document.body.appendChild(script);