function makeRequest(url, opts, pricefield, stockfield) {
	var httpRequest;
  if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		httpRequest = new XMLHttpRequest();
    if (httpRequest.overrideMimeType) {
    	httpRequest.overrideMimeType('text/xml');
      // See note below about this line
    }
	} 
  else if (window.ActiveXObject) { // IE
 		try {
    	httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    } 
    catch (e) {
    	try {
      	httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
      } 
      catch (e) {}
  	}
  }

	if (!httpRequest) {
  	return false;
  }
  
	//process single or multiple options     
  var arLen = opts.length;
  var selInd;
  if(opts[0].length) {
		for ( var i=0, len=arLen; i<len; ++i ){
			selInd = opts[i].selectedIndex;
			url = url + "&options[]=" + opts[i].options[selInd].value;				
		}
	} else {
		selInd = opts.selectedIndex;
		url = url + "&options[]=" + opts.options[selInd].value;					
	}	

        
	httpRequest.onreadystatechange = function() { updatePrice(httpRequest, pricefield, stockfield); };
  httpRequest.open('GET', url, true);
  httpRequest.send('');

}

function updatePrice(httpRequest, pricefield, stockfield) {

	if (httpRequest.readyState == 4) {
  	if (httpRequest.status == 200) {
  		resultArray = httpRequest.responseText.split("-");
    	pricefield.value = resultArray[0];
    	stockfield.value = resultArray[1];
    } else {
    	//do nothing if it's not working
  	}
	}
}