Ponomarenko.Oleg 6 gadi atpakaļ
revīzija
7f996b2021
31 mainītis faili ar 2846 papildinājumiem un 0 dzēšanām
  1. 122 0
      canvas.html
  2. 109 0
      chat.html
  3. 59 0
      examp1.md
  4. BIN
      fonts.css
  5. 160 0
      form.html
  6. 9 0
      hw1/example.md
  7. 192 0
      hw2/hw2.md
  8. 153 0
      hw3/hw3.md
  9. 223 0
      hw4/hw4.md
  10. 117 0
      hw5/hw5.md
  11. 210 0
      hw6/hw6.md
  12. 30 0
      hw7/hw7.md
  13. 111 0
      hw8/hw8.md
  14. 16 0
      hw8/multiTable/index.html
  15. 41 0
      hw8/multiTable/main.js
  16. 14 0
      hw8/multiTable/style.css
  17. 37 0
      lesson1.md
  18. 17 0
      module2/index.html
  19. 2 0
      module2/link_place.md
  20. 188 0
      module2/main.js
  21. 26 0
      module2/style.css
  22. 155 0
      new.html
  23. 680 0
      new.js
  24. 82 0
      new.php
  25. 0 0
      new2.js
  26. 14 0
      one/css/style.css
  27. BIN
      one/fonts/ARIAL.TTF
  28. 14 0
      one/index.html
  29. 1 0
      one/js/libs.min.js
  30. 41 0
      one/js/main.js
  31. 23 0
      style.css

+ 122 - 0
canvas.html

@@ -0,0 +1,122 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>Document</title>
+</head>
+<body>
+    <canvas id='draw2' width='400' height='400' ></canvas>
+    <script>
+    
+   
+    // ctx.fillStyle='red'
+    // ctx.fillRect(0,0,350,300)
+    // var c=document.getElementById("сanvas");
+    // c.onclick=function(evt){
+    //     console.log(evt)
+    // }
+    // c.onmousemove=function(evt){
+    //     console.log(evt)
+    // }
+    // var ctx=c.getContext('2d')
+    // ctx.beginPath();
+    // ctx.arc(100,75,50,0,2*Math.PI);
+    // ctx.stroke();
+
+    var c=document.getElementById("draw2");
+    var ctx=c.getContext("2d");
+    // c.onclick=function(event){
+        
+       
+    //   console.log(event)
+    // };
+    // c.onmousemove = function(event){
+        
+    //     ctx.arc(event.clientX,event.clientY,50,0,2*Math.PI);
+      
+    //     ctx.stroke();
+        
+    //   console.log(event)
+    // };
+    // c.onmousedown=function(event){
+    //     ctx.beginPath();
+    //     console.log(event)
+    //   };
+    // c.onmouseup=function(event){
+    //     ctx.closePath();
+    //     console.log(event)
+    //   };
+
+//     ctx.fillStyle = 'blueviolet';
+//     ctx.strokeStyle = 'blueviolet';
+//     c.addEventListener('mousemove', function(e){
+//                 var x, y;
+//                 x = e.pageX;
+//                 y = e.pageY;
+//                 setTimeout(function(){
+//                     ctx.lineTo(x - c.offsetLeft, y - c.offsetTop);
+//                     ctx.moveTo(x - c.offsetLeft, y - c.offsetTop);
+//                     ctx.stroke();
+//  },1)
+//  });
+    
+  
+//  var c = document.getElementById("draw2"),
+//     ctx = c.getContext("2d"),
+
+    w = c.width = window.innerWidth,
+    h = c.height = window.innerHeight,
+
+    opts = {
+      color: "hsl(hue,100%,40%)",
+      radius: 10,
+    },
+    tick = 0,
+    currentHue = 0,
+
+    painting = false;
+
+c.onmousedown = function() {
+  painting = true;
+  console.log("Down");
+};
+c.onmouseup = function() {
+  painting = false;
+  console.log("Up");
+};
+c.addEventListener("mousemove", function(e){
+  var posX = e.pageX,
+      posY = e.pageY;
+
+  if(painting){
+    ++tick;
+    if(!(tick%10)){
+      if((currentHue !== 356)){
+        currentHue++
+      } else {
+        currentHue = 0;
+      }
+      console.log("change");
+    };
+
+    currentColor = opts.color.replace("hue", currentHue);
+    ctx.fillStyle = "blue";
+    ctx.beginPath()
+    ctx.arc(posX, posY, opts.radius, 0, Math.PI * 2);
+    ctx.fill();
+  }
+
+});
+
+window.addEventListener("resize", function(){
+  w = c.width = window.innerWidth;
+  h = c.height = window.innerHeight;
+});
+
+
+   
+    </script>
+</body>
+</html>

+ 109 - 0
chat.html

@@ -0,0 +1,109 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<link rel="stylesheet" href="style.css">
+	<title>Table for JS</title>
+</head>
+<body>
+        
+
+    <input type="nick" id = "nick" placeholder="Nick">
+    <input type="text" id = "message" placeholder="Message">
+    <input type="submit" value="send" id = "button">
+    <div id= "chat" style="padding-top:30px; padding-left: 20px; margin-top:40px; ">  </div>
+  
+        
+
+<script>
+var nick=document.getElementById('nick')
+var message=document.getElementById('message')
+var button=document.getElementById('button')
+var chat=document.getElementById('chat')
+
+button.onclick=function(elem){
+    function jsonPost(url, data)
+    {
+        return new Promise((resolve, reject) => {
+            var x = new XMLHttpRequest();   
+            x.onerror = () => reject(new Error('jsonPost failed'))
+            //x.setRequestHeader('Content-Type', 'application/json');
+            x.open("POST", url, true);
+            x.send(JSON.stringify(data))
+
+            x.onreadystatechange = () => {
+                if (x.readyState == XMLHttpRequest.DONE && x.status == 200){
+                    resolve(JSON.parse(x.responseText))
+                }
+                else if (x.status != 200){
+                    reject(new Error('status is not 200'))
+                }
+            }
+        })
+    }
+    jsonPost("http://students.a-level.com.ua:10012", {
+      func:"addMessage",
+      nick:nick.value,
+      message:message.value,
+    })
+
+
+
+    var mess = function(){
+    var messages = {};
+    messages = jsonPost("http://students.a-level.com.ua:10012", {
+        func: "getMessages",
+        messageid: messages.length
+    }).then(a => {
+        console.log(a)
+        for (q = 0; q < a.data.length; q++) {
+            var y = document.getElementById("chat")
+            var ссс = document.createElement("p")
+            
+            ссс.innerHTML = a.data[q].nick + "----" + a.data[q].message
+            ссс.style.backgroundColor = "blue";
+            y.appendChild(ссс)
+            
+
+        }
+    var qqq = a.nextMessageId
+        console.log(qqq + "a111")
+        console.log(a.data.length)
+        setInterval(function() {
+            var messages = jsonPost("http://students.a-level.com.ua:10012", {
+                func: "getMessages",
+                messageid: qqq
+            }).then(www => {
+                for (q = a.data.length; q < www.data.length; q++) {
+                    var y = document.getElementById("chat")
+                    var ссс = document.createElement("p")
+                    ссс.innerHTML = www.data[q].nick + "----" + www.data[q].message
+                    y.appendChild(ссс)
+
+                }
+                qqq = www.nextMessageId
+                console.log(qqq + "a222")
+                console.log(www.data.length)
+            })
+
+
+        }, 2000);
+    })
+}
+mess()
+}
+
+
+
+ 
+ 
+
+</script>
+	
+	<script src="main.js"></script>
+	
+	</script>
+</body>
+</html>
+

+ 59 - 0
examp1.md

