	 	
  	function XPathGet( xmlObj, xpath )
	{
		var result = '';
		var nodeObj = XPathNodeGet( xmlObj, xpath );
		if( nodeObj )
		{
			result  = XmlNodeGetText( nodeObj );
		}
  		return( result );
  	}
  	
  	
  	
  	function XPathSet( xmlObj, xpath, value )
	{
		var result = false;
		var nodeObj = XPathNodeGet( xmlObj, xpath );
	
		if( nodeObj )
		{
			XmlNodeSetText( nodeObj, value );
			result = true;
		}
  		return( result );
  	}
  	
  	function XmlNodeSetText( nodeObj, value )
  	{
		if( PlatformGet() == 'desktop' )
			nodeObj.text = value;
		else
			nodeObj.textContent = value;
  	}
  	
  	function XmlNodeGetText( nodeObj )
  	{
		var textContent = '';
		if( nodeObj )
		{
			if( PlatformGet() == 'desktop' )
				textContent = nodeObj.text;
			else
				textContent = nodeObj.textContent;
		}
		return( textContent );
  	}
  	
  	function XPathNodeGet( xmlObj, xpath )
  	{

  		var nodeObj = xmlObj.responseXML.selectSingleNode( xpath );

  		return( nodeObj );
  	}
  	
  	function findSubNode( nodeObj, subNodeName )
  	{
  		var targetNode = null;
  		var subnodes = nodeObj.childNodes;
  		var childCounter = 0;
  		
  		
  		// check the first level for a match
  		for( ; childCounter < subnodes.length ; childCounter++ )
  		{
  			if( subnodes.item(childCounter).nodeName == subNodeName )
  			{
  				targetNode = subnodes.item(childCounter);
  				break;
  			}
  		}
  		
  		// if not found on first level, look deeper
  		if( !targetNode )
  		{
  			childCounter = 0;
  			for( ; childCounter < subnodes.length ; childCounter++ )
	  		{
	  			targetNode = findSubNode( subnodes.item(childCounter), subNodeName );
	  		}
  		}
  		return( targetNode );
  	}
  	
  	function findSubNodes( nodeObj, subNodeName )
  	{
  		var result = null;
  		var targetNodes =  new Array();
  		var subnodes = nodeObj.childNodes;
  		var childCounter = 0;
  		var counter = 0;
  		
  		
  		// check the first level for a match
  		for( ; childCounter < subnodes.length ; childCounter++ )
  		{
  			if( subnodes.item(childCounter).nodeName == subNodeName )
  			{
  				targetNodes[counter] = subnodes.item(childCounter);
  				result = targetNodes;
  				counter++;
  			}
  		}
  		
  		return( result );
  	}
  	
	