var pj=new pajax();

function de(wnd)
{
	return document.getElementById(wnd);
}

function getWindowObj(obj)
{
	//    var obj=this.parentNode;
	while ((typeof(obj)=='object')&&(obj.parentNode))
	{
		if ((obj.className=="wnd")||(obj.className=="tabview"))
		{
			return obj;
		}
		obj=obj.parentNode;
	}
	return -1;
}

function getWindowID(obj)
{
	var wnd=getWindowObj(obj);
	if (wnd)
	{
		var re=/([A-Za-z0-9]+)_wnd/;
		var arr=re.exec(wnd.id);

		return arr[1];
	}
	else
	return "";
}


function getWindowBody(obj)
{
	//    var obj=this.parentNode;
	return getWindowID(obj)+"_tbox";

	/*    while ((typeof(obj)=='object')&&(obj.parentNode))
	{
	if (obj.className=="wnd")
	{
	var re=/([A-Za-z0-9]+)_wnd/;
	var arr=re.exec(obj.id);

	return arr[1]+"_tbox";
	}
	obj=obj.parentNode;
	}
	return -1;*/
}



function parseResult(obj,text)
{
	var data;
	try
	{
		data=eval(text);
	}
	catch(err)
	{
		alert("Ошибка парсинга: "+text);
		return;
	}
	if (data)
	{
	for (i=0;i<data.length;i++)
	{
		if (data[i].target=='new_wnd')
		{
		
		}
		else if (!document.getElementById(data[i].target))
		{
/*			if (data[i].target=="")
				alert(data[i].text);
			else*/
				alert("Не могу найти объект "+data[i].target+"! ! !");
		}
		else
		{
			if (data[i].i_type=='add')
			{
				document.getElementById(data[i].target).innerHTML=document.getElementById(data[i].target).innerHTML+data[i].text;
			}
			else
			{
				if (!((data[i].i_type=="notnull")&&(data[i].text=="")))
					document.getElementById(data[i].target).innerHTML=data[i].text;
			}
			if (data[i].script)
			{
				eval(data[i].script);
			}
		}
	}
	}
}

function GetParams(name)
{
	if(!name)
	{
		return;
	}
	var val = name;
	var Out = '';
	val = val.split(",");
	for(i=0; i<val.length; i++)
	{
		if(val[i])
		{
			el = document.getElementsByName(val[i]);
			if(el.length>0)
			{
				for(j=0;j<el.length; j++)
				{
					if(el[j].type=='select-multiple')
					{
						for(k=0; k < el[j].options.length; k++)
						{
							if(el[j].options[k].selected)
								Out=Out + "&" + el[j].name + "=" + encodeURIComponent(el[j].options[k].value);
						}
					}
					else if(!(((el[j].type=='checkbox')||(el[j].type=='radio'))&&(!el[j].checked)))
					Out=Out + "&" + el[j].name + "=" + encodeURIComponent(el[j].value);
				}
			}
			else if(el.length==1)
			{
				Out=Out + "&" + el[0].name + "=" + encodeURIComponent(el[j].value);
			}
			Out[Out.length]=val[i];
		}
	}
	if(Out.indexOf('&')==0)
	Out=Out.substring(1);
	return Out;
}

function getFormData(formId)
{
	data='';
	parsed=new Object();

	if (formId)
	{
		frm=document.getElementById(formId);
		if (!frm)
		return 'dd=123';
		for (i=0;i<frm.elements.length;i++)
		{
			if((frm.elements[i].name)&&(!parsed[frm.elements[i].name]))
			{
				data=data.concat(frm.elements[i].name,",");
				parsed[frm.elements[i].name]=1;
			}
		}
		data=data.substr(0,data.length-1);
	}
	data=GetParams(data);
	return data;
}

function p_uneval(d) // пока тупая обработка массива двойной вложенности
{
	var res='[';
	for (i=0;i<d.length;i++)
	{
		if (i!=0)
			res+=',';
		res+='[';
		for (j=0;j<d[i].length;j++)
		{
			if (j!=0)
				res+=',';
			res+='"'+d[i][j]+'"';
		}
		res+=']';
	}
	res+=']';
	
	return res;
}


function pajax()
{
	var y="";

	this.testFunc=function()
	{
		document.getElementById('data').innerHTML="new data";
	}

	this.httpRequest=function()
	{

		if (window.XMLHttpRequest)
		{
			//создание объекта для всех браузеров кроме IE
			requestObj = new XMLHttpRequest();
		}
		else if (window.ActiveXObject)
		{
			//для IE
			requestObj = new ActiveXObject("Msxml2.XMLHTTP");
			if (!requestObj)
			{
				requestObj = new ActiveXObject("Microsoft.XMLHTTP");
			};
		};
	}

	this.sendRequest=function(url,data)
	{
		this.httpRequest();
		//определяем call-back функцию
		requestObj.onreadystatechange = this.responseServer;
		//подготовка отправки данных, readyState=1
		requestObj.open('POST',url,true);
		/*
		Т.к. данные отправляются POST методом, то необходимо
		серверу отослать заголовок информирующий его об этом
		*/
		requestObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=cp1251");
		//отправка данных на сервер
		requestObj.send(data);
	};

	this.addSelect=function(obj)
	{
		//ответ сервера в виде обычного текста
		var docTEXT = requestObj.responseText;
		obj.setAttribute('disabled',true);
		//создаем элемент div
		var div = document.createElement('div');

		//добавляем ответ сервера в div
		div.innerHTML = docTEXT;
		//добавляем div с ответом сервера в дерево документа
		document.getElementById('data').appendChild(div);
	};


	this.responseServer=function()
	{
		if (requestObj.readyState == 4)
		{
			var status = requestObj.status;
			if (status == 200)
			{
				//	    	document.getElementById(y).innerHTML=requestObj.responseText;
				parseResult(y,requestObj.responseText);
			}
			else if (status == 400)
			{
				alert('Неправильный запрос');
			}
			else if (status == 500)
			{
				alert('Внутреняя ошибка на сервере');
			}
			else if (status == 503)
			{
				var time = requestObj.getResponseHeader('Retry-After')*1000;
				alert('Сервер перегружен. Запрос будет повторен через: '+time+' секунд');
				setTimeout(sendRequest(url,path),time);
			}
			else
			{
				alert('Ошибочный ответ сервера ['+status+']');
			};
		};
	};

	this.sendData=function(obj)
	{
		var Elpath = document.form.path;
		var url = 'index.php';
		if (document.form.flag.value == '0')
		{
			var path = Elpath.value + '/' + obj.value;
		}
		else
		{
			var path = Elpath.value + '/Device["' + obj.value + '"]';
			/*
			методом GET отправляем серверному скрипту информация о том
			что необходим конкретный элемент Device
			*/
			url = 'index.php?flag=1';
		};
		//присваиваем переменной формы path значение текущего запроса
		Elpath.value = path;
		//кодируем передаваемую строку path
		path = 'path='+encodeURIComponent(path);
		this.y = obj;
		this.sendRequest (url,path);
	};

	this.sendDataTxt=function(obj,str)
	{
		if (typeof(obj)=='object')
			obj=getWindowBody(obj);

		y = obj;

		var url = 'load.php?trg='+y+'&'+str;
		this.sendRequest (url,'');
	};

	this.sendDataPost=function(obj,str,dat)
	{
		if (typeof(obj)=='object')
			obj=getWindowBody(obj);
		y = obj;
		var url = 'load.php?trg='+y+'&'+str;
		this.sendRequest (url,dat);
	};

	this.sendDataForm=function(obj,str,formId)
	{
		var dat=getFormData(formId);
		this.sendDataPost(obj,str,dat);
	}
	
	this.sendMultiDataTxt=function(data)
	{
		var url='load.php?multi=1';
		dat='dat='+encodeURIComponent(p_uneval(data));
		this.sendRequest(url,dat);
	}
	this.sendDataArray=function(obj,arr)
	{
		var str='';
		for(key in arr)
		{
			if (str)
				str+='&';
			str+=key+'='+encodeURIComponent(arr[key]);
		}
		this.sendDataTxt(obj,str);
	}
	this.sendDataArrayPost=function(obj,str,arr)
	{
		var dat='';
		for(key in arr)
		{
			if (dat)
				dat+='&';
			dat+=key+'='+encodeURIComponent(arr[key]);
		}
		this.sendDataPost(obj,str,dat);
	}
}

