/* 
	AJAX Form Elements
	Author: Alexander Shatalov <admin@cmssystem.net>
	All rights reserved, using this script or part of this scripts or this script but modified without author's permission is illegal.
*/
E=function(e){return document.getElementById(e)}
var is_ie=(navigator.userAgent.toLowerCase().indexOf('msie')!=-1);
function urlencode(s,u){s=s.replace(/\r\n/g,"\n").replace(/\%/g,'%25').replace(/\+/g,'%2B');var t='';for(var n=0;n<s.length;n++){var c=s.charCodeAt(n);if(c<128){t+=String.fromCharCode(c)}else if((c>127)&&(c<2048)){t+=String.fromCharCode((c>>6)|192);t+=String.fromCharCode((c&63)|128)}else{t+=String.fromCharCode((c>>12)|224);t+=String.fromCharCode(((c>>6)&63)|128);t+=String.fromCharCode((c&63)|128)}}if(!u){s=escape(s)}return s}
function serialize(f){var q='',t;if(!f[0]){if($(f)){var f=$(f).getElementsByTagName('*')}else{return ''}}for(i=0;i<f.length;i++){t=f[i].type;if(t=='undefined'){continue}else if(f[i].disabled||!f[i].name){continue}else if(t!='text'&&t!='password'&&t!='textarea'&&t!='radio'&&t!='checkbox'&&t!='hidden'&&t!='select-one'&&t!='select-multiple'&&t!='button'&&t!='submit'){continue}else if((t=='checkbox'||t=='radio')&&!f[i].checked){continue}else if(t=='select-one'&&f[i].selectedIndex!=-1&&!f[i].value&&f[i].name.indexOf('id')<=0&&f[i].options[f[i].selectedIndex].text){q+='&'+f[i].name+'='+urlencode(f[i].options[f[i].selectedIndex].text)}else{q+='&'+f[i].name+'='+urlencode(f[i].value)}}return q}		
var xml=new Array();
function XML(c){if(typeof XMLHttpRequest!='undefined'){xml[c]=new XMLHttpRequest()}else if(window.ActiveXObject){xml[c]=new ActiveXObject("Microsoft.XMLHTTP")}else{xml[c]=false}}
function post(fn,u,e){var c=xml.length;XML(c);if(!xml[c]){alert('Could not load AJAX');return false}xml[c].open('POST',u+'&n='+Math.floor(Math.random()*10000),true);xml[c].setRequestHeader('Content-Type','application/x-www-form-urlencoded');xml[c].onreadystatechange=function(){if(xml[c].readyState==4){if(e){E(e).innerHTML=xml[c].responseText}else{eval(xml[c].responseText)}}};xml[c].send((fn?serialize(fn.elements):''))}
function getTop(){return gT=window.pageYOffset||document.documentElement.scrollTop||0;}
p=function(arr){var h='<table>';if(typeof(arr)=='object'){for(i in arr){h+='<tr align="left"><td>'+i+':</td><td> '+arr[i]+'</td></tr>'}h+='</table>';var d=document.createElement('DIV');d.innerHTML=h;document.body.appendChild(d)}else{alert(arr)}}
function getElementsByClass(c,n,t){var e=new Array();if(!n){n=document}if(!t){t='*'}var l=n.getElementsByTagName(t),p=new RegExp("(^|\\s)"+c+"(\\s|$)");for(i=0,j=0;i<l.length;i++){if(p.test(l[i].className)){e[j]=l[i];j++}}return e}
function kD(e){var W='';var k;if(e){ctrl=e.ctrlKey;alt=e.altKey;k=e.which}else{k=event.keyCode;ctrl=event.ctrlKey;alt=event.altKey}if((k==83&&ctrl&&is_ie)||(k==83&&alt)){W='ctrl+s'}if(W=='ctrl+s'){FORM.save(E('save_link'))}}document.onkeydown=kD;
function writeFrame(n){var f=document.createElement('IFRAME');if(!n){n='frame_set'}f.id=n;f.name=n;f.style.display='none';f.src='javascript:void(0);';document.body.appendChild(f)}
function download(p,i){E('frame_set').src='/download.php?p='+p+'&f='+i}

function typeAccount(v) {E('d_school').style.display='none';E('d_orgname').style.display='none';E('d_company').style.display='none';E('d_account_t').style.display='none';E('d_account').style.display='none';E('d_reg_no').style.display='none';if(v=='school'){E('d_school').style.display=''}else if(v=='non-commercial'){E('d_orgname').style.display='';}else if(v=='company'){E('d_company').style.display='';E('d_reg_no').style.display=''}if(v=='company'||v=='individual')E('d_account').style.display='';else if(v!='')E('d_account_t').style.display='';if((v!='company'&&v!='individual')||!E('acc_purchase').checked){E('d_purchase').style.display='none';E('acc_purchase').checked=false;E('acc_trial').checked=true}}

