var $pid=1;
var $vid=1;
var $xii=1;
var $tii=1;
var $wix='';
var $cal=false;
var $itg=false;
var $m1n=false;
var $cur_dat=false;
var $rad_fix=false;
var $prev_val=false;
var $prev_cell=false;
var $prev_status='00';
var $fetch=false;
var $dirty=false;
var $dirt_block=false;
var $sare_block=false;
var $sare_full=false;
var $vv_norec=false;
var $dirty_2=false;
var $util_00=false;
//var $vv_tix=1;

document.onclick = page_click;
document.onkeypress = stop_R_key;

//PAGE CLICKING
function page_click(){
  var ev = arguments[0] || window.event, targ = ev.target || ev.srcElement;
	if (ev.button==2 || ev.altKey){
		if (ev.altKey){
			//right_trap(ev);
			//return false;
		}else{
			//return false;
		}
	} 	
	//if($valert){if(ie){e.returnValue=false;}else{e.preventDefault();e.stopPropagation();}}
	if(!targ.attributes['ctl']){
		if(targ.attributes['qali']){
			qal('eval',targ,$itg);
		}else{
			ctl_clear(); 
		}
	}
	var id=targ.id;
	var c=id.substring(0,1);
	if(c=='¢'){
		var cat=id.substring(2,5);
		ctl_click(cat,targ,id);
	}
	if($pop){
		if($pop.id!='pop_data'){	
			pop_close();
		}
	}
}
function stop_R_key(e) {
	var e=(e) ? e: ((event) ? event : null);
	var node = (e.target) ? e.target : ((e.srcElement) ? e.srcElement : null);
	if ((e.keyCode == 13) && (node.type=='text')) { next_focus(node.id); return false; }
}

function next_focus(id){
	if(id.substring(0,4)=='fli_' || $valert){return false;}
	var box=document.getElementsByTagName('input');
	var go=false;
	for(var i=0;i<box.length;i++){
		if(go && box[i].type!='hidden'){box[i].focus();return false;}
		if(box[i].id==id){go=true;}
	}
}

//DIRT
function cal_dirty(new_dat){
	if(!$dirty){
		if(new_dat!=$cur_dat){
			frm_dirty($itg);
		}
	}
}

