<!DOCTYPE html>
<html>

  <head>
    <link rel="stylesheet" href="style.css">
  </head>

  <body>
    <h1>Todo List!</h1>
    <div>
      <button onclick="handlers.toggleAll()">Toggle All</button>
    </div>
    <div>
      <button onclick="handlers.addTodo()">Add</button>
      <input id="addTodoTextInput" type="text">
    </div>
    <div>
      <button onclick="handlers.changeTodo()">Change Todo</button>
      <input id="changeTodoPositionInput" type="number">
      <input id="changeTodoTextInput" type="text">
    </div>
    <div>
      <button onclick="handlers.deleteTodo()">Delete Todo</button>
      <input id="deleteTodoPositionInput" type="number">
    </div>
    <div>
      <button onclick="handlers.toggleCompleted()">Toggle Completed</button>
      <input id="toggleTodoAsCompleted" type="number">
    </div>
    
    <ul>
    </ul>
    
    <script src="script.js"></script>
  </body>

</html>
var todoList = {
  todos: [],

  addTodo: function(todoText){
    this.todos.push({
      todoText: todoText,
      completed: false
    });
  },
  changeTodo: function(position, todoText){
    this.todos[position].todoText = todoText;
  },
  deleteTodo: function(startPoint){
    this.todos.splice(startPoint,1);
  },
  toggleCompleted: function(position){
    var todo = this.todos[position];
    todo.completed = !todo.completed;
  },
  toggleAll: function(){
    var totalTodos = this.todos.length;
    var completedTodos = 0;
    
    for (var i = 0; i <totalTodos; i++){
      if (this.todos[i].completed === true){
        completedTodos++;
      }
    }
    
    if (completedTodos === totalTodos ){
      for (var i = 0; i<totalTodos; i++){
        this.todos[i].completed = false;
      }
    } else {
      for (var i = 0; i<totalTodos; i++){
        this.todos[i].completed = true;
      }
    }
  }
};


var handlers = {
  addTodo: function(){
    var newTodo = document.getElementById('addTodoTextInput');
    todoList.addTodo(newTodo.value);
    newTodo.value = '';
    view.displayTodos();
  },
  changeTodo: function(){
    var changeTodoPosition = document.getElementById('changeTodoPositionInput');
    var changeTodoText = document.getElementById('changeTodoTextInput');
    todoList.changeTodo(changeTodoPosition.valueAsNumber, changeTodoText.value);
    changeTodoPositionInput.value ='';
    changeTodoTextInput.value ='';
    view.displayTodos();
  },
  deleteTodo: function(){
    var deleteTodoPosition = document.getElementById('deleteTodoPositionInput');
    todoList.deleteTodo(deleteTodoPosition.valueAsNumber);
    deleteTodoPositionInput.value = '';
    view.displayTodos();
  },
  toggleCompleted: function(){
    var toggleTodoCompleted = document.getElementById('toggleTodoAsCompleted');
    todoList.toggleCompleted(toggleTodoCompleted.valueAsNumber);
    toggleTodoAsCompleted.value = '';
    view.displayTodos();
  },
  toggleAll: function(){
    todoList.toggleAll();
    view.displayTodos();
  }
};

var view = {
  displayTodos: function(){
    var todosUl = document.querySelector('ul');
    todosUl.innerHTML = '';
    for (var i = 0; i <todoList.todos.length; i++){
      var todoLi = document.createElement('li');
      var todo = todoList.todos[i];
      var todoTextWithCompletion = '';
      
      if (todo.completed === true){
        todoTextWithCompletion = '(x) ' + todo.todoText;
      } else {
        todoTextWithCompletion = '( ) ' + todo.todoText;
      }
      
      todoLi.textContent = todoTextWithCompletion;
      todosUl.appendChild(todoLi);
    }
  }
};













/* Styles go here */

.row {
  text-align: center;
}