function checkQuant(elem, maxQuant) {
    if(isNaN(elem.value) || elem.value < 0) {
        alert('Positive numeric value expected here.');
        elem.value = 0;
        elem.focus();
        return false;
    }
    
    if(maxQuant > 0 && elem.value > maxQuant) {
        alert('Sorry. Only ' + maxQuant + ' product(s) is available.');
        elem.value = maxQuant;
        elem.focus();
        return false;
    }
    
    return true;
}  

function AddItem(name, maxQuant) {
    t = eval("document.calc." + name);
    
    if(maxQuant <= 0 || t.value < maxQuant) {
        t.value++;
        return true;
    }
    
    return false;
}

function SubItem(name) {
    t = eval("document.calc." + name);
    
    if(t.value > 0) {
        t.value--;
        return true;
    }
    
    return false;
}

function addToBasket(url, productId, replaceQuant) {
    var f = document.calc;
    
    f.productId.value = productId;

    if(replaceQuant)
        f.replaceQuant.value = "1";
    else
        f.replaceQuant.value = "0";

    submit_form(url, true);
}

function calcProductPrice(pid, basket) {
    var f = document.calc;
    var b = basket && basket != "0" ? "_" + basket : "";

    priceObj = eval('f.price_' + pid + b);
    newPrice = parseFloat(priceObj.defaultValue);
    
    for(i = 0; i < f.elements.length; i++) {
        if(f.elements[i].name.indexOf('attr_' + pid + b) == 0) {
            newPrice += parseFloat(f.elements[i].prices[f.elements[i].selectedIndex]);
        }
    }

    var s = roundVal(newPrice, 2).toString();
    var idx = s.indexOf(".");
    
    if(idx == -1) {
        s += ".00";
    } else {
        for(var i = 0; i < 3 - (s.length - idx); i++) {
            s += "0";
        }
    }

    priceObj.value = s;

    var vatObj = eval('f.vat_' + pid + b);
    var priceObj = eval('f.priceInclVAT_' + pid + b);

    if(priceObj) {
        s = roundVal(roundVal(newPrice, 2) + roundVal(newPrice, 2) * vatObj.value / 100, 2).toString();
        idx = s.indexOf(".");
    
        if(idx == -1) {
            s += ".00";
        } else {
            for(var i = 0; i < 3 - (s.length - idx); i++) {
                s += "0";
            }
        }

        priceObj.value = s;
    }
}

/*
* Navigator test functions
*/
function isIE() {
    return navigatorName().toLowerCase().indexOf("microsoft internet explorer") != -1;
}

function isNN() {
    return navigatorName().toLowerCase().indexOf("netscape") != -1;
}

function navigatorName() {
    return navigator.appName;
}

function navigatorVersion() {
    return parseFloat(navigator.appVersion);
}