var form={
init:function(){
	if(window.ActiveXObject){this.xml = new ActiveXObject("Microsoft.XMLHTTP")}
	else if(window.XMLHttpRequest){this.xml = new XMLHttpRequest()}
	},
getVal:function(el,dd){
	if(el&&el.getElementsByTagName(dd).length>0&&el.getElementsByTagName(dd)[0].firstChild){
		return el.getElementsByTagName(dd)[0].firstChild.nodeValue
	}
	else { return null } 
},
getAttr:function(el,dd){
	if(el){
		return el.getAttribute(dd)
	}
	else { return null } 
},
mkTable:function(xml,dd){
		var IE=(document.all)?true:false;
		var item,vv,i,j,tt,tr,td,input,div,colspan,nTD,form;
		var pat=/radio|checkbox/i;
		if(IE){
			form=document.createElement("<form action='"+xml.getElementsByTagName('form')[0].getAttribute('action')+"' name='"+xml.getElementsByTagName('form')[0].getAttribute('name')+"' enctype='"+xml.getElementsByTagName('form')[0].getAttribute('enctype')+"' method='"+xml.getElementsByTagName('form')[0].getAttribute('method')+"' id='"+xml.getElementsByTagName('form')[0].getAttribute('name')+"' onsubmit='"+xml.getElementsByTagName('form')[0].getAttribute('onsubmit')+"' accept-charset='UTF-8'>");
		}
		else {
			form=document.createElement("form");
			form.setAttribute("action",xml.getElementsByTagName('form')[0].getAttribute('action'));
			form.setAttribute("enctype",xml.getElementsByTagName('form')[0].getAttribute('enctype'));
			form.setAttribute("method",xml.getElementsByTagName('form')[0].getAttribute('method'));
			form.setAttribute("name",xml.getElementsByTagName('form')[0].getAttribute('name'));
			form.setAttribute("id",xml.getElementsByTagName('form')[0].getAttribute('name'));
			form.setAttribute("onsubmit",xml.getElementsByTagName('form')[0].getAttribute('onsubmit'));
			form.setAttribute("accept-charset","UTF-8");
		}
		this.rq=xml.getElementsByTagName('conf')[0].getAttribute('rqst');
		this.rqstFail=xml.getElementsByTagName('conf')[0].getAttribute('rqstFail');
		document.getElementById('formdiv').appendChild(form);
		this.form=form;
		if(IE){ tt=document.createElement('<TABLE border=0 cellpadding=0 cellspacing=0 align="center">') }
		else {
			tt=document.createElement("TABLE");
			tt.setAttribute("cellpadding","0");
			tt.setAttribute("cellspacing","0");
			tt.setAttribute("border","0");
			tt.setAttribute("align","center");
		}
		form.appendChild(tt);
		item=xml.getElementsByTagName('item');
		for (i=0; i<item.length; i++){
			var nTD=false;
			if(IE){ tr=tt.insertRow() }
			else {
				tr=document.createElement("tr");
				tt.appendChild(tr);
			}
			if (item[i].getElementsByTagName('descr')[0]!=null){
				if(IE){
					td=tr.insertCell();
					td.vAlign="top";
				}
				else { 
					td=document.createElement("td");
					tr.appendChild(td);
					td.setAttribute('valign','top');
				}
				
				if(item[i].getElementsByTagName('descr')[0].getAttribute("colspan")){
					if(IE){ td.colSpan=item[i].getElementsByTagName('descr')[0].getAttribute("colspan") }
					else { td.setAttribute('colspan',item[i].getElementsByTagName('descr')[0].getAttribute("colspan")) }
					nTD=true;
				}
				td.innerHTML=item[i].getElementsByTagName('descr')[0].firstChild.nodeValue;
				colspan=1;
			}
			else { colspan=2 }
			if(!nTD){
				if(IE){
					td=tr.insertCell();
					td.vAlign="top";
				}
				else {
					td=document.createElement("td");
					tr.appendChild(td);
					td.setAttribute('valign','top');
				}
				if (colspan==2){
					if(IE){
						td.align="right";
						td.colSpan='2';
					}
					else {
						td.setAttribute('COLSPAN','2');
						td.setAttribute('align','right');
					}
				}
				vv=item[i].getElementsByTagName('var')
				for (j=0; j<vv.length; j++){
					input=null;
					if(IE){
						div=document.createElement("<div id='"+vv[j].getAttribute("name")+"' class='"+vv[j].getAttribute("class")+"'>");
					}
					else{
						div=document.createElement("div");
						div.setAttribute("class",vv[j].getAttribute("class"));
						div.setAttribute("id",vv[j].getAttribute("name"));
					}
					if (RegExp("textarea","gi").test(vv[j].getAttribute("type"))){
						input=document.createElement("textarea");
						input.setAttribute("name",vv[j].getAttribute("name"));
						if (vv[j].getAttribute("cols")) { input.setAttribute("cols",vv[j].getAttribute("cols")) }
						if (vv[j].getAttribute("rows")) { input.setAttribute("rows",vv[j].getAttribute("rows")) }
					}
					else if (RegExp("select","gi").test(vv[j].getAttribute("type"))){
						if (document.all){
							input=document.createElement("<select name='"+vv[j].getAttribute("name")+"'>");
						}
						else {
							input=document.createElement("select");
							input.setAttribute("name",vv[j].getAttribute("name"));
						}
					}
					else {
						if (document.all){
							input=document.createElement("<input type='"+vv[j].getAttribute("type")+"' name='"+vv[j].getAttribute("name")+"'>");
						}
						else {
							input=document.createElement("input");
							input.setAttribute("type",vv[j].getAttribute("type"));
							input.setAttribute("name",vv[j].getAttribute("name"));
						}
					}
					this.input=input;
					if (vv[j].getAttribute("onsubmit")) { input.setAttribute("onsubmit",vv[j].getAttribute("onsubmit")) }
					if (vv[j].getAttribute("onclick")) { input.setAttribute("onclick",vv[j].getAttribute("onclick")) }
					if (vv[j].getAttribute("onselect")) { input.setAttribute("onselect",vv[j].getAttribute("onselect")) }
					if (vv[j].getAttribute("onchange")) { input.setAttribute("onchange",vv[j].getAttribute("onchange")) }

					if (vv[j].getAttribute("width")) { input.setAttribute("width",vv[j].getAttribute("width")) }
					if (vv[j].getAttribute("height")) { input.setAttribute("height",vv[j].getAttribute("height")) }
					if (vv[j].getAttribute("length")) { input.setAttribute("length",vv[j].getAttribute("length")) }
					if (vv[j].getAttribute("style")) { input.setAttribute("style",vv[j].getAttribute("style")) }
					if (vv[j].getAttribute("class_input")) { input.setAttribute("class",vv[j].getAttribute("class_input")) }
					if (vv[j].getAttribute("size")) { input.setAttribute("size",vv[j].getAttribute("size")) }
					div.appendChild(input);
					if (vv[j].firstChild){
						input.setAttribute("value",vv[j].firstChild.nodeValue);
						if( pat.test(vv[j].getAttribute("type")) ){ div.innerHTML+="&nbsp;"+vv[j].firstChild.nodeValue }
					}
					if (vv[j].getAttribute("onload")) {
						eval(vv[j].getAttribute("onload"))
					}
					td.appendChild(div);
				}
			}
		}
		this.extraFunctions();
		this.loadStatus("off");
},
extraFunctions:function(){},
draw:function(){
	this.init();
	this.div=document.getElementById("div")
	var xml=this.xml;
	var div=this.div;
	xml.onreadystatechange = function(){
		if(xml.readyState == 4){
			if(xml.status == 200 || xml.status == 304){form.mkTable(xml.responseXML,div)}
		}
	};
	this.loadStatus("on");
	xml.open("GET", "/1/anketa.xml", true);
	xml.send(null);
},
loadStatus:function(ac){
	if (ac=="on"){
		this.div.innerHTML=""
	}
	else {
		this.div.innerHTML=""
	}
}
};

