
var apiUrl="/api_0_3";function RESTPost(tree,options){var good=true;var statusId=options.status;var opts={async:true,cache:false,queryParams:"",forceQueryParameters:false,error:function(resp){good=false;$("#"+statusId).html(resp.responseText);},type:"POST",contentType:"application/xml; charset=utf-8",dataType:"xml"};$.extend(opts,options);$('#'+statusId).html("");if(opts.type=="POST"&&!opts.forceQueryParameters){var root={};if(typeof opts.rootName!="undefined")
root[opts.rootName]=tree;else
root=tree;var writer=new XML.ObjTree();opts.data=writer.writeXML(root);}else{var delim=opts.queryParams.length==0?"?":"&";$.each(tree,function(i,val){opts.queryParams+=delim+escape(i)+"="+escape(val);delim="&";});delete opts.data;}
if(typeof options.verb!="undefined")
opts.url+="/"+opts.verb;opts.url+=opts.queryParams;opts.obj=tree;options.xhr=$.ajax(opts);return good;}
function parseDate(str){var datetime=str.split("T");var date=datetime[0];var date3=date.split("-");var time=datetime[1].substring(0,8);var time3=time.split(":");return new Date(date3[0],date3[1]-1,date3[2],time3[0],time3[1],time3[2]);}
var oneSecond=1000;var oneMinute=60*oneSecond;var oneHour=60*oneMinute;var oneDay=24*oneHour;function unitsAgo(date,unit){var now=new Date();var iDate=date.getTime();var iNow=now.getTime();return Math.floor((iNow-iDate)/unit);}
function shortDate(date){return""+(date.getMonth()+1)+"/"+date.getDate();}
function fullDate(date){return""+(date.getMonth()+1)+"/"+date.getDate()+"/"
+date.getFullYear();}
function fullTime(date){var ampm;var hours=date.getHours();if(hours==0){hours=12;ampm="AM";}else if(hours<12){ampm="AM";}else if(hours==12){ampm="PM";}else{hours=hours-12;ampm="PM";}
var minutes=date.getMinutes();if(minutes<10){minutes="0"+minutes;}
var seconds=date.getSeconds();if(seconds<10){seconds="0"+seconds;}
var result=""+hours+":"+minutes+":"+seconds+" "+ampm;return result;}
function fullTimestamp(date){return fullDate(date)+" "+fullTime(date);}
function undefToBlank(val){return typeof val=='undefined'?'':val;}
function toBool(val){return val=='false'?false:!!val;}
function trimToLength(val,len){val=undefToBlank(val);if(val.length>len)
return(val.substring(0,len-3)+"...");return val;}
function clone(myObj){if(typeof(myObj)!='object')
return myObj;if(myObj==null)
return myObj;var myNewObj=myObj.constructor==Object?{}:[];for(var i in myObj)
myNewObj[i]=clone(myObj[i]);return myNewObj;}
function parseLastToken(value,delim){var obj={}
var index=value.lastIndexOf(delim);if(index!=-1){obj.token=$.trim(value.substring(index+1));obj.remainder=$.trim(value.substring(0,index));}else{obj.token=$.trim(value);}
return obj;}
function parseFirstToken(value,delim){var obj={}
var index=value.indexOf(delim);if(index!=-1){obj.remainder=$.trim(value.substring(index+1));obj.token=$.trim(value.substring(0,index));}else{obj.token=$.trim(value);}
return obj;}
function clearTextSelection(){if(document.selection&&document.selection.empty){document.selection.empty();}else if(window.getSelection){var sel=window.getSelection();if(sel&&sel.removeAllRanges)
sel.removeAllRanges();}}
function convertToHTML(text){return text.replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/\n/g,'<br>').replace(/&/g,'&amp;');}
