+
+
diff --git a/src/week1/day0/html_basics/media_content.html b/src/week1/day0/html_basics/media_content.html
new file mode 100644
index 0000000..0d47bbd
--- /dev/null
+++ b/src/week1/day0/html_basics/media_content.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+ Media content
+
+
+
+
+
+
+
+
+
diff --git a/src/week1/day0/html_basics/todo_list.html b/src/week1/day0/html_basics/todo_list.html
new file mode 100644
index 0000000..c495c0c
--- /dev/null
+++ b/src/week1/day0/html_basics/todo_list.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+ My todo list
+
+
+
+
task 1
+
task 2
+
task 3
+
task ...
+
+
+
diff --git a/src/week1/day0/html_css_practice/css/grid-layout.css b/src/week1/day0/html_css_practice/css/grid-layout.css
new file mode 100644
index 0000000..51294a1
--- /dev/null
+++ b/src/week1/day0/html_css_practice/css/grid-layout.css
@@ -0,0 +1,71 @@
+/* --- layout --- */
+/* based in http://adamkaplan.me/grid/ */
+
+/* small screen (default)*/
+html {
+ font-size: 100%;
+}
+
+/* medium screen (640px) */
+@media (min-width: 40rem) {
+ html {
+ font-size: 112%;
+ }
+}
+
+/* large screen (1024px) */
+@media (min-width: 64rem) {
+ html {
+ font-size: 120%;
+ }
+}
+
+*,
+*::before,
+*::after {
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+.container {
+ margin: 0 auto;
+ max-width: 48rem;
+ width: 90%;
+}
+
+.clearfix::before,
+.clearfix::after {
+ content: ' ';
+ display: table;
+}
+
+.clearfix::after {
+ clear: both;
+}
+
+.clearfix {
+ *zoom: 1;
+}
+
+.column {
+ float: left;
+ padding-left: 1rem;
+ padding-right: 1rem;
+}
+
+.column .full {
+ width: 100%;
+}
+
+.column .fourth {
+ width: 25%;
+}
+
+.column .tree-fourth {
+ width: 75%;
+}
+
+.column .third {
+ width: 33.3%;
+}
diff --git a/src/week1/day0/html_css_practice/css/normalize.css b/src/week1/day0/html_css_practice/css/normalize.css
new file mode 100644
index 0000000..e1348b6
--- /dev/null
+++ b/src/week1/day0/html_css_practice/css/normalize.css
@@ -0,0 +1,351 @@
+/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
+
+/* Document
+ ========================================================================== */
+
+/**
+ * 1. Correct the line height in all browsers.
+ * 2. Prevent adjustments of font size after orientation changes in iOS.
+ */
+
+html {
+ line-height: 1.15; /* 1 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/* Sections
+ ========================================================================== */
+
+/**
+ * Remove the margin in all browsers.
+ */
+
+body {
+ margin: 0;
+}
+
+/**
+ * Render the `main` element consistently in IE.
+ */
+
+main {
+ display: block;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+
+hr {
+ box-sizing: content-box; /* 1 */
+ height: 0; /* 1 */
+ overflow: visible; /* 2 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+pre {
+ font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Remove the gray background on active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * 1. Remove the bottom border in Chrome 57-
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+ */
+
+abbr[title] {
+ border-bottom: none; /* 1 */
+ text-decoration: underline; /* 2 */
+ text-decoration: underline dotted; /* 2 */
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+code,
+kbd,
+samp {
+ font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove the border on images inside links in IE 10.
+ */
+
+img {
+ border-style: none;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * 1. Change the font styles in all browsers.
+ * 2. Remove the margin in Firefox and Safari.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: inherit; /* 1 */
+ font-size: 100%; /* 1 */
+ line-height: 1.15; /* 1 */
+ margin: 0; /* 2 */
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+
+button,
+input {
+ /* 1 */
+ overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+
+button,
+select {
+ /* 1 */
+ text-transform: none;
+}
+
+/**
+ * Correct the inability to style clickable types in iOS and Safari.
+ */
+
+button,
+[type='button'],
+[type='reset'],
+[type='submit'] {
+ -webkit-appearance: button;
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+
+button::-moz-focus-inner,
+[type='button']::-moz-focus-inner,
+[type='reset']::-moz-focus-inner,
+[type='submit']::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule.
+ */
+
+button:-moz-focusring,
+[type='button']:-moz-focusring,
+[type='reset']:-moz-focusring,
+[type='submit']:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+
+/**
+ * Correct the padding in Firefox.
+ */
+
+fieldset {
+ padding: 0.35em 0.75em 0.625em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ * `fieldset` elements in all browsers.
+ */
+
+legend {
+ box-sizing: border-box; /* 1 */
+ color: inherit; /* 2 */
+ display: table; /* 1 */
+ max-width: 100%; /* 1 */
+ padding: 0; /* 3 */
+ white-space: normal; /* 1 */
+}
+
+/**
+ * Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+
+progress {
+ vertical-align: baseline;
+}
+
+/**
+ * Remove the default vertical scrollbar in IE 10+.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10.
+ * 2. Remove the padding in IE 10.
+ */
+
+[type='checkbox'],
+[type='radio'] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+
+[type='number']::-webkit-inner-spin-button,
+[type='number']::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+[type='search'] {
+ -webkit-appearance: textfield; /* 1 */
+ outline-offset: -2px; /* 2 */
+}
+
+/**
+ * Remove the inner padding in Chrome and Safari on macOS.
+ */
+
+[type='search']::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button; /* 1 */
+ font: inherit; /* 2 */
+}
+
+/* Interactive
+ ========================================================================== */
+
+/*
+ * Add the correct display in Edge, IE 10+, and Firefox.
+ */
+
+details {
+ display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+
+summary {
+ display: list-item;
+}
+
+/* Misc
+ ========================================================================== */
+
+/**
+ * Add the correct display in IE 10+.
+ */
+
+template {
+ display: none;
+}
+
+/**
+ * Add the correct display in IE 10.
+ */
+
+[hidden] {
+ display: none;
+}
diff --git a/src/week1/day0/html_css_practice/css/style.css b/src/week1/day0/html_css_practice/css/style.css
new file mode 100644
index 0000000..5c61e80
--- /dev/null
+++ b/src/week1/day0/html_css_practice/css/style.css
@@ -0,0 +1,15 @@
+.description_wrap {
+ visibility: hidden;
+}
+
+.img_wrap:hover .description_wrap {
+ visibility: visible;
+}
+
+.description_wrap img {
+ opacity: 26%;
+}
+
+.description {
+ position: absolute;
+}
diff --git a/src/week1/day0/html_css_practice/galery.html b/src/week1/day0/html_css_practice/galery.html
new file mode 100644
index 0000000..94a30bf
--- /dev/null
+++ b/src/week1/day0/html_css_practice/galery.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+ Galery for practice
+
+
+
+
+
Pictures
+
+ Lorem ipsum dolor sit amet consectetur, adipisicing elit. Labore iusto laborum ut temporibus omnis, deserunt
+ debitis aliquid iste fugiat accusantium eum porro architecto ea dolorum quas, velit quam officia assumenda.
+
+
+
+
+
+
+
description 1
+
+
+
+
+
+
+
+
+
description 2
+
+
+
+
+
+
+
+
+
description 3
+
+
+
+
+
+
+
+
+
+
+
description 4
+
+
+
+
+
+
+
+
+
description 5
+
+
+
+
+
+
+
+
+
description 6
+
+
+
+
+
+
+
+
+
diff --git a/src/week1/days2-5/chapter2/excercises_c2.js b/src/week1/days2-5/chapter2/excercises_c2.js
new file mode 100644
index 0000000..6b50b95
--- /dev/null
+++ b/src/week1/days2-5/chapter2/excercises_c2.js
@@ -0,0 +1,47 @@
+// looping triangle
+console.log("looping triangle");
+let figure = "";
+for (let cont = 0; cont < 7; cont++) {
+ figure += "#";
+ console.log(figure);
+}
+
+// print numbers
+console.log("print numbers, Fizz, Buzz, FizzBuzz");
+for (let cont = 1; cont <= 100; cont++) {
+ if (cont % 3 == 0) {
+ console.log(cont, " - Fizz");
+ } else if (cont % 5 == 0) {
+ console.log(cont, " - Buzz");
+ } if (cont % 3 == 0 && cont % 5 == 0) {
+ console.log(cont, " - FizzBuzz");
+ } else {
+ console.log(cont);
+ }
+}
+
+console.log("chessboard 8x8");
+let chessLine = "# # # # # # # #"
+for (let cont = 0; cont < 8; cont++) {
+ if (cont % 2 != 0){
+ console.log(" ", chessLine);
+ } else {
+ console.log(chessLine);
+ }
+}
+
+console.log("chessboard size");
+let chessSize = 10;
+let colChar = "";
+for (let line = 0; line < chessSize; line++) {
+ let chessLine = "";
+ for (let col = 0; col < chessSize; col++) {
+ chessLine += colChar + "# ";
+ }
+ if (line % 2 != 0){
+ chessLine = " " + chessLine
+ } else {
+ chessLine = "" + chessLine
+ }
+ console.log(chessLine);
+}
\ No newline at end of file
diff --git a/src/week1/days2-5/chapter2/test_c2.html b/src/week1/days2-5/chapter2/test_c2.html
new file mode 100644
index 0000000..be5d59c
--- /dev/null
+++ b/src/week1/days2-5/chapter2/test_c2.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+ test js chapter 2
+
+
+
diff --git a/src/week1/days2-5/chapter3/exercises_c3.js b/src/week1/days2-5/chapter3/exercises_c3.js
new file mode 100644
index 0000000..e0713da
--- /dev/null
+++ b/src/week1/days2-5/chapter3/exercises_c3.js
@@ -0,0 +1,53 @@
+// minimum
+console.log("Minimum");
+let n1 = 5;
+let n2 = 22
+let result = (n1, n2) => n1 < n2 ? n1 :n2;
+console.log(result(n1, n2));
+
+// even or odd
+console.log("Even or odd");
+function isEven(number) {
+ if (number == 0) {
+ console.log("::: number is even :::");
+ } else if (number == 1) {
+ console.log("::: number is odd :::");
+ } else {
+ isEven(number - 2);
+ }
+}
+
+isEven(50);
+isEven(75);
+//isEven(-1);
+
+// search and count
+console.log("count B's");
+function countBs(text) {
+ let total = 0;
+
+ for (let index = 0; index < text.length; index++) {
+ if (text.charAt(index).toUpperCase() === 'B') {
+ total++
+ }
+ }
+
+ return total;
+}
+
+console.log(countBs("BBS"));
+
+console.log("count defined char");
+function countChar(text, charToFind) {
+ let total = 0;
+
+ for (let index = 0; index < text.length; index++) {
+ if (text.charAt(index).toUpperCase() === charToFind.toUpperCase()) {
+ total++
+ }
+ }
+
+ return total;
+}
+
+console.log(countChar("kaKkerlak", "k"));
\ No newline at end of file
diff --git a/src/week1/days2-5/chapter3/test_c3.html b/src/week1/days2-5/chapter3/test_c3.html
new file mode 100644
index 0000000..aba0154
--- /dev/null
+++ b/src/week1/days2-5/chapter3/test_c3.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+ test js chapter3
+
+
+
diff --git a/src/week1/days2-5/chapter4/exercises_c4.js b/src/week1/days2-5/chapter4/exercises_c4.js
new file mode 100644
index 0000000..5af2b20
--- /dev/null
+++ b/src/week1/days2-5/chapter4/exercises_c4.js
@@ -0,0 +1,185 @@
+console.log("::: The sum of a range :::")
+function range(numStart, numEnd) {
+ let range =[];
+ if (numEnd > numStart) {
+ for (let cont = numStart; cont <= numEnd; cont++) {
+ range.push(cont);
+ }
+ } else {
+ for (let cont = numStart; cont >= numEnd; cont--) {
+ range.push(cont);
+ }
+ }
+ console.log(range);
+ return range;
+}
+
+function sum(range) {
+ let sumatory = 0;
+ for (let index = 0; index < range.length; index++) {
+ sumatory += range[index];
+ }
+ return sumatory;
+}
+
+console.log(sum(range(5, 2)));
+
+console.log("::: The sum of a range (modified) :::")
+function range2(numStart, numEnd, step) {
+ let range =[];
+ if (numEnd > numStart) {
+ for (let cont = numStart; cont <= numEnd; step == undefined ? cont++ : cont += step) {
+ range.push(cont);
+ }
+ } else {
+ for (let cont = numStart; cont >= numEnd; step == undefined ? cont-- : cont += step) {
+ range.push(cont);
+ }
+ }
+ console.log(range);
+ return range;
+}
+
+function sum2(range) {
+ let sumatory = 0;
+ for (let index = 0; index < range.length; index++) {
+ sumatory += range[index];
+ }
+ return sumatory;
+}
+
+console.log(sum2(range2(2, 5)));
+
+// reverse array (exercise 1)
+console.log("::: reverse array :::");
+function reverseArray(array) {
+ let arrayCopy = [];
+
+ for (let i = array.length -1; i >= 0; i--) {
+ arrayCopy.push(array[i]);
+ }
+
+ return arrayCopy;
+}
+
+console.log("reverseArray::: ", reverseArray(['A', 'B', 'C']));
+
+// reverseArrayInPlace
+console.log("::: reverse array in place:::");
+function reverseArrayInPlace(array) {
+ console.log("array in::: ", array);
+ let middleLength = 0;
+ if (array.length % 2 == 0) {
+ middleLength = (array.length / 2);
+ } else {
+ middleLength = parseInt((array.length / 2));
+ }
+
+ let first = 0;
+ let last = 0;
+ for (let index = 0; index < middleLength; index++) {
+ first = array[index];
+ last = array[(array.length - 1) - index];
+ array.splice(index, 1, last);
+ array.splice((array.length - 1) - index, 1, first);
+ }
+ return array;
+}
+
+console.log("array out:::", reverseArrayInPlace([1, 2, 3, 4, 5]));
+
+// array to list
+console.log("array to list");
+
+function arrayToList(arrayValues) {
+ let listValues = {};
+
+ for(let cont = arrayValues.length-1; cont >= 0; cont--) {
+ if (listValues.value == undefined) {
+ listValues = {"value" : arrayValues[cont], "rest" : null};
+ } else {
+ listValues = {"value" : arrayValues[cont], "rest" : listValues};
+ }
+
+ }
+ return listValues;
+}
+
+console.log(arrayToList([10, 20, 30]));
+
+// list to array
+console.log("list to array");
+
+function listToArray(listElements) {
+ arrayElements = [];
+ while (listElements != null) {
+ arrayElements.push(listElements.value);
+ listElements = listElements.rest;
+ }
+ return arrayElements;
+}
+
+console.log(listToArray(arrayToList([10, 20, 30])));
+
+// prepend
+console.log("Prepend");
+function prepend(element, list) {
+ return {"value" : element, "rest" : list};
+}
+
+console.log(prepend(10, prepend(20, null)));
+
+//nth
+console.log("nth");
+
+function nth(list, searchElementIndex) {
+ console.log(listToArray(list));
+ return listToArray(list)[searchElementIndex];
+}
+
+console.log(nth(arrayToList([10, 20, 30]), 1));
+
+// deep equal
+console.log("deep equal");
+
+function deepEqual(val1, val2) {
+ let result = false;
+
+ if (val1 === null && val2 === null || val1 === undefined && val2 === undefined) {
+ // validate null object and values
+ result = true;
+ } else if(val1 !== null && val2 !== null && typeof(val1) !== "object" && typeof(val2) !== "object" && val1 === val2) {
+ // validate number, string, boolean
+ result = true;
+ } else if (val1 !== null && val2 !== null && typeof(val1) === "object" && typeof(val2) === "object") {
+ // validate object
+ if (Object.keys(val1).length === Object.keys(val2).length) {
+ // validate num of keys
+ for (let i = 0; i < Object.keys(val1).length; i++) {
+ // validate key names
+ if(Object.keys(val1)[i] !== Object.keys(val2)[i]) {
+ result = false;
+ break;
+ } else {
+ result = true;
+ }
+ }
+ for (let key in val1) {
+ // compare data in object
+ if (!deepEqual(val1[key], val2[key])) {
+ result = false;
+ break;
+ } else {
+ result = true;
+ }
+ }
+ }
+ }
+
+ return result;
+}
+
+let obj = {here: {is: "an"}, object: 2};
+console.log(deepEqual(obj, obj));
+console.log(deepEqual(obj, {here: 1, object: 2}));
+console.log(deepEqual(obj, {here: {is: "an"}, object: 2}));
\ No newline at end of file
diff --git a/src/week1/days2-5/chapter4/test_c4.html b/src/week1/days2-5/chapter4/test_c4.html
new file mode 100644
index 0000000..4044c3b
--- /dev/null
+++ b/src/week1/days2-5/chapter4/test_c4.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+ test js chapter4
+
+
+
diff --git a/src/week2/day1/index.html b/src/week2/day1/index.html
index 246e778..97d9c8a 100644
--- a/src/week2/day1/index.html
+++ b/src/week2/day1/index.html
@@ -1,24 +1,63 @@
-
+
+
+
+
+
+ Creating elements
+
+
+