// Напишите функцию max, которая сравнивает два числа и возвращает большее: 
// function comparison() {
// 	x = +prompt('Enter first number');
// 	y = +prompt('Enter second number');
// 	if (isFinite(x) && isFinite(y)) {
// 		if (x < y) {
// 			alert(y + ' > ' + x);
// 		}else if (y < x) {
// 			alert(x + ' > ' + y);
// 		}else alert('values are the same');
// 	}else alert('Incorrect, not a number');
// }
// comparison();

// Напишите функцию-аналог Math.min(). Функция принимает любое количество чисел и возвращает меньшее из них:
// function min() {
// 	for (var i = 0, min = arguments[0]; i < arguments.length; i++){
// 		if (arguments[i] < arguments[0]) {
// 			min = arguments[i];
// 		}
// 	}
// 	console.log(min);
// }
// min(3, 6, 8, 0, -1, 5, 6, 8);

// Изучите перебирающие методы массивов: forEach, filter, map. Создайте массив объектов users (~10 объектов), 
// каждый объект имеет поля firstname, lastname, age с разными значениями. Используя встроенные функции массивов:	
// Отфильтруйте пользователей младше 18 лет
// Добавьте каждому объекту поле fullName, которое является конкатенацией имени и фамилии
// Сформируйте новый массив, который содержит только полное имя пользователей
// debugger;
// var arr = [
// 	{
// 		firstname: 'John',
// 		lastname: 'Smith',
// 		age: '15'
// 	},
// 	{
// 		firstname: 'Tony',
// 		lastname: 'Stark',
// 		age: '54'
// 	},
// 	{
// 		firstname: 'Jeck',
// 		lastname: 'Morris',
// 		age: '25'
// 	},
// 	{
// 		firstname: 'Anthony',
// 		lastname: 'Montana',
// 		age: '34'
// 	},
// 	{
// 		firstname: 'Gregory',
// 		lastname: 'Guck',
// 		age: '14'
// 	},
// 	{
// 		firstname: 'Joffry',
// 		lastname: 'Barateon',
// 		age: '19'
// 	},
// 		{
// 		firstname: 'Sansa',
// 		lastname: 'Redhead',
// 		age: '10'
// 	},
// 	{
// 		firstname: 'Kreol',
// 		lastname: 'Destroyer',
// 		age: '90'
// 	},
// 	{
// 		firstname: 'Oleg',
// 		lastname: 'Britva',
// 		age: '33'
// 	},
// 		{
// 		firstname: 'Crazy',
// 		lastname: 'Frog',
// 		age: '58'
// 	}
// ];
// var more18 = arr.filter(function(item, i, age){
// 		return arr[i].age > 18;
// })
// var add = function(){}
// 	for (var i=0; i < arr.length;i++) {
// 		var fullName = arr[i].firstname + ' ' + arr[i].lastname;
// 		arr[i].fullName = fullName;
// };
// var full = arr.map(function(item){
// 	return item.fullName;
// });

// Напишите функцию аналог метода массива shift. Функция удаляет из переданного в параметре массива первый элемент.
// var arr = [
// 	{
// 		firstname: 'John',
// 		lastname: 'Smith',
// 		age: '15'
// 	},
// 	{
// 		firstname: 'Tony',
// 		lastname: 'Stark',
// 		age: '54'
// 	},
// 	{
// 		firstname: 'Jeck',
// 		lastname: 'Morris',
// 		age: '25'
// 	},
// 	{
// 		firstname: 'Anthony',
// 		lastname: 'Montana',
// 		age: '34'
// 	},
// 	{
// 		firstname: 'Gregory',
// 		lastname: 'Guck',
// 		age: '14'
// 	},
// 	{
// 		firstname: 'Joffry',
// 		lastname: 'Barateon',
// 		age: '19'
// 	},
// 		{
// 		firstname: 'Sansa',
// 		lastname: 'Redhead',
// 		age: '10'
// 	},
// 	{
// 		firstname: 'Kreol',
// 		lastname: 'Destroyer',
// 		age: '90'
// 	},
// 	{
// 		firstname: 'Oleg',
// 		lastname: 'Britva',
// 		age: '33'
// 	},
// 		{
// 		firstname: 'Crazy',
// 		lastname: 'Frog',
// 		age: '58'
// 	}
// ];
// function nwA() {
// 	for (var i=1,j=0, newarr = []; i < arr.length; i++, j++) {
// 			newarr[j] =arr[i]; 
// 	}
// 	console.log(newarr);
// }
// nwA();

// Напишите функцию аналог метода массива push.
// Функция добавляет в конец переданного в параметре массив произвольное количество элементов.
// var arr = [
// 	{
// 		firstname: 'John',
// 		lastname: 'Smith',
// 		age: '15'
// 	},
// 	{
// 		firstname: 'Tony',
// 		lastname: 'Stark',
// 		age: '54'
// 	},
// 	{
// 		firstname: 'Jeck',
// 		lastname: 'Morris',
// 		age: '25'
// 	}
// ];
// function nwA() {
// 	for (var i=0, newarr = []; arr.length <6; i++, arr.length++) {
// 		newarr[arr.length] = arr[i]; 
// 	}
// 	console.log(newarr);
// }
// nwA();

