function selectAllOptions(sid) {
    selectObj = document.getElementById(sid)
    for (i = 0; i < selectObj.length; i++){
        selectObj.options[i].selected = true ;
    }
}

function deselectAllOptions(sid) {
    selectObj = document.getElementById(sid)
    for (i = 0; i < selectObj.length; i++){
        selectObj.options[i].selected = false ;
    }
}

function updateAnchorMsg( sid, aid, selectAllMsg, deselectAllMsg) {

    var selectAllMsg = selectAllMsg  || '(select all)';
    var deselectAllMsg = deselectAllMsg  || '(deselect all)';
    var cant = 0;

    selectObj = document.getElementById(sid)

    for(i=0; i < selectObj.length; i++) {
        if (selectObj.options[i].selected == true)
        cant++;
    }
    selectObj.allOptionsSelected = (cant == selectObj.length) ? true : false;

    aobj = document.getElementById(aid)
    if (selectObj.allOptionsSelected == false) {
        aobj.textContent = selectAllMsg;
    } else {
        aobj.textContent = deselectAllMsg;
    }

}

function toggleSelectOptions(sid, aid, selectAllMsg, deselectAllMsg) {

    selectObj = document.getElementById(sid)
    if (selectObj.allOptionsSelected==null) {
        cant = 0;
        for(i=0; i < selectObj.length; i++) {
            if (selectObj.options[i].selected == true)
                cant++;
        }
        selectObj.allOptionsSelected = (cant == selectObj.length) ? true : false;

    }
    /* create and use a property on the input select itself so you don't have to 
     * use a global variable.
     */
    if (selectObj.allOptionsSelected == false) {
        selectObj.allOptionsSelected = true;
        selectAllOptions(sid);
    } else {
        selectObj.allOptionsSelected = false;
        deselectAllOptions(sid);
    }
    updateAnchorMsg( sid, aid, selectAllMsg, deselectAllMsg)
}

function resetForm(formid) {
/* reset all the input in a form, using the magic of jQuery :) */
    $(':input', formid)
    .not(':button, :submit, :reset, :hidden')
    .val('')
    .removeAttr('checked')
    .removeAttr('selected');
}

