
function calc_step(n)
{
        var step = 1
        var ix = 0
        var steps = [ 2, 2.5, 2 ]
        while (8 * step <= n) {
                step *= steps[ix++ % 3]
        }
        return step
}

function on_down(node, limit)
{
        var value = parseInt(node.value)
        var step = calc_step(value - 1)
        value = Math.floor((value - 1) / step) * step
        if (value < limit) value = limit
        node.value = value
        check_range(node)
}

function on_up(node, limit)
{
        var value = parseInt(node.value)
        var step = calc_step(value)
        value = Math.floor((value + step) / step) * step
        if (value > limit) value = limit
        node.value = value
        check_range(node)
}

function check_range(node)
{
        value = parseInt(node.value)

        if (isNaN(value) || (value < 30) || (value > 100)) {
                node.className = "error"
        } else {
                node.className = null
        }
}

