Wazebar

try to take over the world!

目前为 2017-02-22 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Wazebar
  3. // @namespace https://greasyfork.org/users/30701-justins83-waze
  4. // @version 0.1
  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 &&
  22. W.map &&
  23. W.model &&
  24. W.loginManager.user &&
  25. $ &&
  26. $('.app.container-fluid.show-sidebar').length > 0) {
  27. init();
  28. } else if (tries < 1000) {
  29. setTimeout(function () {bootstrap(tries++);}, 200);
  30. }
  31. }
  32.  
  33. bootstrap();
  34.  
  35. function init(){
  36. LoadSettingsObj();
  37.  
  38. BuildWazebar();
  39.  
  40. $('#sidebar').css('height', 'calc(100% - 20px)');
  41.  
  42.  
  43. BuildSettingsInterface();
  44. }
  45.  
  46. function BuildWazebar(){
  47. $('#Wazebar').remove();
  48. var $Wazebar = $("<div>", {style:"height:20px", id:"Wazebar"});
  49. $Wazebar.html([
  50. '<div style="display:inline; margin-left:3px; cursor:pointer;" id="WazeBarSettingsButton"><i class="fa fa-cog" aria-hidden="true"></i></div>',
  51. '<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>',
  52. 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>' : '',
  53. '<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>',
  54. '<div style="display:inline; padding-right:5px; margin-right:5px; border-right:thin solid grey;" id="Ohio"><a href="https://www.waze.com/forum/viewforum.php?f=261" target="_blank">OH Forum</a></div>',
  55. '<div style="display:inline; padding-right:5px; margin-right:5px; border-right:thin solid grey;" id="OhioUnlock"><a href="https://www.waze.com/forum/search.php?keywords=Ohio&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">OH Unlock</a></div>',
  56. '<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>',
  57. '<div style="display:inline; padding-right:5px; margin-right:5px; border-right:thin solid grey;"><a href="https://wazeopedia.waze.com/wiki/USA/Ohio" target="_blank">OH Wiki</a></div>',
  58. '<div style="display:inline;" id="WazebarStatus">NA Server Update: </div>'
  59. ].join(' '));
  60.  
  61. $('.app.container-fluid.show-sidebar').before($Wazebar);
  62.  
  63. GetPMCount();
  64. checkForums();
  65. setInterval(GetPMCount,60000);
  66. setInterval(checkForums, 120000);
  67.  
  68. GM_xmlhttpRequest({
  69. method: "GET",
  70. url: 'https://wazestatus.wordpress.com/category/main/feed',
  71. onload: ParseStatusFeed
  72. });
  73.  
  74. $('#WazeBarSettingsButton').click(function(){
  75. $('#WazeBarSettings').css({'visibility':'visible'});
  76. BuildStatesDiv();
  77. setChecked('ScriptsForum', WazeBarSettings.scriptsForum);
  78. });
  79. }
  80.  
  81. function GetPMCount(){
  82. $.get('https://www.waze.com/forum/ucp.php?i=pm&folder=inbox', function(Inbox){
  83. if(Inbox.indexOf("Inbox (") != -1){
  84. var count = Inbox.match(/Inbox \((\d+)\)/)[1];
  85. $('#PMCount').remove();
  86. $('#Inbox a').append("<span style='color:red;font-weight:bold;' id='PMCount'> (" + count + ")</span>");
  87. }
  88. else
  89. $('#PMCount').remove();
  90. });
  91. }
  92.  
  93. function checkForums(){
  94. if(WazeBarSettings.scriptsForum)
  95. checkUnreadTopics("https://www.waze.com/forum/viewforum.php?f=819", "Scripts", "ScriptsCount"); //Scripts
  96. checkUnreadTopics("https://www.waze.com/forum/viewforum.php?f=943", "GLR", "GLRCount"); //GLR
  97. checkUnreadTopics("https://www.waze.com/forum/viewforum.php?f=261", "Ohio", "OhioCount"); //Ohio
  98. checkUnreadTopics("https://www.waze.com/forum/search.php?fid%5B0%5D=622&sf=titleonly&sr=topics&submit=Search&keywords=Ohio", "OhioUnlock", "OHUnlockCount");
  99. }
  100.  
  101. function checkUnreadTopics(path, parentID, spanID){
  102. var count = 0;
  103. $.get(path, function(page){
  104. var result = page.match(/topic_unread/g);
  105. count += result? result.length :0;
  106. result = page.match(/sticky_unread/g);
  107. count += result? result.length :0;
  108. result = page.match(/announce_unread/g);
  109. count += result? result.length :0;
  110.  
  111. $('#' + spanID).remove();
  112. if(count > 0)
  113. $('#'+parentID+' a').append("<span style='color:red;font-weight:bold;' id='" + spanID + "'> (" + count + ")</span>");
  114. });
  115.  
  116. return count;
  117. }
  118.  
  119. function ParseStatusFeed(data){
  120. var re = /<title>NA map tiles were successfully updated to:(.*?)<\/title>/;
  121. var result = data.responseText.match(re)[1].trim();
  122. $('#WazebarStatus').append(result);
  123. }
  124.  
  125. function BuildSettingsInterface(){
  126. var $section = $("<div>", {style:"padding:8px 16px", id:"WazeBarSettings"});
  127. $section.html([
  128. '<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;">',
  129. '<div>',
  130. '<input type="checkbox" id="ScriptsForum" /><label for="ScriptsForum">Scripts Forum</label></br>',
  131. 'Region ' + BuildRegionDropdown() + '<input type="checkbox" id="RegionForum"/><label for="RegionForum">Forum</label> <input type="checkbox" id="RegionWiki"/><label for="RegionWiki">Wiki</label>',
  132. '<div id="WBStates"></div>',
  133. '</div></br>',//close region div
  134. '<div style="position: relative; float: right; display: inline-block">', //save/cancel buttons
  135. '<button id="WBSettingsSave" style="width: 85px;" class="btn btn-primary">Save</button>',
  136. '<button id="WBSettingsCancel" class="btn btn-default">Cancel</button>',
  137. '</div>',//end save/cancel buttons
  138. '</div>'
  139. ].join(' '));
  140.  
  141. $("#WazeMap").append($section.html());
  142.  
  143. //Cancel button clicked
  144. $("#WBSettingsCancel").click(function(){
  145. $('#WazeBarSettings').css({'visibility':'hidden'}); //hide the settings window
  146. });
  147.  
  148. //Save button clicked
  149. $("#WBSettingsSave").click(function(){
  150. WazeBarSettings.scriptsForum = isChecked('ScriptsForum');
  151. SaveSettings();
  152.  
  153. BuildWazebar();
  154. $('#WazeBarSettings').css({'visibility':'hidden'}); //hide the settings window
  155. });
  156.  
  157. //When they change the selected region, build a new state div.
  158. $('#WBRegions').change(BuildStatesDiv);
  159. }
  160.  
  161. function BuildStatesDiv(){
  162. //Get the state list for this region
  163. var selectedItem = $('#WBRegions')[0].options[$('#WBRegions')[0].selectedIndex];
  164. var states = selectedItem.getAttribute("data-states").split(",");
  165. var forum = selectedItem.getAttribute("data-forum");
  166. var wiki = selectedItem.getAttribute("data-wiki");
  167.  
  168. var statesHTML = "";
  169. $('#WBStates').empty();
  170. for(var i=0;i<states.length;i++){
  171. statesHTML = states[i] + " <input type='checkbox' id='"+states[i]+"Forum'/><label for='"+states[i]+"Forum'>Forum</label> <input type='checkbox' id='"+states[i]+"Wiki'/><label for='"+states[i]+"Wiki'>Wiki</label> <input type='checkbox' id='"+states[i]+"Unlock'/><label for='"+states[i]+"Unlock'>Unlock</label></br>";
  172. $('#WBStates').append(statesHTML);
  173. //Check the forum/wiki/unlock checkboxes if it has been saved
  174. if(WazeBarSettings.header[states[i]]){
  175. if(WazeBarSettings.header[states[i]].forum && WazeBarSettings.header[states[i]].forum !== "")
  176. setChecked(states[i] + 'Forum', true);
  177. if(WazeBarSettings.header[states[i]].wiki && WazeBarSettings.header[states[i]].wiki !== "")
  178. setChecked(states[i] + 'Wiki', true);
  179. if(WazeBarSettings.header[states[i]].unlock && WazeBarSettings.header[states[i]].unlock !== "")
  180. setChecked(states[i] + 'Unlock', true);
  181. }
  182.  
  183. $('#'+states[i]+'Forum').change(function() {
  184. var state = this.id.replace('Forum', '');
  185. if(!WazeBarSettings.header[state])
  186. WazeBarSettings.header[state] = {};
  187. if(this.checked)
  188. WazeBarSettings.header[state].forum = States[state].forum;
  189. else
  190. delete WazeBarSettings.header[state].forum;
  191.  
  192. SaveSettings();
  193. });
  194. $('#'+states[i]+'Wiki').change(function() {
  195. var state = this.id.replace('Wiki', '');
  196. if(!WazeBarSettings.header[state])
  197. WazeBarSettings.header[state] = {};
  198. if(this.checked)
  199. WazeBarSettings.header[state].wiki = States[state].wiki;
  200. else
  201. delete WazeBarSettings.header[state].wiki;
  202.  
  203. SaveSettings();
  204. });
  205. $('#'+states[i]+'Unlock').change(function() {
  206. var state = this.id.replace('Unlock', '');
  207. if(!WazeBarSettings.header[state])
  208. WazeBarSettings.header[state] = {};
  209. if(this.checked)
  210. 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";
  211. else
  212. delete WazeBarSettings.header[state].unlock;
  213.  
  214. SaveSettings();
  215. });
  216. }
  217. }
  218.  
  219. function BuildRegionDropdown(){
  220. var $places = $("<div>");
  221. $places.html([
  222. '<select id="WBRegions">',
  223. '<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>',
  224. '<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>',
  225. '<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>',
  226. '<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>',
  227. '<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>',
  228. '<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>',
  229. '<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>',
  230. '<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>',
  231. '<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>',
  232. '<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>',
  233. '<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>'
  234. ].join(' '));
  235.  
  236. return $places.html();
  237. }
  238.  
  239. var States = {};
  240. States.Alabama = {forum:"https://www.waze.com/forum/viewforum.php?f=213", wiki:"https://wazeopedia.waze.com/wiki/USA/Southeast", abbr:"AL"};
  241. States.Alaska = {forum:"https://www.waze.com/forum/viewforum.php?f=254", wiki:"https://wazeopedia.waze.com/wiki/USA/Alaska", abbr:"AK"};
  242. States.Arizona = {forum:"https://www.waze.com/forum/viewforum.php?f=652", wiki:"https://wazeopedia.waze.com/wiki/USA/Arizona", abbr:"AZ"};
  243. States.Arkansas = {forum:"https://www.waze.com/forum/viewforum.php?f=598", wiki:"https://wazeopedia.waze.com/wiki/USA/Arkansas", abbr:"AR"};
  244. States.California = {forum:"https://www.waze.com/forum/viewforum.php?f=251", wiki:"https://wazeopedia.waze.com/wiki/USA/California", abbr:"CA"};
  245. States.Colorado = {forum:"https://www.waze.com/forum/viewforum.php?f=654", wiki:"https://wazeopedia.waze.com/wiki/USA/Colorado", abbr:"CO"};
  246. States.Connecticut = {forum:"https://www.waze.com/forum/viewforum.php?f=247", wiki:"https://wazeopedia.waze.com/wiki/USA/Connecticut", abbr:"CT"};
  247. States.Delaware = {forum:"https://www.waze.com/forum/viewforum.php?f=575", wiki:"https://wazeopedia.waze.com/wiki/USA/Delaware", abbr:"DE"};
  248. 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"};
  249. States.Florida = {forum:"https://www.waze.com/forum/viewforum.php?f=193", wiki:"https://wazeopedia.waze.com/wiki/USA/Southeast", abbr:"FL"};
  250. States.Georgia = {forum:"https://www.waze.com/forum/viewforum.php?f=214", wiki:"https://wazeopedia.waze.com/wiki/USA/Southeast", abbr:"GA"};
  251. States.Hawaii = {forum:"https://www.waze.com/forum/viewforum.php?f=305", wiki:"https://wazeopedia.waze.com/wiki/USA/Hawaii", abbr:"HA"};
  252. States.Idaho = {forum:"https://www.waze.com/forum/viewforum.php?f=648", wiki:"https://wazeopedia.waze.com/wiki/USA/Idaho", abbr:"ID"};
  253. States.Illinois = {forum:"https://www.waze.com/forum/viewforum.php?f=253", wiki:"https://wazeopedia.waze.com/wiki/USA/Illinois", abbr:"IL"};
  254. States.Indiana = {forum:"https://www.waze.com/forum/viewforum.php?f=631", wiki:"https://wazeopedia.waze.com/wiki/USA/Indiana", abbr:"IN"};
  255. States.Iowa = {forum:"https://www.waze.com/forum/viewforum.php?f=632", wiki:"https://wazeopedia.waze.com/wiki/USA/Iowa", abbr:"IA"};
  256. States.Kansas = {forum:"https://www.waze.com/forum/viewforum.php?f=628", wiki:"https://wazeopedia.waze.com/wiki/USA/Kansas", abbr:"KS"};
  257. States.Kentucky = {forum:"https://www.waze.com/forum/viewforum.php?f=571", wiki:"https://wazeopedia.waze.com/wiki/USA/Kentucky", abbr:"KY"};
  258. States.Louisiana = {forum:"https://www.waze.com/forum/viewforum.php?f=594", wiki:"https://wazeopedia.waze.com/wiki/USA/Louisiana", abbr:"LA"};
  259. States.Maine = {forum:"https://www.waze.com/forum/viewforum.php?f=583", wiki:"https://wazeopedia.waze.com/wiki/USA/Maine", abbr:"ME"};
  260. States.Maryland = {forum:"https://www.waze.com/forum/viewforum.php?f=246", wiki:"https://wazeopedia.waze.com/wiki/USA/Maryland", abbr:"MD"};
  261. States.Massachusetts = {forum:"https://www.waze.com/forum/viewforum.php?f=618", wiki:"https://wazeopedia.waze.com/wiki/USA/Massachusetts", abbr:"MA"};
  262. States.Michigan = {forum:"https://www.waze.com/forum/viewforum.php?f=630", wiki:"https://wazeopedia.waze.com/wiki/USA/Michigan", abbr:"MI"};
  263. States.Minnesota = {forum:"https://www.waze.com/forum/viewforum.php?f=259", wiki:"https://wazeopedia.waze.com/wiki/USA/Minnesota", abbr:"MN"};
  264. States.Mississippi = {forum:"https://www.waze.com/forum/viewforum.php?f=596", wiki:"https://wazeopedia.waze.com/wiki/USA/Mississippi", abbr:"MS"};
  265. States.Missouri = {forum:"https://www.waze.com/forum/viewforum.php?f=414", wiki:"https://wazeopedia.waze.com/wiki/USA/Missouri", abbr:"MO"};
  266. States.Montana = {forum:"https://www.waze.com/forum/viewforum.php?f=649", wiki:"https://wazeopedia.waze.com/wiki/USA/Montana", abbr:"MT"};
  267. States.Nebraska = {forum:"https://www.waze.com/forum/viewforum.php?f=634", wiki:"https://wazeopedia.waze.com/wiki/USA/Nebraska", abbr:"NE"};
  268. States.Nevada = {forum:"https://www.waze.com/forum/viewforum.php?f=651", wiki:"https://wazeopedia.waze.com/wiki/USA/Nevada", abbr:"NV"};
  269. States["New Hampshire"] = {forum:"https://www.waze.com/forum/viewforum.php?f=585", wiki:"https://wazeopedia.waze.com/wiki/USA/New_Hampshire", abbr:"NH"};
  270. States["New Jersey"] = {forum:"https://www.waze.com/forum/viewforum.php?f=249", wiki:"https://wazeopedia.waze.com/wiki/USA/New_Jersey", abbr:"NJ"};
  271. States["New Mexico"] = {forum:"https://www.waze.com/forum/viewforum.php?f=653", wiki:"https://wazeopedia.waze.com/wiki/USA/New_Mexico", abbr:"NM"};
  272. States["New York"] = {forum:"https://www.waze.com/forum/viewforum.php?f=250", wiki:"https://wazeopedia.waze.com/wiki/USA/New_York", abbr:"NY"};
  273. States["North Carolina"] = {forum:"https://www.waze.com/forum/viewforum.php?f=255", wiki:"https://wazeopedia.waze.com/wiki/USA/North_Carolina", abbr:"NC"};
  274. States["North Dakota"] = {forum:"https://www.waze.com/forum/viewforum.php?f=624", wiki:"https://wazeopedia.waze.com/wiki/USA/North_Dakota", abbr:"ND"};
  275. States.Ohio = {forum:"https://www.waze.com/forum/viewforum.php?f=261", wiki:"https://wazeopedia.waze.com/wiki/USA/Ohio", abbr:"OH"};
  276. States.Oklahoma = {forum:"https://www.waze.com/forum/viewforum.php?f=600", wiki:"https://wazeopedia.waze.com/wiki/USA/Oklahoma", abbr:"OK"};
  277. States.Oregon = {forum:"https://www.waze.com/forum/viewforum.php?f=647", wiki:"https://wazeopedia.waze.com/wiki/USA/Oregon", abbr:"OR"};
  278. States.Pennsylvania = {forum:"https://www.waze.com/forum/viewforum.php?f=215", wiki:"https://wazeopedia.waze.com/wiki/USA/Pennsylvania", abbr:"PA"};
  279. States["Rhode Island"] = {forum:"https://www.waze.com/forum/viewforum.php?f=577", wiki:"https://wazeopedia.waze.com/wiki/USA/Rhode_Island", abbr:"RI"};
  280. States["South Carolina"] = {forum:"https://www.waze.com/forum/viewforum.php?f=256", wiki:"https://wazeopedia.waze.com/wiki/USA/South_Carolina", abbr:"SC"};
  281. States["South Dakota"] = {forum:"https://www.waze.com/forum/viewforum.php?f=626", wiki:"https://wazeopedia.waze.com/wiki/USA/South_Dakota", abbr:"SD"};
  282. States.Tennessee = {forum:"https://www.waze.com/forum/viewforum.php?f=210", wiki:"https://wazeopedia.waze.com/wiki/USA/Tennessee", abbr:"TN"};
  283. States.Texas = {forum:"https://www.waze.com/forum/viewforum.php?f=237", wiki:"https://wazeopedia.waze.com/wiki/USA/Texas", abbr:"TX"};
  284. States.Utah = {forum:"https://www.waze.com/forum/viewforum.php?f=364", wiki:"https://wazeopedia.waze.com/wiki/USA/Utah", abbr:"UT"};
  285. States.Vermont = {forum:"https://www.waze.com/forum/viewforum.php?f=587", wiki:"https://wazeopedia.waze.com/wiki/USA/Vermont", abbr:"VT"};
  286. States.Virginia = {forum:"https://www.waze.com/forum/viewforum.php?f=580", wiki:"https://wazeopedia.waze.com/wiki/USA/Virginia", abbr:"VA"};
  287. States.Washington = {forum:"https://www.waze.com/forum/viewforum.php?f=201", wiki:"https://wazeopedia.waze.com/wiki/USA/Washington", abbr:"WA"};
  288. States["West Virginia"] = {forum:"https://www.waze.com/forum/viewforum.php?f=582", wiki:"https://wazeopedia.waze.com/wiki/USA/West_Virginia", abbr:"WV"};
  289. States.Wisconsin = {forum:"https://www.waze.com/forum/viewforum.php?f=387", wiki:"https://wazeopedia.waze.com/wiki/USA/Wisconsin", abbr:"WI"};
  290. States.Wyoming = {forum:"https://www.waze.com/forum/viewforum.php?f=650", wiki:"https://wazeopedia.waze.com/wiki/USA/Wyoming", abbr:"WY"};
  291. States["Puerto Rico"] = {forum:"https://www.waze.com/forum/viewforum.php?f=202", wiki:"https://wazeopedia.waze.com/wiki/USA/Puerto_Rico", abbr:"PR"};
  292. States["US Virgin Islands"] = {forum:"https://www.waze.com/forum/viewforum.php?f=677", wiki:"https://wazeopedia.waze.com/wiki/USA/Virgin_Islands", abbr:""};
  293. States["South Pacific Territories"] = {forum:"https://www.waze.com/forum/viewforum.php?f=954", wiki:"", abbr:""};
  294.  
  295. //console.log(States);
  296. //delete States.Alabama;
  297. //console.log(States);
  298.  
  299. function isChecked(checkboxId) {
  300. return $('#' + checkboxId).is(':checked');
  301. }
  302.  
  303. function setChecked(checkboxId, checked) {
  304. $('#' + checkboxId).prop('checked', checked);
  305. }
  306.  
  307. function LoadSettingsObj() {
  308. var loadedSettings;
  309. try{
  310. loadedSettings = $.parseJSON(localStorage.getItem("Wazebar_Settings"));
  311. }
  312. catch(err){
  313. loadedSettings = null;
  314. }
  315.  
  316. var defaultSettings = {
  317. inboxInterval: 5,
  318. forumInterval: 2,
  319. scriptsForum: false,
  320. header: {}
  321. };
  322. WazeBarSettings = loadedSettings ? loadedSettings : defaultSettings;
  323. for (var prop in defaultSettings) {
  324. if (!WazeBarSettings.hasOwnProperty(prop))
  325. WazeBarSettings[prop] = defaultSettings[prop];
  326. }
  327. }
  328.  
  329. function SaveSettings() {
  330. if (localStorage) {
  331. /*
  332. Object.keys(obj).forEach(function(key,index) {
  333. // key: the name of the object key
  334. // index: the ordinal position of the key within the object
  335. });
  336. */
  337. var localsettings = {
  338. inboxInterval: WazeBarSettings.inboxInterval,
  339. forumInterval: WazeBarSettings.forumInterval,
  340. scriptsForum: WazeBarSettings.scriptsForum,
  341. header: WazeBarSettings.header
  342. };
  343.  
  344. localStorage.setItem("Wazebar_Settings", JSON.stringify(localsettings));
  345. }
  346. }
  347. })();