import { getDeviceState } from '../core'

function fourColumRow (gallery, entries, i) {
  const entry1 = document.createElement('div')
  entry1.classList.add('col-lg-6', 'm-0', 'p-0')
  entry1.appendChild(entries[i].cloneNode(true))
  entry1.children[0].classList.add('img-type-1')
  gallery.appendChild(entry1)
  i++

  const entry2 = document.createElement('div')
  entry2.classList.add('col-lg-3', 'm-0', 'p-0')
  entry2.appendChild(entries[i].cloneNode(true))
  entry2.children[0].classList.add('img-type-1')
  gallery.appendChild(entry2)
  i++

  const entry3 = document.createElement('div')
  entry3.classList.add('col-lg-3', 'm-0', 'p-0')
  entry3.appendChild(entries[i].cloneNode(true))
  entry3.children[0].classList.add('img-type-2')
  i++
  entry3.appendChild(entries[i].cloneNode(true))
  entry3.children[1].classList.add('img-type-2')
  gallery.appendChild(entry3)
  i++
}

function fourColumnReversedRow (gallery, entries, i) {
  const entry1 = document.createElement('div')
  entry1.classList.add('col-lg-3', 'm-0', 'p-0')
  entry1.appendChild(entries[i].cloneNode(true))
  entry1.children[0].classList.add('img-type-2')
  i++
  entry1.appendChild(entries[i].cloneNode(true))
  entry1.children[1].classList.add('img-type-2')
  gallery.appendChild(entry1)
  i++

  const entry2 = document.createElement('div')
  entry2.classList.add('col-lg-3', 'm-0', 'p-0')
  entry2.appendChild(entries[i].cloneNode(true))
  entry2.children[0].classList.add('img-type-1')
  gallery.appendChild(entry2)
  i++

  const entry3 = document.createElement('div')
  entry3.classList.add('col-lg-6', 'm-0', 'p-0')
  entry3.appendChild(entries[i].cloneNode(true))
  entry3.children[0].classList.add('img-type-1')
  gallery.appendChild(entry3)
  i++
}

function threeColumnRow (gallery, entries, i) {
  console.log(i)
  const entry1 = document.createElement('div')
  entry1.classList.add('col-lg-6', 'col-md-6', 'm-0', 'p-0')
  entry1.appendChild(entries[i].cloneNode(true))
  entry1.children[0].classList.add('img-type-1')
  gallery.appendChild(entry1)
  i++

  const entry2 = document.createElement('div')
  entry2.classList.add('col-lg-3', 'col-md-3', 'm-0', 'p-0')
  entry2.appendChild(entries[i].cloneNode(true))
  entry2.children[0].classList.add('img-type-1')
  gallery.appendChild(entry2)
  i++

  const entry3 = document.createElement('div')
  entry3.classList.add('col-lg-3', 'col-md-3', 'm-0', 'p-0')
  entry3.appendChild(entries[i].cloneNode(true))
  entry3.children[0].classList.add('img-type-1')
  gallery.appendChild(entry3)
  i++
}

function threeColumnReversedRow (gallery, entries, i) {
  const entry1 = document.createElement('div')
  entry1.classList.add('col-lg-3', 'col-md-3', 'm-0', 'p-0')
  entry1.appendChild(entries[i].cloneNode(true))
  entry1.children[0].classList.add('img-type-1')
  gallery.appendChild(entry1)
  i++

  const entry2 = document.createElement('div')
  entry2.classList.add('col-lg-3', 'col-md-3', 'm-0', 'p-0')
  entry2.appendChild(entries[i].cloneNode(true))
  entry2.children[0].classList.add('img-type-1')
  gallery.appendChild(entry2)
  i++

  const entry3 = document.createElement('div')
  entry3.classList.add('col-lg-6', 'col-md-3', 'm-0', 'p-0')
  entry3.appendChild(entries[i].cloneNode(true))
  entry3.children[0].classList.add('img-type-1')
  gallery.appendChild(entry3)
  i++
}

