/***************************************************************************

@name	 : Submit, Passing parameters to a server-side page.

@author  : Daniele Florio ( http://www.gizax.it )
@author  : Andrea Paiola  ( http://www.andreapaiola.it )
@version : 0.1

@uses    : Function that pass all parameters of a form to a back-end page
( perl, php, java, jsp, script shell etc. ) using AHAH interface.

****************************************************************************/
/*
* Modifica una stringa sostituendo i caratteri passati
* la var num_mod impostata ad 1 modifica solo una sola volta mentre impostata a 0
* modifica tutte le occrrenze
*/
var num_mod=0;
function mod_str(item, vec_car, new_car)
{
    var _ret="";
    var _flag=0;
    var _item=item.split("");
    for(var i=0;i<_item.length;i++)
    {
        if(!_flag&&_item[i]==vec_car)
        {
            _item[i]=new_car;
            _flag=num_mod;
        }
        _ret+=_item[i];
    }
    return(_ret);
}


/**
* parameters   = ID tabella
* parameters_2 = Div da chiudere
*/
function submit(file, metodo, target, parameters, parameters_2){

    var num = document.forms[1].elements.length;
    var url = "";

    //radio button
    var j = 0;
    var a = 0;
    var radio_buttons = new Array();
    var nome_buttons = new Array();
    var the_form = window.document.forms[1];
    for(var i=0; i<the_form.length; i++){
        var temp = the_form.elements[i].type;
        if ( (temp == "radio") && ( the_form.elements[i].checked) ) {
            nome_buttons[a] = the_form.elements[i].name;
            radio_buttons[j] = the_form.elements[i].value;
            j++;
            a++;
        }
    }
    for(var k = 0; k < radio_buttons.length; k++) {
        url += nome_buttons[k] + "=" + radio_buttons[k] + "&";
    }
    //checkbox
    var j = 0;
    var a = 0;
    var check_buttons = new Array();
    var nome_buttons = new Array();
    var the_form = window.document.forms[1];
    for(var i=0; i<the_form.length; i++){
        var temp = the_form.elements[i].type;
        if ( (temp == "checkbox") && ( the_form.elements[i].checked) ) {
            nome_buttons[a] = the_form.elements[i].name;
            check_buttons[j] = the_form.elements[i].value;
            j++;
            a++;
        }
    }
    for(var k = 0; k < check_buttons.length; k++) {
        url += nome_buttons[k] + "=" + check_buttons[k] + "&";
    }
    for (var i = 0; i < num; i++){

        var chiave = document.forms[1].elements[i].name;
        var valore = document.forms[1].elements[i].value;
        var tipo = document.forms[1].elements[i].type;

        if ( (tipo == "submit") || (tipo == "radio") || (tipo == "checkbox") ){}
        else {
            url += chiave + "=" + valore + "&";
        }
    }
    //var parameters = url;
    url = file + "?" + url;
    if (metodo == undefined) { metodo = "GET"; 	}

    /** Modifica la stringa url mettendo degli spazi nel carattere di % */
   url =  mod_str(url,"%"," ");

    if (metodo == "GET")
    {
        ahah(url, target, parameters, parameters_2, '', metodo);
    }
    else {
        ahah(file, target, '', parameters, parameters_2, metodo); 
    }



}



function ahah(url, target, parameters, parameters_2, delay, method) {

    if (method == undefined) {
        document.getElementById(target).innerHTML = '<img src="modules/mod_dsp/img/loading.gif" alt="" />';
        if (window.XMLHttpRequest) {
            req = new XMLHttpRequest();
        } else if (window.ActiveXObject) {
            req = new ActiveXObject("Microsoft.XMLHTTP");
        }
        if (req) {
            req.onreadystatechange = function() {
                ahahDone(url, target, delay, method, parameters, parameters_2);
            };
            req.open("GET", url, true);
            req.send("");
        }
    }

    if ( (method == "GET") || (method == "get") )
    {
        document.getElementById(target).innerHTML = '<img src="modules/mod_dsp/img/loading.gif" alt="" />';
        if (window.XMLHttpRequest) {
            req = new XMLHttpRequest();
        } else if (window.ActiveXObject) {
            req = new ActiveXObject("Microsoft.XMLHTTP");
        }
        if (req) {
            req.onreadystatechange = function() {
                ahahDone(url, target, delay, method, parameters, parameters_2);
            };
            req.open(method, url, true);
            req.send("");
        }

    }

    if ( (method == "POST") || (method == "post") )
    {
        document.getElementById(target).innerHTML = '<img src="modules/mod_dsp/img/loading.gif" alt="" />';
        if (window.XMLHttpRequest) {
            req = new XMLHttpRequest();
        } else if (window.ActiveXObject) {
            req = new ActiveXObject("Microsoft.XMLHTTP");
        }
        if (req) {
            req.onreadystatechange = function() {
                ahahDone(url, target, delay, method, parameters, parameters_2);
            };
            req.open(method, url, true);
            req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            req.send(parameters);
        }
    }
}
/**
* parameters   = ID tabella
* parameters_2 = Div da chiudere
*/
function ahahDone(url, target, delay, method, parameters, parameters_2) {
    
    if (document.getElementById(target).style.display == "none" ) {
                Effect.Appear(target, {duration:0.5});
        }
        
    if (req.readyState == 4) {
        if (req.status == 200) {

            /*if (document.getElementById(target).style.display == "none" ) {
            Effect.Appear(target, {duration:1.0});
            //setTimeout("Effect.Appear(target, {duration:1.0})",4000);

            } /*else {
            Effect.Fade(target, {duration:0.5});
            Effect.Appear(target, {duration:1.0});
            }
            //Effect.toggle(target,'appear');*/

            if ((parameters_2) && (document.getElementById(parameters_2)))
            {
                //alert(parameters_2)
                document.getElementById(parameters_2).style.display = "none";
            }

            
            document.getElementById(target).innerHTML = req.responseText;

            // parameters è l'id della tabella a cui applicare l'effetto solo se esiste
            if (parameters) {

                att_tab(parameters);
            }


        } else {
            document.getElementById(target).innerHTML="Errore nella risposta ajax:\n"+req.statusText;
        }
    }
}
