Advertisement
Guest User

Untitled

a guest
Aug 20th, 2018
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. var Base=function(){if(arguments.length){if(this==window){Base.prototype.extend.call(arguments[0],arguments.callee.prototype);}else{this.extend(arguments[0]);}}};Base.version="1.0.2";Base.prototype={extend:function(source,value){var extend=Base.prototype.extend;if(arguments.length==2){var ancestor=this[source];if((ancestor instanceof Function)&&(value instanceof Function)&&ancestor.valueOf()!=value.valueOf()&&/\bbase\b/.test(value)){var method=value;value=function(){var previous=this.base;this.base=ancestor;var returnValue=method.apply(this,arguments);this.base=previous;return returnValue;};value.valueOf=function(){return method;};value.toString=function(){return String(method);};}
  3. return this[source]=value;}else if(source){var _prototype={toSource:null};var _protected=["toString","valueOf"];if(Base._prototyping)_protected[2]="constructor";for(var i=0;(name=_protected[i]);i++){if(source[name]!=_prototype[name]){extend.call(this,name,source[name]);}}
  4. for(var name in source){if(!_prototype[name]){extend.call(this,name,source[name]);}}}
  5. return this;},base:function(){}};Base.extend=function(_instance,_static){var extend=Base.prototype.extend;if(!_instance)_instance={};Base._prototyping=true;var _prototype=new this;extend.call(_prototype,_instance);var constructor=_prototype.constructor;_prototype.constructor=this;delete Base._prototyping;var klass=function(){if(!Base._prototyping)constructor.apply(this,arguments);this.constructor=klass;};klass.prototype=_prototype;klass.extend=this.extend;klass.implement=this.implement;klass.toString=function(){return String(constructor);};extend.call(klass,_static);var object=constructor?klass:_prototype;if(object.init instanceof Function)object.init();return object;};Base.implement=function(_interface){if(_interface instanceof Function)_interface=_interface.prototype;this.prototype.extend(_interface);};var WebAjax=Base.extend({constructor:null,rjsparams:{},next_rjsparam:1,to_list:function(object){var val=this.to_list_impl(object).value;if(!val||val=="")
  6. return val;return val.substring(1,val.length-1);},get_jscript_base_url:function(jscript_tag){var col=document.getElementsByTagName("script");if(!col)
  7. return"";for(var i=0;i<col.length;i++){if(col[i].src.match(jscript_tag))
  8. return this.get_host(col[i].src);}
  9. return"";},get_host:function(url){var spos=-1;if(url.slice(0,4)!="http")
  10. url=window.location.href;for(var j=0;j<3;j++){spos=url.indexOf("/",spos+1);if(spos==-1)
  11. return"";}
  12. return url.slice(0,spos);},exec_service:function(url,parameters,callback,timeout){if(!timeout||null===timeout)
  13. timeout=60000;if(parameters){if(typeof parameters!="string")
  14. parameters=WebAjax.serialize_params(parameters);}else
  15. parameters="";if(this.get_host(window.location.href)!=this.get_host(url)){var rjsparam=this.next_rjsparam++;var script;var ontimeout=function(){log_text("RJS timeout");if(typeof WebAjax.rjsparams[rjsparam]=="undefined")
  16. return;if(WebAjax.rjsparams[rjsparam].ival){clearTimeout(WebAjax.rjsparams[rjsparam].ival);WebAjax.rjsparams[rjsparam].ival=null;}
  17. if(!WebAjax.rjsparams[rjsparam].completed){WebAjax.rjsparams[rjsparam].completed=true;WebAjax.rjsparams[rjsparam].callback(false,"error");}
  18. delete WebAjax.rjsparams[rjsparam];};var obj=new Object;obj.completed=false;obj.callback=callback;obj.ival=setTimeout(ontimeout,timeout);this.rjsparams[rjsparam]=obj;script=document.createElement("script");script.type="text/javascript";script.src=url+"?"+"rjsfunc=WebAjax.handle_remote_result&rjsparam="+rjsparam+(parameters!=""?("&"+parameters):"")+"&rjscookie="+Math.floor(Math.random()*100000);var head=document.getElementsByTagName("head")[0];var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;try{head.removeChild(script);}catch(err){log_text(err);}
  19. if(typeof WebAjax.rjsparams[rjsparam]!="undefined")
  20. delete WebAjax.rjsparams[rjsparam];}};head.appendChild(script);return 1;}
  21. var xml;var requestDone=false;try{xml=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("MSXML.XMLHTTP");xml.open("post",url,true);}catch(err){log_text(err);if(xml)
  22. delete xml;return false;}
  23. xml.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xml.setRequestHeader("X-Requested-With","XMLHttpRequest");var ival=null;var onreadystatechange=function(isTimeout){if(typeof WebAjax=="undefined")
  24. return;if(xml&&(xml.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearTimeout(ival);ival=null;}
  25. var status;try{status=WebAjax.http_success(xml)&&isTimeout!="timeout"?"success":"error";if(status!="error"){var params="";var result=xml.responseText||"";var reply=result.slice(0,2);if(reply=="OK")
  26. WebAjax.callback(callback,true,result.slice(2));else{if(result.slice(0,5)=="ERROR"){var text=result.slice(5);if(text=="No Session"){var sid_from=document.cookie.indexOf("sid=");if(sid_from!=-1){var sid_to=document.cookie.indexOf(";",sid_from);if(sid_to==-1)
  27. sid_to=document.cookie.length;document.cookie=document.cookie.substr(0,sid_from)+document.cookie.substr(sid_to+1,document.cookie.length-sid_to);}
  28. var href=window.location.href.split("?");href=href[0]+"?d="+(new Date).getTime();setInterval(function(){window.location.href=href;},5000);return;}
  29. WebAjax.callback(callback,false,text);}else
  30. WebAjax.callback(callback,false,result);}}else
  31. WebAjax.callback(callback,false,"error");}catch(e){if(typeof WebAjax=="undefined")
  32. return;WebAjax.callback(callback,false,"error");if(typeof log_text!="undefined")
  33. log_text(sprintf("ajax error: %s",e));}
  34. xml=null;}};xml.onreadystatechange=onreadystatechange;ival=setTimeout(function(){if(xml){log_text("AJAX timeout");xml.abort();if(!requestDone)
  35. onreadystatechange("timeout");xml=null;}},timeout);try{xml.send(parameters);}catch(e){log_text(sprintf("ajax send error: %s",e));onreadystatechange("timeout");}
  36. return true;},callback:function(callback,result,text)
  37. {setTimeout(function(){callback(result,text);},1);},http_success:function(r){if(!r)
  38. return false;try{return!r.status||(r.status>=200&&r.status<300)||r.status==undefined;}catch(e){}
  39. return false;},serialize_params:function(a){var s=[];for(var j in a)
  40. s.push(encodeURIComponent(j)+"="+encodeURIComponent(a[j]));return s.join("&");},to_list_impl:function(object){var type=typeof object;switch(type){case'undefined':case'function':case'unknown':return;case'number':case'boolean':return{type:"",value:object.toString()};case'string':return{type:"",value:this.prop_to_list(object)};}
  41. if(object===null)return{type:"obj_",value:"null"};var results=[];if(object.length!=null){var arr_type="arr_";for(var i=0;i<object.length;i++){var value=this.to_list_impl(object[i]);if(value!==undefined){if(value.type!="")
  42. arr_type="objarr_";results.push(value.value);}}
  43. return{type:arr_type,value:"{"+results.join(" ")+"}"};}
  44. for(var property in object){var value=this.to_list_impl(object[property]);if(value!=undefined){results.push(value.type+property+" "+value.value);}}
  45. return{type:"obj_",value:"{"+results.join(" ")+"}"};},prop_to_list:function(object){if(object==""||object.indexOf(" ")!=-1||object.indexOf("\t")!=-1||object.indexOf("\r")!=-1||object.indexOf("\n")!=-1||object.indexOf("{")!=-1||object.indexOf("}")!=-1)
  46. return"{"+object+"}";return object;},handle_remote_result:function(rjsparam,result){rjsparam=parseInt(rjsparam);if(typeof WebAjax.rjsparams[rjsparam]=="undefined")
  47. return;if(WebAjax.rjsparams[rjsparam].completed)
  48. return;WebAjax.rjsparams[rjsparam].completed=true;if(WebAjax.rjsparams[rjsparam].ival){clearInterval(WebAjax.rjsparams[rjsparam].ival);WebAjax.rjsparams[rjsparam].ival=null;}
  49. var params="";var reply=result.slice(0,2);if(reply=="OK")
  50. WebAjax.rjsparams[rjsparam].callback(true,result.slice(2));else{if(result.slice(0,5)=="ERROR")
  51. WebAjax.rjsparams[rjsparam].callback(false,result.slice(5));else
  52. WebAjax.rjsparams[rjsparam].callback(false,result);}
  53. delete WebAjax.rjsparams[rjsparam];}});function check_time(i){if(i<10)
  54. i="0"+i;return i;}
  55. function format_time(abs_val,allow_short){if(!abs_val)
  56. return"";if(typeof allow_short=="undefined")
  57. allow_short=true;var d=new Date(abs_val*1000);var cd=new Date();var res=check_time(d.getUTCHours())+":"+check_time(d.getUTCMinutes())+":"+check_time(d.getUTCSeconds());if(allow_short&&cd.getUTCDate()==d.getUTCDate()&&cd.getUTCMonth()==d.getUTCMonth()&&cd.getUTCFullYear()==d.getUTCFullYear())
  58. return res;return d.getUTCFullYear()+"-"+check_time(d.getUTCMonth()+1)+"-"+check_time(d.getUTCDate())+" "+res;}
  59. function format_date(abs_val){if(!abs_val)
  60. return"";var d=new Date(abs_val*1000);return d.getFullYear()+"-"+check_time(d.getMonth()+1)+"-"+check_time(d.getDate());}
  61. function get_abs_time(year,month,day,hour,minute,second){var d=new Date(year,month-1,day,hour,minute,second,0);return parseInt(d.getTime()/1000);}
  62. function get_curr_abs_time(){var cd=new Date();return parseInt(cd.getTime()/1000);}
  63. function get_local_timezone(){var rightNow=new Date();var jan1=new Date(rightNow.getFullYear(),0,1,0,0,0,0);var june1=new Date(rightNow.getFullYear(),6,1,0,0,0,0);var temp=jan1.toGMTString();var jan2=new Date(temp.substring(0,temp.lastIndexOf(" ")-1));temp=june1.toGMTString();var june2=new Date(temp.substring(0,temp.lastIndexOf(" ")-1));var std_time_offset=((jan1-jan2)/(1000*60*60));var daylight_time_offset=((june1-june2)/(1000*60*60));var dst;if(std_time_offset==daylight_time_offset){dst="0";}else{var hemisphere=std_time_offset-daylight_time_offset;if(hemisphere>=0)
  64. std_time_offset=daylight_time_offset;dst="1";}
  65. return parseInt(std_time_offset*3600);}
  66. function parse_time(value)
  67. {var time=0;if(value=="")
  68. return-1;var pos=value.search(/:/);if(pos<1)
  69. return-1;var hour=Number(value.substr(0,pos));if(isNaN(hour)||hour<0||hour>23)
  70. return-1;time=hour*3600;value=value.substr(pos+1,value.length);pos=value.search(/:/);var minute=0;if(pos==-1)
  71. minute=Number(value);else
  72. minute=Number(value.substr(0,pos));if(isNaN(minute)||minute<0||minute>59)
  73. return-1;time=time+minute*60;value=value.substr(pos+1,value.length);pos=value.search(/:/);if(pos>=1){var second=Number(value.substr(0,pos));if(isNaN(second)||second<0||second>59)
  74. return-1;time=time+second;}
  75. return time;}
  76. function set_cookie(c_name,value,expiredays)
  77. {var exdate=new Date();exdate.setDate(exdate.getDate()+expiredays);document.cookie=c_name+"="+escape(value)+((expiredays==null)?"":";expires="+exdate.toGMTString());}
  78. function get_cookie(c_name)
  79. {if(document.cookie.length>0){c_start=document.cookie.indexOf(c_name+"=");if(c_start!=-1){c_start=c_start+c_name.length+1;c_end=document.cookie.indexOf(";",c_start);if(c_end==-1)
  80. c_end=document.cookie.length;return unescape(document.cookie.substring(c_start,c_end));}}
  81. return""}
  82. function is_valid_email(email)
  83. {return(/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i).test(email);}
  84. function log_text(txt){if(jQuery.browser.mozilla&&typeof console=='object'&&typeof console.log!='undefined'){var dt=new Date();var abs_time=get_abs_time(dt.getFullYear(),dt.getMonth()+1,dt.getDate(),dt.getHours(),dt.getMinutes(),dt.getSeconds());console.log("%d:%d:%d.%d: %s",dt.getHours(),dt.getMinutes(),dt.getSeconds(),dt.getMilliseconds(),txt);}}
  85. test=log_text;function atoi(s){var n=parseInt(s,10);if(isNaN(n)||!isFinite(n)||Math.abs(n)>0x7FFFFFFF)
  86. return 0;return n;}
  87. function atoui(s){var n=atoi(s);if(n<0)
  88. return-n;return n;}
  89. function atof(s){var x=parseFloat(s);if(isNaN(x)||!isFinite(x)||Math.abs(x)>1e+21)
  90. return 0.0;return x;}
  91. function atouf(s){var x=atof(s);if(x<0.0)
  92. return-x;return x;}
  93. function make_html(text){text=text.replace(/&lt;/g,"<");text=text.replace(/&gt;/g,">");return text;}
  94. function rgb_to_hex(value){return sprintf("#%06x",value);}
  95. function hex_to_rgb(value){var str=value.replace('#','');return parseInt(str,16);}
  96. function convert_km_to_m(km){return atouf(km)*1000;}
  97. function convert_m_to_km(m){return atouf(m)/1000;}
  98. function string_trim(s){var value=""+s;return value.replace(/^\s+|\s+$/g,"");}
  99. function create_valid_filename(s){var value=""+s;var regexp=/[\'\/\?\:\*\"\>\<\|\%\#\{\}\\]/i;return value.replace(regexp,"");}
  100. function is_valid_filename(s){var value=""+s;var regexp=/[\'\/\?\:\*\"\>\<\|\%\#\{\}\\]/i;return(value!=null&&typeof value==="string"&&(!value.length||!regexp.test(value)));}
  101. function is_valid_text(text){if(text==="null")
  102. return false;var value=""+text;var regexp=/([\"\{\}\\])/i;return(value!=null&&typeof value==="string"&&(!value.length||!regexp.test(value)));}
  103. function is_valid_name(name,params){var value=""+name;if(params==null)
  104. return(value!=null&&is_valid_text(value)&&value.length>0&&value[0]!=' '&&value[value.length-1]!=' ');var min=(params.min!=null?params.min:1);var max=(params.max!=null?params.max:4096);return(value!=null&&is_valid_text(value)&&value.length>=min&&value.length<=max&&value[0]!=' '&&value[value.length-1]!=' ');}
  105. function is_valid_code(code){var value=""+code;return(value!=null&&is_valid_text(value)&&value.length!=0);}
  106. function is_valid_descr(descr){var value=""+descr;return descr&&is_valid_text(value);}
  107. function is_valid_phone(phone){var value=""+phone;return(value!=null&&is_valid_text(value)&&(/^[+]{1,1}[\d]{7,16}$/i).test(value));}
  108. function is_valid_passwd(passwd){var value=""+passwd;return is_valid_text(value);}
  109. function is_valid_hostmask(hostmask){var value=""+hostmask;return is_valid_text(value);}
  110. function is_valid_host(host){var value=""+host;return is_valid_text(value);}
  111. function is_valid_unique_id(unique_id){var value=""+unique_id;return is_valid_text(value);}
  112. function is_valid_hw_type(hw_type){var value=""+hw_type;return is_valid_text(value);}
  113. function is_valid_table_cell(cell){var value=""+cell;var regexp=/([\;\,\:])/i;return(value!=null&&value.length>0&&is_valid_text(value)&&!regexp.test(value));}
  114. function is_valid_number(number){var value=""+number;return(value!=null&&is_valid_text(value)&&(/^[\+\-]{0,1}[\d]{1,}[\.]{0,1}[\d]{0,}$/i).test(value));}
  115. function is_valid_int(val,signed){signed=(signed==null?false:signed);var ok=is_valid_number(""+val)&&((val+"").indexOf(".")<0);var n=parseInt(""+val,10);if(!ok||isNaN(n)||!isFinite(n)||Math.abs(n)>0x7FFFFFFF||(signed==true?false:n<0))
  116. return false;return true;}
  117. function is_valid_float(val){var ok=is_valid_number(""+val);var x=parseFloat(""+val);if(!ok||isNaN(x)||!isFinite(x)||Math.abs(x)>1e+21)
  118. return false;return true;}
  119. var sprintfWrapper={init:function(){if(typeof arguments=="undefined"){return null;}
  120. if(arguments.length<1){return null;}
  121. if(typeof arguments[0]!="string"){return null;}
  122. if(typeof RegExp=="undefined"){return null;}
  123. var string=arguments[0];var exp=new RegExp(/(%([%]|(\-)?(\+|\x20)?(0)?(\d+)?(\.(\d)?)?([bcdfosxX])))/g);var matches=new Array();var strings=new Array();var convCount=0;var stringPosStart=0;var stringPosEnd=0;var matchPosEnd=0;var newString='';var match=null;while(match=exp.exec(string)){if(match[9]){convCount+=1;}
  124. stringPosStart=matchPosEnd;stringPosEnd=exp.lastIndex-match[0].length;strings[strings.length]=string.substring(stringPosStart,stringPosEnd);matchPosEnd=exp.lastIndex;matches[matches.length]={match:match[0],left:match[3]?true:false,sign:match[4]||'',pad:match[5]||' ',min:match[6]||0,precision:match[8],code:match[9]||'%',negative:parseFloat(arguments[convCount])<0?true:false,argument:String(arguments[convCount])};}
  125. strings[strings.length]=string.substring(matchPosEnd);if(matches.length==0){return string;}
  126. if((arguments.length-1)<convCount){return null;}
  127. var code=null;var match=null;var i=null;for(i=0;i<matches.length;i++){if(matches[i].code=='%'){substitution='%'}
  128. else if(matches[i].code=='b'){matches[i].argument=String(Math.abs(parseInt(matches[i].argument)).toString(2));substitution=sprintfWrapper.convert(matches[i],true);}
  129. else if(matches[i].code=='c'){matches[i].argument=String(String.fromCharCode(parseInt(Math.abs(parseInt(matches[i].argument)))));substitution=sprintfWrapper.convert(matches[i],true);}
  130. else if(matches[i].code=='d'){matches[i].argument=String(Math.abs(parseInt(matches[i].argument)));substitution=sprintfWrapper.convert(matches[i]);}
  131. else if(matches[i].code=='f'){matches[i].argument=String(Math.abs(parseFloat(matches[i].argument)).toFixed(matches[i].precision?matches[i].precision:6));substitution=sprintfWrapper.convert(matches[i]);}
  132. else if(matches[i].code=='o'){matches[i].argument=String(Math.abs(parseInt(matches[i].argument)).toString(8));substitution=sprintfWrapper.convert(matches[i]);}
  133. else if(matches[i].code=='s'){matches[i].argument=matches[i].argument.substring(0,matches[i].precision?matches[i].precision:matches[i].argument.length)
  134. substitution=sprintfWrapper.convert(matches[i],true);}
  135. else if(matches[i].code=='x'){matches[i].argument=String(Math.abs(parseInt(matches[i].argument)).toString(16));substitution=sprintfWrapper.convert(matches[i]);}
  136. else if(matches[i].code=='X'){matches[i].argument=String(Math.abs(parseInt(matches[i].argument)).toString(16));substitution=sprintfWrapper.convert(matches[i]).toUpperCase();}
  137. else{substitution=matches[i].match;}
  138. newString+=strings[i];newString+=substitution;}
  139. newString+=strings[i];return newString;},convert:function(match,nosign){if(nosign){match.sign='';}else{match.sign=match.negative?'-':match.sign;}
  140. var l=match.min-match.argument.length+1-match.sign.length;var pad=new Array(l<0?0:l).join(match.pad);if(!match.left){if(match.pad=="0"||nosign){return match.sign+pad+match.argument;}else{return pad+match.sign+match.argument;}}else{if(match.pad=="0"||nosign){return match.sign+match.argument+pad.replace(/0/g,' ');}else{return match.sign+match.argument+pad;}}}}
  141. sprintf=sprintfWrapper.init;var Wialon=Base.extend({constructor:null,items:{},item_guids:{},item_types:{},classes:{},user_id:0,curr_user:null,events_poll_interval:0,events_cookie:0,event_handlers:[],server_time:0,item_constructors:{},msg_constructors:{},params_constructors:{},item_plugins:{},get_current_user:function(){if(this.curr_user)
  142. return this.curr_user;return this.get_item(this.user_id);},get_server_time:function()
  143. {return this.server_time;},can_create_item:function(){var user=this.get_current_user();if(!user)
  144. return false;return user.can_create_item();},login:function(user,password,store_cookie,callback,cparam){if(this.user_id!=0)
  145. return false;return this.exec_service({svc:"login",user:user,password:password,store_cookie:store_cookie?1:0},function(result,reply){if(!result)
  146. callback(false,reply,cparam);else{Wialon.init_state(reply);callback(true,"",cparam);}});},logout:function(callback,cparam){if(this.user_id==0)
  147. return false;this.exec_service({svc:"logout"},function(result,text){callback(result,text,cparam);});this.reset();return true;},init_state:function(state_json){if(state_json=="")
  148. return false;this.reset();var state;eval("state = "+state_json);var res=Wialon.init_state_impl(state);delete state;return res;},init_state_remote:function(poll_interval,callback){return Wialon.exec_service({svc:"init_state",poll_interval:poll_interval},function(result,text){if(!result||text==""){callback(false);return;}
  149. var data;eval("data = "+text);Wialon.init_state_impl(data);delete data;callback(true);});},init_state_impl:function(state){if(typeof state!="object")
  150. return false;this.reset();this.user_id=state.uid;this.events_poll_interval=state.pi;this.events_cookie=state.eid;this.server_time=state.tm;for(cls in state.classes)
  151. this.classes[state.classes[cls]]=cls;for(var i=0;i<state.items.length;i++){var item=this.construct_item(state.items[i]);if(item){this.items[item.get_id()]=item;this.item_guids[item.get_guid()]=item;var icol=this.item_types[item.get_type()];if(typeof icol=="undefined"){this.item_types[item.get_type()]=new Array;icol=this.item_types[item.get_type()];}
  152. icol.push(item);}}
  153. this.curr_user=this.get_item(this.user_id);if(this.events_poll_interval&&this.events_cookie)
  154. window.self.setTimeout("Wialon.check_events();",10000);Wialon.fire_event("wialon_ready",0,null);return true;},fool_callback:function(result,text){},bind_event_handler:function(event_name,event_id,callback,cparam){if(event_name==null||event_id==null||callback==null)
  155. return false;var col1=this.event_handlers[event_name];if(typeof col1=='undefined'){col1=new Object;this.event_handlers[event_name]=col1;}
  156. var col2=col1[event_id];if(typeof col2=='undefined'){col2=new Array;col1[event_id]=col2;}
  157. var handler=new Object;handler.callback=callback;if(typeof cparam=="undefined")
  158. cparam="";handler.cparam=cparam;col2.push(handler);return true;},unbind_event_handler:function(event_name,event_id,callback,cparam){if(event_name==null||callback==null)
  159. return false;if(typeof cparam=="undefined")
  160. cparam="";var col1=this.event_handlers[event_name];if(typeof col1=='undefined')
  161. return false;var col2=col1[event_id];if(typeof col2=='undefined')
  162. return false;for(var i=0;i<col2.length;i++){var handler=col2[i];if(handler.callback==callback&&handler.cparam==cparam){col2.splice(i,1);return true;}}
  163. return false;},access_level:function(name){if(name=="none")
  164. return 0;else if(name=="view"||name=="any")
  165. return 0x1;else if(name=="exec_cmd")
  166. return 0x7;else if(name=="edit")
  167. return 0x000FFFFF;else if(name=="manage")
  168. return 0x7FFFFFFF;return 0;},access_name:function(level){switch(parseInt(level)){case 0:return"none";case 0x1:return"view";case 0x7:return"exec_cmd";case 0x000FFFFF:return"edit";case 0x7FFFFFFF:return"manage";}
  169. return"";},delete_items:function(col,callback,cparam){var dcol=new Array;var idcol=new Array;for(var i=0;i<col.length;i++){if(col[i].get_access_level()<Wialon.access_level("manage"))
  170. continue;dcol.push(col[i]);idcol.push(col[i].get_id());}
  171. if(!dcol.length)
  172. return false;return Wialon.exec_service({svc:"delete_items",items:WebAjax.to_list(idcol)},function(result,text){if(!result||text==""){var col=new Array;col.push(text);callback(false,col,cparam);return;}
  173. var data;eval("data = "+text);var arr=data.result;var col=new Array;for(var i=0;i<arr.length;i++){if(arr[i]!="")
  174. col.push(arr[i]);else
  175. Wialon.on_delete_item(idcol[i]);}
  176. delete data;callback(true,col,cparam);});},serialize_items:function(col,callback,cparam){var icol=new Array;for(var i=0;i<col.length;i++){if(col[i].get_access_level()<Wialon.access_level("edit")||col[i].modifications.length==0)
  177. continue;var item=new Object;item.id=col[i].get_id();item.mods=col[i].modifications;col[i].modifications=new Array;icol.push(item);}
  178. if(!icol.length)
  179. return false;return Wialon.exec_service({svc:"serialize_items",items:WebAjax.to_list(icol)},function(result,text){if(!result||text==""){var col=new Array;for(var i=0;i<icol.length;i++){for(var j=0;j<icol[i].mods.length;j++)
  180. icol[i].mods[j].revert();var res=new Object;res.id=icol[i].id;res.result=new Array;res.result.push(text);col.push(res);}
  181. callback(false,col,cparam);return;}
  182. var data;eval("data = "+text);var arr=data.result;var col=new Array;for(var i=0;i<arr.length;i++){var mods=icol[i].mods;var res=new Object;res.item=Wialon.get_item(icol[i].id);if(!res.item)
  183. continue;var rcol=new Array;if(typeof arr[i].error!="undefined"){for(var j=0;j<mods.length;j++)
  184. mods[j].revert();rcol.push(arr[i].error);}else{for(var j=0;j<arr[i].result.length;j++){if(arr[i].result[j]!=""){rcol.push(arr[i].result[j]);mods[j].revert();}}}
  185. res.result=rcol;col.push(res);}
  186. delete data;callback(true,col,cparam);});},get_item:function(id){var nan=parseInt(id,10);var item=(nan==NaN?'undefined':this.items[id]);if(typeof item!='undefined')
  187. return item;return this.get_item_by_guid(id);},get_item_by_guid:function(guid){var item=this.item_guids[guid];if(typeof item!='undefined')
  188. return item;return null;},reset:function(){this.items=new Object;this.item_guids=new Object;this.user_id=0;this.events_poll_interval=0;this.events_cookie=0;this.server_time=0;},exec_service:function(parameters,callback,timeout){var url=WebAjax.get_jscript_base_url("wialon_sdk=1")+"/webavl_sdk/wialon_service.html";if(parameters&&typeof parameters.svc!="undefined"&&url.split("?").length==1)
  189. url+="?svc="+parameters.svc;return WebAjax.exec_service(url,parameters,callback,timeout);},check_events:function(){if(!this.events_poll_interval||!this.events_cookie||!this.user_id)
  190. return true;var url=WebAjax.get_jscript_base_url("wialon_sdk=1")+"/avl_events";return WebAjax.exec_service(url,{sid:this.events_cookie},Wialon.events_callback);},events_callback:function(result,text){if(result&&text!=""&&Wialon.user_id){try{var event_json;eval("event_json = "+text);var events=event_json.events;Wialon.server_time=event_json.tm;delete event_json;for(var i=0;i<events.length;i++){var evt_data=events[i];var evt={};if(evt_data.t=="c")
  191. evt.type="create";else if(evt_data.t=="d")
  192. evt.type="delete";else if(evt_data.t=="u")
  193. evt.type="update";else if(evt_data.t=="m")
  194. evt.type="msg_update";if(typeof evt_data.d!="undefined")
  195. evt.data=evt_data.d;var item=Wialon.get_item(evt_data.i);if(item!=null){item.handle_event(evt);continue;}else if(evt.type=="create"){item=Wialon.construct_item(evt.data);if(item&&item.get_guid()!=""&&typeof Wialon.items[item.get_id()]=="undefined")
  196. Wialon.on_item_created(item);}
  197. continue;}}catch(err){log_text(sprintf("wialon events poll error: %s. %s",err,text));}
  198. Wialon.fire_event("wialon_events_poll",0,null);}else{if(text!=""){if(text!="error"){Wialon.events_poll_interval=0;}}}
  199. if(!Wialon.events_poll_interval||!Wialon.user_id)
  200. return;window.self.setTimeout("Wialon.check_events();",Wialon.events_poll_interval*1000);},fire_event:function(event_name,event_id,data){try{var col1=this.event_handlers[event_name];if(typeof col1!='undefined'){var col2=col1[event_id];if(typeof col2!='undefined'){for(var i=0;i<col2.length;i++){var handler=col2[i];handler.callback(event_name,event_id,data,handler.cparam);}}
  201. col2=col1[0];if(typeof col2!='undefined'&&event_id!=0){for(var i=0;i<col2.length;i++){var handler=col2[i];handler.callback(event_name,event_id,data,handler.cparam);}}}
  202. var col1=this.event_handlers[""];if(typeof col1!='undefined'){var col2=col1[event_id];if(typeof col2!='undefined'){for(var i=0;i<col2.length;i++){var handler=col2[i];handler.callback(event_name,event_id,data,handler.cparam);}}
  203. col2=col1[0];if(typeof col2!='undefined'&&event_id!=0){for(var i=0;i<col2.length;i++){var handler=col2[i];handler.callback(event_name,event_id,data,handler.cparam);}}}}catch(err){log_text(sprintf("wialon event[%s,%s] error: %s",event_name,event_id,err));}},get_items:function(item_type){if(typeof item_type=="undefined"||item_type==""){var col=new Array;for(var id in this.items)
  204. col.push(this.items[id]);return col;}else{var icol=this.item_types[item_type];if(typeof icol!="undefined")
  205. return icol;}
  206. return new Array;},filter_own_items:function(col){var ret_col=new Array;var user=this.get_current_user();for(var i=0;i<col.length;i++){var item=col[i];if(item.creator==user.id)
  207. ret_col.push(item);}
  208. return ret_col;},filter_items:function(col,acces_name){var ret_col=new Array;var user=this.get_current_user();var lvl=this.access_level(acces_name);for(var i=0;i<col.length;i++){var item=col[i];if(item.get_access_level()>=lvl)
  209. ret_col.push(item);}
  210. return ret_col;},sort_items:function(col,sort_items_func){if(!col)
  211. return null;return col.sort(typeof sort_items_func=="function"?sort_items_func:Wialon.sort_items_func);},sort_items_func:function(a,b){var alphanum=function(a,b){var chunkify=function(str){return str.match(/\d+|\D+/g);}
  212. var aa=chunkify(a.toLowerCase());var bb=chunkify(b.toLowerCase());if(!aa||!bb||!aa.length||!bb.length){if(!aa||!aa.length)
  213. return-1;if(!bb||!bb.length)
  214. return 1;return 0;}
  215. for(x=0;aa[x]&&bb[x];x++){if(aa[x]!==bb[x]){var c=Number(aa[x]),d=Number(bb[x]);if(c==aa[x]&&d==bb[x])
  216. return c-d;else
  217. return(aa[x]>bb[x])?1:-1;}}
  218. return aa.length-bb.length;}
  219. return alphanum(a.name,b.name);},get_items_from_id_col:function(idcol){var col=new Array;for(var i=0;i<idcol.length;i++){var item=this.get_item(idcol[i]);if(item)
  220. col.push(item);}
  221. return col;},get_items_from_guid_col:function(idcol){var col=new Array;for(var i=0;i<idcol.length;i++){var item=this.get_item_by_guid(idcol[i]);if(item)
  222. col.push(item);}
  223. return col;},on_delete_item:function(item_id){if(!item_id)
  224. return;var item=this.items[item_id];if(typeof item!='undefined'){if(typeof this.item_guids[item.get_guid()]!='undefined')
  225. delete this.item_guids[item.get_guid()];delete this.items[item_id];var icol=this.item_types[item.get_type()];if(typeof icol!="undefined"){for(var i=0;i<icol.length;i++){if(icol[i].id==item_id){icol.splice(i,1);break;}}}
  226. Wialon.fire_event("item_deleted",item_id,item);}
  227. return;},construct_item:function(state){if(typeof state!="object"||typeof state.cls=="undefined"||typeof state.id=='undefined')
  228. return null;var cls=this.classes[state.cls];if(cls=="undefined")
  229. return null;state.cls=cls;var func=this.item_constructors[state.cls];if(typeof func=='undefined')
  230. return null;var pcol=new Object;var pls=this.item_plugins[state.cls];if(typeof pls!='undefined'){for(var tp in pls){var plugin=new pls[tp];if(plugin!=null)
  231. pcol[tp]=plugin;}}
  232. return new func(state,pcol);},construct_msg:function(json){if(typeof json!="object"||typeof json.tp!="string")
  233. return null;var func=this.msg_constructors[json.tp];if(typeof func!='undefined')
  234. return new func(json);return null;},construct_param_object:function(name,val){if(typeof val!="object"||typeof name!="string")
  235. return val;var func=this.params_constructors[name];if(typeof func!='undefined')
  236. return func(val);return val;},add_item_constructor:function(cls,func){this.item_constructors[cls]=func;},add_item_plugin:function(cls,plugin_type,func){var pls=this.item_plugins[cls];if(typeof pls=='undefined'){pls=new Object;this.item_plugins[cls]=pls;}
  237. var chk=pls[plugin_type];if(typeof chk!='undefined')
  238. return;pls[plugin_type]=func;},add_msg_constructor:function(tp,func){this.msg_constructors[tp]=func;},add_params_constructor:function(nm,func){this.params_constructors[nm]=func;},on_item_created:function(item){if(!item)
  239. return;var pitem=this.get_item(item.get_id());if(pitem)
  240. return;this.items[item.get_id()]=item;this.item_guids[item.get_guid()]=item;var icol=this.item_types[item.get_type()];if(typeof icol=="undefined"){this.item_types[item.get_type()]=new Array;icol=this.item_types[item.get_type()];}
  241. icol.push(item);this.fire_event("item_created",item.get_id(),item);},set_user_access_for_item:function(item,user,access_level){if(!user||!item)
  242. return;user.set_id_access_level(item.get_id(),access_level);Wialon.set_user_access_for_item(item,user.get_user_creator(),access_level);}});var WialonMsg=Base.extend({constructor:function(state){this.init_state(state);},time:0,params:{},type:"",flags:0,get_type:function(){return this.type;},get_time:function(){return this.time;},get_flags:function(){return this.flags;},get_params:function(){return this.params;},get_param:function(name,def_val){if(null===this.params)
  243. return def_val;var val=this.params[name];if(typeof val!='undefined')
  244. return val;if(typeof def_val=='undefined')
  245. def_val="";return def_val;},init_state:function(state){this.time=state.t;this.params=state.p;this.type=state.tp;this.flags=state.f;return true;}});var WialonUnitMsg=WialonMsg.extend({constructor:function(state){this.init_state(state);},inputs:0,outputs:0,driver:"",get_inputs:function(){return this.inputs;},get_outputs:function(){return this.outputs;},get_driver_code:function(){return this.driver;},is_position:function(){return false;},init_state:function(state){this.base(state);if(typeof state.i!="undefined")
  246. this.inputs=state.i;if(typeof state.o!="undefined")
  247. this.outputs=state.o;if(typeof state.dr!="undefined")
  248. this.driver=state.dr;return true;}});var WialonUnitPosMsg=WialonUnitMsg.extend({constructor:function(state){this.init_state(state);},location:"",lat:0.0,lon:0.0,road_lat:0.0,road_lon:0.0,alt:0,course:0,speed:0,sat_count:0,get_location:function(){return this.location;},get_lat:function(){return this.lat;},get_lon:function(){return this.lon;},get_road_lat:function(){return this.road_lat?this.road_lat:this.lat;},get_road_lon:function(){return this.road_lon?this.road_lon:this.lon;},get_alt:function(){return this.alt;},get_speed:function(){return this.speed;},get_course:function(){return this.course;},get_sat_count:function(){return this.sat_count;},is_position:function(){return true;},init_state:function(state){this.base(state);this.lat=state.y;this.lon=state.x;this.road_lat=state.y2;this.road_lon=state.x2;this.alt=state.z;this.speed=state.s;this.course=state.c;this.location=state.l;this.sat_count=state.sc;return true;}});var WialonUnitCmdResMsg=WialonMsg.extend({constructor:function(state){this.init_state(state);},cmd_name:"",cmd_param:"",user_guid:"",link_name:"",link_type:"",exec_time:0,get_cmd_name:function(){return this.cmd_name;},get_cmd_param:function(){return this.cmd_param;},get_user:function(){return Wialon.get_item(this.user_guid);},get_link_name:function(){return this.link_name;},get_link_type:function(){return this.link_type;},get_exec_time:function(){return this.exec_time;},init_state:function(state){this.base(state);this.cmd_name=state.cn;this.cmd_param=state.cp;this.user_guid=state.ug;this.link_name=state.ln;this.link_type=state.lt;this.exec_time=state.et;return true;}});var WialonUnitSMSMsg=WialonMsg.extend({constructor:function(state){this.init_state(state);},sms_text:"",modem_phone:"",user_guid:"",link_name:"",link_type:"",exec_time:0,get_sms_text:function(){return this.sms_text;},get_modem_phone:function(){return this.modem_phone;},init_state:function(state){this.base(state);this.sms_text=state.st;this.modem_phone=state.mp;return true;}});var WialonUnitEventMsg=WialonMsg.extend({constructor:function(state){this.init_state(state);},text:"",lat:0.0,lon:0.0,get_event_text:function(){return this.sms_text;},get_lat:function(){return this.lat;},get_lon:function(){return this.lon;},init_state:function(state){this.base(state);this.text=state.et;this.lon=state.x;this.lat=state.y;return true;}});Wialon.add_msg_constructor("udp",WialonUnitPosMsg);Wialon.add_msg_constructor("ud",WialonUnitMsg);Wialon.add_msg_constructor("ucr",WialonUnitCmdResMsg);Wialon.add_msg_constructor("us",WialonUnitSMSMsg);Wialon.add_msg_constructor("evt",WialonUnitEventMsg);Wialon.add_msg_constructor("xx",WialonMsg);Wialon.add_params_constructor("msg",function(state){return new Wialon.construct_msg(state);});var WialonItemPlugin=Base.extend({id:0,item:null,get_type:function(){return"unknown";},init_state:function(state,item){if(!state)
  249. return;if(typeof state.id!="undefined")
  250. this.id=state.id;if(item)
  251. this.item=item;},populate_access_propogation_items:function(cset){},handle_event:function(evt){}});var WialonItem=Base.extend({constructor:function(state,plugins){this.plugins=plugins;this.init_state(state);},id:0,guid:"",name:"",public_props:{},private_props:{},superclass:"",plugins:[],creator:0,account:0,get_type:function(){return this.superclass;},get_plugin:function(plugin_type){var pl=this.plugins[plugin_type];if(typeof pl!='undefined'&&pl.get_type()==plugin_type)
  252. return pl;return null;},get_name:function(){return this.name;},get_id:function(){return this.id;},get_guid:function(){return this.guid;},get_user_creator:function(){return Wialon.get_item(this.creator);},get_account:function(){return Wialon.get_item(this.account);},get_access_level:function(){return this.get_user_access(Wialon.get_current_user(),true);},get_public_property:function(prop_name,default_value){return this.get_prop_by_name(this.public_props,prop_name,default_value);},get_private_property:function(prop_name,default_value){return this.get_prop_by_name(this.private_props,prop_name,default_value);},get_user_access:function(user,check_groups){if(user==null)
  253. return 0;var acc_col=new Array;var group_col=user.get_user_groups();acc_col.push(user);for(var i=0;i<group_col.length;i++)
  254. acc_col.push(group_col[i]);var ids=new Object;this.populate_access_propogation_items(ids);var lvl=0;for(var i=0;i<acc_col.length;i++){var acc=acc_col[i];for(var id in ids){var id_lvl=acc.get_id_access_level(id);if(id_lvl>lvl)
  255. lvl=id_lvl;}}
  256. return lvl;},set_public_property:function(prop_name,prop_value){return this.set_property_impl(prop_name,prop_value,this.public_props,"public");},set_private_property:function(prop_name,prop_value){return this.set_property_impl(prop_name,prop_value,this.private_props,"private");},set_name:function(new_name){if(typeof new_name!="string"||this.get_access_level()<Wialon.access_level("edit"))
  257. return false;if(this.get_name()==new_name)
  258. return true;this.remove_modification("item_set_name",null);var item=this;var old_value=this.name;this.add_modification("item_set_name",new_name,function(){item.name=old_value;});this.name=new_name;return true;},serialize:function(callback,cparam){var mods=this.modifications;this.modifications=new Array();var item=this;if(mods.length==0){callback(true,new Array,cparam);return true;}
  259. return Wialon.exec_service({svc:"serialize_item",item_id:this.id,mods:WebAjax.to_list(mods)},function(result,text){if(!result||text==""){for(var i=0;i<mods.length;i++)
  260. mods[i].revert();var col=new Array;col.push(text);callback(false,col,cparam);return;}
  261. var data;eval("data = "+text);var arr=data.result;var col=new Array;for(var i=0;i<arr.length;i++){if(arr[i]!=""){col.push(arr[i]);mods[i].revert();}}
  262. delete data;callback(true,col,cparam);});},delete_item:function(callback,cparam){if(this.get_access_level()<Wialon.access_level("manage"))
  263. return false;var item_id=this.get_id();return Wialon.exec_service({svc:"delete_"+this.get_type(),item_id:this.id},function(result,text){if(!result){callback(false,text,cparam);return;}
  264. Wialon.on_delete_item(item_id);callback(true,"",cparam);});},revert:function(){for(var i=0;i<this.modifications.length;i++)
  265. this.modifications[i].revert();this.modifications=new Array();return true;},get_prop_by_name:function(col,prop_name,default_value){if(typeof default_value=="undefined")
  266. default_value="";var pval=col[prop_name];if(typeof pval=="undefined")
  267. return default_value;return pval;},init_state:function(state){if(typeof this.modifications=="undefined")
  268. this.modifications=new Array;if(typeof state.id!="undefined")
  269. this.id=state.id;if(typeof state.gd!="undefined")
  270. this.guid=state.gd;if(typeof state.nm!="undefined")
  271. this.name=state.nm;if(typeof state.pup!="undefined")
  272. this.public_props=state.pup;if(typeof state.prp!="undefined")
  273. this.private_props=state.prp;if(typeof state.cls!="undefined")
  274. this.superclass=state.cls;if(typeof state.crt!="undefined")
  275. this.creator=state.crt;if(typeof state.bact!="undefined")
  276. this.account=state.bact;for(var i in this.plugins)
  277. this.plugins[i].init_state(state,this);return true;},populate_access_propogation_items:function(set){set[this.get_id()]=1;for(var i in this.plugins)
  278. this.plugins[i].populate_access_propogation_items(set);},handle_event:function(evt){if(evt.type=="update"){this.init_state(evt.data);Wialon.fire_event("item_updated",this.get_id(),evt.data);}else if(evt.type=="delete"){Wialon.on_delete_item(this.get_id());}else{for(var i in this.plugins)
  279. this.plugins[i].handle_event(evt);}},add_modification:function(mod_type,data,revert_func){this.modifications.push({type:mod_type,data:data,revert:revert_func});},remove_modification:function(type,func){for(var i=0;i<this.modifications.length;i++){var mod=this.modifications[i];if(mod.type==type&&(func==null||func(mod.data))){mod.revert();this.modifications.splice(i,1);break;}}},set_property_impl:function(prop_name,prop_value,col,prop_type){prop_value=prop_value.toString();if(typeof prop_name!="string"||this.get_access_level()<Wialon.access_level("edit"))
  280. return false;if(this.get_prop_by_name(col,prop_name)==prop_value)
  281. return true;this.remove_modification("item_set_property",function(data){if(data.type==prop_type&&data.name==prop_name)
  282. return true;return false;});var old_value=this.get_prop_by_name(col,prop_name);this.add_modification("item_set_property",{name:prop_name,value:prop_value,type:prop_type},function(){col[prop_name]=old_value;});col[prop_name]=prop_value;return true;},check_item_in_id_col:function(col,item_id){for(var i=0;i<col.length;i++){if(col[i]==item_id)
  283. return true;}
  284. return false;},add_item_to_id_col:function(mod_type,col,id){if(this.get_access_level()<Wialon.access_level("edit"))
  285. return false;if(this.check_item_in_id_col(col,id))
  286. return true;this.remove_modification(mod_type,function(data){if(data==id)
  287. return true;return false;});col.push(id);this.add_modification(mod_type,id,function(){for(var i=0;i<col.length;i++){if(col[i]==id){col.splice(i,1);return true;}}});return true;},remove_item_from_id_col:function(mod_type,col,id){if(this.get_access_level()<Wialon.access_level("edit"))
  288. return false;if(!this.check_item_in_id_col(col,id))
  289. return true;this.remove_modification(mod_type,function(data){if(data==id)
  290. return true;return false;});for(var i=0;i<col.length;i++){if(col[i]==id){col.splice(i,1);break;}}
  291. this.add_modification(mod_type,id,function(){col.push(id);});return true;}});Wialon.extend({get_avl_server:function(){var col=this.get_items("avl_server");if(!col||col.length!=1)
  292. return null;return col[0];}});Wialon.add_item_constructor("avl_server",WialonItem);var WialonParamsItem=Base.extend({constructor:function(params){if(typeof params=='object')
  293. this.params=param;else
  294. this.params={};},params:{},get_params:function(){return this.params;},get_param:function(name,def_val){var val=this.params[name];if(typeof val!='undefined'){if(typeof val!='object')
  295. return val;return Wialon.construct_param_object(name,val);}
  296. if(typeof def_val=='undefined')
  297. def_val="";return def_val;}});var WialonGeozonePoint=Base.extend({constructor:function(state){this.lat=state.y;this.lon=state.x;this.radius=state.r;},lat:0.0,lon:0.0,radius:0,get_lat:function(){return this.lat;},get_lon:function(){return this.lon;},get_radius:function(){return this.radius;}});var WialonControlPoint=Base.extend({constructor:function(state){if(state){this.arrive=state.at;this.arrive_offset=state.atd;this.departure=state.dt;this.departure_offset=state.dtd;this.name=state.n;}},arrive:0,arrive_offset:0,departure:0,departure_offset:0,name:"",get_name:function(){return this.name;},get_arrive_time:function(){return this.arrive;},get_arrive_time_deviation:function(){return this.arrive_offset;},get_departure_time:function(){return this.departure;},get_departure_time_deviation:function(){return this.departure_offset;}});var WialonGeozone=Base.extend({constructor:function(state){this.id=state.i;this.type=state.t;this.deviation=state.d;this.description=state.dr;this.name=state.n;this.area=state.ar;this.perimeter=state.pr;this.points=new Array;var tmp=state.p.split(",");for(var i=0;i<tmp.length;i+=3)
  298. this.points.push(new WialonGeozonePoint({y:parseFloat(tmp[i]),x:parseFloat(tmp[i+1]),r:parseInt(tmp[i+2])}));if(state.cp instanceof Array&&state.cp.length){this.control_points=new Array;for(var i=0;i<state.cp.length;i++)
  299. this.control_points.push(new WialonControlPoint(state.cp[i]));}},type:2,deviation:100,area:0,perimeter:0,name:"",description:"",points:[],id:0,get_type:function(){return this.type;},get_id:function(){return this.id;},get_deviation:function(){return this.deviation;},get_area:function(){return this.area;},get_perimeter:function(){return this.perimeter;},get_description:function(){return this.description;},get_name:function(){return this.name;},get_points:function(){return this.points;},get_control_points:function(){if(this.control_points instanceof Array)
  300. return this.control_points;return null;},get_control_point:function(index){if(this.control_points instanceof Array&&this.control_points.length>index)
  301. return this.control_points[index];return null;},copy:function(){var zone=new WialonGeozoneConstructor();zone.set_type(this.get_type());zone.set_deviation(this.get_deviation());zone.set_name(this.get_name());zone.set_description(this.get_description());zone.set_points(this.get_points());var cp=this.get_control_points();for(var i=0;cp&&i<cp.length;i++)
  302. zone.set_control_point(i,cp[i]);return zone;},point_in_zone:function(lon,lat){function distance_to_line(pnt1_lat,pnt1_lon,pnt2_lat,pnt2_lon,pnt_from_lat,pnt_from_lon,check_intersect){var res={};if(pnt1_lat==pnt2_lat&&pnt1_lon==pnt2_lon)
  303. return calc_distance(pnt1_lat,pnt1_lon,pnt_from_lat,pnt_from_lon);var lon_int=0;var lat_int=0;if(pnt1_lon!=pnt2_lon){var a=(pnt1_lat-pnt2_lat)/(pnt1_lon-pnt2_lon);var b=pnt1_lat-pnt1_lon*a;lon_int=(pnt_from_lon+a*pnt_from_lat-a*b)/(a*a+1.0);lat_int=lon_int*a+b;}else{var a=(pnt1_lon-pnt2_lon)/(pnt1_lat-pnt2_lat);var b=pnt1_lon-pnt1_lat*a;lat_int=(pnt_from_lat+a*pnt_from_lon-a*b)/(a*a+1.0);lon_int=lat_int*a+b;}
  304. if(!check_intersect)
  305. return calc_distance(lat_int,lon_int,pnt_from_lat,pnt_from_lon);if(lon_int<pnt1_lon&&lon_int<pnt2_lon||lon_int>pnt1_lon&&lon_int>pnt2_lon||lat_int<pnt1_lat&&lat_int<pnt2_lat||lat_int>pnt1_lat&&lat_int>pnt2_lat)
  306. return-1;else
  307. return calc_distance(lat_int,lon_int,pnt_from_lat,pnt_from_lon);}
  308. if(!this.points.length)
  309. return;var points=this.points;var pt_count=points.length;if(this.type==2){var xnew=0;var ynew=0;var xold=0;var yold=0;var x1=0;var y1=0;var x2=0;var y2=0;var inside=false;if(pt_count<3)
  310. return false;xold=points[pt_count-1].lon;yold=points[pt_count-1].lat;for(var i=0;i<pt_count;i++){xnew=points[i].lon;ynew=points[i].lat;if(xnew>xold){x1=xold;x2=xnew;y1=yold;y2=ynew;}else{x1=xnew;x2=xold;y1=ynew;y2=yold;}
  311. if((xnew<lon)==(lon<=xold)&&(lat-y1)*(x2-x1)<(y2-y1)*(lon-x1)){inside=!inside;}
  312. xold=xnew;yold=ynew;}
  313. return inside;}else if(this.type==1){var prev_lat=0;var prev_lon=0;for(var i=0;i<pt_count;i++){var range=calc_distance(points[i].lat,points[i].lon,lat,lon);if(points[i].radius&&range!=-1&&range<=points[i].radius)
  314. return true;if(this.deviation){if(range!=-1&&range<=this.deviation/2)
  315. return true;if(i>0){var range=distance_to_line(points[i].lat,points[i].lon,prev_lat,prev_lon,lat,lon,true);if(range!=-1&&range<=this.deviation/2)
  316. return true;}}
  317. prev_lat=points[i].lat;prev_lon=points[i].lon;}}else if(this.type==3){var p=points[0];range=calc_distance(p.lat,p.lon,lat,lon);if(range!=-1&&range<=p.radius)
  318. return true;}
  319. return false;},get_zone_descr_param:function(descr,attr){descr=descr.split(";");for(var i=0;i<descr.length;i++){var param=descr[i].split(":");if(param.length==2&&param[0]==attr)
  320. return param[1];}
  321. return 0;}});var WialonGeozoneConstructor=WialonGeozone.extend({constructor:function(base){this.points=new Array;if(typeof base=="object"&&base!=null){for(var i=0;i<base.points.length;i++)
  322. this.points.push(base.points[i]);this.id=base.id;this.name=base.name;this.type=base.type;this.deviation=base.deviation;this.description=base.description;if(base.control_points instanceof Array&&base.control_points.length){this.control_points=new Array;for(var i=0;i<base.control_points.length;i++)
  323. this.control_points.push(base.control_points[i]);}}else{this.id=0;this.name="";this.type=1;this.deviation=0;this.description="";}},set_type:function(type){if(type==1||type==2||type==3||type==5){this.type=type;return true;}
  324. return false;},set_deviation:function(val){this.deviation=val;return true;},set_name:function(val){this.name=val;return true;},set_description:function(val){this.description=val;return true;},insert_point:function(index,lat,lon,radius){if(typeof radius=='undefined')
  325. radius=0;var data={y:lat,x:lon,r:radius};if(index<0||index>=this.points.length){this.points.push(new WialonGeozonePoint(data));if(this.control_points instanceof Array)
  326. this.control_points.push(new WialonControlPoint(null));}else{this.points.splice(index,0,new WialonGeozonePoint(data));if(this.control_points instanceof Array)
  327. this.control_points.splice(index,0,new WialonControlPoint(null));}},delete_point:function(index){if(index>=this.points.length)
  328. return false;this.points.splice(index,1);if(this.control_points instanceof Array)
  329. this.control_points.splice(index,1);return true;},set_control_point:function(index,data){if(typeof data!='object'||index>=this.points.length)
  330. return;if(!(this.control_points instanceof Array)){this.control_points=new Array;for(var i=0;i<this.points.length;i++)
  331. this.control_points.push(new WialonControlPoint(null));}
  332. data.arrive=atoui(data.arrive);data.arrive_offset=atoui(data.arrive_offset);data.departure=atoui(data.departure);data.departure_offset=atoui(data.departure_offset);this.control_points[index]=data;},delete_control_point:function(index){if(!(this.control_points instanceof Array)||index>=this.points.length)
  333. return;this.control_points[index]=new WialonControlPoint(null);},delete_points:function(index){this.points=new Array;if(this.control_points instanceof Array){this.control_points=new Array;delete this.control_points;}},set_points:function(col){this.delete_points();for(var i=0;i<col.length;i++)
  334. this.points.push(col[i]);}});Wialon.add_params_constructor("geozone",function(state){return new WialonGeozone(state);});function create_polygons(points){if(!points||points.length<2)
  335. return null;var polygons=new Array;var x1,y1,x2,y2;for(var i=1;i<points.length;i++){var lb=rotate_vector(points[i-1],points[i],Math.PI/2);var rb=rotate_vector(points[i-1],points[i],-Math.PI/2);var lt=rotate_vector(points[i],points[i-1],-Math.PI/2);var rt=rotate_vector(points[i],points[i-1],Math.PI/2);polygons.push([lb,lt,rt,rb]);}
  336. return polygons;}
  337. function rotate_vector(pt1,pt2,a){var pt1=forward_mercator(pt1);var pt2=forward_mercator(pt2);var dx=pt2.x-pt1.x;var dy=pt2.y-pt1.y;var l=Math.sqrt(Math.pow(dx,2)+Math.pow(dy,2));var dxn=dx*Math.cos(a)-dy*Math.sin(a);var dyn=dx*Math.sin(a)+dy*Math.cos(a);return inverse_mercator({x:pt1.x+dxn*pt1.w/l,y:pt1.y+dyn*pt1.w/l});}
  338. function forward_mercator(pt){var x=pt.x*20037508.34/180;var y=Math.log(Math.tan((90+pt.y)*Math.PI/360))/(Math.PI/180);y=y*20037508.34/180;return{x:x,y:y,w:pt.w};}
  339. function inverse_mercator(pt){var x=(pt.x/20037508.34)*180;var y=(pt.y/20037508.34)*180;y=180/Math.PI*(2*Math.atan(Math.exp(y*Math.PI/180))-Math.PI/2);return{x:x,y:y,w:pt.w};}
  340. var SENSOR_DEPENDENCE_LOGICAL_AND=0x01;var SENSOR_DEPENDENCE_LOGICAL_OR=0x02;var SENSOR_DEPENDENCE_NON_ZERO=0x0B;var SENSOR_DEPENDENCE_MATH_AND=0x03;var SENSOR_DEPENDENCE_MATH_OR=0x04;var SENSOR_DEPENDENCE_SUMMARIZE=0x05;var SENSOR_DEPENDENCE_SUBTRUCT_VALIDATOR=0x06;var SENSOR_DEPENDENCE_SUBTRUCT_VALUE=0x07;var SENSOR_DEPENDENCE_MULTIPLY=0x08;var SENSOR_DEPENDENCE_DIVIDE_VALIDATOR=0x09;var SENSOR_DEPENDENCE_DIVIDE_VALUE=0x0A;function isalnum(aChar){return(isDigit(aChar)||isAlpha(aChar));}
  341. function isDigit(aChar){myCharCode=aChar.charCodeAt(0);if((myCharCode>47)&&(myCharCode<58))
  342. return true;return false;}
  343. function isAlpha(aChar){myCharCode=aChar.charCodeAt(0);if(((myCharCode>64)&&(myCharCode<91))||((myCharCode>96)&&(myCharCode<123)))
  344. return true;return false;}
  345. var WialonUnitSensorsPlugin=WialonItemPlugin.extend({sensors:{},sensor_limit:-1,get_type:function(){return"avl_unit_sensors";},init_state:function(state,item){this.base(state,item);if(typeof state.sens!="undefined"){this.sensors={};for(var id in state.sens)
  346. this.sensors[id]=new WialonUnitSensor(state.sens[id],id,item);}
  347. if(typeof state.sensmax!="undefined")
  348. this.sensor_limit=state.sensmax;if(typeof state.sensu!="undefined"&&state.sensu.length==2){var id=state.sensu[0];var udata=state.sensu[1];if(!udata){if(typeof this.sensors[id]!="undefined")
  349. delete this.sensors[id];}else
  350. this.sensors[id]=new WialonUnitSensor(udata,id,item);}},get_sensors:function(sens_type){var col=new Array;if(typeof sens_type=="undefined")
  351. sens_type="";for(var id in this.sensors){var sensor=this.sensors[id];if(sens_type==""||sens_type==sensor.get_type())
  352. col.push(sensor);}
  353. return col;},get_sensor:function(id){var n=this.sensors[id];if(typeof n!="undefined")
  354. return n;return null;},get_sensor_by_name:function(name){for(var id in this.sensors)
  355. if(this.sensors[id].get_name()==name)
  356. return this.sensors[id];return null;},get_sensors_limit:function(){return this.sensor_limit;},create_sensor:function(sensor,callback,cparam){if(!sensor||this.item.get_access_level()<Wialon.access_level("edit")||sensor.get_type()==""||sensor.get_name()==""||sensor.get_param_name()=="")
  357. return false;var item_plugin=this;return Wialon.exec_service({svc:"create_unit_sensor",item_id:this.item.get_id(),sensor_data:WebAjax.to_list(sensor)},function(result,text){if(!result){callback(0,text,cparam);return;}
  358. var sensor_id=parseInt(text);callback(sensor_id,"",cparam);});},update_sensor:function(sensor_id,sensor,callback,cparam){if(!sensor||this.item.get_access_level()<Wialon.access_level("edit")||sensor.get_type()==""||sensor.get_name()==""||sensor.get_param_name()==""||typeof this.sensors[sensor_id]=="undefined")
  359. return false;var item_plugin=this;return Wialon.exec_service({svc:"update_unit_sensor",item_id:this.item.get_id(),sensor_data:WebAjax.to_list(sensor),sensor_id:sensor_id},function(result,text){if(!result){callback(false,text,cparam);return;}
  360. callback(true,"",cparam);});},delete_sensor:function(sensor,callback,cparam){if(!sensor||this.item.get_access_level()<Wialon.access_level("edit"))
  361. return false;var item_plugin=this;return Wialon.exec_service({svc:"delete_unit_sensor",item_id:this.item.get_id(),sensor_id:sensor.get_id()},function(result,text){if(!result){callback(false,text,cparam);return;}
  362. if(typeof item_plugin.sensors[sensor.id]!="undefined")
  363. delete item_plugin.sensors[sensor.id];callback(true,"",cparam);});}});var WialonUnitSensor=Base.extend({constructor:function(state,id,item){this.id=id;this.type=state.tp;this.name=state.nm;this.descr=state.de;this.measure=state.me;this.param_name=state.pn;this.flags=state.fl;this.calc_table=state.tbl;if(typeof state.vt!="undefined")
  364. this.validation_type=state.vt;if(typeof state.vs!="undefined")
  365. this.validation_sensor_id=state.vs;this.item_id=item.get_id();this.config=(state.cfg&&state.cfg!="")?state.cfg:"{}";},name:"",type:"",id:0,descr:"",measure:"",param_name:"",flags:0,calc_table:[],validation_type:0,validation_sensor_id:0,item_id:0,tokens:null,tokens_count:0,config:{},get_id:function(){return this.id;},get_type:function(){return this.type;},get_name:function(){return this.name;},get_param_name:function(){return this.param_name;},get_flags:function(){return this.flags;},get_description:function(){return this.descr;},get_measurement:function(){return this.measure;},get_validation_type:function(){return this.validation_type;},get_validation_sensor_id:function(){return this.validation_sensor_id;},get_calc_table:function(){return this.calc_table;},get_config:function(){return this.config;},calculate_impl:function(msg,prev_msg,inv_ret,sensors){if(!msg)
  366. return inv_ret;var toplevel=false;if(sensors){if(sensors[this.id])
  367. return inv_ret;}else{sensors=new Object;toplevel=true;}
  368. sensors[this.id]=1;var value=this.parse_expression(msg,prev_msg,inv_ret,sensors);if(value==inv_ret){delete sensors[this.id];return inv_ret;}
  369. value=this.calculate_val(value,inv_ret);if(value==inv_ret){delete sensors[this.id];return inv_ret;}
  370. if(this.validation_sensor_id&&this.validation_type){var unit=Wialon.get_item(this.item_id);if(!unit){delete sensors[this.id];return inv_ret;}
  371. unit=unit.get_plugin("avl_unit_sensors");if(!unit){delete sensors[this.id];return inv_ret;}
  372. var validator=unit.get_sensor(this.validation_sensor_id);if(!validator){delete sensors[this.id];return inv_ret;}
  373. var validation_value=validator.calculate_impl(msg,prev_msg,inv_ret,sensors);if(validation_value==inv_ret){delete sensors[this.id];return inv_ret;}
  374. if(this.validation_type==SENSOR_DEPENDENCE_LOGICAL_AND){if(value&&validation_value)
  375. value=1;else
  376. value=0;}else if(this.validation_type==SENSOR_DEPENDENCE_NON_ZERO){if(!validation_value){delete sensors[this.id];value=inv_ret;}}else if(this.validation_type==SENSOR_DEPENDENCE_MATH_AND){value=Math.ceil(validation_value)&Math.ceil(value);}else if(this.validation_type==SENSOR_DEPENDENCE_LOGICAL_OR){if(value||validation_value)
  377. value=1;}else if(this.validation_type==SENSOR_DEPENDENCE_MATH_OR){value=Math.ceil(validation_value)|Math.ceil(value);}else if(this.validation_type==SENSOR_DEPENDENCE_SUMMARIZE)
  378. value+=validation_value;else if(this.validation_type==SENSOR_DEPENDENCE_SUBTRUCT_VALIDATOR)
  379. value-=validation_value;else if(this.validation_type==SENSOR_DEPENDENCE_SUBTRUCT_VALUE)
  380. value=validation_value-value;else if(this.validation_type==SENSOR_DEPENDENCE_MULTIPLY)
  381. value*=validation_value;else if(this.validation_type==SENSOR_DEPENDENCE_DIVIDE_VALIDATOR){if(validation_value)
  382. value/=validation_value;else
  383. value=inv_ret;}else if(this.validation_type==SENSOR_DEPENDENCE_DIVIDE_VALUE){if(value)
  384. value=validation_value/value;else
  385. value=inv_ret;}}
  386. delete sensors[this.id];return value;},calculate:function(msg,prev_msg,inv_value){return this.calculate_impl(msg,prev_msg,inv_value,null);},get_value:function(msg,inv_value){return this.get_value_impl(this.get_param_name(),msg,inv_value);},get_value_impl:function(param,msg,inv_value){if(!msg)
  387. return inv_value;var param_val=inv_value;var msg_params=msg.get_params();var arr=param.split(":");if(msg_params&&typeof msg_params[arr[0]]!="undefined")
  388. param_val=msg_params[arr[0]];else if(param=="speed"){if(!msg.is_position())
  389. return inv_value;param_val=msg.get_speed();}else if(param=="sats"){if(!msg.is_position())
  390. return inv_value;param_val=msg.get_sat_count();}else if(param=="altitude"){if(!msg.is_position())
  391. return inv_value;param_val=msg.get_alt();}else if(param=="course"){if(!msg.is_position())
  392. return inv_value;param_val=msg.get_course();}else if(param=="lat"){if(!msg.is_position())
  393. return inv_value;param_val=msg.get_lat();}else if(param=="lon"){if(!msg.is_position())
  394. return inv_value;param_val=msg.get_lon();}else if(param.substr(0,2)=="in"){if(!(msg.get_flags()&0x2))
  395. return inv_value;var idx=parseInt(param.substr(2));if(idx<1||idx>32||isNaN(idx))
  396. return this.calculate_val(msg.get_inputs(),inv_value);var bit=1<<(idx-1);param_val=(msg.get_inputs()&bit)?1:0;}else if(param.substr(0,3)=="out"){if(!(msg.get_flags()&0x4))
  397. return inv_value;var idx=parseInt(param.substr(3));if(idx<1||idx>32||isNaN(idx))
  398. return this.calculate_val(msg.get_outputs(),inv_value);var bit=1<<(idx-1);param_val=(msg.get_outputs()&bit)?1:0;}else if(param.substr(0,5)=="const"){param_val=parseFloat(param.substr(5));}else if(param.substr(0,4)=="time"){param_val=msg.get_time();}
  399. if(arr.length>1&&param_val!=inv_value){var pint=parseInt(param_val);param_val=(pint&(1<<(arr[1]-1)))?1:0;}
  400. return param_val;},calculate_val:function(param_val,inv_value){if(isNaN(param_val))
  401. return inv_value;var val=param_val;for(var i=0;i<this.calc_table.length;i++){if(i!=0&&this.calc_table[i][0]>param_val){if(i!=1||val!=-348201.3876||this.calc_table[0][0]>param_val)
  402. return val;}
  403. val=parseFloat(this.calc_table[i][1])*parseFloat(param_val)+parseFloat(this.calc_table[i][2]);}
  404. return val;},parse_expression:function(msg,prev_msg,inv_ret,sensors){if(!this.param_name)
  405. return inv_ret;if(!this.tokens_count&&!this.create_tokens())
  406. return inv_ret;var stack=[];var unit=null;var val=0;for(var i=0;i<this.tokens_count;i++){var buf=this.tokens[i];var size=stack.length;if(buf[0]=='*'&&size>1){stack[size-2]=stack[size-2]*stack[size-1];stack.pop();}else if(buf[0]=='/'&&size>1){if(stack[size-1]==0)
  407. return inv_ret;stack[size-2]=stack[size-2]/stack[size-1];stack.pop();}else if(buf[0]=='+'&&size>1){stack[size-2]=stack[size-2]+stack[size-1];stack.pop();}else if(buf[0]=='-'){if(size>1){stack[size-2]=stack[size-2]-stack[size-1];stack.pop();}else if(size==1)
  408. stack[size-1]=-stack[size-1];}else if(buf[0]=='^'&&size>1){stack[size-2]=Math.pow(stack[size-2],stack[size-1]);stack.pop();}else{if(buf[0]=='['){if(!unit)
  409. unit=Wialon.get_item(this.item_id).get_plugin("avl_unit_sensors");var sensor=unit.get_sensor_by_name(buf.slice(1));if(!sensor)
  410. return inv_ret;val=sensor.calculate_impl(msg,prev_msg,inv_ret,sensors);if(val==inv_ret)
  411. return inv_ret;stack.push(val);}else{val=inv_ret;if(buf[0]=='#')
  412. val=this.get_value_impl(buf.slice(1),prev_msg,inv_ret);else
  413. val=this.get_value_impl(buf,msg,inv_ret);if(val==inv_ret)
  414. return inv_ret;stack.push(val);}}}
  415. return stack.length==1?stack[0]:inv_ret;},create_tokens:function(){var param_name=this.param_name;var expr_len=param_name.length;var buf="";var stack=[];var tokens=[];var buf_len=0;var sensor_found=false;var last_bracket=false;for(var i=0;i<expr_len;i++){if(param_name[i]==' '){if(!buf_len)
  416. continue;}else if(param_name[i]=='[')
  417. sensor_found=true;else if(param_name[i]==']')
  418. sensor_found=false;if(sensor_found||isalnum(param_name[i])||param_name[i]=='_'||param_name[i]=='#'||param_name[i]=='.'||param_name[i]==':'||(param_name[i]=='-'&&buf=="const")){buf+=param_name[i];buf_len++;if(i<expr_len-1)
  419. continue;}
  420. if(buf_len>1&&this.get_token_prio(buf)==-1){last_bracket=false;tokens.push(buf);}
  421. buf=param_name[i];var prio=this.get_token_prio(buf);if(prio!=-1){if(param_name[i]=='-'&&last_bracket)
  422. tokens.push("const0");if(param_name[i]=='(')
  423. last_bracket=true;else
  424. last_bracket=false;if(stack.length){if(param_name[i]=='(')
  425. stack.push(buf);else if(param_name[i]==')'){while(stack.length){var token=stack[stack.length-1];stack.pop();if(token[0]!='(')
  426. tokens.push(token);else
  427. break;}}else{while(stack.length){var token=stack[stack.length-1];var last_prio=this.get_token_prio(token);if(last_prio>=prio){if(token[0]!='('&&token[0]!=')')
  428. tokens.push(stack[stack.length-1]);stack.pop();}else
  429. break;}
  430. stack.push(buf);}}else
  431. stack.push(buf);}
  432. buf="";buf_len=0;}
  433. while(stack.length){var token=stack[stack.length-1];if(token[0]!=')'&&token[0]!='(')
  434. tokens.push(token);stack.pop();}
  435. if(!tokens.length){this.tokens=[];this.tokens.push(param_name);this.tokens_count=1;}else{this.tokens_count=tokens.length;this.tokens=[];for(var i=0;i<tokens.length;i++)
  436. this.tokens.push(tokens[i]);}
  437. return true;},get_token_prio:function(token){if(token=="")
  438. return-1;switch(token[0]){case'^':return 4;case'*':case'/':return 3;case'-':case'+':return 2;case')':return 1;case'(':return 0;}
  439. return-1;}});var WialonUnitSensorConstructor=WialonUnitSensor.extend({constructor:function(){this.calc_table=[];this.config="{}";},set_type:function(val){this.type=val;},set_name:function(val){this.name=val;},set_param_name:function(val){this.param_name=val;},set_flags:function(val){this.flags=val;},set_description:function(val){this.descr=val;},set_measurement:function(val){this.measure=val;},set_calc_table:function(tbl){this.calc_table=[];for(var i=0;i<tbl.length;i++){var row=tbl[i];if(typeof row.x=="undefined"||typeof row.a=="undefined"||typeof row.b=="undefined")
  440. continue;this.calc_table.push([row.x,row.a,row.b]);}},set_validation_type:function(val){this.validation_type=val;},set_validation_sensor_id:function(val){this.validation_sensor_id=val;},set_config:function(val){this.config={};this.config=val;}});Wialon.add_item_plugin("avl_unit","avl_unit_sensors",WialonUnitSensorsPlugin);var WialonItemFieldsPlugin=WialonItemPlugin.extend({fields:{},fields_names:{},fields_limit:-1,get_type:function(){return"avl_item_fields";},init_state:function(state,item){this.base(state,item);if(typeof state.flds!="undefined"){this.fields={};this.fields_names={};for(var id in state.flds){this.fields[id]=new WialonItemField(state.flds[id]);this.fields_names[this.fields[id].get_name()]=this.fields[id];}}
  441. if(typeof state.fldsmax!="undefined")
  442. this.fields_limit=state.fldsmax;if(typeof state.fldsu!="undefined"&&state.fldsu.length==2){var id=state.fldsu[0];var udata=state.fldsu[1];if(typeof this.fields[id]!="undefined")
  443. delete this.fields_names[this.fields[id].get_name()];if(!udata){if(typeof this.fields[id]!="undefined")
  444. delete this.fields[id];}else{this.fields[id]=new WialonItemField(udata);this.fields_names[this.fields[id].get_name()]=this.fields[id];}}},get_fields:function(){var col=new Array;for(var id in this.fields){col.push(this.fields[id]);}
  445. return col;},get_field:function(id){var n=this.fields[id];if(typeof n!="undefined")
  446. return n;return null;},get_field_by_name:function(name){var n=this.fields_names[name];if(typeof n!="undefined")
  447. return n;return null;},get_fields_limit:function(){return this.fields_limit;},create_field:function(field,callback,cparam){if(!field||this.item.get_access_level()<Wialon.access_level("edit")||field.get_name()=="")
  448. return false;var item_plugin=this;return Wialon.exec_service({svc:"create_item_field",item_id:this.item.get_id(),field_data:WebAjax.to_list(field)},function(result,text){if(!result){callback(0,text,cparam);return;}
  449. var field_id=parseInt(text);callback(field_id,"",cparam);});},update_field:function(field_id,field,callback,cparam){if(!field||this.item.get_access_level()<Wialon.access_level("edit")||field.get_name()=="")
  450. return false;var item_plugin=this;return Wialon.exec_service({svc:"update_item_field",item_id:this.item.get_id(),field_data:WebAjax.to_list(field),field_id:field_id},function(result,text){if(!result){callback(false,text,cparam);return;}
  451. callback(true,"",cparam);});},delete_field:function(field,callback,cparam){if(!field||this.item.get_access_level()<Wialon.access_level("edit"))
  452. return false;var item_plugin=this;return Wialon.exec_service({svc:"delete_item_field",item_id:this.item.get_id(),field_id:field.get_id()},function(result,text){if(!result){callback(false,text,cparam);return;}
  453. callback(true,"",cparam);});}});var WialonItemField=Base.extend({constructor:function(state){this.id=state.id;this.name=state.nm;this.value=state.vl;},name:"",value:"",id:0,get_id:function(){return this.id;},get_value:function(){return this.value;},get_name:function(){return this.name;}});var WialonItemFieldConstructor=WialonItemField.extend({constructor:function(){},set_value:function(val){this.value=val;},set_name:function(val){this.name=val;}});Wialon.add_item_plugin("avl_unit","avl_item_fields",WialonItemFieldsPlugin);Wialon.add_item_plugin("user","avl_item_fields",WialonItemFieldsPlugin);Wialon.add_item_plugin("avl_unit_group","avl_item_fields",WialonItemFieldsPlugin);var WialonTimeSchedule=Base.extend({constructor:function(state){if(typeof state=='object'&&state){if(typeof state.time_from1!="undefined")
  454. this.time_from1=state.time_from1;else
  455. this.time_from1=state.f1;if(typeof state.time_from2!="undefined")
  456. this.time_from2=state.time_from2;else
  457. this.time_from2=state.f2;if(typeof state.time_to1!="undefined")
  458. this.time_to1=state.time_to1;else
  459. this.time_to1=state.t1;if(typeof state.time_to2!="undefined")
  460. this.time_to2=state.time_to2;else
  461. this.time_to2=state.t2;if(typeof state.month_day_mask!="undefined")
  462. this.month_day_mask=state.month_day_mask;else
  463. this.month_day_mask=state.mdm;if(typeof state.year_month_mask!="undefined")
  464. this.year_month_mask=state.year_month_mask;else
  465. this.year_month_mask=state.ymm;if(typeof state.week_day_mask!="undefined")
  466. this.week_day_mask=state.week_day_mask;else
  467. this.week_day_mask=state.wdm;}},time_from1:0,time_from2:0,time_to1:0,time_to2:0,month_day_mask:0,year_month_mask:0,week_day_mask:0,get_time_from1:function(){return this.time_from1;},get_time_from2:function(){return this.time_from2;},get_time_to1:function(){return this.time_to1;},get_time_to2:function(){return this.time_to2;},get_month_day_mask:function(){return this.month_day_mask;},get_year_month_mask:function(){return this.year_month_mask;},get_week_day_mask:function(){return this.week_day_mask;},set_time_from1:function(val){this.time_from1=val;},set_time_to1:function(val){this.time_to1=val;},set_time_from2:function(val){this.time_from2=val;},set_time_to2:function(val){this.time_to2=val;},set_month_day_mask:function(val){this.month_day_mask=val;},set_year_month_mask2:function(val){this.year_month_mask=val;},set_week_day_mask:function(val){this.week_day_mask=val;}});var WialonUnitCommandAliasesPlugin=WialonItemPlugin.extend({cmd_aliases:{},cmd_alias_limit:-1,get_type:function(){return"avl_cmd_aliases";},init_state:function(state,item){this.base(state,item);if(typeof state.cml!="undefined"){this.cmd_aliases={};for(var id in state.cml)
  468. this.cmd_aliases[id]=new WialonCommandAlias(state.cml[id],id,item);}
  469. if(typeof state.cmlmax!="undefined")
  470. this.cmd_alias_limit=state.cmlmax;if(typeof state.cmlu!="undefined"&&state.cmlu.length==2){var id=state.cmlu[0];var udata=state.cmlu[1];if(!udata){if(typeof this.cmd_aliases[id]!="undefined")
  471. delete this.cmd_aliases[id];}else
  472. this.cmd_aliases[id]=new WialonCommandAlias(udata,id,item);}},get_cmd_aliases:function(){var col=new Array;for(var id in this.cmd_aliases)
  473. col.push(this.cmd_aliases[id]);return col;},get_cmd_alias:function(id){var n=this.cmd_aliases[id];if(typeof n!="undefined")
  474. return n;return null;},get_cmd_alias_limit:function(){return this.cmd_alias_limit;},create_cmd_alias:function(cmd_alias,callback,cparam){if(!cmd_alias||this.item.get_access_level()<Wialon.access_level("edit")||cmd_alias.get_name()==""||cmd_alias.get_cmd_name()=="")
  475. return false;var item_plugin=this;return Wialon.exec_service({svc:"create_cmd_alias",item_id:this.item.get_id(),cmd_alias_data:WebAjax.to_list(cmd_alias)},function(result,text){if(!result){callback(0,text,cparam);return;}
  476. var cmd_alias_id=parseInt(text);callback(cmd_alias_id,"",cparam);});},update_cmd_alias:function(cmd_alias_id,cmd_alias,callback,cparam){if(!cmd_alias||this.item.get_access_level()<Wialon.access_level("edit")||cmd_alias.get_name()==""||cmd_alias.get_cmd_name()==""||typeof this.cmd_aliases[cmd_alias_id]=="undefined")
  477. return false;var item_plugin=this;return Wialon.exec_service({svc:"update_cmd_alias",item_id:this.item.get_id(),cmd_alias_data:WebAjax.to_list(cmd_alias),cmd_alias_id:cmd_alias_id},function(result,text){if(!result){callback(false,text,cparam);return;}
  478. callback(true,"",cparam);});},delete_cmd_alias:function(cmd_alias,callback,cparam){if(!cmd_alias||this.item.get_access_level()<Wialon.access_level("edit"))
  479. return false;var item_plugin=this;return Wialon.exec_service({svc:"delete_cmd_alias",item_id:this.item.get_id(),cmd_alias_id:cmd_alias.get_id()},function(result,text){if(!result){callback(false,text,cparam);return;}
  480. if(typeof item_plugin.cmd_aliases[cmd_alias.id]!="undefined")
  481. delete item_plugin.cmd_aliases[cmd_alias.id];callback(true,"",cparam);});},get_link_types:function(callback){if(this.item.get_access_level()<Wialon.access_level("edit"))
  482. return false;var item_plugin=this;return Wialon.exec_service({svc:"get_link_types",item_id:this.item.get_id()},function(result,text){callback(result);});}});var WialonCommandAlias=Base.extend({constructor:function(state,id,item){this.id=id;this.name=state.nm;this.cmd_name=state.cn;this.cmd_link_type=state.lt;this.cmd_parameters=state.cp;this.item_id=item.get_id();},name:"",cmd_name:"",cmd_link_type:"",cmd_parameters:"",id:0,item_id:0,get_id:function(){return this.id;},get_name:function(){return this.name;},get_cmd_name:function(){return this.cmd_name;},get_cmd_link_type:function(){return this.cmd_link_type;},get_cmd_parameters:function(){return this.cmd_parameters;}});var WialonCommandAliasConstructor=WialonCommandAlias.extend({constructor:function(){},set_name:function(name){this.name=name;},set_cmd_name:function(cmd_name){this.cmd_name=cmd_name;},set_cmd_link_type:function(cmd_link_type){this.cmd_link_type=cmd_link_type;},set_cmd_parameters:function(cmd_parameters){this.cmd_parameters=cmd_parameters;}});Wialon.add_item_plugin("avl_unit","avl_cmd_aliases",WialonUnitCommandAliasesPlugin);var WialonUnitGroup=WialonItem.extend({constructor:function(state,plugins){this.plugins=plugins;this.init_state(state);},units:[],child_groups:[],acl_propagated:0,get_units:function(){return Wialon.get_items_from_id_col(this.units);},check_unit:function(unit){return this.check_item_in_id_col(this.units,unit.get_id());},get_child_groups:function(){return Wialon.get_items_from_id_col(this.child_groups);},check_child_group:function(group){return this.check_item_in_id_col(this.child_groups,group.get_id());},is_acl_propogated:function(){return this.acl_propagated;},add_unit:function(unit){if(this.get_access_level()<Wialon.access_level("edit")||!unit)
  483. return false;if(this.is_acl_propogated()&&unit.get_access_level()<Wialon.access_level("manage"))
  484. return false;return this.add_item_to_id_col("unit_group_add_unit",this.units,unit.get_id());},remove_unit:function(unit){if(this.get_access_level()<Wialon.access_level("edit")||!unit)
  485. return false;if(this.is_acl_propogated()&&unit.get_access_level()<Wialon.access_level("manage"))
  486. return false;return this.remove_item_from_id_col("unit_group_remove_unit",this.units,unit.get_id());},set_units:function(units){if(this.get_access_level()<Wialon.access_level("edit"))
  487. return false;var units_to_set=new Array;for(var i=0;i<units.length;i++){if(this.is_acl_propogated()&&units[i].get_access_level()<Wialon.access_level("manage"))
  488. continue;units_to_set.push(units[i]);}
  489. var ids="";for(var i=0;i<units_to_set.length;i++)
  490. ids+=(i>0?",":"")+units_to_set[i].get_id();this.remove_modification("unit_group_set_units",function(s){return s==ids;});this.add_modification("unit_group_set_units",ids);return true;},init_state:function(state){this.base(state);if(typeof state.u!="undefined")
  491. this.units=state.u;if(typeof state.g!="undefined")
  492. this.child_groups=state.g;if(typeof state.acl_ppg!="undefined")
  493. this.acl_propagated=state.acl_ppg;return true;}});var WialonUnitGroupPlugin=WialonItemPlugin.extend({groups:[],get_type:function(){return"avl_unit_groups";},init_state:function(state,item){this.base(state,item);if(typeof state.ugs!="undefined")
  494. this.groups=state.ugs;},populate_access_propogation_items:function(cset){this.base(cset);for(var i=0;i<this.groups.length;i++)
  495. cset[this.groups[i]]=1;},handle_event:function(evt){}});Wialon.extend({get_unit_groups:function(){return this.get_items("avl_unit_group");},create_unit_group:function(name,propogate_acl,callback,cparam,creator){if(!this.can_create_item()){return false;};var creator_id=0;if(creator&&typeof creator=="object")
  496. creator_id=creator.get_id();if(name=="")
  497. return false;return this.exec_service({svc:"create_unit_group",name:name,creator_id:creator_id,propogate_acl:propogate_acl?1:0},function(result,text){if(!result){callback(null,text,cparam);return;}
  498. var data;eval("data ="+text);var item=Wialon.construct_item(data);delete data;var user=creator;if(!user)
  499. user=Wialon.get_current_user();Wialon.set_user_access_for_item(item,user,Wialon.access_level("manage"));callback(item,"",cparam);if(item)
  500. Wialon.on_item_created(item);});}});Wialon.add_item_constructor("avl_unit_group",WialonUnitGroup);Wialon.add_item_plugin("avl_unit","avl_unit_groups",WialonUnitGroupPlugin);var WialonItemIconPlugin=WialonItemPlugin.extend({cookie:0,get_type:function(){return"avl_item_icon";},get_icon_url:function(border){if(typeof border=='undefined'||!border)
  501. border=32;return"/avl_icon/get/"+this.id+"/"+border+"/"+this.cookie+".png";},get_cookie:function(){return this.cookie;},init_state:function(state,item){this.base(state,item);if(typeof state.ugi!="undefined")
  502. this.cookie=state.ugi;}});Wialon.add_item_plugin("avl_unit","avl_item_icon",WialonItemIconPlugin);Wialon.add_item_plugin("avl_unit_group","avl_item_icon",WialonItemIconPlugin);var WialonZonesLibraryPlugin=WialonItemPlugin.extend({zones:{},zones_limit:-1,get_type:function(){return"avl_zones_library";},init_state:function(state,item){this.base(state,item);if(typeof state.zl!="undefined"){this.zones={};for(var id in state.zl)
  503. this.zones[id]=new WialonGeozone(state.zl[id]);}
  504. if(typeof state.zlmax!="undefined")
  505. this.zones_limit=state.zlmax;if(typeof state.zlu!="undefined"&&state.zlu.length==2){var id=state.zlu[0];var zdata=state.zlu[1];if(!zdata){if(typeof this.zones[id]!="undefined")
  506. delete this.zones[id];}else
  507. this.zones[id]=new WialonGeozone(zdata);}},get_zones:function(){var col=[];for(var id in this.zones)
  508. col.push(this.zones[id]);return col;},get_zone:function(id){var zone=this.zones[id];if(typeof zone!="undefined")
  509. return zone;return null;},get_zones_limit:function(){return this.zones_limit;},create_zone:function(zone,callback,cparam){if(!zone||this.item.get_access_level()<Wialon.access_level("edit"))
  510. return false;var item_plugin=this;return Wialon.exec_service({svc:"create_library_zone",item_id:this.item.get_id(),zone_data:WebAjax.to_list(zone)},function(result,text){if(!result){callback(0,text,cparam);return;}
  511. var zone_id=parseInt(text);if(zone_id){var gz=new WialonGeozoneConstructor(zone);gz.id=zone_id;item_plugin.zones[zone_id]=gz;}
  512. callback(zone_id,"",cparam);});},update_zone:function(zone,callback,cparam){if(!zone||this.item.get_access_level()<Wialon.access_level("edit"))
  513. return false;var item_plugin=this;return Wialon.exec_service({svc:"update_library_zone",item_id:this.item.get_id(),zone_data:WebAjax.to_list(zone)},function(result,text){if(!result){callback(false,text,cparam);return;}
  514. item_plugin.zones[zone.id]=new WialonGeozoneConstructor(zone);callback(true,"",cparam);});},delete_zone:function(zone,callback,cparam){if(!zone||this.item.get_access_level()<Wialon.access_level("edit"))
  515. return false;var item_plugin=this;return Wialon.exec_service({svc:"delete_library_zone",item_id:this.item.get_id(),zone_id:zone.get_id()},function(result,text){if(!result){callback(false,text,cparam);return;}
  516. if(typeof item_plugin.zones[zone.id]!="undefined")
  517. delete item_plugin.zones[zone.id];callback(true,"",cparam);});}});Wialon.add_item_plugin("avl_resource","avl_zones_library",WialonZonesLibraryPlugin);var WialonPOIManagerPlugin=WialonItemPlugin.extend({pois:{},poi_limit:-1,get_type:function(){return"avl_poi_manager";},init_state:function(state,item){this.base(state,item);if(typeof state.poi!="undefined"){this.pois={};for(var id in state.poi)
  518. this.pois[id]=new WialonPOI(state.poi[id],this.item.get_id());}
  519. if(typeof state.poimax!="undefined")
  520. this.poi_limit=state.poimax;if(typeof state.poiu!="undefined"&&state.poiu.length==2){var id=state.poiu[0];var udata=state.poiu[1];if(!udata){if(typeof this.pois[id]!="undefined")
  521. delete this.pois[id];}else
  522. this.pois[id]=new WialonPOI(udata,this.item.get_id());}},get_pois:function(){var col=new Array;for(var id in this.pois)
  523. col.push(this.pois[id]);return col;},get_poi:function(id){var n=this.pois[id];if(typeof n!="undefined")
  524. return n;return null;},get_pois_limit:function(){return this.poi_limit;},create_poi:function(name,descr,lat,lon,radius,flags,color,callback,cparam){if(this.item.get_access_level()<Wialon.access_level("edit"))
  525. return false;var item_plugin=this;return Wialon.exec_service({svc:"create_poi",item_id:this.item.get_id(),name:name,descr:descr,lat:lat,lon:lon,radius:radius,flags:flags,color:color},function(result,text){if(!result){callback(0,text,cparam);return;}
  526. var poi_id=parseInt(text);if(poi_id){var n=new WialonPOI({id:poi_id,de:descr,nm:name,y:lat,x:lon,r:1,f:0x00,cr:color,d:100,c:0},item_plugin.item.get_id());item_plugin.pois[poi_id]=n;}
  527. callback(poi_id,"",cparam);});},update_poi:function(poi_id,name,descr,lat,lon,radius,flags,color,callback,cparam){if(this.item.get_access_level()<Wialon.access_level("edit")||typeof this.pois[poi_id]=="undefined")
  528. return false;var item_plugin=this;return Wialon.exec_service({svc:"update_poi",item_id:this.item.get_id(),poi_id:poi_id,name:name,descr:descr,lat:lat,lon:lon,radius:radius,flags:flags,color:color,update_image:"no"},function(result,text){if(!result){callback(false,text,cparam);return;}
  529. var n=new WialonPOI({id:poi_id,de:descr,nm:name,y:lat,x:lon,r:1,f:0x00,cr:color,d:100,c:0},item_plugin.item.get_id());item_plugin.pois[poi_id]=n;callback(true,"",cparam);});},delete_poi:function(poi,callback,cparam){if(!poi||this.item.get_access_level()<Wialon.access_level("edit"))
  530. return false;var item_plugin=this;return Wialon.exec_service({svc:"delete_poi",item_id:this.item.get_id(),poi_id:poi.get_id()},function(result,text){if(!result){callback(false,text,cparam);return;}
  531. if(typeof item_plugin.pois[poi.id]!="undefined")
  532. delete item_plugin.pois[poi.id];callback(true,"",cparam);});}});var WialonPOI=Base.extend({constructor:function(state,item_id){this.id=state.id;this.descr=state.de;this.name=state.nm;this.lat=state.y;this.lon=state.x;this.ratio=state.r;this.radius=state.d;this.flags=state.f;this.color=state.cr;this.cookie=state.c;this.item_id=item_id;},descr:"",name:"",id:0,lat:0.0,lon:0.0,ratio:0.0,radius:100,flags:0x00,color:"",cookie:0,item_id:0,get_id:function(){return this.id;},get_description:function(){return this.descr;},get_name:function(){return this.name;},get_lat:function(){return this.lat;},get_lon:function(){return this.lon;},get_radius:function(){return this.radius;},get_flags:function(){return this.flags;},get_color:function(){return this.color;},get_ratio:function(){return this.ratio;},get_image_url:function(border){if(!this.cookie)
  533. return"";if(typeof border=='undefined'||!border)
  534. border=32;return"/avl_poi/get.png?rid="+this.item_id+"&pid="+this.id+"&c="+this.cookie+"&b="+border;}});Wialon.add_item_plugin("avl_resource","avl_poi_manager",WialonPOIManagerPlugin);var WialonJobsPlugin=WialonItemPlugin.extend({jobs:{},job_limit:-1,get_type:function(){return"avl_jobs";},init_state:function(state,item){this.base(state,item);if(typeof state.ujb!="undefined"){this.jobs={};for(var id in state.ujb)
  535. this.jobs[id]=new WialonJob(state.ujb[id]);}
  536. if(typeof state.ujbmax!="undefined")
  537. this.jobs_limit=state.ujbmax;if(typeof state.ujbu!="undefined"&&state.ujbu.length==2){var id=state.ujbu[0];var udata=state.ujbu[1];if(!udata){if(typeof this.jobs[id]!="undefined")
  538. delete this.jobs[id];}else
  539. this.jobs[id]=new WialonJob(udata);}},get_jobs:function(){var col=new Array;for(var id in this.jobs)
  540. col.push(this.jobs[id]);return col;},get_job:function(id){var n=this.jobs[id];if(typeof n!="undefined")
  541. return n;return null;},get_jobs_limit:function(){return this.jobs_limit;},create_job:function(job,callback,cparam){if(!job||this.item.get_access_level()<Wialon.access_level("edit")||typeof job.get_action()!="object")
  542. return false;var item_plugin=this;return Wialon.exec_service({svc:"create_job",item_id:this.item.get_id(),job_data:WebAjax.to_list(job)},function(result,text){if(!result){if(callback)
  543. callback(0,text,cparam);return;}
  544. var job_id=parseInt(text);if(job_id){var n=new WialonJobConstructor(job);n.id=job_id;item_plugin.jobs[job_id]=n;}
  545. if(callback)
  546. callback(job_id,"",cparam);});},update_job:function(job_id,job,callback,cparam){if(!job||this.item.get_access_level()<Wialon.access_level("edit")||typeof job.get_action()!="object")
  547. return false;var item_plugin=this;return Wialon.exec_service({svc:"update_job",item_id:this.item.get_id(),job_data:WebAjax.to_list(job),job_id:job_id},function(result,text){if(!result){if(callback)
  548. callback(false,text,cparam);return;}
  549. if(callback)
  550. callback(true,"",cparam);});},delete_job:function(job,callback,cparam){if(!job||this.item.get_access_level()<Wialon.access_level("edit"))
  551. return false;var item_plugin=this;return Wialon.exec_service({svc:"delete_job",item_id:this.item.get_id(),job_id:job.get_id()},function(result,text){if(!result){if(callback)
  552. callback(false,text,cparam);return;}
  553. if(typeof item_plugin.jobs[job.id]!="undefined")
  554. delete item_plugin.jobs[job.id];if(callback)
  555. callback(true,"",cparam);});},enable_job:function(job,enabled,callback,cparam){if(!job||this.item.get_access_level()<Wialon.access_level("edit"))
  556. return false;var item_plugin=this;return Wialon.exec_service({svc:"enable_job",item_id:this.item.get_id(),job_id:job.get_id(),job_enabled:enabled},function(result,text){if(!result){if(callback)
  557. callback(false,text,cparam);return;}
  558. if(callback)
  559. callback(true,"",cparam);});}});var WialonJob=Base.extend({constructor:function(state){this.id=state.id;this.descr=state.de;this.name=state.nm;this.reg_schedule=state.rsch;this.act_time=state.at;this.max_times=state.mt;this.tz=state.tz;this.lang=state.la;this.job_enabled=state.je;this.done_times=state.dt;this.last_done_time=state.ldt;this.schedule=new WialonTimeSchedule(state.sch);this.action=new WialonJobAction(state.act);},id:0,descr:"",reg_schedule:"",name:"",act_time:0,max_times:0,tz:0,lang:"",job_enabled:false,done_times:0,last_done_time:0,schedule:null,action:null,get_id:function(){return this.id;},get_description:function(){return this.descr;},get_name:function(){return this.name;},get_reg_schedule:function(){return this.reg_schedule;},get_activation_time:function(){return this.act_time;},get_max_times:function(){return this.max_times;},get_tz_offset:function(){return this.tz;},get_lang:function(){return this.lang;},is_enabled:function(){return this.job_enabled;},get_done_times:function(){return this.done_times;},get_last_done_time:function(){return this.last_done_time;},get_schedule:function(){return this.schedule;},get_action:function(){return this.action;}});var WialonJobAction=WialonParamsItem.extend({constructor:function(state){this.params=state.p;this.type=state.t;},type:"",get_type:function(){return this.type;},get_name:function(){return this.get_param("name");}});var WialonJobConstructor=WialonJob.extend({constructor:function(){},set_description:function(val){this.descr=val;},set_name:function(val){this.name=val;},set_reg_schedule:function(val){this.reg_schedule=val;},set_activation_time:function(val){this.act_time=val;},set_max_times:function(val){this.max_times=val;},set_tz_offset:function(val){this.tz=val;},set_lang:function(val){this.lang=val;},set_schedule:function(sch){if(typeof sch=='object'&&sch)
  560. this.schedule=sch;},set_action:function(act){if(typeof act=='object'&&act)
  561. this.action=act;}});var WialonJobs=Base.extend({constructor:null,create_exec_unit_cmd_action:function(units,cmd_name,cmd_param,link_type,timeout){if(typeof units!='string'||typeof cmd_name!='string')
  562. return null;params=[{t:"text",n:"units",v:units},{t:"text",n:"cmd_name",v:cmd_name},{t:"text",n:"cmd_param",v:cmd_param},{t:"text",n:"link_type",v:link_type},{t:"number",n:"timeout",v:timeout}];return{type:"exec_unit_cmd",params:params};},create_send_email_report_action:function(report_type,units,time_from,time_to,flags,report_id,file_type,email_to,pack,params){var curr_user=Wialon.get_current_user();if(typeof email_to!='string'||!curr_user)
  563. return null;params=[{t:"text",n:"user",v:curr_user.get_guid()},{t:"text",n:"report_type",v:report_type},{t:"text",n:"units",v:units},{t:"number",n:"time_from",v:time_from},{t:"number",n:"time_to",v:time_to},{t:"number",n:"flags",v:flags},{t:"text",n:"report_id",v:report_id},{t:"text",n:"file_type",v:file_type},{t:"text",n:"email_to",v:email_to},{t:"number",n:"pack",v:pack},{t:"text",n:"params",v:params}];return{type:"send_email_report",params:params};},create_send_email_report2_action:function(report_objects,report_guid,report_id,time_from,time_to,flags,file_type,email_to,pack,params){if(typeof email_to!='string')
  564. return null;params=[{t:"text",n:"report_objects",v:report_objects},{t:"text",n:"report_guid",v:report_guid},{t:"number",n:"report_id",v:report_id},{t:"number",n:"time_from",v:time_from},{t:"number",n:"time_to",v:time_to},{t:"number",n:"flags",v:flags},{t:"text",n:"file_type",v:file_type},{t:"text",n:"email_to",v:email_to},{t:"number",n:"pack",v:pack},{t:"text",n:"params",v:params}];return{type:"send_email_report",params:params};},create_send_email_sms_fuel_action:function(units,email_to,phone_to,flags,time_offset){if(typeof email_to!='string'||typeof phone_to!='string')
  565. return null;params=[{t:"text",n:"units",v:units},{t:"text",n:"email_to",v:email_to},{t:"text",n:"phone_to",v:phone_to},{t:"number",n:"flags",v:flags},{t:"number",n:"time_offset",v:time_offset}];return{type:"send_email_sms_fuel",params:params};},create_reset_units_bytes_counter_action:function(units,store_bytes,reset_bytes){if(typeof units!='string')
  566. return null;params=[{t:"text",n:"units",v:units},{t:"number",n:"store_bytes",v:store_bytes},{t:"number",n:"reset_bytes",v:reset_bytes}];return{type:"reset_unit_bytes_counter",params:params};},create_assign_route_action:function(units,name,description,zone,flags){if(typeof units!="string"||typeof name!="string"||typeof description!="string"||typeof zone!="object"||typeof flags!="number")
  567. return null;params=[{t:"text",n:"units",v:units},{t:"text",n:"name",v:name},{t:"text",n:"description",v:description},{t:"number",n:"zone",v:zone.get_id()},{t:"number",n:"flags",v:flags}];return{type:"assign_route",params:params};},create_remove_route_action:function(units,finished){if(typeof units!="string")
  568. return null;params=[{t:"text",n:"units",v:units},{t:"number",n:"finished",v:0+finished}];return{type:"remove_route",params:params};},create_change_access_user:function(users,acc_level,units){if(typeof users!='string')
  569. return null;params=[{t:"text",n:"users",v:users},{t:"number",n:"acc_level",v:acc_level},{t:"text",n:"units",v:units}];return{type:"change_access_user",params:params};},create_reset_units_mileage_counter_action:function(units,skip_reset,store,value,param_name){if(typeof units!='string')
  570. return null;params=[{t:"text",n:"units",v:units},{t:"number",n:"skip_reset",v:skip_reset},{t:"number",n:"store_mileage",v:store},{t:"number",n:"value_mileage",v:value},{t:"text",n:"param_name",v:param_name}];return{type:"reset_unit_mileage_counter",params:params};},create_reset_units_eh_counter_action:function(units,skip_reset,store,value,param_name){if(typeof units!='string')
  571. return null;params=[{t:"text",n:"units",v:units},{t:"number",n:"skip_reset",v:skip_reset},{t:"number",n:"store_eh",v:store},{t:"number",n:"value_eh",v:value},{t:"text",n:"param_name",v:param_name}];return{type:"reset_unit_engine_hours_counter",params:params};}});Wialon.add_item_plugin("avl_resource","avl_jobs",WialonJobsPlugin);var WialonNotificationsPlugin=WialonItemPlugin.extend({notifications:{},notify_limit:-1,get_type:function(){return"avl_notifications";},init_state:function(state,item){this.base(state,item);if(typeof state.unf!="undefined"){this.notifications={};for(var id in state.unf)
  572. this.notifications[id]=new WialonNotification(state.unf[id]);}
  573. if(typeof state.unfmax!="undefined")
  574. this.notify_limit=state.unfmax;if(typeof state.unfu!="undefined"&&state.unfu.length==2){var id=state.unfu[0];var udata=state.unfu[1];if(!udata){if(typeof this.notifications[id]!="undefined")
  575. delete this.notifications[id];}else
  576. this.notifications[id]=new WialonNotification(udata);}},get_notifications:function(){var col=new Array;for(var id in this.notifications)
  577. col.push(this.notifications[id]);return col;},get_notification:function(id){var n=this.notifications[id];if(typeof n!="undefined")
  578. return n;return null;},get_notifications_limit:function(){return this.notify_limit;},create_notification:function(notification,callback,cparam){if(!notification||this.item.get_access_level()<Wialon.access_level("edit")||notification.get_units()<1||notification.get_actions()<1||!notification.get_trigger())
  579. return false;var item_plugin=this;return Wialon.exec_service({svc:"create_notification",item_id:this.item.get_id(),notification_data:WebAjax.to_list(notification)},function(result,text){if(!result){callback(0,text,cparam);return;}
  580. var notification_id=parseInt(text);callback(notification_id,"",cparam);});},update_notification:function(notification_id,notification,callback,cparam){if(!notification||this.item.get_access_level()<Wialon.access_level("edit")||notification.get_units()<1||notification.get_actions()<1||!notification.get_trigger()||typeof this.notifications[notification_id]=="undefined")
  581. return false;var item_plugin=this;return Wialon.exec_service({svc:"update_notification",item_id:this.item.get_id(),notification_data:WebAjax.to_list(notification),notification_id:notification_id},function(result,text){if(!result){callback(false,text,cparam);return;}
  582. callback(true,"",cparam);});},enable_notification:function(notification_id,notification,enable,callback,cparam){if(!notification||this.item.get_access_level()<Wialon.access_level("edit"))
  583. return false;if(typeof enable=="undefined")
  584. return false;var item_plugin=this;return Wialon.exec_service({svc:"enable_notification",item_id:this.item.get_id(),notification_id:notification.get_id(),notification_enabled:enable},function(result,text){if(!result){callback(false,text,cparam);return;}
  585. callback(true,"",cparam);});},delete_notification:function(notification,callback,cparam){if(!notification||this.item.get_access_level()<Wialon.access_level("edit"))
  586. return false;var item_plugin=this;return Wialon.exec_service({svc:"delete_notification",item_id:this.item.get_id(),notification_id:notification.get_id()},function(result,text){if(!result){callback(false,text,cparam);return;}
  587. if(typeof item_plugin.notifications[notification.id]!="undefined")
  588. delete item_plugin.notifications[notification.id];callback(true,"",cparam);});}});var WialonNotification=Base.extend({constructor:function(state){this.id=state.id;this.text=state.txt;this.name=state.nm;this.act_time=state.ta;this.deact_time=state.td;this.max_alarms=state.ma;this.flags=state.fl;this.tz=state.tz;this.lang=state.la;this.max_msgs_time_diff=state.mmtd;this.check_delay_time=state.cdt;this.alarms_count=state.ac;this.min_alarm_state_time=state.mast;this.min_prev_state_time=state.mpst;this.control_period=state.cp;this.schedule=new WialonTimeSchedule(state.sch);this.units=state.un;this.trigger=new WialonNotifyItem(state.trg);this.actions=new Array;for(var i=0;i<state.act.length;i++)
  589. this.actions.push(new WialonNotifyItem(state.act[i]));},text:"",name:"",id:0,act_time:0,deact_time:0,max_alarms:0,max_msgs_time_diff:0,check_delay_time:0,alarms_count:0,min_alarm_state_time:0,min_prev_state_time:0,control_period:0,flags:0,tz:0,lang:"",schedule:null,units:[],trigger:null,actions:[],get_id:function(){return this.id;},get_text:function(){return this.text;},get_name:function(){return this.name;},get_activation_time:function(){return this.act_time;},get_deactivation_time:function(){return this.deact_time;},get_tz_offset:function(){return this.tz;},get_flags:function(){return this.flags;},get_lang:function(){return this.lang;},get_schedule:function(){return this.schedule;},get_max_alarms:function(){return this.max_alarms;},get_alarms_count:function(){return this.alarms_count;},get_max_msgs_time_diff:function(){return this.max_msgs_time_diff;},get_check_delay_time:function(){return this.check_delay_time;},get_min_alarm_state_time:function(){return this.min_alarm_state_time;},get_min_prev_state_time:function(){return this.min_prev_state_time;},get_control_period:function(){return this.control_period;},get_units:function(){return Wialon.get_items_from_id_col(this.units);},get_trigger:function(){return this.trigger;},get_actions:function(){return this.actions;}});var WialonNotifyItem=WialonParamsItem.extend({constructor:function(state){this.params=(state.p&&typeof state.p!="undefined")?state.p:{};this.type=state.t;},type:"",get_type:function(){return this.type;}});var WialonNotificationConstructor=WialonNotification.extend({constructor:function(){this.units=[];this.trigger=null;this.actions=[];},set_text:function(val){this.text=val;},set_name:function(val){this.name=val;},set_activation_time:function(val){this.act_time=val;},set_deactivation_time:function(val){this.deact_time=val;},set_tz_offset:function(val){this.tz=val;},set_max_alarms:function(val){this.max_alarms=val;},set_flags:function(val){this.flags=val;},set_max_msgs_time_diff:function(val){this.max_msgs_time_diff=val;},set_check_delay_time:function(val){this.check_delay_time=val;},set_min_alarm_state_time:function(val){this.min_alarm_state_time=val;},set_min_prev_state_time:function(val){this.min_prev_state_time=val;},set_control_period:function(val){this.control_period=val;},set_lang:function(val){this.lang=val;},set_schedule:function(sch){if(typeof sch=='object'&&sch&&typeof sch.time_from1!='undefined')
  590. this.schedule=sch;},add_unit:function(unit){if(!unit)
  591. return;this.units.push(unit.get_id());},set_trigger:function(trg){if(!trg||!trg.type||!trg.params)
  592. return;this.trigger=trg;},add_action:function(act){if(!act||!act.type||!act.params)
  593. return;this.actions.push(act);}});var WialonNotifications=Base.extend({constructor:null,create_action_sms:function(phones){if(typeof phones!='string')
  594. return null;params=[{t:"text",n:"phones",v:phones}];return{type:"sms",params:params};},create_action_email:function(emails,subject,is_html,img_attach){if(typeof emails!='string'||typeof subject!='string'||subject==""||(is_html!=0&&is_html!=1)||(img_attach!=0&&img_attach!=1))
  595. return null;params=[{t:"text",n:"email_to",v:emails},{t:"text",n:"subj",v:subject},{t:"number",n:"html",v:is_html?1:0},{t:"number",n:"img_attach",v:img_attach?1:0}];return{type:"email",params:params};},create_action_message:function(name){if(typeof name!='string'||name=="")
  596. return null;params=[{t:"text",n:"name",v:name}];return{type:"message",params:params};},create_action_unit_alarm:function(name){if(typeof name!='string'||name=="")
  597. return null;params=[{t:"text",n:"name",v:name}];return{type:"alarm",params:params};},create_action_unit_event:function(flags){params=[{t:"number",n:"flags",v:flags}];return{type:"event",params:params};},create_action_exec_cmd:function(name,param,link){if(typeof name!='string')
  598. return null;params=[{t:"text",n:"name",v:name},{t:"text",n:"param",v:param},{t:"text",n:"link",v:link}];return{type:"exec_cmd",params:params};},create_action_status:function(ui_text){params=[{t:"text",n:"ui_text",v:ui_text}];return{type:"status",params:params};},create_trigger_speed:function(min_speed,max_speed,sens_type,sens_mask,lower_bound,upper_bound,sens_merge,trigger_inout){if(typeof min_speed!='number'||typeof max_speed!='number'||min_speed>max_speed)
  599. return null;params=[{t:"number",n:"min_speed",v:min_speed},{t:"number",n:"max_speed",v:max_speed},{t:"text",n:"sensor_type",v:sens_type},{t:"text",n:"sensor_name_mask",v:sens_mask},{t:"double",n:"lower_bound",v:lower_bound},{t:"double",n:"upper_bound",v:upper_bound},{t:"number",n:"merge",v:0+sens_merge},{t:"number",n:"reversed",v:0+trigger_inout}];return{type:"speed",params:params};},create_trigger_sms:function(mask){params=[{t:"text",n:"mask",v:mask}];return{type:"sms",params:params};},create_trigger_idle:function(max_speed,min_idle_time,sens_type,sens_mask,lower_bound,upper_bound,sens_merge,trigger_inout){if(typeof max_speed!='number'||max_speed>=10000)
  600. return null;params=[{t:"number",n:"min_speed",v:max_speed},{t:"number",n:"max_speed",v:10000},{t:"number",n:"min_idle_time",v:min_idle_time},{t:"text",n:"sensor_type",v:sens_type},{t:"text",n:"sensor_name_mask",v:sens_mask},{t:"double",n:"lower_bound",v:lower_bound},{t:"double",n:"upper_bound",v:upper_bound},{t:"number",n:"merge",v:0+sens_merge},{t:"number",n:"reversed",v:0+trigger_inout}];return{type:"speed",params:params};},create_trigger_alarm:function(){params=[];return{type:"alarm",params:params};},create_trigger_zone:function(zone,type,zone_by_ref,min_speed,max_speed,sensor_type,sensor_name_mask,lower,upper,merge,reversed){if((type!=0&&type!=1)||typeof zone!='object')
  601. return null;if(!min_speed||isNaN(min_speed))
  602. min_speed=0;if(!max_speed||isNaN(max_speed))
  603. max_speed=0;if((min_speed||max_speed)&&min_speed>max_speed)
  604. return null;if(typeof zone_by_ref=="undefined")
  605. zone_by_ref=false;var params=[{t:"text",n:"geozone_ids",v:zone.join(",")},{t:"long",n:"geozone_id",v:zone[0]},{t:"number",n:"type",v:type},{t:"number",n:"min_speed",v:min_speed},{t:"number",n:"max_speed",v:max_speed},{t:"text",n:"sensor_type",v:sensor_type},{t:"text",n:"sensor_name_mask",v:sensor_name_mask},{t:"double",n:"lower_bound",v:lower},{t:"double",n:"upper_bound",v:upper},{t:"number",n:"merge",v:merge},{t:"number",n:"reversed",v:reversed}];return{type:"geozone",params:params};},create_trigger_interposition:function(unit_guids,type,radius,min_speed,max_speed,sensor_type,sensor_name_mask,lower,upper,merge,reversed){if((type!=0&&type!=1)||!unit_guids)
  606. return null;if(!min_speed||isNaN(min_speed))
  607. min_speed=0;if(!max_speed||isNaN(max_speed))
  608. max_speed=0;if((min_speed||max_speed)&&min_speed>max_speed)
  609. return null;if(typeof zone_by_ref=="undefined")
  610. zone_by_ref=false;var params=[{t:"text",n:"unit_guids",v:unit_guids},{t:"double",n:"radius",v:radius},{t:"number",n:"type",v:type},{t:"number",n:"min_speed",v:min_speed},{t:"number",n:"max_speed",v:max_speed},{t:"text",n:"sensor_type",v:sensor_type},{t:"text",n:"sensor_name_mask",v:sensor_name_mask},{t:"double",n:"lower_bound",v:lower},{t:"double",n:"upper_bound",v:upper},{t:"number",n:"merge",v:merge},{t:"number",n:"reversed",v:reversed}];return{type:"interposition",params:params};},create_trigger_digital_input:function(input_index,reverse){if(typeof input_index!='number'||input_index<1||input_index>32)
  611. return null;params=[{t:"number",n:"input_index",v:input_index},{t:"number",n:"type",v:reverse?1:0}];return{type:"digital_input",params:params};},create_trigger_msg_param:function(param,lower_bound,upper_bound,reverse,kind,value){if(!kind&&(typeof lower_bound!='number'||typeof upper_bound!='number'||lower_bound>upper_bound||typeof param!='string'||param==""))
  612. return null;params=[{t:"text",n:"param",v:param},{t:"double",n:"lower_bound",v:lower_bound},{t:"double",n:"upper_bound",v:upper_bound},{t:"number",n:"type",v:reverse?1:0},{t:"number",n:"kind",v:kind},{t:"text",n:"text_mask",v:value}];return{type:"msg_param",params:params};},create_trigger_sensor_value:function(sensor_type,sensor_name_mask,lower_bound,upper_bound,merge,reverse){if(typeof lower_bound!='number'||typeof upper_bound!='number'||lower_bound>upper_bound||((sensor_type==""||sensor_type=="undefined")&&(sensor_name_mask==""||sensor_name_mask=="undefined")))
  613. return null;params=[{t:"text",n:"sensor_type",v:sensor_type},{t:"text",n:"sensor_name_mask",v:sensor_name_mask},{t:"double",n:"lower_bound",v:lower_bound},{t:"double",n:"upper_bound",v:upper_bound},{t:"number",n:"merge",v:merge?1:0},{t:"number",n:"type",v:reverse?1:0}];return{type:"sensor_value",params:params};},create_trigger_outage:function(otype,time){if(typeof otype!='number'||typeof time!='number'||time<=0)
  614. return null;params=[{t:"number",n:"type",v:otype},{t:"number",n:"time",v:time}];return{type:"outage",params:params};},create_action_user_access:function(users,acc_level){if(typeof users!='string')
  615. return null;params=[{t:"text",n:"users",v:users},{t:"number",n:"acc_level",v:acc_level}];return{type:"user_access",params:params};},create_action_set_counter:function(mileage,engine_hours,traffic,flags){params=[{t:"double",n:"mileage",v:mileage},{t:"number",n:"engine_hours",v:engine_hours},{t:"number",n:"traffic",v:traffic},{t:"number",n:"flags",v:flags}];return{type:"counter",params:params};},create_action_store_counter:function(mileage,engine_hours,flags){params=[{t:"text",n:"mileage",v:mileage},{t:"text",n:"engine_hours",v:engine_hours},{t:"number",n:"flags",v:flags}];return{type:"store_counter",params:params};},create_action_group_manipulation:function(add_to,remove_from){params=[{t:"text",n:"add_to",v:add_to},{t:"text",n:"remove_from",v:remove_from}];return{type:"group_manipulation",params:params};}});var WialonNotificationMsg=WialonMsg.extend({constructor:function(state){this.init_state(state);this.text=this.text.replace(/\n/g,"<br>");},name:"",text:"",unit_guid:"",lon:0,lat:0,get_unit:function(){return Wialon.get_item_by_guid(this.unit_guid);},get_name:function(){return this.name;},get_text:function(){return this.text;},get_lat:function(){return this.lat;},get_lon:function(){return this.lon;},init_state:function(state){this.base(state);this.unit_guid=state.unit;this.name=state.name;this.text=state.txt;this.lat=state.y;this.lon=state.x;return true;}});Wialon.add_msg_constructor("unm",WialonNotificationMsg);Wialon.add_item_plugin("avl_resource","avl_notifications",WialonNotificationsPlugin);var WialonSMSManagerPlugin=WialonItemPlugin.extend({phones:"",get_type:function(){return"avl_sms_manager";},init_state:function(state,item){this.base(state,item);if(typeof state.smsp!="undefined")
  616. this.phones=state.smsp;},get_phones:function(){return this.phones;},set_phones:function(phones){if(this.item.get_access_level()<Wialon.access_level("edit"))
  617. return false;if(this.get_phones()==phones)
  618. return true;this.item.remove_modification("user_set_phones",null);var item=this;var old_value=item.phones;this.item.add_modification("user_set_phones",phones,function(){item.phones=old_value;});this.phones=phones;return true;}});Wialon.add_item_plugin("user","avl_sms_manager",WialonSMSManagerPlugin);var WialonReportTemplatesPlugin=WialonItemPlugin.extend({report_templates:{},report_templates_limit:-1,get_type:function(){return"avl_report_templates";},init_state:function(state,item){this.base(state,item);if(typeof state.rep!="undefined"){this.report_templates={};for(var id in state.rep)
  619. this.report_templates[id]=new WialonReportTemplate(state.rep[id]);}
  620. if(typeof state.repmax!="undefined")
  621. this.report_templates_limit=state.repmax;if(typeof state.repu!="undefined"&&state.repu.length==2){var id=state.repu[0];var udata=state.repu[1];if(!udata){if(typeof this.report_templates[id]!="undefined")
  622. delete this.report_templates[id];}else
  623. this.report_templates[id]=new WialonReportTemplate(udata);}},get_report_templates:function(){var col=new Array;for(var id in this.report_templates)
  624. col.push(this.report_templates[id]);return col;},get_report_template:function(id){var n=this.report_templates[id];if(typeof n!="undefined")
  625. return n;return null;},get_report_templates_limit:function(){return this.report_templates_limit;},create_report_template:function(report_template,callback,cparam){if(!report_template||this.item.get_access_level()<Wialon.access_level("view"))
  626. return false;var item_plugin=this;return Wialon.exec_service({svc:"create_report_template",item_id:this.item.get_id(),report_template:WebAjax.to_list(report_template)},function(result,text){if(!result){callback(0,text,cparam);return;}
  627. var report_template_id=parseInt(text);callback(report_template_id,"",cparam);});},update_report_template:function(report_template_id,report_template,callback,cparam){if(!report_template||this.item.get_access_level()<Wialon.access_level("edit"))
  628. return false;var item_plugin=this;return Wialon.exec_service({svc:"update_report_template",item_id:this.item.get_id(),report_template:WebAjax.to_list(report_template),report_template_id:report_template_id},function(result,text){if(!result){callback(false,text,cparam);return;}
  629. callback(true,"",cparam);});},delete_report_template:function(report_template,callback,cparam){if(!report_template||this.item.get_access_level()<Wialon.access_level("edit"))
  630. return false;var item_plugin=this;return Wialon.exec_service({svc:"delete_report_template",item_id:this.item.get_id(),report_template_id:report_template.get_id()},function(result,text){if(!result){callback(false,text,cparam);return;}
  631. if(typeof item_plugin.report_templates[report_template.id]!="undefined")
  632. delete item_plugin.report_templates[report_template.id];callback(true,"",cparam);});},generate_report:function(report_template,object_id,object_prop_id,interval,lang,tz_offset,callback,cparam,timeout){if(!report_template||!interval)
  633. return false;var item_plugin=this;return Wialon.exec_service({svc:"generate_report",item_id:this.item.get_id(),report_template_id:report_template.get_id(),from:interval.time_from,to:interval.time_to,flags:interval.flags,object_id:object_id,object_prop_id:object_prop_id,lang:lang,tz_offset:tz_offset},function(result,text){if(!result||text==""){callback(false,text,null,cparam);return;}
  634. var data;eval("data = "+text);var rres;if(typeof data.rres!='undefined')
  635. rres=data.rres;else
  636. rres=[];var rweb;if(typeof data.rweb!='undefined')
  637. rweb=data.rweb;else
  638. rweb="report_template_result";var ren=null;if(typeof data.renjson!='undefined')
  639. ren=data.renjson;delete data;callback(true,rres,ren,rweb,cparam);},(!atoui(timeout)?180:atoui(timeout)+10)*1000);},get_report_result_rows:function(rres_name,table_index,missing_intervals,callback,cparam){if(!rres_name.length||!missing_intervals)
  640. return false;var item_plugin=this;return Wialon.exec_service({svc:"report_result_rows",rres_name:rres_name,table_index:table_index,missing_intervals:WebAjax.to_list(missing_intervals)},function(result,text){if(!result||text==""){callback(false,text,null,cparam);return;}
  641. var data;eval("data = "+text);var r;if(typeof data.r!='undefined')
  642. r=data.r;else
  643. r=[];delete data;callback(true,r,cparam);});},get_report_result_subrows:function(rres_name,table_index,row_index,callback,cparam){if(!rres_name.length)
  644. return false;var item_plugin=this;return Wialon.exec_service({svc:"report_result_rows",rres_name:rres_name,table_index:table_index,row_index:row_index},function(result,text){if(!result||text==""){callback(false,text,null,cparam);return;}
  645. var data;eval("data = "+text);delete data;callback(true,data,cparam);});},get_row_trip:function(rres_name,msg_from,msg_to,callback,cparam){if(!rres_name.length)
  646. return false;var item_plugin=this;return Wialon.exec_service({svc:"report_result_trip",rres_name:rres_name,msg_from:msg_from,msg_to:msg_to},function(result,text){if(!result||text==""){callback(false,null,cparam);return;}
  647. var data;eval("data = "+text);callback(true,data,cparam);});}});var WialonReportTemplate=Base.extend({constructor:function(state){this.id=state.id;this.name=state.nm;this.calc_type=state.ct;},id:0,name:"",calc_type:"",get_id:function(){return this.id;},get_name:function(){return this.name;},get_calc_type:function(){return this.calc_type;}});Wialon.add_item_plugin("avl_resource","avl_report_templates",WialonReportTemplatesPlugin);var WialonRoutesControlPlugin=WialonItemPlugin.extend({routes:{},routes_limit:-1,get_type:function(){return"avl_route_control";},init_state:function(state,item){this.base(state,item);if(typeof state.rc!="undefined"){this.routes={};for(var id in state.rc)
  648. this.routes[id]=new WialonUnitRoute(state.rc[id],id,item);}
  649. if(typeof state.rcmax!="undefined")
  650. this.routes_limit=state.rcmax;if(typeof state.rcu!="undefined"&&state.rcu.length==2){var id=state.rcu[0];var udata=state.rcu[1];if(!udata){if(typeof this.routes[id]!="undefined")
  651. delete this.routes[id];}else
  652. this.routes[id]=new WialonUnitRoute(udata,id,item);}},get_route:function(id){var n=this.routes[id];if(typeof n!="undefined")
  653. return n;return null;},get_routes:function(){var col=new Array;for(var id in this.routes)
  654. col.push(this.routes[id]);return col;},get_routes_limit:function(){return this.routes_limit;},create_route:function(route,callback,cparam){if(this.item.get_access_level()<Wialon.access_level("edit"))
  655. return false;var mod_ust=WebCMS.get_module("user_settings_time");var tz=0;if(mod_ust)
  656. tz=mod_ust.get_tz_dst_offset();var item_plugin=this;return Wialon.exec_service({svc:"create_route_control",item_id:this.item.get_id(),route:WebAjax.to_list(route),tz:tz,lang:WebCMS.get_lang()},function(result,text){if(!result){if(callback)
  657. callback(false,text,cparam);return;}
  658. var rc_id=parseInt(text);if(rc_id){item_plugin.routes[rc_id]=route;item_plugin.id=rc_id;route.id=rc_id;}
  659. if(callback)
  660. callback(rc_id,"",cparam);});},update_route:function(route_id,route,callback,cparam){if(this.item.get_access_level()<Wialon.access_level("edit"))
  661. return false;var item_plugin=this;var tz=0;var mod_ust=WebCMS.get_module("user_settings_time");if(mod_ust)
  662. tz=mod_ust.get_tz_dst_offset();return Wialon.exec_service({svc:"update_route_control",item_id:this.item.get_id(),route_id:route_id,route:WebAjax.to_list(route),tz:tz,lang:WebCMS.get_lang()},function(result,text){if(!result){callback(false,text,cparam);return;}
  663. if(route_id){item_plugin.routes[route_id]=route;item_plugin.routes[route_id].id=route_id;}
  664. callback(true,"",cparam);});},delete_route:function(route,callback,cparam){if(this.item.get_access_level()<Wialon.access_level("edit"))
  665. return false;var item_plugin=this;return Wialon.exec_service({svc:"delete_route_control",item_id:this.item.get_id(),route_id:route.get_id()},function(result,text){if(!result){callback(false,text,cparam);return;}
  666. if(typeof item_plugin.routes[route.get_id()]!="undefined")
  667. delete item_plugin.routes[route.get_id()];callback(true,"",cparam);});},enable_route:function(route,enabled,callback,cparam){if(!route||this.item.get_access_level()<Wialon.access_level("edit"))
  668. return false;var item_plugin=this;return Wialon.exec_service({svc:"enable_route_control",item_id:this.item.get_id(),route_id:route.get_id(),route_enabled:enabled},function(result,text){if(!result){if(callback)
  669. callback(false,text,cparam);return;}
  670. if(callback)
  671. callback(true,"",cparam);});}});var WialonUnitRoute=Base.extend({constructor:function(state,id,item){this.id=id;this.name=state.nm;this.descr=state.de;this.activation_time=state.at;this.flags=state.fl;this.status=state.st;this.point_index=state.pt;this.update_time=state.tm;if(state.z)
  672. this.zone_id=state.z;this.resource_id=state.ri;this.unit_id=item.get_id();},id:0,name:"",descr:"",activation_time:0,unit_id:0,resource_id:0,flags:0,zone_id:null,status:0,point_index:0,update_time:0,get_id:function(){return this.id;},get_name:function(){return this.name;},get_description:function(){return this.descr;},get_activation_time:function(){return this.activation_time;},get_unit:function(){if(this.unit_id)
  673. return Wialon.get_item(this.unit_id);else
  674. return null;},get_zone:function(){var res=this.get_resource();if(res){var pl=res.get_plugin("avl_zones_library")
  675. if(pl)
  676. return pl.get_zone(this.zone_id);}},get_resource:function(){return Wialon.get_item(this.resource_id);},get_status:function(){return this.status;},get_update_time:function(){return this.update_time;},get_point_index:function(){return this.point_index;},get_flags:function(){return this.flags;},is_enabled:function(){return!(this.status&0x80);}});var WialonUnitRouteConstructor=WialonUnitRoute.extend({constructor:function(){},set_name:function(name){this.name=name;},set_description:function(descr){this.descr=descr;},set_activation_time:function(time){this.activation_time=time;},set_unit:function(unit){this.unit_id=unit.get_id();},set_zone:function(zone,resource){this.zone_id=zone.get_id();this.resource_id=resource.get_id();this.flags|=0x1;},set_zone_ref:function(zone_id,resource_id){this.zone_id=zone_id;this.resource_id=resource_id;this.flags|=0x1;},set_flags:function(flags){this.flags=(flags&0xFFFFFFFE)|(this.flags&0x1);},set_status:function(status){this.status=status;}});Wialon.add_item_plugin("avl_unit","avl_route_control",WialonRoutesControlPlugin);var WialonMsgsManager={get_messages:function(type,ival1,ival2,flags,flags_mask,load_locations,callback,cparam){return Wialon.exec_service({svc:"get_msgs",item_id:this.id,type:type,ival1:ival1,ival2:ival2,flags:flags,flags_mask:flags_mask,load_locations:load_locations?1:0},function(result,text){if(!result||text==""){callback(false,null,cparam);return;}
  677. var msgs;eval("msgs = "+text);callback(true,msgs,cparam);delete msgs;});}};var WialonAccessor=WialonItem.extend({constructor:function(state,plugins){this.plugins=plugins;this.init_state(state);},acl:{},is_admin_group:false,get_avaible_items:function(){if(this.is_admin_group)
  678. return Wialon.get_items();var col=new Array;for(var id in this.acl){var item=Wialon.get_item(id);if(item)
  679. col.push(item);}
  680. return col;},set_access:function(item,access_level){if(item==null||typeof item!="object"||typeof access_level!="number"||this.get_access_level()<Wialon.access_level("manage")||Wialon.access_name(access_level)==""||item.get_access_level()<Wialon.access_level("manage"))
  681. return false;if(this.get_id_access_level(item.get_id())==access_level)
  682. return true;var item_id=item.get_id();this.remove_modification("item_set_access",function(data){if(data.item==item_id)
  683. return true;return false;});var user=this;var old_level=this.get_id_access_level(item_id);this.add_modification("item_set_access",{level:access_level,item:item_id},function(){user.acl[item_id]=old_level;});this.acl[item_id]=access_level;return true;},get_id_access_level:function(id){if(this.is_admin_group)
  684. return Wialon.access_level("manage");if(typeof this.acl[id]!='undefined')
  685. return this.acl[id];return 0;},set_id_access_level:function(id,lvl){if(this.is_admin_group)
  686. return;this.acl[id]=lvl;},init_state:function(state){this.base(state);if(typeof state.acl!="undefined"){if(typeof state.acl=="string"&&state.acl=="admin_group")
  687. this.is_admin_group=true;else
  688. this.acl=state.acl;}
  689. return true;}});var WialonUserGroup=WialonAccessor.extend({constructor:function(state,plugins){this.plugins=plugins;this.init_state(state);},users:[],all_users_group:false,get_users:function(){if(this.all_users_group)
  690. return Wialon.get_users();return Wialon.get_items_from_id_col(this.users);},check_user:function(user){if(this.all_users_group)
  691. return true;return this.check_item_in_id_col(this.users,user.get_id());},init_state:function(state){this.base(state);if(typeof state.u!="undefined"){if(typeof state.u=="string"&&state.u=="all_users_group"){this.all_users_group=true;this.users=new Array;}else
  692. this.users=state.u;}
  693. return true;}});Wialon.extend({get_user_groups:function(){return this.get_items("users_group");}});Wialon.add_item_constructor("users_group",WialonUserGroup);var WialonResource=WialonItem.extend({constructor:function(state,plugins){this.plugins=plugins;this.init_state(state);},init_state:function(state){if(!state)
  694. return;this.base(state);return true;},handle_event:function(evt){this.base(evt);if(evt.type=="msg_update"){var lmsg=this.last_msg;var pos=this.position;var msg=Wialon.construct_msg(evt.data);if(!msg)
  695. return;Wialon.fire_event("msg_registered",this.get_id(),msg);}}});WialonResource=WialonResource.extend(WialonMsgsManager);Wialon.extend({get_resources:function(){return this.get_items("avl_resource");}});Wialon.add_item_constructor("avl_resource",WialonResource);var WialonUser=WialonAccessor.extend({constructor:function(state,plugins){this.plugins=plugins;this.init_state(state);},flags:0,triggers:[],is_enabled:function(){return!(this.flags&0x1)?true:false;},password_changeable:function(){return(this.flags&0x2)?false:true;},can_create_item:function(){return(this.flags&0x4)?true:false;},settings_changeable:function(){return(this.flags&0x10)?false:true;},can_send_sms:function(){var user=Wialon.get_item(this.id);if(user!=null&&user.creator==0){return true;}
  696. return(this.flags&0x20)?true:false;},get_user_groups:function(){var col=Wialon.get_items("users_group");var rcol=new Array;for(var i=0;i<col.length;i++){if(col[i].check_user(this))
  697. rcol.push(col[i]);}
  698. return rcol;},set_flags:function(flags,mask){if(this.get_access_level()<Wialon.access_level("manage")||!mask||(mask&0xFFFF000))
  699. return false;if((this.get_flags()&mask)==flags)
  700. return true;this.remove_modification("user_set_flags",null);var item=this;var old_value=item.get_flags();this.add_modification("user_set_flags",{flags:flags,mask:mask},function(){item.flags=old_value;});var s=0;var check=1;for(var i=0;i<64;i++,check<<1){if(mask&check){if(flags&check)
  701. s|=check;}else if(this.flags&check)
  702. s|=check;}
  703. this.flags=s;return true;},get_flags:function(){return this.flags;},set_password:function(old_password,new_password){if(this.get_access_level()<Wialon.access_level("edit"))
  704. return false;this.remove_modification("user_set_password",null);this.add_modification("user_set_password",{old_passwd:old_password,new_passwd:new_password},function(){});return true;},reset_password:function(callback,cparam){if(this.get_access_level()<Wialon.access_level("manage"))
  705. return false;return Wialon.exec_service({svc:"reset_user_password",user_id:this.id},function(result,text){callback(result,text,cparam);});},init_state:function(state){this.base(state);if(typeof state.fl!="undefined"){this.flags=state.fl;}
  706. return true;},handle_event:function(evt){this.base(evt);if(evt.type=="msg_update"){var msg=Wialon.construct_msg(evt.data);if(!msg)
  707. return;Wialon.fire_event("msg_registered",this.get_id(),msg);}},set_hosts_mask:function(mask){if(this.get_access_level()<Wialon.access_level("manage"))
  708. return false;var user=this;var old_mask=this.mask;this.remove_modification("user_set_hosts_mask",null);this.add_modification("user_set_hosts_mask",{hosts_mask:mask},function(){});}});WialonUser=WialonUser.extend(WialonMsgsManager);Wialon.extend({get_users:function(){return this.get_items("user");},create_user:function(name,password,callback,cparam,creator){if(!this.can_create_item())
  709. return false;var creator_id=0;if(creator&&typeof creator=="object")
  710. creator_id=creator.get_id();if(name=="")
  711. return false;return this.exec_service({svc:"create_user",name:name,password:password,creator_id:creator_id},function(result,text){if(!result){callback(null,text,cparam);return;}
  712. var data;eval("data ="+text);var item=Wialon.construct_item(data);delete data;if(item){var user=creator;if(!user)
  713. user=Wialon.get_current_user();Wialon.set_user_access_for_item(item,user,Wialon.access_level("manage"));callback(item,"",cparam);Wialon.on_item_created(item);}});}});Wialon.add_item_constructor("user",WialonUser);var WialonUnit=WialonItem.extend({constructor:function(state,plugins){this.plugins=plugins;this.init_state(state);},unique_id:0,hw_type:0,phone_number:"",password:"",commands:[],last_msg:null,position:null,inet:[],params:null,driver:"",calc_flags:0,mileage_counter:0,engine_hours_counter:0,prev_msg:null,get_unique_id:function(){return this.unique_id;},get_hardware_type:function(){var hw=Wialon.get_item(this.hw_type);if(hw)
  714. return hw.get_name();return this.hw_type;},get_phone_number:function(){return this.phone_number;},get_password:function(){return this.password;},get_driver_code:function(){return this.driver;},get_commands:function(comm_type){if(typeof comm_type!="undefined"&&comm_type!=""){var cmds=this.commands[comm_type];if(typeof cmds!="undefined"){return cmds;}
  715. return[];}
  716. var checker={};var rcmds=new Array;for(var ctype in this.commands){var cmds=this.commands[ctype];for(var i=0;i<cmds.length;i++){var cmd=cmds[i];if(typeof checker[cmd]!="undefined")
  717. continue;checker[cmd]=1;rcmds.push(cmd);}}
  718. checker=null;return rcmds;},get_alias_names:function(comm_type,jobs){var cmds=new Array;if(typeof comm_type!="undefined"&&comm_type!=""){var pl=this.get_plugin("avl_cmd_aliases");if(!pl)
  719. return[];var cmd_aliases=pl.get_cmd_aliases();for(var i=0;i<cmd_aliases.length;i++){if(comm_type==cmd_aliases[i].get_cmd_link_type()){if(this.is_command_avaible(cmd_aliases[i].get_cmd_name(),comm_type,false))
  720. cmds.push(cmd_aliases[i].get_name());}}
  721. return cmds;}
  722. var pl=this.get_plugin("avl_cmd_aliases");if(!pl)
  723. return[];var cmd_aliases=pl.get_cmd_aliases();for(var i=0;i<cmd_aliases.length;i++){if(this.is_command_avaible(cmd_aliases[i].get_cmd_name(),(jobs?"":cmd_aliases[i].get_cmd_link_type()),false))
  724. cmds.push(cmd_aliases[i].get_name());}
  725. return cmds;},get_alias_command_link_type:function(cmd){var link_type=null;if(typeof cmd!="undefined"&&cmd!=""){var pl=this.get_plugin("avl_cmd_aliases");if(!pl)
  726. return null;var cmd_aliases=pl.get_cmd_aliases();for(var i=0;i<cmd_aliases.length;i++){if(cmd==cmd_aliases[i].get_name())
  727. link_type=cmd_aliases[i].get_cmd_link_type();}}
  728. return link_type;},get_command_by_alias_name:function(alias_name){var cmd=null;if(typeof alias_name!="undefined"&&alias_name!=""){var pl=this.get_plugin("avl_cmd_aliases");if(!pl)
  729. return null;var cmd_aliases=pl.get_cmd_aliases();for(var i=0;i<cmd_aliases.length;i++){if(alias_name==cmd_aliases[i].get_name()){cmd=cmd_aliases[i].get_cmd_name();break;}}}
  730. return cmd;},get_last_msg:function(){return this.last_msg;},get_prev_msg:function(){return this.prev_msg;},get_position:function(){return this.position;},get_last_param:function(param_name){var arr=param_name.split(":");if(arr.length)
  731. param_name=arr[0];if(!this.params){this.params={};this.update_params();}
  732. if(param_name.substr(0,5)=="const")
  733. return[parseFloat(param_name.substr(5)),this.get_last_msg(),this.get_prev_msg()];if(typeof this.params[param_name]!="undefined")
  734. return this.params[param_name];else{return["N/A",this.get_last_msg(),this.get_prev_msg()];}},get_last_params:function(){if(!this.params){this.params={};this.update_params();}
  735. var ret_params={};for(var param_name in this.params)
  736. ret_params[param_name]=this.params[param_name][0];return ret_params;},get_calc_flags:function(){return this.calc_flags;},get_mileage_counter:function(){return this.mileage_counter;},get_engine_hours_counter:function(){return this.engine_hours_counter;},update_params:function(reg_msg){if(!this.params)
  737. this.params={};var msgs=[];if(reg_msg&&typeof reg_msg!="undefined")
  738. msgs.push(reg_msg);else{var pos=this.get_position();var data=this.get_last_msg();if((pos&&data)&&(pos.get_time()<data.get_time())){msgs.push(pos);msgs.push(data);}else{msgs.push(data);msgs.push(pos);}}
  739. for(var m=0;m<msgs.length;m++){var msg=msgs[m];if(!msg)
  740. continue;if(msg.get_flags()&0x2){this.params["in"]=[msg.get_inputs(),msg];for(var i=0;i<32;i++)
  741. this.params["in"+(i+1)]=[(msg.get_inputs()&(1<<i))?1:0,msg,this.get_last_msg()];}
  742. if(msg.get_flags()&0x4){this.params["out"]=[msg.get_outputs(),msg,this.get_last_msg()];for(var i=0;i<32;i++)
  743. this.params["out"+(i+1)]=[(msg.get_outputs()&(1<<i))?1:0,msg,this.get_last_msg()];}
  744. var msg_params=msg.get_params();for(var param_name in msg_params)
  745. this.params[param_name]=[msg_params[param_name],msg,this.get_last_msg()];if(msg.is_position()){this.params["speed"]=[msg.get_speed(),msg,this.get_last_msg()];this.params["altitude"]=[msg.get_alt(),msg,this.get_last_msg()];this.params["sats"]=[msg.get_sat_count(),msg,this.get_last_msg()];this.params["course"]=[msg.get_course(),msg,this.get_last_msg()];this.params["lat"]=[msg.get_lat(),msg,this.get_last_msg()];this.params["lon"]=[msg.get_lon(),msg,this.get_last_msg()];}
  746. this.params["time"]=[msg.get_time(),msg,this.get_last_msg()];}},is_command_avaible:function(cmd_name,link_t,alias){var cmds=new Array;if(alias){var pl=this.get_plugin("avl_cmd_aliases");if(!pl)
  747. return;var cmd_aliases=pl.get_cmd_aliases();for(var i=0;i<cmd_aliases.length;i++){if(!link_t||link_t==cmd_aliases[i].get_cmd_link_type()){cmds.push(cmd_aliases[i].get_name());}}}
  748. else{cmds=this.get_commands(link_t);}
  749. for(var i=0;i<cmds.length;i++){if(cmds[i]==cmd_name)
  750. return true;}
  751. return false;},exec_cmd:function(cmd_name,cmd_param,link_type,timeout,callback,cparam,alias){if(!this.is_command_avaible(cmd_name,link_type,alias)||this.get_access_level()<Wialon.access_level("exec_cmd"))
  752. return false;return Wialon.exec_service({svc:"exec_unit_cmd",unit_id:this.id,cmd_name:cmd_name,cmd_param:cmd_param,link_type:link_type,timeout:timeout},function(result,text){callback(result,text,cparam);});},set_password:function(passwd){if(this.get_access_level()<Wialon.access_level("edit"))
  753. return false;if(this.get_password()==passwd)
  754. return true;this.remove_modification("unit_set_password",null);var item=this;var old_value=item.password;this.add_modification("unit_set_password",passwd,function(){item.password=old_value;});this.password=passwd;return true;},set_phone_number:function(phone){if(this.get_access_level()<Wialon.access_level("edit"))
  755. return false;if(this.get_phone_number()==phone)
  756. return true;this.remove_modification("unit_set_phone",null);var item=this;var old_value=item.phone_number;this.add_modification("unit_set_phone",phone,function(){item.phone_number=old_value;});this.phone_number=phone;return true;},set_calc_flags:function(calc_flags){if(this.get_access_level()<Wialon.access_level("edit"))
  757. return false;if(this.get_calc_flags()==calc_flags)
  758. return true;this.remove_modification("unit_set_calc_flags",null);var item=this;var old_value=item.calc_flags;this.add_modification("unit_set_calc_flags",calc_flags,function(){item.calc_flags=old_value;});this.calc_flags=calc_flags;return true;},set_mileage_counter:function(mileage_counter){if(this.get_access_level()<Wialon.access_level("edit"))
  759. return false;if(this.get_mileage_counter()==mileage_counter)
  760. return true;this.remove_modification("unit_set_mileage_counter",null);var item=this;var old_value=item.mileage_counter;this.add_modification("unit_set_mileage_counter",mileage_counter,function(){item.mileage_counter=mileage_counter;});this.mileage_counter=mileage_counter;return true;},set_engine_hours_counter:function(engine_hours_counter){if(this.get_access_level()<Wialon.access_level("edit"))
  761. return false;if(this.get_engine_hours_counter()==engine_hours_counter)
  762. return true;this.remove_modification("unit_set_engine_hours_counter",null);var item=this;var old_value=item.engine_hours_counter;this.add_modification("unit_set_engine_hours_counter",engine_hours_counter,function(){item.engine_hours_counter=engine_hours_counter;});this.engine_hours_counter=engine_hours_counter;return true;},set_bytes_counter:function(bytes_counter,reset){if(this.get_access_level()<Wialon.access_level("edit"))
  763. return false;this.add_modification("unit_set_bytes_counter",WebAjax.to_list([bytes_counter,reset]),function(){});return true;},set_unique_id:function(unq_id){if(this.get_access_level()<Wialon.access_level("edit"))
  764. return false;if(this.get_unique_id()==unq_id)
  765. return true;this.remove_modification("unit_set_unique_id",null);var item=this;var old_value=item.unique_id;this.add_modification("unit_set_unique_id",unq_id,function(){item.unique_id=old_value;});this.unique_id=unq_id;return true;},set_hardware_type:function(type){if(this.get_access_level()<Wialon.access_level("edit"))
  766. return false;if(this.hw_type==type)
  767. return true;this.remove_modification("unit_set_hw_type",null);var item=this;var old_value=item.hw_type;this.add_modification("unit_set_hw_type",type,function(){item.hw_type=old_value;});this.hw_type=type;return true;},init_state:function(state){this.base(state);if(typeof state.uid!="undefined")
  768. this.unique_id=state.uid;if(typeof state.hw!="undefined")
  769. this.hw_type=state.hw;if(typeof state.ph!="undefined")
  770. this.phone_number=state.ph;if(typeof state.psw!="undefined")
  771. this.password=state.psw;if(typeof state.cmds!="undefined")
  772. this.commands=state.cmds;if(typeof state.inet!="undefined")
  773. this.inet=state.inet;if(typeof state.drv!="undefined")
  774. this.driver=state.drv;if(typeof state.cfl!="undefined")
  775. this.calc_flags=state.cfl;if(typeof state.cneh!="undefined")
  776. this.engine_hours_counter=state.cneh;if(typeof state.cnm!="undefined")
  777. this.mileage_counter=state.cnm;if(typeof state.pos!="undefined"){if(state.pos)
  778. this.position=Wialon.construct_msg(state.pos);else
  779. this.position=null;}
  780. if(typeof state.lmsg!="undefined"){if(state.lmsg){if(state.lmsg=="dup")
  781. this.last_msg=this.position;else
  782. this.last_msg=Wialon.construct_msg(state.lmsg);}else
  783. this.last_msg=null;}
  784. return true;},handle_event:function(evt){this.base(evt);if(evt.type=="msg_update"){var lmsg=this.last_msg;var pos=this.position;var msg=Wialon.construct_msg(evt.data);if(!msg)
  785. return;var pos_updated=false;var data_updated=false;if(msg.get_type()=="ud"&&(!this.last_msg||msg.get_time()>this.last_msg.get_time())){this.update_params(msg);this.prev_msg=this.last_msg;this.last_msg=msg;data_updated=true;}else if(msg.get_type()=="udp"&&(!this.position||msg.get_time()>this.position.get_time())){this.update_params(msg);this.position=msg;pos_updated=true;data_updated=true;if(!this.last_msg||msg.get_time()>this.last_msg.get_time()){this.prev_msg=this.last_msg;this.last_msg=msg;}}
  786. msg.pos_updated=pos_updated;msg.data_updated=data_updated;Wialon.fire_event("msg_registered",this.get_id(),msg);if(pos_updated){if(!this.pos_update_timeout||typeof this.pos_update_timeout=="undefined"){var unit_id=this.get_id();this.pos_update_timeout=setTimeout(function(){var unit=Wialon.get_item(unit_id);if(!unit)
  787. return;unit.pos_update_timeout=null;Wialon.fire_event("unit_pos_updated",unit_id,unit.position);},1000);}}}}});WialonUnit=WialonUnit.extend(WialonMsgsManager);var WialonHWType=WialonItem.extend({constructor:function(state,plugins){this.plugins=plugins;this.init_state(state);},init_state:function(state){if(!state)
  788. return;this.base(state);return true;}});Wialon.extend({get_units:function(){return this.get_items("avl_unit");},get_hw_types:function(){return this.get_items("avl_hw");},create_unit:function(name,hw_type,callback,cparam,creator){if(!Wialon.get_current_user().can_create_item())
  789. return false;var creator_id=0;if(creator&&typeof creator=="object")
  790. creator_id=creator.get_id();if(name=="")
  791. return false;return this.exec_service({svc:"create_unit",name:name,hw_type:hw_type,creator_id:creator_id},function(result,text){if(!result){callback(null,text,cparam);return;}
  792. var data;eval("data ="+text);var item=Wialon.construct_item(data);delete data;if(item){var user=creator;if(!user)
  793. user=Wialon.get_current_user();Wialon.set_user_access_for_item(item,user,Wialon.access_level("manage"));callback(item,"",cparam);Wialon.on_item_created(item);}});}});Wialon.add_item_constructor("avl_hw",WialonHWType);Wialon.add_item_constructor("avl_unit",WialonUnit);var WialonWebObjects=Base.extend({constructor:null,interval_id:-1,interval_ok:30000,interval_err:10000,interval_curr:0,object_names:{},deleted_names:{},add_name:function(name){if(typeof this.object_names[name]!="undefined")
  794. return;this.object_names[name]=1;if(typeof this.deleted_names[name]!="undefined")
  795. delete this.deleted_names[name];if(WialonWebObjects.interval_id==-1){WialonWebObjects.interval_curr=WialonWebObjects.interval_ok;WialonWebObjects.interval_id=setInterval(function(){WialonWebObjects.update_names();},WialonWebObjects.interval_curr);}},delete_name:function(name){if(typeof this.object_names[name]=="undefined")
  796. return;delete this.object_names[name];if(typeof this.deleted_names[name]!="undefined")
  797. return;this.deleted_names[name]=1;},update_names:function(){var arr=[];for(name in this.object_names)
  798. arr.push(name);var darr=[];for(name in this.deleted_names)
  799. darr.push(name);if(!arr.length&&!darr.length)
  800. return;if(darr.length)
  801. this.deleted_names={};Wialon.exec_service({svc:"update_web_objects",names:arr.length?WebAjax.to_list(arr):"",dnames:darr.length?WebAjax.to_list(darr):""},function(result,text){var new_interval=0;if(!result){var obj_res=text.split(";");for(var i=0;i<obj_res.length;i++){if(obj_res[i]=="0")
  802. WialonWebObjects.delete_name(arr[i]);}
  803. if(WialonWebObjects.interval_curr!=WialonWebObjects.interval_err)
  804. new_interval=WialonWebObjects.interval_err;}else if(WialonWebObjects.interval_curr!=WialonWebObjects.interval_ok)
  805. new_interval=WialonWebObjects.interval_ok;if(new_interval){WialonWebObjects.interval_curr=new_interval;clearInterval(WialonWebObjects.interval_id);WialonWebObjects.interval_id=setInterval(function(){WialonWebObjects.update_names();},WialonWebObjects.interval_curr);}});}});var WialonImageRenderer=Base.extend({constructor:function(){this.tz_offset=get_local_timezone();this.layers=[];this.deleted_layers=[];},tz_offset:0,renderer_name:"",layers:[],deleted_layers:[],lupdated:false,version:1,add_layer:function(layer){if(!layer)
  806. return false;layer.enabled=1;if(typeof this.layers[layer.name]!="undefined")
  807. delete this.layers[layer.name];this.layers[layer.name]=layer;Wialon.fire_event("msgs_layer_added",layer,this);return true;},remove_layer:function(layer){if(!layer||typeof this.layers[layer.name]=="undefined")
  808. return false;this.lupdated=true;this.deleted_layers.push(layer.name);Wialon.fire_event("msgs_layer_removed",layer,this);delete this.layers[layer.name];return true;},enable_layer:function(layer,enable){if(!layer||typeof this.layers[layer.name]=="undefined")
  809. return false;if(layer.enabled!=(enable?1:0))
  810. this.lupdated=true;layer.enabled=enable?1:0;if(layer.enabled)
  811. Wialon.fire_event("msgs_layer_enabled",layer,this);else
  812. Wialon.fire_event("msgs_layer_disabled",layer,this);return true;},is_layer_enabled:function(layer){if(!layer||typeof this.layers[layer.name]=="undefined")
  813. return;return layer.enabled;},get_layer:function(layer_name){if(typeof this.layers[layer_name]=="undefined")
  814. return null;return this.layers[layer_name];},get_layers:function(only_enabled){if(typeof only_enabled=="undefined")
  815. only_enabled=false;var col=new Array;for(name in this.layers){if(!only_enabled||this.layers[name].enabled)
  816. col.push(this.layers[name]);}
  817. return col;},set_tz_offset:function(tz_offset){this.tz_offset=tz_offset;return true;},create_renderer:function(callback,cparam){if(this.renderer_name!="")
  818. return false;var item=this;return Wialon.exec_service({svc:"create_image_renderer",tz_offset:this.tz_offset},function(result,text){if(!result||text==""){callback(false,null,cparam);return;}
  819. var data;eval("data = "+text);item.renderer_name=data.name;item.bounds=data.bounds;delete data;WialonWebObjects.add_name(item.renderer_name);callback(true,item,cparam);});},update_renderer:function(callback,cparam){if(this.renderer_name=="")
  820. return;if(!this.lupdated){this.version++;callback(true,cparam);return;}
  821. var l1=[];var l2=[];for(name in this.layers){if(this.layers[name].enabled)
  822. l1.push(name);else
  823. l2.push(name);}
  824. var item=this;return Wialon.exec_service({svc:"update_image_layers",enabled_layers:l1.join("|"),disabled_layers:l2.join("|"),deleted_layers:this.deleted_layers.join("|"),tz_offset:this.tz_offset,rname:this.renderer_name},function(result,text){if(!result){if(callback)
  825. callback(false,cparam);return;}
  826. item.lupdated=false;item.deleted_layers=[];item.version++;if(callback)
  827. callback(true,cparam);});},attach_renderer:function(name){if(this.renderer_name!="")
  828. return false;this.renderer_name=name;WialonWebObjects.add_name(this.renderer_name);},destroy_renderer:function(){var layers=this.get_layers();for(var i=0;i<layers.length;i++)
  829. this.remove_layer(layers[i]);WialonWebObjects.delete_name(this.renderer_name);this.renderer_name="";this.update_renderer(null);},hit_test:function(lat,lon,scale,radius,callback,cparam){if(this.renderer_name==""||!lat||!lon)
  830. return false;var item=this;var url=WebAjax.get_jscript_base_url("wialon_sdk=1")+"/avl_hittest";return WebAjax.exec_service(url,{rname:this.renderer_name,lat:lat,lon:lon,scale:scale,radius:radius},function(result,text){if(!result||text==""){callback(false,null,cparam);return;}
  831. var data;eval("data="+text);if(data.type==1){var result={type:1,lat:data.lat,lon:data.lon,header:data.header,text:data.text};}else if(data.type==2){var msg=Wialon.construct_msg(data.msg);if(!msg){callback(false,null,cparam);return;}
  832. var _msg=data._msg?Wialon.construct_msg(data._msg):null;var result={type:2,unit:Wialon.get_item(data.unit_id),lat:msg.get_lat(),lon:msg.get_lon(),msg:msg,_msg:_msg,imsg:data.imsg};}else if(data.type==3){var result={type:3,lat:data.lat,lon:data.lon,rname:data.rname,lname:data.lname,data:data.shape};}else{callback(false,null,cparam);return;}
  833. callback(true,result,cparam);});}});var WialonImageLayer=Base.extend({name:"",enabled:1});var WialonUnitMessagesLayer=WialonImageLayer.extend({constructor:function(){this.units=[];this.bounds=[];},border_style:null,label_font_name:"",annot_font_name:"",non_valid_dash:"",units:[],curr_unit:null,curr_msg_style:null,name:"",renderer_name:"",add_unit:function(unit,type,ival1,ival2,trip_detect){this.finish_unit();this.curr_unit=new Object;this.curr_unit.id=unit.get_id();this.curr_unit.msgs_type=type;this.curr_unit.msgs_ival1=ival1;this.curr_unit.msgs_ival2=ival2;this.curr_unit.td=trip_detect;this.curr_unit.styles=new Array;},finish_unit:function(){if(!this.curr_unit)
  834. return;this.finish_msg_style();this.units.push(this.curr_unit);this.curr_unit=null;},set_unit_tracks_config:function(width,color,dir_offset,dir_size,speed_config){if(!this.curr_unit)
  835. return;this.curr_unit.track=new Object;this.curr_unit.track.width=width;this.curr_unit.track.color=sprintf("%08x",color);this.curr_unit.track.dir_offset=dir_offset;this.curr_unit.track.dir_size=dir_size;this.curr_unit.track.speed_conf=speed_config;},set_unit_split_config:function(split_interval,split_distance){if(!this.curr_unit)
  836. return;this.curr_unit.split=new Object;this.curr_unit.split.split_interval=split_interval;this.curr_unit.split.split_distance=split_distance;},set_unit_label_config:function(label,font_size,spacing,color,halo_size,halo_color,min_scale,max_scale){if(!this.curr_unit)
  837. return;this.curr_unit.label=new Object;this.curr_unit.label.text=label;this.curr_unit.label.font_size=font_size;this.curr_unit.label.spacing=spacing;this.curr_unit.label.color=sprintf("%08x",color);this.curr_unit.label.halo_size=halo_size;this.curr_unit.label.halo_color=sprintf("%08x",halo_color);this.curr_unit.label.min_scale=min_scale;this.curr_unit.label.max_scale=max_scale;this.curr_unit.label.text=label;},set_unit_road_lock:function(road_lock){if(!this.curr_unit)
  838. return;this.curr_unit.road_lock=road_lock;return true;},add_msg_style:function(is_moving,radius,color,check_placement,min_scale,max_scale){if(!this.curr_unit)
  839. return;this.finish_msg_style();this.curr_msg_style=new Object;this.curr_msg_style.is_moving=is_moving;this.curr_msg_style.radius=radius;this.curr_msg_style.color=sprintf("%08x",color);if(typeof check_placement!="undefined")
  840. this.curr_msg_style.check_placement=check_placement?1:0;else
  841. this.curr_msg_style.check_placement=1;if(typeof min_scale!="undefined")
  842. this.curr_msg_style.min_scale=min_scale;else
  843. this.curr_msg_style.min_scale=0;if(typeof max_scale!="undefined")
  844. this.curr_msg_style.max_scale=max_scale;else
  845. this.curr_msg_style.max_scale=0;this.curr_msg_style.flags=0;},set_msg_style_annot_config:function(annot_format,annot_font_size,annot_font_color,annot_bg_color,annot_border_color,annot_border_width,annot_min_scale,annot_max_scale){if(!this.curr_msg_style)
  846. return;this.curr_msg_style.annot_format=annot_format;this.curr_msg_style.annot_font_size=annot_font_size;this.curr_msg_style.annot_font_color=sprintf("%08x",annot_font_color);this.curr_msg_style.annot_bg_color=sprintf("%08x",annot_bg_color);this.curr_msg_style.annot_border_color=sprintf("%08x",annot_border_color);this.curr_msg_style.annot_border_width=annot_border_width;if(typeof annot_min_scale!="undefined")
  847. this.curr_msg_style.annot_min_scale=annot_min_scale;else
  848. this.curr_msg_style.annot_min_scale=0;if(typeof annot_max_scale!="undefined")
  849. this.curr_msg_style.annot_max_scale=annot_max_scale;else
  850. this.curr_msg_style.annot_max_scale=0;this.curr_msg_style.flags|=1;},set_msg_style_index_config:function(index_font_size,index_font_color,index_halo_radius,index_halo_color){if(!this.curr_msg_style)
  851. return;this.curr_msg_style.index_font_size=index_font_size;this.curr_msg_style.index_font_color=sprintf("%08x",index_font_color);this.curr_msg_style.index_halo_radius=index_halo_radius;this.curr_msg_style.index_halo_color=sprintf("%08x",index_halo_color);if(typeof index_halo_radius!="undefined")
  852. this.curr_msg_style.index_halo_radius=index_halo_radius;else
  853. this.curr_msg_style.index_halo_radius=0;if(typeof index_halo_color!="undefined")
  854. this.curr_msg_style.index_halo_color=sprintf("%08x",index_halo_color);else
  855. this.curr_msg_style.index_halo_color=0;this.curr_msg_style.flags|=2;},finish_msg_style:function(){if(!this.curr_msg_style||!this.curr_unit)
  856. return;this.curr_unit.styles.push(this.curr_msg_style);this.curr_msg_style=null;},set_border_style:function(color,width){this.border_style=new Object;this.border_style.width=width;this.border_style.color=sprintf("%08x",color);return true;},set_label_font_name:function(font_name){this.label_font_name=font_name;return true;},set_annot_font_name:function(font_name){this.annot_font_name=font_name;return true;},set_non_valid_dash:function(dash){this.non_valid_dash=dash;return true;},create_layer:function(renderer,name,callback,cparam){if(this.name!=""||!renderer||renderer.renderer_name==""||name=="")
  857. return false;this.finish_unit();var item=this;return Wialon.exec_service({svc:"create_msgs_layer",border_style:this.border_style?WebAjax.to_list(this.border_style):"",label_font_name:this.label_font_name,annot_font_name:this.annot_font_name,non_valid_dash:this.non_valid_dash,units:WebAjax.to_list(this.units),rname:renderer.renderer_name,lname:name,tz_offset:renderer.tz_offset},function(result,text){if(!result||text==""){callback(false,null,null,cparam);return;}
  858. var data;eval("data = "+text);item.name=data.name;var units;if(typeof data.units!='undefined')
  859. units=data.units;else
  860. units=[];item.units=units;item.bounds=data.bounds;delete data;if(renderer.add_layer(item))
  861. item.renderer_name=renderer.renderer_name;callback(true,item,renderer,cparam);});},attach_layer:function(renderer,layer_data){if(this.renderer_name!="")
  862. return false;this.name=layer_data.name;var units;if(typeof layer_data.units!='undefined')
  863. units=layer_data.units;else
  864. units=[];this.units=units;this.bounds=layer_data.bounds;if(renderer.add_layer(this))
  865. this.renderer_name=renderer.renderer_name;},get_unit_msgs:function(unit_id,index_from,index_to,callback,cparam){if(this.renderer_name==""||index_from>index_to)
  866. return false;var item=this;return Wialon.exec_service({svc:"get_unit_msgs_from_layer",lname:this.name,rname:this.renderer_name,from:atoui(index_from),to:atoui(index_to),unit_id:unit_id},function(result,text){if(!result||text==""){callback(false,null,cparam);return;}
  867. var msgs;eval("msgs = "+text);var col=new Array;for(var i=0;i<msgs.length;i++){var msg=Wialon.construct_msg(msgs[i]);if(msg)
  868. col.push(msg);}
  869. delete msgs;callback(true,col,cparam);});},hit_test:function(unit_id,lat,lon,calc_mileage,callback,cparam){if(this.renderer_name==""||!lat||!lon)
  870. return false;var item=this;return Wialon.exec_service({svc:"hit_test_layer",lname:this.name,rname:this.renderer_name,lat:lat,lon:lon,unit_id:unit_id,calc_mileage:calc_mileage?1:0},function(result,text){if(!result||text==""){callback(false,null,cparam);return;}
  871. var data;eval("data="+text);var msg=Wialon.construct_msg(data.msg);callback(true,{msg:msg,mileage:data.mileage,index:data.index},cparam);});},hit_test_time:function(unit_id,time,callback,cparam){if(this.renderer_name=="")
  872. return false;var item=this;var url=WebAjax.get_jscript_base_url("wialon_sdk=1")+"/avl_hittest_time";return WebAjax.exec_service(url,{unit_id:unit_id,lname:this.name,rname:this.renderer_name,time:time},function(result,text){if(!result||text==""){callback(false,null,cparam);return;}
  873. var data;eval("data="+text);var msg=Wialon.construct_msg(data.msg);var _msg=null;if(typeof data._msg!=="undefined")
  874. _msg=Wialon.construct_msg(data._msg);if(!msg){callback(false,null,cparam);return;}
  875. var result={msg:msg,_msg:_msg,index:data.index};callback(true,result,cparam);});},get_units_data:function(){return this.units;},get_bounds:function(){return this.bounds;}});
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement