//Class ServerRequest
function ServerRequest()
{
	//Private Properties
	var sXmlParameters = "";
	var responseData;
	var self = this;			//Used in private methods

	//Public Properties
	this.RecordCount = 0;
	this.ErrorCode = 0;
	this.ErrorMessage = "";
	this.Traza = false;
	
	//Public Methods
	this.AddParameter = xmlAddParameter;
	this.QueryBySP = xmlQueryBySP;
	this.QueryByPage = xmlQueryByPage;
	this.GetData = xmlGetData;

	//Private Methods
	function xmlQueryBySP(storedName)
	{
		sXmlParameters = "<Parameters SPName=\"" + storedName + "\">" + sXmlParameters + "</Parameters>"
		xmlQuery("/inc/RunSPQuery.asp");
	}

	function xmlQueryByPage(pageName)
	{
		sXmlParameters = "<Parameters>" + sXmlParameters + "</Parameters>"
		xmlQuery(pageName);
	}
	
	function xmlQuery(page)
	{
		try
		{
			var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			xmlhttp.Open("POST", page, false)
			xmlhttp.Send(sXmlParameters);
			
			var oXmlData = new ActiveXObject("Microsoft.XMLDOM");			
			oXmlData.loadXML(xmlhttp.responseText);
			
			if (self.Traza)
			{
				alert(sXmlParameters);
				alert(xmlhttp.responseText);
			}
			
			responseData = oXmlData;
			self.RecordCount = oXmlData.selectNodes("//z:row").length;
			if (oXmlData.selectNodes("//Errors").length != 0)
			{
				self.ErrorCode = oXmlData.selectSingleNode("//Error[0]/Code").text;
				self.ErrorMessage = oXmlData.selectSingleNode("//Error[0]/Message").text;
			}
		} catch(e)
		{
			self.ErrorCode = -1; // e.number;
			self.ErrorMessage = e.description;
		}
	}
	
	function xmlGetData(row, colName)
	{
		var colObj = responseData.selectSingleNode("//z:row[" + (row - 1) + "]/@" + colName);
		if (colObj)
		{
			return colObj.text;
		}
		else
		{
			return "#ERROR Columna \'" + colName + "\' no encontrada";
		}
	}
	
	function xmlAddParameter(paramName, paramType, paramValue)
	{
		sXmlParameters += "<Parameter Name=\"" + paramName + "\" Type=\"" + paramType + "\" Value=\"" + paramValue + "\"/>"
	}
	
	function constructor()
	{
	}
	
	constructor();
}
