var Core=null;var T24SID='';var denyPG=true;window.addEventListener('beforeunload',beforeUnloadAction,false);function beforeUnloadAction(ev) {if(denyPG){var msg='ATTENTION: Do not use the browser\'s buttons for navigation- use the application controls instead !!!';if(ev)ev.returnValue=msg;return msg;}
}
function $A(o) {if (!o) return [];if (o.toArray) return o.toArray();for (var r=[], i=0, l=o.length; i<l; i++)
r.push(o[i]);return r;}
Function.prototype.bind = function() {var me=this, args=$A(arguments), o=args.shift();return function() {return me.apply(o, args.concat($A(arguments)));};};function isArray(obj){return((obj)&&(typeof(obj)=='object')&&(typeof(obj.length)!="undefined")&&(typeof(obj)!='string'));}
function clone(t) {if(typeof(t)=='object'){if(isArray(t)){var o=new Array();for(var p=0;p<t.length;p++)o.push(clone(t[p]));} else {var o=new Object();for(var p in t)o[p]=clone(t[p]);}
return(o);}
return(t);}
function bsearch(a,y,compare,nearest) {function _find(x1,x2) {var dx=x2-x1;if(dx==0) return (nearest||(compare(y,a[x1])==0))?x1:-1;if(dx==1) {var c1=compare(y,a[x1]);if(c1==0)return x1;var c2=compare(y,a[x2]);if(c2==0)return x2;if(!nearest)return -1;return (-c2>c1)?x1:x2;}
var n=Math.floor(dx/2)+x1;var c1=compare(y,a[n]);if(c1==0)return(n);else if(c1<0)return _find(x1,n-1);else return _find(n+1,x2);}
if(a.length==0)return -1;var c=compare(y,a[0]);if(c==0)return 0;if((c<0)||(a.length==1))return nearest?0:-1;var c=compare(y,a[a.length-1]);if(c>0)return nearest?(a.length-1):-1;if(c==0)return (a.length-1);return _find(0,a.length-1);}
function $TXT(txt) {var r;if (txt=='') {r=$DIV();r.innerHTML='&nbsp;';} else r=document.createTextNode(txt);return(r);}
function $HTML(html,styles) {var r=$DIV(styles);r.innerHTML=(html=='')?'&nbsp;':html;return(r);}
function $IMG(url,styles) {var r=document.createElement('img');r.src=url;setStyle(r,styles);return(r);}
function $DIV(styles) {var div=document.createElement('div');setStyle(div,styles);return(div);}
function setStyle(r,styles) {if (typeof(styles)=='object')
for (var s in styles) {if('id|title|onload|onmousedown|onclick|ondblclick|onmouseover|onmouseout'.indexOf(s)>-1) r[s]=styles[s];else
switch(s) {case 'css':r.className=styles[s]; break;case 'link':r.onclick=styles[s]; break;case 'html':r.innerHTML=styles[s]; break;/*jsl:ignore*/
default: try {r.style[s]=styles[s];} catch (e) {};/*jsl:end*/
}
}
return(r);}
function round(x, n) {if (n < 1 || n > 14) return false;var e = Math.pow(10, n);var k = (Math.round(x * e) / e).toString();if (k.indexOf('.') == -1) k += '.';k += e.toString().substring(1);return k.substring(0, k.indexOf('.') + n + 1);}
function login() {function loginAnswer() {this.Response=function(resp) {if ((resp.result!=null)&&(resp.sid!=null)&&(resp.result==0)) {T24SID = resp.sid;loadPage('$');}
else { Core.alert('Refused to log in'); }
};}
var f=document.forms[0];Core.lock('Authenticating');var loc='';if(typeof(geoip_country_code)=='function'){loc='{ccode:"'+geoip_country_code();loc+='",cname:"'+geoip_country_name();loc+='",city:"'+geoip_city();loc+='",lat:"'+geoip_latitude();loc+='",lon:"'+geoip_longitude();loc+='"}';loc='&loc='+encodeURIComponent(loc);}
Core.Request('/tom24x/login','cust=' + encodeURIComponent(f.elements['CUST'].value) + '&usr=' + encodeURIComponent(f.elements['USR'].value) + '&pwd=' + encodeURIComponent(f.elements['PWD'].value)+loc,new loginAnswer());}
function logoff() {function logoffAnswer(httpReq) {this.Response=function(resp) {if ((resp.result!=null)&&(resp.result==0))loadPage('');else { Core.alert('Refused'); }
};}
Core.lock('Loading Page');Core.Request('/tom24x/login','sid='+T24SID,new logoffAnswer());return false;}
function finish() {function closeAnswer() {this.Response=function(resp) {if ((resp.result!=null)&&(resp.result==1))loadPage('$');else { Core.alert('Refused'); }
};}
if (Core.mo) {Core.lock('Loading Page');Core.Request('/tom24x/open','sid='+T24SID,new closeAnswer());}
return false;}
function loadPage(page,proc) {denyPG=false;function createI(n,v) {var c=document.createElement('input');c.type="hidden";c.name=n;c.value=v;return c;}
Core.lock('Loading Page');var aform=document.createElement('form');aform.action="/tom24x/";aform.method="post";document.getElementById('CentralPanel').appendChild(aform);aform.appendChild(createI('p',page));if(proc)aform.appendChild(createI('proc',proc));aform.appendChild(createI('sid',T24SID));aform.submit();return false;}
function analyse (opts) {function analyse_finish() {this.Response=function(resp) {};}
var msg="Are you sure you want to run the analysis?<BR><UL>";opts=new String(opts);if (opts.indexOf('HardBeatAnalysis')!=-1) msg=msg+'<LI>Beat Analysis (discard changes)</LI>';if (opts.indexOf('DoBeatAnalysis')!=-1) msg=msg+'<LI>Beat Analysis</LI>';if (opts.indexOf('Beat')!=-1) msg=msg+'<LI>Arrhythmia Analysis</LI>';msg=msg+'</UL>';Core.confirm(msg,Core.Request.bind(Core,"/tom24x/analyse","a="+opts+"&sid="+T24SID,new analyse_finish()));}
function activateAnalysis (opts,txt) {function activate_finish(httpRequest) {this.Response=function(resp) {loadPage('#');};}
var msg="Are you sure you want to activate the selected tool?<BR><UL><LI>"+txt+"</LI></UL>";Core.confirm(msg,Core.Request.bind(Core,"/tom24x/db","action=activate&t="+opts+"&sid="+T24SID,new activate_finish()));}
function TWorkflow(id) {var me=this;var ani=new TAnimation();var _div=document.getElementById(id);var selp=null;var pClosed=true;var pCnt=0;var mv=0;var bc=[];var mr=$DIV({css:'returnL'}),ml=$DIV({css:'endL'});var procs=$DIV({css:'procs'});var pclip=$DIV({css:'clipP'});var pbut=$DIV({css:'butP'});pclip.appendChild(pbut);procs.appendChild(pclip);procs.appendChild(ml);_div.appendChild(procs);_div.appendChild(mr);var ret=$DIV({css:'return'});var retBut=$DIV({css:'toolRET'});ret.appendChild(retBut);_div.appendChild(ret);function _mv(){var o=bc[selp];if((mv==0)||(o.r2<=o.r1))return;o.r0=o.r0+mv;if (o.r0>0) {o.r0=0;mv=0;}
if (o.r0+o.r2<o.r1) {o.r0=o.r1-o.r2;mv=0;}
o.div.style.left=o.r0+16;if (mv!=0)window.setTimeout(_mv,50);}
var clip=$DIV({css:'clipWF'});ml.onmouseover=function(){mv=10;window.setTimeout(_mv,50);};ml.onmouseout=function(){mv=0;};mr.onmouseover=function(){mv=-10;window.setTimeout(_mv,50);};mr.onmouseout=function(){mv=0;};_div.appendChild(clip);this.registerProcedure=function(i,text,title,image) {bc[i]={div:$DIV({css:'buttonsWF',visibility:'hidden'}),r1:640,r2:0,r0:0,r3:0,but:$DIV({css:'procWF'})
};bc[i].cnt=pCnt;pCnt++;bc[i].but.title=title;bc[i].but.appendChild($IMG(image));bc[i].but.appendChild(document.createElement('br'));bc[i].but.appendChild(document.createTextNode(text));bc[i].but.onclick=me.selProc.bind(me,i);bc[i].but.onmouseover=function(){this.style.color='#ffaa00';};bc[i].but.onmouseout=function(){this.style.color='#fcfcfc';};pbut.appendChild(bc[i].but);clip.appendChild(bc[i].div);};this.selProc=function(i) {if(pClosed){ani.set([[pclip,'width',mr.offsetLeft+2],[clip,'opacity',0],[pbut,'left',16]
]);} else {if(selp)bc[selp].div.style.visibility='hidden';selp=i;bc[selp].div.style.visibility='visible';bc[selp].div.style.left=bc[selp].r0+16;ani.set([[pclip,'width',64],[clip,'opacity',1],[pbut,'left',-64*bc[selp].cnt]
]);}
ani.animate(30,20,null);pClosed=!pClosed;};this.registerPage=function(text,title,image,action,proc,sel) {if(proc==-1){mr.style.left=720;ret.style.left=736;retBut.title=title;retBut.onclick=action;retBut.onmouseover=function(){this.style.color='#ffaa00';this.style.fontWeight='bold';};retBut.onmouseout=function(){this.style.color='#fcfcfc';this.style.fontWeight='normal';};retBut.appendChild($IMG(image));retBut.appendChild(document.createElement('br'));retBut.appendChild(document.createTextNode(text));return;}
var a=$DIV({css:(sel?'toolWFs':'toolWF')});if(!sel){a.onmouseover=function(){this.style.color='#ffaa00';this.style.fontWeight='bold';};a.onmouseout=function(){this.style.color='#7889a5';this.style.fontWeight='normal';};}
a.title=title;a.onclick=action;a.appendChild($IMG(image));a.appendChild(document.createElement('br'));a.appendChild(document.createTextNode(text));bc[proc].r2+=75;if(sel){bc[proc].r2+=5;selp=proc;bc[proc].div.style.visibility='visible';bc[proc].r2+=7;bc[proc].r3=bc[proc].r2;pbut.style.left=-64*bc[proc].cnt;}
bc[proc].div.style.width=bc[proc].r2;bc[proc].div.appendChild(a);if(bc[proc].r2>bc[proc].r1){if (bc[proc].r3>0) {bc[proc].r0=(bc[proc].r1/2)+41-bc[proc].r3;if (bc[proc].r0>0)bc[proc].r0=0;if (bc[proc].r0+bc[proc].r2<bc[proc].r1)bc[proc].r0=bc[proc].r1-bc[proc].r2;bc[proc].div.style.left=bc[proc].r0+16;}
}
};}
function TState(sid) {var me=this;var _color = new Array('#9BFAD1','#FFAA00','#E0E0E0','#FAD19B','#E0E0E0');var _msg = new Array('READY','PROCESSING','LOCKED','LOADING','WAIT');var _state=-1;var _wait=0;var _wait2=true;var _pgReload=false;var _bReld;var sbox;var _pb;var _pbimg;var	_bAna;var ls=[];this.addListener=function(func) {ls.push(func);};this.autoreload=true;var waitImg=Array();this.loadImg=function(imgurl){var i=$IMG(imgurl);waitImg.push(i);_wait=waitImg.length;_set(3);if (waitImg.length==1) window.setTimeout(checkload,500);return 'url('+imgurl+')';};function checkload(){while (waitImg[0].complete) {waitImg.shift();_wait=waitImg.length;if (_wait==0) return;}
window.setTimeout(checkload,500);}
function _set(new_status) {var i;if (_wait>0) {if(_wait2) {_wait2=false;var c=_color[3];sbox.setColor(sbox,c);sbox.title.innerHTML = _msg[3];}
_pb.style.display = (_state==1)?'block':'none';if (new_status==3) _state=new_status;return;} else _wait2=true;if (new_status!=_state) {_state=new_status;var c=_color[_state];sbox.setColor(sbox,c);sbox.title.innerHTML = _msg[_state];_pb.style.display = (_state==1)?'block':'none';}
}
this.Response=function(ans) {if(ls.length!=0) {for(var i=0;i<ls.length;i++)ls[i](ans);}
if (ans.state!=null) {_set (ans.state);if (ans.state==1) {var percent = ans.progress;_pbimg.style.width = Math.floor(1.8*percent)+"px";}
if ((ans.state!=1) && ans.dirty) {_bAna.onclick = function(){ return analyse(ans.dirtyChans);};_bAna.style.display = 'block';} else _bAna.style.display='none';if (ans.reload) {if(me.autoreload) {loadPage('#');_pgReload=true;} else _bReld.style.display = 'block';} else _bReld.style.display='none';} else {if (ans.uid>-1)_set(0);}
window.setTimeout(_request,(ans.state==1)?1000:2000);};function _request() {Core.Request ('/tom24x/status','sid='+T24SID+(_pgReload?'&reload=1':'')+(Core?('&pos='+Core.time):''),me,0);_pgReload=false;}
sbox=Core.DIV('','',3,{background:'#E0E0E0',position:20});_pb=document.createElement('DIV');_pb.className='progressbar';_pb.style.display='none';sbox.main.appendChild(_pb);_pbimg=$IMG('img/common/pb.png',{width:0,height:10});_pb.appendChild(_pbimg);_bAna=new TTextButton({text:'ANALYZE !',style:'red',width:176,marginLeft:8,marginTop:8});_bAna=_bAna.Component;_bAna.style.display='none';_bReld=new TTextButton({text:'Reload Page !',style:'red',width:176,marginLeft:8,marginTop:8});_bReld=_bReld.Component;_bReld.style.display='none';_bReld.onclick = function(){loadPage('#');_pgReload=true;};sbox.main.appendChild(_bAna);sbox.main.appendChild(_bReld);if (sid) {_set (4);window.setTimeout(_request,1000);}
}
function THelp() {var me=this;var _help=Core.DIV('','HELP',3,{background:'#e8e8e8',position:30});var txt='';_help.parent.style.display='none';_help.main.style.height=200;var hclip = $DIV({css:'hclip'});_help.main.appendChild(hclip);var hmain = $DIV({css:'hmain'});hclip.appendChild(hmain);var scr = new TScroll(hclip,hmain);_help.main.appendChild(scr.Component);var hlp_l=$DIV({css:'txt'});hmain.appendChild(hlp_l);this.toggle=function() {if (_help.parent.style.display=='block') _help.parent.style.display='none';else {_help.parent.style.display='block';scr.refresh();}
};this.setText=function(shrt,desc,hlp) {hlp_l.innerHTML='<CENTER><BIG><B>'+shrt.toUpperCase()+'</BIG><BR>'+((desc!='')?desc+'</B></CENTER><BR>':'')+hlp+'<BR>';};this.addKey=function(k,t) {var d=$DIV({css:'keys'});var i=0;if (k.indexOf('c')>-1) {d.appendChild($IMG('img/common/k_ctrl.png',{css:'keyimg'}));i++;}
if (k.indexOf('s')>-1) {d.appendChild($IMG('img/common/k_shift.png',{css:'keyimg'}));i++;}
if (k.indexOf('a')>-1) {d.appendChild($IMG('img/common/k_alt.png',{css:'keyimg'}));i++;}
k=k.substr(0,k.length-i);switch(k) {case '-' : d.appendChild($IMG('img/common/k_horiz.png',{css:'keyimg'})); break;case '|' : d.appendChild($IMG('img/common/k_vert.png',{css:'keyimg'})); break;case '+' : d.appendChild($IMG('img/common/k_cursor.png',{css:'keyimg'})); break;case '%' : d.appendChild($IMG('img/common/k_pgupdn.png',{css:'keyimg'})); break;case '~' : d.appendChild($IMG('img/common/k_p1end.png',{css:'keyimg'})); break;default : d.appendChild($IMG('img/common/k'+k+'.png',{css:'keyimg'}));}
var d1=$DIV({display:'block',overflow:'hidden',height:'auto',width:176});d1.appendChild(d);d1.appendChild($DIV({css:'keytxt',html:t}));hmain.appendChild(d1);};}
function TToolBox() {var me=this;var box=Core.DIV('','TOOL BOX',3,{background:'#CDC5B0',position:40});var rForm=null;var rTbl={};function rRequest(t) {if(rForm==null)return;for (var tbl in rTbl) {if((t<rTbl[tbl].start)||(t>rTbl[tbl].end)) {Core.Request('/tom24x/result','sid='+T24SID+'&n=*&t='+Core.time+'&diary='+tbl,me,1,tbl);rTbl[tbl].start=t;rTbl[tbl].end=t;}
}
}
function setSpecPerc(k,r,v1,v2) {var o=rForm.$(k+'.'+v1+'%');if(!o)return;if(r&&r[v1]&&r[v2]){o.setUnit('%');o.setValue(100*parseFloat(r[v1].val)/parseFloat(r[v2].val));} else o.setValue(-1);}
this.Response=function(resp,c,k) {var o;switch(c) {case 1:if(rForm){if(resp[0]) {rTbl[k]=resp[0];for(var n in resp[0]) {o=rForm.$(k+'.'+n);if(o){if(resp[0][n].unit)o.setUnit(resp[0][n].unit);o.setValue(resp[0][n].val);}
}
}
setSpecPerc(k,resp[0],'ULF','TOTPWR');setSpecPerc(k,resp[0],'VLF','TOTPWR');setSpecPerc(k,resp[0],'LF','TOTPWR');setSpecPerc(k,resp[0],'HF','TOTPWR');}
break;}
};var _time=null;function _setTime(t) {if(_time)_time.setValue(t);rRequest(t);}
var _hs;function _setRes(r) {if(_hs)_hs.setValue(r);}
function _changeTrendMag() {Core.setRes('*',_hs.getValue());}
var _hr,_minhr,_minhrx,_maxhr,_maxhrx,acthr;function _respHR(r) {acthr=r;if(_hr)_hr.setValue(r.hr.hr);if(_minhr)_minhr.setValue(r.minhr.hr);if(_minhrx)_minhrx.setValue(r.minhr.xval);if(_maxhr)_maxhr.setValue(r.maxhr.hr);if(_maxhrx)_maxhrx.setValue(r.maxhr.xval);}
this.jump=function(w){switch(w) {case 'MINHR' : if(acthr)Core.setTime(null,acthr.minhr.xval); break;case 'MAXHR' : if(acthr)Core.setTime(null,acthr.maxhr.xval); break;}
};this.click=function(cmd) {for(var i=0;i<cmd.length;i++) {var m=cmd[i].split('.');if(m.length==2)m.push('0');Core.Module[m[0]].cmd(parseInt(m[1],10),parseInt(m[2],10));}
};this.init=function(tools) {var b,bs;var hmain=box.main;for(var i=0;i<tools.length;i++){if(isArray(tools[i])) {bs=new TToolbar({visible:true});hmain.appendChild(bs.Component);b=bs.addGroup({decoration:false});bs.addSpacer(b,{});for(var j=0;j<tools[i].length;j++){switch(tools[i][j].feature){case 'TIME':_time=bs.addDateTime(b,{value:0});me.setTime=_setTime;break;case 'HR':_hr=bs.addValue(b,{title:'HR',unit:'bpm',precision:1});me.ResponseHR=_respHR;break;case 'MINHR':bs.addImg(b,{img:'img/trends/minhr.png',width:24});_minhr=bs.addValue(b,{title:'HR',width:45,style:'small',precision:1});_minhrx=bs.addDateTime(b,{value:0});bs.addButton(b,{img:'img/trends/go24.png',link:me.jump.bind(me,'MINHR')});me.ResponseHR=_respHR;break;case 'MAXHR':bs.addImg(b,{img:'img/trends/maxhr.png',width:24});_maxhr=bs.addValue(b,{title:'HR',width:45,style:'small',precision:1});_maxhrx=bs.addDateTime(b,{value:0});bs.addButton(b,{img:'img/trends/go24.png',link:me.jump.bind(me,'MAXHR')});me.ResponseHR=_respHR;break;case 'HSCALE':_hs=bs.addSlider(b,{title:'Trend Magnification',values:[480,240,120,60,30,15,5],titles:['4 days','2 days','1 day','12 hours','6 hours','3 hours','1 hour'],init:2,onchange:_changeTrendMag});me.setRes=_setRes;break;case 'RESULT':if(rForm==null)rForm=new TForm();bs.addValue(b,{title:tools[i][j].name,style:tools[i][j].style,unit:'',precision:(tools[i][j].precision?tools[i][j].precision:0),name:tools[i][j].table+'.'+tools[i][j].item,form:rForm});rTbl[tools[i][j].table]={start:-1,end:-1};break;case 'SPACE':bs.addSpacer(b,{width:tools[i][j].width});break;case 'SEPARATOR':b=bs.addGroup({decoration:true});break;default:if(!isArray(tools[i][j].cmd))tools[i][j].cmd=[tools[i][j].cmd];if(typeof tools[i][j].title=='undefined')tools[i][j].title=0;if(typeof tools[i][j].title=='number') {var m=tools[i][j].cmd[tools[i][j].title].split('.');tools[i][j].title=Core.Module[m[0]].help[parseInt(m[1],10)];}
bs.addButton(b,{title:tools[i][j].title,img:tools[i][j].img,link:me.click.bind(me,tools[i][j].cmd)});}
}
} else {b=$DIV({css:'SectionTitle'});b.appendChild($DIV({html:tools[i].title}));hmain.appendChild(b);hmain.appendChild($DIV({clear:'both'}));}
}
};this.setVisible=function(s){box.parent.style.display=s?'block':'none';};}
function TCore(session,usr,cus,ur,cPg,cPgId,cPr,mo,time,region,res) {var me=this;var _modules=Array();var _massoc=Object();var _keyActive=-1;var _keyEnabled=true;var _keyMap=new Array();var _tmpMap=new Array();var hlp=null;var tbx=null;var wf=null;var init={};var urc=decodeUR(ur);this.cid=cus;this.uid=usr;this.mo=mo;var recsup='';if(mo) {mo.mdatef-=2209161600;if(!mo.annonym)mo.patdobf-=2209161600;this.reclen=mo.mlen;this.recstart=mo.mdatef;this.datasup=mo.recsup;recsup=new String(mo.recorder);}
this.time=time;this.region=region;this.resolution=res;checkRegion();this.day=-1;this.Module=new Array();this.pgid=cPgId;this.page=cPg;this.proc=cPr;var lsp=new Array();var _imgFlippedDown = 'img/common/h1fup.png';var _imgFlippedUp = 'img/common/h1fdown.png';this.State=null;T24SID=session;if(!T24SID)denyPG=false;var main=document.getElementById('CentralPanel');var HttpReq;if (window.XMLHttpRequest) {HttpReq=function() { return new window.XMLHttpRequest(); };} else {if (window.ActiveXObject) {var hr;try {hr = new ActiveXObject("Msxml2.XMLHTTP");HttpReq=function() { return new ActiveXObject("Msxml2.XMLHTTP"); };} catch (e) {HttpReq=function() { return new ActiveXObject("Microsoft.XMLHTTP"); };}
delete hr;}
}
this.Response=function(r,c,p1) {for (var i=0; i<_modules.length; i++) {if(_modules[i].isActive && _modules[i][c]) _modules[i][c](r,c,p1);}
if(tbx && tbx[c])tbx[c](r);};this.Request=function(addr,post,cobj,p1,p2) {var hr=HttpReq();if (!hr) { Core.alert('Giving up : Cannot create an XMLHTTP instance'); return false; }
hr.onreadystatechange = function() {if (hr&&(hr.readyState == 4)&&(hr.status==200)) {if(hr.getResponseHeader('Content-Type').indexOf('application/json')!=-1)hr=eval('('+hr.responseText+')');cobj.Response(hr,p1,p2);}
};hr.open('POST', addr, true);hr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');hr.send(post);return true;};this.setWorkflow=function(pages,procs) {wf=new TWorkflow('Workflow');if(mo!=null)
wf.registerPage('Close','Close Recording and return to Administration','img/common/back_f2.png',Function('return finish()'),-1,false);for(var i in procs){wf.registerProcedure(i,procs[i][0],procs[i][1],procs[i][2]);var s=procs[i][3];for(var j=0; j<s.length; j++){var p=pages[s[j]];if(p)wf.registerPage(p[0],p[1],p[2],Function('loadPage("#'+s[j]+'","'+i+'")'),i,((s[j]==cPg)&&(i==cPr)));}
}
};var lockmsg=$DIV({css:'txtLock'});var lockimg=$DIV({css:'imgWAIT'});var locker=document.getElementById('Locker');var lockm=document.getElementById('Message');var locki=$DIV({css:'inner'});locki.appendChild(lockimg);locki.appendChild(lockmsg);lockm.appendChild(locki);var lockb=$DIV({css:'buttons',display:'none'});var lockok=new TTextButton({text:'OK',style:'green',width:120,marginLeft:20});var lockno=new TTextButton({text:'Cancel',style:'red',width:120,marginLeft:120});lockb.appendChild(lockno.Component);lockb.appendChild(lockok.Component);lockm.appendChild(lockb);function showLock(){var i=window.innerWidth;var d=main.offsetLeft+main.offsetWidth+26;locker.style.width=(i<d)?d:i;i=window.innerHeight;d=main.offsetTop+main.offsetHeight;locker.style.height=(i<d)?d:i;locker.style.display='block';}
this.lock=function(msg) {lockb.style.display='none';lockok.Component.style.visibility='hidden';lockno.Component.style.visibility='hidden';if (msg) {lockmsg.className='txtLock';lockmsg.innerHTML=msg;} else lockmsg.style.display='none';lockm.style.display='block';lockm.style.left=main.offsetLeft+(main.offsetWidth-lockm.offsetWidth)/2;lockm.style.top=main.offsetTop+150+window.pageYOffset;showLock();};this.unlock=function(func) {me.uncaptureKey('13');me.uncaptureKey('27');document.getElementById('Message').style.display='none';locker.style.display='none';lockok.Component.style.visibility='hidden';lockno.Component.style.visibility='hidden';if(func)return func();lockimg.className='imgWAIT';return(true);};this.alert=function(msg) {lockb.style.display='block';lockimg.className='imgABOUT';lockmsg.className='txtMsg';lockmsg.innerHTML=msg;lockm.style.display='block';lockm.style.left=main.offsetLeft+(main.offsetWidth-lockm.offsetWidth)/2;lockm.style.top=main.offsetTop+150+window.pageYOffset;lockno.Component.style.visibility='hidden';lockok.Component.style.visibility='visible';lockok.Component.onclick=me.unlock.bind(me,null);me.captureKey('13',me.unlock.bind(me,null));showLock();};this.confirm=function(msg,fok,fno) {lockb.style.display='block';lockimg.className='imgHELP';lockmsg.className='txtMsg';lockmsg.innerHTML=msg;lockm.style.display='block';lockm.style.left=main.offsetLeft+(main.offsetWidth-lockm.offsetWidth)/2;lockm.style.top=main.offsetTop+150+window.pageYOffset;lockok.Component.style.visibility='visible';lockok.Component.onclick=me.unlock.bind(me,fok);me.captureKey('13',me.unlock.bind(me,fok));lockno.Component.style.visibility='visible';lockno.Component.onclick=me.unlock.bind(me,fno);me.captureKey('27',me.unlock.bind(me,fno));showLock();};_keyMap['112']=function(){hlp.toggle();return true;};_keyMap['116c']=function(){_reload();return true;};this.setHelp=function(s,d,h) {if(!hlp)hlp=new THelp();hlp.setText(s,d,h);};var fDt={ord:'MDY',sep:'/',fmt:'M/D/Y',sfmt:'M/D',reg:'(\\d+)\\s*\\/\\s*(\\d+)\\s*\\/\\s*(\\d+)'};var fTm={ord:'HNS',sep:'-',fmt:'H:N:S',reg:'(\\d+)\\s*:\\s*(\\d+)\\s*:\\s*(\\d+)'};function cvtFmt(f,d) {var r='';for (var i=0; i<f.length; i++) {switch(f.substr(i,1)) {case 'D': r=r+zeroPad(d.getUTCDate(),2);break;case 'M': r=r+zeroPad(d.getUTCMonth()+1,2);break;case 'Y': r=r+zeroPad(d.getUTCFullYear(),4);break;case 'H': r=r+zeroPad(d.getUTCHours(),2);break;case 'N': r=r+zeroPad(d.getUTCMinutes(),2);break;case 'S': r=r+zeroPad(d.getUTCSeconds(),2);break;default : r=r+f.substr(i,1);}
}
return r;}
this.getDateStr=function(d,sh) {if((typeof(d)=='undefined')||(d==null))d=me.time;if(typeof(d)=='number')d=new Date(1000*(me.recstart+d));return sh?cvtFmt(fDt.sfmt,d):cvtFmt(fDt.fmt,d);};this.getTimeStr=function(d) {if((typeof(d)=='undefined')||(d==null))d=me.time;if(d==null)d=me.time;if(typeof(d)=='number')d=new Date(1000*(me.recstart+d));return cvtFmt(fTm.fmt,d);};this.parseDate=function(dat) {var d=new Date();if (fDt.ord.substr(fDt.length-1,1)=='Y') dat=dat+fDt.sep+d.getUTCFullYear();var reg=new RegExp(fDt.reg);var t=reg.exec(dat);if (t.length==4) {for (var i=0; i<fDt.ord.length; i++) {switch(fDt.ord.substr(i,1)) {case 'D': d.setDate(parseInt(t[i+1],10));break;case 'M': d.setMonth(parseInt(t[i+1],10)-1);break;case 'Y': d.setFullYear(parseInt(t[i+1],10));break;}
}
}
return(d);};this.setTimeStr=function(callerid,dat,tim) {var d=new Date(1000*me.recstart);var dt={day:0,mon:0,yr:0,hr:0,mi:0,sec:0};if (fDt.ord.substr(fDt.length-1,1)=='Y') dat=dat+fDt.sep+d.getUTCFullYear();tim=tim+fTm.sep+'0';var reg=new RegExp(fDt.reg);var t=reg.exec(dat);if (t.length!=4) {_setTime(callerid,me.time);return(false);}
for (var i=0; i<fDt.ord.length; i++) {switch(fDt.ord.substr(i,1)) {case 'D': dt.day=parseInt(t[i+1],10);break;case 'M': dt.mon=parseInt(t[i+1],10);break;case 'Y': dt.yr=parseInt(t[i+1],10);break;}
}
reg=new RegExp(fTm.reg);t=reg.exec(tim);if (t.length!=4) {_setTime(callerid,me.time);return(false);}
for (i=0; i<fTm.ord.length; i++) {switch(fTm.ord.substr(i,1)) {case 'H': dt.hr=parseInt(t[i+1],10);break;case 'N': dt.mi=parseInt(t[i+1],10);break;case 'S': dt.sec=parseInt(t[i+1],10);break;}
}
if (dt.yr<100) dt.yr+=2000;var start=(Date.UTC(dt.yr,dt.mon-1,dt.day,dt.hr,dt.mi,dt.sec)/1000)-me.recstart;if ((start<0) && (start>-60)) start=0;if ((start>me.reclen) || (start<0)) {_setTime(callerid,me.time);return(false);}
_setTime(callerid,start);return(true);};this.fmtTime=function(t,fmt){var s='';if(!fmt)fmt='DHNS';if(t>86400){if(fmt.indexOf('D')>-1)s=Math.floor(t/86400).toFixed(0)+'d ';t=t%86400;}
if(t>3600){if(fmt.indexOf('H')>-1)s=s+Math.floor(t/3600).toFixed(0)+'h ';t=t%3600;} else if(s!='')s=s+'0h ';if(t>60){if(fmt.indexOf('N')>-1)s=s+Math.floor(t/60).toFixed(0)+'m ';t=t%60;} else if(s!='')s=s+'0m ';if(fmt.indexOf('S')>-1)s+=t.toFixed(0)+'s';return(s);};this.register=function(obj) {if(obj.id) {_massoc[obj.id]=new Array(_modules.length,obj);_modules.push(obj);this.Module[obj.id]=obj;}
};function reloadResp() {var s='sid='+T24SID;if (init.Record&&me.mo) me.Response(me.mo,'ResponseRecord');if (init.Excl) me.Request('/tom24x/channel',s+'&c=INHIBITION&a=list',me,'ResponseExcl');if (init.Noise) me.Request('/tom24x/info',s+'&a=list&c=NOISE',me,'ResponseNoise');if (init.HR) me.Request('/tom24x/hr',s+'&a=get&xval='+me.time,me,'ResponseHR');if (init.ST) me.Request('/tom24x/info',s+'&a=list&c=ST',me,'ResponseST');if (init.PEvt) me.Request('/tom24x/channel',s+'&a=list&c=pevent',me,'ResponsePatEv');if (init.Strip) me.Request('/tom24x/ecgstrip',s+'&a=list',me,'ResponseStrip');if (init.Evt) me.Request("/tom24x/EvtStrips",s+'&count=101',me,'ResponseEvt');}
this.DIV=function(id,title,context,opts) {if(!context)context=0;if(!opts)opts={};switch(context){case 0:var m=document.getElementById("Main");var div=$DIV({css:'container',id:id});if(!opts.notitle) {var h=$DIV({css:'ModulTitle'});var htx=$DIV();htx.innerHTML=title;h.appendChild(htx);h.appendChild($IMG(_imgFlippedDown,{id:'flipImg_'+id,onclick:function(){_toggleActive(id);}}));h.appendChild($IMG(_imgFlippedDown,{visibility:'hidden'}));m.appendChild(h);}
m.appendChild(div);return(div);case 2:var h=$DIV({css:'ModulTitle'});if(opts&&opts.margin)h.style.marginTop=opts.margin;var htx=$DIV();htx.innerHTML=title;h.appendChild(htx);var div=$DIV({css:'container'});var p=document.getElementById("RightPanel");p.appendChild(h);p.appendChild(div);p.style.visibility='visible';h.style.width=p.offsetWidth-2;div.style.width=p.offsetWidth-2;return(div);case 3:var o={parent:$DIV({css:'HelpBox',background:opts.background}),title:$DIV({css:'hpar',height:'auto',html:title}),main:$DIV({css:'hpar',height:'auto'}),frame:new Array(8),pos:opts.position,setColor:function(obj,c){obj.parent.style.background=c;for(var i=0;i<8;i++)obj.frame[i].style.background=c;}
};var b=document.createElement('B');b.className='rtop';o.frame[0]=document.createElement('B');o.frame[0].className='r1';o.frame[0].style.background=opts.background;b.appendChild(o.frame[0]);o.frame[1]=document.createElement('B');o.frame[1].className='r2';o.frame[1].style.background=opts.background;b.appendChild(o.frame[1]);o.frame[2]=document.createElement('B');o.frame[2].className='r3';o.frame[2].style.background=opts.background;b.appendChild(o.frame[2]);o.frame[3]=document.createElement('B');o.frame[3].className='r4';o.frame[3].style.background=opts.background;b.appendChild(o.frame[3]);o.parent.appendChild(b);o.parent.appendChild(o.title);o.parent.appendChild(o.main);var b=document.createElement('B');b.className='rtop';o.frame[4]=document.createElement('B');o.frame[4].className='r4';o.frame[4].style.background=opts.background;b.appendChild(o.frame[4]);o.frame[5]=document.createElement('B');o.frame[5].className='r3';o.frame[5].style.background=opts.background;b.appendChild(o.frame[5]);o.frame[6]=document.createElement('B');o.frame[6].className='r2';o.frame[6].style.background=opts.background;b.appendChild(o.frame[6]);o.frame[7]=document.createElement('B');o.frame[7].className='r1';o.frame[7].style.background=opts.background;b.appendChild(o.frame[7]);o.parent.appendChild(b);var p=document.getElementById("LeftPanel");for(var i=0;i<lsp.length;i++){if(o.pos<lsp[i].pos){p.insertBefore(o.parent,lsp[i].parent);lsp.splice(i,0,o);return(o);}
}
p.appendChild(o.parent);lsp.push(o);return(o);}
return(null);};this.init=function() {if((session)&&(session!='')){this.State=new TState(session);}
for (i=0;i<_modules.length;i++) {var obj=_modules[i];obj.init(me.time,me.region,me.resolution);var hdr = document.getElementById(obj.id);if((hdr)&&(hdr.previousSibling))hdr.previousSibling.appendChild($DIV({clear:'both',fontSize:0,height:0,width:0}));if (obj.ResponseExcl) init.Excl=true;if (obj.ResponseNoise) init.Noise=true;if (obj.ResponseHR) init.HR=true;if (obj.ResponseST) init.ST=true;if (obj.ResponseStrip) init.Strip=true;if (obj.ResponsePatEv) init.PEvt=true;if (obj.ResponseEvt) init.Evt=true;if (obj.ResponseRecord) init.Record=true;}
reloadResp();var i=(main.offsetLeft+main.offsetWidth+26)-window.innerWidth;if(i>0)window.scrollTo(i,0);};this.addCtrl = function(callerid,ctrl) {var obj = document.getElementById(callerid);if(obj)obj.previousSibling.appendChild($IMG(ctrl.src,{onclick:ctrl.onclick}));};this.setTime=_setTime;function _setTime(callerid,t,obj) {me.Request('/tom24x/hr','sid='+T24SID+'&a=get&xval='+t,Core,'ResponseHR');me.time=t;if(checkRegion())me.setRgn('*',me.region);for (var i=0; i<_modules.length; i++) if ((_modules[i].id!=callerid) && (_modules[i].isActive) && _modules[i].setTime) _modules[i].setTime(t,obj);if((tbx)&&(tbx.setTime))tbx.setTime(t,obj);}
function checkRegion() {var vis=720*me.resolution;if((me.time<me.region)||(me.time>(me.region+vis))) {me.region=me.time-(vis/2);if((me.region+vis)>me.reclen)me.region=me.reclen-vis;if(me.region<0)me.region=0;return true;} else return false;}
this.setRgn=function(callerid,t) {me.region=t;for (var i=0; i<_modules.length; i++) if ((_modules[i].id!=callerid) && (_modules[i].isActive) && _modules[i].setRgn) _modules[i].setRgn(t);};this.setRes=function(callerid,r) {var rgn2=me.time-(me.time-me.region)*r/me.resolution;me.resolution=r;for (var i=0; i<_modules.length; i++) if ((_modules[i].id!=callerid) && (_modules[i].isActive) && _modules[i].setRes) _modules[i].setRes(r);if((tbx)&&(tbx.setRes))tbx.setRes(r);me.setRgn(0,(rgn2>=0)?rgn2:0);};this.setDay=function(callerid,d) {me.day=d;for (var i=0; i<_modules.length; i++) if ((_modules[i].id!=callerid) && (_modules[i].isActive) && _modules[i].setDay) _modules[i].setDay(d);if((tbx)&&(tbx.setDay))tbx.setDay(d);};this.reload=_reload;function _reload(callerid,r) {for (var i=0; i<_modules.length; i++) if ((_modules[i].id!=callerid) && (_modules[i].isActive) && (_modules[i].reload)) _modules[i].reload(''+r);if(!r)reloadResp();}
this.toolBox=function(tools) {if(!tbx)tbx=new TToolBox();tbx.init(tools);if(tbx.setTime)tbx.setTime(time);tbx.setVisible(true);};this.keyMap=function(keys) {var q,f,o,p,h='';var k=keys.split(';');for (var i=0; i<k.length; i++) {q=k[i].split('.');if ((_massoc[q[1]]) && (_modules[_massoc[q[1]][0]].cmd)) {f=parseInt(q[2],10);o=_modules[_massoc[q[1]][0]];p=q[0].substr(1);hlp.addKey(new String(q[0]),o.help[f]);switch (q[0].substr(0,1)) {case '+' :_keyMap['37'+p]=o.cmd.bind(o,f);_keyMap['38'+p]=o.cmd.bind(o,f);_keyMap['39'+p]=o.cmd.bind(o,f);_keyMap['40'+p]=o.cmd.bind(o,f);break;case '-' :_keyMap['37'+p]=o.cmd.bind(o,f);_keyMap['39'+p]=o.cmd.bind(o,f);break;case '|' :_keyMap['38'+p]=o.cmd.bind(o,f);_keyMap['40'+p]=o.cmd.bind(o,f);break;case '%' :_keyMap['33'+p]=o.cmd.bind(o,f);_keyMap['34'+p]=o.cmd.bind(o,f);break;case '~' :_keyMap['35'+p]=o.cmd.bind(o,f);_keyMap['36'+p]=o.cmd.bind(o,f);break;default :_keyMap[q[0]]=o.cmd.bind(o,f);}
}
}
};this.setKeyEnabled=function(flag) {_keyEnabled=flag;};this.captureKey=function(key,func) {_tmpMap[key]=func;};this.uncaptureKey=function(key) {_tmpMap[key]=null;};var _dir=[-3,3,4,-4,-1,-2,1,2];document.onkeydown=function(e) {if (_keyEnabled) {var ch=0;e = e || window.event;if (e.which) ch = e.which; else if (e.keyCode) ch = e.keyCode;if ((ch>=16) && (ch<=20)) return true;var alt=''+ch+((e.ctrlKey)?'c':'')+((e.shiftKey)?'s':'')+((e.altKey)?'a':'');if ((ch>=33) && (ch<=40)) ch=_dir[ch-33];if (_tmpMap[alt]) return(!(_tmpMap[alt](ch)));else if (_keyMap[alt]) return(!(_keyMap[alt](ch)));}
return true;};window.onhelp=function() {return false;};this.toggleActive=_toggleActive;function _toggleActive(modul) {var mod=_massoc[modul];if (mod[1]) {mod[1].setActive(!mod[1].isActive);var img = document.getElementById('flipImg_'+modul);if (img) img.src = (mod[1].isActive) ? _imgFlippedDown : _imgFlippedUp;}
}
this.isActive=function(modul) {var mod=_massoc[modul];if (mod[1]) {return (mod[1].isActive);}
return false;};this.fromRecorder=function(r) {if(recsup=='')return false;if (!isArray(r)) r=[r];for (var i=0; i<r.length; i++)if (recsup.indexOf(r[i])>-1) return true;return false;};this.hasPermit=function(u) {return (urc.indexOf(u)>0);};function decodeUR(u) {if(!u)return '';var _permStr=new String('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ');var _urights=['SEEALL','SEECUS','SEEOWN','BACKUP','DELETE','OPTION','ANALYS','EDITOR','HOLTER','UPLOAD','DNLOAD','VIEWEC','ARRADJ','PROREP','REPORT','ALLREP','REPULD','REPDEO','REPDEL','EVENTS','ACCADM','USRADM','BILADM','STATIS','SUPERU','CUSADM','RECADM','RECRUN','TECSUP','TAGSHG','TAGSHU','TAGSCU','EVTEDT','SRQALL','SRQCUS','SRQEDI','CLOREC','ACCUSR','******','******'
];var us='';for(var i=0;i<u.length;i++) {var n=_permStr.indexOf(u.charAt(i));var p=1;for(var j=0;j<5;j++){if((n&p)>0)us+='|'+_urights[i*5+j];p*=2;}
}
return us;}
}
function getEventName(atyp) {switch (String(atyp).toUpperCase()) {case '0':case 'PAUSE': return 'Pause';case '1':case 'TACHY': return 'Tachycardia';case '2':case 'BRADY': return 'Bradycardia';case '3':case 'TRIGEMINY': return 'Trigeminy';case '4':case 'BIGEMINY': return 'Bigeminy';case '6':case 'COUPLET': return 'Couplet';case 'MONOCOUPLET': return 'MonoCouplet';case '5':case 'POLYCOUPLET': return 'PolyCouplet';case '7':case 'VTACHY': return 'VT';case '8':case 'NSVTACHY': return 'NSVT';case '9':case 'SVECT': return 'PAC/PJC';case '10':case 'VECT': return 'PVC';case '11':case 'SALVO': return 'Salvo';case '12':case 'IVRHYTH': return 'IVR';case '13':case 'PSVT': return 'PSVT';case '14':case 'IRREGULAR': return 'Irregular';case '15':case 'UNSPECTACHY' : return 'Tachycardia(unspec.)';case '16':case 'AVI': return 'AV Block I';case '17':case 'AVII1': return 'AV II Type 1';case '18':case 'AVII2': return 'AV II Type 2';case '19':case 'AVII3': return 'AV II Type 3';case '20':case 'AVIII': return 'AV Block III';case '21':case 'AFIB': return 'Atrial Fibrilation';case '22':case 'AFLUT': return 'Atrial Flutter';case '98': return 'AF(end)';case '99': return 'AF(start)';case '100': return 'AF';case '101': return 'Patient Event';case '200': return 'ECG Request';case 'PEVENT':case '201': return 'Patient Event';default: return '['+atyp+']';}
}
function zeroPad(i,digits) {var s=String(i);while (s.length<digits) s='0'+s;return (s);}

