// függőségek
if ("undefined" == typeof AITIA) {
	alert("AITIA include missing!");
}



// tĂśbbszĂśrĂśs include
if ("undefined" != typeof AITIA_XML) {
	 alert("AITIA_DOM multiple insert!");
}

AITIA_XML = 1;

Aitia.XML = {};


/*
Aitia.Dom.getCurrentTable = function(currentNode) {
}
*/


// XML-t tartalmazĂł string xml objektumba tĂśltĂŠse
function createAndLoadXML(xmlText) {
	var newXML = false;
	try {
		// Internet Explorer
		//var newXML = new ActiveXObject("Microsoft.XMLDOM");
		var newXML = new ActiveXObject(getXmlHttpPrefix() + ".DomDocument");
		newXML.async = "false";
		newXML.loadXML(xmlText);
		newXML.setProperty("SelectionLanguage","XPath");
	} catch(e) {
		try {
			// Firefox, Mozilla, Opera, etc.
			parser = new DOMParser();
			newXML = parser.parseFromString(xmlText,"text/xml");
		} catch(e) {
			//e.message
		}
	}
	
	if ( newXML ) {
		if ( newXML.parseError && newXML.parseError.errorCode!=0 ) {
			// IE
/*
debugWriteLn(""
+newXML.parseError.errorCode
+"\n"+newXML.parseError.reason
+"\n"+newXML.parseError.line
+"\n"+newXML.parseError.linepos
+"\n"+newXML.parseError.srcText
+"\n"+newXML.parseError.url
+"\n"+newXML.parseError.filepos
);
*/
			newXML = false;
		} else if ( newXML.documentElement && newXML.documentElement.nodeName=="parsererror")  {
			// EgyĂŠb
/*
<parsererror xmlns="http://www.mozilla.org/newlayout/xml/parsererror.xml">
(error description)
<sourcetext>(a snippet of the source XML)</sourcetext>
</parsererror>
*/
			newXML = false;
		}
	}
	
	return newXML;
}

// XML-t tartalmazĂł stringet fejlĂŠc adatokkal lĂĄtunk el xml objektumba tĂśltĂŠshez
function setXMLheader(xmlText) {
	var xmlHeadPre = '<?xml version="1.0" encoding="utf-8"?>';
	xmlHeadPre += '<pns-str:root xmlns:pns="http://www.webra.hu/pns/v1.0" xmlns:pns-str="http://www.webra.hu/pns-str/v1.0">';
	
	var xmlHeadPost = '</pns-str:root>';
	
	xmlText = trim(xmlText.replace(/<\?xml version="1.0" encoding="utf-8"\?>/gi, ''));
	xmlText = trim(xmlText.replace(/^\s*<!doctype[^>]*>/gi, ''));
	
	return xmlHeadPre+xmlText+xmlHeadPost;
}

// xml-ben xpath-os keresĂŠs
function getXMLNodes(xmlDoc, rootNode, XPathText) {
	var result = null;
	try {
		// ie
			result = rootNode.selectNodes(XPathText);
	} catch(e) {
		try {
			// Firefox, Mozilla, Opera, etc.
			var nodes = xmlDoc.evaluate(XPathText, rootNode, null, XPathResult.ANY_TYPE, null);
			var item = nodes.iterateNext();
			if (item) {
				result = new Array();
				while (item) {
					result.push(item);
					item = nodes.iterateNext();
				}
			}
		} catch(e) {
		}
	}

	return result;
}

