var is_open = Array();
var is_loaded = Array();
var cache_msg = 'идет загрузка данных...';
var empty_msg = 'данных нет...';
var img_open = '/i/minus.gif';
var img_close = '/i/plus.gif';
var img_open_alt = 'свернуть список';
var img_close_alt = 'раскрыть список';
var wait_delay = 300;

function WaitForItem(url,id) {
	var oDiv = getObj(id);
	if(oDiv) {
		//window.status = "ok";
		GetItems(url,id);
		return;
	}
	else {
		//window.status = "trying...";
		setTimeout(function() {
			WaitForItem(url,id);
		},wait_delay);
	}
}

function GetItems(url,id) {
	var oDiv = getObj(id);
	var oImg = getObj(id+'_img');
	//oVis = oDiv.style.display;
	// List is open, close it
	if(is_open[id]) {
		oDiv.style.display = 'none';
		oImg.src = img_close;
		oImg.title = img_close_alt;
		is_open[id] = false;
	}
	else {
		// List is loaded but closed, open it from cache
		if(is_loaded[id]) {
			oDiv.style.display = 'block';
			oImg.src = img_open;
			oImg.title = img_open_alt;
		}
		// List isn't loaded, load it
		else {
			InsertHtml(cache_msg,oDiv);
			makeRequest(url,oDiv);
			oImg.src = img_open;
			oImg.title = img_open_alt;
			is_loaded[id] = true;
		}
		is_open[id] = true;
	}
	return false;
}

function makeRequest(url,oDiv) {
	var http_request = false;
	
	if(window.XMLHttpRequest) { // Mozilla, Safari, ...
		http_request = new XMLHttpRequest();
		if(http_request.overrideMimeType) http_request.overrideMimeType('text/xml');
	}
	else if(window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e) {}
		}
	}
	
	if(!http_request) Alternate(url,oDiv);
	else {
		http_request.onreadystatechange = function() {
			if(http_request.readyState == 4) {
				if(http_request.status == 200) InsertHtml(http_request.responseText,oDiv);
				else InsertHtml(empty_msg,oDiv);
			}
		}
		http_request.open('GET',url,true);
		http_request.send(null);
	}
}

function InsertHtml(data, oDiv) {
	data = data || empty_msg;
	oDiv.innerHTML = data;
}

function Alternate(url,oDiv) {
	url = url + '&alter=1';
	with (document) {
		// Oh shit! Damned stupid fucked Opera 7.23 does not allow to create SCRIPT
		// element over createElement (in HEAD or BODY section or in nested SPAN -
		// no matter): it is created deadly, and does not response on href assignment.
		// So - always create SPAN.
		oSpan = body.appendChild(createElement("SPAN"));
		oSpan.style.display = 'none';
		oSpan.innerHTML = '<script></script>';
		setTimeout(
			function() {
				var s = oSpan.getElementsByTagName('script')[0];
				s.language = 'JavaScript';
				s.charset = 'windows-1251';
				if(s.setAttribute) s.setAttribute('src',url);
				else s.src = url;
			},10);
	}
	
	setTimeout(
		function() {
			if(window.str) InsertHtml(str,oDiv);
			else InsertHtml(empty_msg,oDiv);
		}
	,500);
}

function getObj(obj){
	return (o = document.getElementById(obj))? o : document.all[obj];
}
