function Global_RequeryEverythingOnPage() 
{
var _s="IgnoreCache=1";
with (location)
	if (search.indexOf(_s)!=-1) reload();
		else href=href+(search=="" ? "?" :"&")+_s;
}

/* FORM */
var Form_Submitting=Form_IFrame=Form_CheckTimer=null;
Form_IFrame=document.getElementsByTagName("IFRAME")[0];
if (Form_IFrame!=null) Form_IFrame.src="about:blank";

function Form_Fill(id) 
{
var _f=document.getElementById(id),_vals,_links,_fld,_flds,_v;
while (_f.tagName!="FORM") {
	_f=_f.parentNode;
	if (_f==null) return;
}
eval("_vals=" + id + "_values");
eval("_links=" + id + "_links");
for (var i=1; i<_vals.length; i++) {
	_fld=_flds=_f.elements[_vals[i][0]];
	_v=_vals[i][1];
	if (typeof(_flds.length)=="number" && _flds[0].tagName.toUpperCase()!="OPTION") _fld=_flds[0];
	if (_fld.disabled) _fld.setAttribute("_dis", true, false);
	switch (_fld.tagName.toUpperCase()) {
	case "INPUT":
		switch (_fld.type.toLowerCase()) {
		case "radio":
			for (var i=0; i<_flds.length; i++) {
				_fld=_flds[i];
				_fld.attachEvent("onclick", Form_AttachFieldChange);
				_fld.checked=(_v==_fld.value);
				_fld.defaultChecked=_fld.checked;
			}
			break;
		case "checkbox":
			_fld.attachEvent("onclick", Form_AttachFieldChange);
			_v=ToBoolean(_v);
			_fld.checked=_v;
			_fld.defaultChecked=_v;
			break;
		default:
			_fld.attachEvent("onchange", Form_AttachFieldChange);
			_fld.value=_v;
			_fld.defaultValue=_v;
		}
		break;
	case "SELECT":
		_fld.attachEvent("onchange", Form_AttachFieldChange);
		if (_v=="") break;
		var _o=_fld.options;
		for (var j=0; j<_o.length; j++)
			if (_o[j].value==_v) {
				_fld.selectedIndex=j;
				_o[j].defaultSelected=true;
				_o[j].setAttribute("selected", "selected", false);
				break;
			}
		_v="";
		break;
	case "TEXTAREA":
		_fld.attachEvent("onchange", Form_AttachFieldChange);
		_fld.value=_v;
		_fld.defaultValue=_v;
		break;
	default:
		alert(_fld.tagName.toUpperCase());
		break;
	}
	Form_ProcessFieldChange(_links, _f, _fld);
	Form_UpdateDisabled(_fld)
}/*for*/
/* find and prepare IFRAME */
if (Form_IFrame==null) return;
_f.target=Form_IFrame.name;
/*
Form_IFrame.style.display="block";
Form_IFrame.style.width="300px";
Form_IFrame.style.height="100px";
*/
}

function Form_AttachFieldChange() {
var _links,_fld=event.srcElement;
if (_fld.tagName.toUpperCase()=="INPUT")
	if (_fld.type.toLowerCase()=="checkbox" || _fld.type.toLowerCase()=="radio")
		_fld.focus();
var id=_fld.form.id;
eval("_links=" + id + "_links");
Form_ProcessFieldChange(_links, _fld.form, _fld);
}

function Form_ProcessFieldChange(lnks, frm, fld) 
{
/* надо найти все вхождения где тек. поле MASTER, и каждый из CHILD обработать отдельно */
var i,j,v,dis;
for (i=1; i<lnks.length; i++)
	if (lnks[i][0]==fld.name) { /* master совпал, берем slave и проверяем всех его master */
		dis=false;
		for (j=1; j<lnks.length; j++) {
			if (lnks[i][1]==lnks[j][1]) {
				v=Form_GetValue(frm, lnks[j][0]);
				if (lnks[j][3]==null) {
					/* needs any nonempty value */
					if (v=="") dis=true;
				} else {
					/* needs exactly specified value */
					if (v!=lnks[j][3]) dis=true;
				}
				if (dis) break;
			}
		}
		frm.elements[lnks[i][1]].disabled=dis;
		Form_UpdateDisabled(frm.elements[lnks[i][1]]);
	}
}

function Form_GetValue(frm, nm) {
var _es=frm.elements[nm],_e,i;
if (typeof(_es.length)=="number") {
	if (_es[0].tagName.toUpperCase()=="OPTION") _es=Array(_es);
} else {
	_es=Array(_es);
}
for (i=0; i<_es.length; i++) {
	_e=_es[i];
	switch (_e.tagName.toUpperCase()) {
	case "INPUT":
		switch (_e.type.toLowerCase()) {
		case "radio":
		case "checkbox":
			if (_e.checked) return _e.value;
			break;
		default:
			return _e.value;
		}
		break;
	case "TEXTAREA":
		return _e.value;
	case "SELECT":
		return _e.value;
	}
}
return "";
}


function Form_UpdateDisabled(fld) {
var _ch=fld.parentNode.childNodes, _dis=true;
for (var i=0; i<_ch.length; i++)
	if (_ch[i].nodeType==1)
		switch (_ch[i].tagName.toUpperCase()) {
		case "INPUT":
			if (_ch[i].type.toLowerCase()!="hidden")
			_dis=(_dis && _ch[i].disabled);
			break;
		case "SELECT":
		case "TEXTAREA":
			_dis=_dis && _ch[i].disabled;
			break;
		}
var _td=fld.parentNode, _tr=_td.parentNode;
_tr.disabled=_dis;
if (_td==_tr.firstChild && _tr.previousSibling!=null)
	if (_tr.previousSibling.firstChild!=null && _tr.previousSibling.firstChild.className=='widelabel')
		_tr.previousSibling.disabled=_dis;
}


