
function makeAjaxRequest(url, progressId, referer) {
	var http_request = false;
	
	if(progressId)
		showProgress(progressId);

	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
			// See note below about this line
		}
	} 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('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}
	http_request.onreadystatechange = function() {
		if (http_request.readyState == 4) {
			if (http_request.status == 200) {
				processDevices( http_request.responseXML, referer );
				if(progressId)
					hideProgress(progressId);
			} else {
				alert('There was a problem with the request.');
				if(progressId)
					hideProgress(progressId);
			}
		}
	};
	http_request.open('GET', url, true);
	http_request.send(null);

}

// do something with the xml containing a set of devices
function processDevices( response, referer )
{
	//dhtmlHistory.add(type+'='+value, null);
	//var tmpNodes = response.getElementsByTagName('requestData');
	var type = getData( response.getElementsByTagName('requestData').item(0), 'type' );
	var value = getData( response.getElementsByTagName('requestData').item(0), 'value' );
	
	if( type == 'M' ){
		//document.getElementById('default_carrier').selected = true;
	}
	else if( type == 'C' ){
		document.getElementById('default_manufacturer').selected = true;
	}

	var nodes = response.getElementsByTagName('device'); 
	var table = document.getElementById("device_table");

	var rows = table.getElementsByTagName("tr");
	var len = rows.length;	
	for ( i=1; i <= len; i++ ){
		//var row = rows[i];
		var row = document.getElementById(i);
		table.removeChild(row);
	}

	var rownum = 0;
    for ( var i=0; i < nodes.length; i++ )
    {
        var node = nodes.item(i);
		var deviceId = getData( node, 'id' );
		var model = getData( node, 'model' );
		var smallImage = getData( node, 'small_image_url' );
		var manufacturer = getData( node, 'manufacturer' );
		var platformId = getData( node, 'platformid' );
		
		if( i % 3 == 0 ){
			rownum++;
			var row = document.createElement('tr');
			table.appendChild(row);
			row.setAttribute('id', rownum);
		}
		
		var cell = document.createElement('td');
		document.getElementById(rownum).appendChild(cell);
		cell.setAttribute('id', deviceId);
		cell.setAttribute('align', 'center');
		cell.setAttribute('valign', 'bottom');

		var mydiv = document.createElement('div');
		cell.appendChild(mydiv);
		mydiv.style.backgroundColor = 'transparent';
		mydiv.style.textAlign = 'center';

		var mypic = document.createElement('img');
		//mydiv.appendChild(mypic);
		mypic.setAttribute('height', '100');
		mypic.setAttribute('src', smallImage);
		
		//mydiv.appendChild(document.createElement('br'));
		mydiv.appendChild(document.createElement('br'));
		
		var myLink = document.createElement('a');
		mydiv.appendChild(myLink);
		
		// use referrer to figure out where to send them
		// --------------------------------------------
		// --------------------------------------------
		//var referer = document.referrer; 
		// --------------------------------------------
		// --------------------------------------------
		//url = "";
		//if(document.referrer.indexOf("olivetree") >= 0 && document.referrer.indexOf("product.php") < 0){
		//	url = document.referrer
		//	if(url.indexOf("?") >= 0)
		//		url += "&";
		//	else
		//		url += "?";
		//}
		//else
		//	url = "/index.php?";
		// --------------------------------------------
		// --------------------------------------------
		// --------------------------------------------

		//if(platformId == 18) //java
			//myLink.setAttribute('href', '/java/');
		//else
			myLink.setAttribute('href', referer + 'setdevice='+deviceId);
			
		if(type == "C")
			myLink.innerHTML = manufacturer+"<br>"+model;
		else
			myLink.innerHTML = model;
			
    }
}

// get the data from an XML node
function getData( myNode, myNodeName )
{
    var subNodes = myNode.childNodes;

    for ( j=0; j < subNodes.length; j++ )
    {
        var subNode = subNodes.item(j);

        if ( subNode.nodeName == myNodeName )
        {
            // this is cross browser ( ie and firefox ) compatible
            return subNode.childNodes.item(0).nodeValue;
        }
    }
    return "";
}

// show a progress indicator
function showProgress(name)
{
	prg = "<img align='absmiddle' src='/images/loading.gif'>"
	progressViewer = document.getElementById(name);
	progressViewer.innerHTML = prg;
	progressViewer.style.display = "block";
}

// hide the progress indicator
function hideProgress(name)
{
	progressViewer = document.getElementById(name);
	progressViewer.innerHTML = "";
	progressViewer.style.display = "none";
}
