function appendClass(element, cls) {
		if (element) {
				var attribute = "class";
				var elementClass = element.getAttribute(attribute);
				if (!elementClass) {
						attribute = "className";
						elementClass = element.getAttribute(attribute);
				}
				if (elementClass == null && elementClass == "")
						elementClass = cls;
				else
						elementClass += " " + cls;
				element.setAttribute(attribute, elementClass);
		}
}

function removeClass(element, cls) {
		if (element) {
				var attribute = "class";
				var elementClass = element.getAttribute(attribute);
				if (!elementClass) {
						attribute = "className";
						elementClass = element.getAttribute(attribute);
				}
				if (!elementClass) elementClass = element.getAttribute("className");
				if (elementClass != null) {
						var newElementClass = "";
						var elementClassArray = elementClass.split(" ");
						for (var i = 0; i < elementClassArray.length; i++) {
								if (elementClassArray[i] != cls) {
										if (i > 0) newElementClass += " ";
										newElementClass += elementClassArray[i];
								}
						}
				}
				element.setAttribute(attribute, newElementClass);
		}
}

function getFirstElementChild(node, nodeName) {
		for (var i = 0; i < node.childNodes.length; i++) {
				if (node.childNodes[i].nodeName.toLowerCase() == nodeName) {
				return node.childNodes[i];
				}
		}
		return null;
}

function hlParent(thisElement, parentId) {
		var parentElement = document.getElementById("c" + parentId);
		var ulCmts = thisElement.parentNode.parentNode;
		if (ulCmts != null) {
				var li = getFirstElementChild(ulCmts, "li");
				if (li != null) {
						var divCmt = getFirstElementChild(li, "div");
						if (divCmt != thisElement) appendClass(parentElement, "parent");
				}
		}
}

function unhlParent(parentId) {
	var parentElement = document.getElementById("c" + parentId);
	removeClass(parentElement, "parent");
}

function ljLink(element) {
		element.removeAttribute('onmouseover');
		var re = /.*\/lj\/(\d+)\/(\d+)/g;
		var href = element.getAttribute("href").replace(re, "http://tema.livejournal.com/$1.html?thread=$2#t$2");
		element.setAttribute('href', href);
}

function outLink(element) {
		element.removeAttribute('onmouseover');
		var re = /.*\/link\/(.+)/;
		var href = element.getAttribute("href").replace(re, "$1");
		element.setAttribute('href', href);
}

function sToT(thisThreadId, thatThreadId) {
		var thisElement = document.getElementById("t" + thisThreadId);
		var thatElement = document.getElementById("t" + thatThreadId);
		if (thisElement && thatElement) {
				thatElement.scrollIntoView(true);
				if (thatThreadId < thisThreadId) {
						var scrollBack = document.getElementById("back" + thisThreadId);
						if (!scrollBack) {
								var scrollBackA = document.createElement("a");
								scrollBackA.setAttribute('href', '#t' + thisThreadId);
								scrollBackA.setAttribute('title', 'Обратно');
								scrollBackA.onclick = function() {
										return sToT(thatThreadId, thisThreadId);
								}
								scrollBackA.innerHTML = '&darr;';
								
								var scrollBack = document.createElement("li");
								scrollBack.setAttribute('id', 'back' + thisThreadId);
								scrollBack.setAttribute('class', 'ljb');
								scrollBack.appendChild(scrollBackA);
								
								var ljb = document.getElementById("ljb" + thatThreadId);
								if (ljb && ljb.parentNode) {
										ljb.parentNode.insertBefore(scrollBack, ljb);
								}
						}
				}
				else {
						var scrollBack = document.getElementById("back" + thatThreadId);
						if (scrollBack && scrollBack.parentNode) {
								scrollBack.parentNode.removeChild(scrollBack);
						}
				}
		}
		return false;
}

function changecss(theClass, element, value) {
	var cssRules;

	var added = false;
	for (var S = 0; S < document.styleSheets.length; S++) {

		if (document.styleSheets[S]['rules']) {
			cssRules = 'rules';
		} else if (document.styleSheets[S]['cssRules']) {
			cssRules = 'cssRules';
		} else {
			//no rules found... browser unknown
		}

		for (var R = 0; R < document.styleSheets[S][cssRules].length; R++) {
			if (document.styleSheets[S][cssRules][R].selectorText == theClass) {
				if (document.styleSheets[S][cssRules][R].style[element]) {
					document.styleSheets[S][cssRules][R].style[element] = value;
					added = true;
					break;
				}
			}
		}
		if (!added) {
			try {
				document.styleSheets[S].insertRule(theClass + ' { ' + element + ': ' + value + '; }', document.styleSheets[S][cssRules].length);

			} catch (err) {
				try {
					document.styleSheets[S].addRule(theClass, element + ': ' + value + ';');
				} catch (err) {}

			}
		}
	}
}
