                    
function goInStock(id) {
    var outOfStock = document.getElementById('outofstockline' + id);
    var inStock = document.getElementById('addtobasketline' + id);
    var outOfStockMessage = document.getElementById('outofstockmessage' + id);
    outOfStock.style.display = 'none';
    outOfStock.style.visibility = 'hidden';
    outOfStockMessage.style.display = 'none';
    outOfStockMessage.style.visibility = 'hidden';
    inStock.style.display = '';
    inStock.style.visibility = 'visible';
    
}

function goOutOfStock(id) {
    var outOfStock = document.getElementById('outofstockline' + id);
    var inStock = document.getElementById('addtobasketline' + id);
    var outOfStockMessage = document.getElementById('outofstockmessage' + id);
    inStock.style.display = 'none';
    inStock.style.visibility = 'hidden';
    outOfStockMessage.style.display = '';
    outOfStockMessage.style.visibility = 'visible';
    outOfStock.style.display = '';
    outOfStock.style.visibility = 'visible';
}
                                
function ExtractNum(stringNo) 
{
    var origStringNo = stringNo
    //We're doing string functions to make sure that we're getting the price after "(+" of each option labels
    if (stringNo.lastIndexOf("(+") >= 0)
    {
        stringNo = stringNo.slice(stringNo.lastIndexOf("(+"),stringNo.length);    
    }

    if (origStringNo != stringNo)
    {

    var parsedNo = ""; 
    for(var n=0; n<stringNo.length; n++) 
    {
        var i = stringNo.substring(n,n+1);
        if(i=="1"||i=="2"||i=="3"||i=="4"||i=="5"||i=="6"||i=="7"||i=="8"||i=="9"||i=="0"||i==".")
        parsedNo += i; 
    } 
    if (parsedNo.length > 0) { 
    return parsedNo;} else {return 0;}
    }
     else
     {
    return 0;
     }
}
    

function checkStock(id,outOfStockItems) {
    // Build up out options selections
    var txtPrice = document.getElementById('txtPrice' + id);
    var origPrice = document.getElementById('origPrice' + id);
    var txtPriceEx = document.getElementById('txtPriceEx' +id);
    
    var selections = new Array();
    var selectionCount = 0;
    var numOptionsTotal = 0;
    for (i=0;i<document.getElementById('options' + id).elements.length;i++) {
        var element = document.getElementById('options' + id).elements[i];
        if(element.name.substring(0,6)=='OPT_ID') {
            switch(element.type)
            {
                case 'checkbox':
                    // is this checkbox selected?
                    if(element.checked == true) {
                        // use this ID
                        selections[selectionCount]=element.value;
                        selectionCount++;
                                                
                        // find all labels
                        var labels = document.getElementsByTagName('label');
                        // loop through all label elements
                            for (var m = 0; m < labels.length; m++) {
                                var label = labels[m];
                                var labelFor = label.htmlFor;                   
                                if (labelFor == element.id) {
                                        numOptionsTotal = numOptionsTotal + parseFloat(ExtractNum(label.innerHTML));
                                }                           
                            }
                    } else {
                        // otherwise we have to get out the nocheckvalue
                        var nocheck = document.getElementById('options' + id).elements['NOCHECK_' + element.name]
                        selections[selectionCount]=nocheck.value;
                        selectionCount++;
                    }
                    break;
                    
                case 'radio':
                    if(element.checked == true) {
                        selections[selectionCount]=element.value;
                        selectionCount++;
                        // find all labels
                        var labels = document.getElementsByTagName('label');
                        // loop through all label elements
                            for (var m = 0; m < labels.length; m++) {
                                var label = labels[m];
                                var labelFor = label.htmlFor;                   
                                if (labelFor == element.id) {
                                        numOptionsTotal = numOptionsTotal + parseFloat(ExtractNum(label.innerHTML));
                                }                           
                            }
                    }
                    break;
                    
                case 'select-one':
                    var Index = element.selectedIndex;
                    selections[selectionCount]=element.value;
                    selectionCount++;
                    numOptionsTotal = numOptionsTotal + parseFloat(ExtractNum(element.options[Index].text));
                    break;

                default:
                    break;
                    
            }
            
        }

    }
    
    txtPrice.value=( parseFloat(origPrice.value) +  parseFloat(numOptionsTotal)).toFixed(2);
    if (txtPriceEx != null){
        var numTax = document.getElementById('numTax' + id);
        txtPriceEx.value = (txtPrice.value * numTax.value).toFixed(2);
    }
    
    selections = (selections.sort());
    var selection = selections.join('-');
    var isOutOfStock = false;
    
    // Does this combination exist in out outofstock array?
    for(i=0; i<outOfStockItems.length; i++) {
        if(outOfStockItems[i]==selection) {
            isOutOfStock = true;
            break;
        }
    }
    
    if(isOutOfStock) {
        goOutOfStock(id);
    } else {
        goInStock(id);
    }
}
                        