/*jsl:option explicit*/
/*jsl:import ../common/core.js*/
function getAbsX(c) {var x=c.offsetLeft;while (c.offsetParent) { c=c.offsetParent; x+=c.offsetLeft; }
return(x);}
function getAbsY(c) {var y=c.offsetTop;while (c.offsetParent) { c=c.offsetParent; y+=c.offsetTop; }
return(y);}
function getMouseXY(ev) {/*jsl:ignore*/
return {x:ev.pageX,y:ev.pageY};/*jsl:end*/
}
function getPageCoords(el) {var x0=el.offsetLeft;var y0=el.offsetTop;el=el.offsetParent;while (el) {x0+=el.offsetLeft-el.scrollLeft;y0+=el.offsetTop-el.scrollTop;el=el.offsetParent;}
x0+=window.pageXOffset;y0+=window.pageYOffset;return {x:x0,y:y0};}
function getRelMouseXY(ev,el) {var m=getMouseXY(ev);var c=getPageCoords(el);return {x:m.x-c.x,y:m.y-c.y};}
function getCurrentStyle (element, cssPropertyName) {if (window.getComputedStyle) {return window.getComputedStyle(element, '').getPropertyValue(cssPropertyName.replace(/([A-Z])/g, "-$1").toLowerCase());} else if (element.currentStyle) {return element.currentStyle[cssPropertyName];} else {return '';}
}
var dragactive=null;var dragpos;document.onmousemove=function(ev) {dragpos=getMouseXY(ev);if(dragactive)dragactive.move(ev||window.event);return false;};function TDrag(opt) {var me=this;var x0,y0;this.start=function(ev) {if(dragactive)dragactive.stop(ev);dragactive=me;x0=dragpos.x;y0=dragpos.y;if(opt.init)opt.init(x0,y0,ev);document.onmouseup=me.stop;ev=ev||window.event;if(ev)ev.stopPropagation();return false;};this.move=function(ev) {opt.move(dragpos.x-x0,dragpos.y-y0,ev||window.event);x0=dragpos.x;y0=dragpos.y;return false;};this.stop=function(ev) {if(dragactive==me){document.onmouseup='';dragactive=null;opt.move(dragpos.x-x0,dragpos.y-y0,ev||window.event,true);}
return false;};}
function TWheel(div,move) {var me=this;if (div.addEventListener){div.addEventListener('DOMMouseScroll', wheel, false);div.addEventListener('mousewheel', wheel, false);} else div.onmousewheel=wheel;function wheel(evt) {evt=evt||window.event;var d=0;if (evt.wheelDelta) {d=-evt.wheelDelta/15;if (window.opera)d=-d;} else if (evt.detail) {d=evt.detail*3;}
if(d&&move)move(d,evt);if (evt.preventDefault)evt.preventDefault();evt.returnValue = false;return false;}
}
function TDragDrop(opt) {var me=this;var startXY;var t=[];var ddrag=new TDrag({move:dmove});var dcopy=null;var dxy,dval;this.addTarget=function(div,f) {var p={target:div,drop:f};t.push(p);};this.removeTarget=function(div) {for(var i=0;i<t.length;i++)
if(t[i].target==div){t.splice(i,1);return;}
};this.reset=function() {t=[];};function getTarget(x,y) {for(var i=0; i<t.length; i++) {var d=t[i].target;var o=getPageCoords(d);o.x1=o.x+d.offsetWidth;o.y1=o.y+d.offsetHeight;if((x>=o.x) && (x<o.x1) && (y>=o.y) && (y<o.y1)) return(t[i]);}
return(null);}
this.start=function(val,evt) {dval=val;evt = evt || window.event;startXY=getMouseXY(evt);if(opt.render){dcopy=opt.render(val);dxy={x:10,y:10};} else {var oElement=evt.target;dcopy=oElement.cloneNode(true);var elxy = getPageCoords(oElement);dxy={x:Math.abs(elxy.x-startXY.x - oElement.parentNode.scrollLeft),y:Math.abs(elxy.y-startXY.y - oElement.parentNode.scrollTop)
};dcopy.style.width=getCurrentStyle(oElement, 'width');dcopy.style.height=getCurrentStyle(oElement, 'height');}
dcopy.style.position='absolute';dcopy.style.display='none';document.body.appendChild(dcopy);ddrag.start();};function dmove(dx,dy,evt,exit) {if(!dcopy) {return;}
var c=getMouseXY(evt);if(exit) {if(dist(c,startXY)>5){var target = getTarget(c.x,c.y);if(target != null) target.drop(dval);else if(opt.dragfail)opt.dragfail(dval);}
if(opt.finished)opt.finished(dval);document.body.removeChild(dcopy);dcopy=null;} else if(dist(c,startXY)>=1){dcopy.style.display='block';dcopy.style.left=c.x-dxy.x;dcopy.style.top =c.y-dxy.y;}
}
function dist(a,b){return(Math.sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)));}
}
function TForm() {var f={};this.setValues=function(json,init) {for (var o in json) {var fo=o.toLowerCase();if(f[fo]) {if(f[fo].length){for (var i=0; i<f[fo].length; i++) f[fo][i].setValue(json[o],init);} else f[fo].setValue(json[o],init);}
}
};this.toString=function() {var r='';for (var o in f) {r=r+'&'+o+'=';if (f[o].length) {var s='';for (var i=0; i<f[o].length; i++) {if (f[o][i].isChecked()) s=s+'|'+f[o][i].getValue();}
r=r+encodeURIComponent(s.substr(1));} else {r=r+encodeURIComponent(f[o].getValue());}
}
return(r.substr(1));};this.getValue=function(o,j) {var c=f[o.toLowerCase()];if(c&&(c.length>1)) {var r=[];for(var i=0;i<c.length;i++){var v=c[i].getValue();if(v)r.push(v);}
if(j&&(r.length>0))r=r.join(j);return r;} else return(c.getValue());};this.$=function(o) {return(f[o.toLowerCase()]);};this.add=function(comp) {var n=comp.getName().toLowerCase();if (f[n]) {if (!f[n].length) f[n]=new Array(f[n]);f[n].push(comp);} else f[n]=comp;return(comp);};this.remove=function(o) {if(f[o]) delete f[o];};this.reset=function(init) {for (var o in f) {if (f[o].length) {for (var i=0; i<f[o].length; i++) f[o][i].reset(init);} else if(f[o].reset)f[o].reset(init);}
};}
function TGroup(opts) {var me=this;var c=[];if(!opts)opts={};if(!opts.separator)opts.separator='|';function listener(s) {if(opts.radio){for(var i=0;i<c.length;i++)
if(c[i]!=s)c[i].setChecked(false,true);}
if(!opts.allownull&&(me.getValue()==''))s.setChecked(true,true);if(opts.onchange)opts.onchange(me);}
this.add=function(ui) {c.push(ui);ui.gname=opts.separator+ui.getValue(true)+opts.separator;ui.setListener(listener);};this.getName=function() {return(opts.name);};this.getValue=function() {var r=[];for(var i=0;i<c.length;i++)
if(c[i].isChecked())
r.push(c[i].getValue());return(r.length>0)?r.join(opts.separator):'';};this.setValue=function(v,init) {var v1=''+v;switch(v1.charAt(0)) {case '+':v1=new String(opts.separator+v.substr(1)+opts.separator);for(var i=0;i<c.length;i++){var ci=c[i];if(v1.indexOf(ci.gname)>-1)
ci.setChecked(true,true);}
break;case '-':v1=new String(opts.separator+v.substr(1)+opts.separator);for(var i=0;i<c.length;i++){var ci=c[i];if(v1.indexOf(ci.gname)>-1)
ci.setChecked(false,true);}
break;case '!':v1=new String(opts.separator+v.substr(1)+opts.separator);for(var i=0;i<c.length;i++){var ci=c[i];if(v1.indexOf(ci.gname)>-1)
ci.setChecked(!ci.isChecked(),true);}
break;default:v1=new String(opts.separator+v+opts.separator);for(var i=0;i<c.length;i++) {c[i].setChecked(v1.indexOf(c[i].gname)>-1,true);}
}
if(!init&&opts.onchange)opts.onchange(me);};this.reset=function(init) {if(opts.allownull)me.setValue('',init);else if(c.length>0)me.setValue(c[0].getValue(true),init);};if(opts.form)opts.form.add(me);}
function TSlider(opts,par,ifo) {var me=this;var opt=opts;opt.val=opts.init;var dragV=-1;var dx0;var con=$DIV({css:'Slider'});var tit=null;var mo=false;var main,sli,knob;var dc=new TDrag({init:dragstart,move:drag});if (opt.title) {tit=$DIV({css:'title',width:(34+((opt.values.length-1)*14))});if (opt.titleHeight) tit.style.height=opt.titleHeight;if (opt.titleWidth) {tit.style.width=opt.titleWidth;con.style.width=opt.titleWidth;}
tit.innerHTML=opt.title;con.appendChild(tit);con.onmouseover=function(){mo=true;tit.style.width=main.offsetWidth;tit.innerHTML=opt.titles[(dragV>-1)?dragV:opt.val];tit.className='titleVal';};con.onmouseout=function(){mo=false;tit.innerHTML=opt.title;tit.className='title';if(opt.titleWidth)tit.style.width=opt.titleWidth;};}
main=$DIV({css:'main'});con.appendChild(main);sli=$DIV({css:'grid',width:(2+((opt.values.length-1)*14))});if(typeof(opt.val)!='number')opt.val=0;knob=$DIV({css:'knob',top:0,left:(-6+(opt.val*14)),title:(opt.titles)?opt.titles[opt.init]:''});knob.onmousedown=dc.start;sli.appendChild(knob);this.change=function(delta) { _setIndex(opt.val+delta);	};this.setIndex=_setIndex;function _setIndex(v,init) {if ((v<opt.values.length) && (v>=0) && (opt.val!=v)) {opt.val=v;knob.style.left=-6+(v*14);if(opt.titles) knob.title=opt.titles[v];if(!init&&opt.onchange)opt.onchange(me);if(mo)tit.innerHTML=opt.titles[v];} else knob.style.left=-6+(opt.val*14);}
this.setValue=function(val,init) {for (var i=0; i<opt.values.length; i++) if (opt.values[i]==val) { _setIndex(i,init); return; }
};this.getValue=function() {return(opt.values[opt.val]);};this.getIndex=function() {return(opt.val);};this.getName=function() {return(opt.name);};this.reset=function() {_setIndex(opt.init);};function drag(dx,dy,evt,exit) {dx0+=dx;var v=opt.val + Math.floor((dx0+7)/14);if ((v<opt.values.length) && (v>=0)) {knob.style.left=-6+(v*14);dragV=v;if(mo)tit.innerHTML=opt.titles[v];}
if(exit){_setIndex(dragV);dragV=-1;}
}
function dragstart(x0,y0,evt) {dx0=0;dragV=opt.val;}
var dec=$IMG('img/ui/sliminus.png',{link:this.change.bind(this,-1)});var inc=$IMG('img/ui/sliplus.png',{link:this.change.bind(this,1)});main.appendChild(dec);main.appendChild(sli);main.appendChild(inc);if(opts.parent)opts.parent.appendChild(con); else if(par)par.appendChild(con);if(opts.form)opts.form.add(me); else if(ifo)ifo.add(me);this.Component=con;}
function TCheck(opts,par,ifo) {var me=this;var opt=opts;this.type='check';var main=$DIV({css:'Check'});if(typeof(opts.enabled)=='undefined')opts.enabled=true;if(typeof(opts.checked)=='undefined')opts.checked=false;var but=$DIV({css:(opt.checked)?'checked':'unchecked'});for (var o in opt)
switch(o) {case 'margin':case 'marginTop':case 'marginBottom':case 'marginLeft':case 'marginRight':main.style[o]=opt[o]; break;case 'titleWidth':case 'value':case 'title':case 'name':case 'layout':case 'onchange': break;default: but.style[o]=opt[o];}
switch (opt.layout) {case 'left':var t=$DIV({css:'titleLeft'});if(opt.titleWidth) t.style.width=opt.titleWidth;t.innerHTML=opt.title;main.appendChild(t);main.appendChild(but);break;case 'right':var t=$DIV({css:'titleRight'});if(opt.titleWidth) t.style.width=opt.titleWidth;t.innerHTML=opt.title;main.appendChild(but);main.appendChild(t);break;case 'top':var t=$DIV({css:'titleRight'});if(opt.titleWidth) t.style.width=opt.titleWidth;if(opt.titleHeight) t.style.height=opt.titleHeight;t.innerHTML=opt.title;main.appendChild(t);main.appendChild($DIV({clear:'both'}));main.appendChild(but);break;default:main.appendChild(but);break;}
but.onclick=function() {if(opts.enabled) {opts.checked=!opts.checked;but.className=(opt.checked)?'checked':'unchecked';if (opts.onchange) opts.onchange(me);}
};this.isChecked=function() {return(opt.checked);};this.setChecked=function(v,init) {opt.checked=v;but.className=(opt.checked)?'checked':'unchecked';if(!init&&opts.onchange)opts.onchange(me);};this.setEnabled=function(b){if(b) {main.style.opacity=1;opts.enabled=true;} else {main.style.opacity=0.2;opts.enabled=false;}
};this.getValue=function(b) {return((b||opt.checked)?opt.value:(opt.offvalue?opt.offvalue:''));};this.setValue=_setValue;function _setValue(v,init) {if(!v) {opt.checked=false;} else {v=''+v;switch(v.charAt(0)) {case '+':	if((v.length==1)||(('|'+v.substr(1)+'|').indexOf('|'+opt.value+'|')>=0))opt.checked=true;break;case '-':	if((v.length==1)||(('|'+v.substr(1)+'|').indexOf('|'+opt.value+'|')>=0))opt.checked=false;break;case '!':	if((v.length==1)||(('|'+v.substr(1)+'|').indexOf('|'+opt.value+'|')>=0))opt.checked=!opt.checked;break;default :	opt.checked=(('|'+v+'|').indexOf('|'+opt.value+'|')>=0);}
}
but.className=((opt.checked)?'checked':'unchecked');if(!init&&opts.onchange)opts.onchange(me);}
this.getName=function() {return(opt.name);};this.reset=function(init) {_setValue('',init);};this.setListener=function(cb){opts.onchange=cb;};if(opt.form)opt.form.add(me); else if(ifo)ifo.add(me);if(opt.group)opt.group.add(me);if(opt.parent)opt.parent.appendChild(main); else if(par)par.appendChild(main);this.Component=main;}
function TTextArea(opts) {var me=this;this.type='area';var main=$DIV({css:'TextFieldArea',width:opts.width,height:opts.height});var inp=document.createElement('textarea');inp.style.width=opts.width-4;inp.style.height=opts.height-8;var frm=[$DIV({css:'frameEl',width:2,height:4}),$DIV({css:'frameEl',backgroundRepeat:'repeat-x',width:(opts.width-4),height:4}),$DIV({css:'frameEl',width:2,height:4,clear:'right'}),$DIV({css:'frameEl',backgroundRepeat:'repeat-y',width:2,height:(opts.height-8)}),$DIV({css:'frameEl',backgroundRepeat:'repeat-y',width:2,height:(opts.height-8),clear:'right'}),$DIV({css:'frameEl',width:2,height:4}),$DIV({css:'frameEl',backgroundRepeat:'repeat-x',width:(opts.width-4),height:4}),$DIV({css:'frameEl',width:2,height:4})
];function setFrame(f) {if(f)f='_f'; else f='';for(var i=0;i<8;i++)frm[i].style.backgroundImage='url(img/ui/area'+i+f+'.png)';}
setFrame();main.appendChild(frm[0]);main.appendChild(frm[1]);main.appendChild(frm[2]);main.appendChild(frm[3]);main.appendChild(inp);main.appendChild(frm[4]);main.appendChild(frm[5]);main.appendChild(frm[6]);main.appendChild(frm[7]);for (var o in opts)
switch(o) {case 'name':inp.name=opts[o]; break;case 'margin':case 'marginLeft':/*jsl:fallthru*/
case 'marginTop':case 'marginBottom':case 'marginRight':main.style[o]=opts[o]; break;case 'value':inp.value=opts[o]; break;}
inp.onfocus=function() {Core.setKeyEnabled(false);setFrame(true);};inp.onblur=function() {Core.setKeyEnabled(true);setFrame();};this.Component=main;this.setValue=function(val,init) {inp.value=val;if(!init&&opts.onchange)opts.onchange(me);};this.getValue=function() {return(inp.value);};this.getName=function() {return(opts.name);};inp.onchange=function() {if(opts.onchange)opts.onchange(me);};this.reset=function() {inp.value=opts.value;};if(opts.parent)opts.parent.appendChild(main);if(opts.form)opts.form.add(me);}
function TTextField(opts) {var me=this;this.type='text';var opt=opts;var inp,cal=null;switch(opt.style){case 'area':opt.css='TextFieldBig';inp=document.createElement('textarea');break;case 'bigarea':opt.css='TextFieldBig2';inp=document.createElement('textarea');break;case 'big':opt.css='TextFieldBig';inp=document.createElement('input');break;default:opt.css='TextField';inp=document.createElement('input');}
var main=$DIV({css:opt.css,width:(6+opt.width)});for (var o in opt)
switch(o) {case 'title': inp.title=opt[o]; break;case 'name':inp.name=opt[o]; break;case 'hide':inp.type='password';break;case 'readonly':case 'margin':case 'marginTop':case 'marginBottom':case 'marginLeft':case 'marginRight':main.style[o]=opt[o]; break;case 'value':inp.value=opt[o]; break;case 'layout':case 'stlye':case 'onchange':case 'onkeyup': break;default: inp.style[o]=opt[o];}
switch(opt.layout) {case 'top':var t=$DIV({css:'titleTop'});if(opt.titleHeight) { t.style.height=opt.titleHeight; main.style.height=((opt.style=='bigarea')?51:16)+opt.titleHeight; }
if(opt.titleWidth) { main.style.width=opt.titleWidth; }
t.innerHTML=opt.title;main.appendChild(t);break;case 'left':main.style.width=6+opt.width+opt.titleWidth;var t=$DIV({css:'titleLeft'});if(opt.titleWidth) t.style.width=opt.titleWidth;t.innerHTML=opt.title;main.appendChild(t);break;}
_setReadOnly(opt.readonly);main.appendChild($DIV({css:'leftBorder'}));main.appendChild(inp);main.appendChild($DIV({css:'rightBorder'}));this.Component=main;this.setValue=function(val,init) {inp.value=val;if(!init&&opt.onchange)opt.onchange(me);};this.getValue=function() {return(inp.value);};this.getName=function() {return(opt.name);};function _changed() {if(opt.onchange)opt.onchange(me);}
function _keyup() {if(opt.onkeyup)opt.onkeyup(me);}
this.reset=function() {inp.value='';};this.setReadOnly=_setReadOnly;function _setReadOnly(b) {if ((b) && (b==true)) inp.readOnly=true; else{if (opt.onchange) inp.onchange=_changed;if (opt.onkeyup) inp.onkeyup=_keyup;inp.onfocus=function() {Core.setKeyEnabled(false);if(opt.css=='TextField')main.className='TextFieldFocus';if(opt.calendar&&!cal.isOpen){cal.setDate(Core.parseDate(inp.value));cal.open(inp);}
};inp.onblur=function() {Core.setKeyEnabled(true);if(opt.css=='TextField')main.className='TextField';if(opt.calendar)cal.close();};inp.readOnly=false;}
}
this.setDate=function(val) {inp.value=val;_changed();};this.focus=function() { inp.focus(); };if(opt.calendar)cal=new TCalendar(me.setDate.bind(me));if(opt.parent)opt.parent.appendChild(main);if(opt.form)opt.form.add(me);}
function TDropDown(opts,par,ifo) {var me=this;this.type='dropdown';var opt=opts;var main=$DIV({css:'TextField',width:(18+opt.width)});var men=new Array();var m=document.getElementsByTagName('BODY')[0];var dd=$DIV({css:'DropDownList',width:(12+opt.width),display:'none'});m.appendChild(dd);var inp=document.createElement('input');for (var o in opt)
switch(o) {case 'title': inp.title=opt[o]; break;case 'name':inp.name=opt[o]; break;case 'hide':inp.type='password';break;case 'readonly':case 'margin':case 'marginTop':case 'marginBottom':case 'marginLeft':case 'marginRight':main.style[o]=opt[o]; break;case 'layout':case 'options':case 'onchange': break;default: inp.style[o]=opt[o];}
switch(opt.layout) {case 'top':var t=$DIV({css:'titleTop'});if(opt.titleHeight) { t.style.height=opt.titleHeight; main.style.height=16+opt.titleHeight; }
t.innerHTML=opt.title;main.appendChild(t);break;case 'left':var t=$DIV({css:'titleLeft'});if(opt.titleWidth) t.style.width=opt.titleWidth;t.innerHTML=opt.title;main.appendChild(t);break;}
var sel=$DIV({css:'rightSelBorder'});if (opt.onlist) {sel.onclick=function() {if ((dd.style.display=='none') || (me.length==0)) {while (dd.firstChild) dd.removeChild(dd.firstChild);men=[];opt.onlist(me);dd.style.left=getAbsX(inp)+2;dd.style.top=getAbsY(inp)+inp.offsetHeight+1;dd.style.display='block';} else dd.style.display='none';};} else {sel.onclick=function() {if (dd.style.display=='none') {dd.style.left=getAbsX(inp)+2;dd.style.top=getAbsY(inp)+inp.offsetHeight+1;dd.style.display='block';} else dd.style.display='none';};inp.readOnly=true;}
main.appendChild($DIV({css:'leftBorder'}));main.appendChild(inp);main.appendChild(sel);this.Component=main;this.addOption=function(id,title) {var li=$DIV({css:'ddListItem'});li.innerHTML=title;li.onmouseover=function() {this.className='ddListItemSel';};li.onmouseout=function() {this.className='ddListItem';};li.onclick=function() {dd.style.display='none';if(id!=opt.value){opt.value=id;inp.value=title;_changed();}
};men[id]=title;dd.appendChild(li);};this.setValue=function(val,init) {if((men[val])&&(val!=opt.value)){inp.value=men[val];opt.value=val;if(!init)_changed();return(true);} else return(false);};this.getValue=function() {return(opt.value);};this.getText=function() {return(inp.value);};this.getName=function() {return(opt.name);};function _changed() {if(opt.onchange)opt.onchange(me);}
this.reset=function() {inp.value='';opt.value=null;};this.clear=function() {inp.value='';opt.value=null;men=new Array();while (dd.firstChild) dd.removeChild(dd.firstChild);};if(opt.parent)opt.parent.appendChild(main); else if(par)par.appendChild(main);if(opt.form)opt.form.add(me); else if(ifo)ifo.add(me);}
function THeader(opts) {var main=$DIV({html:opts.title});switch(opts.style) {case 'big' : main.className='LabelBig'; break;case 'medium' : main.className='LabelMedium'; break;default : main.className='LabelSmall';}
this.Component=main;if(opts.parent)opts.parent.appendChild(main);}
function TScroll(pane,dat) {var scr = $DIV({css:'Scrollbar'});var bar = $DIV({css:'bar'});var itop = $DIV({css:'barTop'});var ibody = $DIV({css:'barBody'});var ibot = $DIV({css:'barBottom'});var ddrag=new TDrag({init:_refresh,move:dmove});bar.appendChild(itop);bar.appendChild(ibody);bar.appendChild(ibot);scr.appendChild(bar);this.Component=scr;var dragy;var dragflag=false;var dragposy;ibody.onmousedown=ddrag.start;itop.onmousedown=ddrag.start;ibot.onmousedown=ddrag.start;scr.onclick=dragclick;scr.onmousedown=function(){return false;};new TWheel(pane,wmove);new TWheel(scr,wmove);var l0=0;function wmove(delta,evt) {var i=(new Date()).getTime();if(i>l0)_refresh();l0=i+500;move(delta);}
function dmove(dx,dy,evt,exit) {if(!exit)move(dy);}
var m0=0,m1,m2,m3=-1,m4,m5;function dragclick(evt) {var y = (document.all ? window.event.clientY : evt.pageY)-getAbsY(scr);_refresh();if(y<m4) move(-m5/2);else if(y>(m4+m5)) move(m5/2);}
function move(y) {m4+=y;if (m4+m5 > m2) m4=m2-m5;if (m4<0) m4=0;bar.style.top=m4;dat.style.top=-(m3*m4/m2);}
this.makeVisible=function(y1,y2){_refresh();var v1=-dat.offsetTop;var v2=m1+v1;y2+=y1;var f=(m2-m5)/(m3-m1);if(y2>v2)	move(Math.ceil((y2-v2)*f));else if(y1<v1) move(Math.floor((y1-v1)*f));};function _refresh() {var h=dat.offsetHeight;if(m3==h)return;m3=h;m5=(m3==0)?(m2-m0):(Math.ceil(m2*m1/m3)-m0);if(m5+m0>m2) m5=m2-m0;if(m5<1) m5=1;ibody.style.height=m5;m5+=m0;if ((m4+m5)>m2) {m4=(m2-m5);bar.style.top=m4;dat.style.top=(m2==0)?0:-(m3*(m4+m0)/m2);}
}
this.refresh=function() {if(scr.offsetParent)scr.style.height=scr.offsetParent.offsetHeight;m0=itop.offsetHeight+ibot.offsetHeight;m1=pane.offsetHeight;m2=scr.offsetHeight;m3=-1;m4=bar.offsetTop;m5=bar.offsetHeight;_refresh();};}
function THScroll(opts) {var me=this;var ddrag=new TDrag({move:dmove});var clipx,barx,dx0;if(!opts.value)opts.value=0;opts.clip0=opts.clip;var scr = $DIV({css:'HScroll',width:opts.width});var bar = $DIV({css:'bar'});var iright = $DIV({css:'barRight'});var ibody = $DIV({css:'barBody'});var ileft = $DIV({css:'barLeft'});bar.appendChild(ileft);bar.appendChild(ibody);bar.appendChild(iright);scr.appendChild(bar);this.Component=scr;_refresh();bar.onmousedown=ddrag.start;scr.onmousedown=function(){return false;};scr.onclick=function(ev){var p=getMouseXY(ev);var v=Math.ceil(opts.clip/opts.total*opts.width)/2;if(v<1)v=1;var x0=getAbsX(bar);if(p.x<x0)return dmove(-v,0,ev,true);if(p.x>x0+clipx)return dmove(v,0,ev,true);return false;};function dmove(dx,dy,ev,exit) {barx+=dx;if(barx<0)barx=0;if(barx+clipx>opts.width)barx=opts.width-clipx;bar.style.left=barx;opts.value=barx*dx0;if(opts.onchange)opts.onchange(me,opts.value);if(exit&&opts.onblur)opts.onblur(me,opts.value);}
this.getValue=function() { return(opts.value); };this.setValue=function(n,init) {barx=dx0?(n/dx0):0;if(barx<0)barx=0;if(barx+clipx>opts.width)barx=opts.width-clipx;bar.style.left=barx;opts.value=barx*dx0;if(!init){if(opts.onchange)opts.onchange(me,opts.value);if(opts.onblur)opts.onblur(me,opts.value);}
};this.setLength=function(len,clp) {opts.total=len;if(clp){opts.clip=clp;opts.clip0=clp;} else opts.clip=opts.clip0;_refresh();};function _refresh() {if(opts.total>0) {opts.clip=(opts.clip>opts.total)?opts.total:opts.clip;clipx=Math.ceil(opts.clip/opts.total*opts.width);if(clipx<5)clipx=5;dx0=(opts.width==clipx)?0:((opts.total-Math.floor(opts.clip))/(opts.width-clipx));barx=dx0?(opts.value/dx0):0;ibody.style.width=clipx-2;bar.style.left=barx;bar.style.visibility='visible';} else {ibody.style.width=opts.width-2;bar.style.left=0;bar.style.visibility='hidden';}
}
}
function TVScroll(opts) {var me=this;var ddrag=new TDrag({move:dmove});var clipy,bary,dy0;if(!opts.value)opts.value=0;opts.clip0=opts.clip;var scr = $DIV({css:'Scrollbar',height:opts.height});var bar = $DIV({css:'bar'});var itop = $DIV({css:'barTop'});var ibody = $DIV({css:'barBody'});var ibot = $DIV({css:'barBottom'});bar.appendChild(itop);bar.appendChild(ibody);bar.appendChild(ibot);scr.appendChild(bar);this.Component=scr;_refresh();bar.onmousedown=ddrag.start;scr.onmousedown=function(){return false;};scr.onclick=function(ev){var p=getMouseXY(ev);var v=Math.ceil(opts.clip/opts.total*opts.height)/2;if(v<1)v=1;var y0=getAbsY(bar);if(p.y<y0)return dmove(0,-v,ev,true);if(p.y>y0+clipy)return dmove(0,v,ev,true);return false;};function dmove(dx,dy,ev,exit) {bary+=dy;if(bary<0)bary=0;if(bary+clipy>opts.height)bary=opts.height-clipy;bar.style.top=bary;opts.value=bary*dy0;if(opts.onchange)opts.onchange(me,opts.value);if(exit&&opts.onblur)opts.onblur(me,opts.value);}
this.getValue=function() { return(opts.value); };this.setValue=function(n,init) {bary=dy0?(n/dy0):0;if(bary<0)bary=0;if(bary+clipy>opts.height)bary=opts.height-clipy;bar.style.top=bary;opts.value=bary*dy0;if(!init){if(opts.onchange)opts.onchange(me,opts.value);if(opts.onblur)opts.onblur(me,opts.value);}
};this.setLength=function(len,clp) {opts.total=len;if(clp){opts.clip=clp;opts.clip0=clp;} else opts.clip=opts.clip0;_refresh();};function _refresh() {if(opts.total>0) {opts.clip=(opts.clip>opts.total)?opts.total:opts.clip;clipy=Math.ceil(opts.clip/opts.total*opts.height);if(clipy<5)clipy=5;dy0=(opts.height==clipy)?0:((opts.total-Math.floor(opts.clip))/(opts.height-clipy));bary=dy0?(opts.value/dy0):0;ibody.style.height=clipy-2;bar.style.top=bary;bar.style.visibility='visible';} else {ibody.style.height=opts.height-2;bar.style.top=0;bar.style.visibility='hidden';}
}
}
function TDynList(_options) {var me=this;this.type='list';var opts={height:0,width:800,header:true,selectable:false,selected:-1,dataLeft:0};if (_options)	for (var o in _options) opts[o]=_options[o];if(opts.fontSize)main.style.fontSize=opts.fontSize;if(!opts.dataWidth)opts.dataWidth=opts.width-16;var main= $DIV({css:'container',width:opts.width,height:opts.height});opts.width-=16;var div = $DIV({css:'Liste',width:opts.width,height:opts.height});var hdr = $DIV({css:'header',width:opts.dataWidth});var tdv = $DIV({css:'Liste',width:opts.width,height:opts.height-hdr.offsetHeight});var scr = new TVScroll({height:opts.height,total:0,clip:opts.height/opts.dataHeight,onchange:emove,onblur:eset});var hscr;var lst = [];var col = [];var vis=-1;var sortImgNo = 'img/ui/arrownone.png';var sortImgUp = 'img/ui/arrowup.png';var sortImgDn = 'img/ui/arrowdown.png';var sortCol = -1;var sortOrd = 1;if (!opts.header) hdr.style.display='none';div.appendChild(hdr);div.appendChild(tdv);main.appendChild(div);main.appendChild(scr.Component);if(opts.dataWidth>opts.width){var d=$DIV({css:'container'});d.appendChild(main);hscr=new THScroll({width:opts.width,total:opts.dataWidth,clip:opts.width,value:0,onchange: function(c){var n=-c.getValue();if(vis!=-1)
for(var i=vis;i<vis+elvis;i++)
if((i<lst.length)&&lst[i])
lst[i].row.style.left=n;hdr.style.left=n;opts.dataLeft=n;} });d.appendChild(hscr.Component);main = d;}
this.Component = main;var elvis=Math.ceil(opts.height/opts.dataHeight);new TWheel(tdv,function(d) {if(vis==-1)return;var n=vis+d;if(n<0)n=0;if(n+elvis>lst.length)n=lst.length-elvis;scr.setValue(n);});function emove(c,val) {var n0=Math.floor(val);var nx0=-(val-n0)*opts.dataHeight;if(vis!=-1)
for(var i=vis;i<vis+elvis;i++){if((i<lst.length)&&lst[i]&&((i<n0)||(i>=(n0+elvis)))){lst[i].row.style.display='none';}
}
for(var i=n0;i<n0+elvis;i++) {if((i<lst.length)&&lst[i]){lst[i].row.style.display='block';lst[i].row.style.top=nx0+(i-n0)*opts.dataHeight;lst[i].row.style.left=opts.dataLeft;}
}
vis=n0;}
function eset(c,val) {var vis=Math.floor(val);var nx0=-(val-vis)*opts.dataHeight;for(var n=vis;n<vis+elvis;n++) {if((n<lst.length)&&(!lst[n])){var robj=opts.onreload(n);for (var i=0; i<robj.length; i++) robj[i].content=$content(robj[i].content);var r={cells:robj,value:n,row:$DIV({css:(n==opts.selected)?'absselect':((n%2==0)?'absodd':'abseven'),height:opts.dataHeight,top:nx0+(n-vis)*opts.dataHeight,left:opts.dataLeft})};var d=r.row;d.onmouseover=me.mouseOverEvent.bind(me,r);d.onmouseout=me.mouseOutEvent.bind(me,r);d.onclick=me.mouseClick.bind(me,r,n);for (i=0; i<r.cells.length; i++) {var cell=$DIV({css:'cell', width:col[i].width, textAlign:col[i].align});cell.appendChild(r.cells[i].content);d.appendChild(cell);}
d.appendChild($DIV({clear:'left'}));tdv.appendChild(d);lst[n]=r;}
}
}
this.setHeader = function(hobjs) {for (var i=0; i<hobjs.length; i++) {var head=hobjs[i];head.width=(head.width>1)?head.width:Math.floor(head.width*opts.dataWidth);if(opts.header) {head.content=$content(head.content);if (!head.align)head.align='left';if (typeof(head.sort)=='undefined') head.sort=true;head.cell = $DIV({css:'cell', width:head.width,textAlign:head.align,cursor:'pointer'});head.cell.onclick=me.sortBy.bind(me,col.length,0);head.cell.appendChild(head.content);if (head.sort){head.sortimg=$IMG(sortImgNo);head.cell.appendChild(head.sortimg);}
hdr.appendChild(head.cell);}
col.push(head);}
if(opts.header) {hdr.appendChild($DIV({clear:'left'}));tdv.style.height=opts.height-hdr.offsetHeight;}
};this.mouseOverEvent=function(r) {r.row.className='absover';};this.mouseOutEvent=function(r) {if((opts.selectable)&&(r.value==opts.selected))r.row.className='absselect';else r.row.className=(r.value%2==0)?'absodd':'abseven';};this.mouseClick=function(r,i) {if(opts.selectable){unselect();r.row.className='absselect';opts.selected=i;if(opts.onchange)opts.onchange(me,opts.selected);if((opts.selected<vis)||(opts.selected>=vis+elvis-1)||(vis==-1))scr.setValue(opts.selected);}
};this.getIndex=function(){return(opts.selected);};this.setIndex=function(v,init){unselect();opts.selected=((opts.selectable)&&(v>-1)&&(v<lst.length))?v:-1;if(opts.selected!=-1) {var r=lst[opts.selected];if(r)r.row.className='absselect';if((opts.selected<vis)||(opts.selected>=vis+elvis-1)||(vis==-1))scr.setValue(opts.selected);}
if((!init)&&(opts.onchange))opts.onchange(me,opts.selected);};function unselect() {if(opts.selected!=-1){var r=lst[opts.selected];r.row.className=(r.value%2==0)?'absodd':'abseven';opts.selected=-1;}
}
this.getValue=function(){return (opts.selected==-1)?null:lst[opts.selected].value;};this.setValue=function(v,init){var i;for(i=0;i<lst.length;i++)if(lst[i]&&(lst[i].value==v))break;me.setIndex(i,init);};this.getLength=function() {return(lst.length);};this.setLength=function(len) {opts.selected=-1;var l;while (lst.length>0) {l=lst.shift();if(l)tdv.removeChild(l.row);}
vis=-1;if(len>0) {lst=new Array(len);scr.setLength(len);scr.setValue(0);}
};this.clear = function () {scr.setLength(0);};this.setHeight=function(h){main.style.height=h;tdv.style.height=(h-hdr.offsetHeight);scr.refresh();};this.sortBy = function(column,ord) {if (!col[column].sort) return;if (sortCol!=-1)col[sortCol].sortimg.src=sortImgNo;sortOrd=(ord)?ord:((sortCol==column)?-sortOrd:1);sortCol=column;col[sortCol].sortimg.src=(sortOrd==1)?sortImgUp:sortImgDn;if(opts.onsort)opts.onsort(me,sortCol,sortOrd);me.setLength(lst.length);};this.getWidth=function(i) {return(i<col.length)?col[i].width:-1;};function $content(c) {return (typeof(c)=='string')?$TXT(c):c;}
}
function TList(_options) {var me=this;this.type='list';var main= $DIV({css:'container'});var div = $DIV({css:'Liste'});var hdr = $DIV({css:'header'});var tdv = $DIV({css:'Liste'});var tbl = $DIV({css:'tables'});var scr = new TScroll(tdv,tbl);var hscr=null;var lst = new Array();var col = new Array();var sortImgNo = 'img/ui/arrownone.png';var sortImgUp = 'img/ui/arrowup.png';var sortImgDn = 'img/ui/arrowdown.png';var opts={height:0,width:800,header:true,selectable:false,selected:-1};if (_options)	for (var o in _options) opts[o]=_options[o];if(opts.fontSize)main.style.fontSize=opts.fontSize;var sortCol = -1;var sortAsc = true;if (opts.height!=0) {main.style.height=opts.height;tdv.style.height=(opts.height-hdr.offsetHeight);}
main.style.width=opts.width;opts.width-=16;var datw = (opts.dataWidth)?opts.dataWidth:opts.width;div.style.width=opts.width;tdv.style.width=opts.width;tbl.style.width=datw;hdr.style.width=datw;if (!opts.header) hdr.style.display='none';div.appendChild(hdr);tdv.appendChild(tbl);div.appendChild(tdv);main.appendChild(div);main.appendChild(scr.Component);if(datw>opts.width){var d=$DIV({css:'container'});d.appendChild(main);hscr=new THScroll({width:opts.width,total:datw,clip:opts.width,value:0,onchange: function(c){ tbl.style.left=-c.getValue(); hdr.style.left=-c.getValue(); } });d.appendChild(hscr.Component);main = d;}
this.Component = main;this.setHeader = function(hobjs) {for (var i=0; i<hobjs.length; i++) _addColumn(hobjs[i]);if(opts.header) {hdr.appendChild($DIV({clear:'left'}));if (opts.height!=0)tdv.style.height=(opts.height-hdr.offsetHeight);scr.refresh();}
};function _addColumn(head) {head.width=(head.width>1)?head.width:Math.floor(head.width*opts.width);if (!head.align) head.align='left';if (typeof(head.sort)=='undefined') head.sort=true;if(opts.header){head.content=$content(head.content);head.cell = $DIV({css:'cell', width:head.width,textAlign:head.align,cursor:'pointer'});head.cell.onclick=me.sortBy.bind(me,col.length);head.cell.appendChild(head.content);if (head.sort){head.sortimg=$IMG(sortImgNo);head.cell.appendChild(head.sortimg);}
hdr.appendChild(head.cell);}
col.push(head);}
this.insertRow = function(robj,val) {for (var i=0; i<robj.length; i++) robj[i].content=$content(robj[i].content);var r=new Object();r.cells=robj;r.value=val;lst.push(r);this.updateRow(r);return r;};this.updateRow=function(r) {var i,d;if (r.row) {tbl.appendChild(tbl.removeChild(r.row));} else {d=$DIV();d.onmouseover=this.mouseOverEvent.bind(this,r);d.onmouseout=this.mouseOutEvent.bind(this,r);d.onclick=this.mouseClick.bind(this,r);for (i=0; i<r.cells.length; i++) {var cell=$DIV({css:'cell', width:col[i].width, textAlign:col[i].align});cell.appendChild(r.cells[i].content);d.appendChild(cell);}
d.appendChild($DIV({clear:'left'}));tbl.appendChild(d);r.row=d;}
for (i=0; i<lst.length; i++) {lst[i].rowIndex=i;if(lst[i].row.className!='select')lst[i].row.className=(i%2==0)?'odd':'even'; else opts.selected=i;}
return(r);};this.mouseOverEvent=function(r) {r.row.className='over';};this.mouseOutEvent=function(r) {if((opts.selectable)&&(r.rowIndex==opts.selected))r.row.className='select';else r.row.className=(r.rowIndex%2==0)?'odd':'even';};this.mouseClick=function(r) {if(opts.selectable){r.row.className='select';opts.selected=r.rowIndex;if(opts.onchange)opts.onchange(me,r.rowIndex);updateSel();scr.makeVisible(r.row.offsetTop,r.row.offsetHeight);}
};this.getIndex=function(){return(opts.selected);};this.setIndex=function(v,init){opts.selected=((opts.selectable)&&(v>-1)&&(v<lst.length))?v:-1;updateSel();if(opts.selected!=-1) {var r=lst[opts.selected].row;scr.makeVisible(r.offsetTop,r.offsetHeight);}
if((!init)&&(opts.onchange))opts.onchange(me,v);};this.getValue=function(){return (opts.selected==-1)?null:lst[opts.selected].value;};this.setValue=function(v,init){var i;for(i=0;i<lst.length;i++)if(lst[i].value==v)break;me.setIndex(i,init);};this.getLength=function() {return(lst.length);};function updateSel(){for(var i=0;i<lst.length;i++)
lst[i].row.className=(i==opts.selected)?'select':((i%2==0)?'odd':'even');}
this.clear = function () {opts.selected=-1;var l;while (lst.length>0) {l=lst.shift();tbl.removeChild(l.row);}
scr.refresh();};this.refresh=function(){tdv.style.height=opts.height-hdr.offsetHeight;scr.refresh();};this.setHeight=function(h){main.style.height=h;tdv.style.height=(h-hdr.offsetHeight);scr.refresh();};this.sortBy = function(column,ord) {if (!col[column].sort) return;if (sortCol!=-1) col[sortCol].sortimg.src=sortImgNo;if (sortCol==column) sortAsc=!sortAsc;sortCol=column;col[sortCol].sortimg.src=sortAsc?sortImgUp:sortImgDn;lst.sort(_sort);for (var k=0; k<lst.length; k++) this.updateRow(lst[k]);};this.sortByEx=function(column,order) {sortAsc=order;sortCol=column;col[sortCol].sortimg.src=sortAsc?sortImgUp:sortImgDn;lst.sort(_sort);for (var k=0; k<lst.length; k++) this.updateRow(lst[k]);};function _sort(a,b) {if (a.cells[sortCol].sort>b.cells[sortCol].sort) return (sortAsc?1:-1); else return (sortAsc?-1:1);}
this.getWidth=function(i) {return(i<col.length)?col[i].width:-1;};function $content(c) {return (typeof(c)=='string')?$TXT(c):c;}
}
function TOptionList(_opts,_ifo) {var opt=_opts;var ifo=_ifo;opt.header=false;var l=new TList(opt);l.setHeader([{width:1,content:'', sort:false}]);this.Component=l.Component;this.addOption=function(_o) {_o.name=opt.name;_o.layout='right';_o.marginTop=1;_o.marginBottom=1;_o.titleWidth=opt.width-40;var c=new TCheck(_o,null,ifo);l.insertRow([{content:c.Component}]);l.refresh();};this.addHeader=function(_txt) {var v=$DIV({css:'ListeHeader'});v.innerHTML=_txt;l.insertRow([{content:v}]);l.refresh();};this.refresh=function(){l.refresh();};}
function TValue(opts) {var me=this;var m=$DIV({css:'UIelement'});var prec=opts.precision;var txt='';var vdiv;var val;var tx;if(opts.width)m.style.width=opts.width;if (opts.style=='small') {vdiv=$DIV({css:'UIelement',fontSize:14});txt='<SMALL>'+(opts.title?opts.title:'&nbsp;')+(opts.unit?('['+opts.unit+']'):'')+'</SMALL><BR>';m.appendChild(vdiv);} else {tx=$DIV({css:'UIelement',fontSize:8});tx.innerHTML=(opts.title?opts.title:'&nbsp;')+'<BR><BR>'+(opts.unit?opts.unit:'&nbsp;');m.appendChild(tx);vdiv=$DIV({css:'UIelement',fontSize:(opts.style=='medium')?18:24,fontWeight:900});m.appendChild(vdiv);}
this.setValue=_setValue;function _setValue(v) { val=v;vdiv.innerHTML=txt+((prec==-1)?v:parseFloat(v).toFixed(prec)); }
this.getName=function(){return(opts.name);};this.getValue=function(){return(val);};this.reset=function(){};this.setUnit=function(u){opts.unit=u;if(opts.style=='small'){txt='<SMALL>'+(opts.title?opts.title:'&nbsp;')+(opts.unit?('['+opts.unit+']'):'')+'</SMALL><BR>';} else {tx.innerHTML=(opts.title?opts.title:'&nbsp;')+'<BR><BR>'+opts.unit;}
};this.Component=m;if(typeof(opts.value)!='undefined')_setValue(opts.value);if(opts.parent)opts.parent.appendChild(m);if(opts.form)opts.form.add(me);}
function TDateTime(opts) {var me=this;var m=$DIV({css:'UIelement'});var tx=$DIV({css:'UIelement',fontSize:10,fontWeight:900});tx.innerHTML='@';m.appendChild(tx);var tv=$DIV({css:'UIelement',fontSize:14,fontWeight:900});var val=0;m.appendChild(tv);this.setValue=function(v) {val=(typeof(v)=='string')?parseInt(v,10):v;tv.innerHTML='<SMALL>'+Core.getDateStr(val)+'</SMALL><BR>'+Core.getTimeStr(val);};this.getValue=function(v) {return val;};this.getName=function(){return(opts.name);};this.reset=function(){};this.Component=m;if(opts.value!=null)me.setValue(opts.value);if(opts.parent)opts.parent.appendChild(m);if(opts.form)opts.form.add(me);}
function TButton(opts) {this.type='button';var me=this;var stl='ui_button';if(opts.link)opts.onclick=opts.link;if(opts.decoration) stl='ui_buttonDeco';var m=$DIV({css:stl});m.onmouseover=function() { m.className='ui_buttonOver'; };m.onmouseout=function() { m.className=stl; };var i=$IMG(opts.img,{css:'ui_buttonImg',title:opts.title,link:function(){if(opts.onclick)opts.onclick(me); }});m.appendChild(i);this.form=null;this.file=null;if(opts.file){var tid='_iframe_'+opts.id;var f=document.createElement('iframe');f.name=tid;f.id=tid;f.style.display='none';m.appendChild(f);this.target=f;var f=document.createElement('form');f.action=opts.action;f.method='post';f.encoding='multipart/form-data';f.target=tid;m.appendChild(f);this.form=f;var fsel=document.createElement('input');fsel.type='file';fsel.name=opts.name;fsel.style.position='absolute';fsel.style.marginLeft=0;fsel.size='1';fsel.style.top=0;fsel.style.left=-50;fsel.style.height=32;fsel.style.opacity=0;f.appendChild(fsel);fsel.onchange=function() {if(opts.onchange)opts.onchange(me);};this.file=fsel;}
this.submit=function(callback,timeout,act) {function wait() {timeout-=1000;if (me.target.contentWindow.document.getElementById('SUCCESS')) {callback(0);} else {if((timeout<0)||(me.target.contentWindow.document.getElementById('ERROR'))) callback(-1); else window.setTimeout(wait,1000);}
}
if(opts.file){if(act)me.form.action=act;me.form.submit();if(!timeout)timeout=1000000;if(callback)wait();}
};this.setImg=function(img) {i.src=img;};this.setEnabled=function(mo) {i.style.opacity=(mo)?1:0.15;opts.enabled=mo;};this.getEnabled=function() { return (opts.enabled); };this.setChecked=this.setEnabled;this.isChecked=this.getEnabled;this.getName=function() { return(opts.name); };this.getValue=function() { return(opts.value); };this.setListener=function(cb){opts.onclick=function(s) {s.setChecked(!s.isChecked());cb(s);};};this.Component=m;if(opts.enabled===false)this.setEnabled(false); else opts.enabled=true;if(opts.group)opts.group.add(me);if(opts.parent)opts.parent.appendChild(m);}
function TTextButton(opts) {var me=this;var m=$DIV({css:'tbMain'});var ml=$DIV({css:'tbEdge',backgroundImage:'url(img/ui/tbl_'+opts.style+'.png)'});var mm=$DIV({css:'tbTitle',background:'url(img/ui/tbm_'+opts.style+'.png) repeat-x'});var mr=$DIV({css:'tbEdge',backgroundImage:'url(img/ui/tbr_'+opts.style+'.png)'});m.appendChild(ml);m.appendChild(mm);m.appendChild(mr);if(opts.width) {mm.style.width=opts.width-24;m.style.width=opts.width;}
if(opts.img)mm.appendChild($IMG(opts.img,{title:opts.title?opts.title:''}));if(opts.text)mm.appendChild($HTML(opts.text));if(opts.margin)m.style.margin=opts.margin;if(opts.marginLeft)m.style.marginLeft=opts.marginLeft;if(opts.marginTop)m.style.marginTop=opts.marginTop;m.onmouseover=function() { mm.className='tbTitleOver'; };m.onmouseout=function() { mm.className='tbTitle'; };m.onclick=function() {if(opts.onclick)opts.onclick(me);};this.setTitle=function(t) { mm.innerHTML=t; opts.title=t; };this.getName=function() { return(opts.name); };this.setValue=function(v) { opts.value=v; };this.getValue=function() { return(opts.value); };this.Component=m;if(opts.parent)opts.parent.appendChild(m);}
function TActionButton(opts) {var me=this;var main=$DIV({css:'abMain',marginLeft:opts.marginLeft,marginTop:opts.marginTop});if(opts.text){var txt=$DIV({css:'txt',html:opts.text});main.appendChild(txt);}
var br=new TTextButton({img:'img/ui/rarrow24.png',title:opts.title,width:50,style:opts.style});br.Component.style.position='absolute';br.Component.style.left=1;br.Component.style.top=1;main.appendChild(br.Component);var dc=new TDrag({init:dstart,move:dmove});var ani=new TAnimation();br.Component.onmousedown=dc.start;function dstart(x0,y0,evt) {ani.stop();}
function butRet() {ani.set([[br.Component,'left',1]]);ani.animate(20,10,null);}
function dmove(dx,dy,evt,exit) {var o=br.Component;var x=o.offsetLeft+dx;if(x<1)x=1;if(x>129)x=129;o.style.left=x;if(exit){if(x==129) {if(opts.onclick&&opts.onclick(me))butRet();} else butRet();}
}
this.reset=butRet;this.Component=main;}
function TToolbar(opts) {var opt=opts;if (!opt) opt=new Object();var me=this;var main=$DIV({css:(opt.style=='big')?'ToolbarBig':'Toolbar'});var grp=new Array();var tabs=new Array();var seltab=-1;var trans=false;if (opt.transparent) {main.style.background='transparent';main.style.borderColor='transparent';}
if ((opt.visible)&&(opt.visible==true)) main.style.display='block';else opt.visible=false;if(opt.backgroundImage)main.style.backgroundImage=opt.backgroundImage;this.isVisible=function() { return(opt.visible); };this.Component=main;this.addGroup=function(opts) {if (!opts) opts=new Object();opts.css=(opts.decoration)?'groupDeco':'group';var g=$DIV(opts);main.appendChild(g);grp.push(g);return(grp.length-1);};this.grpComponent=function(i) {return(grp[i]);};this.showGroup=function(g,show) {if (isArray(g)) for(var j=0;j<g.length;j++) _showComp(grp[g[j]],show);else _showComp(grp[g],show);};this.addImg=function(g,opts) {opts.css='UIelement';opts.background='url('+opts.img+') center no-repeat';delete opts.img;var m=$DIV(opts);grp[g].appendChild(m);return(m);};this.addTab=function(tab) {tab.idx=tabs.length;var t=$DIV({css:'tab'});main.appendChild(t);t.appendChild($DIV({css:'tabLeft'}));tab.div=$DIV({css:'tabMain'});t.appendChild(tab.div);t.appendChild($DIV({css:'tabRight'}));t.onclick=function() {me.selectTab(tab.idx);};tab.div.appendChild($IMG(tab.img));tab.div.appendChild($HTML(tab.title));tab.Component=t;tabs.push(tab);return(tab);};this.selectedTab=function() { return seltab;};this.selectTab=function(i,relative) {if(relative) {seltab+=(i<0)?-1:1;if(seltab>=tabs.length)seltab=0;if(seltab<0)seltab=tabs.length-1;} else seltab=i;for (var j=0; j<tabs.length; j++) {tabs[j].Component.className=(seltab==j)?'tabSelect':'tab';}
if(tabs[seltab].link)tabs[seltab].link(seltab);};this.showTab=function(i,show) {if (isArray(i)) for (var j=0;j<i.length;j++){if(i[j]<tabs.length)_showComp(tabs[i[j]].Component,show);}	else if(i<tabs.length)_showComp(tabs[i].Component,show);};function _showComp(c,show) {switch(show) {case 'none': c.style.display='none'; break;case 'hide': c.style.visibility='hidden'; break;default: c.style.display='block'; c.style.visibility='visible';}
}
this.addSlider=function(g,opts) {var m=$DIV({css:'UIelement'});opts.titleHeight=16;var s=new TSlider(opts,m);grp[g].appendChild(m);return(s);};this.addTextField=function(g,opts) {var m=$DIV({css:'UIelement'});opts.layout='top';opts.titleHeight=14;opts.parent=m;var s=new TTextField(opts);grp[g].appendChild(m);return(s);};this.addDropDown=function(g,opts) {var m=$DIV({css:'UIelement'});opts.layout='top';opts.titleHeight=14;var s=new TDropDown(opts,m);grp[g].appendChild(m);return(s);};this.addCheck=function(g,opts) {if (!opts) opts=new Object();opts.css='UIelement';var m=$DIV({css:'UIelement'});opts.layout='top';opts.titleHeight=14;var s=new TCheck(opts,m);grp[g].appendChild(m);return(s);};this.addButton=function(g,opts) {var b=new TButton(opts);grp[g].appendChild(b.Component);return b;};this.addTextButton=function(g,opts) {var b=new TTextButton(opts);grp[g].appendChild(b.Component);return b;};this.addActionButton=function(g,opts) {var b=new TActionButton(opts);grp[g].appendChild(b.Component);return b;};this.showButton=function(m,show) {if (isArray(m)) for (var i=0;i<m.length;i++)_showComp(m[i].Component,show);else _showComp(m.Component,show);};this.addLabel=function(g,opts) {if (!opts) opts=new Object();switch(opts.style){case'big':opts.css='UIelementBig';break;case'medium':opts.css='UIelementMedium';break;default:opts.css='UIelement';}
var m=$DIV(opts);m.innerHTML=opts.title;m.setValue=function(v) { m.innerHTML=v; };m.getValue=function() { return(m.innerHTML);};grp[g].appendChild(m);return(m);};this.addValue=function(g,opts) {opts.parent=grp[g];var o=new TValue(opts);return(o);};this.addDateTime=function(g,opts) {opts.parent=grp[g];var o=new TDateTime(opts);return(o);};this.addSpacer=function(g,opts) {opts.css='UIelement';var o=$DIV(opts);grp[g].appendChild(o);return(o);};this.show=function() { main.style.display='block';opt.visible=true; };this.hide=function() { main.style.display='none';opt.visible=false; };this.flip=function() { opt.visible=!opt.visible; main.style.display=opt.visible?'block':'none'; };}
function TCalendar(callback, year, month, day) {var me=this;var MONTHS=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];var DOW=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];var cDiv,cBody,cTitle;var quit=false;if(year && month && day)
this.dat = new Date(year, month, day);else
this.dat = new Date();var func = callback;this.isOpen = false;var rendered = false;var bodyRendern = false;this.open = function(anchor) {quit=false;if(!rendered)
render();if(!bodyRendern)
renderBody();cDiv.style.display = "block";positionAtAnchor(cDiv, anchor, "bottom", "left");me.isOpen = true;};function dcClose() {if(quit){cDiv.style.display = "none";me.isOpen = false;}
}
this.close = function(force) {quit=true;if(force) dcClose();else window.setTimeout(dcClose,250);};this.setDate = function(d) {quit=false;me.dat=d;bodyRendern = false;};function dcSetDate(d) {quit=false;me.dat.setDate(d);bodyRendern = false;}
function positionAtAnchor(element, anchor) {var left = getAbsX(anchor);if(left + element.offsetWidth > document.body.scrollWidth && left - element.offsetWidth > 0)
left+=anchor.offsetWidth-element.offsetWidth+1;var top = getAbsY(anchor)+anchor.offsetHeight+1;if(top + element.offsetHeight > document.body.scrollHeight && top - element.offsetHeight > 0)
top-=element.offsetHeight+anchor.offsetHeight;element.style.top = top+"px";element.style.left = left+"px";}
function render() {cDiv = $DIV({css:'dcDiv'});var cTable = document.createElement("TABLE");var cHead = document.createElement("THEAD");var cHeadTR = document.createElement("TR");var cHeadWeekTR = document.createElement("TR");var cBY = document.createElement("TH");var cBM = document.createElement("TH");cTitle = document.createElement("TH");var cFM = document.createElement("TH");var cFY = document.createElement("TH");cBody = document.createElement("TBODY");cTable.className = "dcTable";cTitle.className='TI';cTitle.colSpan = 3;cBY.className = "BF";cBM.className = "BF";cFM.className = "BF";cFY.className = "BF";cBY.innerHTML = "<<";cBM.innerHTML = "<";cFM.innerHTML = ">";cFY.innerHTML = ">>";cBY.onclick = dcBackYearOnClick;cBM.onclick = dcBackMonthOnClick;cFM.onclick = dcForwardMonthOnClick;cFY.onclick = dcForwardYearOnClick;for(var i = 0; i < 7; i++) {var dowTH = document.createElement("TH");dowTH.innerHTML = DOW[i];cHeadWeekTR.appendChild(dowTH);}
cHeadTR.appendChild(cBY);cHeadTR.appendChild(cBM);cHeadTR.appendChild(cTitle);cHeadTR.appendChild(cFM);cHeadTR.appendChild(cFY);cHead.appendChild(cHeadTR);cHead.appendChild(cHeadWeekTR);cTable.appendChild(cHead);cTable.appendChild(cBody);cDiv.appendChild(cTable);document.body.appendChild(cDiv);rendered = true;}
function renderBody() {var title = MONTHS[me.dat.getMonth()]+ " " + me.dat.getFullYear();cTitle.innerHTML = title;while(cBody.hasChildNodes())
cBody.removeChild(cBody.lastChild);var tmpDate = new Date(me.dat.getFullYear(), me.dat.getMonth(), 1);var row = document.createElement("TR");cBody.appendChild(row);for(var i = 0; i < tmpDate.getDay(); i++) {var td = document.createElement("TD");row.appendChild(td);}
while(tmpDate.getMonth() == me.dat.getMonth()) {var td = document.createElement("TD");var d = tmpDate.getDate();if(d == me.dat.getDate())
td.className = "daySelected";else
td.className = "day";td.innerHTML = d;td.onclick = dcSelectDayOnClick;row.appendChild(td);if(tmpDate.getDay() == 6) {row = document.createElement("TR");cBody.appendChild(row);}
tmpDate.setDate(d + 1);}
for(var i = tmpDate.getDay(); i < 7; i++) {var td = document.createElement("TD");row.appendChild(td);}
bodyRendern = true;}
function dcSelectDayOnClick(event) {var src=(window.event)?window.event.srcElement:event.currentTarget;dcSetDate(src.innerHTML);if(func)func(Core.getDateStr(me.dat));me.close(true);return false;}
function dcBackYearOnClick(event) {dcSetDate(1);me.dat.setFullYear(me.dat.getFullYear() - 1);renderBody();return false;}
function dcBackMonthOnClick(event) {dcSetDate(1);me.dat.setMonth(me.dat.getMonth() - 1);renderBody();return false;}
function dcForwardMonthOnClick(event) {dcSetDate(1);me.dat.setMonth(me.dat.getMonth() + 1);renderBody();return false;}
function dcForwardYearOnClick(event) {dcSetDate(1);me.dat.setFullYear(me.dat.getFullYear() + 1);renderBody();return false;}
}
var animation=true;function TAnimation(ai) {var me=this;var t=0;var step,e=[];this.inProgress=false;this.stop=function() {if(t)window.clearInterval(t);t=0;me.inProgress=false;};this.clear=function() {me.stop();e=[];};this.add=function(elem,property,val) {e.push({s:elem.style,a:null,p:property,x1:val,o:elem});};this.set=function(ar) {me.clear();for(var i=0;i<ar.length;i++)
me.add(ar[i][0],ar[i][1],ar[i][2]);};this.animate=function(steps,intv,callback){if(t)window.clearInterval(t);t=0;if(animation){for(var i=0;i<e.length;i++){var o=e[i];switch(o.p){case 'left':		o.x0=o.o.offsetLeft; break;case 'top':			o.x0=o.o.offsetTop; break;case 'width':		o.x0=o.o.offsetWidth; break;case 'height':	o.x0=o.o.offsetHeight; break;case 'opacity':	o.x0=parseFloat(getCurrentStyle(o.o,'opacity'));break;}
o.a=[];for(var j=1;j<=steps;j++){var v=o.x0+(Math.sqrt((1/steps)*j)*(o.x1-o.x0));if(o.p=='filter')v='alpha(opacity:'+(v*100).toFixed(0)+')';else if(o.p!='opacity')v=Math.ceil(v);o.a.push(v);}
}
me.inProgress=true;step=0;t=window.setInterval(function(){for(var i=0;i<e.length;i++){var o=e[i];o.s[o.p]=o.a[step];}
step++;if(step>=steps){me.stop();if(callback)callback();}
},intv);} else {for(var i=0;i<e.length;i++){var o=e[i];o.s[o.p]=o.x1;}
}
};if(ai)me.set(ai);}