var blocks=new Array();
var btimers=new Array();

function openMenu(menu)
{
	var iTop=25;

	var object = document.getElementById('menublocks');
//	for (var childItem in object.childNodes)
	for (i=0;i<object.childNodes.length;i++)
	{
		childItem=object.childNodes[i];
		if (childItem.nodeType==1)
		{
			var item=childItem;
			if (item.id!=menu)
			{
				if (blocks[item.id]>0)
				{
					if (btimers[item.id])
					{
						clearTimeout(btimers[item.id]);
					}
					btimers[item.id]=window.setTimeout("fTimein('"+item.id+"')",20);
				}
				else
				{	
					document.getElementById('test_'+item.id).style.clip = 'rect(0px 150px '+0+'px 0px)';
					item.style.height=iTop+0+'px';
				}
			}
			if (!blocks[item.id]) blocks[item.id]=0;
			if (item.id==menu)
			{
				if (btimers[item.id])
				{
					clearTimeout(btimers[item.id]);
				}
				if (blocks[item.id]==0)
					btimers[item.id]=window.setTimeout("fTimeout('"+item.id+"')",20);
				else
					btimers[item.is]=window.setTimeout("fTimein('"+item.id+"')",20);
			} 
		}
	}
}

function fTimeout(elem)
{
	var iTop=25;
	var iDiff=3;
	document.getElementById('test_'+elem).style.clip = 'rect(0px 150px '+(blocks[elem]+=iDiff)+'px 0px)';
	document.getElementById(elem).style.height=iTop+blocks[elem]+'px';
	if (blocks[elem]<document.getElementById('test_'+elem).offsetHeight)
	{
		btimers[elem]=window.setTimeout("fTimeout('"+elem+"')",10);
	}
	else
	{
		btimers[elem]=null;
	}
}
function fTimein(elem)
{
	var iTop=25;
	var iDiff=-3;
	document.getElementById('test_'+elem).style.clip = 'rect(0px 204px '+(blocks[elem]+=iDiff)+'px 0px)';
	document.getElementById(elem).style.height=iTop+blocks[elem]+'px';
	if (blocks[elem]>0)
	{
		btimers[elem]=window.setTimeout("fTimein('"+elem+"')",10);
	}
	else
	{
		btimers[elem]=null;
	}
}
function fOpenDD(elem)
{
	document.getElementById('mmb_'+elem).style.display='';

	var iDiff=3;
	if (!blocks[elem]) blocks[elem]=0;
	document.getElementById('mmb_'+elem).style.clip='rect(0px 204px '+(blocks[elem]+=iDiff)+'px 0px)';
	
	if (btimers[elem])
	{
		clearTimeout(btimers[elem]);
	}
	if (blocks[elem]<document.getElementById('mmb_'+elem).offsetHeight)
	{
		btimers[elem]=window.setTimeout("fOpenDD('"+elem+"')",10);
	}
	else
	{
		btimers[elem]=null;
	}
}
function fCloseDD(elem)
{
	var iDiff=-3;
	if (!blocks[elem]) blocks[elem]=0;
	document.getElementById('mmb_'+elem).style.clip='rect(0px 204px '+(blocks[elem]+=iDiff)+'px 0px)';
	if (btimers[elem])
	{
		clearTimeout(btimers[elem]);
	}
	if (blocks[elem]>0)
	{
		btimers[elem]=window.setTimeout("fCloseDD('"+elem+"')",10);
	}
	else
	{
		document.getElementById('mmb_'+elem).style.display='none';
		btimers[elem]=null;
	}	
}