function method(o,f){return function(){return f.apply(o,arguments);}}
function Class(base,props){var cls=function(){if(this.__init__){this.__init__.apply(this,arguments);}}
if(base){for(var key in base){cls[key]=base[key];}}
for(var key in props){cls[key]=props[key];}
cls.prototype=cls;return cls;}
var Browser={isIE:navigator.appName.toLowerCase().indexOf("microsoft")!=-1,isIEPre9:navigator.appName.toLowerCase().indexOf("microsoft")!=-1&&(typeof document.documentElement.style.opacity=='undefined'),isIE9:navigator.appName.toLowerCase().indexOf("microsoft")!=-1&&(typeof document.documentElement.style.opacity!='undefined'),isIE6:navigator.appName.toLowerCase().indexOf("microsoft")!=-1&&!window.XMLHttpRequest,isFirefox:(navigator.userAgent.toLowerCase().indexOf("firefox")!=-1||navigator.userAgent.toLowerCase().indexOf("Namoroka")!=-1),isGecko:navigator.product=='Gecko',isSafari:navigator.vendor&&navigator.vendor.toLowerCase().indexOf('apple')!=-1,isWebKit:navigator.userAgent.toLowerCase().indexOf("khtml")!=-1,isTouchPhone:(navigator.userAgent.toLowerCase().indexOf("android")!=-1||navigator.userAgent.toLowerCase().indexOf("iphone")!=-1)}
var Ajax={request:function(callback){var http_request=false;if(!Browser.isIE){http_request=new XMLHttpRequest();}
else if(window.ActiveXObject){try{http_request=new ActiveXObject("Msxml2.XMLHTTP");}
catch(e){try{http_request=new ActiveXObject("Microsoft.XMLHTTP");}
catch(e){}}}
if(http_request){http_request.onreadystatechange=function(){if(http_request.readyState==4){var data,stat,stattxt;try{data=http_request.responseText;stat=http_request.status;stattxt=http_request.statusText;xml=http_request.responseXML;}
catch(e){data=null;stat=0;stattxt='Network error';xml=null;}
callback(data,stat,stattxt,xml);}};}
return http_request;},get:function(url,callback){var req=Ajax.request(callback);if(!req)
return false;req.open('GET',url,true);req.send(null);return true;},post:function(url,data,callback){var req=Ajax.request(callback);if(!req)
return false;req.open('POST',url,true);req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');req.send(data);return true;},encode:function(params){var data='';for(var i=0;i<params.length;i++){if(i!=0)
data+="&";data+=params[i][0]+"="+encodeURIComponent(params[i][1]);}
return data;}};function $A(pseudo){var real=[];for(var i=0;i<pseudo.length;i++){real.push(pseudo[i]);}
return real;}
function $(){var elements=[];for(var i=0;i<arguments.length;i++){var element=arguments[i];if(typeof element=='string'){element=document.getElementById(element);}
if(arguments.length==1){return element;}
elements.push(element);}
return elements;}
Object.extend=function(destination,source){for(property in source){destination[property]=source[property];}
return destination;}
Object.optextend=function(destination,source){for(property in source){if(destination[property]==undefined){destination[property]=source[property];}}
return destination;}
Function.prototype.bind=function(object){var method=this;var oldArguments=$A(arguments).slice(1);return function(){var newArguments=$A(arguments);return method.apply(object,oldArguments.concat(newArguments));};}
function copy(obj,props){if(!props){return;}
for(var key in props){obj[key]=props[key];}}
var DOM={Div:function(par,abs,show){var div=document.createElement("div");if(!show)
div.style.display="none";if(abs)
div.style.position="absolute";if(par)
par.appendChild(div);return div;},Span:function(par,abs,show){var span=document.createElement("span");if(!show)
span.style.display="none";if(abs)
span.style.position="absolute";if(par)
par.appendChild(span);return span;},place:function(el,x,y,w,h){if(el.__place__)
el.__place__(x,y,w,h);else{if(x!=undefined)
el.style.left=x+"px";if(y!=undefined)
el.style.top=y+"px";if(w!=undefined)
el.style.width=w+"px";if(h!=undefined)
el.style.height=h+"px";}},getPos:function(obj){var curleft=0;var curtop=0;if(obj.offsetParent){while(obj.offsetParent){curleft+=obj.offsetLeft;curtop+=obj.offsetTop;obj=obj.offsetParent;}}
else if(obj.x){curleft+=obj.x;curtop+=obj.y;}
pos={'x':curleft,'y':curtop};return pos;},getScroll:function(obj){var x=0,y=0;while(obj.parentNode){x+=obj.scrollLeft;y+=obj.scrollTop;obj=obj.parentNode;}
return{'x':x,'y':y};},getObjClient:function(obj){var x=0,y=0;while(obj.offsetParent){x+=obj.offsetLeft;y+=obj.offsetTop;x-=obj.scrollLeft;y-=obj.scrollTop;obj=obj.offsetParent;}
return{'x':x,'y':y};},getHeight:function(el){return el.offsetHeight;},getWidth:function(el){return el.offsetWidth;},show:function(el,visibility){if(el.__show__)
el.__show__();else{if(visibility)
el.style.visibility="";else
el.style.display="";}
return el;},hide:function(el,visibility){if(el.__hide__)
el.__hide__();else{if(visibility)
el.style.visibility="hidden";else
el.style.display="none";}
return el;},_creator:function(tagname){return function(attrs){el=document.createElement(tagname);copy(el,attrs);for(var i=1;i<arguments.length;i++){if(typeof(arguments[i])=="string")
el.appendChild(document.createTextNode(arguments[i]));else if(arguments[i].__element__)
el.appendChild(arguments[i].__element__);else
el.appendChild(arguments[i]);}
return el;};},addNodes:function(el){for(var i=1;i<arguments.length;i++){if(typeof(arguments[i])=="string")
el.appendChild(document.createTextNode(arguments[i]));else if(arguments[i].__element__)
el.appendChild(arguments[i].__element__);else
el.appendChild(arguments[i]);}
return el;},removeNodes:function(el){for(var i=1;i<arguments.length;i++){if(arguments[i].__element__)
el.removeChild(arguments[i].__element__);else
el.removeChild(arguments[i]);}
return el;},_creatorTxt:function(content){return document.createTextNode(content);},style:function(attrs,el){if(el.__element__)
copy(el.__element__.style,attrs);else
copy(el.style,attrs);return el;},setTxt:function(el,txt){if(el.__element__)
el=el.__element__;if(el.firstChild)
el.firstChild.data=txt;else
el.appendChild(document.createTextNode(txt));},getTxt:function(el){if(el.__element__)
el=el.__element__;if(el.firstChild)
return el.firstChild.data;else
return"";},childByType:function(el,typ){if(el.__element__)
el=el.__element__;for(var child=el.firstChild;child;child=child.nextSibling){if(child.tagName==typ)
return child;}
return null;},childrenByType:function(el,typ){if(el.__element__)
el=el.__element__;var children=[];for(var child=el.firstChild;child;child=child.nextSibling){if(child.tagName==typ)
children.push(child);}
return children;},styleDiv:{},setSelectText:function(el,value){for(var i=0;i<el.length;i++){if(el.options[i].text==value){el.selectedIndex=i;return;}}},setSelectValue:function(el,value){for(var i=0;i<el.length;i++){if(el.options[i].value==value){el.selectedIndex=i;return;}}},getSelectText:function(el){return el.options[el.selectedIndex].text;},getSelectValue:function(el){return el.options[el.selectedIndex].value;},getSelect:function(el){return DOM.getSelectValue(el)||DOM.getSelectText(el);}};SPAN=DOM._creator("span");DIV=DOM._creator("div");TABLE=DOM._creator("table");FORM=DOM._creator("form");THEAD=DOM._creator("thead");TBODY=DOM._creator("tbody");TR=DOM._creator("tr");TD=DOM._creator("td");TH=DOM._creator("th");HR=DOM._creator("hr");BR=DOM._creator("br");INPUT=DOM._creator("input");TEXTAREA=DOM._creator("textarea");TXT=DOM._creatorTxt;P=DOM._creator("p");SELECT=DOM._creator("select");OPTION=DOM._creator("option");IMG=DOM._creator("img");LABEL=DOM._creator("label");A=DOM._creator("a");BUTTON=DOM._creator("button");document.getElementsByClassName=function(className,parentElement){var children=(parentElement||document.body).getElementsByTagName('*');var elements=[];var regex=new RegExp("(^|\\s)"+className+"(\\s|$)");children=$A(children);for(var i=0;i<children.length;i++){var child=children[i];if(child.className.match(regex))
elements.push(child);}
return elements;}
if(!window.Event){var Event=new Object();}
copy(Event,{KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_PGUP:33,KEY_PGDOWN:34,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,element:function(event){return event.target||event.srcElement;},isLeftClick:function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));},stopPropagation:function(evt){if(evt.stopPropagation)
evt.stopPropagation();else
evt.cancelBubble=true;},pointerX:function(event){return event.pageX||(event.clientX+
(document.documentElement.scrollLeft||document.body.scrollLeft));},pointerY:function(event){return event.pageY||(event.clientY+
(document.documentElement.scrollTop||document.body.scrollTop));},mwDelta:function(event){var delta=0;if(event.wheelDelta){delta=event.wheelDelta/-120;if(window.opera)
delta=-delta;}
else if(event.detail){delta=event.detail/3;}
return delta;},stop:function(event){if(event.preventDefault){event.preventDefault();event.stopPropagation();}else{event.returnValue=false;event.cancelBubble=true;}
return false;},findElement:function(event,tagName){var element=Event.element(event);while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase())))
element=element.parentNode;return element;},observers:false,_observeAndCache:function(element,name,observer,useCapture){if(!this.observers)this.observers=[];if(element.addEventListener){this.observers.push([element,name,observer,useCapture]);element.addEventListener(name,observer,useCapture);}else if(element.attachEvent){this.observers.push([element,name,observer,useCapture]);element.attachEvent('on'+name,observer);}},unloadCache:function(){if(!Event.observers)return;for(var i=0;i<Event.observers.length;i++){if(Event.observers[i])
Event.stopObserving.apply(this,Event.observers[i]);Event.observers[i]=null;}
Event.observers=false;},observe:function(element,name,object,func,useCapture){useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent))
name='keydown';cb=function(evt){evt=evt||window.event;return func.call(object,evt);};this._observeAndCache(element,name,cb,useCapture);},unobserveAll:function(element){for(var i=0;i<Event.observers.length;i++){var entry=Event.observers[i];if(entry&&entry[0]==element){Event.stopObserving.apply(this,Event.observers[i]);Event.observers[i]=null;}}},stopObserving:function(element,name,observer,useCapture){var element=$(element);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.detachEvent))
name='keydown';if(element.removeEventListener){element.removeEventListener(name,observer,useCapture);}else if(element.detachEvent){element.detachEvent('on'+name,observer);}}});Event.observe(window,'unload',window,Event.unloadCache,false);Form=Class(null,{__init__:function(name,submiturl,cancelurl,elStatus,elForm){this.submiturl=submiturl;this.cancelurl=cancelurl;this.sendText='Sending...';this.elStatus=elStatus||$('submitstatus');this.elForm=elForm||document.forms[name];Event.observe(this.elForm,'submit',this,this.submit);if(cancelurl)
Event.observe($("cancel"),'click',this,this.cancel);if(!elStatus)
this.elForm.elements[0].focus();},set:function(name,value){var el=this.element(name);if(!el)
return false;if(el.type.search('select')>=0){for(var i=0;i<el.length;i++){if(el.options[i].value==value){el.selectedIndex=i;return;}}}
else if(el.type.search('checkbox')>=0)
el.checked=value;else{el.value=value!=null?value:'';}},element:function(name){ret=this.elForm.elements[name];if(!ret){for(var i=0;i<this.elForm.elements.length;i++){if(this.elForm.elements[i].name==name)
return this.elForm.elements[i];}}
return ret;},disable:function(name,disabled){var el=this.element(name);el.disabled=disabled;if(Browser.isIE)
if(disabled)
el.style.className="disabled";else
el.style.className="";},val:function(name){return this._val(this.element(name));},_val:function(el){if(el.type.search('select')>=0){if(el.type.search('one')>=0)
return this.selectedValue(el);else{if(el.getAttribute('multiple')!=null)
return this.getValues(el);else
return this.selectedValue(el);}}
else if(el.type.search('checkbox')>=0)
return el.checked;else
return el.value;},selectall:function(name){var el=this.element(name);for(var i=0;i<el.options.length;i++)
el.options[i].selected=true;},getValues:function(el){var ret=[];for(var i=0;i<el.options.length;i++){if(el.options[i].selected)
ret.push(el.options[i].value);}
return ret;},selectedValue:function(el){var selected=el.options[el.selectedIndex];if(selected.value!=undefined)
return""+selected.value;return""+selected.text;},response:function(data,stat){if(stat==200)
this.submitted(data);else
this.failed(data,stat);},cancel:function(evt){if(evt.preventDefault)
evt.preventDefault();window.location=this.cancelurl;return false;},extract:function(){var f=this.elForm;var parms={};for(var i=0;i<f.elements.length;i++){var el=f.elements[i];if(el.type=='radio'){if(el.checked)
parms[el.name]=el.value;}
else if(el.type!='submit'&&el.type!='button')
parms[el.name]=this._val(el);}
return parms;},flatten:function(input){var output=[];for(var key in input){var val=input[key];if(typeof(val)=='object'){for(var c=0;c<val.length;c++)
output.push([key,val[c]]);}
else if(typeof(val)=='boolean'){if(val)
output.push([key,val]);}
else
output.push([key,val]);}
return output;},submit:function(evt){if(evt.preventDefault)
evt.preventDefault();var params=this.extract();params=this.validate(params);if(params){DOM.setTxt(this.elStatus,this.sendText);params=this.flatten(params);var data='';for(var i=0;i<params.length;i++){if(i!=0)
data+="&";data+=params[i][0]+"="+encodeURIComponent(params[i][1]);}
Ajax.post(this.submiturl,data,method(this,this.response));}
return false;},validate:function(parms){return parms;},setstatus:function(stat){DOM.setTxt(this.elStatus,stat);return null;},submitted:function(data){DOM.setTxt(this.elStatus,"Done");},failed:function(data,stat){DOM.setTxt(this.elStatus,"Failed ("+stat+")");},clearErrors:function(){var f=this.elForm;for(var i=0;i<f.elements.length;i++)
f.elements[i].className='';},setError:function(name){this.element(name).className='error';return true;}});var Debug={vformat:function(fmtstring,args){var argptr=0;var curpos=0;var next;var buffer="";while(true){next=fmtstring.indexOf("%",curpos);if(next==-1){buffer+=fmtstring.substr(curpos);break;}
buffer+=fmtstring.substr(curpos,next-curpos);var arg=fmtstring.substr(next,2);curpos=next+2;if(arg=="%%")
buffer+="%";else if(arg=="%s"){var val=args[argptr++];if(val==null)
buffer+="null";else if(val==undefined)
buffer+="undefined";else
buffer+=val.toString();}}
return buffer;},format:function(){var args=$A(arguments);var fmtstring=args.shift();return Debug.vformat(fmtstring,args);},log:function(){},info:function(){},warn:function(){},error:function(){},profile:function(title){},profileEnd:function(){},trace:function(){}}
if(window.console){Debug.log=console.info;Debug.info=console.info;Debug.warn=console.warn;Debug.error=console.error;Debug.profile=console.profile;Debug.profileEnd=console.profileEnd;Debug.trace=console.trace;}
Table=Class(null,{__init__:function(id,imgAsc,imgDesc){this.head=DOM.childByType($(id),"THEAD");this.body=DOM.childByType($(id),"TBODY");var headrows=DOM.childrenByType(this.head,"TR");this.headrow=headrows[headrows.length-1];this.imgAsc=DOM.style({'marginLeft':'10px','verticalAlign':'middle'},IMG({'src':imgAsc||'sort_asc.gif'}));this.imgDesc=DOM.style({'marginLeft':'10px','verticalAlign':'middle'},IMG({'src':imgDesc||'sort_desc.gif'}));this.ascOwner=null;this.descOwner=null;this.sortBy=0;this.ascending=true;this.data=[];this.setArrow();},setArrow:function(oldidx,oldasc,idx,asc){if(this.ascOwner)
this.ascOwner.removeChild(this.imgAsc);if(this.descOwner)
this.descOwner.removeChild(this.imgDesc);this.ascOwner=null;this.descOwner=null;var owner=DOM.childrenByType(this.headrow,'TH')[this.sortBy];if(this.ascending){owner.appendChild(this.imgAsc);this.ascOwner=owner;}
else{owner.appendChild(this.imgDesc);this.descOwner=owner;}},addRow:function(row,tr){if(!tr){tr=TR();var val;for(var i=0;i<row.length;i++){val=row[i];if(val==null||val==undefined)
val='';val=val.toString();DOM.addNodes(tr,TD(null,val));}}
this.data.push([row,tr]);},sorter:function(rowidx){return function(){if(rowidx==this.sortBy)
this.ascending=!this.ascending;else
this.ascending=true;this.sortBy=rowidx;this.setArrow();this.populate();};},sort:function(){var neg=-1,pos=1;if(!this.ascending){neg=1;pos=-1;}
var idx=this.sortBy;this.data=this.data.sort(function(a,b){if(a[0][idx]<b[0][idx])return neg;else if(a[0][idx]>b[0][idx])return pos;return 0;});},linkHeaders:function(){var headers=DOM.childrenByType(this.headrow,"TH");for(var i=0;i<headers.length;i++){var th=headers[i];th.style.cursor='pointer';Event.observe(th,'click',this,this.sorter(i));}},populate:function(){this.sort();this.clear();for(var i=0;i<this.data.length;i++)
this.body.appendChild(this.data[i][1]);},clear:function(){while(this.body.firstChild)
this.body.removeChild(this.body.firstChild);}});Object.extend(String.prototype,{__repr__:function(){return'"'+this.replace(/\\/g,'\\\\').replace(/"/g,'\\\"').replace(/\r/g,"\\r").replace(/\n/g,"\\n")+'"';},format:function(){var idx=0,toidx;var argidx=0,fmt;var result='';while(true){toidx=this.indexOf('%',idx);if(toidx<0){break;}
result+=this.substring(idx,toidx);fmt=this[toidx+1];switch(fmt){case'%':result+='%';break;case's':result+=str(arguments[argidx++]);break;case'r':result+=repr(arguments[argidx++]);break;}
idx=toidx+2;}
result+=this.substring(idx);return result;}});Number.prototype.__repr__=Number.prototype.toString;Boolean.prototype.__repr__=Boolean.prototype.toString;Object.optextend(Array.prototype,{max:function(){var highest=this[0];for(var i=1;i<this.length;i++){if(this[i]>highest){highest=this[i];}}
return highest;},min:function(){var lowest=this[0];for(var i=1;i<this.length;i++){if(this[i]<lowest){lowest=this[i];}}
return lowest;},indexOf:function(elem){for(var i=0;i<this.length;i++){if(this[i]==elem){return i;}}
return-1;},extend:function(other){for(var i=0;i<other.length;i++){this.push(other[i]);}},__repr__:function(){var ret="[";for(var i=0;i<this.length;i++){if(i!=0){ret+=",";}
ret+=repr(this[i]);}
ret+="]";return ret;}});function dump(obj){var ret='{';var first=true;for(var key in obj){if(first){first=false;}
else{ret+=', ';}
ret+=repr(key)+': '+repr(obj[key]);}
ret+='}';return ret;}
function repr(obj){if(obj===undefined){return'undefined';}
else if(obj==null){return'null';}
else if(obj.__repr__){return obj.__repr__();}
return dump(obj);}
function unrepr(s){try{return eval('('+s+')');}
catch(err){return null;}}
function str(obj){if(obj===undefined){return'';}
else if(obj==null){return'';}
else if(obj.toString){return obj.toString();}
else{return repr(obj);}}
PNGLoader=Class(null,{__init__:function(dir){this.dir=dir;},load:function(src,width,height,opts,stretch){if(Browser.isIE6){var span=SPAN(opts);span.style.width=width+'px';span.style.height=height+'px';span.style.display='inline-block';if(stretch)
span.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.dir+src+"', sizingMethod='scale')";else
span.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.dir+src+"', sizingMethod='crop')";return span;}
else{var img=IMG(opts);img.width=width;img.height=height;img.src=this.dir+src;return img;}},setsource:function(png,src,stretch){if(Browser.isIE6){if(stretch)
png.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.dir+src+"', sizingMethod='scale')";else
png.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.dir+src+"', sizingMethod='crop')";}
else
png.src=this.dir+src;}});var Cookie={set:function(name,value,expires,path,domain,secure){Cookie.setRaw(name,escape(repr(value)),expires,path,domain,secure);},setRaw:function(name,value,expires,path,domain,secure){var curCookie=name+'="'+value+'"'+
((expires)?"; expires="+expires.toGMTString():"")+
((path)?"; path="+path:"")+
((domain)?"; domain="+domain:"")+
((secure)?"; secure":"");document.cookie=curCookie;},get:function(name,def){ret=Cookie.getRaw(name);if(ret===null)
return def;ret=unrepr(unescape(ret));if(ret===null)
return def;return ret;},getRaw:function(name){var dc=document.cookie;var prefix=name+"=";var begin=dc.indexOf("; "+prefix);if(begin==-1){begin=dc.indexOf(prefix);if(begin!=0)
return null;}
else
begin+=2;var end=document.cookie.indexOf(";",begin);if(end==-1)
end=dc.length;return dc.substring(begin+prefix.length+1,end-1);},keys:function(){var dc=document.cookie;var ret=[];var begin=0;var end=0;while(true){end=dc.indexOf("=",begin);if(end!=-1)
ret.push(dc.substring(begin,end));begin=dc.indexOf("; ",end);if(begin==-1||end==-1)
break;begin+=2;}
return ret;},remove:function(name,path,domain){document.cookie=name+"="+
((path)?"; path="+path:"")+
((domain)?"; domain="+domain:"")+"; expires=Thu, 01-Jan-70 00:00:01 GMT";},removeall:function(){var k=Cookie.keys();for(var i=0;i<k.length;i++)
Cookie.remove(k[i]);},enabled:function(){if(navigator.cookieEnabled)
return true;if(typeof navigator.cookieEnabled=="undefined"){document.cookie="testcookie";if(document.cookie.indexOf("testcookie")>=0)
return true;}
return false;}};function zeropad(n,digits){var s=n.toString();while(s.length<digits)
s='0'+s;return s;}
var CDate=Class(null,{shortDayNames:['Mon','Tue','Wed','Thu','Fri','Sat','Sun'],longDayNames:['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'],shortMonthNames:['Invalid','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],longMonthNames:['Invalid','January','Febuary','March','April','May','June','July','August','September','October','November','December'],__init__:function(year,month,day){if(year)
this.d=new Date(year,month-1,day);else
this.d=new Date();this.year=this.d.getFullYear();this.month=this.d.getMonth()+1;this.day=this.d.getDate();this.dow=this._mapdow(this.d.getDay());},copy:function(){return new CDate(this.year,this.month,this.day);},_mapdow:function(dow){if(dow==0)
return 6;return dow-1;},lastMonday:function(){var current=new Date(this.d);while(current.getDay()!=1)
current.setDate(current.getDate()-1);return new CDate(current.getFullYear(),current.getMonth()+1,current.getDate());},addMonths:function(nMonths){var current=new Date(this.d);if(nMonths>0){for(var i=0;i<nMonths;i++)
current.setMonth(current.getMonth()+1);}
else{nMonths=-nMonths;for(var i=0;i<nMonths;i++)
current.setMonth(current.getMonth()-1);}
return new CDate(current.getFullYear(),current.getMonth()+1,current.getDate());},addDays:function(nDays){var current=new Date(this.d);if(nDays>0){for(var i=0;i<nDays;i++)
current.setDate(current.getDate()+1);}
else{nDays=-nDays;for(var i=0;i<nDays;i++)
current.setDate(current.getDate()-1);}
return new CDate(current.getFullYear(),current.getMonth()+1,current.getDate());},toString:function(){return this.strftime('%Y-%m-%d');},daysTo:function(other,inclusive){return Math.floor((other.d-this.d)/86400000)+(inclusive?1:0);},toUTC:function(){return this.d/1000;},setDay:function(day){this.d.setDate(day);this.day=day;this.dow=this._mapdow(this.d.getDay());},cmp:function(other){if(other.year<this.year)
return-1;else if(other.year>this.year)
return 1;if(other.month<this.month)
return-1;else if(other.month>this.month)
return 1;if(other.day<this.day)
return-1;else if(other.day>this.day)
return 1;return 0;},isLT:function(other){return this.cmp(other)>0;},isLE:function(other){return this.cmp(other)>=0;},isGT:function(other){return this.cmp(other)<0;},isGE:function(other){return this.cmp(other)<=0;},isEqual:function(other){return this.cmp(other)==0;},strftime:function(fmt){var pct=false;var output='';for(var i=0;i<fmt.length;i++){var ch=fmt.charAt(i);if(pct){if(ch=='%')
output+='%';else if(ch=='a')
output+=this.shortDayNames[this.dow];else if(ch=='A')
output+=this.longDayNames[this.dow];else if(ch=='b')
output+=this.shortMonthNames[this.month];else if(ch=='B')
output+=this.longMonthNames[this.month];else if(ch=='d')
output+=this.day;else if(ch=='m')
output+=this.month;else if(ch=='Y')
output+=this.year;pct=false;}
else{if(ch=='%')
pct=true;else
output+=ch;}}
return output;}});var CTime=Class(null,{__init__:function(hours,minutes,seconds){if(hours===undefined){var d=new Date();this.hours=d.getHours();this.minutes=d.getMinutes();this.seconds=d.getSeconds();}
else{this.hours=hours;this.minutes=minutes||0;this.seconds=seconds||0;}},cmp:function(other){if(this.hours<other.hours)
return-1;else if(this.hours>other.hours)
return 1;if(this.minutes<other.minutes)
return-1;else if(this.minutes>other.minutes)
return 1;if(this.seconds<other.seconds)
return-1;else if(this.seconds>other.seconds)
return 1;return 0;},asSeconds:function(){var seconds=this.seconds;seconds+=(this.minutes*60);seconds+=(this.hours*3600);return seconds;},toString:function(fmt){if(fmt)
return this.hours+':'+zeropad(this.minutes,2)+':'+zeropad(this.seconds,2);else
return this.hours+':'+zeropad(this.minutes,2);},strftime:function(fmt){var pct=false;var output='';for(var i=0;i<fmt.length;i++){var ch=fmt.charAt(i);if(pct){if(ch=='%')
output+='%';else if(ch=='H')
output+=this.hours;else if(ch=='h')
output+=zeropad(this.hours,2);else if(ch=='I'){if(this.hours==0)
output+=12;else if(this.hours<=12)
output+=this.hours;else
output+=(this.hours-12);}
else if(ch=='p'){if(this.hours<12)
output+='AM';else
output+='PM';}
else if(ch=='M')
output+=zeropad(this.minutes,2);else if(ch=='S')
output+=zeropad(this.seconds,2);pct=false;}
else{if(ch=='%')
pct=true;else
output+=ch;}}
return output;}});var CDateTime=Class(null,{__init__:function(date,time){if(date)
this.date=date;else
this.date=new CDate();if(time)
this.time=time;else
this.time=new CTime();},fromTimestamp:function(timestamp){var d=new Date(timestamp*1000);return new CDateTime(new CDate(d.getFullYear(),d.getMonth()+1,d.getDate()),new CTime(d.getHours(),d.getMinutes(),d.getSeconds()));},parse:function(s){var dt=new Date(Date.parse(s));return new CDateTime(new CDate(dt.getFullYear(),dt.getMonth()+1,dt.getDate()),new CTime(dt.getHours(),dt.getMinutes(),dt.getSeconds()));}});var Timezone={calculate:function(){var d=new Date(2007,4,1);var offset=-d.getTimezoneOffset();if(offset==720)
return'Pacific/Auckland';else if(offset==480)
return'Australia/Perth';else if(offset==570){var d=new Date(2007,2,1);var offset=-d.getTimezoneOffset();if(offset==570)
return'Australia/Darwin';else
return'Australia/Adelaide';}
else if(offset==600){var d=new Date(2007,2,1);var offset=-d.getTimezoneOffset();if(offset==600)
return'Australia/Brisbane';else{var d=new Date(2007,9,15);var offset=-d.getTimezoneOffset();if(offset==600)
return'Australia/Melbourne';else
return'Australia/Hobart';}}
return null;}};Scroller=Class(null,{__init__:function(evtTarget,parElem,rows,rowHeight,right,top){this.evtTarget=evtTarget;this.scroller=DOM.style({'overflowY':'scroll','position':'absolute','width':'18px','left':(right-18)+'px','top':top+'px','height':(rows*rowHeight)+'px'},DIV({'className':'scroller'},this.content=DIV()));this.unitheight=rowHeight;this.currow=0;Event.observe(this.scroller,'scroll',this,this.onScroll);DOM.addNodes(parElem,this.scroller);this.nPage=rows;},setbounds:function(nMax){this.nMax=nMax;DOM.place(this.content,undefined,undefined,undefined,nMax*this.unitheight);},onScroll:function(evt){var pos=this.scroller.scrollTop;var row=Math.floor(pos/this.unitheight);this.currow=row;this.evtTarget.onScroll(row);},setpos:function(row){this.scroller.scrollTop=row*this.unitheight;}});var LiveGrid=Class(null,{__init__:function(target,cols,visMax,colRenderFunc,reloadFunc,selectCB,primaryActivate,secondaryActivate,tabindex,model,imgAsc,imgDesc,imgWorking){this.cols=cols;this.visMax=visMax;this.toprow=0;this.reloadFunc=reloadFunc;this.primaryActivate=primaryActivate;this.secondaryActivate=secondaryActivate;this.colRenderFunc=colRenderFunc;this.selectCallBack=selectCB;this.cellHorzExtra=8;this.filterHorzExtra=2;this.inputHorzExtra=4;var grid=DIV({'className':'grid'},DIV({'className':'heading'}),DIV({'className':'heading'}));DOM.place(grid,0,0,undefined,(visMax+2)*20);this.labels=this.addrow(grid,'headingcell');this.filters=this.addrow(grid,'filtercell');this.cursor=DIV({'className':'cursor'});this.cursorPos=0;this.cells=[];grid.appendChild(this.cursor);for(row=0;row<visMax;row++){this.cells.push(this.addrow(grid,undefined,this.rowHandler(row),row));}
target.parentNode.replaceChild(grid,target);this.grid=grid;this.layout();for(var col=0;col<this.labels.length;col++){this.labels[col].innerHTML=this.cols[col][0];this.labels[col].style.cursor='pointer';Event.observe(this.labels[col],'click',this,this.sortHandler(col));var i=INPUT({'type':'text'});if(tabindex)
i.setAttribute('tabindex',tabindex++);Event.observe(i,'keydown',this,this.searchHandler(col,i));if(!this.firstinput)
this.firstinput=i;DOM.place(i,undefined,undefined,this.widths[col]-this.filterHorzExtra-this.inputHorzExtra);this.filters[col].appendChild(i);if(!cols[col][3])
cols[col][3]=this.cellRender;}
var accesskey=target.getAttribute('accesskey');if(accesskey&&this.firstinput){this.firstinput.setAttribute('accesskey',accesskey);Event.observe(this.firstinput,'focus',grid,function(evt){if(this.scrollIntoView)
this.scrollIntoView(false);});}
this.imgAsc=DOM.style({'marginLeft':'3px','verticalAlign':'middle'},IMG({'src':imgAsc||'/static/sort_asc.gif'}));this.imgDesc=DOM.style({'marginLeft':'3px','verticalAlign':'middle'},IMG({'src':imgDesc||'/static/sort_desc.gif'}));var div=DOM.style({'position':'absolute','right':'1px','top':'2px','cursor':'pointer','width':'16px','height':'16px'},DIV());this.imgWorking=IMG({'src':imgWorking||'/static/throbber-small.gif'});DOM.hide(this.imgWorking,true);DOM.addNodes(div,this.imgWorking);DOM.addNodes(this.labels[0].parentNode,div);Event.observe(div,'click',this,this.reload);this.ascOwner=null;this.descOwner=null;this.sortBy=0;this.ascending=true;this.model=model||new Model();this.setArrow();this.sb=new Scroller(this,this.grid,visMax,20,this.totwidth,40);},rowHandler:function(row){return function(evt){this.updateSelected(row);this.setcursor(this.toprow+row);};},updateSelected:function(row){for(var currentRow=0;currentRow<this.cells.length;currentRow++){var bg='#fff';var fc='#6B6B6B'
if(currentRow==row){fc='#fff'
bg='#3879d9';}
else{if(currentRow%2!=0)
bg='#f0f0f0';}
if(currentRow==this.selectedRow||currentRow==row){for(var col=0;col<this.cells[currentRow].length;col++){this.cells[currentRow][col].style.backgroundColor=bg;this.cells[currentRow][col].style.color=fc;}}}
this.selectedRow=row;this.selectCallBack(this.model.getrow(this.selectedRow+this.toprow));this.render();},addrow:function(par,cn,handler,y){cn=cn||'cell';var divs=[];var cols=this.cols;for(var col=0;col<cols.length;col++){var div=DIV({'className':cn});if(cols[col][4])
div.appendChild(cols[col][4](y,col,div));else
div.appendChild(TXT(''));if(handler)
Event.observe(div,'click',this,handler);divs.push(div);par.appendChild(div);}
return divs;},layoutRow:function(row,y,horzExtra,bg){var x=0;for(var col=0;col<row.length;col++){DOM.place(row[col],x,y,this.widths[col]-horzExtra);x+=this.widths[col];row[col].style.backgroundColor=bg}},calcWidths:function(width){var nFlex=0,fixed=0;for(var col=0;col<this.cols.length;col++){if(this.cols[col][2])
fixed+=this.cols[col][2];else
nFlex++;}
var flexSize;if(nFlex)
flexSize=Math.floor((width-fixed)/nFlex);this.widths=[];for(var col=0;col<this.cols.length;col++){if(this.cols[col][2])
this.widths.push(this.cols[col][2]);else
this.widths.push(flexSize);}},layout:function(){this.totwidth=DOM.getWidth(this.grid);this.calcWidths(this.totwidth-18);this.layoutRow(this.labels,0,this.cellHorzExtra);this.layoutRow(this.filters,20,this.filterHorzExtra);var y=40;for(var row=0;row<this.cells.length;row++){var bg='#fff';if(row%2!=0)
bg='#f0f0f0';this.layoutRow(this.cells[row],y,this.cellHorzExtra,bg);y+=20;}
DOM.place(this.cursor,undefined,undefined,this.totwidth-18);},searchHandler:function(col,input){return function(evt){this.searchInput(evt,col,input);};},searchInput:function(evt,idx,input){if(evt.keyCode==Event.KEY_RETURN){if(evt.ctrlKey){var row=this.model.getrow(this.cursorPos);if(row){if(evt.shiftKey){if(this.secondaryActivate)
this.secondaryActivate(row);}
else{if(this.primaryActivate)
this.primaryActivate(row);}}}
else
this.search(idx,input.value,this.cols[idx][1]);}
else if(evt.keyCode==Event.KEY_DOWN){if(evt.ctrlKey)
this.sort(idx,false);else
this.movecurs(1);}
else if(evt.keyCode==Event.KEY_UP){if(evt.ctrlKey)
this.sort(idx,true);else
this.movecurs(-1);}
else if(evt.keyCode==Event.KEY_PGUP)
this.movecurs(-Math.floor(this.visMax/2));else if(evt.keyCode==Event.KEY_PGDOWN)
this.movecurs(Math.floor(this.visMax/2));},search:function(idx,val,op){var res=this.model.find(idx,val,this.cursorPos+1,op);if(res>=0){return this.setcursor(res);}
res=this.model.find(idx,val,0,op);if(res>=0){return this.setcursor(res);}
else{return;}},focus:function(){this.firstinput.focus();},movecurs:function(delta){var pos=this.cursorPos+delta;if(pos<0)
pos=0;if(pos>=this.model.getlength())
pos=this.model.getlength()-1;if(pos!=this.cursorPos)
this.setcursor(pos);},setcursor:function(pos){var scroll=false;if(pos<this.toprow){this.toprow=pos;scroll=true;}
if(pos>=(this.toprow+this.cells.length)){this.toprow=pos-this.cells.length+1;scroll=true;}
this.cursorPos=pos;if(scroll){this.sb.setpos(this.toprow);this.render();return true;}
this.renderCurs();return false;},setArrow:function(oldidx,oldasc,idx,asc){if(this.ascOwner)
this.ascOwner.removeChild(this.imgAsc);if(this.descOwner)
this.descOwner.removeChild(this.imgDesc);this.ascOwner=null;this.descOwner=null;var owner=this.labels[this.sortBy];if(this.ascending){owner.appendChild(this.imgAsc);this.ascOwner=owner;}
else{owner.appendChild(this.imgDesc);this.descOwner=owner;}},sortHandler:function(rowidx){return function(){this.sort(rowidx);};},sort:function(rowidx,dir){if(dir==undefined){if(rowidx==this.sortBy)
this.ascending=!this.ascending;else
this.ascending=true;}
else
this.ascending=dir;this.sortBy=rowidx;this.setArrow();var row=this.model.getrow(this.cursorPos);this.model.sort(this.sortBy,this.ascending);row=this.model.whichRow(row);this.setcursor(row);this.render();},onScroll:function(toprow){if(toprow!=this.toprow){var oldTop=this.toprow;this.toprow=toprow;if(!(typeof(this.selectedRow)==='undefined')){var dif=toprow-oldTop;this.updateSelected(this.selectedRow-dif);}
this.render();}},cellRender:function(row,idx,cell){var val='';if(row!=null&&row[idx]!=null)
val=row[idx];cell.firstChild.data=val;},renderCurs:function(){if(this.cursorPos>=this.toprow&&this.cursorPos<(this.toprow+this.cells.length)&&this.model.getlength()){DOM.place(this.cursor,0,(this.cursorPos-this.toprow+2)*20);DOM.show(this.cursor);}
else
DOM.hide(this.cursor);},render:function(){this.renderCurs();for(var y=0;y<this.cells.length;y++){var row=this.cells[y];var datarow=this.model.getrow(y+this.toprow);if(this.colRenderFunc)
this.colRenderFunc(datarow,row);for(var col=0;col<row.length;col++){this.cols[col][3](datarow,col,row[col]);}}},filter:function(tf){this.model.filter(tf);},update:function(){this.model.doFilter();this.toprow=0;this.cursorPos=0;this.sb.setbounds(this.model.getlength());this.sb.setpos(0);this.model.sort(this.sortBy,this.ascending);this.render();},populate:function(data){this.model.setdata(data);this.toprow=0;this.cursorPos=0;this.sb.setbounds(this.model.getlength());this.model.sort(this.sortBy,this.ascending);this.render();},retrieve:function(url){this._lasturl=url;var tbl=this;DOM.show(this.imgWorking,true);Ajax.get(url,function(data,status){data=eval(data);tbl.populate(data);DOM.hide(tbl.imgWorking,true);});},reload:function(evt){if(this.reloadFunc){DOM.show(this.imgWorking,true);this.reloadFunc();}
else
this.retrieve(this._lasturl);},getVisibleRow:function(y){return this.model.getrow(y+this.toprow);},remove:function(row){this.model.remove(row);this.movecurs(0);this.render();}});var Model=Class(null,{__init__:function(columns,data){this.columns=columns||null;this.raw=this.data=data||[];this.filterFunc=null;},doFilter:function(){if(this.filterFunc===null)
this.data=this.raw;else{this.data=[];for(var i=0;i<this.raw.length;i++){var row=this.raw[i];if(this.filterFunc(row))
this.data.push(row);}}},filter:function(ff){this.filterFunc=ff;this.doFilter();},pickle:function(parms,name){var len=this.getlength();for(var i=0;i<len;i++){var datarow=this.getrow(i);var rowname=name+'-'+i;for(var col=0;col<this.columns.length;col++)
if(datarow[col]===undefined)
parms[rowname+'.'+this.columns[col]]='';else
parms[rowname+'.'+this.columns[col]]=datarow[col];}
return parms;},setdata:function(data){this.raw=data;this.doFilter();},getrow:function(row){return this.data[row];},getlength:function(){return this.data.length;},add:function(datarow,row){if(row)
this.data.splice(row,0,datarow);else
this.data.push(datarow);},remove:function(row){this.data.splice(row,1);},find:function(idx,val,from,op){for(var i=from;i<this.data.length;i++){var test=this.data[i][idx];if(test!=null){if(op=='='&&test==val)
return i;else if(op=='in'&&test.toLowerCase().indexOf(val.toLowerCase())>=0)
return i;else if(op=='ins'&&test.indexOf(val)>=0)
return i;}}
return-1;},whichRow:function(row){for(var i=0;i<this.data.length;i++)
if(this.data[i]===row)
return i;return null;},sort:function(idx,ascending){var neg=-1,pos=1;if(!ascending){neg=1;pos=-1;}
this.data=this.data.sort(function(a,b){var va=a[idx];var vb=b[idx];if(va==null)
if(vb==null)
return 0;else
return neg;if(vb==null)
return pos;if(va.toLowerCase)
va=va.toLowerCase();if(vb.toLowerCase)
vb=vb.toLowerCase();if(va<vb)
return neg;if(va>vb)
return pos;return 0;});}});var Grid=Class(null,{gridColWidths:[],gridRowInfo:[],gridCellDefault:['cell',8,0],gridRowHeight:20,_widths:null,__init__:function(){this._grid=DIV({'className':'grid'});this._cells=[];},replace:function(target){target.parentNode.replaceChild(this._grid,target);this.layout();},addRow:function(){var row=this._cells.length;var nColumns=this.gridColWidths.length;var cn=this.gridCellDefault[0];if(this.gridRowInfo[row])
cn=this.gridRowInfo[row][0];var divs=[];for(var col=0;col<nColumns;col++){var div=DIV({'className':cn});this.initCell(div,row,col);divs.push(div);}
this._cells.push(divs);if(this._widths){this._layoutRow(divs,row,row*this.gridRowHeight);DOM.place(this._grid,0,0,undefined,this._cells.length*this.gridRowHeight);}
for(var col=0;col<nColumns;col++)
this._grid.appendChild(divs[col]);},cell:function(row,col){return this._cells[row][col];},removeRow:function(){var divs=this._cells.pop();for(var i=0;i<divs.length;i++)
this._grid.removeChild(divs[i]);if(this._widths)
DOM.place(this._grid,0,0,undefined,this._cells.length*this.gridRowHeight);},initCell:function(div,row,col){div.appendChild(document.createTextNode(''));},layoutCell:function(div,row,col,innerWidth,innerHeight){},_calcWidths:function(width){var nFlex=0,fixed=0,nColumns=this.gridColWidths.length;for(var col=0;col<nColumns;col++){if(this.gridColWidths[col])
fixed+=this.gridColWidths[col];else
nFlex++;}
var flexSize;if(nFlex)
flexSize=Math.floor((width-fixed)/nFlex);this._widths=[];for(var col=0;col<nColumns;col++){if(this.gridColWidths[col])
this._widths.push(this.gridColWidths[col]);else
this._widths.push(flexSize);}},_layoutRow:function(divs,row,y){var horzAdjust=this.gridCellDefault[1];if(this.gridRowInfo[row])
horzAdjust=this.gridRowInfo[row][1];var x=0,innerWidth;var nCols=this._widths.length;for(var col=0;col<nCols;col++){innerWidth=this._widths[col]-horzAdjust;DOM.place(divs[col],x,y,innerWidth);x+=this._widths[col];this.layoutCell(divs[col],row,col,innerWidth,this.gridRowHeight);}},layout:function(){this._totwidth=DOM.getWidth(this._grid);this._calcWidths(this._totwidth);var nRows=this._cells.length;for(var row=0;row<nRows;row++)
this._layoutRow(this._cells[row],row,row*this.gridRowHeight);DOM.place(this._grid,0,0,undefined,nRows*this.gridRowHeight);}});png=new PNGLoader('/static/');months=['January','February','March','April','May','June','July','August','September','October','November','December'];baseYear=2005;function filldate(f,name,d){f.element(name+'.day').selectedIndex=d.getDate()-1;f.element(name+'.month').selectedIndex=d.getMonth();f.element(name+'.year').selectedIndex=d.getFullYear()-baseYear;}
function getdate(f,name){var year=f.element(name+'.year').selectedIndex+baseYear;var month=f.element(name+'.month').selectedIndex;var day=f.element(name+'.day').selectedIndex+1;return new Date(year,month,day);}
function fillyears(f,name){var currentDate=new Date();var maxYear=currentDate.getFullYear();for(var year=baseYear;year<=maxYear;year++){opt=OPTION(null,year.toString());DOM.addNodes(f.element(name+'.year'),opt);}}
InputCalendar=Class(null,{__init__:function(edit,button){this.__element__=DOM.style({'position':'absolute','zIndex':'100','visibility':'hidden'},DIV({'className':'inputcalendar'},this.table=TABLE({'cellSpacing':'0'},THEAD(null,TR({'className':'monthrow'},TH({'align':'right'},this.btnDownMonth=DOM.style({'cursor':'pointer'},png.load('arrowleft.png',6,9))),TH({'colSpan':3},this.txtMonth=SPAN(null,'January')),TH({'align':'left'},this.btnUpMonth=DOM.style({'cursor':'pointer'},png.load('arrowright.png',6,9))),TH({'colSpan':2},this.btnDownYear=DOM.style({'marginRight':'5px','cursor':'pointer'},png.load('arrowleft.png',6,9)),this.txtYear=DOM.style({'marginRight':'5px'},SPAN(null,'2009')),this.btnUpYear=DOM.style({'cursor':'pointer'},png.load('arrowright.png',6,9)))),TR({'className':'headrow'},TH({'width':'14%'},'Mon'),TH({'width':'14%'},'Tue'),TH({'width':'14%'},'Wed'),TH({'width':'14%'},'Thu'),TH({'width':'14%'},'Fri'),TH({'width':'14%'},'Sat'),TH({'width':'14%'},'Sun'))),this.body=TBODY())));var pos=DOM.getPos(edit);DOM.place(this.__element__,pos.x,pos.y+DOM.getHeight(edit),200,200);DOM.style({'cursor':'pointer'},button);Event.observe(button,'click',this,this.toggle);Event.observe(this.btnDownMonth,'click',this,this.downMonth);Event.observe(this.btnUpMonth,'click',this,this.upMonth);Event.observe(this.btnDownYear,'click',this,this.downYear);Event.observe(this.btnUpYear,'click',this,this.upYear);this.edit=edit;this.cells=[];var x,y,cell=0;for(y=0;y<6;y++){var row=TR();for(x=0;x<7;x++){var td=DOM.style({'cursor':'pointer'},TD({'align':'center'}));this.cells.push(td);DOM.addNodes(row,td);Event.observe(td,'click',this,this.cellClickCB(cell));cell+=1;}
DOM.addNodes(this.body,row);}},layout:function(){DOM.place(this.__element__,undefined,undefined,DOM.getWidth(this.table),DOM.getHeight(this.table));},cellClickCB:function(cell){return function(evt){this.cellClick(cell);};},cellClick:function(cell){var clicked=new Date(this.tlDate);clicked.setDate(clicked.getDate()+cell);this.edit.value=clicked.getDate()+'/'+(clicked.getMonth()+1)+'/'+clicked.getFullYear();this.hide();},monthNames:['January','February','March','April','May','June','July','August','September','October','November','December'],downMonth:function(evt){var month=this.month-1,year=this.year;if(month<0){month=11;year-=1;}
this.set(month,year);},upMonth:function(evt){var month=this.month+1,year=this.year;if(month>11){month=0;year+=1;}
this.set(month,year);},downYear:function(evt){this.set(this.month,this.year-1);},upYear:function(evt){this.set(this.month,this.year+1);},compare:function(d1,d2){return d1.getFullYear()==d2.getFullYear()&&d1.getMonth()==d2.getMonth()&&d1.getDate()==d2.getDate();},set:function(month,year){var current=new Date(year,month,1);this.month=month;this.year=year;DOM.setTxt(this.txtMonth,this.monthNames[month]);DOM.setTxt(this.txtYear,year);while(current.getDay()!=1)
current.setDate(current.getDate()-1);this.tlDate=new Date(current);var cell=0;for(cell=0;cell<42;cell++){if(this.compare(current,this.selected))
this.cells[cell].className='selectedday';else if(current.getMonth()==month)
this.cells[cell].className='onmonth';else
this.cells[cell].className='offmonth';DOM.setTxt(this.cells[cell],current.getDate());current.setDate(current.getDate()+1);}},toggle:function(){if(this.visible)
this.hide();else
this.show();},show:function(){var parts=this.edit.value.split('/');var day=parseInt(parts[0]),month=parseInt(parts[1])-1,year=parseInt(parts[2]);var d=new Date(year,month,day);if(isNaN(d.getDay()))
d=new Date();this.selected=d;this.set(d.getMonth(),d.getFullYear());this.layout();DOM.show(this.__element__,true);this.visible=true;},hide:function(){DOM.hide(this.__element__,true);this.visible=false;}});function validatereport(parms){delete parms['start.day'];delete parms['start.month'];delete parms['start.year'];parms['start']=parseInt(getdate(f,'start')/1000);delete parms['end.day'];delete parms['end.month'];delete parms['end.year'];parms['end']=parseInt(getdate(f,'end')/1000);parms['session']=Cookie.getRaw('_SID_');if(parms['end']-parms['start']>2764800){DOM.setTxt($("submitstatus"),"Date range not valid. A maximum of 1 month can be selected.");return null;}
if(parms["units"].length==0){DOM.setTxt($("submitstatus"),"Please select at least 1 vehicle");return null;}
return parms;}
function validatelocationreport(parms){parms['session']=Cookie.getRaw('_SID_');if(parms["units"].length==0){DOM.setTxt($("submitstatus"),"Please select at least 1 vehicle");return null;}
return parms;}
function reportsubmitted(data){'/myaccount/'
if(data=='null'||data==''){window.location='reports.html';return;}
tag=eval(data);server=tag.charAt(0);tag=tag.substring(1);if(pagename=='export.html'){csv=true;inplace=false;}
else{inplace=f.val('inplace');csv=f.val('csv');}
window.location='generating.html?server='+server+'&tag='+tag+'&inplace='+inplace+'&csv='+csv;}
function contactsubmitted(data){$("form").style.display="none";$("sent").style.display="block";}
function feedbackvalidate(parms){if(!parms['message']){DOM.setTxt($("submitstatus"),'Please enter a message');return null;}
parms['method']='feedback';return parms;}
function validemail(address){regex=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/;return address.match(regex);}
function contactvalidate(parms){if(!parms['message']){DOM.setTxt($("submitstatus"),'Please enter a message');return null;}
if(!validemail(parms['email'])){DOM.setTxt($("submitstatus"),'Please supply a valid email address');return null;}
if(!parms['email']&&!parms['phone']){DOM.setTxt($("submitstatus"),'Please supply either a phone number or an email address');return null;}
if(parms['reason']){parms['method']=parms['reason'];delete parms['reason']}
else
parms['method']='support';return parms;}
function passwordsubmitted(data){if(data=='null'){window.location='/myaccount/';return;}
if(eval(data)){$("form").style.display="none";$("done").style.display="block";}
else
DOM.setTxt($("submitstatus"),'Old password incorrect');}
function passwordvalidate(parms){if(!parms['newpass']){DOM.setTxt($("submitstatus"),'Please supply a new password');return null;}
if(parms['newpass']!=parms['reenterpass']){DOM.setTxt($("submitstatus"),'New password and reentered password do not match');return null;}
delete parms['reenterpass'];return parms;}
function validateconfiguration(parms){parms['id']=vehicleid;parms['primary']=parms['primary'].replace(/ /g,'');parms['secondary']=parms['secondary'].replace(/ /g,'');if(parms['primary']==vehiclephone){DOM.setTxt($("submitstatus"),'Primary phone number set to unit phone number! Please enter your mobile number here.');return null;}
if(parms['secondary']==vehiclephone){DOM.setTxt($("submitstatus"),'Secondary phone number set to unit phone number! Please enter your mobile number here.');return null;}
return parms;}
function datevalidator(date,maxYear,minYear){var error=false;var currentDate=new Date();maxYear=currentDate.getFullYear()+(maxYear||2);minYear=currentDate.getFullYear()-(minYear||2);re=/^(\d{1,2})[^\d\w](\d{1,2})[^\d\w](\d{2,4})$/;if(matched=date.match(re)){var validDate=new Date(matched[3],matched[2]-1,matched[1]);if(matched[3].length==2)
matched[3]='20'+matched[3];if(matched[2]>12)
return[false,'Invalid month'];else if(matched[1]>31||(validDate.getDate()!=matched[1]||validDate.getMonth()!=matched[2]-1))
return[false,'Invalid day of month'];else if(matched[3]<minYear||matched[3]>maxYear)
return[false,'Invalid year'];}
else
return[false,'Invalid date value'];return[true,matched[1]+'/'+matched[2]+'/'+matched[3]];}
function validatedetails(parms){error=false;parms['id']=vehicleid;parms['phonenumber']=parms['phonenumber'].replace(/ /g,'');if(parms['wofdue']){validator=datevalidator(parms['wofdue']);if(!validator[0]){this.setError('wofdue');DOM.setTxt($("submitstatus"),validator[1]+' - date must be in the format "dd/mm/YYYY or "dd/mm/YY"');return null;}
else
parms['wofdue']=validator[1];}
if(parms['regodue']){validator=datevalidator(parms['regodue']);if(!validator[0]){this.setError('regodue');DOM.setTxt($("submitstatus"),validator[1]+' - date must be in the format "dd/mm/YYYY or "dd/mm/YY"');return null;}
else
parms['regodue']=validator[1];}
return parms;}
function configurationsubmitted(data){if(data=='null'){window.location='/myaccount/';return;}
data=eval(data);if(data==true)
window.location='editvehicles.html';else{DOM.setTxt($("submitstatus"),data);}}
function accountvalidate(parms){var starthour=parms['starthour']=parms['startAM']=='PM'?parseInt(parms['starthour'])+12:parms['starthour'];var endhour=parms['endhour']=parms['endAM']=='PM'?parseInt(parms['endhour'])+12:parms['endhour'];var error=false;if(parms['primaryalertemail']&&!validemail(parms['primaryalertemail'])){DOM.setTxt($('submitstatus'),'Please enter a valid email address');this.setError('primaryalertemail');return null;}
if(parms['secondaryalertemail']&&!validemail(parms['secondaryalertemail'])){DOM.setTxt($('submitstatus'),'Please enter a valid email address');this.setError('secondaryalertemail');return null;}
if(starthour>=endhour){if(starthour==endhour){if(parms['startmins']>=parms['endmins'])
error=true;}
else
error=true;}
if(error){DOM.setTxt($("submitstatus"),'End time must not precede start time');this.setError('endhour');this.setError('endmins');this.setError('endAM');return null;}
delete parms['startAM'];delete parms['endAM'];delete parms['contactemail'];delete parms['name'];delete parms['contactmobile'];delete parms['contactname'];delete parms['contactphone'];return parms;}
function loginsubmitted(data){if(eval(data))
window.location='/myaccount/';else{window.location='badpassword.html';}}
function has(features,feature){for(var i=0;i<features.length;i++)
if(features[i]==feature)
return true;return false;}
function checkcell(on){if(on)
return DOM.style({'textAlign':'center'},TD(null,png.load('tick.png',16,16)));else
return TD(null);}
function caps(e){evt=e;var keyCode=0;var shiftKey=false;var caplock=false;keyCode=evt.charCode||evt.keyCode;shiftKey=evt.shiftKey;if((keyCode>=65&&keyCode<=90)&&!shiftKey)
caplock=true;else if((keyCode>=97&&keyCode<=122)&&shiftKey)
caplock=true;if(caplock)
DOM.setTxt($("badpasssubmitstatus"),'Please check your CAPS LOCK key');else
DOM.setTxt($("badpasssubmitstatus"),'');}
function cellInboundMessage(row,idx,cell){if(row!=null){if(row[0]==2)
cell.firstChild.data='>';else
cell.firstChild.data='<';}
else
cell.firstChild.data='';}
function formatTime(timestamp){if(timestamp==0)
return'';var time=CDateTime.fromTimestamp(timestamp);var date=time.date.strftime('%d/%m/%Y');var today=new Date();todayDay=today.getDate();todayMonth=today.getMonth()+1;todayYear=today.getFullYear();if(time.date.day==todayDay&&time.date.month==todayMonth&&time.date.year==todayYear)
ret=time.time.strftime('%h:%M');else
ret=date+'  '+time.time.strftime('%h:%M');return ret}
function cellFmtTime(row,idx,cell){if(row!=null){var dt=formatTime(row[1]);cell.firstChild.data=dt;}
else
cell.firstChild.data='';}
function msgRead(rowdata,row){if(rowdata){var fontweight='normal';if((rowdata[0]==2&&!(gReadMessages.indexOf(rowdata[4])>=0))||(rowdata[0]!=2&&!rowdata[6])){fontweight='bold'}
for(var col=0;col<row.length;col++)
row[col].style.fontWeight=fontweight;}}
function displayMsg(rowdata){var types={0:'Outbound Text',1:'Outbound Stop',2:'Incoming Text'};if(rowdata){var displayed='';DOM.show($('messagedetails'));DOM.setTxt($('messagebody'),rowdata[3]);DOM.setTxt($('msgReceived'),formatTime(rowdata[6]));DOM.setTxt($('msgSent'),formatTime(rowdata[1]));DOM.setTxt($('Vehicle'),rowdata[2]);DOM.setTxt($('msgType'),types[rowdata[0]]);DOM.hide($('txtAddress'));DOM.hide($('Address'))
if(rowdata[0]==1){DOM.setTxt($('Address'),rowdata[7]);DOM.show($('txtAddress'));DOM.show($('Address'));}
if(rowdata[0]==2&&gReadMessages.indexOf(rowdata[4])<0){Ajax.get('/myaccount/readmessage?msgid='+rowdata[4],function(){});gReadMessages.push(rowdata[4]);}}
else
DOM.hide($('messagedetails'));}
function init(){if(arguments.callee.done)
return;arguments.callee.done=true;var parts=window.location.pathname.split('\/');pagename=parts[parts.length-1];var fm=($('loginform'))
if(fm&&!fm.jquery){loggingform=new Form("login","/myaccount/login",null,$('loginsubmitstatus'));loggingform.submitted=loginsubmitted;if(!Cookie.enabled())
DOM.setTxt($("loginsubmitstatus"),"Please enable cookies to login to the site");}
if(pagename=='mileagereport.html'||pagename=='stopsreport.html'||pagename=='auxreport.html'||pagename=='export.html'||pagename=='activityreport.html'||pagename=='incidentreport.html'||pagename=='rucreport.html'||pagename=='timebyplacereport.html'||pagename=='mileagebyplacereport.html'||pagename=='timeonsitereport.html'||pagename=='dailysummaryreport.html'||pagename=='messagingreport.html'){f=new Form("report",'/report/'+pagename.split('.')[0]);f.validate=validatereport;f.submitted=reportsubmitted;fillyears(f,'start');fillyears(f,'end');var d=new Date();filldate(f,'end',d);d.setDate(d.getDate()-7);filldate(f,'start',d);if(pagename=='rucreport.html')
f.set('mindist',1000);else if(pagename!='locationreport.html'&&pagename!='export.html'&&pagename!='auxreport.html'&&pagename!='incidentreport.html'&&pagename!='timeonsitereport.html')
f.set('mindist',10);if(pagename!='export.html'&&pagename!='incidentreport.html'&&pagename!='rucreport.html')
f.set('mintime',120);if(pagename=='timeonsitereport.html')
f.set('placetype','customer');f.selectall('units');f.set('skipblank',true);}
else if(pagename=='locationreport.html'||pagename=='schedulingreport.html'){f=new Form("report",'/report/'+pagename.split('.')[0]);f.validate=validatelocationreport;f.submitted=reportsubmitted;f.selectall('units');}
else if(pagename=='configure.html'){f=new Form("configuration","configure");f.validate=validateconfiguration;f.submitted=configurationsubmitted;for(var key in configdata){var val=configdata[key];if(key=='primary'||key=='secondary'){if(val=='0')
val='';else
val='0'+val;}
f.set(key,val,true);}
if(!supportpanic){f.element('Ppanic').disabled=true;f.element('Spanic').disabled=true;$('panicwarning').style.display='block';}}
else if(pagename=='details.html'){f=new Form("details","details");if(phonenumber)
phonenumber='0'+phonenumber;f.set("phonenumber",phonenumber);f.set("vehicletype",vehicletype);f.set("colour",colour);f.set("ptocolour",ptocolour);if(!editphonenumber){f.element("phonenumber").disabled=true;$('configlink').href="configure.html?id="+vehicleid;}
f.validate=validatedetails;f.submitted=configurationsubmitted;metrics=new FontMetrics({'font':'bold 12px verdana'});iconPreview=new VehicleMapIcon(false,0,0,name,Vehicle.typeImage.call({'vehicletype':vehicletype}),'stopped.png','Map Icon Preview',colour,false,ptocolour,false,function(){},function(){},metrics);DOM.addNodes(document.body,iconPreview);iconPreview.measure();iconPreview.layout();pos=DOM.getPos($("preview"));DOM.place(iconPreview,pos.x,pos.y-10);DOM.show(iconPreview);updateIcon=function(evt){iconPreview.updateState('stopped.png','Map Icon Preview',f.val('colour'));png.setsource(iconPreview.vehicle,Vehicle.typeImage.call({'vehicletype':f.val('vehicletype')}));DOM.setTxt(iconPreview.label,f.val('name'));iconPreview.measure();iconPreview.layout();};Event.observe(f.element('colour'),'change',window,updateIcon);Event.observe(f.element('vehicletype'),'change',window,updateIcon);Event.observe(f.element('name'),'change',window,updateIcon);Event.observe(f.element('name'),'keyup',window,updateIcon);if(f.element('wofdue')){wofcal=new InputCalendar(f.element('wofdue'),$('wofdue_calendar'));regocal=new InputCalendar(f.element('regodue'),$('regodue_calendar'));DOM.addNodes(document.body,wofcal,regocal);}}
else if(pagename=='editvehicles.html'){t=new Table("config",'/static/sort_asc.gif','/static/sort_desc.gif');for(var i=0;i<configdata.length;i++){var row=configdata[i];var phone=str(row[2]);if(phone)
phone='0'+phone;var type=row[4]||'Car';var tr=TR(null,TD(null,str(row[1])),TD(null,type),TD(null,phone),TD(null,A({'href':'details.html?id='+row[0]},'Edit'),' / ',A({'href':'configure.html?id='+row[0]},'Configure')),TD(null,row[3]?'Sending...':''));row=[row[1],type,phone,row[0],row[3]];t.addRow(row,tr);}
t.populate();t.linkHeaders();}
else if(pagename=='billing.html'){t=new Table('billing','/static/sort_asc.gif','/static/sort_desc.gif');for(var i=0;i<billingdata.length;i++){var row=billingdata[i];var url;if(row[4]=='Invoice')
url='viewinvoice.html?id='+row[1];else if(row[4]=='Payment')
url='viewpayment.html?id='+row[1];else if(row[4]=='Credit')
url='viewcredit.html?id='+row[1];else if(row[4]=='Refund')
url='viewrefund.html?id='+row[1];var tr=TR(null,TD(null,row[0]),TD(null,A({'href':url},row[4]+' '+row[1])),TD(null,row[2]),TD({'align':'right'},row[3].toFixed(2)));t.addRow(row,tr);}
t.populate();t.linkHeaders();}
else if(pagename=='editusers.html'){t=new Table("config",'/static/sort_asc.gif','/static/sort_desc.gif');var af=userdata[0];userdata=userdata[1];var permskey=$('permskey');for(var i=0;i<af.length;i++){var feat=af[i];if(feat[3]){t.headrow.appendChild(TH({'title':str(feat[2])},str(feat[1])));var tr=TR(null,TH(null,str(feat[1])),TD(null,str(feat[2])));permskey.appendChild(tr);}}
$('permissions').setAttribute('colspan',af.length);$('permissions').colSpan=af.length;for(var i=0;i<userdata.length;i++){var row=userdata[i];var tr=TR(null,TD(null,str(row[1])),TD(null,str(row[2])),TD(null,A({'href':'userdetails.html?id='+row[0]},'Edit'),' / ',A({'href':'userassign.html?id='+row[0]},'Assign')));var jsrow=[row[1],row[2],row[0]];for(var j=0;j<af.length;j++){if(af[j][3]){var checked=has(row[3],af[j][0]);tr.appendChild(checkcell(checked));jsrow.push(checked);}}
t.addRow(jsrow,tr);}
t.populate();t.linkHeaders();Event.observe($("new"),'click',window,function(evt){window.location="userdetails.html?id=new";});}
else if(pagename=='emailalerts.html'){f=new Form("configuration","setemailalerts");t=new Table('config','/static/sort_asc.gif','/static/sort_desc.gif');for(var i=0;i<placedata.length;i++){var row=placedata[i];var tr=TR(null,TD(null,str(row[1])),TD(null,str(row[3])),TD(null,A({'href':'placealert.html?id='+row[0]},'Edit')),TD(null,str(row[7])));tr.appendChild(checkcell(row[6]));var jsrow=[str(row[1]),str(row[3]),0,str(row[7]),row[6]];t.addRow(jsrow,tr);}
t.populate();t.sort();t.linkHeaders();f.submitted=function(data){if(data=='null'){window.location='/myaccount/';return;}
window.location.reload();};f.validate=function(parms){if(!parms['alertuser'])
parms['alertuser']='';if(parms['primary']&&!validemail(parms['primary'])){this.setError('primary');return null;}
if(parms['secondary']&&!validemail(parms['secondary'])){this.setError('secondary');return null};return parms;}}
else if(pagename=='placealert.html'){f=new Form("assign","placeassign");t=new Table("config",'/static/sort_asc.gif','/static/sort_desc.gif');var vehicledata=assigndata[0];var assigned=assigndata[1];var checks={};for(var i=0;i<vehicledata.length;i++){var row=vehicledata[i];var phone=str(row[2]);if(phone)
phone='0'+phone;var type=row[4]||'Car';var tr=TR(null,TD(null,str(row[1])),TD(null,type),TD(null,phone),DOM.style({'textAlign':'center'},TD(null,checks['v'+str(row[0])]=INPUT({'type':'checkbox','name':'v'+str(row[0])}))));row=[row[1],type,phone,row[0]];t.addRow(row,tr);}
t.populate();t.linkHeaders();f.validate=function(parms){parms['id']=placeid;return parms;};f.submitted=function(data){if(data=='null'){window.location='/myaccount/';return;}
if(eval(data))
window.location='emailalerts.html';else
DOM.setTxt($("submitstatus"),"");};for(var i=0;i<assigned.length;i++)
if(checks[assigned[i]])
checks[assigned[i]].checked=true;Event.observe($("selectall"),'click',window,function(evt){for(var k in checks)
checks[k].checked=true;Event.stop(evt);return false;});Event.observe($("clearall"),'click',window,function(evt){for(var k in checks)
checks[k].checked=false;Event.stop(evt);return false;});}
else if(pagename=='userdetails.html'){f=new Form("configuration","saveuser");f.validate=function(parms){parms['id']=gUserId;if(parms['email']=='')
DOM.setTxt($("submitstatus"),"Error: new user must have an email address");else if(!(parms['editusers']||parms['editplaces']||parms['viewplaces']||parms['ruc']||parms['emailalerts']||parms['map']||parms['report']||parms['billing']||parms['configure']||parms['passwd']||parms['editvehicles']))
DOM.setTxt($("submitstatus"),"Error: user must have at least one permission turned on");else
return parms;};f.submitted=function(data){if(data=='null'){window.location='/myaccount/';return;}
if(eval(data))
window.location='editusers.html';else{if(gUserId=='new')
DOM.setTxt($("submitstatus"),"Error: email address in use");else
DOM.setTxt($("submitstatus"),"Error: unable to update user");}};Event.observe($("delete"),'click',window,function(evt){if(confirm("Are you sure you wish to delete this user?")){DOM.setTxt($("submitstatus"),"Deleting...");Ajax.get('deleteuser?id='+gUserId,function(data,status){if(status==200){data=eval(data);if(data===null)
window.location='/myaccount/';else if(data==true)
window.location='editusers.html';else
DOM.setTxt($("submitstatus"),'Error deleting user.');}
else
DOM.setTxt($("submitstatus"),'Error deleting user.');});}});Event.observe($("reset"),'click',window,function(evt){if(confirm("Are you sure you wish to reset this user's password?")){DOM.setTxt($("submitstatus"),"Resetting Password...");Ajax.get('resetpass?id='+gUserId,function(data,status){if(status==200){data=eval(data);if(data===null)
window.location='/myaccount/';else if(data==true)
window.location='editusers.html';else
DOM.setTxt($("submitstatus"),'Error resetting password.');}
else
DOM.setTxt($("submitstatus"),'Error resetting password.');});}});if(gUserId==thisuser||gUserId=='new'){$("delete").style.display='none';$("reset").style.display='none';}}
else if(pagename=='userassign.html'){f=new Form("assign","assign");t=new Table("config",'/static/sort_asc.gif','/static/sort_desc.gif');var vehicledata=assigndata[0];var assigned=assigndata[1];var checks={};for(var i=0;i<vehicledata.length;i++){var row=vehicledata[i];var phone=str(row[2]);if(phone)
phone='0'+phone;var type=row[4]||'Car';var tr=TR(null,TD(null,str(row[1])),TD(null,type),TD(null,phone),DOM.style({'textAlign':'center'},TD(null,checks['v'+str(row[0])]=INPUT({'type':'checkbox','name':'v'+str(row[0])}))));row=[row[1],type,phone,row[0]];t.addRow(row,tr);}
t.populate();t.linkHeaders();f.validate=function(parms){parms['id']=userid;return parms;};f.submitted=function(data){if(data=='null'){window.location='/myaccount/';return;}
if(eval(data))
window.location='editusers.html';else
DOM.setTxt($("submitstatus"),"");};for(var i=0;i<assigned.length;i++)
if(checks[assigned[i]])
checks[assigned[i]].checked=true;Event.observe($("selectall"),'click',window,function(evt){for(var k in checks)
checks[k].checked=true;Event.stop(evt);return false;});Event.observe($("clearall"),'click',window,function(evt){for(var k in checks)
checks[k].checked=false;Event.stop(evt);return false;});}
else if(pagename=='contactus.html'||pagename=='support.html'){f=new Form("contactus","/myaccount/contact",null,$('submitstatus'));f.submitted=contactsubmitted;f.validate=contactvalidate;}
else if(pagename=='feedback.html'){f=new Form("feedback","/myaccount/contact");f.submitted=contactsubmitted;f.validate=feedbackvalidate;}
else if(pagename=='changepasswd.html'){f=new Form("changepassword","changepassword");f.submitted=passwordsubmitted;f.validate=passwordvalidate;}
else if(pagename=='forgotpassword.html'){f=new Form("forgotpassword","/myaccount/forgotpassword");f.submitted=function(data){if(eval(data)){window.location='/passwordsent.html';}
else
DOM.setTxt($("submitstatus"),'Invalid username');};}
else if(pagename=='setpassword.html'){f=new Form("changepassword","changepassword");f.submitted=function(data){if(data=='null'||eval(data))
window.location='/myaccount/';else
DOM.setTxt($("submitstatus"),'Error setting password');};f.validate=passwordvalidate;}
else if(pagename=='badpassword.html'){f=new Form("badpasslogin","/myaccount/login",null,$('badpasssubmitstatus'));f.submitted=loginsubmitted;if(!Cookie.enabled())
DOM.setTxt($("badpasssubmitstatus"),"Please enable cookies to login to the site");}
else if(pagename=='accountsettings.html'){f=new Form("accountsettings","accountsettings","/myaccount/",$('submitstatus'));function fmtTime(stringTime){time=stringTime.split(':');hours=parseFloat(time[0]);mins=parseFloat(time[1]);meridian='AM'
if(hours>12){hours-=12
meridian='PM'}
return[hours,mins,meridian];}
startTime=fmtTime(gStartTime);endTime=fmtTime(gEndTime);f.set('starthour',startTime[0]);f.set('startmins',startTime[1]);f.set('startAM',startTime[2]);f.set('endhour',endTime[0]);f.set('endmins',endTime[1]);f.set('endAM',endTime[2]);f.validate=accountvalidate;f.submitted=function(data){if(data=='null'||eval(data))
window.location='/myaccount/';else
DOM.setTxt($("submitstatus"),'Error changing settings');};Event.observe($('regenhash'),'click',this,function(evt){if($('hash').innerHTML=='')
conf=true;else
conf=confirm('Anybody using your current account key will need to be reissued the new key');if(conf){Ajax.get('generatekey',function(data,status){data=eval(data);if(status==200){$('hash').innerHTML=data;$('regenhash').value='Regenerate';}
else
DOM.setTxt($('submitstatus'),'Arse');});}});}
else if(pagename==''){var content=$("notice_inner");function initMessages(){if(gNotices.length>0){if(gNotices.length==1){DOM.hide($("controldiv"));}
if(gNotice>=gNotices.length)
gNotice=gNotices.length-1;$("notice_inner").innerHTML=gNotices[gNotice].notice;DOM.setTxt($("counter"),gNotice+1+' of '+gNotices.length);}}
initMessages(content);if(gNotices.length>0){Event.observe($("dismiss"),'click',window,function(evt){Ajax.get('dismissnotice?noticeid='+gNotices[gNotice].id,function(data,status){if(status==200){if(gNotices.length>1){gNotices.splice(gNotice,1);initMessages();}
else
DOM.hide($('notice_outer'));}})});Event.observe($("move_left"),'click',window,function(evt){if(gNotice==0)
gNotice=gNotices.length-1;else
gNotice-=1;initMessages();});Event.observe($("move_right"),'click',window,function(evt){if(gNotice>=gNotices.length-1)
gNotice=0;else
gNotice+=1;initMessages();});}}
else if(pagename=='messaging.html'){var messageColumns=[['','',20,cellInboundMessage],['Time','in',110,cellFmtTime],['Vehicle','in',127],['Message','in',380]];function msgPoll(){Ajax.get('getmessages?tag='+gTag,function(data,status){if(status==200){info=eval(data);gTag=info.shift();for(var i=0;i<info.length;i++){if(info[i][4]in gMessages)
t.model.raw[gMessages[info[i][4]]][6]=info[i][6];else{gMessages[info[i][4]]=t.model.raw.length;t.model.raw.push(info[i]);}
t.model.doFilter();t.model.sort(t.sortBy,t.ascending);t.render();}
DOM.hide(t.imgWorking,true);}});}
t=new LiveGrid($('messagetable'),messageColumns,10,msgRead,msgPoll,displayMsg);f=new Form("compose",'/myaccount/sendmessage',null,$('submitstatus'));DOM.hide($('messagedetails'));DOM.hide($('compose'));function toggleCompose(){if(gCompose){DOM.hide($('compose'));DOM.show($('view'));DOM.setTxt($('toggle'),'Compose');gCompose=false;}
else{DOM.hide($('view'));DOM.show($('compose'));DOM.setTxt($('toggle'),'Read');gCompose=true;}}
function onchange(){if($('body').value.length>0){$('send').disabled=false;if($('body').value.length>=199){$('body').value=$('body').value.substring(0,199);DOM.setTxt($('submitstatus'),'Freeform messages limited to 199 characters');}
else
DOM.setTxt($('submitstatus'),'');}
else
$('send').disabled=true;}
Ajax.get('getmessages',function(data,status){info=eval(data);gTag=info.shift();for(var i=0;i<info.length;i++)
gMessages[info[i][4]]=i;t.populate(info);});f.validate=function(parms){if(parms['units'].length<1){this.setError('units');DOM.setTxt($('submitstatus'),'Please select at least 1 vehicle');return null;}
return parms;}
t.sort(1,false);t.reload=msgPoll;t.filter(function(row){if(row[0]==2&&!$('RECEIVED').checked)
return false;if((row[0]==0||row[0]==1)&&!$('SENT').checked)
return false;return true;});f.submitted=function(data){if(data=='null'||eval(data))
window.location.reload()
else
DOM.setTxt($("submitstatus"),'Error sending message');};window.setInterval(msgPoll,15000);Event.observe($('body'),'keyup',window,onchange);Event.observe($('body'),'click',window,onchange);Event.observe($('toggle'),'click',window,toggleCompose);Event.observe($('cancel'),'click',window,toggleCompose);Event.observe($('SENT'),'change',window,function(evt){t.update();});Event.observe($('RECEIVED'),'change',window,function(evt){t.update();});}}
window.onload=init;
