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