﻿var locationsCdd = new Object();

locationsCdd.init = function(sijainti_id, index)
{
    if (typeof(index) == "undefined") index = 0;
    locationsCdd.refresh(index, sijainti_id);
    if (((index + 1) < sijainnit_cdd.length) && sijainnit_cdd[index].isLoading) locationsCdd.init(sijainti_id, index + 1);
}

locationsCdd.refresh = function(index, sijainti_id)
{
    var elem = sijainnit_cdd[index].target;
    elem.onchange = function() {
        var elem_submit = sijainnit_cdd[index].submit;
        var selValue = this.options[this.selectedIndex].value;
        if (selValue == 0) {
            var p = sijainnit_cdd[index].parent;
            if (p) selValue = p.options[p.selectedIndex].value;
        }
        elem_submit.value = selValue;
        if ((index + 1) < sijainnit_cdd.length) locationsCdd.change(index + 1);
    }
    var knownCategoryValues = null;
    var category = null;
    
    switch (index)
    {
        case 0:
            knownCategoryValues = "Sijainti:" + sijainti_id;
            category = '';
            break;
        case 1:
            var ddl_paaosasto = sijainnit_cdd[0].target;
            if (typeof(sijainti_id) == "undefined") knownCategoryValues = "Sijainti:" + ddl_paaosasto.options[ddl_paaosasto.selectedIndex].value;
            else knownCategoryValues = "Sijainti:" + sijainti_id;
            category = "Paikkakunta";
            break;
    }
      
    elem.options.length = 0;

    sijainnit_cdd[index].isLoading = true;
    
    var option = new Option(sijainnit_cdd[index].loadingText, '');
    try {
        elem.add(option,null); // standards compliant
    } catch(ex) {
        elem.add(option); // IE only
    }
        
    eval("TSMarkkinat.wsAd." + sijainnit_cdd[index].method + "(knownCategoryValues, category, locationsCdd.ccdSucceededCallback, locationsCdd.ccdFailedCallback, sijainnit_cdd[index]);");
}

locationsCdd.clearAndDisable = function(index) {
    var elem = sijainnit_cdd[index].target;
    elem.options.length = 0;
    elem.disabled = true;
    
    if ((index + 1) < sijainnit_cdd.length) locationsCdd.clearAndDisable(index + 1);
}

locationsCdd.change = function(index)
{
    locationsCdd.refresh(index);
    if (((index + 1) < sijainnit_cdd.length) && sijainnit_cdd[index].isLoading) locationsCdd.change(index + 1);
}

locationsCdd.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;
}

locationsCdd.ccdFailedCallback = function(error, uc) { alert("Virhe sijaintirakenteen haussa"); }