@@ -0,0 +1,59 @@
+##
+```javascript
+
+}
+```
+
+["0", 5, 3, "string", null].reduce((a,b) =>(console.log(a,b), +a*(+b)))
+присвоить 1 если NAN
+
+var key ="age";
+//(var key="name")
+var persons = [
+    {name: "Иван", age: 17},
+    {name: "Мария", age: 35},
+    {name: "Алексей", age: 73},
+    {name: "Яков", age: 12},
+]
+persons.sort(function(a,b){ //сортируем по возрасту
+    if (a[key] > b[key]){
+        return 1;
+    }
+    return -1;
+});
+persons.sort((a,b) => a.name > b.name ? 1 : -1)
+
+
+var total = ["0", 5, 3, "string", null].reduce(function(a, b) {
+	var number = parseInt(a);
+  return isNaN(number)? number : a;
+  return number + b;
+});
+// total == 6
+
+var arr = ["0", 5, 3, "string", null]
+var result = arr.reduce(function(previousValue, currentValue, index, array) {
+	var number = currentValue;
+  	isNaN(number)? null : currentValue;
+  return previousValue * currentValue;
+});
+
+alert( result ); // 15
+
+var animals = ["0", 5, 3, "string", null];
+var total = animals.reduce(function(sum, item) {
+	var number = 0;
+  	isNaN(number)? item : null;
+  return sum * number;
+}, 0);
+console.log(total);
+
+
+for(let i=5; i>0; i--){
+setTimeout(() => console.log(5-i), 1000*i)
+}
+
+for(i=5; i>0; i--){
+(function(j)
+setTimeout(() => console.log(5-i), 1000*i)
+}(i)

BIN
fonts.css


+ 160 - 0
form.html

@@ -0,0 +1,160 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>Document</title>
+</head>
+<body>
+    
+    <div id="form"></div>
+    <script>
+    //    function Form(container, config){
+    //        var inputs={};
+
+    //     var buttonOk =document.createElement('BUTTON');
+    //     buttonOk.innerText = 'OK'
+
+    //     var buttonCancel =document.createElement('BUTTON');
+    //     buttonCancel.innerText = 'Cancel'
+
+    //     buttonCancel.onclick = function(){
+    //         for(let inputId in config){
+    //             let inputConfig = config[inputId];
+    //             inputs[inputId].value = inputConfig.value;
+    //         }
+    //     }
+        
+    //     for(let inputId in config){
+    //         let inputConfig = config[inputId];
+    //         let input = document.createElement('INPUT');
+    //         input.placeholder = inputConfig.title;
+    //         input.title = inputConfig.title;
+    //         input.value = inputConfig.value;
+    //         input.type = inputConfig.type;
+    //         container.appendChild(input)
+    //         container.appendChild(document.createElement('BR'))
+    //         inputs[inputId] = input
+    //        }
+    //        container.appendChild(buttonOk);
+    //        container.appendChild(buttonCancel);
+    //    } 
+    //    new Form(form, {
+    //     login: {
+    //        title: 'Login',
+    //        value:'12',
+    //        type:'password'
+    //        },
+    //     password:{
+    //         title: 'Password',
+    //        value:'',
+    //        type:'password'
+    //     }
+
+
+    //    }) (http://form.asmer.fe.a-level.com.ua/)
+
+       function Form(container, config){
+    var inputs       = {};
+
+    var buttonOk     = document.createElement('BUTTON');
+    buttonOk.innerText = 'OK'
+
+    buttonOk.onclick = () => {
+        var values = {};
+        var success = true;
+        for (let inputId in inputs){
+            values[inputId] = inputs[inputId].value;
+        }
+
+        for (let inputId in config){
+            let inputConfig = config[inputId];
+            if (inputConfig.validator){
+                if (inputConfig.validator(values)){
+                    inputs[inputId].style.backgroundColor = '';
+                }
+                else {
+                    success = false;
+                    inputs[inputId].style.backgroundColor = 'red';
+                }
+            }
+        }
+
+        if (success && this.onOk){
+            this.onOk(values);
+        }
+
+
+        //console.log(values);
+    }
+
+    var buttonCancel = document.createElement('BUTTON');
+    buttonCancel.innerText = 'Cancel';
+
+    buttonCancel.onclick = () => {
+        if (this.onCancel){
+            this.onCancel();
+        }
+
+        for (let inputId in config){
+            let inputConfig = config[inputId];
+            inputs[inputId].value = inputConfig.value;
+        }
+    }
+
+
+
+    for (let inputId in config){
+        let inputConfig = config[inputId];
+
+        let input = document.createElement('INPUT');
+        input.placeholder = inputConfig.title;
+        input.title       = inputConfig.title;
+        input.value       = inputConfig.value;
+        input.type        = inputConfig.type;
+
+        container.appendChild(input)
+        container.appendChild(document.createElement('BR'))
+
+        inputs[inputId]   = input
+    }
+
+    container.appendChild(buttonOk)
+    container.appendChild(buttonCancel)
+
+    this.onOk     = null;
+    this.onCancel = null;
+
+    this.destroy  = function(){
+        container.innerHTML = '';
+    }
+}
+
+var formObj = new Form(form,{login: {title: 'Login',
+                        value: 'user@example.com',
+                        type: 'email',
+                        validator: values => values.login.length > 5},
+               password1: {title: 'Password 1',
+                        value: '',
+                        type: 'password',
+                        validator: values => (values.password1 == values.password2) && values.password1},
+               password2: {title: 'Password 2',
+                        value: '',
+                        type: 'password',
+                        validator: values => (values.password1 == values.password2) && values.password1},
+               })
+
+formObj.onCancel = function(){
+    alert('Canceeeeeeeel');
+}
+
+
+formObj.onOk = function(data){
+    console.log(data);
+    formObj.destroy();
+}
+
+    </script>
+</body>
+</html>

+ 9 - 0
hw1/example.md

@@ -0,0 +1,9 @@
+## hw1
+```javascript
+var a=1; //sek
+var b=60*a; //min
+var c=60*b; //hour
+var day=24*c; //day
+var year=365*day; //sec in year
+console.log(year);
+```

+ 192 - 0
hw2/hw2.md

@@ -0,0 +1,192 @@
+## assign: evaluation
+```javascript
+var a = 5;
+var b, c;
+
+b = a * 5;
+b = c = (a*5)/2;
+```
+
+## semicolon: error
+```javascript
+var a = 5 var b, c;
+b = a * 5 b = c = b/2;
+```
+
+## Number: age
+```javascript
+var age=prompt("Введите ваш возраст");
+alert("Ваш год рождения " +(2018-age));
+```
+
+## Number: temperature
+```javascript
+var temp=prompt("Введите значение температуры");
+alert("По Фаренгейту " +(temp*9/5+32));
+```
+
+## Number: divide
+```javascript
+var temp1=prompt("Введите первое значение");
+var temp2=prompt("Введите второе значение");
+alert(Math.floor(temp1/temp2));
+```
+
+## String: greeting
+```javascript
+var strName=prompt("Введите ваше имя");
+alert("Здравствуйте "+strName);
+```
+
+## String: lexics
+```javascript
+var str=prompt("введите текст", 'abc');
+if (~str.indexOf("badword")){
+  alert('not correct');
+} 
+else {
+  alert('correct');
+}
+```
+
+## Boolean: if
+```javascript
+var isMeat, isFruit;
+var isMeat = confirm("Вы любите есть мясо?")
+var isFruit =confirm("Вы любите есть овощи?")
+if (isMeat==true){
+  alert("Вы мясоед");
+}
+else if(isFruit==true){
+  alert("Вы вегетарианец");
+}
+else
+alert("Вы не любите есть");
+```
+
+## Array: booleans
+```javascript
+var menuFood = {
+  meat: "Мясоед",
+  fruit: "Вегетарианец",
+  nonFood: "Не ест"
+};
+console.log(menuFood);
+```
+
+## Array: plus
+```javascript
+var arr = ['2','5','7'];
+arr[1]=arr[0]+arr[1];
+console.log(arr[1]);
+```
+
+## Array: plus string
+```javascript
+var arr = ['стол','стул','диван'];
+arr[1]=arr[0]+arr[1];
+console.log(arr[1]);
+```
+## Object: real
+```javascript
+var menuFood = {
+  meat: "Мясоед",
+  fruit: "Вегетарианец",
+  nonFood: "Не ест"
+};
+console.log(menuFood);
+```
+
+## Object: change
+```javascript
+var menuFood = {
+  meat: "Мясоед",
+  fruit: "Вегетарианец",
+  nonFood: "Не ест"
+};
+menuFood.fish="Рыба";
+menuFood["name"] = "Хлеб";
+console.log(menuFood);
+```
+
+## Comparison if
+```javascript
+var age = +prompt("Сколько вам лет?", "");
+if (age <=0){
+        alert ("Minus age")
+}
+    else { if (age < 18){
+        alert("школьник");
+    }
+        else {if (age < 30){
+            alert("молодеж");
+        }
+            else {if (age < 45){
+                alert("зрелость");
+            }
+                else {if (age < 60){
+                    alert("закат");
+                }
+                    else {if (age >=60){
+                        alert("как пенсия?");
+                    }
+                        else {
+                            alert("то ли киборг, то ли ошибка"); 
+                    }
+                }
+            }
+        }
+    }
+}
+```
+
+## Comparison: sizes
+```javascript
+var size = +prompt("Введите размер", "");
+if (size <=0){
+        alert ("Non correct");
+}
+    else {if (size < 40){
+        alert("Стандарт США размер S");
+    }
+        else {if (size < 42){
+            alert("Стандарт США размер M");
+        }
+            else {if (size < 46){
+                alert("Стандарт США размер L");
+            }
+                else {if (size < 50){
+                    alert("Стандарт США размер XL");
+                }
+                    else {if (size >=54){
+                        alert("Стандарт США размер XXL");
+                    }
+                        else {
+                            alert("Error"); 
+                    }
+                }
+            }
+        }
+    }
+}
+```
+
+## Ternary
+```javascript
+var pol = confirm("Вы мужчина?");
+
+pol==true ? alert("Вы мужчина!") : alert("Вы женщина!");
+```
+
+## Синий пояс Number: flats
+```javascript
+var numbEt=prompt("Введите кол-во этажей");
+var numbFloor=prompt("Введите кол-во квартир на этаже");
+var numbRoom=prompt("Введите номер кв-ры");
+var temp=Math.ceil(numbRoom/numbFloor);
+var resOne=Math.ceil(temp/numbEt);
+var resTwo=temp%numbEt;
+alert("подьезд: "+resOne + " этаж: " +resTwo);
+```
+
+

+ 153 - 0
hw3/hw3.md

@@ -0,0 +1,153 @@
+## switch
+```javascript
+var color=prompt("Введите цвет","");
+if(color=="red"){
+document.write("<div style='background-color: red;'>красный</div>");
+document.write("<div style='background-color: black; color: white;'>черный</div>");
+}
+if(color=="black"){
+document.write("<div style='background-color: red;'>красный</div>");
+document.write("<div style='background-color: black; color: white;'>черный</div>");
+}
+if(color=="green"){
+document.write("<div style='background-color: blue;'>синий</div>");
+document.write("<div style='background-color: green;'>зеленый</div>");
+}
+else if(color=="blue"){
+document.write("<div style='background-color: blue;'>синий</div>");
+document.write("<div style='background-color: green;'>зеленый</div>");
+}
+else{
+ document.write("<div style='background-color: gray;'>Я не понял</div>");
+ }
+```
+
+
+##prompt: or
+```javascript
+var age=prompt("Введите ваш возраст");
+age ||  alert("error")
+if(age>0){
+alert("Ваш год рождения " +(2018-age))
+}
+```
+
+##confirm: or this days
+```javascript
+var days=confirm("Шопинг?");
+days ||  alert("Ты бяка!")
+if(days>0){
+alert("Это супер!")
+}
+```
+
+##confirm: if this days
+```javascript
+var days=confirm("Шопинг?");
+if(days>0){
+alert("Это супер!")
+}
+else{
+    alert("Ты бяка!")
+}
+```
+
+##triple prompt
+```javascript
+alert(prompt("Фамилия", "") + "   " + prompt("Имя", "") + "   " + prompt("Отчество", ""))
+```
+##default: or
+```javascript
+var a=prompt("Фамилия", "") || alert("Иванов");
+alert(a);
+```
+##default: if
+```javascript
+var a=prompt("Фамилия", "");
+if(a==null){
+alert("Иванов");
+}
+else{
+alert(a);
+}
+```
+
+##login and password
+```javascript
+var login = prompt("Input login");
+var password = prompt("Input password");
+if (login == null && login == ""){
+    alert("Input login,please")}
+    else if (login === "admin" && password === "qwerty"){
+        alert('You lucky')
+    }
+    else {
+        alert('Try again')
+        }
+
+```
+
+##login and password
+```javascript
+var login = prompt("Input login");
+var password = prompt("Input password");
+if (login == null && login == ""){
+    alert("Input login,please")}
+    else if (login === "admin" && password === "qwerty"){
+        alert('You lucky')
+    }
+    else {
+        alert('Try again')
+        }
+```
+
+##currency calc: improved
+```javascript
+var nac=+prompt("Введите кол-во гривны", "")
+var cur=prompt("Введите usd или eur", "")
+cur=cur.toLowerCase();
+switch(cur){
+    case "usd": cur=nac/27.5;
+        break;
+    case "eur": cur=nac/33.5;
+        break;
+}
+alert(cur);
+```
+
+##currency calc: two rates
+```javascript
+var nac=+prompt("Введите кол-во гривны", "")
+var cur=prompt("Введите usd или eur", "")
+cur=cur.toLowerCase();
+var next=confirm("Выберите покупку yes или продажу no")
+if(next==true){
+switch(cur){
+    case "usd": cur=nac/26.5;
+        break;
+    case "eur": cur=nac/32.5;
+        break;
+    }
+}
+else{
+switch(cur){
+    case "usd": cur=nac/27.5;
+        break;
+    case "eur": cur=nac/33.5;
+        break;
+    }
+}
+alert(cur);
+```
+##scissors
+```javascript
+var game = ['stone', 'paper','scissors'];
+var myIndex = Math.floor(Math.random()*game.length);
+var userWorld = prompt("Ведите выбор: stone, scissors, paper");
+var userIndex = game.indexOf(userWorld);
+var iWin = (((userIndex+1)% game.length) == myIndex);
+var draw = myIndex == userIndex;
+if (iWin == false && draw == false){alert('You loser')}
+    else if (draw == true){alert('equal')}
+        else {alert('You are winner')}
+```

+ 223 - 0
hw4/hw4.md

@@ -0,0 +1,223 @@
+##html tree
+```javascript
+var root={
+    tag:'body',
+    paired: 'true',
+    subTags:[
+        {
+            tag:'div',
+            subTags: [
+                {
+                    tag:'span',
+                    text:'Enter a data please:',
+                    tag:'br',
+                    paired:'false'
+                }
+            ],
+            subTags: [
+                {
+                    tag:'input',
+                    paired:'false',
+                    attrs: {
+                        type: 'text',
+                    },
+                    attrs: {
+                        id: 'name',
+                    }
+                }
+            ],
+            subTags: [
+                {
+                    tag:'input',
+                    paired:'false',
+                    attrs: {
+                        type: 'text',
+                    },
+                    attrs: {
+                        id: 'surname',
+                    }
+                }
+            ],
+            tag:'div',
+            subTags: [
+                {
+                    tag:'button',
+                    attrs: {
+                        id: 'ok',
+                    },
+                    text:'Ok'
+                }
+            ],
+            subTags: [
+                {
+                    tag:'button',
+                    attrs: {
+                        id: 'cancel',
+                    },
+                    text:'Cancel'
+                }
+            ]
+        }
+    ]
+}
+```
+
+##object links
+```javascript
+var person = {
+    name: prompt("Enter a name"),
+    surname: prompt("Enter a surname"),
+}
+
+person.smartphone = "owner";
+person["laptop"] = "owner";
+```
+
+##imperative array fill 3
+```javascript
+var test = []; 
+
+test.one = prompt("name");
+test.two = +prompt("age");
+test.three = +prompt("height");
+```
+
+##while confirm
+```javascript
+for(var i=""; i!=true;){
+        i=confirm("while confirm");
+    }
+```
+
+##array fill
+```javascript
+var test=[];
+    for(var i=""; i!=null;){
+       i=prompt('few words');
+       test.push(i);
+       if(i==null){
+           break;
+       }
+    }
+```
+##array fill nopush
+```javascript
+ var test=[];
+    for(var i=""; i!=null;){
+       i=prompt('few words');
+       test[i] = i;
+       if(i==null){
+           break;
+       }
+    }
+```
+
+##infinite probability
+```javascript
+var a=0;
+for(var i=1;;i++){
+    a=Math.random();
+    if(a>0.9){
+        break;
+    }
+}
+console.log(i);
+```
+##empty loop
+```javascript
+for(var i=""; ;){
+    i=prompt('few words');
+    if(i==null){
+        break;
+    }
+ }
+```
+##progression sum
+```javascript
+ var sum=0;
+ var n=+prompt('number');
+ for(var i=1; i<n; i+=3){ 
+    sum=sum+i;
+ }
+ alert(sum);
+```
+##chess one line
+```javascript
+var i = 0;
+var str = "";
+var j=(Math.floor((Math.random()*10)))%2+5;
+    for (i=1; i<j; i++){
+        str += "#" + " "
+        } 
+console.log(str);
+```
+
+
+##numbers
+```javascript
+var str="";
+var i=0;
+for (i;i<10;i++){
+	str +="\n";
+	for (var j=0;j<10;j++){
+		str += j;
+	}
+}
+console.log(str);
+```
+
+
+##chess
+```javascript
+var i = 0;
+var j = 0;
+var str = "\n";
+for (i=1;i<=8;i++){
+    for (j=1; j<=8;j++){
+        str += (i%2 == j%2) ? "#": "."
+        }
+        str += '\n';
+    }
+console.log(str);
+```
+
+##cubes
+```javascript
+var arr=[];
+var a=0;
+var n=prompt();
+var str = "";
+for(i=0; i<=n; i++){
+	a=Math.pow(i,3);
+    arr[i] = a; 
+    str += a + " ";
+}
+console.log(str);
+```
+
+##multiply table
+```javascript
+var arr=[];
+var str = "\n";
+var a=0;
+for (var i=1;i<=9;i++){
+    for (var j=1; j<=9;j++){
+        arr[i] = [];
+        a=i*j;
+        arr[i][j]=a;
+        str += arr[i][j] + " "
+        }
+        str += '\n';
+    }
+console.log(str);
+```
+
+##
+```javascript
+
+```
+
+##
+```javascript
+
+```

+ 117 - 0
hw5/hw5.md

@@ -0,0 +1,117 @@
+##3 persons
+```javascript
+var a={
+    name:"Nick",
+    surname:"Golden",
+}
+var b={
+    name:"Peter",
+    surname:"Green",
+}
+var c={
+    name:"Bob",
+    surname:"Black",
+}
+```
+##different fields
+```javascript
+a.age = "15";
+b["fathername"] = "Petrovich";
+c.sex="male";
+```
+##fields check
+```javascript
+if ("age" in a) {
+    alert( "Свойство name существует!" );
+  }else{alert("Такого свойства нет")};
+
+if ("age" in c) {
+    alert( "Свойство name существует!" );
+  }else{alert("Такого свойства нет")};
+
+typeof a.age;
+typeof c.age;
+```
+##array of persons
+```javascript
+var person={
+    name:"Dick",
+    surname:"Jhone",
+    height: "tall",
+}
+var persons=[
+    a={
+    name:"Nick",
+    surname:"Golden",
+    age: "15",
+    },
+    b={
+    name:"Peter",
+    surname:"Green",
+    fathername: "Petrovich"
+    },
+    c={
+    name:"Bob",
+    surname:"Black",
+    sex: "male"
+    },
+  ]
+  
+persons[persons.length]=person;
+
+```
+##loop of persons
+```javascript
+for (var key in persons){
+    console.log(persons[key]["name"] + ": " + persons[key]["surname"]);
+    
+};
+```
+##serialize
+```javascript
+var jsonArray = JSON.stringify(persons);
+```
+##deserialize
+```javascript
+var newPerson =JSON.parse(jsonArray);
+persons[persons.length]=newPerson;
+```
+##HTML
+```javascript
+var person={
+    name:"Dick",
+    surname:"Jhone",
+    height: "tall",
+}
+var persons=[
+    a={
+    name:"Nick",
+    surname:"Golden",
+    age: "15",
+    },
+    b={
+    name:"Peter",
+    surname:"Green",
+    fathername: "Petrovich"
+    },
+    c={
+    name:"Bob",
+    surname:"Black",
+    sex: "male"
+    },
+  ];
+  
+persons[persons.length]=person;
+
+document.write(' <table border=1, cellpadding=0, cellspacing=0, width="250px", margin=auto>')
+for (var key in persons) {
+    document.write("<tr>" + "<th>" + persons[key]["name"] + "</th>" + "<td>" + persons[key]["surname"] + "</td>" + "</tr>");
+	
+}
+document.write("</table>");
+```
+##
+```javascript
+
+```
+

+ 210 - 0
hw6/hw6.md

@@ -0,0 +1,210 @@
+##a
+```javascript
+function a(b){
+    return b;
+};
+alert(a("Привет!"));
+```
+##cube
+```javascript
+function cube(a){
+    return(Math.pow(a, 3)); 
+}
+alert(cube(1)); 
+alert(cube(2));
+alert(cube(3)); 
+
+```
+##avg2
+```javascript
+function avg2(a,b){
+    return((a+b)/2);
+};
+alert(avg2(1,2)); 
+alert(avg2(10,5)); 
+```
+##sum3
+```javascript
+function sum(a=0,b=0,c=0){
+    return(a+b+c);
+};
+alert(sum3(1,2,3)); 
+alert(sum3(5,10,100500)); 
+alert(sum3(5,10)); 
+```
+##intRandom
+```javascript
+function intRandom(a=0, b=0) {
+    return Math.floor(Math.random() * (b - a + 1)) + a;
+  }
+alert(intRandom(2,15)); 
+alert(intRandom(-1,-1)); 
+alert(intRandom(0,1));
+alert(intRandom(10)); 
+```
+##greetAll
+```javascript
+function greetAll() {
+    var args = [];
+    for (var i = 0; i < arguments.length; i++) {
+      args[i] ="   " + arguments[i];
+    }
+   return(`Привет,  ${args}!`);
+  }
+alert(greetAll("Superman"));
+alert(greetAll("Superman", "SpiderMan"));
+alert(greetAll("Superman", "SpiderMan", "Captain Obvious"));
+```
+##sum
+```javascript
+function sum() {
+    var args = 0;
+    for (var i = 0; i < arguments.length; i++) {
+      args +=arguments[i];
+    }
+    return(args);
+  }
+  alert(sum(1)); 
+  alert(sum(2)); 
+  alert(sum(10,20,40,100)); 
+```
+##
+```javascript
+  function avg() {
+    var args = 0;
+    for (var i = 0; i < arguments.length; i++) {
+      args +=arguments[i];
+    }
+	args=args/arguments.length;
+    return(args);
+  }
+  alert(avg(1)); 
+  alert(avg(2)); 
+  alert(avg(10,20,40,100)); 
+```
+##union
+```javascript
+function aSample(b){
+     return b;
+};
+
+function cubeSample(a){
+   return(Math.pow(a, 3));
+}
+
+function avg2Sample(a,b){
+    return((a+b)/2);
+};
+
+function sum3Sample(a=0,b=0,c=0){
+   return(a+b+c);
+};
+
+function intrandomSample(a=0, b=0) {
+    return Math.floor(Math.random() * (b - a + 1)) + a;
+}
+
+function greetSample() {
+    var args = [];
+    for (var i = 0; i < arguments.length; i++) {
+      args[i] ="   " +  arguments[i];
+    }
+    return(`Привет,  ${args}!`);
+  }
+
+  function sumSample() {
+    var args = 0;
+    for (var i = 0; i < arguments.length; i++) {
+      args +=arguments[i];
+    }
+    return(args);
+  }
+
+  function avgSample() {
+    var args = 0;
+    for (var i = 0; i < arguments.length; i++) {
+      args +=arguments[i];
+    }
+	args=args/arguments.length;
+    return(args);
+  }
+
+var sample = prompt("Введите название задания")
+switch (sample.toLowerCase()){
+    case "a": alert(aSample("Hello!"))
+              break
+    case "cube": alert(cubeSample(3))
+              break
+    case "avg2": alert(avg2Sample(10,5))
+              break
+    case "sum3": alert(sum3Sample(1,2,3))
+              break
+    case "intrandom": alert(intrandomSample(2,15))
+              break
+    case "greet": alert(greetSample("Superman", "SpiderMan", "Captain Obvious"))
+              break
+    case "sum": alert(sumSample(10,20,40,100)); 
+              break
+    case "avg": alert(avgSample(10,20,40,100))
+              break
+}
+```
+##Union declarative
+```javascript
+function a(b){
+    return b;
+};
+
+function cube(a){
+    return(Math.pow(a, 3));
+}
+
+function avg2(a,b){
+    return((a+b)/2);
+};
+
+function sum3(a=0,b=0,c=0){
+    return(a+b+c);
+};
+
+function intrandom(a=0, b=0) {
+    return Math.floor(Math.random() * (b - a + 1)) + a;
+}
+
+function greet() {
+    var args = [];
+    for (var i = 0; i < arguments.length; i++) {
+      args[i] ="   " +  arguments[i];
+    }
+    return(`Привет,  ${args}!`);
+  }
+
+  function sum() {
+    var args = 0; 
+    for (var i = 0; i < arguments.length; i++) {
+      args +=arguments[i];
+    }
+    return(args);
+  }
+
+  function avg() {
+    var args = 0;
+    for (var i = 0; i < arguments.length; i++) {
+      args +=arguments[i];
+    }
+	args=args/arguments.length;
+    return(args);
+  }
+var obj2 = {a, cube, avg2, sum3, intrandom, greet, sum, avg};
+
+alert(obj2.a("Hello!"));
+alert(obj2.cube(3));
+alert(obj2.avg2(10,5));
+alert(obj2.sum3(1,2,3));
+alert(obj2.intrandom(2,15));
+alert(obj2.greet("Superman", "SpiderMan", "Captain Obvious"));
+alert(obj2.sum(10,20,40,100));
+alert(obj2.avg(10,20,40,100));
+```
+
+

+ 30 - 0
hw7/hw7.md

@@ -0,0 +1,30 @@
+
+##array map
+```javascript
+var valueNumb = ["1", {}, null, undefined, "500", 700];
+
+var result  = valueNumb.map(function(item, index, arr) {
+  var number = parseInt(item);
+  return isNaN(number)? item : number;
+});
+
+console.log(result);
+``` 
+##
+```javascript
+
+``` 
+##
+```javascript
+
+``` 
+##
+```javascript
+
+``` 
+##
+```javascript
+
+``` 
+
+

+ 111 - 0
hw8/hw8.md

@@ -0,0 +1,111 @@
+##Initialize
+```javascript
+function Person(name, surname, age, sex, salary, married){
+    this.name    = name,
+    this.surname = surname,
+	this.age = age,
+	this.sex = sex,
+	this.salary = salary,
+	this.married = married
+}
+
+var person = new Person("Ivan", "Petroff")
+``` 
+##
+```javascript
+function Person(name, surname, age, sex, salary, married){
+    this.name    = name,
+    this.surname = surname,
+	this.age = age,
+	this.sex = sex,
+	this.salary = salary,
+	this.married = married
+
+    var age      = 0
+
+    this.setAge = function(newAge){
+        newAge = +newAge
+        if (!isNaN(newAge) && Number.isInteger(newAge) && (newAge > 0) && (newAge < 100)){
+            age = newAge
+        }
+
+        return age
+    }
+	
+	this.setSex = function(newSex){
+		newSex!='male'? 'female' : 'male'
+		{sex=newSex}
+		return sex
+	}
+	
+	this.setName = function(newName){
+		 if (newName!="" && newName!=false){
+		name=newName
+		 }
+		return name
+	}
+	
+	this.setSurname = function(newSurname){
+		 if (newSurname!="" && newSurname!=false){
+		surname=newSurname
+		 }
+		return surname
+	}
+	var salary=0
+	this.setSalary = function(newSalary){
+		 newSalary = +newSalary
+        if (!isNaN(newSalary) && Number.isInteger(newSalary) && (newSalary > 0) && (newSalary < 10000)){
+            salary = newSalary
+        }
+		return salary
+	}
+	
+	this.setMarried = function(newMarried){
+		if(newMarried!=true){
+		married=newMarried
+		}
+		return married
+	}
+	
+	this.getMarried = function(){
+        return married
+    }
+	
+	this.getSalary = function(){
+        return salary
+    }
+	
+	this.getSurname = function(){
+        return surname
+    }
+	
+	this.getName = function(){
+        return name
+    }
+    this.getAge = function(){
+        return age
+    }
+	this.getSex = function(){
+        return sex
+    }
+}
+
+
+var person = new Person("Ivan", "Petroff")
+``` 
+##
+```javascript
+
+``` 
+##
+```javascript
+
+``` 
+##
+```javascript
+
+``` 
+##
+```javascript
+
+``` 

+ 16 - 0
hw8/multiTable/index.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<link rel="stylesheet" href="style.css">
+	<title>Table for JS</title>
+</head>
+<body>
+	
+	
+	<script src="main.js"></script>
+	
+	</script>
+</body>
+</html>

+ 41 - 0
hw8/multiTable/main.js

@@ -0,0 +1,41 @@
+var tagHtml=document.documentElement;
+var tagBody=document.createElement('body');
+tagHtml.appendChild(tagBody);
+var tagTbody=document.createElement('tbody');
+tagBody.appendChild(tagTbody);
+var tagTable=document.createElement('table');
+tagTable.border='1px solid black';
+tagTable.textAlign='center';
+var arr=new Array();
+for(var i=1; i<=9; i++){
+    arr[i]= new Array();
+    var row=document.createElement('tr');
+    
+    for(var j=1; j<=9; j++){
+        arr[i][j]=i*j;
+        if (i===1) {
+            var cell=document.createElement('td');
+            row.appendChild(cell);
+            cell.style.backgroundColor = "red";
+              } 
+        else if(j%2 !=0 && i>1){
+            var cell=document.createElement('td');
+            row.appendChild(cell);
+            cell.style.backgroundColor = "red";
+            }
+        else {
+            var cell=document.createElement('td');
+            row.appendChild(cell);
+            cell.style.backgroundColor = "blue";
+          }  
+        
+        cell.style.border= '1px solid black';
+		cell.style.padding = '16px';
+        cell.id = "cell" 
+        cell.width="50";
+        cell.height="50"
+        cell.innerHTML= "<td>" + arr[i][j] + "</td>";
+    }
+    tagTable.appendChild(row);
+}
+document.body.appendChild(tagTable);

+ 14 - 0
hw8/multiTable/style.css

@@ -0,0 +1,14 @@
+*{
+	margin: 0;
+	padding: 0;
+	box-sizing: border-box;
+}
+
+ul{
+	list-style: none;
+}
+
+a{
+	text-decoration: none;
+}
+

+ 37 - 0
lesson1.md

@@ -0,0 +1,37 @@
+Math.floor(Math.random()*3)
+ var name=['paper', 'stone', 'scissors',];
+ name[Math.floor(Math.random()*3)];
+ var name=['paper', 'stone', 'scissors', 'colod'];
+ name[Math.floor(Math.random()*name.length)];
+ 
+ var myIndex=Math.floor(Math.random()*name.length)
+ var userWord=prompt();
+ var userIndex=name.Indexof(userWord);
+ var iWin=(((userIndex+1)%name.length)==userIndex);
+ var draw=myIndex==userIndex;
+ 
+
+//Обменка в обьектах
+
+rates={
+	usd: {
+        buy:26.15,
+        sell:26.51
+    },
+    eur: {
+        buy:31.98,
+        sell:32.62
+    },
+};
+{usd: {…}, eur: {…}}
+rates[prompt()]
+
+rates[prompt()][confirm('sell') ? 'sell' : 'buy']*(+prompt())
+
+
+
+function add(a,b)
+{
+    return a + b; 
+}
+alert(add(3,4))

+ 17 - 0
module2/index.html

@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<link rel="stylesheet" href="style.css">
+	<title>ModulJS</title>
+</head>
+<body>
+    
+
+	
+	<script src="main.js"></script>
+	
+	
+</body>
+</html>

+ 2 - 0
module2/link_place.md

@@ -0,0 +1,2 @@
+
+http://module2.ponomarenko147.fe.a-level.com.ua/

+ 188 - 0
module2/main.js

@@ -0,0 +1,188 @@
+
+function showTable(globalArr,i) {
+    var newTable = document.createElement("table");
+    var row, cell, i, j;
+    for (var i=0; i<9; i++) {
+        row = document.createElement('tr');
+        for (var j=0; j<9; j++) {
+            cell = document.createElement("td");
+            cell.appendChild(document.createTextNode(globalArr[i*9+j]));
+            cell.style.width = "50";
+            cell.style.height = "50";
+            cell.id = "tdn"+(10*i+j) ;
+            row.appendChild(cell);
+        }
+        newTable.appendChild(row);
+    }
+    document.body.appendChild(newTable);
+}
+
+
+var globalArr = createArr(81);
+	 
+	function createArr(n){
+		var arr=[];
+			for(i=0;i<n;i++){
+			arr.push(0)
+			}
+		return arr
+	}
+
+	decision(globalArr);
+	 
+
+	function toFindRow(number,row,globalArr) {
+		for (var i=0; i<9; i++) {
+			if (globalArr[row*9+i] == number) {
+				return false;
+			}
+		}
+		return true;
+	}
+	 
+	function toFindCol(number,col,globalArr) {
+		for (var i=0; i<9; i++) {
+			if (globalArr[col+9*i] == number) {
+				return false;
+			}
+		}
+		return true;
+	}
+	 
+	function toFindBlock(number,block,globalArr) {
+		for (var i=0; i<9; i++) {
+			if (globalArr[Math.floor(block/3)*27+i%3+9*Math.floor(i/3)+3*(block%3)] == number) {
+				return false;
+			}
+		}
+		return true;
+	}
+	 
+	function toFindNumber(cell,number,globalArr) {
+		var row = Math.floor(cell / 9);
+		var col =  cell % 9;
+		var block =Math.floor((Math.floor(cell / 9)) / 3) * 3 + Math.floor((cell % 9) / 3);
+		return toFindRow(number,row,globalArr) && toFindCol(number,col,globalArr) && toFindBlock(number,block,globalArr);
+	}
+	 
+	function toTestRow(row,globalArr) {
+		var rightSequence = new Array(1,2,3,4,5,6,7,8,9);
+		var rowTemp= new Array();
+		for (var i=0; i<9; i++) {
+			rowTemp[i] = globalArr[row*9+i];
+		}
+		rowTemp.sort();
+		return rowTemp.join() == rightSequence.join();
+	}
+	 
+	function toTestCol(col,globalArr) {
+		var rightSequence = new Array(1,2,3,4,5,6,7,8,9);
+		var colTemp= new Array();
+		for (var i=0; i<9; i++) {
+			colTemp[i] = globalArr[col+i*9];
+		}
+		colTemp.sort();
+		return colTemp.join() == rightSequence.join();
+	}
+	 
+	function toTestBlock(block,globalArr) {
+		var rightSequence = new Array(1,2,3,4,5,6,7,8,9);
+		var blockTemp= new Array();
+		for (var i=0; i<9; i++) {
+			blockTemp[i] = globalArr[Math.floor(block/3)*27+i%3+9*Math.floor(i/3)+3*(block%3)];
+		}
+		blockTemp.sort();
+		return blockTemp.join() == rightSequence.join();
+	}
+	 
+	function toTestAllArr(globalArr) {
+		for (var i=0; i<9; i++) {
+			if (!toTestBlock(i,globalArr) || !toTestRow(i,globalArr) || !toTestCol(i,globalArr)) {
+				return false;
+			}
+		}
+		return true;
+	}
+	 
+	function toSetTempValues(cell,globalArr) {
+		var temp = new Array();
+		for (var i=1; i<10; i++) {
+			if (toFindNumber(cell,i,globalArr)) {
+				temp.unshift(i);
+			}
+		}
+		return temp;
+	}
+	  
+	function toSetRandomTempValue(temp,cell) {
+		var randomPicked = Math.floor(Math.random() * temp[cell].length);
+		return temp[cell][randomPicked];
+	}
+	 
+	function toTestArrForOriginal(globalArr) {
+		var temp = new Array();
+		for (var i=0; i<81; i++) {
+			if (globalArr[i] == 0) {
+				temp[i] = new Array();
+				temp[i] = toSetTempValues(i,globalArr);
+				if (temp[i].length==0) {
+					return false;
+				}
+			}
+		}
+		return temp;
+	}
+	 
+	function removeAttempt(attemptArray,number) {
+		var newArray = new Array();
+		for (var i=0; i<attemptArray.length; i++) {
+			if (attemptArray[i] != number) {
+				newArray.unshift(attemptArray[i]);
+			}
+		}
+		return newArray;
+	}
+	
+	function nextRandom(temp) {
+		var max = 9;
+		var min = 0;
+		for (var i=0; i<81; i++) {
+			if (temp[i]!=undefined) {
+				if ((temp[i].length<=max) && (temp[i].length>0)) {
+					max = temp[i].length;
+					min = i;
+				}
+			}
+		}
+		return min;
+	}
+	
+
+	function decision(globalArr) {
+		var saved = new Array();
+		var resultArr = new Array();
+		var i=0;
+		var nextMove;
+		var whatToTry;
+		var attempt;
+		while (!toTestAllArr(globalArr)) {
+			i++;
+			nextMove = toTestArrForOriginal(globalArr);
+			if (nextMove == false) {
+				nextMove = saved.pop();
+				globalArr = resultArr.pop();
+			}
+			whatToTry = nextRandom(nextMove);
+			attempt = toSetRandomTempValue(nextMove,whatToTry);
+			if (nextMove[whatToTry].length>1) {
+				nextMove[whatToTry] = removeAttempt(nextMove[whatToTry],attempt);
+				saved.push(nextMove.slice());
+				resultArr.push(globalArr.slice());
+			}
+			globalArr[whatToTry] = attempt;
+		}
+		showTable(globalArr,i);
+	}
+	  
+
+	

+ 26 - 0
module2/style.css

@@ -0,0 +1,26 @@
+*{
+	margin: 0;
+	padding: 0;
+	box-sizing: border-box;
+}
+
+body {
+    text-align: center;
+}
+
+table {
+    display: table;
+    margin: auto;
+    margin-top: 80px;
+    border-collapse: collapse;
+    font-size: 28px;
+    width: 500px;
+    height:500px;
+    font-weight: 200;
+    border: 4px solid black;
+}
+
+td {
+    border-collapse: collapse;
+    border: 2px solid black;
+}

+ 155 - 0
new.html

@@ -0,0 +1,155 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<link rel="stylesheet" href="style.css">
+	<title>Table for JS</title>
+</head>
+<body>
+        
+
+        <select name="" id="country"></select>
+        <select name="" id="city"></select>
+        <!-- <select name="" id="weather"></select>
+        <select name="" id="temperature"></select> -->
+        <div id="weather" style="padding-top:30px; padding-left: 20px; margin-top:40px; background-color:yellow; width:250px;"></div>
+
+<script>
+    var request = new XMLHttpRequest() 
+
+request.open('GET', 'https://raw.githubusercontent.com/David-Haim/CountriesToCitiesJSON/master/countriesToCities.json', true) // последний параметр указывает на синхронность или асинхронность запроса. В данном случае запрос асинхронный
+
+
+request.onreadystatechange = function(){ //обработчик изменения статуса запроса. Статус == 4 сигнализирует о том, что запрос окончен.
+    if (request.readyState != 4){
+        return;
+    }
+
+    var mass = JSON.parse(request.responseText);
+        console.log(mass)
+
+    var country=document.getElementById('country')
+    var city=document.getElementById('city')
+    var weather=document.getElementById('weather')
+    var weather=document.getElementById('temperature')
+
+    if (request.status == 200){
+        alert('all ok')
+    
+       
+        for(key in mass){
+            var option = document.createElement('option')
+            option.innerText = key;
+            country.appendChild(option);
+            
+        }
+        
+
+        country.onchange = function(){
+            city.innerText ='';
+
+            for(i=0; i<mass[country.value].length; i++){
+            var option2 = document.createElement('option');
+            option2.innerText = mass[country.value][i];
+            city.appendChild(option2);
+            console.log(country.value); 
+
+        city.onchange = function(){
+            var reqW = "select * from weather.forecast where woeid in (select woeid from geo.places(1) where text='" + city.value +"') and u='c'"
+            var requestW = new XMLHttpRequest();
+            requestW.open('GET', "https://query.yahooapis.com/v1/public/yql?" + "q=" + encodeURIComponent(reqW) + "&format=json", true);
+            requestW.onreadystatechange = function(){
+                if(requestW.readyState !=4){
+                    return;
+                }
+                if(requestW.status == 200){
+                    alert('all ok2')
+                    var weatherCity = JSON.parse(requestW.responseText);
+                    console.log(weatherCity);
+
+                    // let weatherCity = JSON.parse(response),
+                var weatherParam=document.getElementById('weather');
+                dayWeather = weatherCity.query.results.channel.item.forecast;
+                var day = " ";
+                console.log(weatherCity.query.results.channel.item.condition.text)
+                for(i = 0; i < dayWeather.length; i++){
+                    day += "<b>"+ dayWeather[i].day +" "+ dayWeather[i].date +"</b></br>" 
+                        + "Temperature from " + dayWeather[i].low + " to " + dayWeather[i].high + "</br></br>";                
+                } 
+                weatherParam.style.border="2px solid red"
+                weatherParam.innerHTML ="восход " +  weatherCity.query.results.channel.astronomy.sunrise
+                                    + "; закат " + weatherCity.query.results.channel.astronomy.sunset+ "</br></br>"
+                                    + day;
+
+
+                // for(key in forecast){
+                //     var option3 = document.createElement('option')
+                //     option3.innerHTML = query[results];
+                //     weather.appendChild(option3);
+                //     console.log(weather.value)
+            
+                // }
+                // weather.onchange = function(){
+                //     temperature.innerText = '';
+
+                //     for(i=0; i<forecast[weather.value].length; i++){
+                //         var option4 = document.createElement('option'); 
+                    
+                //         option4.innerHTML = forecast[weather.value][i];
+                //         temperature.appendChild(option4);
+                //         }
+                //     }
+                }   
+                else {
+                    alert('shit happens: ' +  requestW.status + ', ' + requestW.statusText );
+                }
+            }
+            requestW.send();
+        }
+    }
+          
+            
+        }
+    }
+  else {
+        alert('shit happens: ' +  request.status + ', ' + request.statusText );
+    }
+}
+
+request.send() 
+
+
+</script>
+	
+	<script src="main.js"></script>
+	
+	</script>
+</body>
+</html>
+
+
+<!-- https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text%3D%22kharkiv%22)%20and%20u%3D'c'&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys -->
+
+<!-- https://query.yahooapis.com/v1/public/yql?" + "q=" + encodeURIComponent(reqW) + "&format=json -->
+
+<!-- <input id="f" type="submit" onclick="myFunc()" value='0'>
+        <input id="d" type="submit" onclick="myFunc()" value='0'> -->
+
+
+<!-- // function myFunc() {
+    // var elem = document.getElementById('f');
+    // var x = parseInt(elem.value, 10);
+    // elem.value = x + 1;
+        
+    // }
+
+//     function clickCounter(elem){
+//         var a=0;
+//         elem.onclick=function(){
+//             a++
+//             elem.innerText=a
+//         }
+//     }
+//     clickCounter(document.getElementById('f')) 
+// clickCounter(document.getElementById('d')) -->