//CONTROL CLICKING
function ctl_click(cat,targ,id,block_restore){
	switch (cat){
		case 'nav':
			var v=id.split('_');			
			nav_action('nav',v[2]*1,0,false,false);
			break;
		case 'frm':
			var v=id.split('_');
			var div=ge('db_'+v[2]);
			if(div!=undefined){
				if($dirty){ //if dirty, save then call again with $ajx
					frm_save($cur_frm,"frm_status('00');$dirty=false;ctl_click('frm',false,'"+ id+"');");					
					return false;
				}
				vv_sare(v[2]);
				ge('db_'+$cur_frm).className='dbx';
				ge('¢_frm_'+$cur_frm).className='reg';
				ge('db_'+v[2]).className='dbi';
				ge('¢_frm_'+v[2]).className='sel';
				$cur_frm=v[2];
				if($cur_frm!=1.70 && !block_restore){ //1.70 temp solution
					frm_restore($cur_frm);
				}
			}else{
				if(v[2]=='0.00'){ //NEW PATIENT
					location.href='i.php?new=1&sys='+$sys+'&db=1';
				}else if(v[2]=='0.01'){ //NEW VISIT/TIME
					db_new_record('ifo');
				}else{
					//if(v[2]!=100.90){
						valert('form not available');
					//}
				}
			}
			break;			
		case 'bti':
			var key=targ.innerHTML;
			var val;
			if(key.charCodeAt(0)==169){
				val='';
			}else{
				if($itg.value==$cur_dat){
					val=key;
				}else{
					val=$itg.value+key;
				}
			}
			$itg.value=val;
			break;
		case 'npa':
			$itg=ge(targ.id.substring(6,targ.id.length));
			$ctl=ge('numpad');
			$prev_val=$itg.value;
			var p=f_pos($itg);
			var x=p[0]+0+'px';
			var y=p[1]+20+'px';	
			$cur_dat=$itg.value;
			$ctl.style.left=x;
			$ctl.style.top=y;
			gi('x_row_01').style.display='none';
			$ctl.style.display='block';
			var wid=$itg.offsetWidth;
			if(wid<101){
				wid=101;
			}
			$ctl.style.width=(wid + 2) + 'px';	
			break;					
		case 'hhi':				
			var v=targ.id.split('_');
			var ix=v[2]*1;
			var tim=gi('¢_hhi_100_disp');
			var tam=gi('¢_hhi_200_ampm');
			var din=(tam.innerHTML=='···');
			if (ix<100){
				clock_set(targ,ix,-1,false);
				//if(din){
					if((ix>7 && ix<12) || ix>57){
						ampm='AM';
					}else{
						ampm='PM';
					}
					din=false;
					tam.innerHTML=ampm;
					tam.className='hhi_'+ampm;
				//}
				var mins="00";
				if(ix>50){
					mins="30";
					ix=ix-51;
				}
				if(ix==0){ix=12;}
				if(ix<10){ix='0' + ix;}
				tim.innerHTML=ix + ":" + mins;
			}else if (ix==200){
				if(din==false){ //AMPM has been defined
					var ampm=tam.innerHTML;
					var am=(ampm=='AM');
					if(v[3]=='ampm'){
						ampm='AM';
						if(am){
							ampm='PM';
						}
						tam.innerHTML=ampm;
						tam.className='hhi_'+ampm;
					}else{
						var hrs=tim.innerHTML.substring(0,2)*1;
						var mins=tim.innerHTML.substring(3,5)*1;
						var wind=false;
						if(v[3]=='L'){ //left arrow
							if($m1n){
								if(mins==0){hrs=hrs-1;mins=59;}else{mins=mins-1;}
							}else{
								if(mins==0){hrs=hrs-1;mins=55;}else{mins=mins-5;}
							}
							if(mins==55 || mins==25){wind=true;}
						}else{ //right arrow
							if($m1n){
								if(mins==59){hrs=hrs+1;mins=0;}else{mins=mins+1;}
							}else{
								if(mins==55){hrs=hrs+1;mins=0;}else{mins=mins+5;}
							}
							if(mins==30 || mins==0){wind=true;}
						}
						if(hrs==13){hrs=1;}else if(hrs==0){hrs=12;}
						if(wind){clock_set(false,hrs,mins,false);} //reset clock if boundary crossed
						if(hrs<10){hrs='0' + hrs;}
						if(mins<10){mins='0' + mins;}
						tim.innerHTML=hrs + ":" + mins;
					}
				}
			}else if (ix>900){ //enter time
				if(tim.innerHTML!='00:00'){
					var preval=$itg.value;
					if($itg.nodeName=='A'){
						$itg.innerHTML=tim.innerHTML+tam.innerHTML;
						if($itg.id.substring(0,1)=='c'){
							cal_time_edit(tim.innerHTML+tam.innerHTML); //cal!!!
						}
					}else{
						$itg.value=tim.innerHTML+tam.innerHTML;
					}
					if(preval!=$itg.value){frm_dirty($itg);}
				}
				ctl_clear(); 
			}
			return false;
			break;
		case 'tim':
			$itg=ge(targ.id.substring(6,targ.id.length));
			$ctl=ge('¢_hhi_100_clock');
			var tim;
			if($itg.nodeName=='A'){tim=$itg.innerHTML;}else{tim=$itg.value;}
			var p=f_pos($itg);
			var x=p[0]+0+'px';
			var y=p[1]+20+'px';	
			$cur_dat=$itg.value;
			$ctl.style.left=x;
			$ctl.style.top=y;
			//gi('x_row_01').style.display='none';
			$ctl.style.display='block';
			var wid=$itg.offsetWidth;
			if(wid<101){
				wid=101;
			}
			$ctl.style.width=(wid + 2) + 'px';	
			if(tim.length==0){
				clock_set(0,0,0,false);
			}else{
				clock_set(false,tim.substring(0,2)*1,tim.substring(3,5)*1,tim.substring(5,7));
			}			
			break;			
		case 'cal':
			//$ctl=ge('gToday:normal:agenda.js');
			$ctl=ge('cal');
			$ctl.style.display='block';
			targ=ge(id.substring(6,id.length));
			
			qal('show',targ);
			
			$cur_dat=targ.value;
			$itg=targ;
			//if(self.gfPop)gfPop.fPopCalendar(targ);
			break;			
		case 'dro':
			$itc=targ;
			$itg=ge(targ.id.substring(6,targ.id.length));
			var drop=ge('dro_'+ targ.attributes['lev'].value);
			var p=f_pos(targ);
			var x=p[0]+1+'px';
			var y=p[1]+19+'px';		
			var wid=getStyle(targ,'width');
			wid=(wid.substring(0,wid.length-2)*1 + 17) + 'px';
			drop.style.left=x;
			drop.style.top=y;
			drop.style.width=wid;
			drop.style.display='block';
			$ctl=drop;
			break;			
		case 'dra':
			var tx=targ.innerHTML;
			if(tx=='«««'){
				$itc.value='';
				$itg.value='';
			}else{
				$itc.value=tx;
				$itg.value=targ.attributes['valu'].value;
			}
			frm_dirty($itg);
			return false;break;		
		case 'gxp':					
			var ix=targ.innerHTML.charCodeAt(0);
			if (ix==9660){
				targ.innerHTML='&#9650;';
				targ.className='exp_01';
				disp=browser_rowdisp();
			}else{
				targ.innerHTML='&#9660;';
				targ.className='exp_00';
				disp='none';
			}
			group_expand(document, 'tr', "gxp_" + targ.id.substring(6,targ.id.length), disp);
			break;			
		case 'chk': chk_click(targ); break;
		case 'tri': tri_click(targ); break;
		case 'rad':	rad_click(targ);break;	
		case 'fli':	pop_superfli(targ,'block');break;
		case 'tix':	frm_tix('click',targ);break;	
		default: ctl_click_app(cat,targ,id);break;
	}
	$sel=targ;
}
function chk_click(targ){
	if($click_flag){$click_flag=false;return false;} //blocked onclick
	var v = targ.id.split('.');
	var itarg=ge('i' + targ.id.substring(1,targ.id.length));
	if (targ.className=='chk_00'){
		targ.className='chk_00_sel';
		itarg.value=1;
	}else{
		targ.className='chk_00';
		itarg.value=0;
	}
	frm_dirty(itarg);
}
function mrk_click(targ){
	var v = targ.id.split('.');
	var itarg=ge('i' + targ.id.substring(1,targ.id.length));
	if (itarg.value==0){
		targ.className='sel';
		itarg.value=1;
	}else{
		targ.className='reg';
		itarg.value=0;
	}
	frm_dirty(itarg);
}
function tri_click(targ){
	var v = targ.id.split('.');
	var itarg=ge('i' + targ.id.substring(1,targ.id.length));
	switch(targ.className){
		case 'tri_00':
			targ.className='tri_00_sel';
			itarg.value=1;
			break;
		case 'tri_00_sel':
			targ.className='tri_00_unk';
			itarg.value=2;
			break;
		case 'tri_00_unk':
			targ.className='tri_00';
			itarg.value=0;
			break;
	}
	frm_dirty(itarg);
}
function rad_click(targ){
	var v = targ.id.split('.'), iFlag;
	var mx=targ.attributes['max'].value
	var input='i_rad_'+v[0].substring(6,v[0].length)+'.'+v[1];
	var cal=(right(v[0],1)=='c');
	var ti=ge(input);
	if ($fetch==false){
		if(ti.value == targ.attributes['valu'].value){ //click on same -> undo
			if($rad_fix==false){ //CVIS NEW
				targ.className='rad_00';	
				ti.value='';
				mx=-1; //prevent fill
			}
		}
	}
	$rad_fix=false
	for(var i=0;i<mx;i++){
		itarg=v[0]+'.'+v[1]+'.'+i;
		if(i==v[2]*1){
			targ.className='rad_00_sel';	
			var yes=targ.attributes['y'].value;
			if(yes!=''){ //if click on a y=1 option
				var hi=ge('hi_' + input.substring(6,input.length));
				if (hi){ //make sure hi exists first (not necessarily so, given lev relations)
					if (yes==1){
						hi.className='hi_rad_00_sel';
					}else{
						hi.className='hi_rad_00';
					}
				}
			}
			ti.value=targ.attributes['valu'].value;			
		}else{
			ge(itarg).className='rad_00';			
		}		
	}
	if(!$cal){ //use $dirt_block instead !!!!
		frm_dirty(ti);	
	}
}
function bti_click(targ){
	var v = targ.id.split('.'), iFlag;
	var ti=ge('i_bti_'+v[0].substring(6,v[0].length)+'.'+v[1]);
	var mx=ti.attributes['mx'].value;
	if ($fetch==false){
		if(ti.value == targ.attributes['valu'].value){ //click on same -> undo
			targ.className='bti';	
			ti.value='';
			mx=-1; //prevent fill
		}
	}
	for(var i=0;i<mx;i++){
		itarg=v[0]+'.'+v[1]+'.'+i;
		if(i==v[2]*1){
			targ.className='bti_sel';	
			ti.value=targ.attributes['valu'].value;			
		}else{
			ge(itarg).className='bti';			
		}		
	}
	frm_dirty(ti);	
}
function rad_clear(ctl){
	var mx=ge('¢_rad_' + ctl + '.0').attributes['max'].value;
	var val=ge('i_rad_' + ctl ).value;
	for(i=0;i<mx;i++){
		trg=ge('¢_rad_'+ctl+'.'+i);
		if(trg.attributes['valu'].value==val){
			rad_click(trg);
			return false;
		}
	}
}
function input_clear(targ,lead){
	var nam=targ.id;
	nam=lead+nam.substring(5,nam.length);
	ge(nam).value='';
}
function clock_set(targ,h,m,ampm){
	var tam=ge('¢_hhi_200_ampm');
	for(var i=1;i<13;i++){
		ge('¢_hhi_' + i).className='hhi_reg';
		ge('¢_hhi_' + (i+50)).className='hhi_haf_reg';
	}
	if(h==0){
		ge('¢_hhi_100_disp').innerHTML='00:00';
		tam.innerHTML='···';
		tam.className='hhi_am';
	}else{
		if(m>-1){
			if(ampm){ //setting time from control
				var ht=h;var mt=m;
				if(h<10){ht='0'+h;}
				if(m<10){mt='0'+m;}
				ge('¢_hhi_100_disp').innerHTML=ht+':'+mt;
				tam.innerHTML=ampm;
				tam.className='hhi_'+ampm;
			}
			if(m> 25){h+=51;}
			if(h==63){h= 51;}
			targ=ge('¢_hhi_' + h);
		}
		if(h<50){
			targ.className='hhi_sel';
		}else{
			targ.className='hhi_haf_sel';
		}
	}
}
function lst_change(targ){
	frm_dirty(targ);
}
function lst_unselect(targ,dirt){
	targ.value='';
	targ.selectedIndex = -1;
	if(dirt){
		frm_dirty(targ);
	}
}
function lss_change(targ,typ){
	if(typ=='doc'){
		frm_restore('1.90','&doc='+targ.options[targ.selectedIndex].value);
	}else{
		frm_restore(false,false);
	}
}
function frm_blocker(display){
	ge('blocker').style.display=(display)?'block':'none';
}
function is_blocked(){
	return(ge('blocker').style.display=='block');
}

