var $valert=false;
var $valert_f=false;
var $valert_go=false;
var $valert_uti=false;
var $valert_click=false;

function valert(con,til,act,dgb,fnc,lbl_0,lbl_1,lbl_2,xv){
	var ca=valert.caller;
	if(ca){
		vaf.f=valert.caller.toString();
		vaf.f=rip(vaf.f,'function ','(');
		if(isobject(fnc)){
			if(dgb){vaf.f=dgb;dgb=false;}
			vaf.f='$'+fnc.me+'.'+vaf.f;
			fnc='12';
		}
	}
	if(con=='@u'){
		if(!$vv_acc[9]){
			con='premisson denied';			
		}else{
			var id=vaf.f.split('_');id=id[1];id=id.replace('$','.');
			var box=ge(id);
			var nam=ge('¢_jfu_'+id).innerHTML;
			nam=nam.substring(1,nam.length);
			con=vaf.ibox(box.maxLength,nam,'txt_00','',box.value);
			til='edit';
			act='yesino';
			fnc='vaf.update(0,"'+id+'")';
			lbl_0='update';lbl_1='cancel';
			vaf.u={'box':box,'val':'','f':vaf.f};
		}
	}
	vaf.go(con,til,act,dgb,fnc,lbl_0,lbl_1,lbl_2,xv);
}

