diff --git a/EventQuery.js b/EventQuery.js
new file mode 100644
index 0000000..6c2c44e
--- /dev/null
+++ b/EventQuery.js
@@ -0,0 +1,126 @@
+//utf-8
+var nameArray = ['Goga', 'Vasya', 'Petya', 'Zina', 'Ira', 'Masha', 'Dima', 'Tolya', 'Kolya', 'Marina', 'Gulya', 'Alyona', 'Zhenya', 'Ruslan', 'Uriy'];
+function Event(obj) { //Call, DateStart, DateFinish, Description, Parent, Childs, Comments, Peopleт, Location, Private, Rank, EvRS, Link
+ 'use strict';
+ return obj || {};
+};
+var lectureJS1 = {"start": new Date(2012, 9, 3, 19, 00, 00),
+ "end": new Date(2012, 9, 3, 20, 00, 00),
+ "name": "1 лекция по JavaScript",
+ "description": "Обзор языка",
+ "parent": {},
+ "childs": [lectureJS2, lectureJS3, lectureJS4],
+ "comments": ['Красивенько', 'А мы могли бы...'],
+ "people": nameArray,
+ "location": {},
+ "private": true,
+ "rank": 4,
+ "EvRS": 16,
+ "Link": 'http://cripi.ru/#javascript'
+ };
+var lectureJS2 = {"start":new Date(2012, 9, 10, 19, 00, 00),
+ "end": new Date(2012, 9, 10, 21, 00, 00),
+ "name": "2 лекция по JavaScript",
+ "description": "Типы данных. Объекты. Statements. Expressions.",
+ "parent": lectureJS1,
+ "childs": [lectureJS3, lectureJS4],
+ "comments": ['Можете вообще ничего не делать', 'Можно ли перенести на 19:30?'],
+ "people": nameArray,
+ "location": {},
+ "private": true,
+ "rank": 4,
+ "EvRS": 16,
+ "Link": 'http://cripi.ru/#javascript'
+ };
+var lectureJS3 = {"start":new Date(2012, 9, 17, 19, 30, 00),
+ "end": new Date(2012, 9, 17, 21, 00, 00),
+ "name": "3 лекция по JavaScript",
+ "description": "Итераторы и циклы",
+ "parent": lectureJS2,
+ "childs": [lectureJS4],
+ "comments": ['Можете вообще ничего не делать', 'Можно ли перенести на 19:30?'],
+ "people": nameArray,
+ "location": {},
+ "private": true,
+ "rank": 3,
+ "EvRS": 16,
+ "Link": 'http://cripi.ru/#javascript'
+ };
+var lectureJS4 = {"start":new Date(2012, 9, 24, 18, 30, 00),
+ "end": new Date(2012, 9, 24, 21, 00, 00),
+ "name": "4 лекция по JavaScript",
+ "description": "ООП, которого нет",
+ "parent": lectureJS3,
+ "childs": [],
+ "comments": [],
+ "people": nameArray,
+ "location": {},
+ "private": true,
+ "rank": 0,
+ "EvRS": 16,
+ "Link": 'http://cripi.ru/#javascript'
+ };
+var eventArray = [lectureJS3, lectureJS4, lectureJS1, lectureJS2];
+for (var nameIndex in nameArray) {
+ var randomnumber = Math.random()*nameIndex;
+ eventArray[eventArray.length]=(Event({
+ 'people':[nameArray[nameIndex]],
+ 'name' : "Ещё одно событие"+nameIndex,
+ 'start' : new Date(2012, randomnumber, randomnumber*(1+Math.random()), 10+randomnumber*Math.random(), 00, 00),
+ 'end' : new Date(2012, randomnumber, randomnumber*2, 11+randomnumber, 30, 00),
+ 'rank' : (Math.random()*5).toFixed(0),
+ 'EvRS' : 16,
+ }));
+};
+//Закончили формировать случайные объекты. Переходим к выборке.
+function isData(data) {
+ "use strict";
+ if (typeof data === 'undefined') {return false;}
+ return data;}
+function Flt(A,varHash){ // filterFieldHash, sortedField, next, prew
+ varHash = varHash || {};
+ curDate = isData(varHash['date']) || new Date();
+ next = isData(varHash['next']);
+ prew = isData(varHash['prew']);
+ filterField =isData(varHash['filterField']) || {};
+ sortedField = isData(varHash['sortedField']) || 'start';
+ if (next===true) {
+ return A.filter(function (event){ //after - грядущие
+ return event.start >= curDate;
+ })};
+ if (prew==true){
+ return A.filter(function (event){ //pre - предыдущие
+ return event.end < curDate;
+ })};
+
+ //Проверка вхождения
+ function inArray(looking_for, list){
+ for(i in list){
+ if(looking_for == list[i]){
+ return true;
+ }
+ }
+ return false;
+ };
+ for (var field in filterField){
+
+ A = A.filter(function(event){
+ return inArray(filterField[field],event[field]);
+ });
+ };
+ A.sort(function(a,b){
+ if (a[sortedField]>b[sortedField]){
+ return -1};
+ if (a[sortedField]
+
+
+
+
Тестовый шаблон
+ + + + + + \ No newline at end of file