+ 680 - 0
new.js

@@ -0,0 +1,680 @@
+// var login = prompt("Input login");
+// var password = prompt("Input password");
+// if (login == null && login == ""){
+//     alert("Input login,please")}
+//     else if (login === "admin" && password === "qwerty"){
+//         alert('You lucky')
+//     }
+//     else {
+//         alert('Try again')
+//         }
+
+
+
+
+
+// var game = ['stone', 'paper','scissors'];
+// var myIndex = Math.floor(Math.random()*game.length);
+// var userWorld = prompt("Ведите выбор: stone, scissors, paper");
+// var userIndex = game.indexOf(userWorld);
+// var iWin = (((userIndex+1)% game.length) == myIndex);
+// var draw = myIndex == userIndex;
+// if (iWin == false && draw == false){alert('You loser')}
+//     else if (draw == true){alert('equal')}
+//         else {alert('You are winner')}
+
+
+// if(iWin==true){
+//     alert("Comp is winner")
+//     }
+//     else if(iWin==false){
+//         alert("you are winner")
+//         }
+//         else if(draw==true){
+//             alert("equal")
+//             }
+//             else{
+//                 alert("non correct")
+//                 }
+
+// var root={
+//     tag:'body',
+//     paired: 'true',
+//     subTags:[
+//         {
+//             tag:'div',
+//             subTags: [
+//                 {
+//                     tag:'span',
+//                     text:'Enter a data please:',
+//                     tag:'br',
+//                     paired:'false'
+//                 }
+//             ],
+//             subTags: [
+//                 {
+//                     tag:'input',
+//                     paired:'false',
+//                     attrs: {
+//                         type: 'text',
+//                     },
+//                     attrs: {
+//                         id: 'name',
+//                     }
+//                 }
+//             ],
+//             subTags: [
+//                 {
+//                     tag:'input',
+//                     paired:'false',
+//                     attrs: {
+//                         type: 'text',
+//                     },
+//                     attrs: {
+//                         id: 'surname',
+//                     }
+//                 }
+//             ],
+//             tag:'div',
+//             subTags: [
+//                 {
+//                     tag:'button',
+//                     attrs: {
+//                         id: 'ok',
+//                     },
+//                     text:'Ok'
+//                 }
+//             ],
+//             subTags: [
+//                 {
+//                     tag:'button',
+//                     attrs: {
+//                         id: 'cancel',
+//                     },
+//                     text:'Cancel'
+//                 }
+//             ]
+//         }
+//     ]
+// }
+
+var person = {
+    name: prompt("Enter a name"),
+    surname: prompt("Enter a surname"),
+}
+
+person.smartphone = "owner";
+person["laptop"] = "owner";
+
+
+var test = []; 
+
+test.one = prompt("name");
+test.two = +prompt("age");
+test.three = +prompt("height");
+
+
+
+function ar2() {
+    var a = "";
+    while (a != true) {
+        a = confirm("while confirm");
+    }
+
+    for(var i=""; i!=true;){
+        i=confirm("while confirm");
+    }
+
+
+    var i='1234567890';
+    var str=""
+    for(var j=0; j<10; j++){
+
+    }
+
+var test=[];
+    for(var i=""; i!=null;){
+       i=prompt('few words');
+       test.push(i);
+       if(i==null){
+           break;
+       }
+    }
+
+
+    var test=[];
+    for(var i=""; i!=null;){
+       i=prompt('few words');
+       obj[i] = i;
+       if(i==null){
+           break;
+       }
+    }
+var a=0;
+for(var i=0;;i++){
+    a=Math.random();
+    if(a>0.9){
+        break;
+    }
+}
+console.log(i);
+
+for(var i=""; ;){
+    i=prompt('few words');
+    if(i==null){
+        break;
+    }
+ }
+
+
+ var sum=0;
+ 
+ var n=+prompt('number');
+ for(var i=1; i<n; i+3){
+     
+     sum=sum+i;
+ }
+
+ console.log(sum);
+
+
+
+
+
+ arr[i]=3*(i+1)
+
+
+ var sum=0;
+ var n=+prompt('number');
+ for(var i=1; i<n; i+=3){ 
+    sum=sum+i;
+ }
+ alert(sum);
+
+
+ var a="#";
+ var b="";
+ var res="";
+ for(var i=0; i<10; i++){
+    res=a+b;
+ }
+ console.log(res);
+
+
+ var str="";
+var i=0;
+for (i;i<10;i++){
+	str +="\n";
+	for (var j=0;j<10;j++){
+		str += j;
+	}
+}
+console.log(str);
+
+var str="";
+for (var j=0;j<10;j++){
+    str+="#"+"";
+}
+
+for (var i=10,str="";i>0;i--,str+="#"+""){
+	console.log(str);
+}
+
+
+var i = 0;
+var j = 0;
+var str = "\n";
+for (i=1;i<=8;i++){
+    for (j=1; j<=8;j++){
+        str += (i%2 == j%2) ? "#": "."
+        }
+        str += '\n';
+    }
+console.log(str);
+
+
+
+var i = 0;
+var str = "";
+var j=(Math.floor((Math.random()*10)))%2+5;
+    for (i=1; i<j; i++){
+        str += "#" + " "
+        } 
+console.log(str);
+
+var arr=[];
+var n=prompt();
+var str = "";
+for(i=0; i<=n; i++){
+    arr[i] = i*i*i; 
+    str += i + " ";
+}
+console.log(str);
+
+var i = 0;
+var j = 0;
+var str = "\n";
+for (i=1;i<=9;i++){
+    for (j=1; j<=9;j++){
+        str += (i * j) + " "
+        }
+        str += '\n';
+    }
+console.log(str);
+
+var arr=[];
+var str = "\n";
+var a=0;
+for (var i=1;i<=9;i++){
+    for (var j=1; j<=9;j++){
+        arr[i] = [];
+        a=i*j;
+        arr[i][j]=a;
+        str += arr[i][j] + " "
+        }
+        str += '\n';
+    }
+console.log(str);
+
+
+
+
+for (var key in person){
+    console.log(key+": "+person[key]);
+}
+
+
+var a={
+    name:"Nick",
+    surname:"Golden",
+}
+var b={
+    name:"Peter",
+    surname:"Green",
+}
+var c={
+    name:"Bob",
+    surname:"Black",
+}
+
+a.age = "15";
+b["fathername"] = "Petrovich";
+c.push(sex)="male";
+
+if ("age" in a) {
+    alert( "Свойство name существует!" );
+  }else{alert("Такого свойства нет")};
+
+var person={
+    name:"Dick",
+    surname:"Jhone",
+}
+
+person={...{a,b,c},name:"Dick", surname:"Jhone"}
+
+
+for (var key in person){
+    console.log(key+": "+person[key]);
+    for (let word of ['name','surname']){
+        console.log(word)
+    }
+}
+var a=0;
+var b=0;
+var c=0;
+function sum(a,b,c){
+    var d = a+b+c;
+    return(d);
+};
+sum();
+
+
+
+function(a=0,b=0){
+    var c=Math.floor()
+}
+var a=0;
+var b=0;
+function intRandom(a, b) {
+    return Math.floor(Math.random() * (b - a)) + a;
+  }
+
+greetAll("Superman") // выводит alert "Hello Superman"
+greetAll("Superman", "SpiderMan") // выводит alert "Hello Superman, SpiderMan"
+greetAll("Superman", "SpiderMan", "Captain Obvious")
+
+function salut() {
+    var args = [];
+    for (var i = 0; i < arguments.length; i++) {
+      args[i] ="   " +  arguments[i];
+    }
+    alert( "Привет! -  " + args);
+  }
+salut("Superman")
+salut("Superman", "SpiderMan")
+salut("Superman", "SpiderMan", "Captain Obvious");
+
+
+  
+function sum() {
+    var args = 0;
+    for (var i = 0; i < arguments.length; i++) {
+      args +=arguments[i];
+    }
+    alert( args);
+  }
+ 
+  sum(1) 
+  sum(2) 
+  sum(10,20,40,100) 
+
+  
+  function avg() {
+    var args = 0;
+    for (var i = 0; i < arguments.length; i++) {
+      args +=arguments[i];
+      args=args/arguments.length;
+    }
+    alert( args);
+  }
+  avg(1) // => 1
+  avg(2) // => 2
+  avg(10,20,40,100) // => 42.5
+ 
+
+
+
+function a(b){
+    alert(b);
+};
+
+function cube(a){
+    alert(Math.pow(a, 3)); 
+}
+
+function avg2(a,b){
+    var c = (a+b)/2;
+    alert(c);
+};
+
+function sum3(a=0,b=0,c=0){
+    alert(a+b+c);
+};
+
+function intrandom(a=0, b=0) {
+    alert (Math.floor(Math.random() * (b - a)) + a);
+}
+
+function greet() {
+    var args = [];
+    for (var i = 0; i < arguments.length; i++) {
+      args[i] ="   " +  arguments[i];
+    }
+    alert( "Привет! -  " + args);
+  }
+
+  function sum() {
+    var args = 0;
+    for (var i = 0; i < arguments.length; i++) {
+      args +=arguments[i];
+    }
+    alert( args);
+  }
+
+
+
+  function avg() {
+    var args = 0;
+    for (var i = 0; i < arguments.length; i++) {
+      args +=arguments[i];
+    }
+	args=args/arguments.length;
+    alert( args);
+  }
+
+var allFunc = {...a, cube, avg2, sum3, intrandom, greet, sum, avg,}
+for (var key in allFunc){
+    console.log(key+": "+allFunc[key]);
+}
+
+function allFunc() {
+    var args = {};
+    for (var i = 0; i < arguments.length; i++) {
+      args[i] ="   " +  arguments[i];
+    }
+    console.log(args);
+  }
+
+
+var obj2 = {...a, cube, avg2, sum3, intrandom, greet, sum, avg,}
+
+
+
+allFunc("a", "cube", "avg2", "sum3", "intrandom", "greet", "sum", "avg",);
+var person = {
+    ...
+    age: 50,
+    ...
+    getAgeCategory: function(){
+        ...
+    }
+}
+
+alert(person.getAgeCategory());
+
+
+var sample = prompt("Введите название задания")
+switch (sample.toLowerCase()){
+    case "a": aSample("Hello!")
+              break
+    case "cube": cubeSample(3)
+              break
+    case "avg2": avg2Sample(10,5)
+              break
+    case "sum3": sum3Sample(1,2,3)
+              break
+    case "intrandom": intrandomSample(2,15)
+              break
+    case "greet": greetSample("Superman", "SpiderMan", "Captain Obvious")
+              break
+    case "sum": sumSample(10,20,40,100); 
+              break
+    case "avg": avgSample(10,20,40,100)
+              break
+}
+
+
+
+
+var a=0;
+function cube(a){
+    var b = Math.pow(a, 3);
+    return(b);
+};
+
+
+function cubeSample(a,b){
+    var b = Math.pow(a, 3);
+    return(b);
+    cube(5) // => 125
+}
+
+
+
+
+rates={
+	usd: {
+        buy:26.15,
+        sell:26.51
+    },
+    eur: {
+        buy:31.98,
+        sell:32.62
+    },
+};
+
+
+
+
+var tabHtml = document.documentElement;
+var tabBody = document.createElement("body");
+tabHtml.appendChild(tabBody);
+var tBody = document.createElement("tbody");
+tabBody.appendChild(tBody);
+var tab=document.createElement("table");
+tab.border=1;
+tab.cellpadding=1;
+tab.cellspacing=1;
+tBody.appendChild(tab);
+var multi = new Array();
+for (i = 1; i <= 10; i++) {
+multi[i] = new Array();
+if (i%2 !=0) {
+    var tr =document.createElement("tr");
+  tab.appendChild(tr);
+  tr.style.backgroundColor = "yellow";
+      } 
+else {
+    var tr =document.createElement("tr");
+      tab.appendChild(tr);
+    tr.style.backgroundColor = "grey";
+  }   
+for (j = 1; j <= 10; j++) {
+multi[i][j] = i * j;
+var td =document.createElement("td")
+tr.appendChild(td);
+td.id = "cell" 
+td.width="50";
+td.height="50"
+td.innerHTML= "<td>" + multi[i][j] + "</td>";
+td.onmouseover = td.onmouseout = moveMouse;
+function moveMouse(event) {
+  if (event.type == 'mouseover') {
+    event.td.style.background = 'pink'
+  }
+  if (event.type == 'mouseout') {
+    event.td.style.background = ''
+  }
+}
+}
+}
+
+
+
+  var arr = ['1', 0, Math.random, alert, prompt, prompt(), null, undefined, "name", {}]
+  function typeStats (arr){
+      var massOne=[]
+      var obj={}
+      for(i = 0; i < arr.length; i++){
+        massOne.push(typeof arr[i]);
+          for(j=0; j<massOne.length; j++){
+              var count=obj[massOne[i]] || 0
+          }
+          obj[massOne[i]]=count+1
+      }
+      return obj;
+  }
+  typeStats(arr);
+
+
+ 
+
+  var arr = ['1', 0, Math.random, alert, prompt, prompt(), null, undefined, "name", {}]
+  var typestats=function(arr){
+      var intmass=[];
+      var assmass={};
+      for(i=0; i<arr.length; i++){
+          intmass.push(typeof arr[i]);
+          for(j=0; j<intmass.length; j++){
+              var count=assmass[intmass[i]] || 0
+          }
+          assmass[intmass[i]]=count+1;
+      }
+      return assmass;
+  }
+  typestats(arr);
+
+<input id="f" type="submit" onclick="myFunc()" value='0'>
+
+
+
+  function myFunc() {
+    var elem = document.getElementById('f');
+    var x = parseInt(elem.value, 10);
+    elem.value = x + 1;
+        
+}
+
+
+document.createElement('<input id="f" type="submit" onclick="myFunc()" value='0'>')
+
+
+
+   <input type="nick" id = "nick" placeholder="Nick">
+   <input type="text" id = "message" placeholder="Message">
+   <input type="submit" value="send" id = "button">
+   <div id= "chat">  </div>
+
+function jsonPost(url, data)
+    {
+        return new Promise((resolve, reject) => {
+            var x = new XMLHttpRequest();   
+            x.onerror = () => reject(new Error('jsonPost failed'))
+            //x.setRequestHeader('Content-Type', 'application/json');
+            x.open("POST", url, true);
+            x.send(JSON.stringify(data))
+
+            x.onreadystatechange = () => {
+                if (x.readyState == XMLHttpRequest.DONE && x.status == 200){
+                    resolve(JSON.parse(x.responseText))
+                }
+                else if (x.status != 200){
+                    reject(new Error('status is not 200'))
+                }
+            }
+        })
+    }
+
+jsonPost("http://students.a-level.com.ua:10012", {func:"addMessage", nick:"Oleg", message:"Hello"})
+
+var messages=jsonPost("http://students.a-level.com.ua:10012", {func:"getMessages", messageId:"0"})
+.then(a=> console.log(a.data));
+
+function mess() {
+    var messages = jsonPost("http://students.a-level.com.ua:10012", {
+        func: "getMessages",
+        messageid: "0"
+    }).then(a => {
+        console.log(a)
+        for (q = 0; q < a.data.length; q++) {
+            var y = document.getElementById("ms")
+            var ссс = document.createElement("p")
+            ссс.innerHTML = a.data[q].nick + "----" + a.data[q].message
+            y.appendChild(ссс)
+
+        }
+        var qqq = a.nextMessageId
+        console.log(qqq + "a111")
+        console.log(a.data.length)
+        setInterval(function() {
+            var messages = jsonPost("http://students.a-level.com.ua:10012", {
+                func: "getMessages",
+                messageid: qqq
+            }).then(www => {
+                for (q = a.data.length; q < www.data.length; q++) {
+                    var y = document.getElementById("ms")
+                    var ссс = document.createElement("p")
+                    ссс.innerHTML = www.data[q].nick + "----" + www.data[q].message
+                    y.appendChild(ссс)
+
+                }
+                qqq = www.nextMessageId
+                console.log(qqq + "a222")
+                console.log(www.data.length)
+            })
+
+
+        }, 2000);
+    })
+}
+mess()

+ 82 - 0
new.php

@@ -0,0 +1,82 @@
+<?php
+$sudoku = $numbers = $temp_results = [];
+$num_of_cleanings;
+init_sudoku();
+//generating coords for each square (5-th square has 36, 37, 38, 46, 47, 48, 56, 57, 58)
+foreach (range(0, 8) as $square_number) {
+	$square_coords[] = get_square_coords($square_number);
+}
+$temp_results = [];
+while (count($numbers)) { //go through all the numbers
+	$number = array_pop($numbers);
+	$used_rows = $used_cols = [];
+	$square = 0;
+	while ($square < 9) {
+		$coord = random_coord($square, $used_rows, $used_cols);
+		if (false === $coord) {
+			// echo "cleaning!!!\n";
+			$num_of_cleanings++;
+			if($num_of_cleanings > 2) {
+				init_sudoku();
+				break;
+			}
+			$square = 0;
+			$sudoku = $temp_results;
+			$used_rows = $used_cols = [];
+			continue;
+		}
+		$row = intval($coord/10);
+		$col = $coord % 10;
+		$sudoku[$row][$col] = $number;
+		$used_rows[] = $row;
+		$used_cols[] = $col;
+		$square++;			
+	}
+	$temp_results = $sudoku;
+}
+$message = "We have created a sudoku!\n";
+// print_sudoku();
+function init_sudoku() {
+	global $sudoku, $numbers, $num_of_cleanings;
+	$zeroes = array_fill(0,9, 0); // array of 9 zeroes
+	$sudoku = array_fill(0, 9, $zeroes); // array 9 x 9 of zeroes for sudoku
+	$numbers = range(1, 9);
+	$num_of_cleanings = 0;
+}
+function print_sudoku(){
+	global $sudoku;
+	foreach ($sudoku as $s1) {
+		foreach ($s1 as $value) {
+			print $value . "  ";
+		}
+		print "\n";
+	}
+}
+function get_square_coords($square) {
+	$x = ($square % 3) * 3;
+	$y = intval($square / 3) * 3;
+	$coords = array_merge(
+		range($y*10 + $x, $y*10 +$x +2),
+		range(($y+1)*10 + $x, ($y+1)*10 +$x +2),
+		range(($y+2)*10 + $x, ($y+2)*10 +$x +2)
+	);
+	return $coords;
+}
+function random_coord($square, $used_rows, $used_cols) {
+	global $square_coords, $sudoku;
+	$option_coords = $square_coords[$square];
+	do {
+		if(! count($option_coords)) {
+			return false;
+		}
+		$coord = random_value($option_coords);
+		$x = $coord % 10;
+		$y = intval($coord/10);
+		$option_coords = array_diff($option_coords, [$coord]);
+	} while (in_array($x, $used_cols) || in_array($y, $used_rows) || ($sudoku[$y][$x] != 0));
+	return $coord;
+}
+function random_value($array) {
+	return $array[array_rand($array, 1)];
+}
+?>

+ 0 - 0
new2.js


+ 14 - 0
one/css/style.css

@@ -0,0 +1,14 @@
+*{
+	margin: 0;
+	padding: 0;
+	box-sizing: border-box;
+}
+
+ul{
+	list-style: none;
+}
+
+a{
+	text-decoration: none;
+}
+

BIN
one/fonts/ARIAL.TTF


+ 14 - 0
one/index.html

@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<link rel="stylesheet" href="css/style.css">
+	<title>Table for JS</title>
+</head>
+<body>
+	
+	
+	<script src="main.js"></script>
+</body>
+</html>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 0
one/js/libs.min.js


+ 41 - 0
one/js/main.js

@@ -0,0 +1,41 @@
+var tagHtml=document.documentElement;
+var tagBody=document.createElement('body');
+tagHtml.appendChild(tagBody);
+var tagTbody=document.createElement('tbody');
+tagBody.appendChild(tagTbody);
+var tagTable=document.createElement('table');
+tagTable.border='1px solid black';
+tagTable.textAlign='center';
+var arr=new Array();
+for(var i=1; i<=9; i++){
+    arr[i]= new Array();
+    var row=document.createElement('tr');
+    
+    for(var j=1; j<=9; j++){
+        arr[i][j]=i*j;
+        if (i===1) {
+            var cell=document.createElement('td');
+            row.appendChild(cell);
+            cell.style.backgroundColor = "red";
+              } 
+        else if(j%2 !=0 && i>1){
+            var cell=document.createElement('td');
+            row.appendChild(cell);
+            cell.style.backgroundColor = "red";
+            }
+        else {
+            var cell=document.createElement('td');
+            row.appendChild(cell);
+            cell.style.backgroundColor = "blue";
+          }  
+        
+        cell.style.border= '1px solid black';
+		cell.style.padding = '16px';
+        cell.id = "cell" 
+        cell.width="50";
+        cell.height="50"
+        cell.innerHTML= "<td>" + arr[i][j] + "</td>";
+    }
+    tagTable.appendChild(row);
+}
+document.body.appendChild(tagTable);

+ 23 - 0
style.css

@@ -0,0 +1,23 @@
+@import url("fonts.css");
+*{
+  margin: 0;
+  padding: 0;
+  /* font-family:  */
+}
+
+a:hover, a {
+  text-decoration: inherit;
+  color: inherit; 
+}
+
+body{
+  margin: 0 auto;
+  padding-top: 60px;
+  background-color: white;
+}
+
+
+/* .wrapper{
+  max-width: 1200px;
+  margin: 0 auto;
+} */