function getWindowSize(){var w,h;if(window.innerWidth){w=window.innerWidth}else if(document.documentElement&&document.documentElement.clientWidth){w=document.documentElement.clientWidth}else if(document.body){w=document.body.clientWidth}if(window.innerHeight){h=window.innerHeight}else if(document.documentElement&&document.documentElement.clientHeight){h=document.documentElement.clientHeight}else if(document.body){h=document.body.clientHeight}return[parseInt(w),parseInt(h)]}

var alerter = false;
function cwn(){var sW=1024,sH=800;if(parseInt(navigator.appVersion)>3){sW=screen.width;sH=screen.height}else if(navigator.appName=='Netscape'&&parseInt(navigator.appVersion)==3&&navigator.javaEnabled()){var j=java.awt.Toolkit.getDefaultToolkit();var jss=j.getScreenSize();sW=jss.width;sH=jss.height}return[parseInt(sW),parseInt(sH)]}
function cw(w,h,fs){var c=cwn();var sc='no',t=0,l=0;if(fs){return[true,0,0,c[0],c[1]]}if(h>c[1]-20){t=5;sc='yes'}if(w>c[0]-20){l=5;sc='yes'}else{t=(c[1]-h)/2-20;l=(c[0]-w)/2-20}if(t<0){t=0}if(l<0){l=0}if(w>c[0]){w=c[0]-17}if(h>c[1]){h=c[1]-80}return [sc,t,l,w,h]}

alertBox=function(m,foc,params){if(alerter){return false;}var d=document.createElement('DIV');d.style.position='absolute';d.style.zIndex=4000;var w=300,h=230;var c=cw(w,h,0);d.style.top=c[1]-150+getTop()+'px';d.style.left=c[2]-(is_ie?320:0)+'px';d.style.width=w+'px';d.style.display='block';d.style.height=h+'px';d.id='cmsdragon_alerter'+Math.random();alerter=true;var title='Message from window';var button='&nbsp;&nbsp;&nbsp;OK&nbsp;&nbsp;&nbsp;';var image='/img/warning.png';if(params&&typeof(params)=='object'){title=params.title;button=params.button;image=params.image}var h='<div class="a_o" style="display:block;width:300px"><table cellpadding="0" cellspacing="0" style="width:'+w+'px" height="100%" class="a_h wintable"><tr><td colspan="2" class="wintop" style="height:1%">'+title+'</td></tr><tr class="form_1"><td width="1%"><img src="'+image+'" style="float:left;padding:10px"></td><td width="100%" style="padding-bottom:5px">';if(typeof(m)=='object'||typeof(m)=='array'){h+='<table cellpadding=0 cellspacing=0><tr><td colspan=2><b>'+typeof(m)+'</b></td></tr>';for(i in m){h+='<tr><td>'+i+': </td><td>'+m[i]+'</td></tr>'}h+='</table>'}else{h+=m.replace(/\n/g,'<br>').replace(/\t/g,'&nbsp;&nbsp;&nbsp;&nbsp;')}h+='</td></tr><tr><td colspan=2 align=center class="form_f"><button class="a_button" onMouseOver="this.className=\'a_button a_bo\'" onMouseDown="this.className=\'a_button a_bo2\'" onMouseOut="this.className=\'a_button\'" type="button" onClick="alerter=false;window.document.body.removeChild(E(\''+d.id+'\'));'+(foc?'if(E(\''+foc+'\')){try{E(\''+foc+'\').focus()}catch(e){}}':'')+'" id="cmsdragon_alert_but_ok'+d.id+'">'+button+'</button></td></tr></table></div>';d.innerHTML=h;window.document.body.appendChild(d);d.style.height=4000+'px';d.style.width=600+'px';E('cmsdragon_alert_but_ok'+d.id).focus()};

function oL() {
	writeFrame();
}

function oR() {	
	return false;
	E('footer').style.position='absolute';
	var c=getWindowSize();
	E('footer').style.top=c[1]+getTop()-35+'px';
}

function oS() { 
	if(E('add_elements')){E('add_elements').style.position='fixed';E('add_elements').style.top=100+'px'}
}

window.onload=oL;window.onresize=oR;

function lang(s){
	if(typeof(LANG)!='undefined'&&LANG&&LANG[s]){return LANG[s]}
	post(0,'/ajax.php?addlang='+urlencode(s));
	return s;	
}

