
function getXMLDataSetTableCount(dsName, xmlString)
{
	var returnValue = -1;
	var datasetStartIndex = xmlString.toLowerCase().indexOf("<" + dsName.toLowerCase() + ">");
	var datasetEndIndex = xmlString.toLowerCase().indexOf("</" + dsName.toLowerCase() + ">");
	var fieldStartIndex = -1;
	var fieldEndIndex = -1;
	if ((datasetStartIndex > -1) && (datasetEndIndex > -1))
	{
		fieldStartIndex = xmlString.toLowerCase().indexOf("<totalTables>".toLowerCase(), datasetStartIndex);
		if ((fieldStartIndex > -1) && (fieldStartIndex < datasetEndIndex))
		{
			fieldStartIndex = fieldStartIndex + "<totalTables>".toLowerCase().length;
			fieldEndIndex = xmlString.toLowerCase().indexOf("</totalTables>".toLowerCase(), fieldStartIndex);
			if ((fieldEndIndex > -1) && (fieldEndIndex < datasetEndIndex))
			{
				returnValue = parseInt(xmlString.substring(fieldStartIndex, fieldEndIndex));
			}
		}
	}

	return returnValue;
}

function getXMLDataTableRowCount(dsName, dtIndex, xmlString)
{
	var returnValue = -1;
	var datasetStartIndex = xmlString.toLowerCase().indexOf("<" + dsName.toLowerCase() + ">");
	//alert("debug:datasetStartIndex:" + dsName + ":" + datasetStartIndex);
	var datasetEndIndex = xmlString.toLowerCase().indexOf("</" + dsName.toLowerCase() + ">");
	//alert("debug:datasetEndIndex:" + dsName + ":" + datasetEndIndex);
	var fieldStartIndex = -1;
	var fieldEndIndex = -1;
	if ((datasetStartIndex > -1) && (datasetEndIndex > -1))
	{//<t0TotalRows>1</t0TotalRows>
		fieldStartIndex = xmlString.toLowerCase().indexOf(("<t" + dtIndex + "TotalRows>").toLowerCase(), datasetStartIndex);
		if ((fieldStartIndex > -1) && (fieldStartIndex < datasetEndIndex))
		{
			fieldStartIndex = fieldStartIndex + ("<t" + dtIndex + "TotalRows>").toLowerCase().length;
			fieldEndIndex = xmlString.toLowerCase().indexOf(("</t" + dtIndex + "TotalRows>").toLowerCase(), fieldStartIndex);
			if ((fieldEndIndex > -1) && (fieldEndIndex < datasetEndIndex))
			{
				returnValue = parseInt(xmlString.substring(fieldStartIndex, fieldEndIndex));
			}
		}
	}

	return returnValue;
}

function getXMLDataFieldValue(dsName, dtIndex, rowIndex, fieldName, xmlString)
{
	var returnValue = "";
	var datasetStartIndex = xmlString.toLowerCase().indexOf("<" + dsName.toLowerCase() + ">");
	var datasetEndIndex = xmlString.toLowerCase().indexOf("</" + dsName.toLowerCase() + ">");
	var fieldStartIndex = -1;
	var fieldEndIndex = -1;
	//alert("dsStart: " + datasetStartIndex);
	//alert("dsEnd: " + datasetEndIndex);
	if ((datasetStartIndex > -1) && (datasetEndIndex > -1))
	{
		fieldStartIndex = xmlString.toLowerCase().indexOf(("<t" + dtIndex + "r" + rowIndex + fieldName + ">").toLowerCase(), datasetStartIndex);
		//alert(("<t" + dtIndex + "r" + rowIndex + fieldName + ">").toLowerCase());
		//alert("fsi:" + fieldStartIndex);
		if ((fieldStartIndex > -1) && (fieldStartIndex < datasetEndIndex))
		{
			fieldStartIndex = fieldStartIndex + ("<t" + dtIndex + "r" + rowIndex + fieldName+">").toLowerCase().length;
			//alert("fsi (adjusted):" + fieldStartIndex);
			fieldEndIndex = xmlString.toLowerCase().indexOf(("</t" + dtIndex + "r" + rowIndex + fieldName + ">").toLowerCase(), fieldStartIndex);
			if ((fieldEndIndex > -1) && (fieldEndIndex < datasetEndIndex))
			{
				returnValue = xmlString.substring(fieldStartIndex, fieldEndIndex);
			}
		}
	}

	return returnValue;
}
