function FrmInit()
{
	var oTable;

	oTable = document.getElementById('frmTbl');
	LoadXML('./?Form', FrmOnLoad, oTable);
}

function FrmOnLoad(XMLReq)
{
	var oTable;

	oTable = XMLReq.Param;
	DSTable = XMLReq.Req.responseXML.getElementsByTagName('fa');

	oTable.deleteRow(0);

	for(i = 0; i < DSTable.length; i++)
	{
		DSRecord = DSTable[i];
		sTxt = GetField(DSRecord, 'atxt');
		sFmt = GetField(DSRecord, 'afmt');
		sId  = GetField(DSRecord, 'aid');
		if(!sTxt | !sFmt || !sId)
			continue;

		oRow = oTable.insertRow(-1);

		oCellTxt = oRow.insertCell(-1);
		oCellTxt.width = '30%';
		oCellTxt.vAlign = 'top';
		//oCellTxt.style.borderBottom = '2 groove #A3CBBB';

		oCellTxt.innerHTML = sTxt;

		oCellFrm = oRow.insertCell(-1);
		oCellFrm.width = '70%';
		//oCellFrm.style.borderBottom = '2 groove #A3CBBB';

		switch(sFmt)
		{
		case '1':
			oCellFrm.innerHTML = '<input type=text id=t'+sId+' size=40> <input type=checkbox id=f'+sId+'> только в заголовках <input type=hidden id=h'+sId+' name='+sId+'>';
			break;

		case '3':
//<div ... margin-top: 5; padding-left: 7; 
//   <span id=L'+sId+'--1 style="display:none">-1</span>\
			oCellFrm.innerHTML = '\
<input type=button value="Скрыть" style="width:15ex; font-size:7pt; display: none" OnClick="FrmShowSpr(this, '+sId+');">\
  <div id=t'+sId+' style="position: relative; width: 100%; height: 25ex; overflow: auto; border: 1 solid black; background-color: #FFFFFF;">\
   <span id=L'+sId+'--1></span>\
</div>\
<table id=s'+sId+' border=0 width=100%></table>\
';
			oLvl = document.getElementById('L'+sId+'--1');
			FrmLoadLevel(oLvl, '-1', sId);
			break;

		case '4':
			oCellFrm.innerHTML = '<input type=text name='+sId+' size=15>&nbsp;&nbsp;<i><small>(дд.мм.гггг)</small></i>';
			break;
		}
  	}
}

function FrmOnLevelLoad(XMLReq)
{
	var oSub, oTable, oRow, oCell;
	var DSTable, DSRecord;
	var sImgSrc, sRef, sName;
	var i;

	oSub = XMLReq.Param;
	sId = XMLReq.Param2;
	sAttrId = XMLReq.Param3;
	if(!oSub || !sId || !sAttrId)
		return;

	oTable = document.createElement('table');
	oTable.border = '0';
	oTable.cellspacing='0';
	oTable.width='100%';
	//oTable.style.tableLayout = 'fixed';

	DSTable = XMLReq.Req.responseXML.getElementsByTagName('f');
	for(i = 0; i < DSTable.length; i++)
	{
		DSRecord = DSTable[i];
		sName = GetField(DSRecord, 'ft');
		sFid = GetField(DSRecord, 'fid');
		sExp = GetField(DSRecord, 'expand');
		sImgSrc = GetField(DSRecord, 'imgSrc');
		sRef = GetField(DSRecord, 'ref');

		oRow = oTable.insertRow(-1);

		oCell = oRow.insertCell(-1);
		oCell.width='16';
		oCell.vAlign='baseline';
		if(sExp)
			oCell.innerHTML = '<img border="0" src="'+sImgSrc+'" width=32 height=16 onclick="FrmToggle(this, '+sExp+', '+sAttrId+');">';
		else
			oCell.innerHTML = '<img border="0" src="'+sImgSrc+'" width=32 height=16>';

		oCell = oRow.insertCell(-1);
		oCell.width='17';
		oCell.vAlign='baseline';
		oCell.innerHTML = '<img border="0" style="position:relative; top:-1px" IssState=0 Src="Unchecked.gif" width=12 height=12 OnClick="FrmOnCheck(this, \''+sName+'\', '+sFid+', '+sAttrId+');">';

		oCell = oRow.insertCell(-1);
		oCell.innerHTML = sName+'<span style="display:none"></span>';
	}

	oSub.parentNode.replaceChild(oTable, oSub);
}

function FrmLoadLevel(oSub, sId, sAttrId)
{
	var bExpandable;
	if(sId != '')
	{
		oSub.innerHTML ='<br><i>Загрузка...</i>'
		LoadXML('./?FTree&a='+sAttrId+'&f='+sId, FrmOnLevelLoad, oSub, sId, sAttrId);
		bExpandable = true;
	}
	else
	{
		oSub.parentNode.replaceNode(document.createElement('table'));
		bExpandable = false;
	}

	return bExpandable;
}

