diff --git a/test.html b/test.html
new file mode 100644
index 0000000..d1e8be4
--- /dev/null
+++ b/test.html
@@ -0,0 +1,29 @@
+
+
+
+ Вывод информации о событиях
+
+
+
+
+
+
+ Тестирование вывода информации в консоль
+
+
+
+
+
\ No newline at end of file
diff --git a/test_event.js b/test_event.js
new file mode 100644
index 0000000..ba23c9c
--- /dev/null
+++ b/test_event.js
@@ -0,0 +1,173 @@
+/**
+ * Возвращает объект Event
+ * @param {String} [name="Встреча"] Имя события
+ * @param {Number|Date} start Начало события
+ * @param {Number|Date} end Конец события
+ * @param {Object} participants Список участников и их контакты
+ * @param {Object} organizer Организатор и его контактная информация
+ * @param {String} place Место встречи
+ * @param {String} info Дополнительная информация о встрече
+ * @param {String} reminder ["За день до встречи", "за час"] Дата, когда напомнить о встрече
+ * @param {String} type["Работа", "Отдых", "Дела"] Тип встречи, пользователю будет предложено выбрать из списка
+ * @param {String} party ["участвую", "не участвую"] Подтверждение участия в событии
+ * @example
+ * Event("Совещание",
+ * new Date('2011-10-10T14:48:00'),
+ * new Date('2011-10-10T15:48:00'),
+ * [["Саша", 891288734], ["Аня", 987462974], ["Паша", 987462974]],
+ * ["Паша", 8588264934],
+ * "Луначарского 92, кб.31",
+ * "Будут обсуждаться вопросы...",
+ * "За день до встречи",
+ * "Работа",
+ * "участвую"
+ * )
+ *
+ * @return {Object}
+ *
+ * function FilterToDate(collection, flag) возвращает предстоящие или прощедшие события в зависимости от значения flag
+ * function FilterToParty(collection, flag) возвращает события, в которых я принимаю/ не принимаю участие в зависимости от значения flag
+ * function SortToNumberParticipants(collection) сортирует встречи по количеству участников
+ * function SortToDate(collection) сортирует встречи по дате
+ */
+/*jslint browser: true, devel: true */
+function Event(name, start, end, participants, organizer, place, info, reminder, type, party) {
+ "use strict";
+ if (typeof start === "undefined") {
+ throw new TypeError("should be date");
+ }
+ if (typeof start === "Date") {
+ start = start.toString();
+ }
+ if (typeof end === "Date") {
+ end = end.toString();
+ }
+ return {
+ "name": name || "Встреча",
+ "start": start,
+ "end": end,
+ "participants": participants || {},
+ "organizer": organizer || {},
+ "place": place || {},
+ "info": info || {},
+ "reminder": reminder || "За день до встречи",
+ "type": type || "Работа",
+ "party": party || "участвую"
+ };
+}
+var participants = [["Саша", 891288734], ["Аня", 987462974], ["Паша", 987462974], ["Катя", 987462974], ["Даша", 987462974]];
+var place = ["Кафе", "Актовый зал", "Луначарского 92, кб.31", "дом пионеров"];
+var reminder = ["За день", "За неделю", "За час", "За 4 часа"];
+var n = ["Совещание", "Встреча", "Конференция", "Праздник", "Дела"];
+var type = ["Работа", "Отдых", "Дела"];
+var party = ["участвую", "не участвую"];
+var Work = new Event("Совещание",
+ new Date('2012-10-10 14:48:00'),
+ new Date('2012-10-10 15:48:00'),
+ [["Саша", 891288734], ["Аня", 987462974], ["Паша", 987462974]],
+ ["Паша", 8588264934],
+ "Луначарского 92, кб.31",
+ "Будут обсуждаться вопросы...",
+ "За день до встречи",
+ "участвую");
+var NewYear = new Event("Праздник",
+ new Date('2012-12-10 14:48:00'),
+ new Date('2012-12-10 15:48:00'),
+ [["Саша", 891288734], ["Катя", 987462974], ["Даша", 987462974], ["Оля", 8588264934], ["Настя", 8588264934]],
+ ["Оля", 8588264934],
+ "Луначарского 92, кб.31",
+ "Всем быть в костюмах...",
+ "За неделю",
+ "Отдых",
+ "участвую");
+var study = new Event("Конференция",
+ new Date('2012-11-24 14:48:00'),
+ new Date('2012-11-24 15:48:00'),
+ [["Денис", 891288734], ["Аня", 987462974], ["Паша", 987462974]],
+ ["Денис", 8588264934],
+ "Луначарского 92, кб.31",
+ "Анализ биологических последовательностей",
+ "Дела",
+ "участвую");
+var conf = new Event("Конференция",
+ new Date('2012-12-08 14:48:00'),
+ new Date('2012-12-08 15:48:00'),
+ [["Саша", 891288734], ["Аня", 987462974], ["Паша", 987462974]],
+ ["Денис", 8588264934],
+ "Луначарского 92, кб.31",
+ "Матроиды и графы",
+ "За день",
+ "Дела",
+ "не участвую");
+var Sport = new Event("Дополнительные тренировки",
+ new Date('2011-09-10 14:48:00'),
+ new Date('2011-11-10 15:48:00'),
+ [["Аня", 987462974]],
+ ["Катя", 8588264934],
+ "Луначарского 92, кб.31",
+ "Ура! У вас есть возможность посетить дополнительные тренировки",
+ "За час",
+ "Отдых",
+ "участвую");
+var collection = [Work];
+collection.push(Sport, conf, study, NewYear);
+/*var i;
+for (i = 0; i < 5; i = i + 1) {
+ var test = new Event (n[Math.floor(Math.random() * n.length)],
+ participants[Math.floor(Math.random() * participants.length)],
+ place[Math.floor(Math.random() * place.length)],
+ reminder[Math.floor(Math.random() * reminder.length)],
+ type[Math.floor(Math.random() * type.length)],
+ party[Math.floor(Math.random() * party.length)]);
+ collection.push(test);
+}
+*/
+function FilterToDate(collection, flag) {
+ "use strict";
+ var result;
+ if (flag === -1) {
+ result = collection.filter(function (collection) {
+ return collection.start < new Date();
+ });
+ } else {
+ result = collection.filter(function (collection) {
+ return collection.start >= new Date();
+ });
+ }
+ return result;
+}
+console.log('Прошедшие события:', new FilterToDate(collection, -1));
+console.log('Предстоящие события:', new FilterToDate(collection, 1));
+function FilterToParty(collection, flag) {
+ "use strict";
+ var result;
+ if (flag === -1) {
+ result = collection.filter(function (collection) {
+ return collection.party === "не участвую";
+ });
+ } else {
+ result = collection.filter(function (collection) {
+ return collection.party === "участвую";
+ });
+ }
+ return result;
+}
+console.log('Я не участвую во встречах:', new FilterToParty(collection, -1));
+console.log('Я участвую во встречах', new FilterToParty(collection, 1));
+function SortToNumberParticipants(collection) {
+ "use strict";
+ collection.sort(function (a, b) {
+ return a.participants.length > b.participants.length ? 1 : -1;
+ });
+ return collection;
+}
+console.log('Встречи, отсортированные по количеству участников:', new SortToNumberParticipants(collection));
+function SortToDate(collection) {
+ "use strict";
+ collection.sort(function (a, b) {
+ return a.start > b.start ? 1 : -1;
+ });
+ return collection;
+}
+console.log('Встречи, отсортированные по дате:', new SortToDate(collection));
+console.log('Выбрать все предстоящие события с моим участием отсортированные по числу участников:', new SortToNumberParticipants(new FilterToParty(new FilterToDate(collection, 1), 1)));