﻿var departmentCdd = new Object();

departmentCdd.init = function(osasto_id, index)
{
    if (typeof(index) == "undefined") index = 0;
    departmentCdd.refresh(index, osasto_id);
    if (((index + 1) < osastot_cdd.length) && osastot_cdd[index].isLoading) departmentCdd.init(osasto_id, index + 1);
}

departmentCdd.refresh = function(index, osasto_id)
{
    var elem = osastot_cdd[index].target;
    elem.onchange = function() {
        var elem_submit = osastot_cdd[index].submit;
        var selValue = this.options[this.selectedIndex].value;
        if (selValue == 0) {
            var p = osastot_cdd[index].parent;
            if (p) selValue = p.options[p.selectedIndex].value;
        }
        elem_submit.value = selValue;
        if ((index + 1) < osastot_cdd.length) departmentCdd.change(index + 1);
    }
    var knownCategoryValues = null;
    var category = null;
    
    switch (index)
    {
        case 0:
            knownCategoryValues = "Paaosasto:" + osasto_id;
            category = '';
            break;
        case 1:
            var ddl_paaosasto = osastot_cdd[0].target;
            if (typeof(osasto_id) == "undefined") knownCategoryValues = "Paaosasto:" + ddl_paaosasto.options[ddl_paaosasto.selectedIndex].value;
            else knownCategoryValues = "Paaosasto:" + osasto_id;
            category = "Osasto";
            break;
        case 2:
            var ddl_paaosasto = osastot_cdd[0].target;
            var ddl_osasto = osastot_cdd[1].target;
            if (typeof(osasto_id) == "undefined") knownCategoryValues = "Paaosasto:" + ddl_paaosasto.options[ddl_paaosasto.selectedIndex].value + "," + "Osasto:" + ddl_osasto.options[ddl_osasto.selectedIndex].value;
            else knownCategoryValues = "Paaosasto:" + osasto_id + "," + "Osasto:" + osasto_id;
            category = "Alaosasto";
            break;
    }
      
    elem.options.length = 0;

    osastot_cdd[index].isLoading = true;
    
    var option = new Option(osastot_cdd[index].loadingText, '');
    try {
        elem.add(option,null); // standards compliant
    } catch(ex) {
        elem.add(option); // IE only
    }
        
    eval("TSMarkkinat.wsAd." + osastot_cdd[index].method + "(knownCategoryValues, category, departmentCdd.ccdSucceededCallback, departmentCdd.ccdFailedCallback, osastot_cdd[index]);");
}

departmentCdd.clearAndDisable = function(index) {
    var elem = osastot_cdd[index].target;
    elem.options.length = 0;
    elem.disabled = true;
    
    if ((index + 1) < osastot_cdd.length) departmentCdd.clearAndDisable(index + 1);
}

departmentCdd.change = function(index)
{
    departmentCdd.refresh(index);
    if (((index + 1) < osastot_cdd.length) && osastot_cdd[index].isLoading) departmentCdd.change(index + 1);
}

departmentCdd.ccdSucceededCallback = function(result, uc)
{
    var elem = uc.target;
    
    if (result.length > 1) elem.disabled = false;
    else elem.disabled = true;

    elem.options.length = 0;

    for (i=0; i < result.length; i++)
    {
        var option = new Option(result[i].text, result[i].value);
        option.selected = result[i].isDefaultValue;
        
        try {
            elem.add(option,null); // standards compliant
        } catch(ex) {
            elem.add(option); // IE only
        }
    }
    uc.isLoading = false;
}

departmentCdd.ccdFailedCallback = function(error, uc) { alert("Virhe osastorakenteen haussa"); }

