// Copyright 2011 Google Inc.  All Rights Reserved.

/**
 * @fileoverview displays data from a feed on a page.
 *
 * @author tchyrkova@google.com (Tanya Chyrkоva)
 */

var scroller;

/**
 * reads data from feeds, shows it on a page.
 */
(function() {
  var gallery = '', bigphoto = '', total_photos = '';
  var itemsKeeper = [], datas = [], link_to_kp_full = [];
  var data, allItems, kp_link, photos;
  var width = 0;
  var MONTHS_NAMES = ['', 'января', 'февраля', 'марта', 'апреля', 'мая',
    'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'];
  var copy = '«Гуглики» – это иллюстрации самых быстрорастущих' +
    ' поисковых запросов на сайте Google.ru за последнюю неделю.';
  var key_word = 'Гуглик недели: ';
  var search_news = 'href="http://www.google.ru/search?' +
    'hl=ru&gl=ru&tbm=nws&btnmeta_news_search=1&q=';
  var kp = 'http://kp.ru';
  var readKP = ' читать на КП';

  /**
   * reads link & id from the feed/spreadsheet;
   * on click, sets link for dom element kp_block;
   * if data from feed for current id is absent,
   * sets default link.
   * @param {object} data A json object, received from feed.
   */
  window.viewKPLinks = function(data) {
    var links_kp = [], link_id = [];
    links_kp = data.feed.entry;
    kp_link = links_kp.length - 1;

    for (k = kp_link; k >= 0; k--) {
      link_to_kp = links_kp[k];
      link_to_kp_full[k] = links_kp[k].content.$t.split('kplink: ')[1];
      link_id[k] = links_kp[k].title.$t;
    }

    var kp_block = document.getElementById('kp');
    gweb.events.listen(kp_block, 'click', function(e) {
      kp_link = kp_block.getAttribute('href');
      item_id = scroller.selectedItem.id;
      if (link_to_kp_full[item_id]) {
        kp_block.setAttribute('href', link_to_kp_full[item_id]);
      } else {
        kp_block.setAttribute('href', kp);
      }
    });
  }

  /**
   * reads data from picassa feed,
   * & shows it on a page.
   * @param {object} data A json object, received from picassa feed.
   */
  window.viewAlbumPhotos = function(data) {
    var j;
    photos = data.feed.entry;
    total_photos = photos.length - 1;
    var googlik;

    for (j = photos.length - 1; j >= 0; j--) {
      thumb = photos[j].media$group.media$content[0].url;
      small_thumb = photos[j].media$group.media$thumbnail[1].url;
      descr = photos[j].media$group.media$description.$t.split('--');
      descr_date = descr[0];
      descr_title = descr[1];
      descr_itself = descr[2];
      date = descr_date.split('.');
      width += 100;

      gallery =
        '<li><a href="#' + j + '">' +
        '<img width="139px" height="99px" src="' + small_thumb + '"/>' +
        '<span>' + date[0] + ' ' + MONTHS_NAMES[parseInt(date[1], 10)] +
        ' ' + (date[2] ? date[2] : '') + '</span>' + '</a></li>' +
        gallery;

        bigphoto +=
          '<div class="g-scroller-slide" id="' + j + '">' +
          '<img alt="' + descr_title + '" src="' + thumb +
          '" width="615px" height="400px;"/>' +
          '<div class="copy"><div class="week">' +
          '<a target="_blank"' +
          (descr_itself.length > 200 ? ' style="margin-top:-16px"' : '') +
          search_news + descr_title + '">' + key_word + descr_title + '</a>' +
          '<p class="desc">' + descr_itself +
          '<a class="kp_article" href="" target="_blank">' + readKP + '</a>' +
          '</p></div></div></div>';

        datas[j] = {
        thumb: thumb,
        description: copy,
        title: descr_title,
        image: small_thumb
      };
    }

    googlik = document.getElementById('googlik');
    gweb.events.listen(googlik, 'click', function(e) {
      if (e.target.className === 'kp_article') {
        if (!link_to_kp_full[scroller.selectedItem.id]) {
          e.target.href = kp;
        } else {
          e.target.href = link_to_kp_full[scroller.selectedItem.id];
        }
      }
      var links = document.getElementsByTagName('link')[1];
      links.href =
        'http://www.google.ru/intl/ru/landing/googliki/fb/googlik' +
            scroller.selectedItem.id + '.html';
      document.getElementById('plusOneHolder').innerHTML =
        '<div class=\"g-plusone\" data-annotation=\"none\"></div>';
      gapi.plusone.go('plusOneHolder');
    });

    document.getElementById('gallery').innerHTML = gallery;
    document.getElementById('gallery').setAttribute('style',
      'width:' + width + 'px;');
    document.getElementById('g-scroller-slides').innerHTML = bigphoto;

     /**
     * takes href attribute of clicked link,
     * substitutes params in taken href with data of current item:
     * (image, description, title, id)
     * opens popup window with constructed link
     * @param {string} share_url A href attribute of a clicked social icon.
     */
    function popitup(share_url) {
      var linkToGo = '';
      item_id = scroller.selectedItem.id;
      var data = datas[scroller.selectedItem.index];
      var redirect_url = 'http://www.google.ru/intl/ru/' +
      'landing/googliki/index.html#';

      linkToGo = share_url
        .replace('{url}',
          encodeURIComponent(redirect_url + item_id))
        .replace('{title}', (key_word + data.title))
        .replace('{description}', data.description)
        .replace('{image}', data.image)
        .replace('{id}', item_id);

      newwindow = window.open(linkToGo, 'name',
          'height=600,width=700,scrollbars=1');
      if (window.focus) {
        newwindow.focus();
      }
      return false;
    };

    var share_block = gweb.dom.getElementsByTagNameAndClass('div', 'share')[0];
    gweb.events.listen(share_block, 'click', function(e) {
      e.preventDefault();
      var link = e.target.getAttribute('href');
      popitup(link);
    });

    /**
     * scroller component of Gweb library
     */
    scroller = new gweb.ui.Scroller({
      scrollerId: 'g-scroller',
      slidesContainerId: 'g-scroller-slides',
      oneAtATimeFlag: false,
      centerFlag: true,
      defaultItem: '' + total_photos
    });
  }

})();

