function httpRequest(method,data,URL)
{
	var Http = new ActiveXObject("Microsoft.XMLHTTP");

	Http.open(method,URL,false);
	Http.send(data);
	var response = Http.responseText;
	delete(Http);

	return response;
}


function XMLDataset()
{

	var xmlDoc;
	var errorInfo;
	var listOfNodes;


	this.init = init;
	this.createNew = createNew;
	this.load = load;
	this.loadXML = loadXML;
	this.rowCount = rowCount;
	this.colCount = colCount;
	this.getItem = getItem;
	this.getItemByName = getItemByName;
	this.insertRow = insertRow;
	this.addColumn = addColumn;
	this.setItem = setItem;
	this.setItemByName = setItemByName;
	this.getXML = getXML;
	this.getErrorInfo = getErrorInfo;
	this.destroy = destroy;

	function init()
	{
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	}

	function createNew()
	{
		root = xmlDoc.createElement("rows");
		xmlDoc.appendChild(root);
		listOfNodes = xmlDoc.documentElement.childNodes;
	}


	function load(fileName)
	{
		var result = false;

		xmlDoc.load(fileName);

		if(xmlDoc.parseError !=0)
			errorInfo = xmlDoc.parseError.reason;
		else
		{
			result = true;
			listOfNodes = xmlDoc.documentElement.childNodes;
		}

		return result;
	}

	function loadXML(xml)
	{
		var result = false;

		xmlDoc.loadXML(xml);

		if(xmlDoc.parseError !=0)
			errorInfo = xmlDoc.parseError.reason;
		else
		{
			result = true;
			listOfNodes = xmlDoc.documentElement.childNodes;
		}

		return result;
	}

	function rowCount()
	{
		return listOfNodes.length;
	}

	function colCount()
	{
		var cols = 0;

		if(rowCount()>0)
			cols = listOfNodes.item(0).childNodes.length;

		return cols;
	}

	function getItem(rowNo,colNo)
	{
		var node = listOfNodes.item(rowNo - 1);
		node = node.childNodes.item(colNo - 1);

		return node.text;
	}

	function getItemByName(rowNo,colName)
	{


		var node = listOfNodes.item(rowNo - 1);
		var rowNodes = node.childNodes;
		var i;
		for(i=0;i<rowNodes.length;i++)
		{
			node = rowNodes.item(i);
			if(node.tagName == colName)
				return node.text;
		}

	}

	function insertRow(rowNo)
	{
		var rowElement = xmlDoc.createElement("row");

		if(rowNo == -1)
		{
			xmlDoc.documentElement.appendChild(rowElement);
			rowNo = rowCount();
		}
		else
		{
			xmlDoc.documentElement.insertBefore(rowElement,listOfNodes.item(rowNo - 1));
		}

		return rowNo;
	}

	function addColumn(rowNo,colName,value)
	{
		var colElement = xmlDoc.createElement(colName);
		var node = listOfNodes.item(rowNo - 1);
		node.appendChild(colElement);
		node.lastChild.text = value;
	}

	function setItem(rowNo,colNo,value)
	{
		var node = listOfNodes.item(rowNo - 1);
		node = node.childNodes.item(colNo - 1);

		return node.text = value;
	}

	function setItemByName(rowNo,colName,value)
	{
		var listOfCols = xmlDoc.documentElement.getElementsByTagName(colName);
		var node = listOfCols.item(rowNo-1);

		return node.text = value;
	}

	function getXML()
	{
		return xmlDoc.transformNode(xmlDoc);
	}

	function getErrorInfo()
	{
		return errorInfo;
	}

	function destroy()
	{
		delete(xmlDoc);
	}
}