// Напишите функцию аналог метода jQuery $.extend. Первый параметр функции - целевой объект, 
// поля которого будут изменены или расширены. 
// Остальные параметры - объекты-источники, полями которых будет расширяться целевой объект.
// var obj = {};
// var obj1 = {
// 	orange : 'Апельсин',
// 	banana : 'Банан'
// };
// var obj2 = {
// 	carrot : 'Морковка',
// 	cabbage : 'Капуста'
// }
// var obj3 = {
// 	meet : 'Мясо',
// 	fish : 'Рыба'
// }
// debugger;
// function allSourse() {
// 	for (i=1;i <= 3;i++) {
// 		if (i=1) {
// 			for (var key in obj1) {
// 			obj[key] = obj1[key];
// 			}
// 		}
// 		if (i=2) {
// 			for (var key in obj2) {
// 			obj[key] = obj2[key];
// 			}
// 		}
// 		if (i=3) {
// 			for (var key in obj3) {
// 			obj[key] = obj3[key];
// 			}
// 		}
// 	}
// 	console.log(obj);
// }
// allSourse();

// Напишите функцию setComment с параметрами: date, message, author. 
// Дата и текст сообщения - обязательные параметры, если какой-то из них или оба отсутствуют, 
// то выполнение функции должно обрываться, а пользователю выдаваться предупреждение (alert) о том, 
// что данные переданы некорректно. Параметр author - опциональный, но должна происходить проверка: 
// если параметр не передан, то вместо него подставляется значение ‘Anonymous’.
// Функция распечатывает на странице текст в формате: 
// 				<имя_автора>, <дата>
// 				<текст_сообщения>
// function check(author,date,text) {
// 	var dates = {
// 	firstData : new Date( new Date().setDate(new Date().getDate()+365*20)),
// 	secondData : new Date( new Date().setDate(new Date().getDate()-365*40))
// 	}
// 	if (author === null){ 
// 		author = 'Anonymous';
// 		}
// 	if (date === null){
// 		alert('Incorrect data');
// 		return;
// 	} else if ((dates.firstData > date) &&(date > dates.secondData)) {
// 		date = date;
// 	} else {
// 		alert('Incorrect data');
// 		return;
// 	}
// 	if (text === null){
// 		alert('Enter something');
// 		return;
// 	}
// 	console.log(author + ', ' + date);
// 	console.log(text);
// }
// check(prompt('Enter a name'), new Date(prompt('Enter date in format  YYYY-MM-DD')),text = prompt('Enter something'));

// Создайте объект, описывающий html-разметку. Напишите функцию, которая добавляет разметку в произвольный контейнер на странице.
// var methods = [
// 	{
// 		h1: 'Array.prototype.every()', 
// 		tag : 'article',
// 		p: 'Метод every() проверяет, удовлетворяют ли все элементы массива условию, заданному в передаваемой функции.'},
// 	{
// 		h1: 'Array.prototype.some()', 
// 		tag : 'article',
// 		p: 'Метод some() проверяет, удовлетворяет ли хоть какой-нибудь элемент массива условию, заданному в передаваемой функции.'},
// 	{
// 		h1: 'Array.prototype.reduce()', 
// 		tag : 'article',
// 		p: 'Метод reduce() применяет функцию к аккумулятору и каждому значению массива (слева-направо), сводя его к одному значению.'},
// 	{
// 		h1: 'Array.prototype.reduceRight()',
// 		tag : 'article', 
// 		p: 'Метод reduceRight() применяет функцию к аккумулятору и каждому значению массива (справа-налево), сводя его к одному значению.'}
// ];
// function meth() {
// 	var section = $('<section>').appendTo('body');
// 	for (i=0;i < methods.length; i++) {
// 		function article() {
// 			var $item = $('<article>').appendTo('section');
// 			$('<h1>').text(methods[i].h1).appendTo($item);
// 			$('<p>').text(methods[i].p).appendTo($item);
// 		}
// 		article(methods[i].h1,methods[i].p);
// 	}
// }
// meth();

// Используя замыкание, напишите функцию createTimer, которая использует метод performance.now() 
// для получения текущей временной метки и служит для замера времени выполнения другого кода:
// function createTimer(){
// 	return function () {
// 		return performance.now();
// 	}
// }
// var timer = createTimer();
// alert('!');
// alert( timer() );

// Используя замыкания, создайте функцию createAdder(), 
// которая принимает на вход любой примитивный параметр и возвращает функцию, 
// которая добавляет к первому параметру второй. Функция работает по следующему принципу:
// 				var hello = createAdder('Hello, ');
// 				alert( hello('John') ); // Hello, John
// 				alert( hello('Harry') ); // Hello, Harry
// 				var plus = createAdder(5);
// 				alert( plus(1) ); // 6
// 				alert( plus(5) ); // 10

// function createAdder(any) {
// 	var tt = any;
// 	arguments[1];
// 	return function() {
// 		  for (var i = 0; i < 2; i++) {
//         return tt + arguments[0]; 
//     }
// 	}
	
// }
// var plus = createAdder(5);
// alert( plus(1) ); // 6
// alert( plus(5) ); // 10
// var hello = createAdder('Hello, ');
// alert( hello('John') ); // Hello, John
// alert( hello('Harry') ); // Hello, Harry
