function decimalSeparator() {
    if (exampleDecimalSeparator.indexOf(",") > 0) {
        return ",";
    } else {
        return ".";
    }
}

function calculateTotalAmount() {
    var form = document.forms['order'];
    form.totalAmount.value = "";
    form.totalAmountNet.value = "";
    form.vatAmount.value = "";
    form.quantityNet.value = "";
    form.quantityVat.value = "";

    document.getElementById('totalAmountSpan').innerHTML = "";

    if (quantityOk()) {
        document.getElementById('invoiceDiv').style.display = 'block';

        var calcPrice = /*roundHalfUp(*/price/*)*/;
        // var calcVat = parseInt(vat * 100) / 10000;
        var calcVat = parseInt(vat * 100) / 100;
        var tAN = quantity * calcPrice;
        // var tAV = roundHalfUp(quantity * calcVat * calcPrice);
        var tAV = roundHalfUp((quantity * calcVat * calcPrice) / 100);

        form.totalAmountNet.value = toDecimal(tAN);
        form.vatAmount.value = toDecimal(tAV);
        form.totalAmount.value = toDecimal(tAN + tAV);
        form.quantityNet.value = quantity;
        form.quantityVat.value = quantity;

        document.getElementById('totalAmountSpan').innerHTML = form.totalAmount.value;

        return true;
    }

    return false;
}

function roundHalfUp(value) {
    value = parseInt(value * 1000);
    value = Math.round(value / 10) / 100;

    return value;
}

function quantityOk(form) {
    var message = "";

    // FIXME: don't let this be a global value that is used in other functions
    // FIXME: (like calculateTotalAmount)
    quantity = document.forms['order'].quantity.value;

    if (quantity == "") {
        message = emptyQuantity;
    } else if (isNaN(quantity)) {
        message = nanQuantity;
    } else {
        quantity = parseInt(quantity);
        document.forms['order'].quantity.value = quantity;
        if (quantity < 1) {
            message = noPositiveQuantity;
        }
    }

    if (message == "") {
        document.getElementById('quantityText').style.color = 'black';
        document.getElementById('backToCatalog').style.display = 'none';

        return true;
    } else {
        document.getElementById('quantityText').style.color = 'red';
        document.getElementById('invoiceDiv').style.display = 'none';
        document.getElementById('backToCatalog').style.display = 'block';
        alert(message);

        return false;
    }
}

function toDecimal(amount) {
    var returnValue = '';

    amount *= 100;
    amount = Math.round(amount);
    amount += 'x';

    if (amount.length < 4) {
        returnValue = '0' + decimalSeparator();
    } else {
        returnValue = (amount.substring(0, (amount.length - 3)));
        returnValue += decimalSeparator();
    }

    if (amount.length == 2) {
        returnValue += '0';
        returnValue += (amount.substring(0, 1));
    } else {
        returnValue += (amount.substring((amount.length - 3), (amount.length - 1)));
    }

    return returnValue;
}

function changeStep(fromStep, toStep) {
    document.getElementById('step' + fromStep + 'Div').style.display = 'none';
    document.getElementById('step' + toStep + 'Div').style.display = 'block';
}

function differentiationStep() {
    document.getElementById('step' + fromStep + 'Div').style.display = 'none';
    document.getElementById('step' + toStep + 'Div').style.display = 'block';
}

function moneyOrderAgreementCheck(form) {
    if (form.moneyOrderAgreement.checked) {
        return true;
    } else {
        alert(moneyOrderAgreementWarning);
        return false;
    }
}

function toStep3() {
    //   document.getElementById('invoiceDiv').style.display = 'none';
    //   document.getElementById('quantityDiv').style.display = 'none';
    //   document.getElementById('personalDataDiv').style.display = 'block';
}

function backStep1() {
    document.getElementById('invoiceDiv').style.display = 'block';
    document.getElementById('quantityDiv').style.display = 'block';
    document.getElementById('personalDataDiv').style.display = 'none';
}

function toStep2() {
    /*
    document.getElementById('personalDataDiv').style.display = 'none';
    document.getElementById('paymentDiv').style.display = 'block';
    form = document.forms['order']
    for (i=0; i < form.paymentMethod.length; i++ ) {
        if (form.paymentMethod[i].checked) evaluate("document.getElementById('"+ form.paymentMethod[i].value +"DataDiv').style.display = 'block'")
    }
    if (step3ImmediateDisplayDiv) evaluate("document.getElementById('"+ immediateDisplayDiv +"DataDiv').style.display = 'block'")
    */
}

function backStep2() {
    document.getElementById('paymentDiv').style.display = 'none';
    document.getElementById('invoiceDataDiv').style.display = 'none';
    document.getElementById('payPalDataDiv').style.display = 'none';
    document.getElementById('creditcardDataDiv').style.display = 'none';
    document.getElementById('iDealDataDiv').style.display = 'none';
    document.getElementById('externalMoneyOrderDataDiv').style.display = 'none';
    document.getElementById('moneyOrderDataDiv').style.display = 'none';
    document.getElementById('moneyTransferDataDiv').style.display = 'none';
    document.getElementById('personalDataDiv').style.display = 'block';
}

function continuPaymentMethod(paymentMethod) {
    document.getElementById('invoiceDataDiv').style.display = 'none';
    document.getElementById('payPalDataDiv').style.display = 'none';
    document.getElementById('creditcardDataDiv').style.display = 'none';
    document.getElementById('iDealDataDiv').style.display = 'none';
    document.getElementById('externalMoneyOrderDataDiv').style.display = 'none';
    document.getElementById('moneyOrderDataDiv').style.display = 'none';
    document.getElementById('moneyTransferDataDiv').style.display = 'none';
    document.getElementById('backToStep1').style.display = 'none';
    document.getElementById(paymentMethod).style.display = 'block';
}

function emailCorrect() {
    var form = document.forms['order'];
    if (form.email.value != form.email2.value) {
        alert(emailNotTheSameWarning);
        return false;
    } else {
        return true;
    }
}

