(function($) {
  $.extend({
    dataStore: function(options, callback) {
      var dataStoreAPIURL = '/data';

      var query_data = {
        api_key: '',
        bundle_name: '',
        return_fields: [],
        search: {}
      };

      if (options) { 
        $.extend(query_data, options);
      }

      if (query_data['bundle_name'] == '' || query_data['api_key'] == '') {
        return;
      }

      $.each(query_data['search'], function(key, value) { 
        if (value.match(/^\#/) || value.match(/^\./)) {
          el = $(value);
          if (el.length > 0) {
            query_data[key] = $(value).val();
          }
        } else {
          query_data[key] = value;
        }
      });

      delete query_data['search'];
      $.getJSON(dataStoreAPIURL, query_data, callback);
    }
  });
})(jQuery);

