function SimpleBase(data, headers) {
	this.data = data;
	this.headers = headers;
}

SimpleBase.prototype = {
	escape: function(t) {
		var re = new RegExp(t, 'i');
		return re;
	},
	find: function(query, headers, first) {
		var res = [],
			data = this.data;

		query = this.escape(query);
		var indexes = this._prepareIndexes(headers);
		for (var i = 0, len = data.length; i < len; i++) {
			var buf = this._findAtLine(data[i], query, indexes);
			if (buf) {
				if (first) {
					return data[i];
				}
				
				res.push(data[i]);
			}
		}
		
		return res;
	},
	first: function(query, headers) {
		return this.find(query, headers, true);
	},
	_prepareIndexes: function(headers) {
		if (!headers) {
			return null;
		}
		
		var res = [];
		for (var i = 0; i < headers.length; i++) {
			res.push(this._inArray(headers[i], this.headers));
		}
		
		return res;
	},
	_findAtLine: function(line, query, indexes) {
		var i;
		if (!indexes) {
			for (i = 0; i < line.length; i++) {
				var item = line[i];
				if (item == query || item.search(query) != -1) {
					return true;
				}
			}
		}
		else {
			for (i = 0; i < indexes.length; i++) {
				var item = line[indexes[i]];
				if (item == query || item.search(query) != -1) {
					return true;
				}
			}
		}
		
		return false;
	},
	_inArray: function(str, arr) {
		for (var i = 0, len = arr.length; i < len; i++) {
			if (arr[i] == str) {
				return i;
			}
		}
		
		return -1;
	}
};