// xml-ben node ĂŠrtĂŠkĂŠnek lekĂŠrdezĂŠse:
// getXMLNodeValue(node)
// getXMLNodeValue(xmlDoc, rootNode)
// getXMLNodeValue(xmlDoc, rootNode, XPathText)
function getXMLNodeValue(xmlDoc, rootNode, XPathText) {
	var nodeValue = '';

	if ( arguments.length==1 ) {
		var node = arguments[0];
		
		if ( typeof node!='undefined' && node ) {
			
			if ( node.nodeType==1 ) {
				// Tag
				if (typeof XMLSerializer != 'undefined') {	// FF
					var serializer = new XMLSerializer();
					nodeValue = serializer.serializeToString(node);
				} else if ( typeof node.xml!='undefined' && node.xml!==null ) {	// IE
					nodeValue = node.xml;
				} else {
					nodeValue = '<errors><error>ERROR</error></errors>';
				}

				nodeValue = nodeValue.replace(/^<[^>]*>/g, '');
				nodeValue = nodeValue.replace(/<\/[^>]*>$/g, '');
				
				if ( node.childNodes && node.childNodes.length==1 && node.childNodes[0].nodeType==4 ) {
					// Csak egy darab cdata-zott gyereke van
					nodeValue = nodeValue.replace(/^<!\[CDATA\[/gi, '');
					nodeValue = nodeValue.replace(/\]\]>$/gi, '');
				}
			} else {
				// Text node
				nodeValue = node.nodeValue;
			}

			nodeValue = nodeValue.replace(/&amp;/g, '&');
		}
	} else if ( arguments.length==2 ) {
		var node = arguments[0];
		var isRoot = arguments[1];

		if ( typeof isRoot!='undefined' && isRoot ) {
			// Szerver oldalon a cdata-zás megoldása miatt van szükség arra, hogy az első szintű gyerekeket egyesével cdata mentesítsük
			if ( node.childNodes ) {
				for(var i=0;i<node.childNodes.length;i++) {
					nodeValue += getXMLNodeValue(node.childNodes[i]);
				}
			} else {
				nodeValue = getXMLNodeValue(node);
			}
		} else {
			nodeValue = getXMLNodeValue(node);
		}
	} else if ( arguments.length==3 ) {
		var nodes = getXMLNodes(xmlDoc, rootNode, XPathText);

		if (nodes && nodes.length > 0) {
			nodeValue = getXMLNodeValue(nodes[0],true);
		}
	}

	return nodeValue;
}

function getXMLAllNodeValues(xmlDoc, rootNode, XPathText) {
	var nodeValue = [];
	var nodes = getXMLNodes(xmlDoc, rootNode, XPathText);

	if (nodes) {
		for (var i = 0; i < nodes.length; i++)
			nodeValue.push(getXMLNodeValue(nodes[i]));
	}
	
	return nodeValue;
}

function isXmlNode(node) {
	var ret = false;

	// FF
	if (typeof XMLSerializer != 'undefined') {
		if (node.childNodes.length > 1 || (node.childNodes.length == 1 && node.childNodes.nodeType == 1))
			ret = true;
	}
	else {
		if (node.childNodes.length > 0)
			ret = (node.childNodes[0].nodeType == 1);
	}
	
	return ret;
}


function xhtmlToHtml(xhtml) {
	xhtml = ( (typeof xhtml!='undefined' && xhtml!==null) ? xhtml.toString() : '' );
	
	var html = xhtml.replace(new RegExp(' xmlns[^=]*="[^"]*"', 'g'), '');

	html = html.replace(/<(br[^>]*)\/>/gi, '<$1>');
	html = html.replace(/<(hr[^>]*)\/>/gi,'<$1>');
	html = html.replace(/<(img[^>]*)\/>/gi,'<$1>');
	html = html.replace(/<([A-Za-z0-9\-\_\:]*)\s?([^>]*)\/>/gi,'<$1 $2></$1>');

	return html;
}

function htmlSpecialChars(tmpStr,apos,quot) {
	var tmpStr = ( (typeof tmpStr!='undefined' && tmpStr!==null) ? tmpStr.toString() : '' );
	var apos = ( typeof apos!='undefined' ? apos : true );
	var quot = ( typeof quot!='undefined' ? quot : true );
	
	tmpStr = tmpStr.replace(/&/g,'&amp;');
	tmpStr = tmpStr.replace(/</g,'&lt;');
	tmpStr = tmpStr.replace(/>/g,'&gt;');
	if ( quot ) tmpStr = tmpStr.replace(/"/g,'&quot;');
	if ( apos ) tmpStr = tmpStr.replace(/'/g,'&apos;');
	
	return tmpStr;
}

function htmlSpecialCharsDecode(tmpStr) {
	tmpStr = ( (typeof tmpStr!='undefined' && tmpStr!==null) ? tmpStr.toString() : '' );
	
	tmpStr = tmpStr.replace(/&lt;/g,'<');
	tmpStr = tmpStr.replace(/&gt;/g,'>');
	tmpStr = tmpStr.replace(/&quot;/g,'"');
	tmpStr = tmpStr.replace(/&apos;/g,"'");
	tmpStr = tmpStr.replace(/&amp;/g,'&');
	
	return tmpStr;
}

function xml2Str(xmlNode) {
	try {
		// Gecko- and Webkit-based browsers (Firefox, Chrome), Opera.
		return (new XMLSerializer()).serializeToString(xmlNode);
	}
	catch (e) {
		try {
			// Internet Explorer.
			return xmlNode.xml;
		}
		catch (e) {  
			//Other browsers without XML Serializer
			alert('Xmlserializer not supported');
		}
	}
	return false;
}

function strip_tags (input, allowed) {
    allowed = (((allowed || "") + "").toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
    var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,
        commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
    return input.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {        return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
    });
}