var FORM={
	a:true,e:'',v:[],k:[],q:[],l:[],wi:[],hi:[],m:[],as:[],c:[],r:[],h:'',s:'',id:0,num:0,el:[],i:[],temp:[],page:1,total:0,form:false,rows:[],s_b:'',as_b:'',sec:0,sav:0,form_id:0,temp_id:0,prev:false,
	_elem:function(app,ch){
		switch(this.e){
			case 'textbox':
				if(!this.wi[this.id]){this.wi[this.id]='99%'}
				this.h='<div id="q_'+this.id+'" class="el_question">'+this.q[this.id]+'</div><input size=20 type="text" onKeyUp="E(\'el_set_'+this.id+'_value\').value=this.value" style="width:'+this.wi[this.id]+'" name="temp_el['+this.id+']" id="elem_'+this.id+'" value="'+this.v[this.id]+'">';
				this.s='<table><tr><td>'+lang('Question')+':</td><td colspan="3"><input class="el_question" name="el_set['+this.id+'][q]" onKeyUp="E(\'q_'+this.id+'\').innerHTML=this.value" type="text" value="'+this.q[this.id]+'"></td></tr>';
				this.s+='<tr><td>'+lang('Default value')+':</td><td><input id="el_set_'+this.id+'_value" name="el_set['+this.id+'][v]" onKeyUp="E(\'elem_'+this.id+'\').value=this.value" type="text" value="'+this.v[this.id]+'"></td><td>'+lang('Width')+':</td><td><input class="el_int" name="el_set['+this.id+'][w]" onKeyUp="try{E(\'elem_'+this.id+'\').style.width=this.value}catch(e){}" type="text" value="'+this.wi[this.id]+'"></td></tr>';
				this.s+='<tr><td>'+lang('Required?')+'</td><td><label for="el_set_req_'+this.id+'"><input id="el_set_req_'+this.id+'" type="checkbox" class="checkbox" name="el_set['+this.id+'][r]"'+(this.r[this.id]?' checked':'')+'> Yes</label></td></tr>';
				this.s+='</table>';
			break;
			case 'textarea':
				if(!this.wi[this.id]){this.wi[this.id]='99%'}if(!this.hi[this.id]){this.hi[this.id]='150px'}
				this.h='<div id="q_'+this.id+'" class="el_question">'+this.q[this.id]+'</div><textarea onKeyUp="E(\'el_set_'+this.id+'_value\').value=this.value" style="width:'+this.wi[this.id]+';height:'+this.hi[this.id]+'" name="temp_el['+this.id+']" id="elem_'+this.id+'">'+this.v[this.id]+'</textarea>';
				this.s='<table>';
				this.s+='<tr><td>'+lang('Question')+':</td><td colspan="3"><input class="el_question" name="el_set['+this.id+'][q]" onKeyUp="E(\'q_'+this.id+'\').innerHTML=this.value" type="text" value="'+this.q[this.id]+'"></td></tr>';
				this.s+='<tr><td>'+lang('Default value')+':</td><td><textarea id="el_set_'+this.id+'_value" style="height:25px" name="el_set['+this.id+'][v]" onKeyUp="E(\'elem_'+this.id+'\').innerHTML=this.value" type="text">'+this.v[this.id]+'</textarea></td><td>'+lang('Width')+':</td><td><input name="el_set['+this.id+'][w]" class="el_int" onKeyUp="try{E(\'elem_'+this.id+'\').style.width=this.value}catch(e){}" type="text" value="'+this.wi[this.id]+'">&nbsp;'+lang('Height')+':</td><td><input name="el_set['+this.id+'][h]" class="el_int" onKeyUp="try{E(\'elem_'+this.id+'\').style.height=this.value}catch(e){}" type="text" value="'+this.hi[this.id]+'"></td></tr>';
				this.s+='<tr><td>'+lang('Required?')+'</td><td><label for="el_set_req_'+this.id+'"><input id="el_set_req_'+this.id+'" type="checkbox" class="checkbox" name="el_set['+this.id+'][r]"'+(this.r[this.id]?' checked':'')+'> Yes</label></td></tr>';
				this.s+='</table>';
			break;
			case 'dropdown':
				if(!app){this.i[this.id]=0}
				if(this.k[this.id]===''||typeof(this.k[this.id])=='undefined'){this.k[this.id]='opt_'+this.id+'_'+this.i[this.id]}
				this.i[this.id]++;
				if(!this.wi[this.id]){this.wi[this.id]='auto'}if(!this.hi[this.id]){this.hi[this.id]=1}
				this.h='';
				if(!app){this.h='<div id="q_'+this.id+'" class="el_question">'+this.q[this.id]+'</div><select name="temp_el['+this.id+']" id="elem_'+this.id+'" style="width:'+this.wi[this.id]+'" size='+this.hi[this.id]+'"'+(this.m[this.id]?' multiple="multile"':'')+'><option value="'+this.k[this.id]+'">'+this.v[this.id]+'</option></select>';this._writeOpt(false)}
				else{var s=E('elem_'+this.id),o=document.createElement('OPTION');o.value=this.k[this.id];o.text=this.v[this.id];s.selectedIndex=-1;s.options.add(o);o.selected=true}
			break;
			case 'checkbox':
				if(!app){this.i[this.id]=0}
				if(!this.k[this.id]){this.k[this.id]='opt_'+this.id+'_'+this.i[this.id]}
				this.i[this.id]++;
				this.h='';
				if(!app){this.h+='<div id="q_'+this.id+'" class="el_question">'+this.q[this.id]+'</div><div>'}
				this.h+='<input type="checkbox" class="checkbox" name="temp_el['+this.id+'][]" id="elem_'+this.id+'_'+this.i[this.id]+'"'+(ch?' checked':'')+' value="'+this.k[this.id]+'"><label for="elem_'+this.id+'_'+this.i[this.id]+'">'+this.v[this.id]+'</label>';
				if(!app){this.h+='</div>';this._writeOpt(false)}
			break;
			case 'radio':
				if(!app){this.i[this.id]=0}
				if(!this.k[this.id]){this.k[this.id]='opt_'+this.id+'_'+this.i[this.id]}
				this.i[this.id]++;
				this.h='';
				if(!app){this.h+='<div id="q_'+this.id+'" class="el_question">'+this.q[this.id]+'</div><div>'}
				this.h+='<input type="radio" class="radio" name="temp_el['+this.id+']" id="elem_'+this.id+'_'+this.i[this.id]+'"'+(ch?' checked':'')+' value="'+this.k[this.id]+'"><label for="elem_'+this.id+'_'+this.i[this.id]+'">'+this.v[this.id]+'</label>';
				if(!app){this.h+='</div>';this._writeOpt(false)}
			break;
			case 'questions':
				if(!app){this.i[this.id]=0}
				if(!this.k[this.id]){this.k[this.id]='opt_'+this.id+'_'+this.i[this.id]}
				this.i[this.id]++;
				this.h='';
				if(!app){this.h+='<div id="q_'+this.id+'" class="el_question">'+this.q[this.id]+'</div><div align="right" id="_qrt_'+this.id+'">&nbsp;</div>'}
				this.h+='<div style="clear:both"><div style="float:left"><input style="display:none" type="radio" class="radio" name="temp_el['+this.id+']" id="elem_'+this.id+'_'+this.i[this.id]+'"'+(ch?' checked':'')+' value="'+this.k[this.id]+'"><label for="elem_'+this.id+'_'+this.i[this.id]+'">'+this.v[this.id]+'</label></div><div align="right" style="float:right;clear:right" id="_inn_'+this.id+'_'+this.i[this.id]+'">&nbsp;</div></div><div style="clear:both;"></div>';
				if(!app){this.h+='';this._writeOpt(false)}
			break;
			case 'pagebreak':
				this.h='';this.s='Page '+this.page;this.page++;
			break;
			case 'html':
				this.h='<table width="100%"><tr><td id="elinn_'+this.id+'">'+this.v[this.id]+'</td></tr></table>';
				this.s='<textarea name="el_set['+this.id+'][v]" onKeyUp="E(\'elinn_'+this.id+'\').innerHTML=this.value" style="width:99%;height:150px">'+this.v[this.id]+'</textarea>';
			break;
			case 'button':
				this.h='<button type="button" name="temp_el['+this.id+']" id="elem_'+this.id+'">'+this.v[this.id]+'</button>';
				this.s=lang('Value')+': <input name="el_set['+this.id+'][v]" onKeyUp="E(\'elem_'+this.id+'\').innerHTML=this.value" type="text" value="'+this.v[this.id]+'">';
			break;
			default:
				this.s='';this.h='';alertBox(lang('Unknown field type: ')+this.e);
			break;
		}
	},
	questionRowTable:function(is_top,id) {
		
		var ant=E('el_set['+id+'][a]');
		var _answers = ant.value.split('\n');
		var answers = [];
		j = 0;
		for(i=0;i<_answers.length;i++){
			if(!_answers[i].length) continue;
			answers[j]=_answers[i];
			j++;
		}
		total = answers.length;
		total_q = this.i[id];
		switch (is_top) {
			case 3: // keyup update
				this.questionRowTable(1,id);
				this.questionRowTable(0,id);
			break;
			case 1: // top
				var d=E('_qrt_'+id);
				var h='<table cellpadding="1" cellspacing="0" align=right><tr>';
				for (i=0;i<total;i++){
					h+='<td width=65 align=center>'+answers[i]+'</td>';
				}
				h+'</tr></table>';
				d.innerHTML=h;
			break;
			default: // each radios
				for (i=1;i<=total_q;i++){
					var h='<table cellpadding="1" cellspacing="0" align=right><tr>';
					for (j=0;j<total;j++) {
						h+='<td width=65 align=center><input type=radio style="border:1px solid transparent;background:none" name="qrt_'+i+'_'+id+'" /></td>';
					}
					if (E('_inn_'+id+'_'+i)) E('_inn_'+id+'_'+i).innerHTML=h+'</tr></table>';;
				}
			break;
		}
	},
	_fixRows:function(){
		var rows=this.form.rows,c;
		for(i=1;i<=this.total;i++){
			c=rows[i].childNodes[0].childNodes[0].id.substring(9);this.rows[i]=c;
			rows[i].childNodes[0].childNodes[0].childNodes[0].innerHTML=i+'. '+this.l[c];
		}
	},
	_getIndex:function(id,i){
		var tb=E('el_sel_'+id).childNodes[0].childNodes[0];
		for(p=0;p<tb.childNodes.length;p++){if(tb.childNodes[p].childNodes[2].childNodes[0].name=='el_set['+id+'][v]['+i+']'){return p}}
		return 0;
	},
	_writeOpt:function(app){
		var tr=document.createElement('TR');tr.align='center';
		tr.id='sel_field_'+this.id+'_'+this.i[this.id];
		var td0=document.createElement('TD'),td1=document.createElement('TD'),td2=document.createElement('TD'),td3=document.createElement('TD'),td4=document.createElement('TD'),td5=document.createElement('TD');
		if(this.e=='dropdown'){
			var s='E(\'elem_'+this.id+'\').selectedIndex=-1;E(\'elem_'+this.id+'\').options[FORM._getIndex('+this.id+','+this.i[this.id]+')].selected=true;';
			var kuv=' onKeyUp="E(\'elem_'+this.id+'\').options[FORM._getIndex('+this.id+','+this.i[this.id]+')].value=this.value;'+s+'"';	
			var kut=' onKeyUp="E(\'elem_'+this.id+'\').options[FORM._getIndex('+this.id+','+this.i[this.id]+')].text=this.value;'+s+'"';
		}else{
			var kuv=' onKeyUp="E(\'elem_'+this.id+'_'+this.i[this.id]+'\').value=this.value"';
			var kut=' onKeyUp="E(\'elem_'+this.id+'_'+this.i[this.id]+'\').parentNode.childNodes[1].innerHTML=this.value"';
		}
		td1.innerHTML='<input style="display:none" name="el_set['+this.id+'][k]['+this.i[this.id]+']"'+kuv+' onDblClick="this.select()" value="'+this.k[this.id]+'" type="text" class="el_key">';
		td2.innerHTML='<input name="el_set['+this.id+'][v]['+this.i[this.id]+']"'+kut+' onDblClick="this.select()" type="text" value="'+this.v[this.id]+'" class="el_val">';
		tr.appendChild(td0);tr.appendChild(td1);tr.appendChild(td2);tr.appendChild(td3);tr.appendChild(td4);tr.appendChild(td5);
		if(!app){
			var table=document.createElement('TABLE'),tbody=document.createElement('TBODY');tbody.appendChild(tr);table.appendChild(tbody);table.className='el_options';table.cellSpacing=0;table.cellPadding=0;
			var div=document.createElement('DIV');div.appendChild(table);this.s=div.innerHTML;
			this.s+='<div class="el_sep" style="clear:both"></div><table class="el_set" cellpadding="0" cellspacing="0"><tr>';
			if(this.e=='dropdown'){
				this.s+='<td>'+lang('Question')+':</td><td><input class="el_question" name="el_set['+this.id+'][q]" onKeyUp="E(\'q_'+this.id+'\').innerHTML=this.value" type="text" value="'+this.q[this.id]+'"></td><td>'+lang('Multiple?')+'</td><td><label for="el_set_mult_'+this.id+'"><input id="el_set_mult_'+this.id+'" type="checkbox" class="checkbox" name="el_set['+this.id+'][m]"'+(this.m[this.id]?' checked':'')+' onClick="if(this.checked){E(\'elem_'+this.id+'\').multiple=true}else{E(\'elem_'+this.id+'\').multiple=false}"> Yes</label></td></tr>';
				this.s+='<tr><td>'+lang('Width')+':</td><td><input name="el_set['+this.id+'][w]" class="el_int" onKeyUp="E(\'elem_'+this.id+'\').style.width=this.value" type="text" value="'+this.wi[this.id]+'"></td><td>'+lang('Size')+':</td><td><input name="el_set['+this.id+'][h]" class="el_int" onKeyUp="E(\'elem_'+this.id+'\').size=parseInt(this.value)" type="text" value="'+this.hi[this.id]+'"></td>';
			}else{
				if(this.e=='questions'){
					this.s+='<td>Answers: <textarea onKeyUp="FORM.questionRowTable(3,'+this.id+')" onKeyDown="FORM.questionRowTable(3,'+this.id+')" name="el_set['+this.id+'][a]" id="el_set['+this.id+'][a]" style="width:300px;height:80px">'+this.as[this.id]+'</textarea> <span style="color:#666;">(separate them with enter)</span></td></tr><tr>';
				}
				this.s+='<td>'+lang('Question')+': <input class="el_question" name="el_set['+this.id+'][q]" onKeyUp="E(\'q_'+this.id+'\').innerHTML=this.value" type="text" value="'+this.q[this.id]+'">';
				if(this.e!='questions'){
					this.s+='&nbsp;'+lang('Per column')+': <select name="el_set['+this.id+'][c]" style="width:auto">'+this._numToOpts(1,5,this.c[this.id])+'</select>';
				}
				this.s+='</td>';
			}
			this.s+='</tr><tr><td>'+lang('Required?')+(this.e=='dropdown'?'</td><td>':'')+'<label for="el_set_req_'+this.id+'"><input id="el_set_req_'+this.id+'" type="checkbox" class="checkbox" name="el_set['+this.id+'][r]"'+(this.r[this.id]?' checked':'')+'> Yes</label></td>';
			this.s+='</tr></table>';
		}else{
			E('el_sel_'+this.id).childNodes[0].childNodes[0].appendChild(tr);
		}
	},
	_numToOpts:function(f,t,s){
		var h='';for(i=f;i<=t;i++){h+='<option value="'+i+'"'+(s&&s==i?' selected':'')+'>'+i+'</option>'}return h;
	},
	_options:function(id){
		if(!id){return ''}
		var h='<div class="right options">';
		if(this._pos(id)>1){h+='<input style="border: 0px!important" type="image" src="/img/fields/up.png" width="16" height="16" onClick="FORM._up('+id+')">'}
		if(this._pos(id)<this.total){h+='<input style="border: 0px!important" type="image" src="/img/fields/down.png" width="16" height="16" onClick="FORM._down('+id+')">'}
		h+='<input style="border: 0px!important" type="image" src="/img/fields/delete.png" width="16" height="16" onClick="FORM.drop('+id+')">';
		h+='</div>';
		return h;
	},
	_pos:function(id){
		var rows=this.form.rows;for (i=1;i<=this.total;i++){var c=rows[i].childNodes[0].childNodes[0].id.substring(9);if(c==id){return i}}return this.total;
	},
	_swap_d:function(obj,i,j){
		var o=obj.options,t1=new Option(o[i].text,o[i].value),t2=new Option(o[j].text,o[j].value);o[j]=t1;o[i]=t2;obj.selectedIndex=-1;o[j].selected=true;
	},
	_sUp:function(id,p){
		var tb=E('el_sel_'+id).childNodes[0].childNodes[0];if(p==0){return}
		var from=tb.rows[p];tb.removeChild(from);tb.insertBefore(from,tb.rows[p-1]);
		if(this.el[id]=='dropdown'){this._swap_d(E('elem_'+id),p,p-1)}
		else{var d=E('field_'+id);var from=d.childNodes[p+1];d.removeChild(from);d.insertBefore(from,d.childNodes[p])}
		this.toBottom(id);
	},
	_sDown:function(id,p){
		var tb=E('el_sel_'+id).childNodes[0].childNodes[0];if(p>=tb.childNodes[0].childNodes[0].length){return}
		var from=tb.rows[p+1];tb.removeChild(from);tb.insertBefore(from,tb.rows[p]);
		if(this.el[id]=='dropdown'){this._swap_d(E('elem_'+id),p,p+1)}
		else{var d=E('field_'+id);var from=d.childNodes[p+2];d.removeChild(from);d.insertBefore(from,d.childNodes[p+1])}
		this.toBottom(id);
	},
	_maxID:function(){
		var i=0;for(id in this.el){if(!i){var m=id}if(id>m){m=id}i++}return m;
	},
	_fixOrows:function(id){
		if(this.el[id]=='checkbox'||this.el[id]=='radio'||this.el[id]=='dropdown'||this.el[id]=='questions'){
			var tb=E('el_sel_'+id).childNodes[0].childNodes[0],i=0;
			for(i=0;i<tb.childNodes.length;i++){
				var r=tb.childNodes[i];r.childNodes[0].innerHTML='<b>'+(i+1)+'</b>: ';
				if(i>0){
					r.childNodes[5].innerHTML='<button style="cursor:hand;cursor:pointer;border:0px!important;width:16px!important;height:16px!important;background:url(/img/fields/bullets.png) no-repeat 0 -16px!important" type="button" src="" onClick="FORM.remOpt('+id+','+i+')"></button>';
					r.childNodes[3].innerHTML='<button style="cursor:hand;cursor:pointer;border:0px!important;width:16px!important;height:16px!important;background:url(/img/fields/bullets.png) no-repeat 0 -48px!important" type="button" onClick="FORM._sUp('+id+','+i+')"></button>'
				}else{
					r.childNodes[5].innerHTML='<button style="cursor:hand;cursor:pointer;border:0px!important;width:16px!important;height:16px!important;background:url(/img/fields/bullets.png) no-repeat!important" type="button" onClick="FORM.addOpt('+id+',\'\',\'New '+this.l[id]+(this.el[id]=='dropdown'?' option':'')+'\',true)"></button>';
					r.childNodes[3].innerHTML='&nbsp;'
				}
				if(tb.childNodes[i+1]){
					r.childNodes[4].innerHTML='<button style="cursor:hand;cursor:pointer;border:0px!important;width:16px!important;height:16px!important;background:url(/img/fields/bullets.png) no-repeat 0 -32px!important" type="button" onClick="FORM._sDown('+id+','+i+')"></button>'
				}else{
					r.childNodes[4].innerHTML='&nbsp;'
				}
			}
		}
		if(this.el[id]=='questions') {
			this.questionRowTable(3,id);	
		}
	},	
	_up:function(id){
		var p=this._pos(id);if(p>1){var from=this.form.rows[p];this.form.removeChild(from);this.form.insertBefore(from,this.form.rows[p-1])}this.toBottom(id,true);
	},
	_down:function(id){
		var p=this._pos(id);if(p!=this.total){var from=this.form.rows[p+1];this.form.removeChild(from);this.form.insertBefore(from,this.form.rows[p])}this.toBottom(id,true);
	},
	// Public functions:
	addOpt:function(id,key,val,c,s){
		if(!this.form){return false}this.id=id;this.e=this.el[id];if(key){this.k[this.id]=key}else{this.k[this.id]='opt_'+this.id+'_'+this.i[this.id]}
		if(val){this.v[this.id]=val+(c?' '+(this.i[this.id]+1):'')}var o=this._elem(true,s);var d=document.createElement('DIV');
		d.innerHTML=this.h;E('field_'+this.id).appendChild(d);this._writeOpt(true);this.toBottom(id);
	},
	remOpt:function(id,i){
		if(!this.form){return false}
		if(confirm(lang('Are you sure to remove this option?'))){
			if(this.el[id]=='dropdown'){E('elem_'+id).remove(i)}else{var d=E('field_'+id);d.removeChild(d.childNodes[i+1])}
			var t=E('el_sel_'+id).childNodes[0].childNodes[0];t.removeChild(t.rows[i]);
			this.toBottom(id)
		}
	},
	drop:function(id){
		if(confirm(lang('Are you sure to drop this ')+this.el[id]+'?')){
			this.form.removeChild(E('field_'+id).parentNode.parentNode.parentNode);
			var el=new Array();for(_id in this.el){if(_id!=id){el[_id]=this.el[_id]}}this.total--;this.el=el;this.toBottom(id,true)
		}
	},
	init:function(fid,form_id,temp_id){
		this.form_id=form_id;this.temp_id=temp_id;
		this.a=false;this.form=E(fid);
	},
	end:function(){
		this.a=true;if(this.total){this.toBottom(this.id,true,true)}
	},
	write:function(s){
		if(!this.form){return false}this.num++;this.total++;this.e=s['e'];this.id=this.num;this.l[this.id]=s['l'];
		this.q[this.id]=s['q'];this.r[this.id]=s['r'];this.v[this.id]=s['v'];this.as[this.id]=s['a'];this.m[this.id]=s['m'];this.k[this.id]=s['k'];this.wi[this.id]=s['w'];this.c[this.id]=s['c'];this.hi[this.id]=s['h'];this.el[this.id]=this.e;this._elem(false,s['ch']);if(!this.s){return false}var tr=document.createElement('TR'),td=document.createElement('TD');
		td.innerHTML='<fieldset id="fieldset_'+this.id+'" class="noborder_me"><div class="right num_type"><legend class="hide_me"></legend></div><div id="field_'+this.id+'" class="el_field">'+this.h+'</div><div class="el_set hide_me" id="el_sel_'+this.id+'">'+this.s+'</div><div id="el_options_'+this.id+'" class="hide_me"></div><input type="hidden" name="el_type['+this.id+']" id="el_type['+this.id+']" value="'+this.e+'"><input type="hidden" name="el_ids[]" value="'+this.id+'"></fieldset>';
		tr.appendChild(td);this.form.appendChild(tr);this.toBottom(this.id,true);
	},
	toBottom:function(id,n,top,nt){
		if(!this.a||!this.form){return false}if(!id){id=this.num} 
		if(!nt){if(this._pos(id)==this.total){window.scroll(0,(!top?99999:0))}E('add_elements').style.position='fixed';E('add_elements').style.top=75+'px'}
		if(n){for(id in this.el){if(typeof(id)!='null'){E('el_options_'+id).innerHTML=this._options(id)}this._fixOrows(id)}this._fixRows()}
		else{for(id in this.el){this._fixOrows(id)}}
		oR();
	},
	toTop:function(){
		return this.toBottom(0,false,true);
	},
	post:function(sec){
		post(this.form.parentNode.parentNode,'/ajax.php?create'+(this.form_id?'='+this.form_id:'')+(this.temp_id?'&temp_id='+this.temp_id:''));
		if(this.sec){this.as_b.innerHTML=lang('Saving..');this.sav=setTimeout("FORM.post()",this.sec*1000)}
	},
	save:function(ch){
		if(ch||this._check()) {
			if(!this.form){return false}this.s_b=E('save_link');this.sec=0;this.s_b.innerHTML=lang('Saving..');this.post();
		}
	},
	autoSave:function(obj){
		if(!this.form){return false}if(this.sec){this.sec=0;this.afterSave();clearTimeout(this.sav);return false}this.sec=5;this.as_b=obj;this.post();
	},
	afterSave:function(tid){
		if(tid) this.temp_id=tid;
		if(!this.form){return false}if(this.s_b){this.s_b.innerHTML=lang('Save temporarily')}if(this.as_b){if(this.sec){this.as_b.innerHTML=lang('Stop autosave')}else{this.as_b.innerHTML=lang('Start autosave')}}
		if(!this.sec){
			// alertBox(lang('Saved'))
		}
	},
	setHistory:function(h){
		if(E('form_history')){E('form_history').innerHTML=h}
	},
	delHistory:function(id){
		post(false,'/ajax.php?del_tmp'+(this.form_id?'='+this.form_id:'')+(this.temp_id?'&temp_id='+this.temp_id:'')+'&del='+id);
	},
	hideAll:function(s){
		var h=getElementsByClass('hide_me');
		var b=getElementsByClass('noborder_me',document,'FIELDSET');
		for(i=0;i<h.length;i++){h[i].style.display=(s?'':'none')}
		//for(i=0;i<b.length;i++){b[i].style.border=(s?'1px solid transparent':'none')}
	},
	preview:function(obj) {
		if(!this.prev){
			this.prev=true;	
			E('add_elements').style.display='none';
			E('cancel_preview').style.display='block';
			E('EditPollForm').style.display='none';
			E('poll_form').style.display='';
			E('cancelTitle').innerHTML=E('poll_title').value;
			E('cancelDescr').innerHTML=E('poll_descr').value;
			E('cancelPreviewForm').style.display='';
			this.hideAll();
			this.toTop();
			this.styleByClass('noborder_me','fieldset','borderBottom','1px solid transparent');
			this.styleByClass('num_type','div','display','none');
		} else {
			this.hideAll(1);
			this.prev=false;			
			this.styleByClass('noborder_me','fieldset','borderBottom','1px dashed #ddd');
			this.styleByClass('num_type','div','display','');
			E('add_elements').style.display='block';
			E('poll_form').style.display='';
			E('EditPollForm').style.display='';
			E('cancel_preview').style.display='none';
			E('cancelPreviewForm').style.display='none';
		}
	},
	styleByClass:function(c,t,f,w){
		var d=getElementsByClass(c,document,t);
		for(i=0;i<d.length;i++) {
			switch (f) {
				case 'border':
					d[i].style.border=w;
				break;
				case 'borderBottom':
					d[i].style.borderBottom=w;
				break;
				case 'display':
					d[i].style.display=w;
				break;
				default:
					d[i].style.eval(f)=w;
				break;
			}
			
		}
	},
	publish:function() {
		if(!this._check()) return false;
		location.href='?create'+(this.form_id?'='+this.form_id:'')+'&complete&temp_id='+this.temp_id;
	},
	finish:function(obj){
		if(this._check()) {
			this.save();
			setTimeout("FORM.publish()",1000);
		}
		/*
		var w=obj.innerHTML;
		obj.innerHTML=lang('Please confirm..');
		if(confirm(lang('Are you sure to finish your form?'))){
			obj.innerHTML=lang('Finishing, please wait..');
			location.href='?create'+(this.form_id?'='+this.form_id:'')+'&complete';
		} else {
			obj.innerHTML=w;
		}
		*/
	},
	_check:function(){
		if (!E('poll_title').value){
			alertBox(lang('Please enter a Survey title'),'poll_title');
			return false;
		}
		else if (!this.id) {
			alertBox(lang('Please enter at least one Survey field'));
			return false;
		}
		return true;
	}
}