function Form_Submit(id, name) 
{
if (Form_Submitting!=null) 
	return event.returnValue=false;
var _f=event.srcElement;
_f.target=Form_IFrame.name;
_f.action = "/submitter.aspx?form="+name+"&x__random="+Math.random();
_f.elements["x__submit"].disabled=true;
_f.elements["x__reset"].disabled=true;
Form_Submitting=_f;
Form_CheckTimer=setInterval("Form_CheckSubmit()", 250);
}

function Form_SubmitDirect(id, flds) 
{
if (Form_Submitting!=null) 
	return event.returnValue=false;
Form_Submitting=window;
_src = "/submitter.aspx?form=" + id + "&x__random="+Math.random() + "&";
for (var i=0; i<flds.length; i++)
	_src+=(flds[i][0]+"="+flds[i][1]+"&");
Form_IFrame.src = _src;
Form_CheckTimer=setInterval("Form_CheckSubmit()", 250);
}


function Form_CheckSubmit()
{
try {
	var x=window.frames(Form_IFrame.name).document;
	if (x.location.href=="about:blank") return;
	clearInterval(Form_CheckTimer);
	Form_CheckTimer=null;
	Form_onIFrameLoad();
} catch(e) {}
}


function Form_onIFrameLoad() 
{
var _f=Form_Submitting,_b=window.frames(Form_IFrame.name).document.body;
if (_f!=window)
{
	_f.elements["x__submit"].disabled=false;
	_f.elements["x__reset"].disabled=false;
}
var _status=_b.getAttribute("status", false), _url=_b.getAttribute("url", false), _text=_b.innerText.replace(/([^\\])\\n/g, "$1\n");
if (_status==null || _status=="") _status="0";
switch (_status) {
case "0":
	alert("Неизвестный ответ сервера.\nПожалуйста запомните введенные данные и обновите страницу (клавишей F5 или кнопкой 'Refresh' на панели инструментов).\n\nUnknown server response.\nPlease memorize you data and refresh this page (via F5 key 'Refresh' toolbar button).");
	alert(_b.outerHTML);
	break;
case "200":
	if (_text!="") alert(_text);
	if (_url!=null)
		if (_url=="") location.reload();
			else location.href=_url;
	break;
default:
	alert(_text);
	break;
}
Form_Submitting=null;
Form_IFrame.src="about:blank";
}

function Form_OpenPreview(frm)
{
var _f=(typeof(frm)=="object" ? frm : event.srcElement.form);
var _w=window.open("", "preview", "width=700, height=500, top=40, left=40, menu=0, addressbar=0, resizable=1, scrollbars=1, status=1")
_f.target=_w.name;
_f.action="preview.aspx?rnd="+Math.random();
Form_Submitting=_f;
_f.submit();
setTimeout("Form_Submitting=null", 1000);
}


/* SUBSCRIBE */
function News_Subscribe() {Form_SubmitDirect("SUBSCRIBE:NEWS", Array(Array("X__ACTION", "SUB")))}
function News_Unsubscribe() {Form_SubmitDirect("SUBSCRIBE:NEWS", Array(Array("X__ACTION", "UNSUB")))}
function Thread_Subscribe(id) {Form_SubmitDirect("SUBSCRIBE:THREAD", Array(Array("X__ACTION", "SUB"), Array("ID_FORUM", id)))}
function Thread_Unsubscribe(id) {Form_SubmitDirect("SUBSCRIBE:THREAD", Array(Array("X__ACTION", "UNSUB"), Array("ID_FORUM", id)))}
function Post_Subscribe(id) {Form_SubmitDirect("SUBSCRIBE:POST", Array(Array("X__ACTION", "SUB"), Array("ID_THREAD", id)))}
function Post_Unsubscribe(id) {Form_SubmitDirect("SUBSCRIBE:POST", Array(Array("X__ACTION", "UNSUB"), Array("ID_THREAD", id)))}

/* FORUM & TEXTWRITING */
var _Text_ActiveTArea=null;

function Text_SaveTArea() {
	if(_Text_ActiveTArea!=null) return;
	_Text_ActiveTArea=document.activeElement;
	if(_Text_ActiveTArea.tagName.toUpperCase()!="TEXTAREA") _Text_ActiveTArea=null;
}


function Text_ResetTArea() {
	_Text_ActiveTArea=null;
}

function Text_wrapText(l,r) {
var _t=_Text_ActiveTArea,_s=document.selection, _tr;
if (_t==null) _t=document.all("TEXT");
if (typeof(_s)=="object" && _s.type=="Text") {
	_tr=_s.createRange();
	_tr.text=(l+_tr.text+r);
} else {
	_t.value=_t.value+l+r;
}
_t.focus();
}

function Text_writeText(text) {if (text!="") Text_wrapText(text, '')}



function ToBoolean(val) 
{
if (val==null) return false;
val=String(val);
if (val=="" || val=="0" || val.toLowerCase()=="false") return false;
return true;
}

/* (c) Dmitry Popov (just_dmitry), 2004 */