function str_between(subject, beginStr, endStr, index){
   var ret = '';
   var begin    = -1;
   var end      = 0;
   var length   = 0;
   var pos      = 0;
   var findcount = 0;
   pos = subject.indexOf(beginStr);
   while( pos != -1 && findcount < index){
      findcount++;
      begin = pos;      
      pos = subject.indexOf(beginStr, pos+1)
      //alert(pos + ',' + findcount);
      if(pos == -1 && findcount < index) findcount = -1;
   }
   
   if(findcount > 0){
      begin = begin + beginStr.length
      end    = subject.indexOf(endStr, begin);
      length = end - begin;
      if(length > 0){
         ret = subject.substr(begin, length);
      }else{
         ret = '';
      }
   }else{
      ret = '';
   }
   return ret;
}

function xml_element_data(subject, elementName, index){
	var elementData = str_between(subject, '<' + elementName + ' ', '</' + elementName + '>', index);
	var startTagEndPos = elementData.indexOf('>', 0);
	elementData = elementData.substr(startTagEndPos + 1);
	return elementData; 
}

// z.B.
// ret = xml_element_xpath(this.domCemetery, '/adam/data/cemetery[@uid="5"]/cemeteryname');
function xml_element_xpath(oDomDoc, xPath){
   var oNodeList = oDomDoc.selectNodes(xPath);
//   console.log(oNodeList);
   /*alert('xpath:' + xPath + 
         '\noNodeList:' + oNodeList +
         '\noNodeList[0]:' + oNodeList[0] +
         '\ncount:' + oNodeList.length);
   */
   var strNode = '';
   for(var i = 0; i < oNodeList.length; i++) {
      strNode = strNode + new XMLSerializer().serializeToString(oNodeList[i]);
			/*alert ('stringnode: '+ strNode);*/
   }
   // if xpath is text() then remove cdata
   if(xPath.indexOf('text()') != -1){
      strNode = strNode.replace('<![CDATA[', '');
      strNode = strNode.replace(']]>', '');
   }
   
   /*alert('returning:\n"' + strNode + '"');*/
   
   return strNode;
}

function str_replace(string,suchen,ersetzen) {
	ausgabe = "" + string;
	while (ausgabe.indexOf(suchen)>-1) {
		pos= ausgabe.indexOf(suchen);
		ausgabe = "" + (ausgabe.substring(0, pos) + ersetzen +
		ausgabe.substring((pos + suchen.length), ausgabe.length))
	}
	return ausgabe;
}