var vaf={
	update:function(act,v){
		if(!act){
			vaf.u.val=ge('valert_ibox').value;
			valert(0);
			qjax('v_uu^vaf.update','id_1='+$vv_id[1]+'id_2='+$vv_id[2]+'id_3='+$vv_id[3]+'&fld='+v+'&val='+vaf.u.val);
		}else{
			vaf.u.box.value=vaf.u.val;
			vaf.err(v,vaf.u.f);
		}
	},
	i:false,
	f:false,
	u:false,
	box:false,
	form:false,
	val:false,
	con:false,
	uti:false,
	pop:function(){center_pop(this.i);},
	onload:false,
	data:false,
	punter:false,
	dirty_on:false,
	dirty_lbl:false,
	dirty:function(set){
		targ=ge('vad_yes');
		if(set){
			if(!vaf.dirty_on){
				vaf.dirty_on=true;
				vaf.dirty_lbl=targ.innerHTML;
				targ.innerHTML="<b style='color:#990000'>save</b>";
			}
		}else{
			vaf.dirty_on=false;
			if(vaf.dirty_lbl){
				targ.innerHTML=targ.innerHTML=vaf.dirty_lbl;
			}
		}
	},
	err:function(v,f){if(v!=1){valert('error writing to database'+v);}else if(f){eval(f+'()');}},
	eval:function(targ){
		if($valert_uti){	
			if(targ.id=='vad_clo' || targ=='close'){
				ge('vad_con').style.display='block';
				ge('vad_bot').style.display='';
				ge('vad_uti').style.display='none';
				ge('vad_til').innerHTML=$valert_uti
				node_clear(ge('vadex_uti'));
				this.pop();
				$valert_uti=false;
				return;
			}
		}
		eval(targ.parentNode.getAttribute('fnc'));
	},	
	tbox:function(til,obj,wid,hig,v){
		v=vv_default(v,{l1:false,l2:false,max:50,tx:false,typ:false});
		var f=vaf.tbox.caller.toString();f=rip(f,'function ','(');	
		var targ=ge('vad_con');
		if(v.typ=='input'){
			wid=wid?wid:600;
			var box=node_append(targ,'input',false,{'style':"maxlength:"+v.max+";width:"+wid+"px;text-align:center;",'class':"txt v0"});
		}else if(v.typ=='file'){
			wid=wid?wid:600;
			var box=node_append(targ,'input','file_i',{'name':"file_i",'type':"file",'style':"maxlength:"+v.max+";width:"+wid+"px;text-align:center;",'class':"txt v0"});
		}else{		
			wid=wid?wid:600;hig=hig?hig:400;
			var box=node_append(targ,'textarea',false,{'style':"height:"+hig+"px;width:"+wid+"px;",'class':"txt v0"});
		}
		if(v.tx){node_append(targ,'div',false,{'style':"display:block;margin:2px auto 0px auto;font-size:11px;"},v.tx);}
		valert('*',til,'yesino',f,obj,v.l1,v.l2);		
		vaf.box=box;
		box.focus();
		if(v.typ=='file'){
			var f=ge('frm_import');
			f.action=v.action;
			f.method='post';
			f.enctype='multipart/form-data'; 
			f.target='_blank';
			vaf.form=f;
		}
	},	
	dbox:function(act,v,til){
		til=til?til:'response';
		node_append(ge('vad_con'),'textarea',false,{'style':"height:600px;width:400px;",'class':"txt v0"},v);
		valert('*',til);
	},
	ibox:function(len,nam,cls,ix,val){
		var wid='';
		val=val?val:'';
		ix=ix?'_'+ix:'';
		if(len && len!=-1){wid='width:'+(5*len)+'px';len=" maxlength="+(len*1);}else{len='';}
		var box="<div style='display:block;margin:5px auto 2px auto;'>";
		box+="<input id='valert_ibox"+ix+"' value=\""+val+"\" class='"+cls+"'"+len+" style='text-align:center;"+wid+"'>";
		box+="</div>";
		if(nam){
			box+="<div style='display:block;margin:0 auto 5px auto;font-size:11px'>"+nam+"</div>";
		}
		vaf.box='valert_ibox'+ix;
		return box;
	},
	gov:function(v){
		var vd={til:0}
		v=vv_default(v,vd);		
		this.go('*',v.til,'gov',0,0,0,0,0);
	},
	go:function(con,til,act,dgb,fnc,lbl_0,lbl_1,lbl_2,xv){
		$valert_go=false;
		var reshow=false;
		if(con!='*'){node_clear('vad_con');}
		if(!con){act='close';}
		if(con=='@'){con='';}
		targ=ge('valert');
		if(con=='%'){
			act='show';
			reshow=true;
		}else{
			var typ=false;
			var htm=false;
			act=act?act:'show';
			typ=act;
			if(typ=='yesno' || typ=='yesino' || typ=='input' || typ=='punter' || typ=='pop' || typ=='gov'){
				act='show';
			}
			ge('vad_ok0').style.display='none';
			ge('vad_inp').style.display='none';
			ge('vad_yca').style.display='none';
			var clo=ge('vat_clo');clo.style.padding='10px';
			var bot=ge('vad_bot');bot.style.display='';
			var uti=ge('vad_uti');uti.style.display='none';
			var bx0=ge('vad_box');bx0.style.display='none';
			var bx1=ge('vad_bx1');bx1.style.display='none';
			var bx2=ge('vad_bx2');bx2.style.display='none';
			var ib0=ge('vai_box');ib0.value='';
			var ib1=ge('vai_bx1');ib1.value='';
			var ib2=ge('vai_bx2');ib2.value='';
			ge('vad_lbl').innerHTML=lbl_0?lbl_0:'';
			ge('vad_lb1').innerHTML=lbl_1?lbl_1:'';
			ge('vad_lb2').innerHTML=lbl_2?lbl_2:'';
			ge('vad_tlr').innerHTML="<div id='vad_clo' onclick=\"valert(0);\"></div>";	
			var iflag=false;
			if(fnc){
				fnc=fnc.replace(/`/g, "'");
				var spc=(fnc.substring(0,1)=='*')?"*":((fnc.substring(fnc.length-1)=='.')?'.':false);
				if(fnc=='12' || fnc=='123' || spc){
					if($valert_f){
						var f=$valert_f;
						$valert_f=false;
					}else{
						var f=vaf.f;
					}
					if(spc=='*'){
						var fw=fnc.substring(1,fnc.length);
						fnc=f+"('"+fw+":Y')^"+f+"('"+fw+":N')^";
					}else if(spc=='.'){
						fnc=fnc+f+"('valert','Y')^"+fnc+f+"('valert','N')";
					}else{
						fnc=f+'(1,vaf.val)^'+f+'(2,vaf.val)';
						if(fnc=='123'){fnc+='^'+f+'(3)';}				
					}
				}
			}
		}
		if(act=='show'){
			targ.style.display='block';
			if(!reshow){
				if(xv){
					if(xv['pre']){ge('vad_pre').innerHTML=xv['pre'];}
					if(xv['htm']){htm=xv['htm'];}
				}
				if(typ=='yesno' || typ=='yesino'){				
					if(typ=='yesno'){$valert_go='vad_yes';}
					var yes=ge('vvv_yes');
					var xtr=ge('vvv_xtr');
					var xtb=ge('vvv_xtb');
					var cancel=ge('vvv_can');
					var fn=fnc.split('^');
					var yca=ge('vad_yca');
					var tlr=ge('vad_tlr');
					if(fn.length==1){fn[1]='';}
					fn[0]+=(right(fn[0],1)!=';')?';':'';
					lbv=lbl_0?lbl_0:'YES';
					if(typ=='yesno'){fn[0]+="valert(0);";}
					yes.setAttribute('fnc',fn[0]);
					yes.innerHTML="<div id='vad_yes' class='ibt_M' onclick='if(vaf.box){vaf.val=vaf.box.value;}vaf.eval(this)'>"+lbv+"</div>";
					tlr.setAttribute('fnc',"valert(0);"+fn[1]);
					tlr.innerHTML="<div id='vad_clo' onclick='vaf.eval(this)'></div>";
					lbv=lbl_1?lbl_1:'CANCEL';
					cancel.setAttribute('fnc',"valert(0);"+fn[1]);
					cancel.innerHTML="<div id='vad_can' class='ibt_M' onclick='vaf.eval(this)'>"+lbv+"</div>"
					if(lbl_2){
						xtr.setAttribute('fnc',fn[2]);
						xtr.innerHTML="<div id='vad_xtr' class='ibt_M' onclick='vaf.eval(this)'>"+lbl_2+"</div>"								
					}
					xtr.style.display=lbl_2?'inline':'none';
					xtb.style.display=lbl_2?'inline':'none';
					yca.style.width=lbl_2?'272px':'183px';
					yca.style.display='block';				
				}else if(typ=='input' || typ=='punter'){
					iflag=true;
					bx0.style.display='block';
					if(typ=='punter'){
						bx1.style.display='block';
						if(lbl_2){
							bx2.style.display='block';
						}
					}
					if(fnc.substring(0,1)=='#'){
						fnc="var valert_ret=ge('vai_box').value;"+fnc.substring(1,fnc.length)+"(valert_ret)";
					}else	if(fnc=='me'){
						//var f=arguments.callee.caller.toString();
						//f=rip(f,'function ','(');
						fnc="var valert_ret=ge('vai_box').value;"+vaf.f+"('val',valert_ret)";
					}
					var inp=ge('vad_inp');
					inp.style.display='block';
					if(xv){
						if(xv['input']){ib0.value=xv['input'];}
					}
					var ien=ge('vvv_ien');
					ien.setAttribute('fnc',fnc);
					ien.innerHTML="<div id='vad_ien' class='ibt_M' onclick='vaf.eval(this)'>ENTER</div>";
				}else if(typ=='pop' || typ=='lst'){
				}else if(typ=='gov'){
					bot.style.display='none';clo.style.padding='2px';
				}else{
					$valert_go='vad_ok0';
					var ok=ge('vad_ok0');
					if(lbl_0 && typ=='show'){ge('vad_ok1').innerHTML='<p>'+lbl_0+'</p>';}
					if(fnc){ok.setAttribute('fnc',fnc);}				
					ok.style.display='block';
				}				
				if(xv){
					if(xv['uti']){	
						uti.style.display='block';
						if(xv['uti']!='*'){uti.innerHTML=xv['uti'];}
					}
				}
				try{sys_v!=false;}catch(err){sys_v=false;}
				ge('vad_til').innerHTML=til?til:((sys_v=='sav')?$prog:sys_v);
				if(con!='*'){
					con+='';
					if(!htm){con=con.replace(/\n/g, '<br>');}
					if(con!='@' && con){
						ge('vad_con').innerHTML=con?con:'<br><br>';			
					}
				}
			}
			targ.style.visibility='visible';
			center_pop(targ);
			if(vaf.box){vaf.box=ge(vaf.box);vaf.box.focus();}
			$valert=true;			
			page_shade(true);
			var ifo=ge('ifo');
			if(ifo){
				if(ifo.scrollHeight!=ifo.clientHeight){
					ifo.style.width=(ifo.clientWidth+25)+'px'
				}
			}
			if(window.valert_onpop){valert_onpop(ge('vad_til').innerHTML);}
			if(iflag){ib0.focus();$computer=false;} //convoluted shit because of IE
			if(vaf.onload){vaf.onload();vaf.onload=false;}
		}else if(act=='close'){
			this.close(dgb);
		}
	},
	pop2:function(){
		var targ=ge('valert');
		center_pop(targ);
		center_pop(targ);
	},
	close:function(dgb){
		if(this.v.close_clear==true){node_clear(this.con);this.v.close_clear=false;}
		if(dgb===undefined){dgb=0;}
		ge('vad_pre').innerHTML='';
		targ.style.display='none';
		targ.style.visibility='hidden';
		page_shade(false);
		$drag_block=dgb;
		$valert=false;
		$valert_click=false;
		$valert_go=false;
		vaf.box=false;
		if(window.computer){if(window.$computer!==undefined){if($computer!='!'){if(!$computer && $db!=1){$computer=true;computer();}}}}
	},
	v:{ax:false,caller:false,close_clear:false},
	fly_change:function(targ){
		ge('fly_details').innerHTML=targ.options[targ.selectedIndex].getAttribute('det');
	},
	fly:function(act,v,ax,fclass,load,details){
		if(!act){
			var lbl1=v.lbl1?v.lbl1:"ENTER";
			var lbl2=v.lbl2?v.lbl2:"CANCEL";
			var fux2=v.fux2?v.fux2:"vaf.close()";
			var f=fclass?fclass+'.':'';
			f+=rip(vaf.fly.caller.toString(),'function ','(');
			this.v.close_clear=true;
			this.v.yes_eval=v.yes_eval?true:false;
			this.v.filled=v.filled?true:false;
			this.v.caller=f;
			this.v.ax=ax;
			node_clear(this.con);
			var div=node_append(vaf.con,'div',0,{"style":'display:block;text-aling:left;'});
			node_append(div,'input','fly_tx',{"gof":'vaf.fly("find")',"style":'height:20px;width:175px;float:left;border:1px solid #474747;border-bottom:0px;'});			
			if(v.fnew){
				this.v.fnew=v.fnew;
				node_append(div,'a',0,{"class":'ibt',"style":'float:left;width:50px;',"fux":'vaf.fly("find");'},'FIND');
				node_append(div,'a',0,{"class":'ibt',"style":'float:left;width:49px;;border-left:1px solid #474747;',"fux":'vaf.fly("new");'},'NEW');
			}else{
				node_append(div,'a',0,{"class":'ibt',"style":'float:left;width:100px;',"fux":'vaf.fly("find");'},'FIND');
			}			
			div=node_append(vaf.con,'div',0,{"style":'clear:both;'});
			node_append(vaf.con,'select','fly_ls',{"onchange":'vaf.fly_change(this)',"gof":'vaf.fly("enter",targ)',"class":'lss_00',"style":'display:block;width:280px;margin-top:-1px;',"size":9});
			div=node_append(vaf.con,'div',0,{"style":'display:block;text-aling:left;'});
			node_append(div,'a',0,{"class":'ibt',"style":'float:left;width:180px;',"fux":'vaf.fly("enter",ge("fly_ls"));'},lbl1);
			node_append(div,'a',0,{"class":'ibt',"style":'float:left;width:99px;border-left:1px solid #474747;',"fux":fux2},lbl2);
			if(details){
				node_append(vaf.con,'div','fly_details',{"class":'V_details',"style":'text-align:left;display:block;width:274px;height:75px;padding:3px;overflow:auto;margin-top:3px;'});
			}
			this.gov(v);
			var box=ge('fly_tx');
			if(load){	
				if(isobject(load)){
					this.fly('rsp',load);
				}else{
					if(load.substr(0,1)=='@'){	
						box.value=load.substr(1,load.length);
						box.parentNode.style.display='none';
						vaf.fly('find');return;
					}else{
						box.value='*';vaf.fly("find",box);box.value='';
					}
				}
			}else{
				box.focus();
			}
		}else if(act=='new'){
			eval(this.v.fnew);
		}else if(act=='find'){
			var tx=ge('fly_tx').value.trim();
			if(!tx){
				alert('You have not entered a search string.');
			}else{
				qjax(vaf.v.ax+'_find^vaf.fly','tx='+tx);
			}
		}else if(act=='enter'){
			if(v.value){							
				if(!this.v.yes_eval){this.close();}
				vaf.punter=vaf.data[v.selectedIndex];
				eval(this.v.caller+"('enter',"+v.value+',"'+v.options[v.selectedIndex].innerHTML+'",v.options[v.selectedIndex])');
			}
		}else if(act=='rsp'){
			if(v){
				var det=false;
				if(!isobject(v)){v=eval('('+v+')');}
				var lst=ge('fly_ls');lst.length=0;
				this.data=[];
				if(!v[0].i){
					alert('No matches found.');
				}else{
					for(var i in v){
						lst.options[i]=new Option(v[i].x,v[i].i);
						if('det' in v[i]){det=true;lst.options[i].setAttribute('det',v[i].det);}
						if('i2' in v[i]){lst.options[i].setAttribute('i2',v[i].i2);}
						this.data[i]=v[i];
					}
					if(!this.v.filled){
						lst.options[0].selected=true;
						lst.focus();
						if(det){vaf.fly_change(ge('fly_ls'));}
					}else{
						eval(this.v.caller+"('filled',lst)");					
					}
				}
			}else{
				alert('No entries match your search string.')
			}
		}
		if(act!='enter'){page_shade(true);}
	}
}


//valert js forms
jfv={
	ix:false,
	id:false,
	action:false,
	pop:function(act,v,id,targ){
		if(act=='rsp'){
			frm_fill(v);
			page_shade(1);
			$dirt_block=true;
		}else{
			if($jfv['@_'+v]!==undefined){
				if($jfv['@_'+v]){
					var u=$jfv['@_'+v];u['jfv']='auto';
					for(i in u){$jfv[i+'_'+v]=u[i];}
					$jfv['@_'+v]=false;
				}
			}else{
				if($jfv['jfv_'+v]===undefined){$jfv['jfv_'+v]='custom';}
			}
			if($dirty){
				valert('You have unsaved changes on the page.\nPlease save or restore before performing this action.');
				return;
			}
			this.ix=v;
			if($key_alt){
				jfv.del(false,id,targ);
				return;
			}
			if(!act){act='add';til='new '+til;id=0;}
			var hig=$jfv['hig_'+this.ix];
			if(hig){
				hig='height:'+hig+'px;';
			}else{
				hig='';
			}			
			var con='<div id="div_frv" class="frv" style="display:block;'+hig+'">'
			var div=$jfv['div_'+this.ix];
			var til=$jfv['til_'+this.ix];
			for(var i=0;i<div.length;i++){
				marg=i?'margin-left:25px;':'';
				con+='<table style="float:left;display:inline;'+marg+'">'+$jfv[div[i]]+'</table>';			
			}
			con+='</div>';
			if(act=='add' || $jfv['del_'+this.ix]===undefined){
				valert(con,til,'yesino',0,"jfv.add('"+act+"',"+id+")^jfv.cancel()",'ENTER','CANCEL');		
			}else{
				valert(con,til,'yesino',0,"jfv.add('"+act+"',"+id+")^jfv.cancel()^jfv.del('del',"+id+",'warn')",'ENTER','CANCEL','DELETE');		
			}
			if(hig){
				var targ=ge('div_frv');
				targ.style.width=(targ.offsetWidth+50)+'px';
				targ.style.overflow='auto';
				targ.style.paddingTop='10px';
				targ.style.border='1px solid #333333';
				center_pop(ge('valert'));
			}
			if($jfv['pop_'+this.ix]!==undefined){$jfv['pop_'+this.ix](act);}
			if(act=='edit'){
				var qif;
				if($vv_fid==0){
					qif=$jfv['fid_'+this.ix];
				}else{
					qif=$vv_fid+(($vv_tab>-1)?'t'+$vv_tab:'');
				}
				var jax=($jfv['jfv_'+this.ix]=='auto')?'jfv_fetch':this.ix+'_fetch';
				qjax(jax+'^jfv.pop','qif=00_jfv_'+qif+'&id='+id);
			}
			$dirt_block=true;
		}
	},
	del:function(act,v,x){
		if(!act){
			var til=$jfv['til_'+this.ix];
			var con="Do you wish to delete the following entry:\n"+x.innerHTML
			valert(con,til,'yesno',0,"jfv.del('del',"+v+")");
		}else if(act=='del'){			
			if(x=='warn'){if(!window.confirm('Are you sure you wish to delete this entry?')){return;}}
			this.id=v;
			qjax(this.ix+'_del^jfv.del','&id='+v);
		}else{
			valert(0);
			if(window.frm_jfv_ret){
				this.action='del';
				frm_jfv_ret();
			}else{
				frm_restore(false);		
			}
		}
	},
	add:function(act,v){
		if(act=='add' || act=='edit'){
			if(window.frm_jfv_exe){frm_jfv_exe();return;}		
			var msg=window.frm_jfv_check?frm_jfv_check(this.ix,v):false;
			if(msg){alert(msg);return;}
			var dat=frm_data('import',0,'arr',1);
			if(act=='add'){
				dat['_id_']=$vv_id[$jfv['id_'+this.ix]];
			}else if(act=='edit'){
				this.id=v;
				dat['_id']=v;
			}
			this.action=act;
			if($jfv['data']){$jfv['data']=dat}
			var jax=this.ix+'_'+act;
			if($jfv['jfv_'+this.ix]=='auto'){
				jax='jfv_'+act;
				dat['u^'+$vv_tbl[frm_tid($jfv['fid_'+this.ix])]['t']]=1;				
			}
			var vld=this.ix+'_valid';
			eval("vld=window."+vld);
			if(vld){
				eval("vld(false,dat)");
			}else{
				qjax(jax+'^jfv.add',array_to_post(dat,0,0,1));
			}
		}else{
			if(this.action=='add'){this.id=v;}
			valert(0);					
			if(window.frm_jfv_ret){
				frm_jfv_ret();
			}else{
				frm_restore(false);		
				$dirt_block=false;			
			}
		}
	},
	cancel:function(act){
		$dirt_block=false;
	}	
}

function frm_ctl_jfv(v,targ,x){
	if(v=='*'){		
		alert(x)
	}else{
		var ix=targ.getAttribute('ix');
		node_clear(targ);
		var tbl=node_append(targ,'table','',{"class":"block"});
		tbl=node_append(tbl,'tbody');
		var tr,td,go=false;
		for(i in v){
			if(v[i].nam){
				go=true;
				tr=node_append(tbl,'tr',false,{"lbl":v[i].nam,"iid":v[i].id});
				td=node_append(tr,'td',false,{"class":"white"});
				node_append(td,'a',false,{"class":"xtb","fux":"jfv.pop('edit','"+ix+"',"+v[i].id+",targ)"},"&#9679;&nbsp;"+v[i].nam);
			}
		}
		if(go){
			//node_append(targ,'div','',{"class":"block","style":"margin-top:5px;font-style:italic"},'ALT-click to delete');
		}
	}
}


//FRM
function frm_status(status){
	var targ=ge('db');
	if(targ){
		if(status=='get'){
			return right(targ.className,2);
		}else{
			targ.className ='frm_status_'+status;
		}
	}else{
		var targ=ge('db_nav_outer');
		if(targ){
			if(status=='get'){
				return right(targ.className,2);
			}else{
				targ.className ='status_'+status;
			}
		}else{
			return false;
		}
	}
}
