Wazebar

try to take over the world!

当前为 2017-02-23 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Wazebar
  3. // @namespace https://greasyfork.org/users/30701-justins83-waze
  4. // @version 0.1.6
  5. // @description try to take over the world!
  6. // @author JustinS83
  7. // @include https://www.waze.com/editor/*
  8. // @include https://www.waze.com/*/editor/*
  9. // @exclude https://www.waze.com/user/editor*
  10. // @grant GM_xmlhttpRequest
  11. // ==/UserScript==
  12.  
  13. var WazeBarSettings = [];
  14.  
  15. (function() {
  16. 'use strict';
  17.  
  18. function bootstrap(tries) {
  19. tries = tries || 1;
  20.  
  21. if (W && W.map &&
  22. W.model && W.loginManager.user &&
  23. $ &&
  24. $('.app.container-fluid.show-sidebar').length > 0) {
  25. init();
  26. } else if (tries < 1000) {
  27. setTimeout(function () {bootstrap(tries++);}, 200);
  28. }
  29. }
  30.  
  31. bootstrap();
  32.  
  33. function init(){
  34. LoadSettingsObj();
  35. BuildWazebar();
  36. $('#sidebar').css('height', 'calc(100% - 20px)');
  37. BuildSettingsInterface();
  38. }
  39.  
  40. function BuildWazebar(){
  41. $('#Wazebar').remove();
  42. var $Wazebar = $("<div>", {style:"min-height:20px", id:"Wazebar"});
  43. $Wazebar.html([
  44. '<div style="display:inline; margin-left:3px; cursor:pointer;" id="WazeBarSettingsButton"><i class="fa fa-cog" aria-hidden="true"></i></div>',
  45. '<div style="display:inline; padding-right:5px; margin-right:5px; border-right:thin solid grey;" id="Inbox"><a href="https://www.waze.com/forum/ucp.php?i=pm&folder=inbox" target="_blank">Forum Inbox</a></div>',
  46. WazeBarSettings.scriptsForum ? '<div style="display:inline; padding-right:5px; margin-right:5px; border-right:thin solid grey;" id="Scripts"><a href="https://www.waze.com/forum/viewforum.php?f=819" target="_blank">Scripts Forum</a></div>' : '',
  47. BuildRegionForumEntries(),
  48. BuildStateForumEntries(),
  49. BuildStateUnlockEntries(),
  50. BuildRegionWikiEntries(),
  51. BuildStateWikiEntries(),
  52. '<div style="display:inline;" id="WazebarStatus">NA Server Update: </div>'
  53. ].join(' '));
  54.  
  55. $('.app.container-fluid.show-sidebar').before($Wazebar);
  56.  
  57. GetPMCount();
  58. checkForums();
  59. setInterval(GetPMCount,60000);
  60. setInterval(checkForums, 120000);
  61.  
  62. GM_xmlhttpRequest({
  63. method: "GET",
  64. url: 'https://wazestatus.wordpress.com/category/main/feed',
  65. onload: ParseStatusFeed
  66. });
  67.  
  68. $('#WazeBarSettingsButton').click(function(){
  69. $('#WazeBarSettings').css({'visibility':'visible'});
  70. SelectedRegionChanged();
  71. setChecked('ScriptsForum', WazeBarSettings.scriptsForum);
  72. });
  73. }
  74.  
  75. function GetPMCount(){
  76. $.get('https://www.waze.com/forum/ucp.php?i=pm&folder=inbox', function(Inbox){
  77. if(Inbox.indexOf("Inbox (") != -1){
  78. var count = Inbox.match(/Inbox \((\d+)\)/)[1];
  79. $('#PMCount').remove();
  80. $('#Inbox a').append("<span style='color:red;font-weight:bold;' id='PMCount'> (" + count + ")</span>");
  81. }
  82. else
  83. $('#PMCount').remove();
  84. });
  85. }
  86.  
  87. function checkForums(){
  88. if(WazeBarSettings.scriptsForum)
  89. checkUnreadTopics("https://www.waze.com/forum/viewforum.php?f=819", "Scripts", "ScriptsCount"); //Scripts
  90.  
  91. checkUnreadTopics("https://www.waze.com/forum/viewforum.php?f=943", "GLR", "GLRCount"); //GLR
  92.  
  93. Object.keys(WazeBarSettings.header).forEach(function(state,index) {
  94. if(WazeBarSettings.header[state].forum)
  95. checkUnreadTopics(WazeBarSettings.header[state].forum, state + 'Forum', state+'ForumCount');
  96.  
  97. if(WazeBarSettings.header[state].unlock){
  98. var url = "https://www.waze.com/forum/search.php?keywords=" + state.replace(' ', '+') + "&terms=all&author=&sv=0&fid%5B%5D=622&sc=0&sf=all&sr=topics&sk=t&sd=d&st=0&ch=300&t=0&submit=Search";
  99. if(state === "Virginia")
  100. url = "https://www.waze.com/forum/search.php?keywords=West%2BVirginia&terms=all&author=&sv=0&fid%5B%5D=622&sc=0&sf=all&sr=topics&sk=t&sd=d&st=0&ch=300&t=0&submit=Search";
  101. checkUnreadTopics(url, state+'Unlock', state+'UnlockCount');
  102. }
  103. });
  104. Object.keys(WazeBarSettings.header.region).forEach(function(region,index){
  105. if(WazeBarSettings.header.region[region].forum)
  106. checkUnreadTopics(WazeBarSettings.header.region[region].forum, region + 'Forum', region+'ForumCount');
  107. });
  108. }
  109.  
  110. function checkUnreadTopics(path, parentID, spanID){
  111. var count = 0;
  112. $.get(path, function(page){
  113. var result = page.match(/topic_unread/g);
  114. count += result? result.length :0;
  115. result = page.match(/sticky_unread/g);
  116. count += result? result.length :0;
  117. result = page.match(/announce_unread/g);
  118. count += result? result.length :0;
  119.  
  120. $('#' + spanID).remove();
  121. if(count > 0)
  122. $('#'+parentID+' a').append("<span style='color:red;font-weight:bold;' id='" + spanID + "'> (" + count + ")</span>");
  123. });
  124.  
  125. return count;
  126. }
  127.  
  128. function ParseStatusFeed(data){
  129. var re = /<title>NA map tiles were successfully updated to:(.*?)<\/title>/;
  130. var result = data.responseText.match(re)[1].trim();
  131. $('#WazebarStatus').append(result);
  132. }
  133.  
  134. function BuildStateForumEntries(){
  135. var stateForums = "";
  136. Object.keys(WazeBarSettings.header).forEach(function(state,index) {
  137. if(WazeBarSettings.header[state].forum)
  138. stateForums += '<div style="display:inline; padding-right:5px; margin-right:5px; border-right:thin solid grey;" id="' + state + 'Forum"><a href="' + WazeBarSettings.header[state].forum + '" target="_blank">' + WazeBarSettings.header[state].abbr + ' Forum</a></div>';
  139. });
  140. return stateForums;
  141. }
  142.  
  143. function BuildStateWikiEntries(){
  144. var stateWikis = "";
  145. Object.keys(WazeBarSettings.header).forEach(function(state,index) {
  146. if(WazeBarSettings.header[state].wiki)
  147. stateWikis += '<div style="display:inline; padding-right:5px; margin-right:5px; border-right:thin solid grey;"><a href="' + WazeBarSettings.header[state].wiki + '" target="_blank">' + WazeBarSettings.header[state].abbr + ' Wiki</a></div>';
  148. });
  149. return stateWikis;
  150. }
  151.  
  152. function BuildStateUnlockEntries(){
  153. var stateUnlocks = "";
  154. Object.keys(WazeBarSettings.header).forEach(function(state,index) {
  155. if(WazeBarSettings.header[state].unlock){
  156. if(state !== "Virginia")
  157. stateUnlocks += '<div style="display:inline; padding-right:5px; margin-right:5px; border-right:thin solid grey;" id="' + state + 'Unlock"><a href="https://www.waze.com/forum/search.php?keywords=' + state.replace(' ', '+') + '&terms=all&author=&sv=0&fid%5B%5D=622&sc=0&sf=all&sr=topics&sk=t&sd=d&st=0&ch=300&t=0&submit=Search" target="_blank">' + WazeBarSettings.header[state].abbr + ' Unlock</a></div>';
  158. else
  159. stateUnlocks += '<div style="display:inline; padding-right:5px; margin-right:5px; border-right:thin solid grey;" id="' + state + 'Unlock"><a href="https://www.waze.com/forum/search.php?keywords=West%2BVirginia&terms=all&author=&sv=0&fid%5B%5D=622&sc=0&sf=all&sr=topics&sk=t&sd=d&st=0&ch=300&t=0&submit=Search" target="_blank">' + WazeBarSettings.header[state].abbr + ' Unlock</a></div>';
  160. //stateUnlocks += '<div style="display:inline; padding-right:5px; margin-right:5px; border-right:thin solid grey;"><a href="' + WazeBarSettings.header[state].wiki + '" target="_blank">' + WazeBarSettings.header[state].abbr + ' Wiki</a></div>';
  161. }
  162. });
  163. return stateUnlocks;
  164. }
  165.  
  166. function BuildRegionForumEntries(){
  167. //'<div style="display:inline; padding-right:5px; margin-right:5px; border-right:thin solid grey;" id="GLR"><a href="https://www.waze.com/forum/viewforum.php?f=943" target="_blank">GLR Forum</a></div>',
  168. var regionForums = "";
  169. if(WazeBarSettings.header.region){
  170. Object.keys(WazeBarSettings.header.region).forEach(function(region,index) {
  171. if(WazeBarSettings.header.region[region].forum)
  172. regionForums += '<div style="display:inline; padding-right:5px; margin-right:5px; border-right:thin solid grey;" id="' + region + 'Forum"><a href="' + WazeBarSettings.header.region[region].forum + '" target="_blank">' + WazeBarSettings.header.region[region].abbr + ' Forum</a></div>';
  173. });
  174. }
  175. return regionForums;
  176. }
  177.  
  178. function BuildRegionWikiEntries(){
  179. //'<div style="display:inline; padding-right:5px; margin-right:5px; border-right:thin solid grey;"><a href="https://wazeopedia.waze.com/wiki/USA/USA/Great_Lakes" target="_blank">GLR Wiki</a></div>',
  180. var regionWikis = "";
  181. if(WazeBarSettings.header.region){
  182. Object.keys(WazeBarSettings.header.region).forEach(function(region,index) {
  183. if(WazeBarSettings.header.region[region].wiki)
  184. regionWikis += '<div style="display:inline; padding-right:5px; margin-right:5px; border-right:thin solid grey;"><a href="' + WazeBarSettings.header.region[region].wiki + '" target="_blank">' + WazeBarSettings.header.region[region].abbr + ' Wiki</a></div>';
  185. });
  186. }
  187. return regionWikis;
  188. }
  189.  
  190. function BuildSettingsInterface(){
  191. var $section = $("<div>", {style:"padding:8px 16px", id:"WazeBarSettings"});
  192. $section.html([
  193. '<div id="WazeBarSettings" style="visibility:hidden; position:fixed; top:40%; left:50%; width:388px; min-height:150px; z-index:1000; background-color:white; border-width:3px; border-style:solid; border-radius:10px; padding:4px;">',
  194. '<div>',
  195. '<input type="checkbox" id="ScriptsForum" /><label for="ScriptsForum">Scripts Forum</label></br>',
  196. 'Region ' + BuildRegionDropdown() + '<input type="checkbox" id="RegionForumSetting"/><label for="RegionForumSetting">Forum</label> <input type="checkbox" id="RegionWikiSetting"/><label for="RegionWikiSetting">Wiki</label>',
  197. '<div id="WBStates"></div>',
  198. '</div></br>',//close region div
  199. '<div style="position: relative; float: right; display: inline-block">', //save/cancel buttons
  200. '<button id="WBSettingsSave" style="width: 85px;" class="btn btn-primary">Save</button>',
  201. '<button id="WBSettingsCancel" class="btn btn-default">Cancel</button>',
  202. '</div>',//end save/cancel buttons
  203. '</div>'
  204. ].join(' '));
  205.  
  206. $("#WazeMap").append($section.html());
  207.  
  208. //Region forum checkbox toggled
  209. $('#RegionForumSetting').change(function(){
  210. var selectedItem = $('#WBRegions')[0].options[$('#WBRegions')[0].selectedIndex];
  211. var region = selectedItem.value;
  212. var forum = selectedItem.getAttribute("data-forum");
  213. var abbr = selectedItem.getAttribute("data-abbr");
  214. if(!WazeBarSettings.header.region)
  215. WazeBarSettings.header.region = {};
  216.  
  217. if(WazeBarSettings.header.region[region] == null)
  218. WazeBarSettings.header.region[region] = {};
  219. if(this.checked){
  220. WazeBarSettings.header.region[region].forum = forum;
  221. WazeBarSettings.header.region[region].abbr = abbr;
  222. }
  223. else
  224. delete WazeBarSettings.header.region[region].forum;
  225.  
  226. SaveSettings();
  227. });
  228.  
  229. //Region wiki checkbox toggled
  230. $('#RegionWikiSetting').change(function(){
  231. var selectedItem = $('#WBRegions')[0].options[$('#WBRegions')[0].selectedIndex];
  232. var region = selectedItem.value;
  233. var wiki = selectedItem.getAttribute("data-wiki");
  234. var abbr = selectedItem.getAttribute("data-abbr");
  235.  
  236. if(!WazeBarSettings.header.region)
  237. WazeBarSettings.header.region = {};
  238. if(WazeBarSettings.header.region[region] == null)
  239. WazeBarSettings.header.region[region] = {};
  240. if(this.checked){
  241. WazeBarSettings.header.region[region].wiki = wiki;
  242. WazeBarSettings.header.region[region].abbr = abbr;
  243. }
  244. else
  245. delete WazeBarSettings.header.region[region].wiki;
  246.  
  247. SaveSettings();
  248. });
  249.  
  250. //Cancel button clicked
  251. $("#WBSettingsCancel").click(function(){
  252. $('#WazeBarSettings').css({'visibility':'hidden'}); //hide the settings window
  253. });
  254.  
  255. //Save button clicked
  256. $("#WBSettingsSave").click(function(){
  257. WazeBarSettings.scriptsForum = isChecked('ScriptsForum');
  258. SaveSettings();
  259.  
  260. BuildWazebar();
  261. $('#WazeBarSettings').css({'visibility':'hidden'}); //hide the settings window
  262. });
  263.  
  264. //When they change the selected region, build a new state div.
  265. $('#WBRegions').change(SelectedRegionChanged);
  266. }
  267.  
  268. function SelectedRegionChanged(){
  269. setChecked('RegionForumSetting', false);
  270. setChecked('RegionWikiSetting', false);
  271.  
  272. var selectedItem = $('#WBRegions')[0].options[$('#WBRegions')[0].selectedIndex];
  273. var region = selectedItem.value;
  274. var wiki = selectedItem.getAttribute("data-wiki");
  275. var forum = selectedItem.getAttribute("data-forum");
  276.  
  277. if(!WazeBarSettings.header.region)
  278. WazeBarSettings.header.region = {};
  279. if(WazeBarSettings.header.region[region] == null)
  280. WazeBarSettings.header.region[region] = {};
  281.  
  282. if(WazeBarSettings.header.region[region].forum && WazeBarSettings.header.region[region].forum !== "")
  283. setChecked('RegionForumSetting', true);
  284. if(WazeBarSettings.header.region[region].wiki && WazeBarSettings.header.region[region].wiki !== "")
  285. setChecked('RegionWikiSetting', true);
  286.  
  287. BuildStatesDiv();
  288. }
  289.  
  290. function BuildStatesDiv(){
  291. //Get the state list for this region
  292. var selectedItem = $('#WBRegions')[0].options[$('#WBRegions')[0].selectedIndex];
  293. var states = selectedItem.getAttribute("data-states").split(",");
  294. var forum = selectedItem.getAttribute("data-forum");
  295. var wiki = selectedItem.getAttribute("data-wiki");
  296.  
  297. var statesHTML = "";
  298. $('#WBStates').empty();
  299. for(var i=0;i<states.length;i++){
  300. statesHTML = states[i] + " <input type='checkbox' id='"+states[i]+"ForumSetting'/><label for='"+states[i]+"ForumSetting'>Forum</label> <input type='checkbox' id='"+states[i]+"WikiSetting'/><label for='"+states[i]+"WikiSetting'>Wiki</label> <input type='checkbox' id='"+states[i]+"UnlockSetting'/><label for='"+states[i]+"UnlockSetting'>Unlock</label></br>";
  301. $('#WBStates').append(statesHTML);
  302. //Check the forum/wiki/unlock checkboxes if it has been saved
  303. if(WazeBarSettings.header[states[i]]){
  304. if(WazeBarSettings.header[states[i]].forum && WazeBarSettings.header[states[i]].forum !== "")
  305. setChecked(states[i] + 'ForumSetting', true);
  306. if(WazeBarSettings.header[states[i]].wiki && WazeBarSettings.header[states[i]].wiki !== "")
  307. setChecked(states[i] + 'WikiSetting', true);
  308. if(WazeBarSettings.header[states[i]].unlock && WazeBarSettings.header[states[i]].unlock !== "")
  309. setChecked(states[i] + 'UnlockSetting', true);
  310. }
  311.  
  312. $('#'+states[i]+'ForumSetting').change(function() {
  313. var state = this.id.replace('ForumSetting', '');
  314. if(!WazeBarSettings.header[state])
  315. WazeBarSettings.header[state] = {};
  316. if(this.checked){
  317. WazeBarSettings.header[state].forum = States[state].forum;
  318. WazeBarSettings.header[state].abbr = States[state].abbr;
  319. }
  320. else
  321. delete WazeBarSettings.header[state].forum;
  322.  
  323. SaveSettings();
  324. });
  325. $('#'+states[i]+'WikiSetting').change(function() {
  326. var state = this.id.replace('WikiSetting', '');
  327. if(!WazeBarSettings.header[state])
  328. WazeBarSettings.header[state] = {};
  329. if(this.checked){
  330. WazeBarSettings.header[state].wiki = States[state].wiki;
  331. WazeBarSettings.header[state].abbr = States[state].abbr;
  332. }
  333. else
  334. delete WazeBarSettings.header[state].wiki;
  335.  
  336. SaveSettings();
  337. });
  338. $('#'+states[i]+'UnlockSetting').change(function() {
  339. var state = this.id.replace('UnlockSetting', '');
  340. if(!WazeBarSettings.header[state])
  341. WazeBarSettings.header[state] = {};
  342. if(this.checked){
  343. WazeBarSettings.header[state].unlock = "https://www.waze.com/forum/search.php?keywords=" + state.replace(' ', '+') + "&terms=all&author=&sv=0&fid%5B%5D=622&sc=0&sf=all&sr=topics&sk=t&sd=d&st=0&ch=300&t=0&submit=Search";
  344. WazeBarSettings.header[state].abbr = States[state].abbr;
  345. }
  346. else
  347. delete WazeBarSettings.header[state].unlock;
  348.  
  349. SaveSettings();
  350. });
  351. }
  352. }
  353.  
  354. function BuildRegionDropdown(){
  355. var $places = $("<div>");
  356. $places.html([
  357. '<select id="WBRegions">',
  358. '<option value="Northwest" data-abbr="NWR" data-states="Alaska,Idaho,Montana,Washington,Oregon,Wyoming" data-forum="https://www.waze.com/forum/viewforum.php?f=565" data-wiki="https://wazeopedia.waze.com/wiki/USA/USA/Northwest">Northwest</option>',
  359. '<option value="Southwest" data-abbr="SWR" data-states="Arizona,California,Colorado,Hawaii,Nevada,New Mexico,Utah" data-forum="https://www.waze.com/forum/viewforum.php?f=566" data-wiki="https://wazeopedia.waze.com/wiki/USA/USA/Southwest">Southwest</option>',
  360. '<option value="Plains" data-abbr="PLN" data-states="Iowa,Kansas,Minnesota,Missouri,Nebraska,North Dakota,South Dakota" data-forum="https://www.waze.com/forum/viewforum.php?f=567" data-wiki="https://wazeopedia.waze.com/wiki/USA/USA/Plains">Plains</option>',
  361. '<option value="South Central" data-abbr="SCR" data-states="Arkansas,Louisiana,Mississippi,Oklahoma,Texas" data-forum="https://www.waze.com/forum/viewforum.php?f=568" data-wiki="https://wazeopedia.waze.com/wiki/USA/USA/South_Central">South Central</option>',
  362. '<option value="Great Lakes" data-abbr="GLR" data-states="Illinois,Indiana,Michigan,Ohio,Wisconsin" data-forum="https://www.waze.com/forum/viewforum.php?f=943" data-wiki="https://wazeopedia.waze.com/wiki/USA/USA/Great_Lakes">Great Lakes</option>',
  363. '<option value="South Atlantic" data-abbr="SAT" data-states="Kentucky,North Carolina,South Carolina,Tennessee" data-forum="https://www.waze.com/forum/viewforum.php?f=570" data-wiki="https://wazeopedia.waze.com/wiki/USA/USA/South_Atlantic">South Atlantic</option>',
  364. '<option value="Southeast" data-abbr="SER" data-states="Alabama,Florida,Georgia" data-forum="https://www.waze.com/forum/viewforum.php?f=944" data-wiki="https://wazeopedia.waze.com/wiki/USA/USA/Southeast">Southeast</option>',
  365. '<option value="New England" data-abbr="NER" data-states="Connecticut,Maine,Massachusetts,New Hampshire,Rhode Island,Vermont" data-forum="https://www.waze.com/forum/viewforum.php?f=945" data-wiki="https://wazeopedia.waze.com/wiki/USA/USA/New_England">New England</option>',
  366. '<option value="Northeast" data-abbr="NOR" data-states="Delaware,New Jersey,New York,Pennsylvania" data-forum="https://www.waze.com/forum/viewforum.php?f=569" data-wiki="https://wazeopedia.waze.com/wiki/USA/USA/Northeast">Northeast</option>',
  367. '<option value="Mid Atlantic" data-abbr="MAR" data-states="District of Columbia,Maryland,Virginia,West Virginia" data-forum="https://www.waze.com/forum/viewforum.php?f=946" data-wiki="https://wazeopedia.waze.com/wiki/USA/USA/Mid_Atlantic">Mid Atlantic</option>',
  368. '<option value="Territories" data-abbr="ATR" data-states="Puerto Rico,US Virgin Islands,South Pacific Territories" data-forum="https://www.waze.com/forum/viewforum.php?f=953" data-wiki="https://wazeopedia.waze.com/wiki/USA/USA/Territories">Territories</option>'
  369. ].join(' '));
  370.  
  371. return $places.html();
  372. }
  373.  
  374. var States = {};
  375. States.Alabama = {forum:"https://www.waze.com/forum/viewforum.php?f=213", wiki:"https://wazeopedia.waze.com/wiki/USA/Southeast", abbr:"AL"};
  376. States.Alaska = {forum:"https://www.waze.com/forum/viewforum.php?f=254", wiki:"https://wazeopedia.waze.com/wiki/USA/Alaska", abbr:"AK"};
  377. States.Arizona = {forum:"https://www.waze.com/forum/viewforum.php?f=652", wiki:"https://wazeopedia.waze.com/wiki/USA/Arizona", abbr:"AZ"};
  378. States.Arkansas = {forum:"https://www.waze.com/forum/viewforum.php?f=598", wiki:"https://wazeopedia.waze.com/wiki/USA/Arkansas", abbr:"AR"};
  379. States.California = {forum:"https://www.waze.com/forum/viewforum.php?f=251", wiki:"https://wazeopedia.waze.com/wiki/USA/California", abbr:"CA"};
  380. States.Colorado = {forum:"https://www.waze.com/forum/viewforum.php?f=654", wiki:"https://wazeopedia.waze.com/wiki/USA/Colorado", abbr:"CO"};
  381. States.Connecticut = {forum:"https://www.waze.com/forum/viewforum.php?f=247", wiki:"https://wazeopedia.waze.com/wiki/USA/Connecticut", abbr:"CT"};
  382. States.Delaware = {forum:"https://www.waze.com/forum/viewforum.php?f=575", wiki:"https://wazeopedia.waze.com/wiki/USA/Delaware", abbr:"DE"};
  383. States["District of Columbia"] = {forum:"https://www.waze.com/forum/viewforum.php?f=258", wiki:"https://wazeopedia.waze.com/wiki/USA/District_of_Columbia", abbr:"DC"};
  384. States.Florida = {forum:"https://www.waze.com/forum/viewforum.php?f=193", wiki:"https://wazeopedia.waze.com/wiki/USA/Southeast", abbr:"FL"};
  385. States.Georgia = {forum:"https://www.waze.com/forum/viewforum.php?f=214", wiki:"https://wazeopedia.waze.com/wiki/USA/Southeast", abbr:"GA"};
  386. States.Hawaii = {forum:"https://www.waze.com/forum/viewforum.php?f=305", wiki:"https://wazeopedia.waze.com/wiki/USA/Hawaii", abbr:"HA"};
  387. States.Idaho = {forum:"https://www.waze.com/forum/viewforum.php?f=648", wiki:"https://wazeopedia.waze.com/wiki/USA/Idaho", abbr:"ID"};
  388. States.Illinois = {forum:"https://www.waze.com/forum/viewforum.php?f=253", wiki:"https://wazeopedia.waze.com/wiki/USA/Illinois", abbr:"IL"};
  389. States.Indiana = {forum:"https://www.waze.com/forum/viewforum.php?f=631", wiki:"https://wazeopedia.waze.com/wiki/USA/Indiana", abbr:"IN"};
  390. States.Iowa = {forum:"https://www.waze.com/forum/viewforum.php?f=632", wiki:"https://wazeopedia.waze.com/wiki/USA/Iowa", abbr:"IA"};
  391. States.Kansas = {forum:"https://www.waze.com/forum/viewforum.php?f=628", wiki:"https://wazeopedia.waze.com/wiki/USA/Kansas", abbr:"KS"};
  392. States.Kentucky = {forum:"https://www.waze.com/forum/viewforum.php?f=571", wiki:"https://wazeopedia.waze.com/wiki/USA/Kentucky", abbr:"KY"};
  393. States.Louisiana = {forum:"https://www.waze.com/forum/viewforum.php?f=594", wiki:"https://wazeopedia.waze.com/wiki/USA/Louisiana", abbr:"LA"};
  394. States.Maine = {forum:"https://www.waze.com/forum/viewforum.php?f=583", wiki:"https://wazeopedia.waze.com/wiki/USA/Maine", abbr:"ME"};
  395. States.Maryland = {forum:"https://www.waze.com/forum/viewforum.php?f=246", wiki:"https://wazeopedia.waze.com/wiki/USA/Maryland", abbr:"MD"};
  396. States.Massachusetts = {forum:"https://www.waze.com/forum/viewforum.php?f=618", wiki:"https://wazeopedia.waze.com/wiki/USA/Massachusetts", abbr:"MA"};
  397. States.Michigan = {forum:"https://www.waze.com/forum/viewforum.php?f=630", wiki:"https://wazeopedia.waze.com/wiki/USA/Michigan", abbr:"MI"};
  398. States.Minnesota = {forum:"https://www.waze.com/forum/viewforum.php?f=259", wiki:"https://wazeopedia.waze.com/wiki/USA/Minnesota", abbr:"MN"};
  399. States.Mississippi = {forum:"https://www.waze.com/forum/viewforum.php?f=596", wiki:"https://wazeopedia.waze.com/wiki/USA/Mississippi", abbr:"MS"};
  400. States.Missouri = {forum:"https://www.waze.com/forum/viewforum.php?f=414", wiki:"https://wazeopedia.waze.com/wiki/USA/Missouri", abbr:"MO"};
  401. States.Montana = {forum:"https://www.waze.com/forum/viewforum.php?f=649", wiki:"https://wazeopedia.waze.com/wiki/USA/Montana", abbr:"MT"};
  402. States.Nebraska = {forum:"https://www.waze.com/forum/viewforum.php?f=634", wiki:"https://wazeopedia.waze.com/wiki/USA/Nebraska", abbr:"NE"};
  403. States.Nevada = {forum:"https://www.waze.com/forum/viewforum.php?f=651", wiki:"https://wazeopedia.waze.com/wiki/USA/Nevada", abbr:"NV"};
  404. States["New Hampshire"] = {forum:"https://www.waze.com/forum/viewforum.php?f=585", wiki:"https://wazeopedia.waze.com/wiki/USA/New_Hampshire", abbr:"NH"};
  405. States["New Jersey"] = {forum:"https://www.waze.com/forum/viewforum.php?f=249", wiki:"https://wazeopedia.waze.com/wiki/USA/New_Jersey", abbr:"NJ"};
  406. States["New Mexico"] = {forum:"https://www.waze.com/forum/viewforum.php?f=653", wiki:"https://wazeopedia.waze.com/wiki/USA/New_Mexico", abbr:"NM"};
  407. States["New York"] = {forum:"https://www.waze.com/forum/viewforum.php?f=250", wiki:"https://wazeopedia.waze.com/wiki/USA/New_York", abbr:"NY"};
  408. States["North Carolina"] = {forum:"https://www.waze.com/forum/viewforum.php?f=255", wiki:"https://wazeopedia.waze.com/wiki/USA/North_Carolina", abbr:"NC"};
  409. States["North Dakota"] = {forum:"https://www.waze.com/forum/viewforum.php?f=624", wiki:"https://wazeopedia.waze.com/wiki/USA/North_Dakota", abbr:"ND"};
  410. States.Ohio = {forum:"https://www.waze.com/forum/viewforum.php?f=261", wiki:"https://wazeopedia.waze.com/wiki/USA/Ohio", abbr:"OH"};
  411. States.Oklahoma = {forum:"https://www.waze.com/forum/viewforum.php?f=600", wiki:"https://wazeopedia.waze.com/wiki/USA/Oklahoma", abbr:"OK"};
  412. States.Oregon = {forum:"https://www.waze.com/forum/viewforum.php?f=647", wiki:"https://wazeopedia.waze.com/wiki/USA/Oregon", abbr:"OR"};
  413. States.Pennsylvania = {forum:"https://www.waze.com/forum/viewforum.php?f=215", wiki:"https://wazeopedia.waze.com/wiki/USA/Pennsylvania", abbr:"PA"};
  414. States["Rhode Island"] = {forum:"https://www.waze.com/forum/viewforum.php?f=577", wiki:"https://wazeopedia.waze.com/wiki/USA/Rhode_Island", abbr:"RI"};
  415. States["South Carolina"] = {forum:"https://www.waze.com/forum/viewforum.php?f=256", wiki:"https://wazeopedia.waze.com/wiki/USA/South_Carolina", abbr:"SC"};
  416. States["South Dakota"] = {forum:"https://www.waze.com/forum/viewforum.php?f=626", wiki:"https://wazeopedia.waze.com/wiki/USA/South_Dakota", abbr:"SD"};
  417. States.Tennessee = {forum:"https://www.waze.com/forum/viewforum.php?f=210", wiki:"https://wazeopedia.waze.com/wiki/USA/Tennessee", abbr:"TN"};
  418. States.Texas = {forum:"https://www.waze.com/forum/viewforum.php?f=237", wiki:"https://wazeopedia.waze.com/wiki/USA/Texas", abbr:"TX"};
  419. States.Utah = {forum:"https://www.waze.com/forum/viewforum.php?f=364", wiki:"https://wazeopedia.waze.com/wiki/USA/Utah", abbr:"UT"};
  420. States.Vermont = {forum:"https://www.waze.com/forum/viewforum.php?f=587", wiki:"https://wazeopedia.waze.com/wiki/USA/Vermont", abbr:"VT"};
  421. States.Virginia = {forum:"https://www.waze.com/forum/viewforum.php?f=580", wiki:"https://wazeopedia.waze.com/wiki/USA/Virginia", abbr:"VA"};
  422. States.Washington = {forum:"https://www.waze.com/forum/viewforum.php?f=201", wiki:"https://wazeopedia.waze.com/wiki/USA/Washington", abbr:"WA"};
  423. States["West Virginia"] = {forum:"https://www.waze.com/forum/viewforum.php?f=582", wiki:"https://wazeopedia.waze.com/wiki/USA/West_Virginia", abbr:"WV"};
  424. States.Wisconsin = {forum:"https://www.waze.com/forum/viewforum.php?f=387", wiki:"https://wazeopedia.waze.com/wiki/USA/Wisconsin", abbr:"WI"};
  425. States.Wyoming = {forum:"https://www.waze.com/forum/viewforum.php?f=650", wiki:"https://wazeopedia.waze.com/wiki/USA/Wyoming", abbr:"WY"};
  426. States["Puerto Rico"] = {forum:"https://www.waze.com/forum/viewforum.php?f=202", wiki:"https://wazeopedia.waze.com/wiki/USA/Puerto_Rico", abbr:"PR"};
  427. States["US Virgin Islands"] = {forum:"https://www.waze.com/forum/viewforum.php?f=677", wiki:"https://wazeopedia.waze.com/wiki/USA/Virgin_Islands", abbr:""};
  428. States["South Pacific Territories"] = {forum:"https://www.waze.com/forum/viewforum.php?f=954", wiki:"", abbr:""};
  429.  
  430. //console.log(States);
  431. //delete States.Alabama;
  432. //console.log(States);
  433.  
  434. function isChecked(checkboxId) {
  435. return $('#' + checkboxId).is(':checked');
  436. }
  437.  
  438. function setChecked(checkboxId, checked) {
  439. $('#' + checkboxId).prop('checked', checked);
  440. }
  441.  
  442. function LoadSettingsObj() {
  443. var loadedSettings;
  444. try{
  445. loadedSettings = $.parseJSON(localStorage.getItem("Wazebar_Settings"));
  446. }
  447. catch(err){
  448. loadedSettings = null;
  449. }
  450.  
  451. var defaultSettings = {
  452. inboxInterval: 5,
  453. forumInterval: 2,
  454. scriptsForum: false,
  455. header: {region:{}}
  456. };
  457. WazeBarSettings = loadedSettings ? loadedSettings : defaultSettings;
  458. for (var prop in defaultSettings) {
  459. if (!WazeBarSettings.hasOwnProperty(prop))
  460. WazeBarSettings[prop] = defaultSettings[prop];
  461. }
  462. }
  463.  
  464. function SaveSettings() {
  465. if (localStorage) {
  466. /*
  467. Object.keys(obj).forEach(function(key,index) {
  468. // key: the name of the object key
  469. // index: the ordinal position of the key within the object
  470. });
  471. */
  472. var localsettings = {
  473. inboxInterval: WazeBarSettings.inboxInterval,
  474. forumInterval: WazeBarSettings.forumInterval,
  475. scriptsForum: WazeBarSettings.scriptsForum,
  476. header: WazeBarSettings.header
  477. };
  478.  
  479. localStorage.setItem("Wazebar_Settings", JSON.stringify(localsettings));
  480. }
  481. }
  482. })();