diff --git a/index.html b/index.html
index be6da78c5e9ec9f23846a724d7820f71b1816897..1e5a25efd0011aa84ea2475b719fc5f3617e141b 100644
--- a/index.html
+++ b/index.html
@@ -1,57 +1,76 @@
-
- Page Title
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ Page Title
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js/car.js b/js/car.js
new file mode 100644
index 0000000000000000000000000000000000000000..56d7325d208fed6972b7eef079981d6be9b039b5
--- /dev/null
+++ b/js/car.js
@@ -0,0 +1,37 @@
+function Car(image, make, model, description, price, category, year, mileage, extras) {
+ if (arguments.length != 9)
+ throw "ArgumentCountException";
+ this.image = image;
+ this.make = make;
+ this.model = model;
+ this.description = description;
+ this.price = price;
+ this.category = category;
+ this.year = year;
+ this.mileage = mileage;
+ this.extras = extras;
+}
+
+Car.prototype.generateImage = function(elt) {
+ if (elt instanceof HTMLElement) {
+ const img = new Image();
+ img.src = this.image;
+ img.alt = this.make + " " + this.model;
+ img.classList.add("card-img-top");
+ elt.appendChild(img);
+ }
+}
+
+Car.prototype.generateExtras = function(elt) {
+ if (elt instanceof HTMLElement) {
+ const ul = document.createElement("ul");
+ if (this.extras) {
+ this.extras.forEach(function(item) {
+ const li = document.createElement("li");
+ li.innerText = item.name + " - " + item.price + "€";
+ ul.appendChild(li);
+ });
+ }
+ elt.appendChild(ul);
+ }
+}
\ No newline at end of file
diff --git a/js/extra.js b/js/extra.js
new file mode 100644
index 0000000000000000000000000000000000000000..66bc8abab52f51094dee4c1eb6365c3facbb2311
--- /dev/null
+++ b/js/extra.js
@@ -0,0 +1,6 @@
+function Extra(name, price) {
+ if (arguments.length != 2)
+ throw "ArgumentCountException";
+ this.name = name;
+ this.price = price;
+}
\ No newline at end of file