getValue = function(el) {
	if (el && el.firstChild)
		return el.firstChild.nodeValue;
	else
		return "";
}

getValueByTag = function(prnt,tag) {
	if (el = prnt.getElementsByTagName(tag)[0]) {
		if (el.firstChild)
			return el.firstChild.nodeValue;
		else
			return "";
	} else {
		return "";
	}
}

getNodeByGuid = function(prnt,guid) {
	var els = prnt.getElementsByTagName("*");
	for (var i=0; i<els.length; i++) {
		if (els[i].getAttribute("guid") == guid)
			return els[i];
	}
	return false;
}

getNodeById = function(prnt,id) {
	var els = prnt.getElementsByTagName("*");
	for (var i=0; i<els.length; i++) {
		if (els[i].getAttribute("id") == id)
			return els[i];
	}
	return false;
}

function stringToXMLDOM(text) {
	var doc;
	if (typeof DOMParser != 'undefined') {
		var parser = new DOMParser();
		doc = parser.parseFromString(text, "text/xml");
		delete(parser);
	}
	else if (typeof ActiveXObject != 'undefined') {
		doc = new ActiveXObject("Microsoft.XMLDOM");
		doc.async = "false";
		doc.loadXML(text);
	}
	return doc;
}

function XMLDOMtoString(doc) {
	var text;
	if (typeof XMLSerializer != 'undefined') {
		var parser = new XMLSerializer();
		text = parser.serializeToString(doc);
		delete(parser);
	}
	else if (typeof ActiveXObject != 'undefined') {
		text = doc.xml;
	}
	return text;
}

function getInnerHTML(doc) {
	var html;
	if (doc) {
		var html = "";
		for (var i=0; i<doc.childNodes.length; i++) {
			html += XMLDOMtoString(doc.childNodes[i]);
		}
	}
	return html;
}



/* === load functions === */

loadXML = function (oURL, oFunct, arg) {
	if (!arg && arg != 0)
		arg = null;
	oURL += ( ( oURL.indexOf('?') + 1 ) ? '&' : '?' ) + ( new Date() ).getTime();
	if (!navigator.__ice_version && window.ActiveXObject) {
		//the Microsoft way - IE 5+/Win (ICE produces errors and fails to use try-catch correctly)
		try { //IE Mac has the property window.ActiveXObject but produces errors if you try and use it
			try { //newer
				var xmlObj = new ActiveXObject('Microsoft.XMLDOM');
			} catch(e) { //older
				var xmlObj = new ActiveXObject('Msxml2.XMLHTTP');
			}
			xmlObj.onreadystatechange = function() {
				if (xmlObj.readyState == 4) {
					oFunct(xmlObj,arg);
					delete(xmlObj);
				}
			}
			xmlObj.load(oURL);
		} catch(e) {}
	} else if (window.XMLHttpRequest) {
		// standard XMLHTTP request - Gecko, Safari 1.2+ and Opera 7.6+... AND IE7!
		var xmlObj = new XMLHttpRequest();
		xmlObj.onreadystatechange = function() {
			if (xmlObj.readyState == 4) {
				oFunct(xmlObj.responseXML,arg);
				delete(xmlObj);
			}
		}
		xmlObj.open("GET", oURL, true);
		xmlObj.send(null);
	}
}

loadTXT = function (oURL, oFunct) {
	oURL += ( ( oURL.indexOf('?') + 1 ) ? '&' : '?' ) + ( new Date() ).getTime();
	if (!navigator.__ice_version && window.ActiveXObject) {
		try {
			var xmlObj = new ActiveXObject("MSXML2.XMLHTTP.3.0");
			xmlObj.onreadystatechange = function() {
				if (xmlObj.readyState == 4) {
					oFunct(xmlObj.responseText);
					delete(xmlObj);
				}
			}
			xmlObj.open("GET", oURL, false);
			xmlObj.send(null);
		} catch(e) {}
	} else if (window.XMLHttpRequest) {
		var xmlObj = new XMLHttpRequest();
		xmlObj.onreadystatechange = function() {
			if (xmlObj.readyState == 4) {
				oFunct(xmlObj.responseText);
				delete(xmlObj);
			}
		}
		xmlObj.open("GET", oURL, true);
		xmlObj.send(null);
	}
}

