<!-- 鶯と龜 -->

var DEBUG = {};
DEBUG.result = false;

var _dataSources =
  {

    _web:
    {
      _info:
      {
        _title: 'Flickr',
        _icon: './img/yahoo.gif',
        _more_url: 'http://www.flickr.com/photos/tags/'
      },
      _request:
      {
        _format: 'rss2.0',
        _url: 'http://www.flickr.com/services/feeds/photos_public.gne?format=rss_200&tags='
      }
    }

  };

// var _patternCDATA = new RegExp('(<!\\[CDATA\\[)?([^(<!\\[CDATA\\[|\\]\\]>)]*)(\\]\\]>)?', '');
var _patternTag = new RegExp('<[^>]+>', 'g');

var _resultsTemplate = new JKL.Hina('resultsTemplate');

function handleResults(_JSON)
{
  // timestamp(parseJSON)
  // var _parseJSON_start = (new Date()).getTime();

  // var _param = JSON.parse(_JSON);
  var _param = json_decode(_JSON);

  // timestamp(parseJSON)
  // var _parseJSON_end = (new Date()).getTime();
  // _param._responses._time._parseJSON = (_parseJSON_end - _parseJSON_start)  * 0.001;

  var _resultItems = [];
  _resultItems = _param._responses._results;

  for (var i in _resultItems)
    {
      _resultItems[i].id = _param._responses._label + '_' + i;
      // _resultItems[i].imgsrc = _resultItems[i]['media:content'].url;
      _resultItems[i].imgsrc = _resultItems[i]['media:thumbnail'].url;
    }

  var _resultInfo = {};
  _resultInfo._label = _param._responses._label;
  _resultInfo.rss_url = _param._requests._url + _param._requests._query;
  _resultInfo.title = _dataSources[_param._responses._label]._info._title;
  _resultInfo.icon = _dataSources[_param._responses._label]._info._icon;
  _resultInfo.more_url = _dataSources[_param._responses._label]._info._more_url
    + _param._requests._query;

  var _resultSet = {info: _resultInfo, items: _resultItems};

  showResults(_resultSet);

  // if (DEBUG.result) $('responseViewer').value = JSON.stringify(_param._responses);
  if (DEBUG.result) $('responseViewer').value += json_encode(_param._responses);
}

function showResults(resultSet)
{
  var label = resultSet.info._label;
  _resultsTemplate.expand(resultSet, 'resultsPlaceHolder' + label);

  new Effect.Appear('column' + label);
}

function getResults(query)
{
  var query, query_encoded;
  var _param = {};
  var _JSON;

  if (query) { $('my_query').value = query; }
  else { query = $('my_query').value; }
  query_encoded = encodeURI(query);

  if (query)
    {
      if (DEBUG.result) $('requestViewer').value = '';
      if (DEBUG.result) $('responseViewer').value = '';

      // if (DEBUG.result) $('requestViewer').value = json_encode(_dataSources);

      for (var label in _dataSources)
        {
          _param._requests = _dataSources[label]._request;
          _param._requests._label = label;
          _param._requests._query = query_encoded;

          // if (DEBUG.result) $('requestViewer').value += JSON.stringify(_param._requests);
          if (DEBUG.result) $('requestViewer').value += json_encode(_param._requests);

          $('resultsPlaceHolder' + label).innerHTML = '<div id="loading' + label + '" class="loading"><img src="./img/loading.gif" /></div>';

          // _JSON = JSON.stringify(_param);
          _JSON = json_encode(_param);

          x_search(_JSON, handleResults);

        }
    }
  else { return; }
}

function initResultHandler()
{
  getResults('dog');
}
