    var oHsOrt  = getElem('name','hzo',0);
    var oHsAng  = getElem('name','code',0);
    var oHsTime = getElem('name','start_datum_monthyear',0);

function HS_changeOrt() {
    var iIndex    = oHsOrt.selectedIndex;
    var sIndex    = oHsOrt.options[iIndex].value;
    var sValueI   = oHsAng.value;
    var sValueII  = oHsTime.value;
    var aKeysII   = HS_getTimes(sIndex,sValueI);
    var aKeysI    = HS_getAngs(sIndex,sValueII);
    
    HS_clearSelect(oHsAng);
    HS_clearSelect(oHsTime);
    
    oHsAng.options[0] = new Option('egal','');
    for (var i=0;i<aKeysI.length;i++) {
        oHsAng.options[(i+1)] = new Option(eval('sAng'+aKeysI[i]),aKeysI[i]);
    }
    oHsAng.value = sValueI;
    
    oHsTime.options[0] = new Option('egal','');
    for (var i=0;i<aKeysII.length;i++) {
        oHsTime.options[(i+1)] = new Option(eval('sTime'+aKeysII[i]),aKeysII[i]);
    }
    oHsTime.value = sValueII;
}

function HS_changeTime() {
    var iIndex    = oHsTime.selectedIndex;
    var sIndex    = oHsTime.options[iIndex].value;
    var sValueI   = oHsAng.value;
    var sValueII  = oHsOrt.value;
    var aKeysII   = HS_getAngs(sValueII,sIndex);
    var aKeysI    = HS_getOrt(sIndex,sValueI);
    
    HS_clearSelect(oHsAng);
    HS_clearSelect(oHsOrt);
    
    try {
        oHsAng.options[0] = new Option('egal','');
        for (var i=0;i<aKeysII.length;i++) {
            oHsAng.options[(i+1)] = new Option(eval('sAng'+aKeysII[i]),aKeysII[i]);
        }
        oHsAng.value = sValueI;
    } catch (e) {}
    
    oHsOrt.options[0] = new Option('egal','');
    for (var i=0;i<aKeysI.length;i++) {
        oHsOrt.options[(i+1)] = new Option(eval('sOrt'+aKeysI[i]),aKeysI[i]);
    }
    oHsOrt.value = sValueII;
}

function HS_changeAng() {
    var iIndex    = oHsAng.selectedIndex;
    var sIndex    = oHsAng.options[iIndex].value;
    var sValueI   = oHsTime.value;
    var sValueII  = oHsOrt.value;
    var aKeysII   = HS_getTimes(sValueII,sIndex);
    var aKeysI    = HS_getOrt(sValueI,sIndex);
    
    HS_clearSelect(oHsTime);
    HS_clearSelect(oHsOrt);
    
    try {
        oHsTime.options[0] = new Option('egal','');
        for (var i=0;i<aKeysII.length;i++) {
            oHsTime.options[(i+1)] = new Option(eval('sTime'+aKeysII[i]),aKeysII[i]);
        }
        oHsTime.value = sValueI;
    } catch (e) {}
    
    try {
        oHsOrt.options[0] = new Option('egal','');
        for (var i=0;i<aKeysI.length;i++) {
            oHsOrt.options[(i+1)] = new Option(eval('sOrt'+aKeysI[i]),aKeysI[i]);
        }
        oHsOrt.value = sValueII;
    } catch (e) {}
}

function HS_clearSelect(oObj) {
    oObj.options.length = 0;
}

function HS_getTimes(sOrt,sAng) {
    var aOpt = new Array();
    var aRet = new Array();
    if (sOrt=='' && sAng=='') {
        return aTime;
    } else {
        for (var i=0;i<aDep.length;i++) {
            aOpt = aDep[i].split('|');
            if (sOrt=='' && sAng!='') {
                if (aOpt[2]==sAng) {
                    if (!HS_isIn(aRet,aOpt[1])) {
                        aRet.push(aOpt[1]);
                    }
                }
                continue;
            }
            if (sOrt!='' && sAng=='') {
                if (aOpt[0]==sOrt) {
                    if (!HS_isIn(aRet,aOpt[1])) {
                        aRet.push(aOpt[1]);
                    }
                }
                continue;
            }
            if (sOrt!='' && sAng!='') {
                if (aOpt[0]==sOrt && aOpt[2]==sAng) {
                    if (!HS_isIn(aRet,aOpt[1])) {
                        aRet.push(aOpt[1]);
                    }
                }
                continue;
            }
        }
    }
    return aRet.sort();
}

function HS_getAngs(sOrt,sTime) {
    var aOpt = new Array();
    var aRet = new Array();
    if (sOrt=='' && sTime=='') {
        return aAng;
    } else {
        for (var i=0;i<aDep.length;i++) {
            aOpt = aDep[i].split('|');
            if (sOrt=='' && sTime!='') {
                if (aOpt[1]==sTime) {
                    if (!HS_isIn(aRet,aOpt[2])) {
                        aRet.push(aOpt[2]);
                    }
                }
            }
            if (sOrt!='' && sTime=='') {
                if (aOpt[0]==sOrt) {
                    if (!HS_isIn(aRet,aOpt[2])) {
                        aRet.push(aOpt[2]);
                    }
                }
            }
            if (sOrt!='' && sTime!='') {
                if (aOpt[0]==sOrt && aOpt[1]==sTime) {
                    if (!HS_isIn(aRet,aOpt[2])) {
                        aRet.push(aOpt[2]);
                    }
                }
            }
        }
    }
    return aRet.sort();   
}

function HS_isIn(aArr,sValue) {
    for (var i=0;i<aArr.length;i++) {
        if (aArr[i]==sValue) {
            return true;
        }
    }
    return false;
}

function HS_getOrt(sTime,sAng) {
    var aOpt = new Array();
    var aRet = new Array();
    if (sAng=='' && sTime=='') {
        return aOrt;
    } else {
        for (var i=0;i<aDep.length;i++) {
            aOpt = aDep[i].split('|');
            if (sAng=='' && sTime!='') {
                if (aOpt[1]==sTime) {
                    if (!HS_isIn(aRet,aOpt[0])) {
                        aRet.push(aOpt[0]);
                    }
                }
            }
            if (sAng!='' && sTime=='') {
                if (aOpt[2]==sAng) {
                    if (!HS_isIn(aRet,aOpt[0])) {
                        aRet.push(aOpt[0]);
                    }
                }
            }
            if (sAng!='' && sTime!='') {
                if (aOpt[2]==sAng && aOpt[1]==sTime) {
                    if (!HS_isIn(aRet,aOpt[0])) {
                        aRet.push(aOpt[0]);
                    };
                }
            }
        }
    }
    return aRet.sort();   
}

function HS_initSelect() {
    var sAng  = oHsAng.value;
    var sTime = oHsTime.value;
    var sOrt  = oHsOrt.value;
    if (sOrt!='') {
        HS_changeOrt();
    }
    if (sTime!='') {
        HS_changeTime();
    }
    if (sAng!='') {
        HS_changeAng();
    }
}

