// ==UserScript==
// @name IITC plugin: Route planner
// @version 0.1.2
// @author Odrick
// @description Route planner
// @match https://*.ingress.com/intel*
// @match http://*.ingress.com/intel*
// @match https://*.ingress.com/mission/*
// @match http://*.ingress.com/mission/*
// @id iitc-plugin-route-planner@odrick
// @category Layer
// @license MIT
// @include https://*.ingress.com/intel*
// @include http://*.ingress.com/intel*
// @include https://*.ingress.com/mission/*
// @include http://*.ingress.com/mission/*
// @grant none
// @namespace https://greasyfork.org/users/410740
// ==/UserScript==
!function(n){var t={};function r(e){if(t[e])return t[e].exports;var o=t[e]={i:e,l:!1,exports:{}};return n[e].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=n,r.c=t,r.d=function(n,t,e){r.o(n,t)||Object.defineProperty(n,t,{enumerable:!0,get:e})},r.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},r.t=function(n,t){if(1&t&&(n=r(n)),8&t)return n;if(4&t&&"object"==typeof n&&n&&n.__esModule)return n;var e=Object.create(null);if(r.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:n}),2&t&&"string"!=typeof n)for(var o in n)r.d(e,o,function(t){return n[t]}.bind(null,o));return e},r.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(t,"a",t),t},r.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},r.p="",r(r.s=2)}([function(n,t,r){var e=r(4);n.exports="string"==typeof e?e:e.toString()},function(n,t,r){var e=r(6);n.exports="string"==typeof e?e:e.toString()},function(n,t,r){n.exports=r(3)},function(n,t,r){"use strict";r.r(t);var e=r(0),o=r.n(e),i=r(1),a=r.n(i);var l=document.createElement("script"),u={};"undefined"!=typeof GM_info&&GM_info&&GM_info.script&&(u.script={version:GM_info.script.version,name:GM_info.script.name,description:GM_info.script.description}),u.css=o.a,u.ui=a.a;var d=document.createTextNode("("+function(n){"function"!=typeof window.plugin&&(window.plugin=function(){}),n.buildName="Route planner",n.dateTimeVersion="20200402163000",n.pluginId="iitc-plugin-route-planner@odrick";var t=null,r=[],e=[],o=!1,i={},a=function(n){n.portal.on("click",l)},l=function(n){if(o&&!function(n){for(var t=0;t<r.length;t++){if(r[t].guid===n)return!0}return!1}(n.target.options.guid)){var t={guid:n.target.options.guid,title:n.target.options.data.title,lat:n.target.options.data.latE6/1e6,lng:n.target.options.data.lngE6/1e6};t.title||(t.title=t.lat+", "+t.lng,t.titleFake=!0),r.push(t),u(t),s(),d()}},u=function(n){var t=document.createElement("div");t.addEventListener("click",(function(){window.map.setView({lat:n.lat,lng:n.lng},window.map.getZoom())})),t.guid=n.guid,t.className="routePlannerListItem",$(t).append('<div class="routePlannerListItemTitle">'.concat(n.title,"</div>")),$(t).append('<div class="routePlannerListItemControls"><a href="#" onclick="window.plugin.routePlanner.removePoint(\''.concat(n.guid,"')\">X</a></div>")),$("#routePlannerList").append(t),t.scrollIntoView()},d=function(){t.clearLayers();for(var n=[],e=0;e<r.length;e++){var o=r[e];L.circleMarker(new L.LatLng(o.lat,o.lng),{color:"#ee6666",opacity:1,weight:5,fill:!0,dashArray:"5, 5",interactive:!1,clickable:!1,radius:14}).addTo(t),n.push(new L.LatLng(o.lat,o.lng))}L.polyline(n,{color:"#ee6666",opacity:1,weight:2,fill:!1,interactive:!1,clickable:!1}).addTo(t),c()},c=function(){e=[];for(var n=[],t=0;t<r.length;t++){var o=r[t];if(n.length||n.push(""),n.push(o.lat+","+o.lng),10===n.length||t>=r.length-1){var i="https://www.google.com/maps/dir/"+n.join("/");i+="/@"+(n[0]||n[1])+",18z/",e.push(i),n=[]}}$("#routePlannerLinks").html("");for(var a=0;a<e.length;a++){var l="Navigation";e.length>1&&(l+=a+1);var u='<a href="'+e[a]+'" target="_blank">'+l+"</a>";e.length>1&&a<e.length-1&&(u+=", "),$("#routePlannerLinks").append(u)}};i.removePoint=function(n){for(var t=0;t<r.length;t++){if(r[t].guid===n){r.splice(t,1);for(var e=document.querySelector("#routePlannerList"),o=0;o<e.children.length;o++){var i=e.children[o];i.guid===n&&e.removeChild(i)}return s(),void d()}}},i.showBox=function(){o=!0,$("#routePlannerBox").show(),window.isSmartphone()&&window.show("map")},i.hideBox=function(){o=!1,$("#routePlannerBox").hide()},i.clear=function(){r=[],$("#routePlannerList").html(""),s(),d()},i.export=function(){download(JSON.stringify(r),"route-plan.json")},i.import=function(){$("#importInput").click()},i.doImport=function(){var n=$("#importInput").get(0).files[0],t=new FileReader;t.readAsText(n),t.onload=function(){try{var n=JSON.parse(t.result);n&&Array.isArray(n)&&(f(n),s())}catch(n){}},t.onerror=function(){console.log(t.error)}},i.copy=function(){var n=document.createElement("textarea");n.value=e.join("\n\n"),n.style.position="fixed",document.body.appendChild(n),n.focus(),n.select();try{if(document.execCommand("copy")){var t=document.createElement("div");t.innerHTML="Navigation copied",document.body.appendChild(t),t.style.position="fixed",t.style.display="block",t.style.left="50%",t.style.top="50%",t.style.transform="translate(-50%, -50%)",t.style.zIndex=100500,t.style.padding="4px",t.style.background="#fff",t.style.color="#000",setTimeout((function(){document.body.removeChild(t)}),1e3)}}catch(n){}document.body.removeChild(n)};var p=function(n,t){for(var e=t.item[0].guid,o=-1,i=0;i<r.length;i++){r[i].guid===e&&(o=i)}var a=t.item.index();if(o>=0){if(a===o)return;var l=r[o];r.splice(o,1),r.splice(a,0,l)}s(),d()},s=function(){localStorage.setItem("iitc-plugin-route-planner",JSON.stringify(r))},f=function(n){r=n;for(var t=0;t<r.length;t++)u(r[t]);d()};function g(){$.getScript("https://cdnjs.cloudflare.com/ajax/libs/downloadjs/1.4.8/download.min.js"),$("<style>").prop("type","text/css").html(n.css).appendTo("head"),$("body").append(n.ui),$("#routePlannerBox").draggable({handle:".handle",containment:"window"}),$("#routePlannerList").sortable({update:p}),$("#toolbox").append('<a onclick="window.plugin.routePlanner.showBox();return false;">Route planner</a>'),t=new L.LayerGroup,window.addLayerGroup("Route planner",t,!1),window.addHook("portalAdded",a),window.addHook("paneChanged",(function(n){"map"!==n&&o&&$("#routePlannerBox").hide(),"map"===n&&o&&$("#routePlannerBox").show()})),function(){var n=localStorage.getItem("iitc-plugin-route-planner");if(n)try{f(JSON.parse(n))}catch(n){r=[]}}(),d()}setInterval((function(){for(var n=0;n<r.length;n++){var t=r[n];if(t.titleFake){var e=window.portals[t.guid];if(e&&e.options&&e.options.data&&e.options.data.title){t.title=e.options.data.title,t.titleFake=!1,delete t.titleFake,s();for(var o=document.querySelector("#routePlannerList"),i=0;i<o.children.length;i++){var a=o.children[i];a.guid===t.guid&&(a.querySelector(".routePlannerListItemTitle").innerHTML=t.title)}}}}}),1e3),window.plugin.routePlanner=i,g.info=n,window.bootPlugins||(window.bootPlugins=[]),window.bootPlugins.push(g),window.iitcLoaded&&g()}+")("+JSON.stringify(u)+")");l.appendChild(d),(document.body||document.head||document.documentElement).appendChild(l)},function(n,t,r){(t=r(5)(!1)).push([n.i,"#routePlannerBox {\r\n\tdisplay: none;\r\n\tposition: absolute!important;\r\n\tz-index: 100501;\r\n\ttop: 50px;\r\n\tleft: 60px;\r\n\twidth: 300px;\r\n\toverflow: hidden;\r\n\tbackground: rgba(8, 48, 78, .9);\r\n\tborder: 1px solid #20a8b1;\r\n\tcolor: #ffffff;\r\n\tpadding: 8px;\r\n\tfont-size: 13px;\r\n\t-webkit-touch-callout: none;\r\n\t-webkit-user-select: none;\r\n\t-khtml-user-select: none;\r\n\t-moz-user-select: none;\r\n\t-ms-user-select: none;\r\n\tuser-select: none\r\n}\r\n\r\n#routePlannerBox a.btn {\r\n color: #ffce00;\r\n}\r\n\r\n#routePlannerBox #routePlannerTopBar {\r\n\theight: 15px!important\r\n}\r\n\r\n#routePlannerBox #routePlannerTopBar * {\r\n\theight: 14px!important\r\n}\r\n\r\n#routePlannerBox .handle {\r\n\twidth: 89%;\r\n\ttext-align: center;\r\n\tcolor: #fff;\r\n\tline-height: 6px;\r\n\tcursor: move;\r\n\tfloat: right\r\n}\r\n\r\n#routePlannerBox #routePlannerTopBar .btn {\r\n\tdisplay: block;\r\n\twidth: 10%;\r\n\tcursor: pointer;\r\n\tcolor: #20a8b1;\r\n\tfont-weight: 700;\r\n\ttext-align: center;\r\n\tline-height: 13px;\r\n\tfont-size: 18px;\r\n\tborder: 1px solid #20a8b1;\r\n\tfloat: left\r\n}\r\n\r\n#routePlannerBox #routePlannerTopBar .btn:hover {\r\n\tcolor: #ffce00;\r\n\ttext-decoration: none\r\n}\r\n\r\n#routePlannerBox #routePlannerTitle {\r\n\tfont-size: 14px;\r\n padding-top: 5px;\r\n color: #0099ff;\r\n}\r\n\r\n#importInput {\r\n visibility: hidden;\r\n width: 2px;\r\n height: 1px;\r\n}\r\n\r\n#routePlannerToolBox {\r\n clear: both;\r\n padding: 2px;\r\n text-align: right;\r\n}\r\n\r\n#routePlannerList {\r\n width: 300px;\r\n height: 350px;\r\n margin: auto;\r\n border: 1px solid #20a8b1;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n margin-top: 4px;\r\n clear: both;\r\n}\r\n\r\n.routePlannerListItem {\r\n cursor: pointer;\r\n}\r\n\r\n.routePlannerListItemTitle {\r\n display: inline-block;\r\n padding-left: 4px;\r\n width: 250px;\r\n overflow: hidden;\r\n box-sizing: border-box;\r\n white-space: nowrap;\r\n}\r\n\r\n.routePlannerListItemControls {\r\n display: inline-block;\r\n text-align: center;\r\n width: 20px;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n}\r\n\r\n#routePlannerLinks {\r\n min-height: 14px;\r\n padding-top: 8px;\r\n}\r\n\r\n@media only screen and (max-width: 480px) {\r\n #routePlannerBox {\r\n left: 50%;\r\n top: auto;\r\n right: 0px;\r\n bottom: 20px;\r\n width: 95%;\r\n transform: translate(-50%, 0%);\r\n }\r\n\r\n #routePlannerList {\r\n height: 150px;\r\n width: 98%;\r\n }\r\n}",""]),n.exports=t},function(n,t,r){"use strict";n.exports=function(n){var t=[];return t.toString=function(){return this.map((function(t){var r=function(n,t){var r=n[1]||"",e=n[3];if(!e)return r;if(t&&"function"==typeof btoa){var o=(a=e,l=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),u="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(l),"/*# ".concat(u," */")),i=e.sources.map((function(n){return"/*# sourceURL=".concat(e.sourceRoot||"").concat(n," */")}));return[r].concat(i).concat([o]).join("\n")}var a,l,u;return[r].join("\n")}(t,n);return t[2]?"@media ".concat(t[2]," {").concat(r,"}"):r})).join("")},t.i=function(n,r,e){"string"==typeof n&&(n=[[null,n,""]]);var o={};if(e)for(var i=0;i<this.length;i++){var a=this[i][0];null!=a&&(o[a]=!0)}for(var l=0;l<n.length;l++){var u=[].concat(n[l]);e&&o[u[0]]||(r&&(u[2]?u[2]="".concat(r," and ").concat(u[2]):u[2]=r),t.push(u))}},t}},function(n,t){n.exports='<div id="routePlannerBox">\r\n <div id="routePlannerTopBar">\r\n <a id="routePlannerMin" class="btn" onclick="window.plugin.routePlanner.hideBox();return false;" title="Minimize">-</a>\r\n <div class="handle"><div id="routePlannerTitle" class="ui-dialog-title ui-dialog-title-active">Route planner</div></div>\r\n </div>\r\n <div id="routePlannerToolBox">\r\n <input type="file" id="importInput" visbility="hidden" onchange="window.plugin.routePlanner.doImport();return false;"/>\r\n\r\n <a href="#" onclick="window.plugin.routePlanner.copy();return false;">Copy</a>\r\n ::\r\n <a href="#" onclick="window.plugin.routePlanner.export();return false;">Export</a>\r\n ::\r\n <a href="#" onclick="window.plugin.routePlanner.import();return false;">Import</a>\r\n ::\r\n <a href="#" onclick="window.plugin.routePlanner.clear();return false;">Clear</a>\r\n </div>\r\n <div id="routePlannerList"></div>\r\n <div id="routePlannerLinks"></div>\r\n</div>'}]);