var dom_get = YAHOO.util.Dom.get;

function dom_select_get_value(id){
    return dom_get(id).options[ dom_get(id).selectedIndex ].value;
}
function ajax_get(url, callback) {
    var clb = {
        success: callback,
        failure: function(eventType, args) { 
            alert('richiesta fallita');
        }
    //scope: AjaxObject
    };
    YAHOO.util.Connect.asyncRequest('GET', url, clb, null);
}
function ajax_post(url, data, callback) {
    var postData = null;
    var clb = {
        success: callback,
        failure: function(eventType, args) {
            alert('richiesta fallita');
        }
    };

    if( typeof(data) === 'string' ){
        var formObject = document.getElementById( data );
        YAHOO.util.Connect.setForm(formObject);
    } else if( typeof(data) === 'object' ){ // distinguere se si tratta dell'oggetto HTML form
        postData = data;
    }
    return YAHOO.util.Connect.asyncRequest('POST', url, clb, postData);
}

/*
// array array_merge ( array array1 [, array array2 [, array ...]] )
// array_merge() fonde gli elementi di uno o più array in modo che i valori di un
// array siano accodati a quelli dell'array precedente. Restituisce l'array risultante.
function array_merge(r){
    if( is_array(r)){
        for (var i = 1; i < arguments.length; i++){
            for(var j=0; j<count(arguments[i]); j++){
                r[count(r)] = arguments[i][j];
            }
        }
    } else if( is_object(r)){
        for (var i = 1; i < arguments.length; i++){
            for(k in arguments[i]){
                r[k] = arguments[i][k];
            }
        }
    }
    return r;
}*/


function dom_select_onchange_update(select_id, url, updatable_select_id, popt){
    // parametri passati
    var popt = popt || {};
    // parametri di default
    var defaults = {
        'onChange': function() {
            var sUrl = opt.doCalcUrl();
            ajax_get(sUrl, opt.onRequestOk);
        },
        'onAfterChange': function(){},
        'onRequestOk': function(o){
            dom_get( updatable_select_id ).innerHTML = o.responseText;
        },
        'doCalcUrl': function(){
            return url+dom_select_get_value(select_id);
        }
    };
    // parametri finali
    var opt = {};
    // copia tutti i parametri passati
    for( var k in popt){
        opt[k] = popt[k] || defaults[k];
    }
    // copia ogni altro ulteriore parametro nei defaults
    for( var k in defaults){
        if( ! opt[k] ){
            opt[k] = popt[k] || defaults[k];
        }
    }

    //alert( YAHOO.lang.dump(opt) );

    YAHOO.util.Event.on(select_id, 'change', opt.onChange );
}
