diff --git a/public/index.js b/public/index.js
index 0092346e81a6d85aa06c157f3a74240bec031763..16ec6d6efd4498710d835d3baf348a4ae76810e3 100644
--- a/public/index.js
+++ b/public/index.js
@@ -1,10 +1,10 @@
 // Object which stores all the user selected/entered values
 let inputObj = {
-    textChoice: 'manual',   // choice of text entry initially set as manual. Can have values manual, calculated
-    text: '',               // User entered text in case of manual  
+    textChoice: 'manual',           // choice of text entry initially set as manual. Can have values manual, calculated
+    text: '',                       // User entered text in case of manual  
     numberOfCharacters: '',         // number of characters in text. Either from user entered text or user entered number
-    schoolLevel: '',        // Value of school level selected from dropdown
-    category: ''            // Value of category selected from dropdown
+    schoolLevel: '',                // Value of school level selected from dropdown
+    category: ''                    // Value of category selected from dropdown
 };
 
 
@@ -110,13 +110,13 @@ function showFeedbackForm() {
 // function schoolLevelChangeEvent: listens for change in school level dropdown
 // and sets selected value to property schoolLevel on inputObj
 function schoolLevelChangeEvent(event) {
-    inputObj.schoolLevel = parseInt(event.target.value);
+    inputObj.schoolLevel = event.target.value;
 }
 
 // function categoryChangeEvent: listens for change in category dropdown
 // and sets selected value to property category on inputObj
 function categoryChangeEvent(event) {
-    inputObj.category = parseInt(event.target.value);
+    inputObj.category = event.target.value;
 }
 
 
@@ -129,18 +129,85 @@ function calculateReadingTime() {
         //variable x which holds final reading time in minutes
         let x = 0;
 
-        console.log(inputObj);
-
-        // TODO: logic or algorithm for calculating reading time goes here
+        // logic or algorithm for calculating reading time goes here
         // inputObj.numberOfCharacters has number of characters (number data type)
-        // inputObj.schoolLevel has level of school (number data type)
-        // inputObj.category has category of reader (number data type)
+        // inputObj.schoolLevel has level of school (string data type)
+        // inputObj.category has category of reader (string data type)
 
 
         // example calculation
-        x = (inputObj.numberOfCharacters * inputObj.schoolLevel * inputObj.category);
-
-
+        //x = (inputObj.numberOfCharacters * inputObj.schoolLevel * inputObj.category);
+
+        let combination = inputObj.schoolLevel + '' + inputObj.category;
+        console.log(combination);
+        
+        let C = inputObj.numberOfCharacters;
+
+        switch (combination) {
+            case '11':
+                x = (0.7165 * C) + (172.8332 * 0.690) - 125.9143;
+                break;
+            case '12':
+                x = (0.3463 * C) + (185.4177 * 0.249) - 62.0577;
+                break;
+            case '13':
+                x = (0.4967 * C) + (223.3422 * 0.386) - 101.3559;
+                break;
+            case '14':
+                x = (0.6489 * C) + (195.7637 * 0.528) - 120.8358;
+                break;
+            case '15':
+                x = (0.7165 * C) + (172.8332 * 0.690) - 125.9143;
+                break;
+            case '21':
+                x = (0.5007 * C) + (703.686 * 0.505) - 358.5641;
+                break;
+            case '22':
+                x = (0.3135 * C) + (902.8845 * 0.30) - 285.855;
+                break;
+            case '23':
+                x = (0.3396 * C) + (956.5228 * 0.329) - 326.4739;
+                break;
+            case '24':
+                x = (0.3797 * C) + (857.5144 * 0.378) - 328.6899;
+                break;
+            case '25':
+                x = (0.5007 * C) + (703.686 * 0.505) - 358.5641;
+                break;
+            case '31':
+                x = (0.3524 * C) + (563.8412 * 0.42) - 196.8003;
+                break;
+            case '32':
+                x = (0.1941 * C) + (671.9616 * 0.204) - 131.0749;
+                break;
+            case '33':
+                x = (0.2432 * C) + (712.2978 * 0.263) - 177.29;
+                break;
+            case '34':
+                x = (0.2965 * C) + (628.5916 * 0.34) - 189.2485;
+                break;
+            case '35':
+                x = (0.3524 * C) + (563.8412 * 0.42) - 196.8003;
+                break;
+            case '41':
+                x = (0.3445 * C) + (1315.1448 * 0.357) - 459.0464;
+                break;
+            case '42':
+                x = (0.2003 * C) + (51421.0975 * 0.206) - 290.0477;
+                break;
+            case '43':
+                x = (0.2289 * C) + (1389.9964 * 0.24) - 325.0492;
+                break;
+            case '44':
+                x = (0.2842 * C) + (1471.1005 * 0.298) - 431.9652;
+                break;
+            case '45':
+                x = (0.3445 * C) + (1315.1448 * 0.357) - 459.0464;
+                break;
+            default:
+                x = 'error';
+                break;
+        }
 
         // set value to html element
         var s = document.getElementById('reading-time-element');