14a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/** 24a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * Copyright (c) 2010 The Chromium Authors. All rights reserved. Use of this 34a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * source code is governed by a BSD-style license that can be found in the 44a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * LICENSE file. 54a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 64a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/** 84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * @fileoverview Includes the country selection, topics selection and 94a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * selection of no. of news stories to be shown. Include default settings also. 104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * @author navneetg@google.com (Navneet Goel). 114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/** 144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * Stores number of selected topics on the options page. 154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochvar checkCount = 0; 174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/** 194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * Stores maximum count of custom topics. 204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochvar MAX_CUS_TOPICS = 10; 224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/** 244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * Stores temporary added custom topics which are not yet saved. 254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochvar tempCusTopics = []; 274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/** 294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * Checks whether ENTER key is pressed or not. 304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochfunction addCustomTopic() { 324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (window.event.keyCode == 13) { 334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch addCusTopic(); 344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/** 384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * Retrieves and sets last saved country from local storage(if found), 394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * else sets country retrieved from feed. 404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochfunction setCountry() { 424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var country = window.localStorage.getItem('country'); 434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // If country is not found in localstorage or default value is selected in 454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // drop down menu. 464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if ((!country) || country == 'noCountry') { 474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // XMLHttpRequest object that tries to load the feed for the purpose of 484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // retrieving the country value out of feed. 494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var req = new XMLHttpRequest(); 504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch req.onload = handleResponse; 514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch req.onerror = handleError; 524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch req.open('GET', DEFAULT_NEWS_URL, true); 534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch req.send(null); 544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Sets country to default Country in dropdown menu. 564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch function handleError() { 574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('countryList').value = 'noCountry'; 584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch }; 594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Handles parsing the feed data got back from XMLHttpRequest. 614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch function handleResponse() { 624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Feed document retrieved from URL. 634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var doc = req.responseXML; 644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (!doc) { 654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch handleError(); 664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch return; 674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 684a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var imageLink = doc.querySelector('image link'); 694a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (imageLink) { 704a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Stores link to set value of country. 714a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var newsUrl = imageLink.textContent; 724a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 734a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 744a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Stores country value 754a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('countryList').value = newsUrl.substring(newsUrl.indexOf('&ned=') + 5, 764a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch newsUrl.indexOf('&hl=')); 774a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch }; 784a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } else { 794a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('countryList').value = country; 804a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 814a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 824a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 834a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/** 844a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * Displays various messages to user based on user input. 854a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * @param {String} id Id of status element. 864a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * @param {Number} timeOut Timeout value of message shown. 874a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * @param {String} message Message to be shown. 884a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 894a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochfunction showUserMessages(id, timeOut, message) { 904a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $(id).style.setProperty('-webkit-transition', 914a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 'opacity 0s ease-in'); 924a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $(id).style.opacity = 1; 934a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $(id).innerText = chrome.i18n.getMessage(message); 944a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch window.setTimeout(function() { 954a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $(id).style.setProperty( 964a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch '-webkit-transition', 'opacity' + timeOut + 's ease-in'); 974a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $(id).style.opacity = 0; 984a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch }, 1E3 994a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch ); 1004a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 1014a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1024a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/** 1034a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * Sets options page CSS according to the browser language(if found), else sets 1044a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * to default locale. 1054a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 1064a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochfunction setOptionPageCSS() { 1074a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (chrome.i18n.getMessage('direction') == 'rtl') { 1084a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch document.querySelector('body').className = 'rtl'; 1094a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 1104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 1114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/** 1134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * Initializes the options page by retrieving country, topics and count of 1144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * stories from local storage if present, else sets to default settings. 1154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 1164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochfunction initialize() { 1174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch setOptionPageCSS(); 1184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch setCountry(); 1194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch setCountAndTopicList(); 1204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch setLocalizedTopicList(); 1214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Adds a custom topic on press of Enter key. 1234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('newKeyword').onkeypress = addCustomTopic; 1244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 1254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/** 1274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * Retrieves locale values from locale file. 1284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 1294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochfunction setLocalizedTopicList() { 1304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var getI18nMsg = chrome.i18n.getMessage; 1314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('top').innerText = getI18nMsg('1'); 1334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('nation').innerText = getI18nMsg('n'); 1344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('world').innerText = getI18nMsg('w'); 1354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('business').innerText = getI18nMsg('b'); 1364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('science').innerText = getI18nMsg('t'); 1374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('entertainment').innerText = getI18nMsg('e'); 1384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('sports').innerText = getI18nMsg('s'); 1394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('health').innerText = getI18nMsg('m'); 1404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('most').innerText = getI18nMsg('po'); 1414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('select_country').innerText = getI18nMsg('country'); 1424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('topic').innerText = getI18nMsg('topic'); 1434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('save_button').innerText = getI18nMsg('save'); 1444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('story_count').innerText = getI18nMsg('storyCount'); 1454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('logo').innerHTML = $('logo').innerHTML + getI18nMsg('newsOption'); 1464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('custom_text').innerHTML = getI18nMsg('customText') + '<br/>' + 1474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch getI18nMsg('maximumTopics',[MAX_CUS_TOPICS]); 1484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('submit_button').value = getI18nMsg('submitButton'); 1494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 1504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/** 1524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * Sets topic list and number of stories retrieved from localstorage(if any) 1534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * otherwise sets to default. 1544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 1554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochfunction setCountAndTopicList() { 1564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var topicLists = document.getElementsByClassName('checkBox'); 1574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Retrieves topics list from localStorage. 1594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var topics = JSON.parse(window.localStorage.getItem('topics')); 1604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Runs if retrieved topic list from local storage contains topics. 1624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (topics) { 1634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch for (var x = 0, topicList; topicList = topicLists[x]; x++) { 1644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Saves whether checkbox is checked or not. 1664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var isPresent = false; 1674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch for (var y = 0; y < topics.length; y++) { 1684a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (topics[y] == topicList.value) { 1694a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch topicList.checked = true; 1704a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch isPresent = true; 1714a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch checkCount++; 1724a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch break; 1734a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 1744a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 1754a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (!isPresent) { 1764a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch topicList.checked = false; 1774a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 1784a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 1794a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 1804a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1814a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Retrieves list of custom topics from localstorage(if any) and shows it 1824a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // in option page. 1834a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var keywords = JSON.parse(window.localStorage.getItem('keywords')); 1844a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (keywords) { 1854a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1864a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Template to store custom topics in a table. 1874a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var template = []; 1884a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var title = chrome.i18n.getMessage('deleteTitle'); 1894a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch for (var i = 0; i < keywords.length; i++) { 1904a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch checkCount++; 1914a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1924a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('<tr style = "height: 22px;">'); 1934a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('<td id = "keyword_value" class = "cusTopicsClass">'); 1944a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('<textarea class="noborder" readonly>'); 1954a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push(keywords[i]); 1964a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('</textarea>'); 1974a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('<td class = "suppr" onclick = "delCusTopic(this)" '); 1984a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('title="'); 1994a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push(title); 2004a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('">'); 2014a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('</td>'); 2024a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('</tr>'); 2034a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 2044a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('custom_topics').innerHTML = template.join(''); 2054a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (keywords.length == MAX_CUS_TOPICS) { 2064a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('submit_button').disabled = true; 2074a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('newKeyword').readOnly = 'readonly'; 2084a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 2094a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 2104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Check all checkboxes(default settings) if no custom topic list and 2114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // checkbox topic list from local storage is found. 2124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (!keywords && !topics) { 2134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch for (var x = 0, topicList; topicList = topicLists[x]; x++) { 2144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch topicList.checked = true; 2154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch checkCount++; 2164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 2174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 2184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Retrieves saved value of number of stories. 2204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var count = window.localStorage.getItem('count'); 2214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Sets number of stories in dropdown. 2234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (count) { 2244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('storyCount').value = count; 2254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 2264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 2274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/** 2294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * Saves checked topic list(if any), Custom topics(if any), number of 2304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * stories and country value in local storage. 2314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 2324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochfunction saveTopicsCountry() { 2334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var country = $('countryList').value; 2344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var topicLists = document.getElementsByClassName('checkBox'); 2354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Contains selected number of stories. 2374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var count = $('storyCount').value; 2384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Stores checked topics list. 2404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var topicArr = []; 2414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch for (var i = 0, topicList; topicList = topicLists[i]; i++) { 2424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (topicList.checked) { 2434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch topicArr.push(topicList.value); 2444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 2454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 2464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var keywords = JSON.parse(window.localStorage.getItem('keywords')); 2474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Saves custom topics to local storage(if any). 2494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (tempCusTopics.length > 0) { 2504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (keywords) { 2514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch keywords = keywords.concat(tempCusTopics); 2524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch window.localStorage.setItem('keywords', JSON.stringify(keywords)); 2534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } else { 2544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch window.localStorage.setItem('keywords', JSON.stringify(tempCusTopics)); 2554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 2564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch tempCusTopics.splice(0, tempCusTopics.length); 2574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 2584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Saves checkbox topics(if any). 2604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (topicArr.length > 0) { 2614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch window.localStorage.setItem('topics', JSON.stringify(topicArr)); 2624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } else { 2634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch window.localStorage.removeItem('topics'); 2644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 2654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch window.localStorage.setItem('count', count); 2674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch window.localStorage.setItem('country', country); 2684a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2694a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch showUserMessages('save_status', 0.5, 'saveStatus'); 2704a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('save_button').disabled = true; 2714a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 2724a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2734a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/** 2744a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * Disables the save button on options page if no topic is selected by the user. 2754a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * @param {String} id Id of checkbox checked or unchecked. 2764a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 2774a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochfunction manageCheckCount(id) { 2784a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch checkCount = ($(id).checked) ? (checkCount + 1) : (checkCount - 1); 2794a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('save_button').disabled = (checkCount == 0) ? true : false; 2804a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 2814a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2824a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/** 2834a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * Enables save button if at least one topic is selected. 2844a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 2854a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochfunction enableSaveButton() { 2864a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (checkCount != 0) { 2874a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('save_button').disabled = false; 2884a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 2894a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 2904a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2914a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/** 2924a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * Adds new entered custom topic. 2934a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 2944a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochfunction addCusTopic() { 2954a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Retrieves custom topic list from local storage(if any), else create new 2964a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // array list. 2974a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var keywords = JSON.parse(window.localStorage.getItem('keywords') || "[]"); 2984a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2994a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Adds topic only if total number of added custom topics are less than 10. 3004a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (keywords.length + tempCusTopics.length <= (MAX_CUS_TOPICS - 1)) { 3014a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 3024a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Stores new entered value in input textbox. 3034a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var val = $('newKeyword').value; 3044a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (val) { 3054a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch val = val.trim(); 3064a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (val.length > 0) { 3074a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var pattern = /,/g; 3084a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 3094a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Runs if comma(,) is not present in topic entered. 3104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (val.match(pattern) == null) { 3114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch checkCount++; 3124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch tempCusTopics.push(val); 3134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 3144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Template to store custom topics in a table. 3154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var template = []; 3164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var title = chrome.i18n.getMessage('deleteTitle'); 3174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 3184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('<tr style = "height: 22px;">'); 3194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('<td id = "keyword_value" class = "cusTopicsClass">'); 3204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('<textarea class="noborder" readonly>'); 3214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push(val); 3224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('</textarea>'); 3234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('<td class = "suppr" onclick = "delCusTopic(this)" '); 3244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('title="'); 3254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push(title); 3264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('">'); 3274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('</td>'); 3284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch template.push('</tr>'); 3294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 3304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('custom_topics').innerHTML += template.join(''); 3314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch enableSaveButton(); 3324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } else { 3334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch showUserMessages('invalid_status', 2.5, 'invalidChars'); 3344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 3354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 3364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('newKeyword').value = ''; 3374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 3384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 3394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 3404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if ((keywords.length + tempCusTopics.length) == (MAX_CUS_TOPICS)) { 3414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('submit_button').disabled = true; 3424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('newKeyword').readOnly = 'readonly'; 3434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 3444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 3454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 3464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/** 3474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * Delete custom topic whenever users click on delete icon. 3484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * @param {HTMLTableColElement} obj HTML table column element to be deleted. 3494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 3504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochfunction delCusTopic(obj) { 3514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Deletes only if total number of topics are greater than 1, else shows 3524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // error message. 3534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (checkCount > 1) { 3544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var value; 3554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 3564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Extract custom topic value. 3574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch value = obj.parentNode.querySelector('.cusTopicsClass textarea').value; 3584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 3594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Removes custom topic element from UI. 3604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('custom_topics').removeChild(obj.parentNode); 3614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 3624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Removes custom topic element either from temporary array(if topic is 3634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // not yet saved) or from saved topic list and saves new list to 3644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // local storage. 3654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var flag = 0; 3664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch for (var i = 0; i < tempCusTopics.length; i++) { 3674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (tempCusTopics[i] == value) { 3684a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch tempCusTopics.splice(i, 1); 3694a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch flag = 1; 3704a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch break; 3714a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 3724a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 3734a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 3744a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (flag == 0) { 3754a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch var keywords = JSON.parse(window.localStorage.getItem('keywords')); 3764a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch for (i = 0; i < keywords.length; i++) { 3774a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (keywords[i] == value) { 3784a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch keywords.splice(i, 1); 3794a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch break; 3804a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 3814a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 3824a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (keywords.length > 0) { 3834a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch window.localStorage.setItem('keywords', JSON.stringify(keywords)); 3844a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } else { 3854a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch window.localStorage.removeItem('keywords'); 3864a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 3874a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 3884a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 3894a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch checkCount--; 3904a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('submit_button').disabled = false; 3914a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } else { 3924a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch showUserMessages('save_status', 2.5, 'noTopic'); 3934a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 3944a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch $('newKeyword').readOnly = false; 3954a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 396