//CLEARING
function date_action(){
	if($sel){
		var targ=$sel;
		if(targ.attributes['jfc']!=undefined){
			eval(targ.attributes['jfc'].value);
		}
	}
}
function ctl_clear(){
	if($ctl){	
		if($ctl.id=='numpad'){if($prev_val!=$itg.value){fire_event($itg,'change');}}
		$ctl.style.display='none';
		$ctl=false;
	}
}
function sel_clear(){
	$sel=false;
}


//DATA
function frm_exe(fnc,tbl,arr){
	var dat=array_to_post(arr);
	$aji='data_exec';
	ajax_post('a_data.php',dat,'&fnc='+fnc+'&tbl='+tbl);
}

function frm_insert(fid,module,tix){
	var tbl=frm_name(fid);
	if(tbl.substring(0,1)=='!'){ //this will not happen for tix>1 so no need to send module name
		alert(module + ' module not yet available.');
		return false;
	}
	var dat='&tid='+frm_tid(fid)+'&tbl='+tbl+'&mod='+1;
	if(sys_v=='pdg'){
		$vv_tix=tix?tix:1;
	}else{
		frm_tix_val(fid,tix,false);
		dat+="&iii=id_3";
	}
	frm_status('02');
	$aji='data_insert';
	if(tix){ //insertion of extra time index
		dat+='&fetch=1';
		$ajx="frm_status('00');frm_fill(rsp,false);$dirty=false;";
	}else{ //insertion of new module
		$ajx="frm_status('00');frm_showmod(rsp,'"+fid+"');$dirty=false;";
	}
	ajax_post('a_data.php','frm='+fid+frm_ids()+dat);	
}
function frm_showmod(rsp,fid){
	if(rsp=='OK'){
		var loc=location.href;
		ix=loc.indexOf('&fid');
		if(ix>1){
			loc=loc.substring(0,ix);
		}
		loc+='&fid='+fid;
		location.href=loc;
	}
}
function frm_restore(fid,xdat){
	if(!fid){fid=$cur_frm;}
	if($sare_block && $sare_full){
		var exec="handler_"+frm_name(fid)+"('fetch',false);";
		eval(exec);
		return false;
	}
	frm_status('02');
	$aji='data_fetch';
	$ajx="frm_status('00');frm_fill(rsp,false);$dirty=false;";
	xdat=xdat?xdat:'';
	ajax_post('a_data.php','frm='+fid+frm_ids()+xdat);			
}
function frm_save(fid,ajx){ //if ajx, switch frm after save for pre-loaded systems
	if(!fid){fid=$cur_frm;}
	frm_wix_set(frm_name(fid));
	var dat=frm_data(fid);
	if(dat=='[]'){return false;}
	$aji='data_save';
	if(ajx){
		$ajx=ajx;
	}else{
		$ajx="frm_status('00');$dirty=false;";
	}
	//alert(dat+frm_ids());
	ajax_post('a_data.php','data='+dat+frm_ids()+'&norec='+$vv_norec);			
}

