// Copyright 2009 Google Inc.  All Rights Reserved.

/**
 * @fileoverview Pulls data from the spreadsheet and displays
 * it on the Earth homepage as a promo.
 *
 * @author Michal Drewniak
 */

/**
 * Homepage promo class.
 * Connects HomepagePromo class instance with DOM elements
 * it will be manipulating.
 * @param {string} sheetId String to identify a spreadsheet to pull data from.
 * @constructor
 */
earth.HomepagePromo = function(sheetId) {
  var NUM_LANGS = 100;
  this.feed = new google.feeds.Feed('http://spreadsheets.google.com/feeds/' +
                                    'list/' + sheetId + '/public/' +
                                    'basic');
  this.feed.setNumEntries(NUM_LANGS);
  this.feed.load(this.showPromo);
};

/**
 * Extract data from json string and pass the extracted data to displayPromo.
 * @param {Object} data Feed data.
 */
earth.HomepagePromo.prototype.showPromo = function(data) {

  var dataSize = data.feed.entries.length;

  for (var i = 0; i < dataSize; i++) {
    if (data.feed.entries[i].title == earth.globals.locale['lang']) {
      var promoData = data.feed.entries[i].content.split(',');
      var promoSize = promoData.length;
      break;
    }
  }

  var promo = {};
  for (var i = 0; i < promoSize; i++) {
    var field = promoData[i].split(': ');

    // Check next record in case the current one had a comma(s)
    // and resulting split on json data was incorrect.
    while (promoData[i + 1] && !promoData[i + 1].match(':')) {
      i++;
      field[1] = field[1] + ',' + promoData[i];
    }
    promo[field[0].trim()] = field[1];
  }

  /**
   * promo[fullpromotext] - full promo text
   * promo[linkedtext] - linked text (subset of fullpromotext)
   * promo[new] - "New!"
   * promo[popup] - should it open in new window (yes/no)
   * promo[trackingid] - analytics tracking id
   * promo[url] - Link url
   * promo[visible] - is promo visible
   * promo[language] - language of the promo (not used within js)
   */
  var container = document.getElementById('index_promo');
  try {
    if (promo['visible'] && promo['visible'].toLowerCase() == 'yes') {
      var newTxt = promo['new'] ? promo['new'] : '';
      container.innerHTML = '\<b\>\<span class="red"\>' +
                            newTxt + '\</span>\</b\> ';

      var promoText = createPromoText(promo);
      container.innerHTML += promoText;
      container.className = 'index_promo';
    }
  } catch (e) {
    // If container not found, do nothing
  }

  /**
   * Constructs promo text.
   * @param {Object} promo Promo data.
   * @return {String} Promo HTML code.
   */
  function createPromoText(promo) {
    if (promo['popup'] && promo['popup'].toLowerCase() == 'yes') {
      var target = '_blank';
    } else {
      var target = '';
    }
    var spanTxt = '\<span\>' + promo['fullpromotext'] + '</span\>';
    var ahrefTxt = '\<a href="' + promo['url'] +
                   '"onclick="urchinTracker(\'/promos/' +
                   promo['trackingid'] + '\');" target="' + target + '"\>' +
                   promo['linkedtext'] + '\</a\>';

    spanText = spanTxt.replace(promo['linkedtext'], ahrefTxt);
    return spanText;
  }

};









