

function VIGO_addslashes(str) {
    if((typeof str)!='string') return ;
    str=str.replace(/\\/g,'\\\\');
    str=str.replace(/\'/g,'\\\'');
    str=str.replace(/\"/g,'\\"');
    str=str.replace(/\n/g,'\\n');
    str=str.replace(/\r/g,'\\r');
    str=str.replace(/\0/g,'\\0');
    //alert(str);
    return str;
}


//var prova = 'fasdfaï¿½ " s\'dfdsa';
//alert(addslashes(prova ));
function VIGO_stripslashes(str) {
    if((typeof str)!='string') return ;
    str=str.replace(/\\'/g,'\'');
    str=str.replace(/\\"/g,'"');
    str=str.replace(/\\0/g,'\0');
    str=str.replace(/\\n/g,'\n');
    str=str.replace(/\\r/g,'\r');
    str=str.replace(/\\\\/g,'\\');
    return str;
}

function estrai_string(stringa,inizio,fine,includi_bordi){

    var pos_start = stringa.indexOf(inizio);
    if(pos_start>=0){
        if(includi_bordi!=1) pos_start+=inizio.length;
    }else{
        return "";
    }
    var pos_end = stringa.lastIndexOf(fine);

    if(pos_end >=0 && pos_end >=pos_start){
        if(includi_bordi==1) pos_end+=fine.length;
    }else{
        return "";
    }
    var ritorno = stringa.substr(pos_start,(pos_end-pos_start));
    return ritorno ;
}

function unserialize_VIGO_a(){
    Sd = 0;
    unserialize_VIGO_GLOBALEVAL = new Array();
    unserialize_VIGO_GLOBALEVAL.length = 0;
    unserialize_VIGO_tmp_OKFUNCT = 1;
    unserialize_VIGO_tmp_STR = '';
    $.trim(to_U);
    unserialize_VIGO_b();
    unserialize_VIGO_c();
}
function unserialize_VIGO_c(){

    unserialize_VIGO_tmp_STR=unserialize_VIGO_GLOBALEVAL.join('');
    //document.writeln(unserialize_VIGO_tmp_STR);
    var unserialize_VIGO_stampa_dynamic_f = new Function('   try{ eval( unserialize_VIGO_tmp_STR ); }catch(e){  unserialize_VIGO_tmp_OKFUNCT = 0;  alert("Hitats: error unserializing array, \\n please retry " + e.message  ); ;}');
    //document.writeln(\'<textarea  rows="200" name="S1" cols="400">\'+unserialize_VIGO_tmp_STR+\'</textarea>\');
    unserialize_VIGO_stampa_dynamic_f();

}
function unserialize_VIGO_b(){
    var level=0,arrlen=new Array(),del=0,final=new Array(),key=new Array(),retSTR = '';
    var _GLOBAL_contatore4 = 0;
    var s_SL = 0 ;
    var s_SL1 = 0 ;
    while(1){
        switch(to_U.substr((Sd)+0,1)){

            /*case 'N':
                del = 2;
                ret = null;
                retSTR ='null';
                Sd+=del;
                //document.writeln('n= ,' + Sd);
                break;
                */
            case 'N':

                del = to_U.indexOf(';',(Sd)) +1;
                ret = 0;
                retSTR ='""';
                Sd=del;
                // document.writeln('del='+ del +  '  ,' + Sd);
                break;
            case 'b':
                del = to_U.indexOf(';',(Sd))+1;
                ret = (to_U.substring((Sd)+2,del-1) == '1')?true:false;
                Sd+=del;
                //document.writeln('b= '+ret+',' + Sd);
                break;
            case 'i':
                del = to_U.indexOf(';',(Sd))+1;
                ret = Number(to_U.substring((Sd)+2,del-1));
                retSTR = ret ;
                Sd=del;
                //document.writeln('i= '+retSTR+',' + Sd);
                break;
            /*case 'd':
                del = to_U.indexOf(';',(Sd))+1;
                ret = Number(to_U.substring((Sd)+2,del-1));
                Sd+=del;
                //document.writeln('d= ,' + Sd);

                break;*/
            case 'd':
                del = to_U.indexOf(';',(Sd))+1;
                ret = Number(to_U.substring((Sd)+2,del-1));
                retSTR = ret ;
                Sd=del;
                //document.writeln('d= ,' + Sd);

                break;
            case 's':
                //document.writeln('s sd inizio= ,' + Sd);
                //{s:4:"root"
                del = to_U.substr((Sd)+2,(to_U.indexOf(':',(Sd+2))-(Sd+2)));
                ret = to_U.substr( 1+to_U.indexOf('"',(Sd)),del);
                s_SL = ret.length;
                ret = VIGO_addslashes(ret);
                s_SL1 = ret.length;
                del = to_U.indexOf('"',(Sd))+ 1 + s_SL + 2;
                //                ret.replace(/\\/i, "\\\\").replace(/'/i, "\\'");
                //ret = addslashes(ret);
                retSTR = '"'+ret+'"' ;
                Sd=del;
                //document.writeln('s= ,'+ret+'' + Sd);

                break;
            case 'a':
                //document.writeln('a sd inizio= ,' + Sd);
                del = to_U.indexOf(':{',(Sd))+2;
                //document.writeln('trovato :{ in ,' + (to_U.indexOf(':{',(Sd))+2) );
                ret = new Array();
                retSTR = 'new Array();';
                arrlen[level+1] = Number(to_U.substring(( to_U.indexOf(':',(Sd+1))+1 ), ((del)-2) )  )  *2;
                //arrlen[level+1] = Number(to_U.substring(to_U.indexOf(':')+1, del-2))*2;
                //document.writeln('a INDICE ARRLEN = ' + arrlen[level+1]  + ' , ' +   (to_U.substring((to_U.indexOf(':',(Sd+1))+1), (del)-2)) + ' , sd1 = ' +  to_U.indexOf(':',(Sd+1)) + ' , sd2 = ' +  ((del)-2));
                Sd=del;
                //document.writeln('a= '+del+',' + Sd);
                break;
            case 'O':
                to_U = to_U.substr(2);
                var tmp = to_U.indexOf(':"')+2;
                var nlen = Number(to_U.substring(0, to_U.indexOf(':')));
                name = to_U.substring(tmp, tmp+nlen );
                to_U = to_U.substring(tmp+nlen+2);
                del = to_U.indexOf(':{')+2;
                ret = new Object();
                retSTR = 'new Object();';
                arrlen[level+1] = Number(to_U.substring(0, del-2))*2;
                Sd+=del;
                //document.writeln('o= ,' + Sd);

                break;
            case '}':

                //to_U = to_U.substr(1);
                (Sd++);
                //	if(arrlen[level] != 0){alert('var missed : '+save); return undefined;};
                //alert(arrlen[level]);
                level--;
                //document.writeln('}= ,' + Sd);
                continue;
            default:

                if(level==0) return final;
                //alert('syntax invalid2(' + Sd + ') : '+save+"\nat\n"+to_U+"level is at "+level);
                alert('syntax invalid2(' + Sd + ') : '+"\nat\n"+to_U+"level is at "+level);
                //  document.writeln('def= '+to_U.substr((Sd)+0,1)+',' + Sd);
                /*
a:1:{s:4:"root";a:6:{s:13:"IP_full_count";a:40:{i:0;a:22:{s:3:"ipn";s:10:"37071
a sd inizio= ,0
trovato :{ in ,5
a= ,5
end= ,5
s sd inizio= ,5
s= ,12
end= ,12
def= o,12
 */
                Sd+=del;
                return undefined;
        }
        //document.writeln(' level =  ,' + level + 'arrlen level = ' + arrlen[level]);


        if(arrlen[level]%2 == 0){
            //document.writeln(' level modul2  ,' + arrlen[level]);
            if(typeof(ret) == 'object'){
                alert('array index object no accepted : ');
               ret =  new Array();
                retSTR = 'new Array();';
                //return undefined;
            }
            if(ret == undefined){
                alert('syntax invalida(' + Sd + ') : ');
              ret = '';
               //                ret.replace(/\\/i, "\\\\").replace(/'/i, "\\'");
                //ret = addslashes(ret);
                retSTR = '""' ;
            }
            key[level] = ret;
        } else {

            var ev = '';
            for(var i=1;i<=level;i++){


                if(typeof(key[i]) == 'number'){
                    ev += '['+(key[i])+']';
                }else{
                    ev += '["'+(key[i])+'"]';
                }
            }
            //document.writeln('final'+ev+'= '+retSTR +';');
            unserialize_VIGO_GLOBALEVAL[_GLOBAL_contatore4] ='final'+ev+'= '+ retSTR +';';
            _GLOBAL_contatore4++;
        }
        //document.writeln('end= ,' + Sd);
        arrlen[level]--;//alert(arrlen[level]-1);

        if(typeof(ret) == 'object')level++;

        //		to_U = to_U.substr(del);

        continue;
    }
}

function dump_v09(arr,level) {
    try{
        var dumped_text = "";
        if(!level) level = 0;

        // in firefox mi stampa sempre un sottolivello 0, mentre in ie no...
        var level_str = "";
        if (level > 0) level_str = level + '';


        //The padding given at the beginning of the line.
        var level_padding = "";
        for(var j=0;j<level+1;j++) level_padding += "    ";

        if(typeof(arr) == 'object') { //Array/Hashes/Objects
            for(var item in arr) {
                var value = arr[item];

                if(typeof(value) == 'object') { //If it is an array,

                    dumped_text += level_padding + "'" + item + "' ...\n";
                    // dumped_text += level_padding;
                    dumped_text += dump_v09(value,level+1);
                } else {
                    dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
                }
            }
        } else { //Stings/Chars/Numbers etc.
            dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
        }
        return dumped_text;

    }catch(e){
        alert("ERRORE:arr dump_v09 () \n error: " + e.message   );
    }//end try

}

if(!JSCACHE) JSCACHE = [] ;
JSCACHE.push(['unserializeAJAX.js',2]);
