/*
*	XML parcer 
*	get Node values by Xpath
*	@param
*		xml - Xml document
*		xpath -String Xpath
*	@return
*	Array(
*		Array(
*			element[0]TextContent
*			Array([element[0].childNode[0].tagName|element[0].attributes[0].name],[[element[0].childNode[0].text | element[0].attributes[0].value]])
*		}	
*	);
*
*/
function parceXML(xml,xpath){
	var txtcont = true;
	//Load elemement text content
	var elements = Array();
		try{
		//Mozilla
		var oEvaluator = new XPathEvaluator();
		var oResult = oEvaluator.evaluate(xpath, xml.documentElement, null,XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
		if (oResult !== null) {
			//Iterate By Elements
			var oElement = oResult.iterateNext();
			while(oElement){
				var temp_arr = Array();
				//Get Element TextContent
				temp_arr.push(txtcont ? encodeURIComponent(oElement.textContent):'');
				var atribute_arr = new Array();
				var atributes = oElement.attributes;
				//If element values in attributes
				if(atributes.length>0){
					for(var i=0; i<atributes.length;i++){
						var arr = new Array(atributes[i].name, atributes[i].value);
						atribute_arr.push(arr);
					}
				}else{
					//If element values in element Child Nodes
					for(var i=0;i<oElement.childNodes.length;i++){
						if(oElement.childNodes[i].nodeType!=3){
							var arr= new Array(oElement.childNodes[i].tagName,oElement.childNodes[i].textContent);
							atribute_arr.push(arr);
						}
					}
				}
				temp_arr.push(atribute_arr);	
				elements.push(temp_arr);	
				oElement = oResult.iterateNext();
			}	
		}
		}catch(e){}
	//IE, Opera
	if (!oResult){
			oResult = xml.documentElement.selectNodes(xpath);
			
			for(var j=0;j<oResult.length;j++){
				var temp_arr = Array();
				temp_arr.push(txtcont ? oResult[j].text:'');
				var atribute_arr = new Array();
				var atributes = oResult[j].attributes;
				if(atributes.length>0){
					for(var i=0; i<atributes.length;i++){
						var arr = new Array(atributes[i].name, atributes[i].value);
						atribute_arr.push(arr);
					}
				}else{
					for(var i=0;i<oResult[j].childNodes.length;i++){
						if(oResult[j].childNodes[i].nodeType!=3){
							var arr= new Array(oResult[j].childNodes[i].tagName,oResult[j].childNodes[i].text);
							atribute_arr.push(arr);
						}
					}
					
				}
				temp_arr.push(atribute_arr);	
				elements.push(temp_arr);	
			}
	}	return elements;
}