function FrmToggle(oElem, sId, sAttrId)
{
	var oRow, oCell, oSub;
	var sSubStyleDisplay;
	var bExpandable;

	if(sId == '')
		return;

	oRow = oElem;
	while(oRow.tagName.toUpperCase() != 'TR')
	{
		oRow = oRow.parentNode;
		if(!oRow)
			break;
	}
	if(!oRow)
	{
		alert('internal error (unk Row)');
		return;
	}

	oCell = oRow.cells[2];
	if(!oCell)
	{
		alert('internal error (unk Cell)');
		return;
	}

	oSub = oCell.firstChild.nextSibling;
	if(!oSub)
	{
		alert('internal error (unk Sub)');
		return;
	}

	sSubStyleDisplay = oSub.style.display;

	if(oSub.tagName.toUpperCase() != 'TABLE')
	{
		oSub.style.display = '';
//		sSubStyleDisplay == '';
		bExpandable = FrmLoadLevel(oSub, sId, sAttrId);
	}
	else
	{
		if(oSub.innerHTML != '')
			bExpandable = true;
		else
			bExpandable = false;
	}

	if(bExpandable)
	{
		if(sSubStyleDisplay == 'none')
		{
			oSub.style.display = '';
			oElem.src = 'minus.gif';
		}
		else
		{
			oSub.style.display = 'none';
			oElem.src = 'plus.gif';
		}
	}
}

function FrmShowSpr(oBtn, sAttrId)
{
	var oDiv;
	oDiv = document.getElementById('t'+sAttrId);

	if(oDiv.style.display == 'none')
	{
		oBtn.value = "Скрыть";
		oDiv.style.display = '';
		/*
		var oSub;
		oSub = document.getElementById('L'+sAttrId+'--1');
		if(oSub && (oSub.tagName.toUpperCase() != 'TABLE'))
			FrmLoadLevel(oSub, '-1', sAttrId);

		//oDiv.scrollIntoView();
		*/
	}
	else
	{
		oBtn.value = "Показать";
		oDiv.style.display = 'none';
	}
}

function FrmOnCheck(oImg, sText, sId, sAttrId)
{
	var Row, Cell, Punct;
	var oVal;
	var Id, fid;

	oVal = document.getElementById('s'+sAttrId);

	if(oImg.IssState == 1)
	{
		oImg.IssState = 0;
		oImg.src = "Unchecked.gif"

		oRow = document.getElementById('sv'+sId);
		if(oRow)
			oVal.deleteRow(oRow.rowIndex);
	}
	else
	{
		oImg.IssState = 1;
		oImg.src = "Checked.gif"
		oImg.id = 'img'+sId;

		oRow = oVal.insertRow(-1);
		oRow.id = 'sv'+sId;
		oCell = oRow.insertCell(-1);
		oCell.innerHTML = '<i><font size=1 color=#002000>' + sText + '</font></i><input type=hidden name='+sAttrId+' value='+sId+'>';
	}
}

function FrmExec(oFrm)
{
	var	oField, oHidden;
	var sId, sReq;
	var i;

	for(i = 0; i < oFrm.elements.length; i++)
	{
		sId = oFrm.elements[i].id;
		if(!sId || (sId.substr(0,1) != 't'))
			continue;

		if(!oFrm.elements[i].value || (oFrm.elements[i].value == ''))
			continue;

		oHidden = document.getElementById('h'+sId.substr(1));
		if(!oHidden)
			continue;

		oField = document.getElementById('f'+sId.substr(1));

		if(oField && oField.checked)
			oHidden.value = '1+';
		else
			oHidden.value = '0+';
		oHidden.value += oFrm.elements[i].value;
	}

	sReq = '';
	for(i = 0; i < oFrm.elements.length; i++)
	{
		if(oFrm.elements[i].name == '')
			continue;
		if(oFrm.elements[i].value == '')
			continue;

		sReq += '&'+oFrm.elements[i].name+'='+oFrm.elements[i].value;
	}

	ResExec(sReq, true);

	return false;
}

function FrmClear()
{
	var oFrm, oRow, oCell, oInp, oInp2, oInp3, oDiv, oImg;
	var i, N, ii, NN;

	oFrm = document.getElementById('frmTbl');

	N = oFrm.rows.length;
	for(i = 0; i < N; i++)
	{
		oRow = oFrm.rows[i];
		oCell = oRow.cells[1];
		oInp = oCell.getElementsByTagName('input')[0];
		if(!oInp)
			continue;
		if(oInp.type.toLowerCase() == 'text')
		{
			oInp.value = '';
			oInp2 = oCell.getElementsByTagName('input')[1];
			if(oInp2.type.toLowerCase() == 'checkbox')
				oInp2.checked = false;
			oInp3 = oCell.getElementsByTagName('input')[2];
			if(oInp3.type.toLowerCase() == 'hidden')
				oInp3.value = '';
		}
		else if(oInp.type.toLowerCase() == 'button')
		{
			oDiv = oCell.getElementsByTagName('div')[0];
			sAttrId = oDiv.id.substr(1);
			oVal = document.getElementById('s'+sAttrId);
			if(oVal)
			{
				NN = oVal.rows.length;
				for(ii = 0; ii < NN; ii++)
				{
					oImg = document.getElementById('img'+oVal.rows[0].id.substr(2));
					oImg.IssState = 0;
					oImg.src = "Unchecked.gif"

					oVal.deleteRow(0);
				}

				//oVal.outerHTML = '<table id=s'+AttrId+' border=0 width=100%></table>';
			}
		}
	}
}