function frm_ids(){
	var pst='';
	for(i=0;i<5;i++){
		pst+='&id_'+i+'='+$vv_id[i];
		pst+='&ix_'+i+'='+$vv_ix[i];		
	}	
	pst+='&tix='+$vv_tix;		
	return pst;
}
function frm_tix(act,tix,targ){	
	var ex='';
	var typ=false;
	switch(act){
		case 'set':
			if(tix.indexOf('_')>-1){
				var u=tix.split('_');
				ex='_'+u[0];
				tix=u[1];
			}
			var v=tix.split('!');
			var t=v[0].split(',');
			var n=t[0]*1;
			var r=(v.length==2)?v[1].split(','):false;
			var e=(v.length==3)?v[2].split(','):false;
			for(i=1;i<n+1;i++){
				targ=ge('¢_tix_'+i+ex);
				targ.innerHTML='';
				targ.className='bti';
			}
			var tii;
			if(sys_v=='pdg'){
				tii=$vv_tix
			}else{
				tii=frm_tix_val(false,false);
			}
			for(i=1;i<t.length;i++){
				targ=ge('¢_tix_'+i+ex);
				targ.innerHTML=i;
				if(i==tii){targ.className='bti_sel';}
				if(r){targ.setAttribute('tid',r[i-1]);} //record id #s
				if(e){ //extra marker
					ge('etix_'+i+ex).innerHTML=e[i-1];
				}
			}
			break;
		case 'click':
			targ=tix;
			var v=targ.id.split('_');
			if(targ.innerHTML){
				var tid=targ.getAttribute('tid');
				if(tid!=null){
					frm_tix_switch(targ,tid);
				}else{
					$vv_tix=v[2];	
					frm_restore(false,false);
				}
			}else{ //new
				if($dirty){
					valert('You must save/discard changes before adding a new index.','new index');
					return;
				}
				typ=targ.parentNode.getAttribute('typ');
				typ=typ?typ+' ':'';
				if(v.length==4){
					//alert(v[3])
					ex='_'+v[3];
				}
				for(var i=v[2];i>0;i--){
					if(ge('¢_tix_'+i+ex).innerHTML!=''){break;}
				}
				var msg='Do you wish to add '+typ+'index '+v[2]+'?';
				msg+=(i+1!=v[2])?'<br><br><b class="red">WARNING</b><br>It is not the next logical selection.':'';
				typ=typ?typ:'time ';
				valert(msg,typ+'index','yesno',false,"frm_tix('add',"+v[2]+",'"+targ.id+"')");
			}
			break;
		case 'add':
			targ=ge(targ).parentNode; //parent row
			typ=targ.getAttribute('exe');
			if(typ){
				frm_insert_rec(typ,tix);
			}else{
				frm_insert($cur_frm,'',tix);
			}
			break;
	}
}
function frm_fill(rsp,direct){
	var frm=ge('frm_'+$cur_frm);
	var rs;
	var go=false;
	$vv_norec=0;
	$vv_recnum=-1;
	$fetch=true;
	$dirt_block=true;
	var iex,v,vi,typ,ctl,sel,targ,itarg,trg,mx,tx;
	if(!direct){
		rs=eval('(' + rsp + ')');
	}else{
		rs=rsp;
	}
	for(var i=0;i<rs.length;i++){
		v=rs[i].v;
		iex=v.substr(0,2);
		go=(iex=='i_' || iex=='e_' || iex=='x_')
		if(go){
			if(iex=='x_'){ //for XRS data
				typ='xrs';				
			}else{
				if(iex=='e_'){ //for ic data
					v=frm.elements['n_'+v.substr(2,v.length)].id;
				}
				typ=v.substr(2,3);
				if(typ=='txt' || typ=='num' || typ=='dtx' || typ=='mag'){
					ctl=v.substr(6,v.length);
				}else{
					ctl=v.substr(2,v.length);
				}
			}
			//if(i<3){valert(v + "  : :  " +typ + " " + rs[i].x);}
			switch(typ){
				case 'arr':frm_arr($cur_frm,rs[i].x);break;
				case 'tix':frm_tix('set',rs[i].x,0);break;
				case 'vix':frm_vix(frm_name($cur_frm),rs[i].x,0);break;
				case 'vvx':frm_vix(frm_name($cur_frm),rs[i].x,1);break;
				case 'iii':var iv=rs[i].x.split("_");$vv_id[iv[1]]=iv[2];$vv_norec=0;break; //norec reset upon insertion
				case 'nnn':
					$vv_norec=(rs[i].x*1==0)?1:0;
					if(typeof frm_norec_handler=='function'){frm_norec_handler($vv_norec);}
					break;
				case 'rad':
					targ=ge('¢_' + ctl + '.0');
					mx=targ.attributes['max'].value;
					if(rs[i].x.length==0){
						ge(v).value='';
						for(var a=0;a<mx;a++){
							ge('¢_' + ctl + '.' + a).className='rad_00';
						}
					}else{
						for(var a=0;a<mx;a++){
							targ=ge('¢_' + ctl + '.' + a);
							if(rs[i].x==targ.attributes['valu'].value){
								rad_click(targ);								
								a=mx;
							}
						}
					}
					break;
				case 'chk':
					var tg=ge(v)
					if(tg){
						tg.value=rs[i].x;
					}else{
						alert(v);
					}
					targ=ge('¢_' + ctl);
					if(rs[i].x*1==1){
						targ.className='chk_00_sel'
					}else{
						targ.className='chk_00'
					}
					break;
				case 'mrk':
					ge(v).value=rs[i].x;
					targ=ge('¢_' + ctl);
					if(rs[i].x*1==1){
						targ.className='sel';
					}else{
						targ.className='reg';
					}					
					break;
				case 'tri':
					ge(v).value=rs[i].x;
					targ=ge('¢_' + ctl);
					switch(rs[i].x*1){
						case 0:
							targ.className='tri_00';
							break;
						case 1:
							targ.className='tri_00_sel';
							break;
						case 2:
							targ.className='tri_00_unk';
							break;
					}
					break;
				case 'dro': //this one is a bit special RE v~ctl
					vi=ctl.split('#');
					ctl=vi[0].substr(4,vi[0].length);
					trg=ge('¢_dro_' + ctl);
					if(rs[i].x.length>0){
						targ=ge('¢_dra_' + trg.attributes['lev'].value + "." + rs[i].x);
						if(targ!=undefined){
							tx=targ.innerHTML;
						}else{
							tx='';
						}
					}else{
						tx='';
					}
					ge(ctl).value=rs[i].x;
					trg.value=tx;
					break;
				case 'num':					
					ge(ctl).value=rs[i].x;
					break;
				case 'fli':					
					ge('i_'+ctl).value=rs[i].x;
					break;
				case 'txt':
					if(ge(ctl)==undefined){
						valert(ctl);
					}else{
						ge(ctl).value=rs[i].x;
					}
					break;
				case 'dtx':
					if(rs[i].x==null){
						tx='';
					}else{
						if(rs[i].x.length==0){
							tx='';
						}else{
							tx=rs[i].x.substr(0,10);
							v=tx.split("-");
							tx=v[2] + '-' + month_mmm(v[1]*1) + '-' + v[0];
						}
					}
					ge(ctl).value=tx;
					break;
				case 'tmx':
					tx='';
					if(rs[i].x.length>0){
						v=rs[i].x.substring(11,16).split(":");
						var hrs=v[0]*1;
						if(hrs==0){
							hrs=12;
							v[1]+='AM';
						}else if(hrs>11){
							if (hrs>12){
								hrs=hrs-12;
							}
							v[1]+='PM';
						}else{
							v[1]+='AM';
						}
						if(hrs<10){
							tx='0';
						}
						tx+=hrs+':'+v[1];
					}
					ge(ctl.substring(4,ctl.length)).value=tx;
					break;					
				case 'lst':
					if(rs[i].x*1>0){
						targ=ge(rs[i].v+'.'+rs[i].x);
						if(targ){
							ix=targ.attributes['ix'].value;
							targ=ge("i_"+ctl);
							targ[ix].selected=true;
							targ.style.borderColor='#474747';;
						}else{
							if(ge("i_"+ctl)==undefined){
								valert("i_"+ctl);
							}else{
								ge("i_"+ctl).style.borderColor='#ff00e4';;
							}
						}
					}else{
						targ=ge(rs[i].v);
						if(targ.value!=''){
							targ.value='';
							ix=ge(rs[i].v+'.'+ targ.value).attributes['ix'].value;
							ge("i_"+ctl)[ix].selected=false;
						}
					}
					break;					
				case 'xrs':
					xrs_chk(false, rs[i].x*1);
					break;
				case 'mag':
					ge(ctl).value=rs[i].x;
					break;
				case 'lsi':
					var v=rs[i].x.split('·');
					if(v[0]!=''){
						ge(ctl+v[0]).innerHTML=v[1];
					}
					break;
				case 'hic':
					targ=ge('¢_'+ctl);
					ge('i_'+ctl).value=rs[i].x*1;
					if(rs[i].x*1==1){
						targ.className='hi_chk_00_sel';
					}else if(rs[i].x*1==2){
						targ.className='hi_chk_00_nil';
					}else{
						targ.className='hi_chk_00';
					}
					break;					
				case 'bti':
					targ=ge('¢_' + ctl + '.0');
					itarg=ge(v);
					mx=itarg.attributes['mx'].value;
					if(rs[i].x.length==0){
						itarg.value='';
						for(var a=0;a<mx;a++){
							ge('¢_' + ctl + '.' + a).className='bti';
						}
					}else{
						for(var a=0;a<mx;a++){
							targ=ge('¢_' + ctl + '.' + a);
							if(rs[i].x==targ.attributes['valu'].value){
								bti_click(targ);
								a=mx;
							}
						}
					}
					break;					
			}
		}else{
			if(ge(v)){
			}else{
				//valert(v);
			}
			//.innerHTML=rs[i].x;
		}
	}
	$fetch=false;
	$dirt_block=false;
	frm_status('00');
	//my_foot();
}
function frm_data(fid){
	var frm=ge('frm_'+fid);
	var i,id,ti,typ,chg,val,targ,a;
	var dat=[],v=[];
	for(i=0; i<frm.length; i++){
		targ=frm.elements[i];
		id=targ.id;
		typ=targ.attributes['typ'] ? targ.attributes['typ'].value : 'x';
		chg=targ.attributes['chg'] ? targ.attributes['chg'].value :  0 ;
		if(typ!='x' && chg==1){
			targ.attributes['chg'].value=0; //change reset!!
			if(chg==1){
				if(id.substr(0,2)=='i_'){id=id.substr(6,id.length);}
				val=db_val(targ.value,typ,true)
				if(val!='!@!'){
					v=id.split('.');	
					if(v[0]=='x'){ //XRS						
					}else{
						ti=v[0];
						if(dat[ti]==undefined){dat[ti]=[];}
						dat[ti][dat[ti].length]=v[1]+'='+val;
					}
				}
			}
		}
	}		
	var jsn='';
	var spc=0; //special saves handled here
	for(ti in dat){
		if(jsn){jsn+=',';}
		jsn+='{"ti":'+ti+',"set":"'+dat[ti].join(',')+'","w":"'+$wix+'","spc":"'+spc+'"}';
	}
	return '['+jsn+']';
}
function frm_dirty(targ){
	if($dirt_block){return false;}
	if(targ){if(targ.attributes['typ'].value=='x'){return false;}}
	if ($fetch==false){
		if(!targ){
			if($dirty==false){
				frm_status('01');
			} 
		}else{
			if(targ.attributes['chg']!=undefined){
				if($dirty==false){
					frm_status('01')
				} 
				targ.attributes['chg'].value=1;
			}
		}
	}
	//valert(targ.id);
	$dirty=true;
}