function twoColumnRow (gallery, entries, i) {
  const entry1 = document.createElement('div')
  entry1.classList.add('col-6', 'm-0', 'p-0')
  entry1.appendChild(entries[i].cloneNode(true))
  entry1.children[0].classList.add('img-type-1')
  gallery.appendChild(entry1)
  i++

  const entry2 = document.createElement('div')
  entry2.classList.add('col-6', 'm-0', 'p-0')
  entry2.appendChild(entries[i].cloneNode(true))
  entry2.children[0].classList.add('img-type-1')
  gallery.appendChild(entry2)
  i++
}

function singleColumnRow (gallery, entries, i) {
  const entry1 = document.createElement('div')
  entry1.classList.add('col-12', 'm-0', 'p-0')
  entry1.appendChild(entries[i].cloneNode(true))
  entry1.children[0].classList.add('img-type-1')
  gallery.appendChild(entry1)
  i++
}

function showAchievements () {
  const { isLaptop, isTablet } = getDeviceState()
  // show achievements from achievements-holder div
  const gallery = document.getElementById('gallery')
  if (gallery == null) {
    return
  }
  gallery.innerHTML = ''
  const entries = document.getElementById('achievements-holder').children
  let len = entries.length
  let i = 0
  let rowNumber = 1
  while (i < len) {
    if (isLaptop) {
      if (i + 4 <= len) {
        if (rowNumber % 2) {
          fourColumRow(gallery, entries, i)
        } else {
          fourColumnReversedRow(gallery, entries, i)
        }
        i += 4
      } else if (i + 3 <= len) {
        if (rowNumber % 2) {
          threeColumnRow(gallery, entries, i)
        } else {
          threeColumnReversedRow(gallery, entries, i)
        }
        i += 3
      } else if (i + 2 <= len) {
        twoColumnRow(gallery, entries, i)
        i += 2
      } else {
        singleColumnRow(gallery, entries, i)
        i++
      }
    } else if (isTablet) {
      if (i + 2 <= len) {
        twoColumnRow(gallery, entries, i)
        i += 2
      } else {
        singleColumnRow(gallery, entries, i)
        i++
      }
    } else {
      singleColumnRow(gallery, entries, i)
      i++
    }
    rowNumber++
  }

  // show full image on click
  const elements = document.getElementsByClassName('achievement-entry')
  len = elements.length
  for (let i = 0; i < len; i++) {
    elements[i].onclick = function () {
      const achievements = document.getElementsByClassName('achievement-entry')
      const len2 = achievements.length
      for (let j = 0; j < len2; j++) {
        achievements[j].classList.toggle('hidden')
      }
      this.classList.toggle('achievement-details')
      this.classList.toggle('hidden')
      this.parentElement.classList.toggle('col-lg-12')
      this.parentElement.classList.toggle('col-md-12')
      this.parentElement.classList.toggle('col-sm-12')
      if (this.children.SmallImage.hasAttribute('active')) {
        const mainLogo = this.children.LargeImage.getAttribute('Style')
        this.children.LargeImage.setAttribute('active', true)
        this.children.SmallImage.removeAttribute('active')

        this.setAttribute('Style', mainLogo)
      } else {
        const mainLogo = this.children.SmallImage.getAttribute('Style')
        this.children.SmallImage.setAttribute('active', true)
        this.children.LargeImage.removeAttribute('active')
        this.setAttribute('Style', mainLogo)
      }

      if (this.children.caption !== undefined) {
        this.children.caption.classList.toggle('hidden')
      }
      if (this.children['enlarge-icon'] !== undefined) {
        this.getElementsByClassName('fa-xmark')[0].classList.toggle('hidden')
        this.getElementsByClassName('fa-magnifying-glass-plus')[0].classList.toggle('hidden')
      }
      if (this.children['achievement-title'] !== undefined) {
        this.children['achievement-title'].classList.toggle('hidden')
      }
    }
  }
}

['DOMContentLoaded', 'resize'].forEach((event) =>
  document.addEventListener(event, showAchievements))
