var lang_loading = '<div width="100%" align="center">Идет загрузка...</div>';
var lang_error_loading = 'К сожалению, ваш браузер не поддерживает динамическую загрузку данных';
var lang_wrong_format = 'Неправильный формат загружаемых данных: ';

function ShowObjectId(url, object_id) {
	if (SetInnerHTML(object_id, lang_loading)) {
		return true;
	}
	return LoadNewSuggest (url);
}
function HideObjectId(object_id) {
	return SetInnerHTML(object_id, '');
}


function ShowRoot(url, root_id, tree_id) {
	var object_id = "root_" + root_id;
	var ico_id = "ico_root_" + root_id;
	url += "?ajax=true&root_id=" + root_id + "&tree_id=" + tree_id;
	return ShowRootObjectId(url, object_id, ico_id);
}
function ShowRootObjectId(url, object_id, ico_id) {
	var ico_object = document.getElementById(ico_id);
	if (ico_object && ico_object.src) {
		ico_object.src = ico_object.src.replace(/plus.gif/g, "minus.gif");
	}
	if (SetInnerHTML(object_id, lang_loading)) {
		return true;
	}
	return LoadNewSuggest (url);
}
function HideRoot(root_id) {
	var object_id = "root_" + root_id;
	var ico_id = "ico_root_" + root_id;
	if (HideRootObjectId(object_id, ico_id)) {
		return true;
	}
	return HideMsg(root_id);
}
function HideRootObjectId(object_id, ico_id) {
	var ico_object = document.getElementById(ico_id);
	if (ico_object && ico_object.src) {
		ico_object.src = ico_object.src.replace(/minus.gif/g, "plus.gif");
	}
	return SetInnerHTML(object_id, '');
}
function ShowHideRoot(url, root_id, tree_id) {
	var object_id = "root_" + root_id;
	var ico_id = "ico_root_" + root_id;
	url += "?ajax=true&root_id=" + root_id + "&tree_id=" + tree_id;
	if (IfInnerHTML(object_id)) {
		if (HideRootObjectId(object_id, ico_id)) {
			return true;
		}
		return HideMsg(root_id);
	} else {
		return ShowRootObjectId(url, object_id, ico_id);
	}
}


function ShowMsg(url, msg_id, level, tree_id) {
	var object_id = "msg_" + msg_id;
	url += "?ajax=true&qid=" + msg_id + "&tree_id=" + tree_id + "&level=" + level;
	return ShowObjectId(url, object_id);
}
function HideMsg(msg_id) {
	var object_id = "msg_" + msg_id;
	return HideObjectId(object_id);
}
function ShowHideMsg(url, msg_id, level, tree_id) {
	var object_id = "msg_" + msg_id;
	url += "?ajax=true&qid=" + msg_id + "&tree_id=" + tree_id + "&level=" + level;
	if (IfInnerHTML(object_id)) {
		return HideObjectId(object_id);
	} else {
		return ShowObjectId(url, object_id);
	}
}
function ShowHideRootMsg(url, msg_id, level, tree_id) {
	var object_id = "msg_" + msg_id;
	if (IfInnerHTML(object_id)) {
		return HideMsg(url);
	} else {
		if (ShowMsg(url, msg_id, level, tree_id)) {
			return true;
		}
		return ShowRoot(url, msg_id);
	}
}


function ShowUser(url, msg_id, user_id) {
	var object_id = "user_" + msg_id;
	url += "?ajax=true&user_id=" + user_id + "&msg_user_id=" + msg_id;
	return ShowObjectId(url, object_id);
}
function HideUser(msg_id) {
	var object_id = "user_" + msg_id;
	return HideObjectId(object_id);
}
function ShowHideUser(url, msg_id, user_id) {
	var object_id = "user_" + msg_id;
	url += "?ajax=true&user_id=" + user_id + "&msg_user_id=" + msg_id;
	if (IfInnerHTML(object_id)) {
		return HideObjectId(object_id);
	} else {
		return ShowObjectId(url, object_id);
	}
}

function ShowHideMoveMsg(url, msg_id) {
	var object_id = "move_msg_" + msg_id;
	url += "?ajax=true&move_msg_id=" + msg_id;
	if (IfInnerHTML(object_id)) {
		return HideObjectId(object_id);
	} else {
		return ShowObjectId(url, object_id);
	}
}

