function getFirstElementByTagName(curNode,tagName)
{
  var elements=curNode.getElementsByTagName(tagName);
  if (!elements||(elements.length==0))
    return null;
  return elements.item(0);
}

function getDataFromNode(curNode)
{
  if (curNode==null)
    return '';
  curNode=curNode.firstChild;
  if (!curNode)
    return '';
  var curNodeData=curNode.data;
  if (!curNodeData)
    return '';
  return curNodeData;
}

function getDataByTagName(curNode,tagName)
{
  return getDataFromNode(getFirstElementByTagName(curNode,tagName));
}

function getElementListByTagName(curNode,tagName)
{
  var elements=curNode.getElementsByTagName(tagName);
  if (!elements)
    return new Array();
  var elementsArray=new Array(elements.length);
  for (var i=0;i<elements.length;i++)
    elementsArray[i]=elements.item(i);
  return elementsArray;
}

function getAttributeValueByTagName(curNode,tagName,attributeName)
{
  return getAttributeValueByName(getFirstElementByTagName(curNode,tagName).firstChild);
}

function getAttributeValueByName(curNode,attributeName)
{
  if (!curNode.attributes)
    return '';
  for (var i=0;i<curNode.attributes.length;i++)
    if (curNode.attributes[i].name==attributeName)
      return curNode.attributes[i].value;
  return '';
}
