function hc_handleLoad() {
    hc_handleChangedManuf();
}

function hc_checkSubmit() {
    var bProdSelected = false;
    var bOSSelected = false;
    var bNoVendorOrCardSelected = false;

    var prods = hc_getProductObjs();
    var oss = hc_getOSObjs();
    var vendors = hc_getManufacObj();
    var cards = hc_getCardObj();
    if ( prods != null && prods.length > 0 ) {
        for(var i=0; i<prods.length; i++) {
            if ( prods[i].checked ) {
                bProdSelected = true;
                break;
            }
        }
    }
    if ( oss != null && oss.length > 0 ) {
        for(var i=0; i<oss.length; i++) {
            if ( oss[i].checked ) {
                bOSSelected = true;
                break;
            }
        }
    }

    if(vendors.value == 0 && cards.value == 0){
        bNoVendorOrCardSelected = true;
    }

    var errMsg = "";
    if ( ! bProdSelected ) errMsg += g_hc_noProdSelected + "\n";
    if ( ! bOSSelected ) errMsg += g_hc_noOSSelected + "\n";
    if ( bNoVendorOrCardSelected ) errMsg += g_hc_noVendorOrCardSelected + "\n";

    if ( errMsg != "" ) {
        alert(errMsg);
        return false;
    } else {
        return true;
    }
}

function hc_toggleNodeState(obj, objTargetID) {
    var objTarget;
    if ( objTargetID != null ) {
        objTarget = document.getElementById(objTargetID);
    } else {
        objTarget = obj.parentNode.nextSibling;
    }
    if ( objTarget == null ) return;
    if ( obj.src.indexOf(g_HC_ICON_CLOSED) >= 0 ) {
        obj.src = g_HC_ICON_OPENED;
        hc_replaceClass(objTarget, "hidden", "shown");
    } else {
        obj.src = g_HC_ICON_CLOSED;
        hc_replaceClass(objTarget, "shown", "hidden");
    }
}

function hc_replaceClass(obj, oldClass, newClass) {
    var cs = hc_getClassNames(obj);
    for (var i=0; i<cs.length; i++) {
        if ( cs[i].toLowerCase() == oldClass.toLowerCase() ) cs[i] = newClass;
    }
    obj.className = cs.join(" ");
}

function hc_getClassNames(obj) {  //return an array containing all classNames of object
    if ( obj == null ) return;
    var cs = obj.className.split(" ");
    var i=0;
    while( i<cs.length) {
        if ( cs[i].replace(/ /g, "").length < 1 ) cs.splice(i,1);
        ++i;
    }
    return (cs);
}

function hc_getAllDetailNodes() {
    var results = document.getElementById("hc_results");
    var divs = results.getElementsByTagName("DIV");
    var nodes = new Array();
    for (var i=0; i<divs.length; i++) {
        var div = divs[i];
        var id = div.id;
        if ( id != null && id.indexOf("hc_dets_") == 0 ) nodes[nodes.length] = div;
    }
    return (nodes);
}

function hc_showAllDetails() {
    var nodes = hc_getAllDetailNodes();
    for (var i=0; i<nodes.length; i++) {
        hc_replaceClass(nodes[i], "hidden", "shown");
        hc_setObjSource(nodes[i].getAttribute("ctrl_id"), g_HC_ICON_OPENED);
    }
}

function hc_hideAllDetails() {
    var nodes = hc_getAllDetailNodes();
    for (var i=0; i<nodes.length; i++) {
        hc_replaceClass(nodes[i], "shown", "hidden");
        hc_setObjSource(nodes[i].getAttribute("ctrl_id"), g_HC_ICON_CLOSED);
    }
}

function hc_setObjSource(objID, src) {
    if ( objID == null ) return;
    var obj = document.getElementById(objID);
    if ( obj != null ) {
        obj.src = src;
    }
}

function hc_handleChangedManuf() {
    var objManuf = hc_getManufacObj();
    if ( objManuf.selectedIndex < 1 ) {
        hc_resetCardList();
    } else {
        hc_resetCardList(objManuf.options[objManuf.selectedIndex].value);
    }
}

function hc_resetCardList(mID) {
    var objCard = hc_getCardObj();
    var selectedCard = hc_getPrevSelectedCard();
    var includeAll = ( mID == null );
    objCard.options.length = 1;
    for (var i=0; i<hcCard.length; i++) {
        if ( includeAll || hcCard[i][1] == mID ) {
            var bSelected = ((hcCard[i][0] + "-" + hcCard[i][1]) == selectedCard);
            objCard.options.add( new Option(hcCard[i][2], hcCard[i][0] + "-" + hcCard[i][1], bSelected, bSelected) );
        }
    }
}

function hc_getForm() {
    return document.forms["form_hc"];
}

function hc_getManufacObj() {
    return hc_getForm()["manufac"];
}

function hc_getCardObj() {
    return hc_getForm()["card"];
}

function hc_getPrevSelectedCard() {
    return hc_getForm()["card_sel"].value;
}

function hc_getProductObjs() {
    return hc_getForm()["prod"];
}

function hc_getOSObjs() {
    return hc_getForm()["os"];
}
