function transmitStatus(object, mnemonic) {
    if (object.checked)
        addToCart([mnemonic]);
    else
        removeFromCart(mnemonic);


}

function transmitRelatedFlagsStatus(object, flagMnemonic, relatedFlagMnemonics) {
    relatedFlagMnemonics.push(flagMnemonic);
    if (object.checked) {
        addToCart(relatedFlagMnemonics);
        checkAllVars(relatedFlagMnemonics);
    } else {
        removeFromCart(relatedFlagMnemonics);
        uncheckAllVars(relatedFlagMnemonics);
    }
}

function selectRelatedFlags(object, flagMnemonic, relatedFlagMnemonics) {
    if (relatedFlagMnemonics.length > 0)
        transmitRelatedFlagsStatus(object, flagMnemonic, relatedFlagMnemonics);
    else
        transmitStatus(object, flagMnemonic);

}

function checkAllVars(mnemonics) {
    for (i = 0; i < mnemonics.length; i++) $(mnemonics[i]).checked = true;
}

function uncheckAllVars(mnemonics) {
    for (i = 0; i < mnemonics.length; i++) $(mnemonics[i]).checked = false;
}

function getContextRoot() {
    re = /(\/[^\/]+\/)/;
    found = window.location.pathname.match(re);
    return found[0];
}

function addToCart(mnemonics)  {
    new Ajax.Request(getContextRoot() + 'extract_requests/add_variables',
    {
        method:'post',
        parameters: {'variable[]': mnemonics},
        onFailure: function() {
            alert('Unable to add this variable to your selection')
        }
    });
}

function addButtonPushed(mnemonic) {
    addToCart([mnemonic]);
    var addButton = document.getElementById('addButton');
    if (addButton != null)
        addButton.style.display = 'none';
    var removeButton = document.getElementById('removeButton');
    if (removeButton)
        removeButton.style.display = '';
}

function removeFromCart(mnemonics) {

    new Ajax.Request(getContextRoot() + 'extract_requests/remove_variables',
    {
        method:'post',
        parameters: {'variable[]': mnemonics},
        onFailure: function() {
            alert('Unable to remove this variable to your selection')
        }
    });
}

function removeButtonPushed(mnemonic) {
    removeFromCart([mnemonic]);
    var addButton = document.getElementById('addButton');
    if (addButton != null)
        addButton.style.display = '';
    var removeButton = document.getElementById('removeButton');
    if (removeButton)
        removeButton.style.display = 'none';

}