//MAGIC BOXES
function mag_fill(){
}

//VALIDATION
function eslash(val){
	if(!val){
		val='';
	}else{	
		val=val.replace(/\r/g, ''); //to get rid of extra return in IE
		val=escape(addslashes(val));
	}
	return val;
}
function js_val(val){
	return val.replace(/"/g,'\\"');
}
function db_val(val,typ,jsn){
	if(!val){val='';}
	if(typ=='n'){ //number
		if (val.length==0){
			val='Null';
		}else{
			val=val*1;
		}
	}else if(typ=='d'){ //date
		if (val.length==0){
			val='Null';
		}else{
			val=date_format(val);
		}
	}else if(typ=='h'){ //time
		if (val.length==0){
			val='Null';
		}else{
			val="'" + time_format(val) + "'";
		}
	}else if(typ=='t'){ //t=text			
		if (val.length==0){
			val='Null';
		}else{
			val=val.replace(/\r/g, ''); //to get rid of extra return in IE
			val="'" + escape(addslashes(val)) + "'";
			if(jsn){
				val=val.replace(/%5C%27/g, '%5C%5C%27'); //escape escape for json
			}
		}
	}else if(typ=='b'){ //b=binary
		if (val.length==0){
			val=0;
		}else{
			val=val*1;
		}
	}else if(typ=='l'){ //list
		if (val.length==0){
			val='Null';
		}else{
			val=val*1;
		}		
	}else{
		val='!@!';				
	}		
	return val;
}
function tval(targ,typ,brd,min,max,no_dirt){
  var msg='';
	var mag=false;
	frm_dirty(targ)
  switch(typ){
  case 'd': //date
    break;
  case 't': //string
    break;
  case 'm': //string in textareawith max len
    if(max!=''){
	    if(targ.value.length > max*1){
	      msg='Your text entry may not exceed ' + max + ' characters.\n\n';
	    }
		}
    break;
  case "n": //number
		if(min=='!'){
			return false;
		}
		mag=true;
    num=isnumeric(targ.value);
    if (num!=",,,,"){
      if (num == null){
        msg="Your entry is not a number.";
      }else{
        var num=targ.value*1;
        if (num<min*1 || num>max*1){
          msg="Your entry is out of range.";
        }
      }
    }
		if (msg != ""){
			msg+= '\n\n' + 'Please key in a value between: ' + min + ' and ' + max + '\n\n';
		}
    break;
  }
	var ebox=ge("frm_er");
	var etot=ebox.value*1;
	if (msg != ""){
		etot=etot+1;
		targ.style.borderColor='#ff00e4';
		$prev_status=(frm_status('get')=='03')?$prev_status:frm_status('get');
		frm_status('03');
		valert(msg);
	}else{
		if(etot>0){
			etot=etot-1;
			targ.style.borderColor=brd;
			if(etot==0){
				frm_status($prev_status);
			}
		}
		if(mag==true){mag_fill()};
	}
	ebox.value=etot;
}
function location_go(href){
	location.href=href;
}

//HIDDEN ROWS
function browser_rowdisp(){
	if (navigator.appName== "Microsoft Internet Explorer") {
		return 'inline';
	}else{
		return 'table-row';
	}
}
function group_expand(oElm, strTagName, strClassName, disp){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var e;
	for(var i=0; i<arrElements.length; i++){
		e = arrElements[i];
		if(oRegExp.test(e.className)){
			e.style.display=disp;
		}
	}
	my_foot();
}
function my_foot(){
	gi('foot').className='clear'; //because of f*ck$#g IE to drop footer down to bottom on data load
}
