//assign: evaluation 
var a = 5;
var b, c;

c = (b = (a * 5) / 2);
// b = (a * 5);
// b = (c = b/2);
// a = 5
// b = 12,5
// c = 12,5

// forgot one semicolon!
// for(let i = 0 i < 5; i++) {
//     console.log(i)
// }

// wrong usage of semicolon
//let a; b = 5;
//b = 5 c = b + 1;

//semicolon logic errors
// if(a === 5) {
//     console.log('FIVE!')
// }else; console.log('not five')

//Number: age
function getAge(age, currentYear = new Date().getFullYear()) {
    try { 
        age = Math.trunc(Number(age))
        if(!age || isNaN(age) || age > 200 || age < 0) {
            throw e
        } else {
            currentYear = currentYear - age
            return [currentYear, currentYear-1]
        }
    } catch(e) {
        return 0
    }
}

let year = getAge(prompt("input your age",""))
if(year) {
    alert(`Looks like you've been born in ${year[0]} or ${year[1]}`)
} else {
    alert('whoops, looks like invalid input value has been given!')
}

//Number: temperature
try {
    let grad = Number(prompt("Input temperature",""))
    let sys = prompt(`
        Type:
            F - to translate to Fahrenheit
            C - to translate to Celsius
    `)
    let res = getTemperature(grad, sys)
    if(res) {
        alert(`${grad}${sys.toLowerCase() === 'c'? '°F':'°C'} = ${res}${sys.toLowerCase() === 'c'? '°C':'°F'}`)
    } else {
        throw e;
    }
} catch(e) {
    alert('invalid input!')
}

function getTemperature(value, system="c") {
    if(isNaN(Number(value))) return false

    switch(system.toLowerCase()) {
        case 'f':
            return ((value * 9/5) + 32).toFixed(2)
        case 'c':
            return ((value - 32) * 5/9).toFixed(2)
        default:
            return false
    }
}

//Number: divide
function flooredDivide(num1, num2) {
    console.log(num1 / num2)
    return Math.floor(num1 / num2)
}

//Number: odd
function oddInformer() {
    let num = prompt("input a number:", "")
    if(isNaN(+num) || !num) {
        alert("not a number!!!")
    } else {
        if(num % 2 !== 0) {
            alert(`${num} is odd`)
        } else {
            alert(`${num} is even`)
        }
    }
}

//String: greeting
//greet user using alert() and prompt()
function greeting() {
    let name = prompt("Hey user, what's your name")
    alert(`Hello, ${name? name : 'Namless One...'}`)
}


//String: lexis 
function lexis(string, word) {
    if(string.indexOf(word) > 0) {
        return true
    } else {
        return false
    }
}

//confirm возвращает true либо false по нажатию на кнопки 'Ок' или 'Отмена' соответственно.

//Boolean
let quest1 = confirm('are you a human being?')
let quest2 = confirm('can you fly?')

if(quest1) {
    if(quest2) {
        alert('wow, you are Superman!')    
    } else {
        alert('Congrats, you are a real human being...')
    }
} else {
    if(quest2) {
        alert('so u must be a bird or smth :/')
    } else {
        alert('is machine spirit talking to me?')
    }
}
//Array: real
let inMyBag = ['shoes', 'shorts', 'shirt', 'laptop', 'charger', 'copybook', 'pen', 'water-bottle']
//Array: booleans
let answers = [quest1, quest2]

//Array: plus
let plus = [1, 2]
plus[2] = plus[0] + plus[1]
console.log(plus)

//Array: plus string
//возможность можно использовать что бы создавать новые строки из множества строчных значений
let plusStr = ['hello', 'My', 'World',]
plusStr[plusStr.length] = plusStr[0] + plusStr[1] + plusStr[2]
console.log(plusStr)

// Object: real
let keyboard = {
    model: 'sven slim 303',
    type: 'membrane',
    price: '5$'
}

let guitar = {
    type: 'electric',
    form: 'stratocaster',
    strings: 6,
    manufacturer: 'Fender'
}

//Object: change
keyboard.price = '10$'
guitar['form'] = 'telecaster'

// Comparison if
var age = +prompt("Сколько вам лет?","");
if (age < 18 && age > 0){
    alert("школьник");
} else {
    if (age >= 18 && age < 30){
        alert("молодежь");
    } else {
        if (age >= 30 && age < 45){
            alert("зрелость");
        } else {
            if (age >= 45 && age < 60){
                alert("закат");
            } else { 
                if (age >= 60 && age <= 150 ) {
                    alert("как пенсия?");
                } else {
                    alert("то ли киборг, то ли ошибка");
                }
            }
        }
    }
}

//Comparison: sizes
let rusSize = prompt('Введите НАШ формат размера для переводa на на Американский формат','')
let usSize = [
    {
        number: [6],
        men: 'S',
        woman:['XXS']
    },
    {
        number: [8, 10],
        men: 'M',
        woman:['XXS', 'XS']
    },
    {
        number: [12, 14],
        men: 'L',
        woman:['S', 'M']
    },
    {
        number: [16, 18],
        men: 'XL',
        woman:['L','XL']
    },
    {
        number: [20, 22],
        men: 'XXL',
        woman:['XXL', 'XXXL']
    },
]

if(+rusSize && +rusSize >= 40 && +rusSize <= 56) {
    rusSize = +rusSize
    let flag = 0
    if(rusSize % 2 !== 0) {
        rusSize--
        flag++
    }
    for(let i = 0; i < usSize.length; i++) {
        let temp = usSize[i].number.findIndex(element => { return element === (rusSize - 34)})
        if(temp >= 0) {
            alert(`
                ${rusSize+flag}-й размер в американском формате:
                ------------------------------------------
                    Размер: ${usSize[i].number[temp]}
                    Мужчины: ${usSize[i].men}
                    Женщины: ${usSize[i].woman[temp]}
                ------------------------------------------
            `)
            break;
        }
    }
} else {
    alert('Неправильный размер.')
}

//Ternary
alert(`${confirm('Вы мужчина?')? 'Вы мужчина.':'Вы женщина.'}`)

//flats
function flats(floors, flatsPerFloor, flatNumber) {
    let info = {
        flat: flatNumber,
        building: Math.ceil(flatNumber/(floors * flatsPerFloor)),
    }
    info.floor = flatNumber/flatsPerFloor > floors? Math.ceil(flatNumber/flatsPerFloor)-floors*(info.building-1) : Math.ceil(flatNumber/flatsPerFloor);
    return info;
}