/**
 * Opdater prisfelterne.
 */
function update_price() {
    persons = document.getElementById('input_antal_mennesker').value;
    hours = document.getElementById('input_antal_timer').value;
    hour_price = hourly_price(persons);

    reset_fields();
    
    if(!is_int(persons) || !is_int(hours) || persons < 1 || hours < 1) {
        error("Timeantal og personantal skal angives som et positivt heltal.");
        return;
    }

    if(hour_price == 0) {
        error("For fester med f&aelig;rre end 50 g&aelig;ster skal du kontakte os for at f&aring; en pris.");
        return;
    }
    
    price = hour_price * persons * hours; // ekskl. moms
    
    if(price < 10000) {
        price = 10000;
        notice("Minimumsprisen er 10.000,00 kr.")
    }
    
    document.getElementById('venstre_pris').style.visibility = 'visible';
    document.getElementById('hoejre_pris').style.visibility = 'visible';
    document.getElementById('pris_med_moms').innerHTML = format_price(price * 1.25) + " kr.";
    document.getElementById('pris_uden_moms').innerHTML = format_price(price) + " kr.";
    
}

/**
 * Prisen formateret med punktummer imellem tusinderne og komma
 * mellem kroner og &oslash;re.
 */
function format_price(price) {
    thousand_separator = '.';
    decimal_separator = ',';
    
    function add_dots(dotted, nondotted) {
        if(nondotted.length <= 3) 
            return dotted + nondotted;
        
        return add_dots(dotted + nondotted.substring(0, 3) + thousand_separator, nondotted.substring(3));
    }

    kroner = new String(Math.floor(price));
    oere = new String((price - kroner) * 100);
    if(oere == '0')
        oere = '00';
    
    kroner = reverse_string(kroner);
    kroner = add_dots("", kroner);
    kroner = reverse_string(kroner);
    
    out = kroner + decimal_separator + oere;
        
    return out;
}

function reverse_string(string) {
    return string.split("").reverse().join("");
}

function notice(msg) {
    document.getElementById('udregner_beskeder').innerHTML = msg;
}

function error(msg) {
    reset_fields()
    notice(msg);
    document.getElementById('venstre_pris').style.visibility = 'hidden';
    document.getElementById('hoejre_pris').style.visibility = 'hidden';
}

function is_int(x) {
    y = parseInt(x);
    
    if (isNaN(y)) 
        return false;
    
    return x == y && x.toString() == y.toString();
}

function reset_fields() {
    document.getElementById('pris_med_moms').innerHTML = "";
    document.getElementById('pris_uden_moms').innerHTML = "";
    document.getElementById('udregner_beskeder').innerHTML = "";
}

/**  
 * Pris/time ekskl. moms. Hvis det angivne antal mennesker er for lavt
 * returneres 0.
 
 0-50 Ring for pris
 50-100 43 kr.
 100-200 42 kr.
 200-300 41 kr.
 300-400 40 kr.
 400-500 38 kr.
 500-600 37 kr.
 600-700 36 kr.
 700-800 35 kr.
 800-900 34 kr.
 900-1000 32 kr.
 1000+     31 kr.
 */
function hourly_price(persons) {
    if(persons >= 1000)         hour_price = 32;
    else if(persons >= 900)     hour_price = 33;
    else if(persons >= 800)     hour_price = 34;
    else if(persons >= 700)     hour_price = 35;
    else if(persons >= 600)     hour_price = 36;
    else if(persons >= 500)     hour_price = 37;
    else if(persons >= 400)     hour_price = 38;
    else if(persons >= 300)     hour_price = 40;
    else if(persons >= 200)     hour_price = 41;
    else if(persons >= 100)     hour_price = 42;
    else if(persons >= 50)      hour_price = 43;
    else
        hour_price = 0;
    
    return hour_price;
}