/* This functions are used to work with the XML objects
 * recieved from ActiveMQ and representing comments.
 */

/* functions to get data elements from the XML object */
function getElementsByClassName(node, name) {
	var result = [];
	if (node.childNodes.length == 0 || name == '') {
		return result;
	}
	
	var index = 0;
	
	for (i = 0; i < node.childNodes.length; i++) {
		if (node.childNodes[i].className == name) {
			result[index] = node.childNodes[i];
			index = index + 1;
		}
	}
		
	return result;
}
	
function getXmlNodeValue(xmlObject, tagName) {
	if (xmlObject.getElementsByTagName(tagName).length > 0 && xmlObject.getElementsByTagName(tagName)[0].childNodes.length > 0)
		return stripXmlSpecialChars(xmlObject.getElementsByTagName(tagName)[0].childNodes[0].nodeValue);
	
	return null;
}
	
function getXmlNodeAttribute(xmlObject, tagName, attrName) {
	if (xmlObject.getElementsByTagName(tagName).length > 0)
		return stripXmlSpecialChars(xmlObject.getElementsByTagName(tagName)[0].getAttribute(attrName));
	
	return null;
}

/* creates chat{} hash map from the XML object */
function getChatHashMapFromXml(m) {
	var chat = {};
	
	chat['id'] = m.getAttribute('id');
	chat['summary'] = getXmlNodeValue(m, 'summary');
	chat['sms'] = getXmlNodeValue(m, 'sms');
	chat['createdDate'] = getXmlNodeValue(m, 'createdDate');
	chat['author'] = getXmlNodeValue(m, 'author');
				 
	if (m.getElementsByTagName('user').length > 0) {
		var user = {};
		user['id'] = getXmlNodeAttribute(m, 'user', 'id');
		user['username'] = getXmlNodeValue(m, 'username');
		user['userSex'] = getXmlNodeValue(m, 'userSex');
		user['userDj'] = getXmlNodeValue(m, 'userDj');
		user['userRole'] = getXmlNodeValue(m, 'userRole');
		user['userPhoto'] = getXmlNodeValue(m, 'userPhoto');
		user['updatedDate'] = getXmlNodeValue(m, 'userUpdatedDate');
		chat['user'] = user;
	}
	
	if (m.getElementsByTagName('parentMessage').length > 0) {
		var parentMessage = {};
		parentMessage['id'] = getXmlNodeAttribute(m, 'parentMessage', 'id');
		parentMessage['summary'] = getXmlNodeValue(m, 'parentMessageSummary');
		parentMessage['author'] = getXmlNodeValue(m, 'parentMessageAuthor');
		parentMessage['sex'] = getXmlNodeValue(m, 'parentMessageSex');
		chat['parentMessage'] = parentMessage;
	}

	return chat;
}

/* get quoted comment summary */
function getSubComment(txt) {
	var stIn = txt.indexOf("[quote]");
	var fnIn = txt.indexOf("[/quote]");
	
	if (stIn != -1 && fnIn != -1 && (stIn < fnIn)) {
		return txt.substring(stIn, fnIn).replace("[quote]", "");
	}
	else {
		return "";
	}
}

/* returns comment summary without quotated part */
function getPlainMessage(txt) {
	var fnIn = txt.lastIndexOf("[/quote]");
	if (fnIn != -1) {
		return txt.substring(fnIn).replace("[/quote]", "");
	}
	else {
		return txt;
	}
}