function ShowNewMsg(url, msg_id, tree_id, is_editable) {
	var object_id = "newmsg_" + msg_id;
	url += "?ajax=true&qid=" + msg_id + "&tree_id=" + tree_id + "&action=" + (is_editable? "edit": "reply");
	return ShowObjectId(url, object_id);
}
function HideNewMsg(msg_id) {
	var object_id = "newmsg_" + msg_id;
	return HideObjectId(object_id);
}
function ShowHideNewMsg(url, msg_id, tree_id, is_editable) {
	var object_id = "newmsg_" + msg_id;
	url += "?ajax=true&qid=" + msg_id + "&tree_id=" + tree_id + "&action=" + (is_editable? "edit": "reply");
	if (IfInnerHTML(object_id)) {
		return HideObjectId(object_id);
	} else {
		return ShowObjectId(url, object_id);
	}
}


function ShowPage(url, next_page, tree_id) {
	var object_id = "page_" + next_page;
	var ico_id = "ico_page_" + next_page;
	url += "?ajax=true&tree_id=" + tree_id + "&next_page=" + next_page;
	return ShowPageObjectId(url, object_id, ico_id);
}
function ShowPageObjectId(url, object_id, ico_id) {
	var ico_object = document.getElementById(ico_id);
	if (ico_object && ico_object.src) {
		//ico_object.src = ico_object.src.replace(/next.gif/g, "prev.gif");
	}
	if (SetInnerHTML(object_id, lang_loading)) {
		return true;
	}
	return LoadNewSuggest (url);
}
function HidePage(next_page) {
	var object_id = "page_" + next_page;
	var ico_id = "ico_page_" + next_page;
	return HidePageObjectId(object_id, ico_id);
}
function HidePageObjectId(object_id, ico_id) {
	var ico_object = document.getElementById(ico_id);
	if (ico_object && ico_object.src) {
		//ico_object.src = ico_object.src.replace(/prev.gif/g, "next.gif");
	}
	return SetInnerHTML(object_id, '');
}
function ShowHidePage(url, next_page, tree_id) {
	var object_id = "page_" + next_page;
	var ico_id = "ico_page_" + next_page;
	url += "?ajax=true&tree_id=" + tree_id + "&next_page=" + next_page;
	if (IfInnerHTML(object_id)) {
		return HidePageObjectId(object_id, ico_id);
	} else {
		return ShowPageObjectId(url, object_id, ico_id);
	}
}


function SetInnerHTML(object_id, text) {
	var curr_object = document.getElementById(object_id);
	if (curr_object) {
		curr_object.innerHTML = text;
		return false;
	}
	return true;
}
function IfInnerHTML(object_id) {
	var curr_object = document.getElementById(object_id);
	if (curr_object && curr_object.innerHTML) {
		return true;
	} else {
		return false;
	}
}

function CreateXMLHTTP () {
	var ObjectXMLHTTP = null;
	try {
		ObjectXMLHTTP = new ActiveXObject ("Msxml2.XMLHTTP");
	}
	catch (e) {
		try {
			ObjectXMLHTTP = new ActiveXObject ("Microsoft.XMLHTTP");
		}
		catch (oc) {
			ObjectXMLHTTP = null;
		}
	}
	if (!ObjectXMLHTTP && typeof XMLHttpRequest != "undefined") {
		ObjectXMLHTTP = new XMLHttpRequest ();
	}
	return ObjectXMLHTTP;
}
function LoadNewSuggest (url) {
	var ObjectXMLHTTP = CreateXMLHTTP ();
	if (!ObjectXMLHTTP) {
		//alert(lang_error_loading);
		return true;
	}
	ObjectXMLHTTP.open ("GET", url, true);         // читать новые данные
	ObjectXMLHTTP.onreadystatechange = function () {  // по окончании загрузки
		if (ObjectXMLHTTP.readyState == 4 && ObjectXMLHTTP.responseText) {
			if (ObjectXMLHTTP.responseText.charAt (0) != "<") {
				//alert(ObjectXMLHTTP.responseText);
				eval(ObjectXMLHTTP.responseText);  // выполнить загруженные команды
			} else {
				alert(lang_wrong_format + ObjectXMLHTTP.responseText);
			}
		}
	}
	ObjectXMLHTTP.send (null);
	return false;
}

