// JavaScript Document

/* ----------------------------------------------------------------------  */

var proxyPath= "../../proxy/";

function dump(v) {
				function repeat(what, times) {
					var 	a;
					if(times > 0) {
						a = new Array(times);
						do {
							a[--times] = what;
						}while(times);
					}
					else
						a = [];
					return a.join('');
				};
				function k2s(k) {
					return isNaN(k) ? '"' + k + '"' : k;
				};
				var p = arguments.length == 2 ? arguments[1] : 0;
				var r = '';
				if(v || v === false || v === 0) {
					switch(typeof(v)) {
						case 'string':
						case 'number':
						case 'boolean':
							r += '('+typeof(v)+') ' + v.toString();
							break;
						default:
							if(v instanceof Array)
								r += '[Array]\n';
							else
								r += '[Object]\n';
							for(var a in v)
								r += [repeat('\t', p), '[' + k2s(a) + '] => ', dump(v[a], (p + 1)), '\n'].join('');
							break;
					};
				}
				else
					r = 'null';
				return r;
			};
            
var browser = navigator.appName;
// Determino l'oggetto AJAX in funzione dei vari browser
function makeObject(){
    var x;
    if(browser == "Microsoft Internet Explorer"){
        x = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        x = new XMLHttpRequest();
    }
    return x;
}

// Istanzio l'oggetto AJAX

/* ----------------------------------------------------------------------  */
//var request= makeObject();
var requests = new Array(10);




// Definisco i metodi che provvedono a generare le richieste AJAX
function output(myFunOut,dataStructName){
    if(requests[''+myFunOut+''].readyState == 1){ // in fase di caricamento dei dati
        if ((document.getElementById('dbgOut'))&&(dbg)) {
            document.getElementById('dbgOut').innerHTML += '<HR/>Loading...'+dataStructName;
        }
    }
    if(requests[''+myFunOut+''].readyState == 4){
        var dati = requests[''+myFunOut+''].responseText;
        // in questo modo mi stampo il contenuto in una parte della pagina
        if ((document.getElementById('dbgOut'))&&(dbg)) {
            document.getElementById('dbgOut').innerHTML += "<HR/>"+myFunOut+'\n</br>Loaded... <HR/>Len::'+dati.length+'<HR/>'+dati+'<HR/>';
        }
        
        /*if(browser == "Microsoft Internet Explorer"){
            // versione 1 con Object.PHP_Serializer.js
            // Problemi con UTF
            var php = new PHP_Serializer(true); // senza true spacca se ci sono caratteri UTF
            eval(""+dataStructName+"=php.unserialize(dati);");  // others lib
        }else{*/
            //Nuova versione con Serializer2.js
	    
            eval(""+dataStructName+"=unserialize(dati);");
        //}
        
                
        //Versione originale ...struttura tradotta sul server direttametne in Javascript
        //eval(dati);  
        
        
        if ((document.getElementById('dbgOut'))&&(dbg)) {
            document.getElementById('dbgOut').innerHTML +=  "dumping ("+dataStructName+");<HR/>";  
            eval("document.getElementById('dbgOut').innerHTML += dump("+dataStructName+");");  
        }
        
        
        // in questo modo Valuto il contenuto ... ad esempio strutture Javascript
        // e vado a "caricare" la struttura in memoria!
        //Chiamata alla funzione Handler dei dati di ritorno
        
        eval(''+myFunOut+"("+dataStructName+");");
        
    }
}

 

// Definisco i metodi che provvedono a generare le richieste AJAX
function get_method(myFunOut,serviceName,condition1,serverBase){
try{
	//alert("serviceName"+serviceName);
    //alert("serverBase"+serverBase);
    var date=new Date();
    dataStructName="data"+serviceName.substr(0, 1).toUpperCase() + serviceName.substr(1);
    
    if ((document.getElementById('dbgOut'))&&(dbg)) {
        document.getElementById('dbgOut').innerHTML += "<HR/><a href='"+proxyPath +"getServicesWS.php?serviceName="+serviceName+"&condition1="+condition1+"&database="+serverBase+"'>getServicesWS.php?name="+serviceName+"</a>";
    }
    
    if (requests[''+myFunOut+''] == null){
        requests[myFunOut] = makeObject();
    }
    eval("f=function fun"+dataStructName+"() {output('"+myFunOut+"','"+dataStructName+"');};");
    requests[''+myFunOut+''].open("get",proxyPath + "getServicesWS.php?serviceName="+serviceName+"&condition1="+condition1+"&database="+serverBase+"&"+date.getTime(),true,"","");
    requests[''+myFunOut+''].setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    requests[''+myFunOut+''].onreadystatechange = f;
    requests[''+myFunOut+''].send('');  
    }
 catch (ex){} 
}



// Definisco i metodi che provvedono a generare le richieste AJAX
function get_method_2(myFunOut,serviceName,condition1, condition2, serverBase){
	//alert("serviceName"+serviceName);
    //alert("serverBase"+serverBase);
    try{
    var date=new Date();
    dataStructName="data"+serviceName.substr(0, 1).toUpperCase() + serviceName.substr(1);
    
    if ((document.getElementById('dbgOut'))&&(dbg)) {
        document.getElementById('dbgOut').innerHTML += "<HR/><a href='"+proxyPath +"getServicesWS.php?serviceName="+serviceName+"&condition1="+condition1+"&condition2="+condition2+"&database="+serverBase+"'>getServicesWS.php?name="+serviceName+"</a>";
    }
    
    if (requests[''+myFunOut+''] == null){
        requests[myFunOut] = makeObject();
    }
    eval("f=function fun"+dataStructName+"() {output('"+myFunOut+"','"+dataStructName+"');};");
    requests[''+myFunOut+''].open("get", proxyPath + "getServicesWS.php?serviceName="+serviceName+"&condition1="+condition1+"&condition2="+condition2+"&database="+serverBase+"&"+date.getTime(),true,"","");
    requests[''+myFunOut+''].setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    requests[''+myFunOut+''].onreadystatechange = f;
    requests[''+myFunOut+''].send('');  
    }
 catch (ex){
 	//alert(ex);
 } 
}





