function rpcLib() {
	//empty contstructor
}

// class vars
rpcLib.prototype.http_request = false;
rpcLib.prototype.finalTargetLayer = "none";

// send http request results to dom object
rpcLib.prototype.sendResultsToLayer = function(http_request, targetLayer) { 

	state = http_request.readyState;
	if(state <= 4) {
		switch(state) {
			case 0 :
				currState = "Connection Uninitialized.";
				break;
			case 1 :
				currState = "Loading Data.";
				break;
			case 2 :
				currState = "Data Loaded.";
				break;
			case 3 :
				currState = "Data Interactive.";
				break;
			case 4 :
				//find any script tags and execute content
				tempElem = document.createElement('temp')
				tempElem.innerHTML = http_request.responseText;
				scriptBlocksArray = tempElem.getElementsByTagName('script');
				
				// loop over script tag block
				for(x=0; x < scriptBlocksArray.length; x++) {
					currBlock = scriptBlocksArray[x];
					eval(currBlock.innerHTML);
				}
				currState = http_request.responseText;
				document.getElementById(targetLayer).innerHTML = currState;
				break;
			default :
				currState = "Unknown RPC state.";
				break;
		}
		//alert(currState);
		
	}
	

}

//make http request
//example:
//	function init() {
//		rpcLib = new rpcLib();
//	}
//  rpcLib.doHttpRequest('/nma/index.php','?stuff=things','targetLayerArea');
rpcLib.prototype.doHttpRequest = function (url, parameters, targetLayer) {

	var 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 XMLHTTP instance');
	 return false;
	}
	requestHandler = function() { rpcLib.sendResultsToLayer(http_request, targetLayer) }
	http_request.onreadystatechange = requestHandler;
	http_request.open('GET', url + parameters, true);
	http_request.send(null);
}

// backward compatible function for existing apps
rpcLib.prototype.doIFrameRpcCall = function(targetUrl, targetLayer) {
	if(document.getElementById(targetLayer + 'ContentContainer') != null) {
		targetLayer = targetLayer + 'ContentContainer';
	}
	if(targetUrl.charAt('?') > 0) {
		urlSplit = targetUrl.split('?');
		newUrl = urlSplit[0];
		newParams = urlSplit[1];
	} else {
		newUrl = targetUrl;
		newParams = "";
	}
	
	rpcLib.doHttpRequest(newUrl, newParams, targetLayer);
}

