//http_request is global handle to XMLHTTP instance
//TODO: rewrite to use an array of handles
var http_request; 

function makeRequest(url,action,additionalParam) { 
   
   //send a request to the server (GET url) an set action as trigger for the response
   //function can receive a single additional parameter 
   //TODO: rewrite to accept multiple params

   http_request=false; 

   if (window.XMLHttpRequest) { // Mozilla, Safari,...
       http_request = new XMLHttpRequest();
       if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
       }
   } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
       }   catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
           }
   } 

    if (!http_request) {
        alert('Cannot create an XMLHTTP instance');
        return false;
    } else {
        //set as trigger a new function which pass to 'action' function the index of the http_request object
        if(!additionalParam) additionalParam='';
        else additionalParam="'"+additionalParam+"'";
        
        http_request.onreadystatechange = 
                new Function(action+'('+additionalParam+');');
        http_request.open('GET',url, true);
        http_request.send(null);
    }

}

function getResponse(type) {
   
    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
           if (type=='xml') {
              return http_request.responseXML;
           } else {
              return http_request.responseText;
           }
        } else {
            alert('getResponse:: There was a problem with the request. Status:'+ http_request.status);
            return false;
        }
    } else {
        return false;
    }
}

function changeSelect(selectId) {
	var selObj = document.getElementById(selectId);
	//read the response send by server 
	var xmldoc=getResponse('xml');
	
	if (!xmldoc) return false;
	
	var opts = xmldoc.getElementsByTagName('options')[0];
	if (!opts) {
		selObj.length=0;
		selObj[0]=new Option('-- eroare --','-1');
		alert('Fisierul XML rezultat contine erori (nu este corect formatat / contine caractere nepermise)');
		return false;
	}
	var elems = opts.getElementsByTagName('option');
	
	//remove all element from select given
	selObj.length=0;
	var val=-1;
	var txt='error';
	var opt;
	val="-1";
	txt="- selectaţi -";
	selObj[0]=new Option(txt,val);
	for(i=0;i<elems.length;i++) {
		val=elems[i].getAttribute("value");
		txt=elems[i].getAttribute("text");
		selObj[i+1]=new Option(txt,val);
	}
 }
 
function request_child(url, child_name) {
	//alert(url);
	//url = "categorii_produse.xml.php?tip=" + st[st.selectedIndex].value;
	makeRequest(url, "changeSelect", child_name);
}