window.onload=function(){
	form.draw();
}

function fCheckFields(el,ar){
	var fe=el;
	var i;
	var j;
	var f;
	var k=0;
	var checked=false;
//	var rqst=ar.match(/(\(((\w+(\*|\+)?)+)\)(\*|\+)?)+/g);
	var rqst=ar.match(/(\w+)/g);
	for(i=0;i<rqst.length;++i){
		if(rqst[i]!='1'){
			f=eval("form.form."+rqst[i]);
			if(f.length>0){
				if(RegExp("radio","i").test(f[0].type)){
					for(j=0;j<f.length;++j){ if(f[j].checked) { checked=true; break} }
				}
				else if(RegExp("select-one","i").test(f.type)){
					if(f.selectedIndex>0){ checked=true }
				}
			}
			else if(RegExp("checkbox","i").test(f.type)){
				if(f.checked){ checked=true }
			}
			else{
				if(fTrim(f.value).length>0){ checked=true }
			}
			if(checked){ k=1 }
			else { k=0 }
			ar=ar.replace(RegExp('(\\*|\\+)'+rqst[i]+'(\\*|\\+)','g'),'$1'+k+'$2');
			checked=false;
		}
	}
	return eval(ar);
}

function fTrim (str) {
	return str.replace(/^\s+|\s+$/g, '');
}

function fSubmit(el){
	var fe=form.form.elements;
	if(fCheckFields(fe,form.rq)==0){alert(form.rqstFail); return false}
	fe[fe.length-1].disabled=true;
	return true;
}

function show(tg,cls,el){
	if (el){
		document.getElementById(tg).className=(el.checked)?cls:cls.replace(/vis/,"hid");
	}
	else {
		document.getElementById(tg).className=cls
	}
}

function fSelect(el,xml_script){
	if(window.ActiveXObject){var req = new ActiveXObject("Microsoft.XMLHTTP")}
	else if(window.XMLHttpRequest){var req = new XMLHttpRequest()}
	var val;
	var s=new Date();
	var id="ID"+s.getTime();
	if(req!=null){
		req.onreadystatechange = function(){
			if(req.readyState == 4){
				if(req.status == 200 || req.status == 304){
					addOption(el,"...","",true);
					var item=req.responseXML.getElementsByTagName('item');
					for (var i=0; i<item.length; ++i){
						val=(item[i].firstChild)?item[i].firstChild.nodeValue:"";
						addOption(el,val,val);
					}
				}
			}
		}
		req.open("GET", xml_script, true);
		req.send(null);
	}
}

function addOption (oListbox, text, value, isDefaultSelected, isSelected){
  var oOption = document.createElement("option");
  oOption.appendChild(document.createTextNode(text));
  oOption.setAttribute("value", value);
  if (isDefaultSelected) oOption.defaultSelected = true;
  else if (isSelected) oOption.selected = true;
  oListbox.appendChild(oOption);
}
