
//clasa rezultat
function sql_res() {
	this.bSuccess		= 0;
	this.sErrorMessage	= '';
	this.nFields		= 0;
	this.nRows			= 0;
	this.aResult		= new Array();
}

//var etg_path; definita inaintea includerii scriptului
var path = (typeof(etg_path) == "undefined")? '' : etg_path;

var req;
var fn_res;
var obj_res = new sql_res();

function mysql_query(sqlFile, qString, fnResult) {	
	//qString data for posting to file: sqlFile
	fn_res = fnResult;
	var url= path + sqlFile;
	//alert('fn mysql_query: qString = ' +  qString);
	if (window.XMLHttpRequest) { // Non-IE browsers
	    req = new XMLHttpRequest();
	    req.onreadystatechange = mysql_process_result;
	    try {
	        req.open("POST", url, true);
	    } catch (e) {
	        alert(e);
	    }
	    req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	    req.send(qString);
	 }
	 else if (window.ActiveXObject) { // IE
	    req = new ActiveXObject("Microsoft.XMLHTTP");
	    if (req){
	        req.onreadystatechange = mysql_process_result;
	        req.open("POST", url, true);
	        req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	        req.send(qString);
	    }
	}
}

function mysql_process_result() {
	//alert(req.readyState);
	if (req.readyState == 4) { // Complete
    	//alert(req.status);
    	//alert(req.statusText);
    	//alert(req.responseText);
	    if (req.status == 200) { // OK response

	        //prelucrez informatiile, linie cu linie separate prin '\\'
	        //alert(req.responseText);
	        var tmp = req.responseText.split('\\');

	        obj_res.bSuccess		= (tmp[0] == '1');
	        obj_res.sErrorMessage	= tmp[1];
	        obj_res.nFields			= tmp[2];
	        obj_res.nRows			= tmp[3];

	        //matricea
	        obj_res.aResult = new Array();
	        for (i=4; i<tmp.length; i++) {
	        	tmp1 = tmp[i].split('|');
	        	obj_res.aResult[i-4] = new Array();
	            for (j=0; j<tmp1.length; j++){
	            	obj_res.aResult[i-4].push(tmp1[j]);
	            }
	        }

	        fn_res(obj_res);
	    } else {
            //alert("Error: " + req.statusText);
            obj_res.bSuccess = 0;
	    	obj_res.sErrorMessage = req.statusText;
            fn_res(obj_res);
	    }
	}
}


//#####################################################################################
//fac acum si o functie care imi intoarce doar HTML
function ajax_openFile(sFile, qString, fnResult){
	//sFile tb. sa aibe cale absoluta, nu relativa !!!
	fn_res = fnResult;
	var url= path + sFile + '?' + qString;
	if (window.XMLHttpRequest) { // Non-IE browsers
	    req = new XMLHttpRequest();
	    req.onreadystatechange = ajax_process_result;
	    try {
	        req.open("GET", url, true);
	    } catch (e) {
	        alert(e);
	    }
	    req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	    req.send(qString);
	 }
	 else if (window.ActiveXObject) { // IE
	    req = new ActiveXObject("Microsoft.XMLHTTP");
	    if (req){
	        req.onreadystatechange = ajax_process_result;
	        req.open("GET", url, true);
	        req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	        req.send("");
	    }
	}
}

function ajax_process_result() {
	//alert(req.readyState);
	if (req.readyState == 4) { // Complete
    	//alert(req.status);
    	//alert(req.statusText);
    	//alert(req.responseText);
	    if (req.status == 200) { // OK response
	        //alert(req.responseText);

			//send the responsee to user function
	        fn_res(req.responseText);
	    } else {
            //alert("Error: " + req.statusText);
            //send error to client function
            fn_res(req.statusText);
	    }
	}
}
