
var WebCMS=Base.extend({constructor:null,modules:{},translation:{seconds:"seconds",minutes:"minutes",hours:"hours",days:"days"},img_servers:[],img_server_urls:"",lang:"",mode:"",modes:{},server_dst:1,register_module:function(mod){if(typeof mod!='object'||!mod)
return;var t=this.modules[mod.get_type()];if(typeof t!='undefined')
return;this.modules[mod.get_type()]=mod;},get_module:function(mod_type){var t=this.modules[mod_type];if(typeof t!='undefined')
return t;return null;},get_lang:function(){return this.lang;},get_time_interval_text:function(ival){var days=parseInt(ival/86400);ival-=days*86400;var hours=parseInt(ival/3600);ival-=hours*3600;var minutes=parseInt(ival/60);var seconds=ival-minutes*60;var sres="";if(days>0)
sres=sprintf("%d %s",days,this.translation.days);if(hours>0)
sres+=sprintf("%s%d %s",sres!=""?" ":"",hours,this.translation.hours);if(minutes>0&&days==0)
sres+=sprintf("%s%d %s",sres!=""?" ":"",minutes,this.translation.minutes);if(hours==0&&days==0)
sres+=sprintf("%s%d %s",sres!=""?" ":"",seconds,this.translation.seconds);return sres;},log_msg:function(text,type,_show_alert,lat,lon){if(typeof type=='undefined'||(type!=1&&type!=2))
type=0;if(typeof lat=="undefined")
lat=0;if(typeof lon=="undefined")
lon=0;var show_alert=false;if(typeof _show_alert=="undefined"){if(type==2)
show_alert=true;else
show_alert=false;}else
show_alert=_show_alert;var mod=this.get_module("log");if(mod){mod.log_msg(text,type,show_alert,lat,lon);return;}
log_text(text.replace(/\s+/," "));switch(type){case 0:case 1:break;case 2:if(show_alert)
alert(text);default:break;}},get_img_url:function(src_url){if(!this.img_servers.length||src_url.indexOf("http")==0)
return src_url;if(this.img_servers.length==1)
return this.img_servers[0]+src_url;var summ=0;for(var i=0;i<src_url.length;i++)
summ+=src_url.charCodeAt(i);var index=summ%this.img_servers.length;return this.img_servers[index]+src_url;},locate:function(lat,lon){if(!lat&&!lon)
return false;var mod_mm=WebCMS.get_module("monitoring_map");if(!mod_mm)
return false;var map=mod_mm.get_map();if(!map)
return false;var lonlat=new OpenLayers.LonLat(lon,lat);lonlat.transform(map.displayProjection,map.getProjectionObject());map.panTo(lonlat);var mod_mu=WebCMS.get_module("monitoring_units_markers");if(!mod_mu)
return false;var markers_layer=mod_mu.get_layer();if(!markers_layer)
return false;var size=new OpenLayers.Size(21,32);var offset=new OpenLayers.Pixel(-(size.w/2),-size.h);var img_path=WebCMS.get_img_url("/img/arrow.gif");var icon=new OpenLayers.Icon(img_path,size,offset);var marker=new OpenLayers.Marker(lonlat,icon);markers_layer.addMarker(marker);setTimeout(function(){markers_layer.removeMarker(marker);marker.destroy();marker=null;},3000);return false;},on_init:function(opts){if(typeof opts=='undefined')
opts=[];for(var i=0;i<opts.length;i++){var opt=opts[i];var mod;if(opt.m=="web_cms")
mod=this;else
mod=this.get_module(opt.m);if(typeof mod!='undefined')
mod[opt.n]=opt.v;}
var arr=this.mode.split(",");for(var m in arr)
this.modes[arr[m]]=1;this.img_servers=this.img_server_urls.split(",");for(var mod_type in this.modules){var mod=this.modules[mod_type];if(mod&&typeof mod.on_init=='function'){try{mod.on_init();}catch(e){test("WebCMS: module '"+mod_type+"' init error: "+e);}}}
Wialon.bind_event_handler("wialon_events_poll",0,this.actions_event_callback,this);WebCMS.log_action("login","");},apply_translations:function(lang){this.lang=lang;if(typeof adf_i18n!="object")
return;for(var mod_type in adf_i18n){var mod;if(mod_type=="web_cms")
mod=this;else
mod=this.get_module(mod_type);if(!mod)
continue;var tr=adf_i18n[mod_type];for(var text in tr)
mod.translation[text]=tr[text];}},check_mode:function(mode){return(typeof this.modes[mode]!='undefined');},compare_wildcard:function(text,template){var pattern=template.toLowerCase();pattern=pattern.replace(/\\/g,"\\\\");pattern=pattern.replace(/\./g,"\\.");pattern=pattern.replace(/\?/g,".");pattern=pattern.replace(/\*/g,".*");pattern=pattern.replace(/\^/g,"\\^");pattern=pattern.replace(/\$/g,"\\$");pattern=pattern.replace(/\+/g,"\\+");pattern=pattern.replace(/\(/g,"\\(");pattern=pattern.replace(/\)/g,"\\)");pattern=pattern.replace(/\[/g,"\\[");pattern=pattern.replace(/\]/g,"\\]");pattern=pattern.replace(/\{/g,"\\{");pattern=pattern.replace(/\}/g,"\\}");return text.toLowerCase().match(new RegExp('^'+pattern+'$'));},log_actions:null,need_upload:0,log_action:function(tp,param){return;if(!this.log_actions)
this.log_actions=new Array;this.log_actions.push({tp:tp,param:param});if(!WebCMS.need_upload)
WebCMS.need_upload=1;},actions_event_callback:function(event_name,event_id,event_data,cparam){return;if(WebCMS.need_upload&&WebCMS.need_upload++<10){setTimeout(function(){WebCMS.need_upload=0;var arr=WebCMS.log_actions;WebCMS.log_actions=new Array;var arr2=new Array;for(var i=0;i<arr.length;i++){arr2.push(arr[i].tp);arr2.push(arr[i].param);}
jQuery.post("/log_actions.html",{a:arr2.join(",")});},100);}}});var UserSettingsCMSModule=Base.extend({constructor:null,need_serialize:false,get_type:function(){return"user_settings";},store_settings:function(){this.need_serialize=true;},on_init:function(){Wialon.bind_event_handler("wialon_events_poll",0,this.event_callback,this);},event_callback:function(event_name,event_id,event_data,cparam){if(UserSettingsCMSModule.need_serialize){setTimeout(function(){var user=Wialon.get_current_user();if(!user)
return;UserSettingsCMSModule.need_serialize=false;user.serialize(function(result,col){if(!result){UserSettingsCMSModule.need_serialize=true;}else{for(var i=0;i<col.length;i++)
WebCMS.log_msg(col[i],2);}});},100);}}});WebCMS.register_module(UserSettingsCMSModule);var CMSTreeNode=Base.extend({init_state:function(id,item,opts){this.id=id;this.row_id=id;this.item=item;this.children=new Array();if(typeof opts=="undefined")
return;if(typeof opts.on_node_html_func!="undefined")
this.on_node_html_func=opts.on_node_html_func;if(typeof opts.on_data_html_func!="undefined")
this.on_data_html_func=opts.on_data_html_func;if(typeof opts.on_has_children_func!="undefined")
this.on_has_children_func=opts.on_has_children_func;if(typeof opts.on_set_node_handlers_func!="undefined")
this.on_set_node_handlers_func=opts.on_set_node_handlers_func;},parent:null,id:0,row_id:"",children:null,item:null,expanded:false,level:-1,on_node_html_func:null,on_data_html_func:null,on_has_children_func:null,on_set_node_handlers_func:null,get_id:function(){return this.id;},get_row_id:function(){return this.row_id;},get_parent:function(){return this.parent;},get_item:function(){return this.item;},get_children:function(){return this.children;},has_children:function(){var res=false;if(this.on_has_children_func)
return this.on_has_children_func();return(this.children&&this.children.length)?true:false;},add_child:function(child){if(child){this.children.push(child);child.parent=this;child.level=this.level+1;return true;}
return false;},remove_child:function(child){if(!child)
return false;for(var i=0;i<this.children.length;i++){if(this.children[i]==child){this.children.splice(i,1);return true;}}
return false;},remove_childs:function(){for(var i=0;i<this.children.length;i++){this.children[i].remove_childs();}
this.children=new Array;},get_level:function(){return this.level;},is_root:function(){return(this.parent==null&&this.id==0)?true:false;},is_expanded:function(){return this.expanded;},expand:function(exp){this.expanded=exp;},is_parent:function(node,recursive){if(!recursive){return(node&&this.get_parent()&&this.get_parent().get_id()==node.get_id());}
function find_parent(n){var p=n.get_parent();while(p){if(p&&node&&p.get_id()==node.get_id())
return true;p=p.get_parent();}
return false;}
return find_parent(this);}});var CMSTreeView=Base.extend({constructor:function(module,table_id,root,options){this.target_id=table_id;this.module=module;this.root=root;if(typeof options.show_root!='undefined')
this.show_root=options.show_root;if(typeof options.columns!='undefined')
this.columns=options.columns;if(typeof options.on_expand_func=='function')
this.on_expand_func=options.on_expand_func;function make_event_handler(self,func){return function(evt){return func.apply(self,arguments);};}
var target=jQuery.browser.msie?jQuery("#"+this.target_id+" > tbody"):jQuery("#"+this.target_id);if(target)
target.bind("click",null,make_event_handler(this,this.on_click));},module:null,storage:null,columns:null,handlers:null,on_expand_func:null,redraw:function(){this.clear();this.replace_rows(this.root);},clear:function(){var target=jQuery("#"+this.target_id);if(target&&jQuery("#"+this.target_id+" > tr").size())
target.html("");},replace_rows:function(node){var target=jQuery.browser.msie?jQuery("#"+this.target_id+" > tbody")[0]:jQuery("#"+this.target_id)[0];if(!target)
return;var nodes=node.get_rows();if(node.is_root())
node=null;else
nodes.unshift(node);var el=node?jQuery("#"+node.get_row_id()):null;var ins=this.remove_rows(node,el)||null;if(ins)ins=ins[0]||null;function is_last(row,i){while(i<nodes.length){if(nodes[i].get_level()==row.get_level())
return false;else if(nodes[i].get_level()<row.get_level())
return true;i+=1;}
return(ins&&ins.tree_node.get_level()<row.get_level());}
for(var i=0;nodes&&i<nodes.length;i++){var n=nodes[i];var last=is_last(n,i+1)||(i==nodes.length-1&&ins==null);var row=this.create_row(n,{last:last})[0];row.tree_node=n;if(target)
target.insertBefore(row,ins);if(n.on_set_node_handlers_func)
n.on_set_node_handlers_func();}
jQuery("#"+this.target_id+" .tree-expander").hover(function(){jQuery(this).addClass("hover");jQuery(this).siblings().addClass("hover");},function(){jQuery(this).removeClass("hover");jQuery(this).siblings().removeClass("hover");});},remove_rows:function(node,el){if(!node){this.clear();return null;}
if(!el&&node){var target=jQuery.browser.msie?jQuery("#"+this.target_id+" > tbody"):jQuery("#"+this.target_id);el=target.find("#"+node.get_row_id());}
var level=node.get_level();var succ=null;while(el&&el.length==1){var succ=el.next();var domelt=el[0];if(domelt.tree_node){domelt.parentNode.removeChild(domelt);}
el=(succ.length==1&&succ[0].tree_node.get_level()>level)?succ:null;}
return succ;},create_row:function(node,opts){if(!node)
return node;var expander="tree-expander-empty";if(node.has_children()){if(node.is_expanded()){expander="tree-expander-opened";}else{expander="tree-expander-closed";}}
var rclass="tree-row"+" "+(opts.last?"tree-row-last ":"");var level_class="tree-level-"+node.get_level();var tr="<tr id='"+node.get_row_id()+"' class='"+rclass+" "+level_class+"'>";var td="<td class='tree-expander'><span class='"+expander+"'>"+node.on_node_html_func()+"</span></td>";td+=node.on_data_html_func(this.columns);return jQuery(tr+td+"</tr>");},get_node_by_row:function(el){if(typeof el.parent!="undefined")
return el;el=jQuery(el);while(el.length>0){if(el[0].tree_node)
return el[0].tree_node;el=el.parent();}
return null;},get_node_by_id:function(id){if(!id)
return this.root;function find(node,parent){var children=node.get_children();if(children&&children.length){for(var i=0;i<children.length;i++){var fnode=find(children[i],node);if(fnode)return fnode;}}else if(parent){if(node.get_id()==id)
return node;}else{return null;}}
return find(this.root);},on_click:function(evt){var el=jQuery(evt.target);if(el.hasClass('tree-expander')||el.parent().hasClass('tree-expander')){var node=this.get_node_by_row(evt.target);if(node&&this.on_expand_func){if(this.on_expand_func(node)){this.replace_rows(node);}}}}});var MonitoringUnitsCustomCMSModule=Base.extend({constructor:null,icon_size:16,unit_state_modules:{},units:{},visible_units_count:0,units_cache:{},visible_units_cache:{},groups:{},group_units:{},visible_groups:{},visible_groups_count:0,use_search:0,events:{monitorig_unit_state_changed:new Array,workspace_units_changed:0},remove_img_url:"/monitoring_units_custom/del.png",remove_all_img_url:"/monitoring_units_custom/remove_all.png",up_img_url:"/monitoring_units_custom/up.png",down_img_url:"/monitoring_units_custom/down.png",all_group_img_url:"/monitoring_units_custom/all_group_node.png",all_unit_img_url:"/monitoring_units_custom/all_unit_node.png",combo_img_url:"/monitoring_units_custom/combo.png",combo_custom_img_url:"/monitoring_units_custom/combo_custom.png",add_all_img_url:"/monitoring_units_custom/add_all.png",translation:{},rows_array:new Array,rows_array_hash:new Object,sort_state:{mod:"name",order:0},display:false,monitoring_units:0,get_visible_units:function(){var col=new Array;for(var id in this.visible_units_cache){if(this.visible_units_cache[id])
col.push(this.units[id]);}
return col;},get_visible_groups:function(){var col=new Array;for(var id in this.visible_groups)
col.push(this.groups[id]);return col;},get_units:function(){if(!this.units)
return Wialon.get_units();var col=new Array;for(var id in this.units)
col.push(this.units[id]);return Wialon.sort_items(col);},get_groups:function(){if(!this.groups)
return Wialon.get_unit_groups();var col=new Array;for(var id in this.groups)
col.push(this.groups[id]);return Wialon.sort_items(col);},is_unit_available:function(unit){if(!unit)
return false;if(this.units&&this.units[unit.get_id()])
return true;return false;},is_group_available:function(group){if(!group)
return false;if(this.groups&&this.groups[group.get_id()])
return true;return false;},is_group_visible:function(group){if(!group)
return false;if(!this.visible_groups||!this.visible_groups[group.get_id()])
return false;return true;},is_unit_visible:function(unit){if(!unit||unit.get_type()!="avl_unit"||!unit.get_position()||!this.visible_units_cache||!this.visible_units_cache[unit.get_id()])
return false;return true;},fire_events:function(){var added_removed=false;if(this.events["monitorig_units_all_added"]){Wialon.fire_event("monitorig_units_all_added",0,0);added_removed=true;}
if(this.events["monitorig_units_all_removed"]){Wialon.fire_event("monitorig_units_all_removed",0,0);added_removed=true;}
if(!added_removed){var len=this.events["monitorig_unit_state_changed"].length;if(len)
Wialon.fire_event("monitorig_unit_state_changed",this.events["monitorig_unit_state_changed"],0);if(this.events["workspace_units_changed"])
Wialon.fire_event("workspace_units_changed",0,"avl_unit");if(this.events["workspace_groups_changed"])
Wialon.fire_event("workspace_units_changed",0,"avl_unit_group");}
this.events["monitorig_unit_state_changed"]=new Array;this.events["workspace_units_changed"]=0;this.events["workspace_groups_changed"]=0;this.events["monitorig_units_all_removed"]=0;this.events["monitorig_units_all_added"]=0;},select_unit:function(unit){if(!unit)
return;if(this.monitoring_type){if(!this.is_unit_visible(unit)){this.show_hide_unit(unit,false);this.fire_events();}
WebCMS.log_action("locate","unit");Wialon.fire_event("monitoring_unit_selected",unit.get_id(),unit);this.store_settings();}else{if(!this.is_group_visible(unit)){this.show_hide_group(unit,false);this.fire_events();}
WebCMS.log_action("locate","unit");Wialon.fire_event("monitoring_unit_group_selected",unit.get_id(),unit);this.store_settings();}},add_remove_group:function(group,remove){var gid=group.get_id();if(!remove){if(this.group_units[gid])
return;var units=group.get_units();this.group_units[gid]=new Array;for(var i=0;i<units.length;i++){this.add_remove_unit(units[i],remove);this.group_units[gid].push(units[i]);}
this.groups[gid]=group;this.rows_array_hash[gid]=this.rows_array.length;this.rows_array.push(group);this.events["workspace_groups_changed"]=1;jQuery("#monitoring_units_target").ft_append_rows(1);}else{if(!this.groups[gid])
return;this.show_hide_group(group,remove);var units=this.group_units[gid];if(units){for(var i=0;i<units.length;i++)
this.add_remove_unit(units[i],remove);}
delete this.group_units[gid];delete this.groups[gid];var pos=this.rows_array_hash[gid];if(typeof pos=="undefined")
return;this.rows_array.splice(pos,1);for(var id in this.rows_array_hash){if(this.rows_array_hash[id]>pos)
this.rows_array_hash[id]--;}
this.events["workspace_groups_changed"]=1;jQuery("#monitoring_units_target").ft_remove_row(pos,"monitoring_units_custom_row_"+gid);}},show_hide_group:function(group,hide){var gid=group.get_id();if(!this.groups[gid])
return;if(!hide){var units=group.get_units();if(this.is_group_visible(group))
return;for(var i=0;i<units.length;i++)
this.show_hide_unit(units[i],hide);this.visible_groups[gid]=1;this.visible_groups_count++;jQuery("#monitoring_units_custom_check_"+gid).attr("checked",1);}else{if(!this.is_group_visible(group))
return;var units=this.group_units[gid];if(units){for(var i=0;i<units.length;i++)
this.show_hide_unit(units[i],hide);}
delete this.visible_groups[gid];this.visible_groups_count--;jQuery("#monitoring_units_custom_check_"+gid).removeAttr("checked");}},add_remove_unit:function(unit,remove){var uid=unit.get_id();if(!remove){if(this.units[uid]&&this.monitoring_type)
return;this.units[uid]=unit;if(this.monitoring_type){this.rows_array_hash[uid]=this.rows_array.length;this.rows_array.push(unit);jQuery("#monitoring_units_target").ft_append_rows(1);}
if(!this.units_cache[uid]){this.units_cache[unit.get_id()]=1;this.events["workspace_units_changed"]=1;}else
this.units_cache[unit.get_id()]++;}else{if(!this.units[uid])
return;this.show_hide_unit(unit,true);if(this.units_cache[uid])
this.units_cache[unit.get_id()]--;if(!this.units_cache[unit.get_id()]){delete this.units[uid];this.events["workspace_units_changed"]=1;}
if(this.monitoring_type){var pos=this.rows_array_hash[uid];if(typeof pos=="undefined")
return;this.rows_array.splice(pos,1);for(var id in this.rows_array_hash){if(this.rows_array_hash[id]>pos)
this.rows_array_hash[id]--;}
jQuery("#monitoring_units_target").ft_remove_row(pos,"monitoring_units_custom_row_"+uid);}}},show_hide_unit:function(unit,hide){var uid=unit.get_id();if(!this.units[uid])
return;if(!hide){if(!this.visible_units_cache[uid]){this.visible_units_cache[uid]=1;this.visible_units_count++;this.events["monitorig_unit_state_changed"].push({uid:uid,hide:!hide});}else
this.visible_units_cache[uid]++;jQuery("#monitoring_units_custom_check_"+uid).attr("checked",1);}else{if(this.visible_units_cache[uid])
this.visible_units_cache[uid]--;if(!this.visible_units_cache[uid]){this.visible_units_count--;this.events["monitorig_unit_state_changed"].push({uid:uid,hide:!hide});}
jQuery("#monitoring_units_custom_check_"+uid).removeAttr("checked");}},get_type:function(){return"monitoring_units";},register_unit_state_module:function(mod){if(typeof mod!='object'||!mod)
return;var t=this.unit_state_modules[mod.get_type()];if(t&&typeof t!='undefined')
return;this.unit_state_modules[mod.get_type()]=mod;var mod_menu=WebCMS.get_module("device_actions_menu");if(mod_menu)
mod_menu.unregister_unit_state_module(mod);},unregister_unit_state_module:function(mod,ignore_menu){if(typeof mod!='object'||!mod)
return;var t=this.unit_state_modules[mod.get_type()];if(t&&typeof t!='undefined')
this.unit_state_modules[mod.get_type()]=null;var mod_menu=WebCMS.get_module("device_actions_menu");if(mod_menu&&!ignore_menu)
mod_menu.unregister_unit_state_module(mod);},load_layout:function(monitoring_type){var user=Wialon.get_current_user();if(!user)
return;this.monitoring_type=monitoring_type;this.clear();var col=monitoring_type?jQuery.parseJSON(user.get_private_property("monu","null")):jQuery.parseJSON(user.get_private_property("monug","null"));if(!col)
col=monitoring_type?Wialon.get_units():Wialon.get_unit_groups();if(typeof col=="number"){var s=col;col=[s];}
for(var i=0;i<col.length;i++){var object=Wialon.get_item(col[i]);if(!object||(monitoring_type&&object.get_type()!="avl_unit")||(!monitoring_type&&object.get_type()!="avl_unit_group"))
continue;if(monitoring_type)
this.add_remove_unit(object,false);else
this.add_remove_group(object,false);}
var col=monitoring_type?jQuery.parseJSON(user.get_private_property("monuv","null")):jQuery.parseJSON(user.get_private_property("monugv","null"));if(!col)
col=monitoring_type?Wialon.get_units():Wialon.get_unit_groups();if(typeof col=="number"){var s=col;col=[s];}
for(var i=0;i<col.length;i++){var object=Wialon.get_item(col[i]);if(!object||(monitoring_type&&object.get_type()!="avl_unit")||(!monitoring_type&&object.get_type()!="avl_unit_group"))
continue;if(monitoring_type)
this.show_hide_unit(object,false);else
this.show_hide_group(object,false);}
this.fire_events();},on_init:function(){var user=Wialon.get_current_user();if(!user)
return;if(this.use_search)
this.load_layout(parseInt(user.get_private_property("mont","1")));Wialon.bind_event_handler("item_deleted",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_unit"||event_data.get_type()=="avl_unit_group")
MonitoringUnitsCustomCMSModule.delete_unit(event_data);});Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.ugi!='undefined')
MonitoringUnitsCustomCMSModule.on_unit_icon_updated(Wialon.get_item(event_id));if(typeof event_data.nm!='undefined')
MonitoringUnitsCustomCMSModule.on_unit_name_updated(Wialon.get_item(event_id));if(typeof event_data.u!='undefined'&&!MonitoringUnitsCustomCMSModule.monitoring_type)
MonitoringUnitsCustomCMSModule.on_unit_group_updated(Wialon.get_item(event_id));if(typeof event_data.acl!='undefined'&&event_id==Wialon.get_current_user().get_id()){for(var i in event_data.acl){var unit=Wialon.get_item(i);if(unit&&unit.get_type()=="avl_unit")
MonitoringUnitsCustomCMSModule.on_unit_acl_updated(unit);}}});Wialon.bind_event_handler("unit_pos_updated",0,function(event_type,event_id,event_data){MonitoringUnitsCustomCMSModule.on_unit_pos_updated(event_id);});Wialon.bind_event_handler("item_created",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_unit"||event_data.get_type()=="avl_unit_group")
MonitoringUnitsCustomCMSModule.on_custom_select_units([event_data]);});Wialon.bind_event_handler("show_panel",0,function(event_type,event_id,event_data){if(event_id=="monitoring")
MonitoringUnitsCustomCMSModule.on_display_init();});},on_display_init:function(reinit){if(this.shown&&!reinit){this.make_table();return;}else
this.shown=true;var user=Wialon.get_current_user();var mod_menu=WebCMS.get_module("device_actions_menu");if(mod_menu){if(mod_menu.get_unit_state_modules_count())
this.register_unit_state_module(mod_menu);else
this.unregister_unit_state_module(mod_menu);}
this.make_table();if(!reinit)
jQuery("#monitoring_units_target_div").attr("title","X").Tooltip({showURL:false,track_children:true,bodyHandler:function(e){if(!e)
return"";var mod=MonitoringUnitsCustomCMSModule;var id=e;var arr=id.split("_");if(id=="monitoring_units_custom_target_name"||id=="monitoring_units_custom_target_img_custom")
return"<b>"+mod.translation.select_devices+"</b>";if(id=="monitoring_units_custom_target_img_add_custom")
return"<b>"+mod.translation.add_all_devices+"</b>";else if(id=="monitoring_units_custom_sort_name")
return"<b>"+mod.translation.sort_by_name+"</b>";else if(id=="monitoring_units_custom_remove_all")
return"<b>"+mod.translation.remove_all_units+"</b>";else if(id.substring(0,31)=="monitoring_units_custom_delete_"&&arr.length==5)
return"<b>"+mod.translation.remove_unit+"</b>";else if(id.substring(0,29)=="monitoring_units_custom_name_"&&arr.length==5){if(mod.monitoring_type){var mod_it=WebCMS.get_module("unit_info_text");if(mod_it)
return mod_it.get_info_text(Wialon.get_item(arr[4]));}else{var mod_it=WebCMS.get_module("unit_groups_list");if(mod_it)
return mod_it.get_group_units(Wialon.get_item(arr[4]));}}else if(jQuery("#"+id).attr("mod")?true:false||jQuery("#"+id).parent().attr("mod")?true:false){var module=jQuery("#"+id).attr("mod");if(!module||!module.length)
module=jQuery("#"+id).parent().attr("mod");if(typeof mod.unit_state_modules[module].get_unit_state_title=="function")
return"<b>"+mod.unit_state_modules[module].get_unit_state_title(Wialon.get_item(arr[arr.length-1]))+"</b>";else if(typeof mod.unit_state_modules[module].get_head_title=="function")
return"<b>"+mod.unit_state_modules[module].get_head_title()+"</b>";}else if(jQuery("#"+id).attr("module")?true:false||jQuery("#"+id).parent().attr("module")?true:false){var module=jQuery("#"+id).attr("module");if(!module||!module.length)
module=jQuery("#"+id).parent().attr("module");if(typeof mod.unit_state_modules[module].get_head_title=="function")
return"<b>"+mod.unit_state_modules[module].get_head_title()+"</b>";}
return"";}}).click(function(evt){var target=evt.target;var id=target.id;if(typeof id=="undefined")
return;var mod=MonitoringUnitsCustomCMSModule;if(id=="monitoring_units_custom_target_img_custom"||id=="monitoring_units_custom_target_name"){var mod_menu=WebCMS.get_module("workspace_devices");if(mod_menu)
mod_menu.show("monitoring_units_custom_target");return false;}
if(id=="monitoring_units_custom_target_img_add_custom"){var units=mod.monitoring_type?Wialon.get_units():Wialon.get_unit_groups();mod.on_custom_select_units(units);return false;}
if(id=="monitoring_units_custom_sort_name"){var sort_order=0;if(mod.sort_state.mod=="name")
sort_order=mod.sort_state.order;sort_order=sort_order?0:1;mod.sort_state.mod="name";mod.sort_state.order=sort_order;mod.on_sort("name",sort_order);if(sort_order)
jQuery("#monitoring_units_custom_sort_name").attr("src",WebCMS.get_img_url(MonitoringUnitsCustomCMSModule.up_img_url));else
jQuery("#monitoring_units_custom_sort_name").attr("src",WebCMS.get_img_url(MonitoringUnitsCustomCMSModule.down_img_url));return false;}
if(id=="monitoring_units_custom_remove_all"){mod.on_remove_all_units();return;}
if(jQuery("#"+id).attr("sortable")?true:false||jQuery("#"+id).parent().attr("sortable")?true:false){var module=jQuery("#"+id).attr("module");if(!module||!module.length)
module=jQuery("#"+id).parent().attr("module");var sort_order=0;if(mod.sort_state.mod==module)
sort_order=mod.sort_state.order;sort_order=sort_order?0:1;mod.sort_state.mod=module;mod.sort_state.order=sort_order;mod.on_sort(module,sort_order);return;}
var arr=id.split("_");if(id.substring(0,30)=="monitoring_units_custom_check_"&&arr.length==5){var unit_id=parseInt(arr[4]);MonitoringUnitsCustomCMSModule.on_unit_checkbox_clicked(evt,unit_id>0?unit_id:"all");return;}
if(id.substring(0,29)=="monitoring_units_custom_name_"&&arr.length==5){MonitoringUnitsCustomCMSModule.select_unit(Wialon.get_item(parseInt(arr[4])));return;};if(jQuery("#"+id).attr("mod")?true:false||jQuery("#"+id).parent().attr("mod")?true:false){var module=jQuery("#"+id).attr("mod");if(!module||!module.length)
module=jQuery("#"+id).parent().attr("mod");if(typeof mod.unit_state_modules[module].on_click=="function")
mod.unit_state_modules[module].on_click(arr[arr.length-1],evt);return;}
if(id.substring(0,31)=="monitoring_units_custom_delete_"&&arr.length==5){MonitoringUnitsCustomCMSModule.delete_unit(Wialon.get_item(parseInt(arr[4])));return;};});},monitoring_type_change:function(){var val=jQuery("#monitoring_type_selection").val();var mod=MonitoringUnitsCustomCMSModule;if(val=="avl_unit"&&mod.monitoring_type!=1){Wialon.fire_event("monitorig_units_all_removed",0,0);mod.load_layout(1);Wialon.fire_event("workspace_units_changed",0,"avl_unit");Wialon.fire_event("workspace_units_changed",0,"avl_unit_group");mod.on_display_init(1);var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mont",mod.monitoring_type);mod_us.store_settings();var mod_menu=WebCMS.get_module("workspace_devices");if(mod_menu)
mod_menu.on_activate("monitoring_units_custom_target");}else if(val=="avl_unit_group"&&mod.monitoring_type!=0){Wialon.fire_event("monitorig_units_all_removed",0,0);mod.load_layout(0);mod.on_display_init(1);Wialon.fire_event("workspace_units_changed",0,"avl_unit");Wialon.fire_event("workspace_units_changed",0,"avl_unit_group");var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mont",mod.monitoring_type);mod_us.store_settings();var mod_menu=WebCMS.get_module("workspace_devices");if(mod_menu)
mod_menu.on_activate("monitoring_units_custom_target");}},make_table:function(units_col){var mod=MonitoringUnitsCustomCMSModule;mod.rows_array=new Array;mod.rows_array_hash=new Object;mod.rows_array_hash["monitoring_units_custom_header"]=mod.rows_array.length;mod.rows_array.push("monitoring_units_custom_header");if(!units_col)
units_col=mod.monitoring_type?mod.get_units():mod.get_groups();for(var i=0;i<units_col.length;i++){mod.rows_array_hash[units_col[i].get_id()]=mod.rows_array.length;mod.rows_array.push(units_col[i]);}
var td_count=4;if(!mod.use_search)
td_count=3;for(var mod_type in mod.unit_state_modules)
if(mod.unit_state_modules[mod_type]){if(!mod.monitoring_type&&mod.unit_state_modules[mod_type].group_incompatible)
continue;var head=mod.unit_state_modules[mod_type].get_head_html();if(!head.length)
continue;td_count++;}
var tbl_obj=new Object();tbl_obj.get_row=this.get_row_html;tbl_obj.cols_count=td_count;tbl_obj.rows_count=mod.rows_array.length;tbl_obj.erase=true;tbl_obj.gap=4;tbl_obj.parent_class="panel_parent";jQuery("#monitoring_units_target").fast_table(tbl_obj);},get_row_html:function(pos){var mod=MonitoringUnitsCustomCMSModule;if(pos==0){var html="";for(var mod_type in mod.unit_state_modules)
if(mod.unit_state_modules[mod_type]){if(!mod.monitoring_type&&mod.unit_state_modules[mod_type].group_incompatible)
continue;var sortable=0;if(typeof(mod.unit_state_modules[mod_type].on_sort)=="function")
sortable=1;var head=mod.unit_state_modules[mod_type].get_head_html();if(!head.length)
continue;if(sortable)
html+="<td nowrap module='"+mod_type+"' style='cursor:pointer' sortable='1'>"+mod.unit_state_modules[mod_type].get_head_html()+"</td>";else
html+="<td nowrap module='"+mod_type+"'>"+mod.unit_state_modules[mod_type].get_head_html()+"</td>";}
if(mod.use_search)
html+="<td><img id='monitoring_units_custom_remove_all' src='"+WebCMS.get_img_url(mod.remove_all_img_url)+"' border='0' align='absmiddle' style='cursor: pointer;'/></td></tr>";else
html+="</tr>";var filter_html="";if(mod.use_search){filter_html="<table align='left' class='tree_group_header_table' cellpadding='0' cellspacing='0' border='0'>";filter_html+="<tr><td width='100%' align='left' valign='middle' class='header_td'><div class='workspace_devices_page'><select id='monitoring_type_selection' onchange='MonitoringUnitsCustomCMSModule.monitoring_type_change()'><option value='avl_unit'>"+mod.translation.unit+"</option>";filter_html+="<option value='avl_unit_group' "+(!mod.monitoring_type?"selected":"")+">"+mod.translation.unit_group+"</option></select>";filter_html+="&nbsp;&nbsp;<img id='monitoring_units_custom_target_img_custom' src='"+WebCMS.get_img_url(mod.combo_custom_img_url)+"' border='0' align='absmiddle' style='cursor: pointer;' class='workspace_devices_page'/>";filter_html+="&nbsp;&nbsp;<img id='monitoring_units_custom_target_img_add_custom' src='"+WebCMS.get_img_url(mod.combo_img_url)+"' border='0' align='absmiddle' style='cursor: pointer;' class='workspace_devices_page'/>";filter_html+="</div>";filter_html+="<div align='left' class='tree_group_content' id='monitoring_units_custom_target_div'><br><table width='100%' cellpadding='0' cellspacing='0' class='tree_group_table' id='monitoring_units_custom_target_custom'><tbody></tbody></table></div>";if(mod.sort_state.mod=="name"&&mod.sort_state.order)
filter_html+="<td class='header_td'><img order='0' id='monitoring_units_custom_sort_name' style='cursor:pointer' src='"+WebCMS.get_img_url(mod.up_img_url)+"'>";else
filter_html+="<td class='header_td'><img order='0' id='monitoring_units_custom_sort_name' style='cursor:pointer' src='"+WebCMS.get_img_url(mod.down_img_url)+"'>";filter_html+="</td></tr></table>";}else{filter_html="<table align='left' class='tree_group_header_table' cellpadding='0' cellspacing='0' border='0'>";filter_html+="<tr><td width='100%' align='left' valign='middle' class='header_td'><div style='padding: 1px;font-weight: bold;' class='workspace_devices_page'>"+mod.translation.unit+"</td>";if(mod.sort_state.mod=="name"&&mod.sort_state.order)
filter_html+="<td class='header_td'><img order='0' id='monitoring_units_custom_sort_name' style='cursor:pointer' src='"+WebCMS.get_img_url(mod.up_img_url)+"'>";else
filter_html+="<td class='header_td'><img order='0' id='monitoring_units_custom_sort_name' style='cursor:pointer' src='"+WebCMS.get_img_url(mod.down_img_url)+"'>";filter_html+="</td></tr></table>";}
html="<td id='monitoring_units_custom_target' width='100%' colspan='2' align='left'>"+filter_html+"</td>"+html;if(mod.monitoring_type)
html="<tr id='monitoring_units_custom_header'><td><input type='checkbox' name='monitoring_units_custom_check_all' id='monitoring_units_custom_check_all' "+(mod.visible_units_count==mod.rows_array.length-1?"checked":"")+"/></td>"+html;else
html="<tr id='monitoring_units_custom_header'><td><input type='checkbox' name='monitoring_units_custom_check_all' id='monitoring_units_custom_check_all' "+(mod.visible_groups_count==mod.rows_array.length-1?"checked":"")+"/></td>"+html;return{id:"monitoring_units_custom_header",html:html};}
var device=mod.rows_array[pos];if(!device||typeof device=="undefined")
return null;var item_id="monitoring_units_custom_check_"+device.get_id();var row_id="monitoring_units_custom_row_"+device.get_id();var img_html="";var pl=device.get_plugin("avl_item_icon");if(pl)
img_html="<img id='monitoring_units_custom_icon_"+device.get_id()+"' src='"+pl.get_icon_url(mod.icon_size)+"'/>";var checked_state="";if(mod.monitoring_type){if(mod.is_unit_visible(device))
checked_state="checked='true' ";if(!device||device.get_type()!="avl_unit"||!device.get_position())
checked_state+="disabled='true' ";}else{if(mod.is_group_visible(device))
checked_state="checked='true' ";if(!device.get_units().length)
checked_state+="disabled='true' ";}
var html="<tr id='"+row_id+"'><td><input type='checkbox' "+checked_state+"name='"+item_id+"' id='"+item_id+"'/></td>";html+="<td align='center'>"+img_html+"</td>";html+="<td id='monitoring_units_custom_name_"+device.get_id()+"' width='100%' oddColor='#CFCFCF' style='cursor:pointer'>"+device.get_name()+"</td>";for(var mod_type in mod.unit_state_modules)
if(mod.unit_state_modules[mod_type]){if(!mod.monitoring_type&&mod.unit_state_modules[mod_type].group_incompatible)
continue;var state=mod.unit_state_modules[mod_type].get_unit_state_html(device);if(!state.length)
continue;if(!mod.monitoring_type&&mod.unit_state_modules[mod_type].group_incompatible)
continue;if(typeof mod.unit_state_modules[mod_type].on_click=="function")
html+="<td nowrap mod='"+mod_type+"' style='cursor:pointer'>"+mod.unit_state_modules[mod_type].get_unit_state_html(device)+"</td>";else
html+="<td nowrap mod='"+mod_type+"'>"+mod.unit_state_modules[mod_type].get_unit_state_html(device)+"</td>";}
if(mod.use_search)
html+="<td><img id='monitoring_units_custom_delete_"+device.get_id()+"' src='"+WebCMS.get_img_url(mod.remove_img_url)+"' border='0' style='cursor:pointer'/></td>";html+="</tr>";return{id:row_id,html:html};},on_sort:function(mod_type,sort_order){if(mod_type!="name"&&typeof(this.unit_state_modules[mod_type])=="undefined")
return;if(mod_type!="name"&&typeof(this.unit_state_modules[mod_type].on_sort)!="function")
return;if(this.monitoring_type){var units=this.get_units();if(mod_type=="name")
this.on_sort_by_name(units,sort_order);else
this.unit_state_modules[mod_type].on_sort(units,sort_order);this.make_table(units);}else{var groups=this.get_groups();if(mod_type=="name"){this.on_sort_by_name(groups,sort_order);this.make_table(groups);}}},on_sort_by_name:function(units,asc){units.sort(function(a,b){var u1,u2;if(!asc){u1=a;u2=b;}else{u1=b;u2=a;}
var a_n=u1.get_name();var b_n=u2.get_name();if(a_n==b_n)
return 0;if(a_n>b_n)
return 1;else
return-1;});},clear:function(){this.units={};this.visible_units_count=0;this.units_cache={};this.visible_units_cache={};this.groups={};this.group_units={};this.visible_groups={};this.visible_groups_count=0;},on_remove_all_units:function(skip_store){this.clear();this.make_table([]);Wialon.fire_event("monitorig_units_all_removed",0,0);Wialon.fire_event("workspace_units_changed",0,"avl_unit");Wialon.fire_event("workspace_units_changed",0,"avl_unit_group");this.store_settings();},on_custom_select_units:function(col,remove,skip_store){for(var i=0;i<col.length;i++)
if(col[i].get_type()=="avl_unit")
this.add_remove_unit(col[i],remove);else
this.add_remove_group(col[i],remove);if(!skip_store)
this.store_settings();this.fire_events();WebCMS.log_action("unitshow","add");},on_custom_select_all_units:function(){if(this.monitoring_type){var units=this.get_units();this.on_custom_select_units(units);}else{var groups=this.get_groups();this.on_custom_select_units(groups);}
this.fire_events();},check_all_flag:function(){if(this.monitoring_type){if(this.visible_units_count==this.rows_array.length-1)
jQuery("#monitoring_units_custom_check_all").attr("checked",1);else
jQuery("#monitoring_units_custom_check_all").removeAttr("checked");}else{if(this.visible_groups_count==this.rows_array.length-1)
jQuery("#monitoring_units_custom_check_all").attr("checked",1);else
jQuery("#monitoring_units_custom_check_all").removeAttr("checked");}},on_unit_checkbox_clicked:function(evt,unit_id){var state=evt.target.checked?true:false;if(unit_id=="all"){if(state)
this.events["monitorig_units_all_added"]=1;else
this.events["monitorig_units_all_removed"]=1;if(this.monitoring_type){var units=this.get_units();for(var i=0;i<units.length;i++)
if(state&&!this.is_unit_visible(units[i]))
this.show_hide_unit(units[i],false);else if(!state&&this.is_unit_visible(units[i]))
this.show_hide_unit(units[i],true);}else{var groups=this.get_groups();for(var i=0;i<groups.length;i++)
if(state&&!this.is_group_visible(groups[i]))
this.show_hide_group(groups[i],false);else if(!state&&this.is_group_visible(groups[i]))
this.show_hide_group(groups[i],true);}}else{var object=Wialon.get_item(unit_id);if(!object)
return;if(this.monitoring_type){if(state&&!this.is_unit_visible(object))
this.show_hide_unit(object,false);else if(!state&&this.is_unit_visible(object))
this.show_hide_unit(object,true);}else{if(state&&!this.is_group_visible(object))
this.show_hide_group(object,false);else if(!state&&this.is_group_visible(object))
this.show_hide_group(object,true);}}
this.store_settings();this.fire_events();return;},on_unit_icon_updated:function(unit){if(!unit)
return;var pl=unit.get_plugin("avl_item_icon");if(pl)
jQuery("#monitoring_units_custom_icon_"+unit.get_id()).attr("src",pl.get_icon_url(this.icon_size));},on_unit_name_updated:function(unit){if(!unit)
return;jQuery("#monitoring_units_custom_name_"+unit.get_id()).html(unit.get_name());},on_unit_pos_updated:function(unit_id){jQuery("#monitoring_units_custom_check_"+unit_id).attr("disabled",false);},on_unit_acl_updated:function(unit){if(!unit)
return;var mod_ul=WebCMS.get_module("devices_list");if(!mod_ul)
return;var html=mod_ul.get_unit_state_html(unit);jQuery("#devices_list_row_"+unit.get_id()).parent().html(html);},update_unit_state:function(unit,state){if(!unit)
return;if(this.monitoring_type)
this.show_hide_unit(unit,!state);else
this.show_hide_group(unit,!state);this.fire_events();},delete_unit:function(unit){if(this.monitoring_type)
this.add_remove_unit(unit,true);else
this.add_remove_group(unit,true);this.fire_events();this.store_settings();},store_settings:function(){var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mont",this.monitoring_type);if(this.monitoring_type){var col=new Array;if(this.units){for(var id in this.units)
col.push(id);}
var prop_value=jQuery.toJSON(col);if(!col.length)
prop_value="[]";user.set_private_property("monu",prop_value);var col=new Array;for(var id in this.visible_units_cache)
if(this.visible_units_cache[id])
col.push(id);var prop_value=jQuery.toJSON(col);if(!col.length)
prop_value="[]";user.set_private_property("monuv",prop_value);mod_us.store_settings();}else{var col=new Array;if(this.groups){for(var id in this.groups)
col.push(id);}
var prop_value=jQuery.toJSON(col);if(!col.length)
prop_value="[]";user.set_private_property("monug",prop_value);var col=new Array;for(var id in this.visible_groups)
col.push(id);var prop_value=jQuery.toJSON(col);if(!col.length)
prop_value="[]";user.set_private_property("monugv",prop_value);mod_us.store_settings();}
this.check_all_flag();},on_unit_group_updated:function(group){if(!group)
return;var visible=this.is_group_visible(group);this.add_remove_group(group,true);this.add_remove_group(group,false);if(visible)
this.show_hide_group(group,false);this.fire_events();jQuery("#monitoring_units_target").ft_update_row("monitoring_units_custom_row_"+group.get_id());this.check_all_flag();}});WebCMS.register_module(MonitoringUnitsCustomCMSModule);var DeviceActionsMenuCMSModule=Base.extend({constructor:null,registered_actions:{},started_timer:null,do_action_img_url:"/device_actions_menu/gears.png",head_img_url:"/device_actions_menu/head.png",row_img_url:"/device_actions_menu/row.png",monitoring_img_url:"/device_actions_menu/foldbar_monitoring.png",translation:{},show_control:-1,get_type:function(){return"device_actions_menu";},priority:9,on_init:function(){var html="<div id='device_actions_menu_div' style='display:none;position:absolute;z-index: 2999; border: 1px solid #000000; background-color: #EEEEEE; color: #000000;'></div>";jQuery("body").append(html);jQuery("#device_actions_menu_div").hover(function(){var mod=DeviceActionsMenuCMSModule;if(mod.started_timer){clearTimeout(mod.started_timer);mod.started_timer=null;}},function(){var mod=DeviceActionsMenuCMSModule;if(mod.started_timer)
return;mod.started_timer=setTimeout(function(){jQuery("#device_actions_menu_div").css("display","none");mod.started_timer=null;},500);}).click(function(evt){var target=evt.target;var id=target.id;var mod=DeviceActionsMenuCMSModule;if(typeof id=="undefined")
return;if(jQuery("#"+id).attr("mod")?true:false||jQuery("#"+id).parent().attr("mod")?true:false){var module=jQuery("#"+id).attr("mod");if(!module||!module.length)
module=jQuery("#"+id).parent().attr("mod");var arr=id.split("_");if(mod.registered_actions[module]&&typeof mod.registered_actions[module].on_click=="function")
mod.registered_actions[module].on_click(arr[arr.length-1],evt);}
if(mod.started_timer)
clearTimeout(mod.started_timer);jQuery("#device_actions_menu_div").css("display","none");}).attr("title","X").Tooltip({showURL:false,track_children:true,bodyHandler:function(e){if(!e)
return"";var mod=DeviceActionsMenuCMSModule;var id=e;var arr=id.split("_");if(jQuery("#"+id).attr("mod")?true:false||jQuery("#"+id).parent().attr("mod")?true:false){var module=jQuery("#"+id).attr("mod");if(!module||!module.length)
module=jQuery("#"+id).parent().attr("mod");if(!mod.registered_actions[module])
return"";if(typeof mod.registered_actions[module].get_unit_state_title=="function")
return"<b>"+mod.registered_actions[module].get_unit_state_title(Wialon.get_item(arr[arr.length-1]))+"</b>";else if(typeof mod.registered_actions[module].get_head_title=="function")
return"<b>"+mod.registered_actions[module].get_head_title()+"</b>";}
return"";}});var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd&&!disable_monitoring_settings)
mod_usd.add_row(this);},on_show_action_dlg:function(unit_id){if(!unit_id)
return;var unit=Wialon.get_item(unit_id);if(!unit)
return;var showed=this.started_timer?true:false;if(this.started_timer)
clearTimeout(this.started_timer);this.started_timer=null;var html="<table style='padding: 5px'>";var mod_map=WebCMS.get_module("monitoring_units");if(!mod_map)
return;for(var i in this.registered_actions){if(!mod_map.monitoring_type&&this.registered_actions[i].group_incompatible)
continue;if(typeof this.registered_actions[i].on_click!="function")
html+="<tr><td mod='"+this.registered_actions[i].get_type()+"'>"+this.registered_actions[i].get_unit_state_html(unit)+"</td></tr>";else
html+="<tr><td mod='"+this.registered_actions[i].get_type()+"' style='cursor:pointer'>"+this.registered_actions[i].get_unit_state_html(unit)+"</td></tr>";}
html+="</table>";jQuery("#device_actions_menu_div").html(html);var ofs=jQuery("#device_actions_menu_btn_"+unit_id).offset();var win_height=jQuery(window).height();var height=jQuery("#device_actions_menu_div").height();var top=ofs.top;if(ofs.top+height>win_height-20)
top=win_height-height-20;jQuery("#device_actions_menu_div").css("left",ofs.left).css("top",top);if(!showed)
jQuery("#device_actions_menu_div").css("display","");},get_head_html:function(){return"<img id='device_actions_menu_head' src='"+WebCMS.get_img_url(this.head_img_url)+"'/>";},get_head_title:function(){return this.translation.title_head;},register_unit_state_module:function(mod){var mod_map=WebCMS.get_module("monitoring_units");if(!mod_map)
return;mod_map.unregister_unit_state_module(mod,true);this.registered_actions[mod.get_type()]=mod;},unregister_unit_state_module:function(mod){delete this.registered_actions[mod.get_type()];},get_unit_state_modules_count:function(){var count=0;var mod_map=WebCMS.get_module("monitoring_units");if(!mod_map)
return 0;for(var type in this.registered_actions){if(!mod_map.monitoring_type&&this.registered_actions[type].group_incompatible)
continue;count++;}
return count;},get_unit_state_html:function(unit){if(!unit)
return"&nbsp;";var unit_id=unit.get_id();return"<img id='device_actions_menu_btn_"+unit_id+"' src='"+WebCMS.get_img_url(this.row_img_url)+"'/>";},get_unit_state_title:function(unit){return this.translation.title_item;},on_click:function(unit_id){var unit=Wialon.get_item(unit_id);if(!unit)
return;DeviceActionsMenuCMSModule.on_show_action_dlg(unit_id);},get_row_tab_info:function(){return{id:"monitoring_settings",title:this.translation.tab_name};},get_row_html:function(){return"<tr><td>"+this.translation.title_head+"</td><td><img src='"+this.monitoring_img_url+"' id='device_action_monitoring'/></td><td><img src='"+this.head_img_url+"' id='device_action_menu'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#device_action_monitoring").attr("title",this.translation.to_monitoring).Tooltip({showURL:false});jQuery("#device_action_menu").attr("title",this.translation.to_menu).Tooltip({showURL:false});},save_row_data:function(){return false;}});WebCMS.register_module(DeviceActionsMenuCMSModule);var WorkspaceDevicesCMSModule=Base.extend({constructor:null,counter:1,searches:new Array,units:null,units_list:null,activated:false,translation:{},get_type:function(){return"workspace_devices";},on_init:function(){this.searches.push({name:this.translation.search_by_name,comment:this.translation.search_by_name_comment,check_unit:function(unit,template){return WebCMS.compare_wildcard(unit.get_name(),template);},group_compartible:1});this.searches.push({name:this.translation.search_by_unit,comment:this.translation.search_by_unit_comment,check_unit:function(unit,template){var units=unit.get_units();for(var i=0;i<units.length;i++)
if(WebCMS.compare_wildcard(units[i].get_name(),template))
return true;return false;},group_compartible:1,unit_incompartible:1});this.searches.push({name:this.translation.search_by_creator,comment:this.translation.search_by_creator_comment,check_unit:function(unit,template){var user=unit.get_user_creator();var name=user?user.get_name():"";if(!name.length&&!template.length)
return true;return name.length?WebCMS.compare_wildcard(name,template):false;},group_compartible:1});this.searches.push({name:this.translation.search_by_phone,comment:this.translation.search_by_phone_comment,check_unit:function(unit,template){var phone=unit.get_phone_number();if(!phone.length&&!template.length)
return true;return phone.length?WebCMS.compare_wildcard(phone,template):false;}});this.searches.push({name:this.translation.search_by_unique_id,comment:this.translation.search_by_unique_id_comment,check_unit:function(unit,template){var id=unit.get_unique_id();if(!id.length&&!template.length)
return true;return id.length?WebCMS.compare_wildcard(id,template):false;}});this.searches.push({name:this.translation.search_by_hw,comment:this.translation.search_by_hw_comment,check_unit:function(unit,template){return WebCMS.compare_wildcard(unit.get_hardware_type(),template);}});this.searches.push({name:this.translation.search_by_user_access,comment:this.translation.search_by_user_access_comment,check_unit:function(unit,template){var users=Wialon.get_users();for(var i=0;i<users.length;i++){var name=users[i].get_name();if(WebCMS.compare_wildcard(name,template)&&unit.get_user_access(users[i])>=Wialon.access_level("view"))
return true;}}});},show:function(target_id){if(!this.activated)
this.on_activate(target_id);jQuery("#workspace_devices_page").css("display","");jQuery("#workspace_devices_template").focus();},register_search:function(mod){if(!mod||typeof mod.get_search!="function")
return false;var search=mod.get_search();if(!search||!search.name||!search.comment||typeof search.check_unit!="function")
return false;this.searches.push(search);},get_searches:function(){return this.searches;},on_activate:function(target_id){jQuery("#workspace_devices_page").remove();this.units_list=null;this.units=null;var html="<div id='workspace_devices_page' style='display: none; color: black;z-index:2999;padding: 5px;position:absolute;height:auto;border:1px solid black;overflow:auto;' class='wizard_dlg_content workspace_devices_page'>";html+="<table id='workspace_devices_table'>";html+="<tr><th>"+this.translation.search_by+"</th><th>"+this.translation.template+"</th>";html+="<th><img src='/workspace_devices/add.png' id='workspace_devices_add' style='cursor:pointer'/>&nbsp;";html+="<img src='/workspace_devices/yes.png' id='workspace_devices_yes' style='cursor:pointer'/></th>";html+="<th><img src='/workspace_devices/no.png' id='workspace_devices_no' style='cursor:pointer'/></th></tr>";html+="</table>";html+="<select cellspacing='0' cellpadding='0'  id='workspace_devices_devices' style='width:320px; height: 200px; display:none; cursor:pointer;'/>";html+="</div>";jQuery("body").append(html);jQuery("#workspace_devices_page").css("top",jQuery("#"+target_id).offset().top+jQuery("#"+target_id).height());jQuery("#workspace_devices_page").css("left",jQuery("#"+target_id).offset().left);this.title=this.translation.workspace_devices;this.searches=this.get_searches();if(!this.searches.length){tb_remove();return;}
var mod_mu=WebCMS.get_module("monitoring_units");if(!mod_mu)
return;var html="<tr id='0'><td colspan='4'><hr></td></tr>";html+="<tr id='workspace_devices_tr'>";html+="<td><select id='workspace_devices_sel'>";for(var i=0;i<this.searches.length;i++){if((mod_mu.monitoring_type&&this.searches[i].unit_incompartible)||(!mod_mu.monitoring_type&&!this.searches[i].group_compartible))
continue;html+="<option value='"+i+"'>"+this.searches[i].name+"</option>";}
html+="</select></td><td><input type='text' id='workspace_devices_template'></td><td><img src='/workspace_devices/find.png' id='workspace_devices_find' style='cursor:pointer'/>";html+="&nbsp;<img src='/workspace_devices/find_multi.png' id='workspace_devices_find_multi' style='cursor:pointer'/></td><td></td></tr>";jQuery("#workspace_devices_table").append(html);jQuery("#workspace_devices_sel").change(function(){var search_id=jQuery(this).val();var search=WorkspaceDevicesCMSModule.searches[search_id];if(search)
jQuery("#workspace_devices_template").attr("title",search.comment).Tooltip({showURL:false});}).change();jQuery("#workspace_devices_template").keydown(function(e){if(e.keyCode==13)
WorkspaceDevicesCMSModule.on_update(-1);});jQuery("#workspace_devices_find_multi").click(function(){var html="<tr id='workspace_devices_tr_"+WorkspaceDevicesCMSModule.counter+"'>";html+="<td><select id='workspace_devices_sel_"+WorkspaceDevicesCMSModule.counter+"'>";for(var i=0;i<WorkspaceDevicesCMSModule.searches.length;i++)
html+="<option value='"+i+"'>"+WorkspaceDevicesCMSModule.searches[i].name+"</option>";html+="</select></td><td><input type='text' id='workspace_devices_template_"+WorkspaceDevicesCMSModule.counter+"'></td><td nowrap><img src='/workspace_devices/del.png'";html+=" id='workspace_devices_del_"+WorkspaceDevicesCMSModule.counter+"' style='cursor:pointer'/>&nbsp;";html+="<img src='/workspace_devices/refresh.png' id='workspace_devices_ref_"+WorkspaceDevicesCMSModule.counter+"' style='cursor:pointer'/>";html+="</td><td nowrap id='workspace_devices_count_"+WorkspaceDevicesCMSModule.counter+"'></td></tr>";jQuery("#workspace_devices_table tr[id='0']").before(html);jQuery("#workspace_devices_del_"+WorkspaceDevicesCMSModule.counter).click(function(){jQuery(this).parent().parent().remove();WorkspaceDevicesCMSModule.on_update(0);}).attr("title",WorkspaceDevicesCMSModule.translation.del).Tooltip({showURL:false});jQuery("#workspace_devices_ref_"+WorkspaceDevicesCMSModule.counter).click(function(){WorkspaceDevicesCMSModule.on_update(0);}).attr("title",WorkspaceDevicesCMSModule.translation.refresh).Tooltip({showURL:false});jQuery("#workspace_devices_sel_"+WorkspaceDevicesCMSModule.counter).val(jQuery("#workspace_devices_sel").val());jQuery("#workspace_devices_template_"+WorkspaceDevicesCMSModule.counter).val(jQuery("#workspace_devices_template").val());jQuery("#workspace_devices_sel_"+WorkspaceDevicesCMSModule.counter).change(function(){var id=jQuery(this).attr("id").substr(22);var search_id=jQuery(this).val();var search=WorkspaceDevicesCMSModule.searches[search_id];if(search)
jQuery("#workspace_devices_template_"+id).attr("title",search.comment).Tooltip({showURL:false});}).change();jQuery("#workspace_devices_template_"+WorkspaceDevicesCMSModule.counter).keydown(function(e){if(e.keyCode==13)
WorkspaceDevicesCMSModule.on_update(0);});WorkspaceDevicesCMSModule.on_update(WorkspaceDevicesCMSModule.counter++);}).attr("title",this.translation.find_multi).Tooltip({showURL:false});jQuery("#workspace_devices_find").click(function(){WorkspaceDevicesCMSModule.on_update(-1);}).attr("title",this.translation.find).Tooltip({showURL:false});jQuery("#workspace_devices_yes").click(function(){var mod_mu=WebCMS.get_module("monitoring_units");if(mod_mu&&WorkspaceDevicesCMSModule.units){mod_mu.on_remove_all_units();mod_mu.on_custom_select_units(WorkspaceDevicesCMSModule.units);}
jQuery("#workspace_devices_page").slideToggle("fast");}).attr("title",this.translation.yes).Tooltip({showURL:false});jQuery("#workspace_devices_no").click(function(){jQuery("#workspace_devices_page").slideToggle("fast");}).attr("title",this.translation.no).Tooltip({showURL:false});jQuery("#workspace_devices_add").click(function(){var mod_mu=WebCMS.get_module("monitoring_units");if(mod_mu&&WorkspaceDevicesCMSModule.units)
mod_mu.on_custom_select_units(WorkspaceDevicesCMSModule.units);jQuery("#workspace_devices_page").slideToggle("fast");}).attr("title",this.translation.add).Tooltip({showURL:false});if(!this.activated){jQuery("body").mousedown(function(e){function is_parent(el){while(el[0]!=null){if(el.hasClass("workspace_devices_page"))
return true;el=el.parent();}
return false;}
if(jQuery("#workspace_devices_page").css("display")!="none"){var el=jQuery(e.target);if(!is_parent(el))
jQuery("#workspace_devices_page").slideToggle("fast");}});}
jQuery("#workspace_devices_devices").dblclick(function(e){var id=jQuery(this).val();var unit=Wialon.get_item(id);if(unit){var mod_mu=WebCMS.get_module("monitoring_units");if(mod_mu&&WorkspaceDevicesCMSModule.units)
mod_mu.on_custom_select_units([unit]);}}).attr("title",this.translation.dev_list).Tooltip({showURL:false});this.activated=1;},on_update:function(new_id){var mod_mu=WebCMS.get_module("monitoring_units");if(!mod_mu)
return;var units=mod_mu.monitoring_type?Wialon.get_units():Wialon.get_unit_groups();var req_str="#workspace_devices_table select[id^=workspace_devices_sel_]";var size=jQuery("#workspace_devices_table select[id^=workspace_devices_sel_]").size();if(new_id>0){if(this.units)
units=this.units;req_str="#workspace_devices_sel_"+new_id;}
if(new_id>=0){jQuery(req_str).each(function(){var id=jQuery(this).attr("id").substr(22);var search_id=jQuery(this).val();var template=jQuery("#workspace_devices_template_"+id).val();if(template.indexOf("*")==-1)
template="*"+template+"*";var new_col=new Array;var search=WorkspaceDevicesCMSModule.searches[search_id];for(var i=0;i<units.length;i++)
if(search.check_unit(units[i],template))
new_col.push(units[i]);jQuery("#workspace_devices_count_"+id).html(new_col.length.toString()).attr("title",WorkspaceDevicesCMSModule.translation.dev_count).Tooltip({showURL:false});units=new_col;WorkspaceDevicesCMSModule.units_list=new_col;});}else{if(size&&this.units_list)
units=this.units_list;size=1;var search_id=jQuery("#workspace_devices_sel").val();var template=jQuery("#workspace_devices_template").val();if(template.indexOf("*")==-1)
template="*"+template+"*";var new_col=new Array;var search=WorkspaceDevicesCMSModule.searches[search_id];for(var i=0;i<units.length;i++)
if(search.check_unit(units[i],template))
new_col.push(units[i]);units=new_col;}
this.units=units;if(!size)
this.units=null;if(!this.units||!this.units.length){jQuery("#workspace_devices_devices").empty().css("display","none");return;}
var html="";for(var i=0;this.units&&i<this.units.length;i++){var unit=this.units[i];html+="<option value='"+unit.get_id()+"'>"+unit.get_name()+"</option>";}
size=this.units.length;if(size==1)
size=2;else if(size>20)
size=20;jQuery("#workspace_devices_devices").attr("size",size).html(html).css("display","");;},on_ok:function(){var mod_mu=WebCMS.get_module("monitoring_units");if(mod_mu){mod_mu.on_remove_all_units();mod_mu.on_custom_select_units(this.units);}
tb_remove();}});WebCMS.register_module(WorkspaceDevicesCMSModule);var WizardDlgCMSModule=Base.extend({constructor:null,dialog:null,page:null,pages_history:[],translation:{},dlg_width:600,dlg_height:400,content_height:0,content_width:0,valid_img_url:"/wizard_dlg/valid.png",invalid_img_url:"/wizard_dlg/invalid.png",transparent_img_url:"/wizard_dlg/t16x16.png",get_type:function(){return"wizard_dlg";},show:function(url,params,width,height){if(jQuery("#TB_overlay").size())
return;if(typeof params!="object")
params={};params.modal="true";if(width)
params.width=width;else
params.width=this.dlg_width;if(height)
params.height=height;else
params.height=this.dlg_height;var str="";for(var i in params){if(str=="")
str="?"+i+"="+encodeURIComponent(params[i]);else
str+="&"+i+"="+encodeURIComponent(params[i]);}
url+=str;tb_show("",url,false);},create:function(dlg,page,width,height){if(typeof dlg!="object")
return false;this.dialog=dlg;this.page=null;this.pages_history=new Array;var html="<div class='wizard_dlg_title'><p>"+this.dialog.title+"</p></div>";html+="<div class='wizard_dlg_separator'/>";html+="<div id='wizard_dlg_content_data' class='wizard_dlg_content'/>";html+="<div class='wizard_dlg_separator'/>";html+="<div class='wizard_dlg_buttons'><p>";html+="<input type='button' id='wizard_dlg_btnx_cancel' value='"+this.translation.cancel+"'/>&nbsp;";html+="<input type='button' id='wizard_dlg_btnx_back' value='"+this.translation.back+"'/>&nbsp;";html+="<input type='button' id='wizard_dlg_btn_next' value='"+this.translation.next+"'/>&nbsp;";html+="<input type='button' id='wizard_dlg_btn_ok' value='"+this.translation.ok+"'/>&nbsp;";html+="</p></div>";jQuery("#wizard_dlg_target").css({width:'100%',height:'100%'}).html(html);var h1=parseInt(jQuery("#TB_ajaxContent").css("height"));var h2=parseInt(jQuery(".wizard_dlg_title").css("height"));var h3=parseInt(jQuery(".wizard_dlg_buttons").css("height"));var h4=parseInt(jQuery(".wizard_dlg_separator").css("height"));jQuery("#TB_overlay").css({zIndex:1000});jQuery("#TB_window").css({zIndex:1001});if(jQuery.browser.opera){h2=30;h3=30;h4=9;}
var content_height=h1-(h2+h3+h4*2);jQuery("#wizard_dlg_content_data").css({height:content_height});jQuery("#wizard_dlg_btnx_cancel").click(function(){WizardDlgCMSModule.on_cancel();});jQuery("#wizard_dlg_btnx_back").click(function(){WizardDlgCMSModule.on_back();});jQuery("#wizard_dlg_btn_ok").click(function(){WizardDlgCMSModule.on_ok();});jQuery("#wizard_dlg_btn_next").click(function(){WizardDlgCMSModule.on_next();});setTimeout(function(){WizardDlgCMSModule.init_dimensions();WizardDlgCMSModule.show_page(page);Wialon.fire_event("wizard_dlg_created",0,null);},1);return true;},show_page:function(page,save_history){if(!this.dialog||typeof page!="object")
return false;if(typeof save_history=="undefined")
save_history=true;if(typeof page.id=="undefined"||page.id==""){page.on_next();return;}
if(this.page){jQuery("#"+this.page.id).css({display:"none"});if(save_history)
this.pages_history.push(this.page);this.page=null;}
if(jQuery("#"+page.id).parent().attr("id")!="wizard_dlg_content_data")
document.getElementById("wizard_dlg_content_data").appendChild(document.getElementById(page.id));jQuery("#wizard_dlg_target [@id^=wizard_dlg_btn_]").each(function(){var id=jQuery(this).attr("id").substring(15);jQuery(this).css({display:(page.buttons.match(id)!=null?"":"none")}).attr("disabled",false);});jQuery("#wizard_dlg_btnx_back").css({display:this.pages_history.length==0?"none":""});jQuery("#"+page.id).css({display:""});this.page=page;if(typeof this.page.on_activate!="undefined")
this.page.on_activate();return true;},get_content_width:function(){return this.content_width;},get_content_height:function(){return this.content_height;},on_init:function(){},on_ok:function(){if(!this.page||typeof this.page.on_ok=="undefined")
return;jQuery("#wizard_dlg_btn_ok").attr("disabled",true);var res=this.page.on_ok();if(res!=false)
setTimeout(function(){jQuery("#wizard_dlg_btn_ok").attr("disabled",false);},2000);},on_next:function(){if(!this.page||typeof this.page.on_next=="undefined")
return;this.page.on_next();},on_back:function(){if(!this.page||!this.pages_history.length)
return;this.show_page(this.pages_history.pop(),false);},on_cancel:function(){if(this.page&&typeof this.page.on_cancel=="function"&&!this.page.on_cancel())
return;tb_remove();},init_dimensions:function(){this.content_height=jQuery("#wizard_dlg_content_data").height();this.content_width=jQuery("#wizard_dlg_content_data").width();}});WebCMS.register_module(WizardDlgCMSModule);var UserSettingsDialogCMSModule=Base.extend({constructor:null,rows:[],active_mods:0,need_reload_page:false,translation:{btn_title:"",reload_confirm:""},get_type:function(){return"user_settings_dialog";},show:function(){var mod_wiz=WebCMS.get_module("wizard_dlg");if(mod_wiz)
mod_wiz.show("/user_settings_dialog/settings_dlg.html");},add_row:function(row){if(!row)
return;this.rows.push(row);},get_rows:function(){return this.rows;},add_active_mod:function(){this.active_mods++;},remove_active_mod:function(){if(--this.active_mods==0){tb_remove();if(this.need_reload_page){var user=Wialon.get_current_user();if(user){user.serialize(function(){if(confirm(UserSettingsDialogCMSModule.translation.reload_confirm))
document.location="/";});}}}},reset_active_mods:function(){this.active_mods=0;this.need_reload_page=false;},note_reload_page:function(){this.need_reload_page=true;},on_init:function(){jQuery("#user_settings_dialog_target").click(function(){WebCMS.log_action("propsdlg","usersettings");var mod_dlg=WebCMS.get_module("user_settings_dialog");if(mod_dlg)
mod_dlg.show();return false;}).attr("title",this.translation.btn_title).Tooltip({showURL:false});}});WebCMS.register_module(UserSettingsDialogCMSModule);var CmdsParamsStorageCMSModule=Base.extend({constructor:null,params:new Object(),register_cmd_param:function(obj){if(!obj)
return;this.params[obj.type]=obj;},get_type:function(){return"cmds_params_storage";}});WebCMS.register_module(CmdsParamsStorageCMSModule);var ItemsDlgCMSModule=Base.extend({constructor:null,item_pages:new Object(),item_export_pages:new Object(),item_extension_blocks:new Object(),clear:false,clear_export:false,clear_extension_blocks:false,translation:{},get_type:function(){return"items_dlg";},add_item_page:function(item_type,item_page){if(!ItemsDlgCMSModule.item_pages[item_type]||typeof ItemsDlgCMSModule.item_pages[item_type]=="undefined"||ItemsDlgCMSModule.clear)
ItemsDlgCMSModule.item_pages[item_type]=new Array();for(var i=0;i<ItemsDlgCMSModule.item_pages[item_type].length;i++)
if(ItemsDlgCMSModule.item_pages[item_type][i].id==item_page.id){ItemsDlgCMSModule.item_pages[item_type][i]=item_page;return;}
ItemsDlgCMSModule.item_pages[item_type].push(item_page);ItemsDlgCMSModule.clear=false;},get_item_pages:function(item_type){ItemsDlgCMSModule.clear=true;var pages=new Array();if(ItemsDlgCMSModule.item_pages[item_type])
for(var i=0;i<ItemsDlgCMSModule.item_pages[item_type].length;i++)
pages.push(ItemsDlgCMSModule.item_pages[item_type][i]);return pages;},add_export_page:function(item_type,item_page){if(!ItemsDlgCMSModule.item_export_pages[item_type]||typeof ItemsDlgCMSModule.item_export_pages[item_type]=="undefined"||ItemsDlgCMSModule.clear_export)
ItemsDlgCMSModule.item_export_pages[item_type]=new Array();for(var i=0;i<ItemsDlgCMSModule.item_export_pages[item_type].length;i++)
if(ItemsDlgCMSModule.item_export_pages[item_type][i].id==item_page.id){ItemsDlgCMSModule.item_export_pages[item_type][i]=item_page;return;}
ItemsDlgCMSModule.item_export_pages[item_type].push(item_page);ItemsDlgCMSModule.clear_export=false;},get_export_pages:function(item_type){ItemsDlgCMSModule.clear_export=true;var pages=new Array();if(ItemsDlgCMSModule.item_export_pages[item_type])
for(var i=0;i<ItemsDlgCMSModule.item_export_pages[item_type].length;i++)
pages.push(ItemsDlgCMSModule.item_export_pages[item_type][i]);return pages;},add_extension_block:function(item_type,item_page){if(!ItemsDlgCMSModule.item_extension_blocks[item_type]||typeof ItemsDlgCMSModule.item_extension_blocks[item_type]=="undefined"||ItemsDlgCMSModule.clear_extension_blocks)
ItemsDlgCMSModule.item_extension_blocks[item_type]=new Array();for(var i=0;i<ItemsDlgCMSModule.item_extension_blocks[item_type].length;i++)
if(ItemsDlgCMSModule.item_extension_blocks[item_type][i].id==item_page.id){ItemsDlgCMSModule.item_extension_blocks[item_type][i]=item_page;return;}
ItemsDlgCMSModule.item_extension_blocks[item_type].push(item_page);ItemsDlgCMSModule.clear_extension_blocks=false;},get_extension_blocks:function(item_type){ItemsDlgCMSModule.clear_extension_blocks=true;var blocks=new Array();if(ItemsDlgCMSModule.item_extension_blocks[item_type])
for(var i=0;i<ItemsDlgCMSModule.item_extension_blocks[item_type].length;i++)
blocks.push(ItemsDlgCMSModule.item_extension_blocks[item_type][i]);return blocks;},show:function(item_type,item,item_copy){var mod_wiz=WebCMS.get_module("wizard_dlg");var item_id=0;if(item)
item_id=item.get_id();if(mod_wiz)
mod_wiz.show("/items_dlg/items_dlg.html",{item_type:item_type,item_id:item_id,item_copy:item_copy},800,550);WebCMS.log_action("propsdlg",item_type);}});WebCMS.register_module(ItemsDlgCMSModule);var ItemProcessor=Base.extend({constructor:null,get_type:function(){return"item_processor";},process_item:function(item_params,callback){var item_attrs=new Object();item_attrs.callback_fn=callback;item_attrs.item_params=item_params;switch(item_params.item_type){case"user":return ItemProcessor.user_process(item_attrs);break;case"avl_unit":return ItemProcessor.unit_process(item_attrs);break;case"avl_unit_group":return ItemProcessor.unit_group_process(item_attrs);break;case"avl_resource":return ItemProcessor.account_process(item_attrs);break;}
return ItemProcessor.modify_item(item_attrs);},user_process:function(item_attrs){if(!item_attrs.item_params.item_id)
return Wialon.create_user(item_attrs.item_params.name,item_attrs.item_params.password,ItemProcessor.item_create_callback,item_attrs,item_attrs.item_params.creator);return ItemProcessor.modify_item(item_attrs);},unit_process:function(item_attrs){if(!item_attrs.item_params.item_id)
return Wialon.create_unit(item_attrs.item_params.name,item_attrs.item_params.hw_type,ItemProcessor.item_create_callback,item_attrs,item_attrs.item_params.creator);return ItemProcessor.modify_item(item_attrs);},unit_group_process:function(item_attrs){if(!item_attrs.item_params.item_id)
return Wialon.create_unit_group(item_attrs.item_params.name,true,ItemProcessor.item_create_callback,item_attrs,item_attrs.item_params.creator);return ItemProcessor.modify_item(item_attrs);},account_process:function(item_attrs){if(!item_attrs.item_params.item_id)
return false;return ItemProcessor.modify_item(item_attrs);},item_create_callback:function(new_item,error_text,item_attrs){if(!new_item){if(item_attrs.callback_fn){var error_arr=new Array();error_arr.push(error_text);item_attrs.callback_fn(false,error_arr);}
return;}
item_attrs.item_params.item=new_item;item_attrs.item_params.item_was_created=true;ItemProcessor.modify_item(item_attrs);},modify_item:function(item_attrs){var item;if(item_attrs.item_params.item_id)
item=Wialon.get_item(item_attrs.item_params.item_id);else
item=item_attrs.item_params.item;var need_serialize=false;for(var prop_name in item_attrs.item_params){var method;var method_name=prop_name;var arr=method_name.split("___");if(arr.length==2)
method_name=arr[0];eval("method = item."+method_name);if(typeof method=="function"){var params="";for(var i=0;i<item_attrs.item_params[prop_name].length;i++){params+="item_attrs.item_params[prop_name]["+i+"]";if(i<item_attrs.item_params[prop_name].length-1)
params+=", ";}
eval("item."+method_name+"("+params+")");delete method;}}
if(item_attrs.callback_fn)
item_attrs.callback_fn(true,null,item);return item;}});WebCMS.register_module(ItemProcessor);var UnitImportCMSModule=Base.extend({constructor:null,type:"unit_import",export_icon_url:"/unit_import_page/export.png",import_icon_url:"/unit_import_page/import.png",get_type:function(){return this.type;},get_export_icon_url:function(){return this.export_icon_url;},get_import_icon_url:function(){return this.import_icon_url;},export_to_file:function(uid){window.open("/unit_import_page/export_unit.html?uid="+uid,"_blank","");},import_from_file:function(uids){if(!uids)
return;var mod_wd=WebCMS.get_module("wizard_dlg");if(!mod_wd)
return;if(typeof uids=="object")
uids=uids.join(",");mod_wd.show("/unit_import_page/unit_import_page.html",{uids:uids});}});WebCMS.register_module(UnitImportCMSModule);var UnitImportCMSModule=Base.extend({constructor:null,type:"unit_export",export_icon_url:"/unit_export_page/export.png",get_type:function(){return this.type;},get_export_icon_url:function(){return this.export_icon_url;},export_to_units:function(uid){if(!uid)
return;var mod_wd=WebCMS.get_module("wizard_dlg");if(!mod_wd)
return;mod_wd.show("/unit_export_page/unit_export_page.html",{uid:uid});}});WebCMS.register_module(UnitImportCMSModule);var EventsDialogCMSModule=Base.extend({constructor:null,get_type:function(){return"events_dialog";},show:function(item_id){var mod_wiz=WebCMS.get_module("wizard_dlg");if(mod_wiz)
mod_wiz.show("/events_registrar/events_dialog.html",{item_id:item_id});}});WebCMS.register_module(EventsDialogCMSModule);var EventsRegistrarCMSModule=Base.extend({constructor:null,translation:{},show_control:false,head_img_url:"/events_registrar/head.png",get_type:function(){return"events_registrar";},group_incompatible:1,on_init:function(){var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd&&!disable_monitoring_settings)
mod_usd.add_row(this);this.update_settings();var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");var mod=EventsRegistrarCMSModule;if(mod_map&&mod_menu&&this.show_control&&!disable_monitoring_settings){if(this.show_control==1)
mod_map.register_unit_state_module(this);else
mod_menu.register_unit_state_module(this);}},update_settings:function(){var user=Wialon.get_current_user();if(!user)
return;this.show_control=parseInt(user.get_private_property("mu_events","2"));},get_row_tab_info:function(){return{id:"monitoring_settings",title:this.translation.tab_name};},get_row_html:function(){return"<tr><td><img src='"+this.head_img_url+"'/>&nbsp;"+this.translation.title_head+":</td><td><input type='checkbox' id='state_events_registrar_btn'/></td><td><input type='checkbox' id='state_events_registrar_btn_m'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#state_events_registrar_btn").attr("checked",this.show_control==1).attr("title",this.translation.tooltip).Tooltip({showURL:false});jQuery("#state_events_registrar_btn_m").attr("checked",this.show_control==2).attr("title",this.translation.tooltip_menu).Tooltip({showURL:false});jQuery("#state_events_registrar_btn").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_events_registrar_btn_m").removeAttr("checked");});jQuery("#state_events_registrar_btn_m").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_events_registrar_btn").removeAttr("checked");});},save_row_data:function(){var show=jQuery("#state_events_registrar_btn").attr("checked")?1:0;if(!show)
show=jQuery("#state_events_registrar_btn_m").attr("checked")?2:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mu_events",show);mod_us.store_settings();this.show_control=show;var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(!mod_map||!mod_menu)
return;if(this.show_control==1)
mod_map.register_unit_state_module(this);else if(this.show_control==2)
mod_menu.register_unit_state_module(this);else
mod_map.unregister_unit_state_module(this);return true;},get_head_html:function(){return"<img id='event_head' src='"+WebCMS.get_img_url(this.head_img_url)+"'/>";},get_head_title:function(){return this.translation.title_head;},get_unit_state_html:function(unit){if(!unit)
return"&nbsp;";var unit_id=unit.get_id();if(!unit||unit.get_access_level()<Wialon.access_level("exec_cmd"))
return"<img id='fuel_registrar_"+unit_id+"' src='/events_registrar/pencil_gray.png'>";else
return"<img id='fuel_registrar_"+unit_id+"' src='/events_registrar/pencil.png'>";},get_unit_state_title:function(unit){if(!unit)
return"";return this.translation.register;},on_click:function(unit_id,event){if(!unit_id)
return;var unit=Wialon.get_item(unit_id);if(!unit||unit.get_access_level()<Wialon.access_level("exec_cmd")){alert(this.translation.no_rights);return;}
var mod=WebCMS.get_module("events_dialog");if(mod)
mod.show(unit_id);}});WebCMS.register_module(EventsRegistrarCMSModule);var MapCMSModule=Base.extend({constructor:null,map_modules:{},get_type:function(){return"map";},register_map_module:function(mod){if(typeof mod!='object'||!mod)
return;var t=this.map_modules[mod.get_type()];if(typeof t!='undefined')
return;this.map_modules[mod.get_type()]=mod;},create_map:function(div_id,params){if(!document.getElementById(div_id))
return null;for(var mod_type in this.map_modules){var mod=this.map_modules[mod_type];if(mod&&typeof mod.pre_init_map=='function')
mod.pre_init_map();}
var map_options=webgis_map_options({controls:[],theme:null});var map=new OpenLayers.Map(div_id,map_options);if(!map)
return null;for(var mod_type in this.map_modules){var mod=this.map_modules[mod_type];if(mod&&typeof mod.init_map=='function')
mod.init_map(map,params);}
var blayer=map.baseLayer;var user=Wialon.get_current_user();if(blayer&&user){var layer_name=user.get_private_property("umap","");if(layer_name!=""&&layer_name!=blayer.name){var layers=map.layers;for(var i=0;i<layers.length;i++){var layer=layers[i];if(layer.name==layer_name){map.setBaseLayer(layer);break;}}}}
this.personal_map_process(map);map.events.register("changebaselayer",map,function(){var blayer=map.baseLayer;var user=Wialon.get_current_user();var mod_us=WebCMS.get_module("user_settings");if(blayer&&user&&mod_us){MapCMSModule.personal_map_process(map);if(user.get_private_property("umap","")!=blayer.name){user.set_private_property("umap",blayer.name);mod_us.store_settings();}
WebCMS.log_action("mapchange",blayer.name);}});return map;},on_init:function(){var user=Wialon.get_current_user();var mus=WebCMS.get_module("user_settings");if(!user||!mus)
return;if(user.get_public_property("map_base_layer","")!=""){user.set_public_property("map_base_layer","");mus.store_settings();}},personal_map_process:function(map){var baseLayer=map.baseLayer;if(!baseLayer)
return;switch(baseLayer.name){case"Yahoo Local Maps":case"Yahoo Satellite":case"Yahoo Hybrid":var ctrls=map.getControlsByClass("OpenLayers.Control.ScaleLine");if(ctrls.length)
map.removeControl(ctrls[0]);ctrls=map.getControlsByClass("OpenLayers.Control.MousePosition");if(ctrls.length)
map.removeControl(ctrls[0]);break;default:var ctrls=map.getControlsByClass("OpenLayers.Control.ScaleLine");if(!ctrls.length)
map.addControl(new OpenLayers.Control.ScaleLine());ctrls=map.getControlsByClass("OpenLayers.Control.MousePosition");if(!ctrls.length)
map.addControl(new OpenLayers.Control.MousePosition());map.baseLayer.onMapResize();break;}}});WebCMS.register_module(MapCMSModule);var MapGeocodingCMSModule=Base.extend({providers:{},constructor:null,get_type:function(){return'map_geocoding';},register_provider:function(prov){if(!prov)
return;var provt=prov.get_type();if(!provt)
return;this.providers[provt]=prov;},get_providers:function(){var res=[];for(provt in this.providers)
res.push(this.providers[provt]);if(res.length==0)
return null;return res;},resolve_address:function(address,prov,callback,arg){if(!address||address==''||!prov||!callback)
return false;return prov.resolve_address(address,callback,arg);},resolve_point:function(point,prov,callback,arg){if(!point||typeof point!='object'||point.lat==undefined||point.lon==undefined||!prov||!callback)
return false;return prov.resolve_point(point,callback,arg);},bind_address_iface:function(prov,id,callback,arg){return prov.bind_address_iface(id,callback,arg);},clear_address_field:function(prov){prov.clear_address_field();}});WebCMS.register_module(MapGeocodingCMSModule);var MapRoutingCMSModule=Base.extend({constructor:null,routing_providers:{},get_type:function(){return"map_routing";},register_routing_provider:function(mod){if(typeof mod!='object'||!mod)
return;var t=this.routing_providers[mod.get_type()];if(typeof t!='undefined')
return;this.routing_providers[mod.get_type()]=mod;},get_providers:function(){var arr=new Array;for(var type in this.routing_providers)
arr.push(this.routing_providers[type]);return arr;},calculate_routing:function(provider,points,flags,callback,cparam){if(!provider||!points||!points.length||!callback)
return false;return provider.calculate_routing(points,flags,callback,cparam);}});WebCMS.register_module(MapRoutingCMSModule);var MapOptipathCMSModule=Base.extend({constructor:null,get_type:function(){return"map_optipath";},optimize_path:function(provider,points,flags,callback,cparam){function calc_route_length(route){var len=0;var prevp=null;for(var i=0;i<route.length;i++){var line=route[i].p;for(var j=0;j<line.length;j++){var p=line[j];if(prevp)
len+=calc_distance(prevp.y,prevp.x,p.y,p.x);prevp=p;}}
return len;}
if(!provider||!points||points.length==0)
return false;var dist=[];var rout=[];var len=points.length;for(var i=0;i<len;i++){var d_row=[];var r_row=[];for(var j=0;j<len;j++){d_row.push(0);r_row.push({});}
dist.push(d_row);rout.push(r_row);}
var fill_cnt=0;for(var i=0;i<len;i++){var pi=points[i];for(var j=0;j<len;j++){if(j==i)
continue;var pj=points[j];var ii=i,jj=j;var ti=pi,tj=pj;provider.calculate_routing([{x:pi.lon,y:pi.lat},{x:pj.lon,y:pj.lat}],flags,function(res,route){if(res){dist[ii][jj]=calc_route_length(route);rout[ii][jj]=route;}else{dist[ii][jj]=calc_distance(ti.lat,ti.lon,tj.lat,tj.lon);rout[ii][jj]=[{p:[{x:ti.lat,y:ti.lon}],n:""}];}
fill_cnt++;});}}
var ival;ival=setInterval(function(){if(fill_cnt<len*(len-1))
return;clearInterval(ival);var pt_order=MapOptipathCMSModule.solve_tsp(dist,flags&0x8000);var res_ps=[];var res_rt=[];for(var i=0;i<pt_order.length;i++){var j=pt_order[i];res_ps.push(points[j]);if(i!=0)
res_rt=res_rt.concat(rout[pt_order[i-1]][j]);}
callback([res_ps,res_rt],cparam);},100);},solve_tsp:function(dist,f_last){function range(i,j){var r=[];for(;i<=j;i++)
r.push(i);return r;}
var pt_order=[0];var last=dist.length;if(f_last)
last--;var pt_pool=range(1,last-1);for(i=1;i<last;i++){var pj=0;var pj_dist=dist[pt_order[i-1]][pt_pool[0]];for(var j=1;j<pt_pool.length;j++){var d=dist[pt_order[i-1]][pt_pool[j]];if(d<pj_dist){pj=j;pj_dist=d;}}
pt_order.push(pt_pool[pj]);pt_pool.splice(pj,1);}
if(f_last)
pt_order.push(last);return pt_order;}});WebCMS.register_module(MapOptipathCMSModule);var MapControlsCMSModule=Base.extend({constructor:null,controls:"mouse_pos,scale_line,nav,pan_zoom_bar,layer_switcher,overview",layer_switcher_color:"",translation:{},get_type:function(){return"map_controls";},init_map:function(map,params){var ctrls=this.controls.split(",");for(var i=0;i<ctrls.length;i++){switch(ctrls[i]){case"mouse_pos":map.addControl(new OpenLayers.Control.MousePosition());break;case"scale_line":map.addControl(new OpenLayers.Control.ScaleLine());break;case"nav":map.addControl(new OpenLayers.Control.Navigation());break;case"pan_zoom_bar":map.addControl(new OpenLayers.Control.PanZoomBar());break;case"overview":var opt=webgis_map_options({controls:[],theme:null});map.addControl(new OpenLayers.Control.OverviewMap({mapOptions:opt}));var title=this.translation.overview_panel;setTimeout(function(){jQuery("#olControlOverviewMapMaximizeButton_innerImage, #OpenLayers_Control_minimizeDiv_innerImage").attr("title",title).Tooltip({showURL:false});},100);break;case"layer_switcher":var params={};if(this.layer_switcher_color!="")
params.activeColor=this.layer_switcher_color;map.addControl(new OpenLayers.Control.LayerSwitcher(params));jQuery("#OpenLayers_Control_MaximizeDiv_innerImage, #OpenLayers_Control_MinimizeDiv_innerImage").attr("title",this.translation.layer_panel).Tooltip({showURL:false});break;default:break}}},on_init:function(){}});WebCMS.register_module(MapControlsCMSModule);var mod_map=WebCMS.get_module("map");if(mod_map)
mod_map.register_map_module(MapControlsCMSModule);var MapWebGisCMSModule=Base.extend({constructor:null,translation:{},mapserver:"",tags:"",cookie:0,search_type:0,panel_div:null,callback:null,arg:null,zoom:[null,12,16,20],optipath:true,get_type:function(){return"map_webgis";},get_name:function(){return"WebGIS";},init_map:function(map,params){var layer=new OpenLayers.Layer.WebGIS("WebGIS",this.mapserver,{map_tags:this.tags});layer.sc=Wialon.events_cookie+12367;map.addLayer(layer);},get_row_html:function(){return"<tr><td>"+this.translation.title+":</td><td><input type='text' id='map_webgis_settings' name='map_webgis_settings' style='width:300px'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){var user=Wialon.get_current_user();if(!user)
return;jQuery("#map_webgis_settings").val(user.get_private_property("wg3","")).attr("title",this.translation.tooltip).Tooltip({showURL:false});},save_row_data:function(){var user=Wialon.get_current_user();if(!user)
return;var addr=jQuery("#map_webgis_settings").val();if(addr==user.get_private_property("wg3",""))
return;var mod_usd=WebCMS.get_module("user_settings_dialog");if(!mod_usd)
return;mod_usd.note_reload_page();var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("wg3",addr);mod_us.store_settings();},get_row_tab_info:function(){return{id:"maps",title:this.translation.maps};},on_init:function(){var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);var user=Wialon.get_current_user();if(!user)
return;var url=user.get_private_property("wg3","");if(url!="")
this.mapserver=url;var mod_geocoding=WebCMS.get_module('map_geocoding');if(mod_geocoding)
mod_geocoding.register_provider(this);},resolve_address:function(){return false;},resolve_point:function(point,callback,arg){WebGIS.get_location(point.lat,point.lon,'',function(res,address){if(!address||address[0]=='{'){res=false;address=null;}
callback(res,address,arg);});},bind_address_iface:function(id,callback,arg){this.callback=callback;this.arg=arg;var html='<table cellpadding="0" cellspacing="0" style="width: 100%;">'+'<tr><td>'+this.translation.city+':</td>'+'<td>'+this.translation.street+':</td></tr>'+'<tr><td><input id="webg_city" type="text" title="'+
this.translation.help_city+'" style="width: 96%;" /></td>'+'<td><input id="webg_street" type="text" title="'+
this.translation.help_street+'" style="width: 96%;" /></td></tr>'+'<tr><td colspan="2"><div class="map_webgis_search_list" id="webg_list">'+'</div></td></tr>'+'<tr><td colspan="2"><div id="webg_info">'+'</div></td></tr>'+'<tr><td colspan="2"><a class="map_webgis_link" style="cursor: pointer;" '+'id="webg_new_search" title="'+this.translation.help_new_search+'">'+
this.translation.new_search+'</a>&nbsp;|&nbsp;'+'<a class="map_webgis_link" style="cursor: pointer;" id="webg_prev" title="'+
this.translation.help_previous_search+'">'+
this.translation.previous_search+'</a>&nbsp;|&nbsp;'+'<a class="map_webgis_link" style="cursor: pointer;" id="webg_show_on_map" title="'+
this.translation.help_show_on_map+'">'+
this.translation.show_on_map+'</a></td></tr>'+'</table>';jQuery('#'+id).html(html);this.cookie=0;this.panel_div=document.getElementById('webg_list');this.search_type=0;jQuery('#webg_new_search').click(function(){MapWebGisCMSModule.on_new_search();return false;});jQuery('#webg_prev').click(function(){MapWebGisCMSModule.on_prev_search();return false;});jQuery('#webg_show_on_map').click(function(){MapWebGisCMSModule.on_show_on_map();return false;});jQuery('#webg_city').keyup(function(e){MapWebGisCMSModule.on_keypress_city(e);});jQuery('#webg_street').keyup(function(e){MapWebGisCMSModule.on_keypress_street(e);});var user=Wialon.get_current_user();if(user){var city=user.get_private_property("webg_c","");var city_id=user.get_private_property("webg_c_id","");var map=user.get_private_property("addr_provider","map_webgis");if(city.length&&city_id.length&&map=="map_webgis"){jQuery('#webg_city').val(city);this.search_city(city,function(){jQuery("#"+city_id).click();});}}},clear_address_field:function(){this.on_new_search(true);},on_keypress_city:function(e){var city_name=jQuery('#webg_city').val();if(e.which==37||e.which==38||e.which==39||e.which==40)
return;if(city_name.length>=2&&this.search_type==0){if(e.which==13&&this.city_col&&this.city_col.length>0){this.city_id=this.city_col[0].id;this.search_type=1;this.show_feature(this.search_type);this.search_street();return;}
this.search_city(city_name);}},on_keypress_street:function(e){var street_name=jQuery('#webg_street').val();if(e.which==37||e.which==38||e.which==39||e.which==40)
return;if(e.which==8&&street_name=='')
this.backspace++;if(this.backspace==2){this.backspace=0;this.previous_search(this.search_type);jQuery('#webg_city').focus();return;}
if(street_name.length>=2&&this.city_id&&this.search_type==1){if(e.which==13&&this.street_col&&this.street_col.length>0){this.street_id=this.street_col[0].id;this.search_type=2;this.show_feature(this.search_type);this.search_house('');return;}
this.search_street(street_name);}},on_new_search:function(not_focus,city){this.cookie=0;this.search_type=0;this.city_id=0;this.city_col=null;this.street_id=0;this.street_col=null;this.house_col=null;this.house_id=0;jQuery('#webg_city').attr('disabled',false);jQuery('#webg_city').val('');if(!not_focus&&!jQuery.browser.msie)
jQuery('#webg_city').focus();jQuery('#webg_street').attr('disabled',true);jQuery('#webg_street').val('');jQuery('#webg_list').html('');if(this.markers_layer&&this.marker){this.markers_layer.removeMarker(this.marker);this.marker.destroy();this.marker=null;};var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(mod_us&&user){user.set_private_property("webg_c","");user.set_private_property("webg_c_id","");mod_us.store_settings();}},on_prev_search:function(){this.previous_search(this.search_type);},on_show_on_map:function(){this.show_feature(this.search_type);},search_city:function(text,callback){this.print_info(this.translation.help_wait);this.cookie++;var cookie=this.cookie;WebGIS.search_cities(text,this.tags,function(col,cparam){if(cparam.si.cookie==cparam.cookie){cparam.si.city_col=col;cparam.si.show_result(cparam.si.city_col);cparam.si.print_info('');if(cparam.callback)
cparam.callback();}},{si:this,cookie:cookie,callback:callback});},search_street:function(text){if(this.city_id&&this.search_type==1){if(text==undefined){this.street_col=null;this.show_result(this.street_col);}else{this.print_info(this.translation.help_wait);this.cookie++;var cookie=this.cookie;WebGIS.search_streets(this.city_id,text,function(col,cparam){if(cparam.si.cookie==cparam.cookie){cparam.si.street_col=col;cparam.si.show_result(cparam.si.street_col);cparam.si.print_info('');}},{si:this,cookie:cookie});}}},search_house:function(text){if(this.street_id&&this.search_type==2){this.print_info(this.translation.help_wait);this.cookie++;var cookie=this.cookie;WebGIS.search_houses(this.street_id,text,function(col,cparam){if(cparam.si.cookie==cparam.cookie){cparam.si.house_col=cparam.si.sort_houses(col);cparam.si.show_result(cparam.si.house_col);cparam.si.print_info('');}},{si:this,cookie:cookie});}},previous_search:function(search_type){if(search_type==1&&this.city_id){this.search_type=0;this.street_id=0;this.show_result(this.city_col);}else{if(search_type==2&&this.street_id){this.search_type=1;this.house_id=0;this.house_col=null;this.show_result(this.street_col);}}},show_feature:function(search_type){var lonlat,zoom;if(search_type==1&&this.city_id){var city=this.get_city(this.city_id);if(city){lonlat=new OpenLayers.LonLat(city.lon,city.lat);zoom=10;}}else if(search_type==2){if(this.house_id){var house=this.get_house(this.house_id);if(house){lonlat=new OpenLayers.LonLat(house.lon,house.lat);zoom=16;}}else if(this.street_id){var street=this.get_street(this.street_id);if(street){lonlat=new OpenLayers.LonLat(street.lon,street.lat);zoom=14;}}}
if(lonlat){var text_result="";if(this.city_id){var city=this.get_city(this.city_id);if(city&&typeof city.text!="undefined")
text_result+=city.text;}
if(this.street_id){var street=this.get_street(this.street_id);if(street&&typeof street.text!="undefined")
text_result+=", "+street.text;}
if(this.house_id){var house=this.get_house(this.house_id);if(house&&typeof house.text!="undefined")
text_result+=", "+house.text;}
lonlat.text=text_result;this.callback(true,lonlat,this.arg,zoom);}},show_result:function(col){jQuery("#webg_list").html("");var use_numbers=true;var html="";if(this.search_type==1&&this.city_id){var city=this.get_city(this.city_id);if(city){html+="<p>"+this.translation.streets+"&nbsp;"+city.text+":<hr size='1'></p>";jQuery("#webg_city").attr("disabled",true);jQuery("#webg_street").attr("disabled",false);jQuery("#webg_street").focus();}}else if(this.search_type==2&&this.street_id){use_numbers=false;var street=this.get_street(this.street_id);if(street){html+="<p>"+this.translation.houses+"&nbsp;"+street.text+":<hr size='1'></p>";jQuery("#webg_street").attr("disabled",true);}}else if(this.search_type==0){jQuery("#webg_city").attr("disabled",false);jQuery("#webg_street").attr("disabled",true);jQuery("#webg_city").focus();}
var search_item=this;var lid="webg_features";html+=use_numbers?("<ol id='"+lid+"'>"):("<ul id='"+lid+"' style='list-style-type: none;'>");for(var i=0;col&&i<col.length;i++){var f=col[i];html+="<li id='webg_feature_"+f.id+"'><a style='cursor: pointer;'>"+f.text+"</a></li>";}
html+=use_numbers?"</ol>":"</ul>";jQuery("#webg_list").html(html);jQuery("#"+lid+" li[@id^=webg_feature_]").each(function(i){var l="webg".length+9;var id=parseInt(this.id.substring(l));jQuery(this).click(function(){var name=jQuery("a",this).html();var text="";var obj=null;if(MapWebGisCMSModule.search_type==0){jQuery("#webg_city").attr("full_name",name);var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(mod_us&&user){user.set_private_property("webg_c",jQuery("#webg_city").val());user.set_private_property("webg_c_id",jQuery(this).attr("id"));mod_us.store_settings();}
obj=MapWebGisCMSModule.get_city(id);text=name;}else if(MapWebGisCMSModule.search_type==1){jQuery("#webg_street").attr("full_name",name);obj=MapWebGisCMSModule.get_street(id);if(obj)
text=jQuery("#webg_city").attr("full_name")+", "+obj.text;}else if(MapWebGisCMSModule.search_type==2){obj=MapWebGisCMSModule.get_house(id);if(obj)
text=jQuery("#webg_city").attr("full_name")+", "+jQuery("#webg_street").attr("full_name")+", "+obj.text;}
search_item.set_link(id);return false;});});},set_link:function(id){if(this.search_type==0){this.city_id=id;this.search_type=1;this.show_feature(this.search_type);var val=jQuery("#webg_street").val();if(val=="")
this.search_street();else
this.search_street(val);}else if(this.search_type==1){this.street_id=id;this.search_type=2;this.show_feature(this.search_type);this.search_house("");}else if(this.search_type==2){this.house_id=id;this.show_feature(this.search_type);}
return false;},get_city:function(id){for(var i=0;this.city_col&&i<this.city_col.length;i++){if(this.city_col[i].id==id)
return this.city_col[i];}
return null;},get_street:function(id){for(var i=0;this.street_col&&i<this.street_col.length;i++){if(this.street_col[i].id==id)
return this.street_col[i];}
return null;},get_house:function(id){for(var i=0;this.house_col&&i<this.house_col.length;i++){if(this.house_col[i].id==id)
return this.house_col[i];}
return null;},print_info:function(text){this.panel_div.style.cursor=(text!=""?"wait":"default");var html="<p>"+text+"</p>";jQuery("#webg_info").html(html);},sort_houses:function(col){if(!col)
return null;col.sort(this.compare);return col;},compare:function(a,b){var n1=parseInt(a.text);var n2=parseInt(b.text);if(isNaN(n1)||isNaN(n2))
return 0;return n1-n2;},get_traffic_provide:function(){return false;},get_travel_mode_provide:function(){return false;},get_avoid_highways_provide:function(){return false;},get_optimize_points:function(){return true;},calculate_routing:function(points,flags,callback,cparam){var res=[];for(var i=0;i<points.length;i++){var p=points[i];res.push({p:[{x:p.x,y:p.y}],n:""});}
callback(1,res,cparam);return true;}});WebCMS.register_module(MapWebGisCMSModule);var mod_map=WebCMS.get_module("map");if(mod_map)
mod_map.register_map_module(MapWebGisCMSModule);var mod_rt=WebCMS.get_module("map_routing");if(mod_rt)
mod_rt.register_routing_provider(MapWebGisCMSModule);OpenLayers.Util.OSM={};OpenLayers.Util.OSM.MISSING_TILE_URL="http://openstreetmap.org/openlayers/img/404.png";OpenLayers.Util.OSM.originalOnImageLoadError=OpenLayers.Util.onImageLoadError;OpenLayers.Util.onImageLoadError=function(){if(this.src.match(/^http:\/\/[abc]\.[a-z]+\.openstreetmap\.org\//)){this.src=OpenLayers.Util.OSM.MISSING_TILE_URL;}else if(this.src.match(/^http:\/\/[def]\.tah\.openstreetmap\.org\//)){}else{OpenLayers.Util.OSM.originalOnImageLoadError;}};OpenLayers.Layer.OSM=OpenLayers.Class(OpenLayers.Layer.TMS,{initialize:function(name,url,options){options=OpenLayers.Util.extend({attribution:"Data by <a href='http://openstreetmap.org/'>OpenStreetMap</a>",maxExtent:new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),maxResolution:156543.0339,units:"m",projection:"EPSG:900913",transitionEffect:"resize"},options);var newArguments=[name,url,options];OpenLayers.Layer.TMS.prototype.initialize.apply(this,newArguments);},getURL:function(bounds){var res=this.map.getResolution();var x=Math.round((bounds.left-this.maxExtent.left)/(res*this.tileSize.w));var y=Math.round((this.maxExtent.top-bounds.top)/(res*this.tileSize.h));var z=this.map.getZoom();var limit=Math.pow(2,z);if(y<0||y>=limit)
{return OpenLayers.Util.OSM.MISSING_TILE_URL;}
else
{x=((x%limit)+limit)%limit;var url=this.url;var path=z+"/"+x+"/"+y+".png";if(url instanceof Array)
{url=this.selectUrl(path,url);}
return url+path;}},CLASS_NAME:"OpenLayers.Layer.OSM"});OpenLayers.Layer.OSM.Mapnik=OpenLayers.Class(OpenLayers.Layer.OSM,{initialize:function(name,options){var url=["http://a.tile.openstreetmap.org/","http://b.tile.openstreetmap.org/","http://c.tile.openstreetmap.org/"];options=OpenLayers.Util.extend({numZoomLevels:19},options);var newArguments=[name,url,options];OpenLayers.Layer.OSM.prototype.initialize.apply(this,newArguments);},CLASS_NAME:"OpenLayers.Layer.OSM.Mapnik"});OpenLayers.Layer.OSM.Osmarender=OpenLayers.Class(OpenLayers.Layer.OSM,{initialize:function(name,options){var url=["http://a.tah.openstreetmap.org/Tiles/tile.php/","http://b.tah.openstreetmap.org/Tiles/tile.php/","http://c.tah.openstreetmap.org/Tiles/tile.php/"];options=OpenLayers.Util.extend({numZoomLevels:18},options);var newArguments=[name,url,options];OpenLayers.Layer.OSM.prototype.initialize.apply(this,newArguments);},CLASS_NAME:"OpenLayers.Layer.OSM.Osmarender"});OpenLayers.Layer.OSM.CycleMap=OpenLayers.Class(OpenLayers.Layer.OSM,{initialize:function(name,options){var url=["http://a.thunderflames.org/tiles/cycle/","http://b.thunderflames.org/tiles/cycle/","http://c.thunderflames.org/tiles/cycle/"];options=OpenLayers.Util.extend({numZoomLevels:17},options);var newArguments=[name,url,options];OpenLayers.Layer.OSM.prototype.initialize.apply(this,newArguments);},CLASS_NAME:"OpenLayers.Layer.OSM.CycleMap"});OpenLayers.Layer.OSM.Maplint=OpenLayers.Class(OpenLayers.Layer.OSM,{initialize:function(name,options){var url=["http://d.tah.openstreetmap.org/Tiles/maplint.php/","http://e.tah.openstreetmap.org/Tiles/maplint.php/","http://f.tah.openstreetmap.org/Tiles/maplint.php/"];options=OpenLayers.Util.extend({numZoomLevels:18,isBaseLayer:false,visibility:false},options);var newArguments=[name,url,options];OpenLayers.Layer.OSM.prototype.initialize.apply(this,newArguments);},CLASS_NAME:"OpenLayers.Layer.OSM.Maplint"});var MapOSMCMSModule=Base.extend({constructor:null,get_type:function(){return"map_osm";},init_map:function(map,params){var layer=new OpenLayers.Layer.OSM.Mapnik("OpenStreetMap Mapnik",{});map.addLayer(layer);},on_init:function(){}});WebCMS.register_module(MapOSMCMSModule);var mod_map=WebCMS.get_module("map");if(mod_map)
mod_map.register_map_module(MapOSMCMSModule);var MapGoogleCMSModule=Base.extend({constructor:null,translation:{},map_types:"streets,physical,satellite,hybrid",google_ok:0,google_allowed:0,get_type:function(){return"map_google";},get_row_html:function(){if(!this.google_allowed)
return null;return"<tr><td>"+this.translation.title+":</td><td><input type='checkbox' id='map_google_settings' name='map_google_settings'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#map_google_settings").attr("checked",this.google_ok?true:false);},save_row_data:function(){if(!this.google_allowed)
return null;var use_google=jQuery("#map_google_settings").attr("checked")?1:0;if(use_google==this.google_ok)
return;var mod_usd=WebCMS.get_module("user_settings_dialog");if(!mod_usd)
return;mod_usd.note_reload_page();var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mtg",use_google?1:0);mod_us.store_settings();},get_row_tab_info:function(){return{id:"maps",title:this.translation.maps};},init_map:function(map,params){if(!this.google_ok||!this.google_allowed)
return;try{var layers=new Array;var map_types=this.map_types.split(",");for(var i=0;i<map_types.length;i++){switch(map_types[i]){case"streets":layers.push(new OpenLayers.Layer.Google(this.translation.google_streets,{sphericalMercator:true}));break;case"physical":layers.push(new OpenLayers.Layer.Google(this.translation.google_physical,{type:G_PHYSICAL_MAP,sphericalMercator:true}));break;case"satellite":layers.push(new OpenLayers.Layer.Google(this.translation.google_satellite,{type:G_SATELLITE_MAP,sphericalMercator:true}));break;case"hybrid":layers.push(new OpenLayers.Layer.Google(this.translation.google_hybrid,{type:G_HYBRID_MAP,sphericalMercator:true}));break;default:break}}
if(layers.length)
map.addLayers(layers);}catch(e){this.google_ok=0;this.google_allowed=0;}},on_init:function(){var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);var user=Wialon.get_current_user();var mus=WebCMS.get_module("user_settings");if(!user||!mus)
return;if(user.get_public_property("enable_google","")!=""){user.set_public_property("enable_google","");mus.store_settings();}
if(this.google_ok){var map_routing=WebCMS.get_module("map_routing");if(map_routing)
map_routing.register_routing_provider(this);var mod_geocoding=WebCMS.get_module('map_geocoding');if(mod_geocoding)
mod_geocoding.register_provider(this);}},get_name:function(){return this.translation.google;},get_traffic_provide:function(){return false;},get_travel_mode_provide:function(){return true;},get_avoid_highways_provide:function(){return true;},calculate_routing:function(points,flags,callback,cparam){var options=new Object;if(flags&2)
options.travelMode=G_TRAVEL_MODE_WALKING;else
options.travelMode=G_TRAVEL_MODE_DRIVING;if(flags&4)
options.avoidHighways=true;else
options.avoidHighways=false;options.getPolyline=true;var directions=new GDirections();var points_str="";for(var i=0;i<points.length;i++){if(!i)
points_str+="from: "+points[i].y.toFixed(6)+", "+points[i].x.toFixed(6);else
points_str+=" to: "+points[i].y.toFixed(6)+", "+points[i].x.toFixed(6);}
this.callback=callback;this.cparam=cparam;GEvent.addListener(directions,"load",function(){var pl=directions.getPolyline();var points=new Array;var obj=new Object;obj.n="";obj.p=new Array;var count=pl.getVertexCount();for(var i=0;i<count;i++){var vx=pl.getVertex(i);obj.p.push({x:vx.lng(),y:vx.lat()});}
points.push(obj);MapGoogleCMSModule.callback(1,points,MapGoogleCMSModule.cparam);});GEvent.addListener(directions,"error",function(err){if(MapGoogleCMSModule.callback)
MapGoogleCMSModule.callback(0,null,MapGoogleCMSModule.cparam);});directions.load(points_str,options);return true;},resolve_address:function(address,callback,arg){jQuery('#goog_status').html('<p style="text-decoration: blink;">'+
this.translation.processing);var geocoder=new GClientGeocoder();geocoder.getLocations(address,function(point){if(!point||point.Status.code!=200||!point.Placemark||!point.Placemark.length){jQuery('#goog_status').html('<i>'+MapGoogleCMSModule.translation.not_found+'</i>');callback(false,null,arg);}else{jQuery('#goog_status').html('');var latlon={lat:point.Placemark[0].Point.coordinates[1],lon:point.Placemark[0].Point.coordinates[0],text:point.Placemark[0].address};callback(true,latlon,arg);}});return true;},resolve_point:function(point,callback,arg){var geocoder=new GClientGeocoder();var latlng=new GLatLng(point.lat,point.lon);geocoder.getLocations(latlng,function(resp){if(!resp||resp.Status.code!=200||!resp.Placemark||resp.Placemark.length==0)
callback(false,null,arg);else
callback(true,resp.Placemark[0].address,arg);});return true;},bind_address_iface:function(id,callback,arg){var html='<table style="width: 100%"><tr><td>'+this.translation.address+'</td>'+'<td style="width: 100%;">'+'<input id="goog_text" type="text" style="width: 70%;"/>&nbsp;&nbsp;'+'<input id="goog_button" type="button" value="'+this.translation.search+'"/></td></tr>'+'<tr><td></td><td id="goog_status"></td></tr></table>';jQuery('#'+id).html(html);jQuery('#goog_text').keypress(function(e){if(e.which==13){var addr=jQuery('#goog_text').val();MapGoogleCMSModule.resolve_address(addr,callback,arg);}});jQuery('#goog_button').click(function(){var addr=jQuery('#goog_text').val();MapGoogleCMSModule.resolve_address(addr,callback,arg);});},clear_address_field:function(){jQuery('#goog_text').val("");}});WebCMS.register_module(MapGoogleCMSModule);var mod_map=WebCMS.get_module("map");if(mod_map)
mod_map.register_map_module(MapGoogleCMSModule);var MapVirtualEarthCMSModule=Base.extend({constructor:null,translation:{},map_types:"aerial,hybrid,oblique",ve_ok:0,get_type:function(){return"map_ve";},get_row_html:function(){return"<tr><td>"+this.translation.title+":</td><td><input type='checkbox' id='map_ve_settings' name='map_ve_settings'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#map_ve_settings").attr("checked",this.ve_ok?true:false);},save_row_data:function(){var use_ve=jQuery("#map_ve_settings").attr("checked")?1:0;if(use_ve==this.ve_ok)
return;var mod_usd=WebCMS.get_module("user_settings_dialog");if(!mod_usd)
return;mod_usd.note_reload_page();var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mtve",use_ve?1:0);mod_us.store_settings();},get_row_tab_info:function(){return{id:"maps",title:this.translation.maps};},init_map:function(map,params){if(!this.ve_ok)
return;var layers=new Array;var map_types=this.map_types.split(",");for(var i=0;i<map_types.length;i++){switch(map_types[i]){case"aerial":layers.push(new OpenLayers.Layer.VirtualEarth(this.translation.ve_aerial,{type:VEMapStyle.Aerial,sphericalMercator:true}));break;case"hybrid":layers.push(new OpenLayers.Layer.VirtualEarth(this.translation.ve_hybrid,{type:VEMapStyle.Hybrid,sphericalMercator:true}));break;case"oblique":layers.push(new OpenLayers.Layer.VirtualEarth(this.translation.ve_oblique,{type:VEMapStyle.Oblique,sphericalMercator:true}));break;default:break}}
if(layers.length)
map.addLayers(layers);},on_init:function(){var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);var user=Wialon.get_current_user();var mus=WebCMS.get_module("user_settings");if(!user||!mus)
return;if(user.get_public_property("enable_ve","")!=""){user.set_public_property("enable_ve","");mus.store_settings();}}});WebCMS.register_module(MapVirtualEarthCMSModule);var mod_map=WebCMS.get_module("map");if(mod_map)
mod_map.register_map_module(MapVirtualEarthCMSModule);var MapYandexCMSModule=Base.extend({constructor:null,translation:{},map_types:"map,satellite,hybrid",yandex_ok:0,yandex_key:"",yandex_allowed:0,get_type:function(){return"map_yandex";},get_name:function(){return this.translation.yandex;},get_row_html:function(){if(!this.yandex_allowed)
return null;return"<tr><td>"+this.translation.title+":</td><td><input type='checkbox' id='map_yandex_settings' name='map_yandex_settings'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#map_yandex_settings").attr("checked",this.yandex_ok?true:false);},save_row_data:function(){if(!this.yandex_allowed)
return;var use_yandex=jQuery("#map_yandex_settings").attr("checked")?1:0;if(use_yandex==this.yandex_ok)
return;var mod_usd=WebCMS.get_module("user_settings_dialog");if(!mod_usd)
return;mod_usd.note_reload_page();var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mtya",use_yandex?1:0);mod_us.store_settings();},get_row_tab_info:function(){return{id:"maps",title:this.translation.maps};},init_map:function(map,params){if(!this.yandex_ok||!this.yandex_allowed)
return;var layers=new Array;var map_types=this.map_types.split(",");for(var i=0;i<map_types.length;i++){switch(map_types[i]){case"map":layers.push(new OpenLayers.Layer.Yandex(this.translation.yandex_map,{type:YMaps.MapType.MAP,sphericalMercator:true}));break;case"satellite":layers.push(new OpenLayers.Layer.Yandex(this.translation.yandex_satellite,{type:YMaps.MapType.SATELLITE,sphericalMercator:true}));break;case"hybrid":layers.push(new OpenLayers.Layer.Yandex(this.translation.yandex_hybrid,{type:YMaps.MapType.HYBRID,sphericalMercator:true}));break;default:break}}
if(layers.length)
map.addLayers(layers);},on_init:function(){var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);var user=Wialon.get_current_user();var mus=WebCMS.get_module("user_settings");if(!user||!mus)
return;if(user.get_public_property("enable_yandex","")!=""){user.set_public_property("enable_yandex","");mus.store_settings();}
if(this.yandex_ok){var map_routing=WebCMS.get_module("map_routing");if(map_routing)
map_routing.register_routing_provider(this);var mod_geocoding=WebCMS.get_module("map_geocoding");if(mod_geocoding)
mod_geocoding.register_provider(this);}},get_traffic_provide:function(){return true;},get_travel_mode_provide:function(){return false;},get_avoid_highways_provide:function(){return false;},calculate_routing:function(points,flags,callback,cparam){if(!points||!points.length||!callback)
return false;var way_points=new Array;for(var i=0;i<points.length;++i){var pt=new YMaps.GeoPoint(points[i].x.toFixed(6),points[i].y.toFixed(6));way_points.push(pt);}
var via_points=new Array;for(var i=1;i<points.length-1;++i)
via_points.push(way_points[i]);var options=new Object;if(flags&1)
options.avoidTrafficJams=true;else
options.avoidTrafficJams=false;var router=new YMaps.Router(way_points,via_points,options);YMaps.Events.observe(router,router.Events.Success,function(){var points=new Array;var obj=new Object;obj.n="";obj.p=new Array;var r_count=router.getNumRoutes();for(var i=0;i<r_count;i++){var route=router.getRoute(i);var p_count=route.getNumPoints();for(var j=0;j<p_count;j++){var vx=route.getPoint(j);obj.p.push({x:vx.getX(),y:vx.getY()});}}
points.push(obj);callback(1,points,cparam);});YMaps.Events.observe(router,router.Events.RouteError,function(number){if(callback)
callback(0,null,cparam);});return true;},resolve_address:function(address,callback,arg){jQuery('#yand_status').html('<p style="text-decoration: blink;">'+
this.translation.processing);var geocoder=new YMaps.Geocoder(address,{results:1});YMaps.Events.observe(geocoder,geocoder.Events.Load,function(){if(this.length()){jQuery('#yand_status').html('');var geopoint=this.get(0).getGeoPoint();callback(true,{lat:geopoint.getLat(),lon:geopoint.getLng(),text:this.request},arg);}else{jQuery('#yand_status').html('<i>'+MapYandexCMSModule.translation.not_found+'</i>');callback(false,null,arg);}});YMaps.Events.observe(geocoder,geocoder.Events.Fault,function(){callback(false,null,arg);});return true;},resolve_point:function(point,callback,arg){var geopoint=new YMaps.GeoPoint(point.lon,point.lat);var geocoder=new YMaps.Geocoder(geopoint,{results:1});YMaps.Events.observe(geocoder,geocoder.Events.Load,function(){if(this.length())
callback(true,this.get(0).text,arg);else
callback(false,null,arg);});YMaps.Events.observe(geocoder,geocoder.Events.Fault,function(){callback(false,null,arg);});return true;},bind_address_iface:function(id,callback,arg){var html='<table style="width: 100%"><tr><td>'+this.translation.address+'</td>'+'<td style="width: 100%;">'+'<input id="yand_text" type="text" style="width: 70%;"/>&nbsp;&nbsp;'+'<input id="yand_button" type="button" value="'+this.translation.search+'"/></td></tr>'+'<tr><td></td><td id="yand_status"></td></tr></table>';jQuery('#'+id).html(html);jQuery('#yand_text').keypress(function(e){if(e.which==13){var addr=jQuery('#yand_text').val();MapYandexCMSModule.resolve_address(addr,callback,arg);}});jQuery('#yand_button').click(function(){var addr=jQuery('#yand_text').val();MapYandexCMSModule.resolve_address(addr,callback,arg);});},clear_address_field:function(){jQuery('#yand_text').val("");}});WebCMS.register_module(MapYandexCMSModule);var mod_map=WebCMS.get_module("map");if(mod_map)
mod_map.register_map_module(MapYandexCMSModule);var MapImageRendererCMSModule=Base.extend({constructor:null,imgserver:"",get_type:function(){return"map_image_renderer";},get_image_server:function(){return this.imgserver;},create_msgs_layer:function(units){if(!units||!units.length)
return null;var layer=new WialonUnitMessagesLayer;for(var i=0;i<units.length;i++){var unit_info=units[i];if(typeof unit_info.id!='number'||typeof unit_info.type!='number'||typeof unit_info.ival1!='number')
continue;var unit=Wialon.get_item(unit_info.id);if(!unit||unit.get_type()!="avl_unit")
continue;if(typeof unit_info.ival2!='number')
unit_info.ival2=0;if(typeof unit_info.label!='string')
unit_info.label="";if(typeof unit_info.style!='object')
unit_info.style={};if(typeof unit_info.style.w=='undefined')
unit_info.style.w=5;if(typeof unit_info.style.t=='undefined')
unit_info.style.t=20;if(typeof unit_info.style.c=='undefined')
unit_info.style.c=0x0000FF;if(typeof unit_info.style.a=='undefined')
unit_info.style.a=1;if(typeof unit_info.style.i=='undefined')
unit_info.style.i=0;if(typeof unit_info.style.l=='undefined')
unit_info.style.l=0;if(typeof unit_info.style.s=='undefined')
unit_info.style.s="";layer.add_unit(unit,unit_info.type,unit_info.ival1,unit_info.ival2,unit_info.style.td?1:0);var color=Number(unit_info.style.c);var opacity=100-Number(unit_info.style.t);if(opacity<0||opacity>90)
opacity=0;opacity=Number(sprintf("0x%x000000",Number(2.55*opacity)));var track_width=Number(unit_info.style.w)
var arr_size=track_width+1;if(arr_size<4)
arrr_size=4;layer.set_unit_tracks_config(track_width,opacity+color,300,arr_size,unit_info.style.s);layer.set_unit_split_config(7200,200000);if(unit_info.label!="")
layer.set_unit_label_config(unit_info.label,10,200,0x000000,1,color,0,0);layer.set_unit_road_lock(unit_info.style.l);layer.add_msg_style(0,track_width,opacity+color,true,0,200000);if(unit_info.style.a)
layer.set_msg_style_annot_config(0x1|0x2,10,0x000000,opacity+color,color,1,0,100000);if(unit_info.style.i)
layer.set_msg_style_index_config(8,0x00000000,2,color);layer.finish_msg_style();if(unit_info.style.a){layer.add_msg_style(1,parseInt(track_width/2)+2,opacity+color,true,0,100000);layer.set_msg_style_annot_config(0x1|0x3|0x4,8,0x000000,opacity+color,color,1,0,50000);if(unit_info.style.i)
layer.set_msg_style_index_config(8,0x00000000,2,color);layer.finish_msg_style();}
layer.finish_unit();}
return layer;},on_init:function(){var mod_mm=WebCMS.get_module("monitoring_map");if(mod_mm)
mod_mm.register_map_layer(MapImageRendererMarkersCMSModule);}});var ImageRendererLayer=Base.extend({map:null,name:"",renderer:null,map_layer:null,events_registered:false,hit_info:null,init:function(map,name,callback,cparam){if(!map||this.map_layer)
return false;this.map=map;this.name=name;this.renderer=new WialonImageRenderer();var mod_ust=WebCMS.get_module("user_settings_time");if(mod_ust)
this.renderer.set_tz_offset(mod_ust.get_tz_dst_offset());return this.renderer.create_renderer(function(result,renderer,cparam){cparam.layer.create_map_layer(result,cparam.callback,cparam.cparam);},{layer:this,callback:callback,cparam:cparam});},init_inline:function(map,name,renderer,callback,cparam){if(!map||this.map_layer)
return false;var renderer_name="";if(typeof renderer!="string")
renderer_name=renderer.name;else
renderer_name=renderer;this.map=map;this.name=name;this.renderer=new WialonImageRenderer();var mod_ust=WebCMS.get_module("user_settings_time");if(mod_ust)
this.renderer.set_tz_offset(mod_ust.get_tz_dst_offset());this.renderer.attach_renderer(renderer_name);if(typeof renderer=="object")
for(var i=0;i<renderer.layers.length;i++){if(typeof renderer.layers[i].units!='undefined'){var layer=new WialonUnitMessagesLayer;layer.name=renderer.layers[i].name;layer.units=renderer.layers[i].units;layer.bounds=renderer.layers[i].bounds;layer.renderer_name=renderer_name;this.renderer.add_layer(layer);}else
this.renderer.add_layer(renderer.layers[i]);}
this.create_map_layer(true,callback,cparam);},update:function(){if(!this.map||!this.map_layer||!this.renderer)
return false;var mod_ust=WebCMS.get_module("user_settings_time");if(mod_ust)
this.renderer.set_tz_offset(mod_ust.get_tz_dst_offset());var mod_mm=WebCMS.get_module("map_image_renderer_markers");if(mod_mm)
mod_mm.hide_marker();this.renderer.update_renderer(function(result,cparam){cparam.create_map_layer(result,null);},this);},show:function(){if(!this.map_layer)
return;this.map_layer.setVisibility(true);},hide:function(){if(!this.map_layer)
return;this.map_layer.setVisibility(false);},is_visible:function(){if(!this.map_layer)
return false;return this.map_layer.getVisibility();},destroy:function(){if(this.renderer){this.renderer.destroy_renderer();this.renderer=null;}
if(this.map_layer){this.map_layer.destroy();this.map_layer=null;this.map=null;}
var mod_mm=WebCMS.get_module("map_image_renderer_markers");if(mod_mm)
mod_mm.hide_marker();},get_renderer:function(){return this.renderer;},create_map_layer:function(result,callback,cparam){var mod_rm=WebCMS.get_module("map_image_renderer");if(!result||!mod_rm){if(callback)
callback(false,this,cparam);return;}
if(this.map_layer){this.map_layer.destroy();this.map_layer=null;}
var f=2;var arVersion=navigator.appVersion.split("MSIE");var version=parseFloat(arVersion[1]);if(version==6)
f=3;this.map_layer=new OpenLayers.Layer.WebGIS(this.name,mod_rm.get_image_server(),{isBaseLayer:false,res_name:"/avl_render",url_params:"&d=0&q=100&a="+this.renderer.renderer_name+"&f="+f+"&rv="+this.renderer.version,displayInLayerSwitcher:false});var layers=this.renderer.get_layers(true);if(!layers.length)
this.hide();else if(!this.events_registered){this.events_registered=true;var msgs_layer_obj=this;this.map.events.register("mousemove",this.map,function(e){msgs_layer_obj.on_mousemove(e);});this.map.events.register("click",this.map,function(e){msgs_layer_obj.on_click(e);});}
this.map.addLayer(this.map_layer);this.map.setLayerIndex(this.map_layer,1);if(callback)
callback(true,this,cparam);},prev_mouse_pos:null,prev_mouse_time:null,prev_test_time:null,hit_test_running:false,prev_hit_pos:null,prev_hit_distance:0,on_mousemove:function(evt){if(!this.renderer||!evt||!this.is_visible()||this.hit_test_running)
return;var layers=this.renderer.get_layers(true);if(!layers||!layers.length)
return;var tm=new Date;if(this.prev_mouse_time!=null&&(tm.getTime()-this.prev_mouse_time.getTime())<30)
return;this.prev_mouse_time=tm;if(this.prev_mouse_pos){var dx=Math.abs(this.prev_mouse_pos.x-evt.xy.x);var dy=Math.abs(this.prev_mouse_pos.y-evt.xy.y);var delta=dx+dy;if(delta>50){this.prev_mouse_pos=evt.xy.clone();return;}}
this.prev_mouse_pos=evt.xy.clone();if(this.prev_test_time&&(tm.getTime()-this.prev_test_time.getTime())<300)
return;this.prev_test_time=tm;var ll=this.map.getLonLatFromViewPortPx(evt.xy);ll.transform(this.map.getProjectionObject(),this.map.displayProjection);if(this.prev_hit_pos&&this.prev_hit_distance>=20){var lonlat=ll.clone();lonlat.transform(this.map.displayProjection,this.map.getProjectionObject());var px1=this.map.getLayerPxFromLonLat(lonlat);var px2=this.map.getLayerPxFromLonLat(this.prev_hit_pos);var distance=Math.sqrt((px1.x-px2.x)*(px1.x-px2.x)+(px1.y-px2.y)*(px1.y-px2.y));if(distance!=0){var diff=this.prev_hit_distance/distance;if(diff>=0.8&&diff<=1.2)
return;}}
this.hit_test_running=true;var htmod=this;if(!this.renderer.hit_test(ll.lat,ll.lon,this.get_px_radius(9),function(res,hit_info,param){htmod.hit_test_running=false;htmod.prev_hit_pos=null;var mod_mm=WebCMS.get_module("map_image_renderer_markers");if(!mod_mm)
return;if(!res){mod_mm.hide_marker();return;}
MapImageRendererCMSModule.hit_info=hit_info;var lonlat=new OpenLayers.LonLat(hit_info.lon,hit_info.lat);lonlat.transform(mod_mm.map.displayProjection,mod_mm.map.getProjectionObject());var lonlat2=param.clone();lonlat2.transform(mod_mm.map.displayProjection,mod_mm.map.getProjectionObject());var px1=mod_mm.map.getLayerPxFromLonLat(lonlat);var px2=mod_mm.map.getLayerPxFromLonLat(lonlat2);var distance=Math.sqrt((px1.x-px2.x)*(px1.x-px2.x)+(px1.y-px2.y)*(px1.y-px2.y));htmod.prev_hit_distance=distance;htmod.prev_hit_pos=lonlat.clone();if(distance>50)
mod_mm.hide_marker();else
mod_mm.show_marker(hit_info);},ll)){htmod.hit_test_running=false;}},on_click:function(evt){var mod=MapImageRendererCMSModule;if(!evt||!mod.hit_info||!this.map)
return;var lonlat=new OpenLayers.LonLat(mod.hit_info.lon,mod.hit_info.lat);var ll=this.map.getLonLatFromViewPortPx(evt.xy);ll.transform(this.map.getProjectionObject(),this.map.displayProjection);var y1=lonlat.lat-(lonlat.lat+this.get_px_radius(9));var x1=lonlat.lon-(lonlat.lon+this.get_px_radius(9));var rdist=Math.sqrt(y1*y1+x1*x1);var y2=lonlat.lat-ll.lat;var x2=lonlat.lon-ll.lon;var dist=Math.sqrt(y2*y2+x2*x2);if(rdist>=dist){var mod_mt=WebCMS.get_module("messages_table");if(mod_mt)
mod_mt.on_select_row(mod.hit_info.imsg);}
mod.hit_info=null;},get_px_radius:function(pixels){var pixel1=new OpenLayers.Pixel(100,100);var pixel1_=this.map.getLonLatFromPixel(pixel1);var pixel2=new OpenLayers.Pixel(100+pixels,100);var pixel2_=this.map.getLonLatFromPixel(pixel2);pixel1_.transform(this.map.getProjectionObject(),this.map.displayProjection);pixel2_.transform(this.map.getProjectionObject(),this.map.displayProjection);var radius=Math.sqrt((pixel2_.lat-pixel1_.lat)*(pixel2_.lat-pixel1_.lat)+(pixel2_.lon-pixel1_.lon)*(pixel2_.lon-pixel1_.lon))
return radius;}});var MapImageRendererMarkersCMSModule=Base.extend({constructor:null,markers_layer:null,map:null,marker_img_url:"/map_image_renderer/msg.png",marker:null,title:"",get_type:function(){return"map_image_renderer_markers";},on_init:function(){},get_map:function(){return this.map;},get_layer:function(){return this.markers_layer;},attach_to_map:function(map){if(!map||this.map)
return;this.map=map;this.markers_layer=new OpenLayers.Layer.Markers("ImageRenderer Markers",{displayInLayerSwitcher:false});this.markers_layer.toplayer=this;map.addLayer(this.markers_layer);this.map.setLayerIndex(this.markers_layer,1);},show_marker:function(hit_info){if(!hit_info||!this.map||!this.markers_layer)
return;var lonlat=new OpenLayers.LonLat(hit_info.lon,hit_info.lat);lonlat.transform(this.map.displayProjection,this.map.getProjectionObject());if(!this.marker){var size=new OpenLayers.Size(12,12);var offset=new OpenLayers.Pixel(-(size.w/2),-(size.h/2));var icon=new OpenLayers.Icon(this.marker_img_url,size,offset);this.marker=new OpenLayers.Marker(lonlat,icon);this.markers_layer.addMarker(this.marker);jQuery(icon.imageDiv).attr("title","X").Tooltip({showURL:false,bodyHandler:function(){return MapImageRendererMarkersCMSModule.title;}});}else{var px=this.map.getLayerPxFromLonLat(lonlat);this.marker.moveTo(px);this.markers_layer.redraw();}
if(hit_info.type==2){var mod_uit=WebCMS.get_module("unit_info_text");if(!mod_uit||!hit_info.unit||!hit_info.msg){this.title="";return;}
var info=mod_uit.get_message_info(hit_info.msg,hit_info.unit);this.title="<table class='hittest_point_description'><tr><td colspan='2' align='center'><b>"+hit_info.unit.get_name()+"</b><hr></td></tr>"+info+"<table>";}else if(hit_info.type==1){var rows="";var arr=hit_info.text.split("\n");for(var i=0;i<arr.length;i+=2){if(i<arr.length-1)
rows+="<tr><td>"+arr[i]+":&nbsp;&nbsp;&nbsp;&nbsp;</td><td>"+arr[i+1]+"</td></tr>"
else
rows+="<tr><td colspan='2'>"+arr[i]+"</td></tr>"}
this.title="<table class='hittest_point_description'><tr><td colspan='2' align='center'><b>"+hit_info.header+"</b><hr></td></tr>"+rows+"<table>";}else
this.title="";},hide_marker:function(){if(!this.marker)
return;this.markers_layer.removeMarker(this.marker);this.marker.destroy();this.marker=null;}});WebCMS.register_module(MapImageRendererCMSModule);WebCMS.register_module(MapImageRendererMarkersCMSModule);function _VISICOM_remoteRequestCallback(dummy,data){if(!MapVisicomCMSModule.addr_callback&&!MapVisicomCMSModule.rout_callback)
return;if(MapVisicomCMSModule.rout_callback&&(!data||!data.childs||!data.childs.length)){MapVisicomCMSModule.rout_callback(0,null,MapVisicomCMSModule.rout_callback_arg);return;}
if(MapVisicomCMSModule.addr_callback&&!data){MapVisicomCMSModule.addr_callback(0,null,MapVisicomCMSModule.addr_callback_arg);return;}
if(data.type=="layer"){if(!data.childs||data.childs.length==0){jQuery('#vcom_status').html('<i>'+MapVisicomCMSModule.translation.not_found+'</i>');MapVisicomCMSModule.addr_callback(false,null,MapVisicomCMSModule.addr_callback_arg);}else{jQuery('#vcom_status').html('');var points=data.childs[0].coords;if(points[0].length)
points=points[0];var c={lat:0.0,lon:0.0};for(var i=0;i<points.length;i++){var p=points[i];c.lat+=p.lat;c.lon+=p.lng;}
c.lat/=points.length;c.lon/=points.length;c.text=data.childs[0].name;MapVisicomCMSModule.addr_callback(true,c,MapVisicomCMSModule.addr_callback_arg);}
MapVisicomCMSModule.addr_callback=null;MapVisicomCMSModule.addr_callback_arg=null;}else if(data.type=="route"){if(MapVisicomCMSModule.addr_callback&&!MapVisicomCMSModule.rout_callback){if(data.childs&&data.childs[0]&&data.childs[0].name){var address=data.childs[0].name;address=address.replace(/^ - | - $/,"");MapVisicomCMSModule.addr_callback(true,address,MapVisicomCMSModule.addr_callback_arg);}else{MapVisicomCMSModule.addr_callback(false,null,MapVisicomCMSModule.addr_callback_arg);}}else{var points_exists=0;var points=MapVisicomCMSModule.total_result;for(var i=0;i<data.childs.length;i++){var obj=new Object;obj.n=data.childs[i].name;obj.p=new Array;for(var j=0;j<data.childs[i].coords.length;j++)
obj.p.push({x:data.childs[i].coords[j].lng,y:data.childs[i].coords[j].lat});points_exists=1;points.push(obj);}
if(MapVisicomCMSModule.total_points.length==1){MapVisicomCMSModule.rout_callback(1,MapVisicomCMSModule.total_result,MapVisicomCMSModule.rout_callback_arg);MapVisicomCMSModule.total_result=null;MapVisicomCMSModule.total_points=null;MapVisicomCMSModule.rout_callback=null;MapVisicomCMSModule.rout_callback_arg=null;}else
MapVisicomCMSModule.calculate_routing_impl();}}};var MapVisicomCMSModule=Base.extend({constructor:null,translation:{},mapserver:"http://tms1.visicom.ua/,http://tms2.visicom.ua/,http://tms3.visicom.ua/",tags:"",visicom_ok:0,visicom_key:"",get_type:function(){return"map_visicom";},init_map:function(map,params){if(!this.visicom_ok)
return;var layer=new OpenLayers.Layer.Visicom("Visicom",this.mapserver);map.addLayer(layer);},on_init:function(){if(!this.visicom_ok)
return;var mod_routing=WebCMS.get_module("map_routing");if(mod_routing)
mod_routing.register_routing_provider(this);var mod_geocoding=WebCMS.get_module("map_geocoding");if(mod_geocoding)
mod_geocoding.register_provider(this);},get_name:function(){return this.translation.visicom;},get_traffic_provide:function(){return false;},get_travel_mode_provide:function(){return false;},get_avoid_highways_provide:function(){return false;},calculate_routing:function(points,flags,callback,cparam){if(!points||!points.length||!callback)
return false;this.total_points=points;this.rout_callback=callback;this.rout_callback_arg=cparam;this.total_result=new Array;this.calculate_routing_impl();return true;},calculate_routing_impl:function(){if(this.total_points.length<2)
return false;var params=new Object();for(var i=0;i<2;i++)
params["p"+(i+1)]=this.total_points[i].x+","+
this.total_points[i].y+";";params["key"]=this.visicom_key;params["mapname"]="world_ru";this.total_points.splice(0,1);if(!WebAjax.exec_service("http://maps.visicom.ua/api/2.0.0//route",params))
return false;return true;},resolve_address:function(address,callback,arg){jQuery('#vcom_status').html('<p style="text-decoration: blink;">'+
this.translation.processing);this.addr_callback=callback;this.addr_callback_arg=arg;jQuery.getJSON("http://maps.visicom.ua/api/2.0.0//address?callback=?",{key:this.visicom_key,mapname:"world_ru",p1:address});return true;},resolve_point:function(point,callback,arg){this.addr_callback=callback;this.addr_callback_arg=arg;var fake={lat:point.lat,lon:point.lon-0.3};jQuery.getJSON("http://maps.visicom.ua/api/2.0.0//route?callback=?",{key:this.visicom_key,mapname:"world_ru",p1:point.lon+","+point.lat+";",p2:fake.lon+","+fake.lat+";"});return true;},bind_address_iface:function(id,callback,arg){var html='<table style="width: 100%"><tr><td>'+this.translation.address+'</td>'+'<td style="width: 100%;">'+'<input id="vcom_text" type="text" style="width: 70%;"/>&nbsp;&nbsp;'+'<input id="vcom_button" type="button" value="'+this.translation.search+'"/></td></tr>'+'<tr><td></td><td id="vcom_status"></td></tr></table>';jQuery('#'+id).html(html);jQuery('#vcom_text').keypress(function(e){if(e.which==13){var addr=jQuery('#vcom_text').val();MapVisicomCMSModule.resolve_address(addr,callback,arg);}});jQuery('#vcom_button').click(function(){var addr=jQuery('#vcom_text').val();MapVisicomCMSModule.resolve_address(addr,callback,arg);});},clear_address_field:function(){jQuery('#vcom_text').val("");}});WebCMS.register_module(MapVisicomCMSModule);var mod_map=WebCMS.get_module("map");if(mod_map)
mod_map.register_map_module(MapVisicomCMSModule);var UnitInfoTextCMSModule=Base.extend({constructor:null,translation:{},info_texts:[],default_texts:"hw_type,time,location,speed,gps,gprs,counters",get_type:function(){return"unit_info_text";},get_info_text:function(unit,hide_name){if(!unit||unit.get_type()!="avl_unit")
return"";var html="<table>"+(typeof hide_name=="undefined"?("<tr><td colspan='2' align='center'><b>"+unit.get_name()+"</b><hr size='1'/></td></tr>"):"");for(var mod_type in this.info_texts){var mod=this.info_texts[mod_type];var info=null;if(mod&&typeof mod.get_info_text=='function'){if(mod.get_type()=="unit_info_text_hw_type"&&unit.get_access_level()<Wialon.access_level("edit"))
continue;info=mod.get_info_text(unit);if(info&&typeof info=='object'){if(typeof info.name!='undefined'&&typeof info.value!='undefined')
html+="<tr><td>"+info.name+":</td><td>"+info.value+"</td></tr>";else if(typeof info.length!='undefined'){for(var i=0;i<info.length;i++)
html+="<tr><td>"+info[i].name+":</td><td>"+info[i].value+"</td></tr>";}}}}
html+="</table>";return html;},add_info_text:function(mod){if(typeof mod!='object'||!mod)
return;var t=this.info_texts[mod.get_type()];if(typeof t!='undefined')
return;this.info_texts[mod.get_type()]=mod;},on_init:function(){var texts=this.default_texts.split(",");for(var i=0;i<texts.length;i++){switch(texts[i]){case"time":this.add_info_text(UnitInfoTextTimeCMSModule);break;case"hw_type":this.add_info_text(UnitInfoTextHwTypeCMSModule);break;case"location":this.add_info_text(UnitInfoTextLocationCMSModule);break;case"speed":this.add_info_text(UnitInfoTextSpeedCMSModule);break;case"gps":this.add_info_text(UnitInfoTextGPSCMSModule);break;case"gprs":this.add_info_text(UnitInfoTextGPRSCMSModule);break;case"counters":this.add_info_text(UnitInfoTextCountersCMSModule);break;default:break;}}},get_message_info:function(msg,unit){var html="";var mod_ust=WebCMS.get_module("user_settings_time");if(!mod_ust)
return;if(!unit)
unit=this.current_track.unit;html+="<tr><td>"+this.translation.time+"</td><td>"+mod_ust.format_time(msg.get_time())+"</td></tr>";var has_pos=msg.get_flags()&0x01;var speed="---";var location="";var coords="---";var alt="---";if(has_pos){speed=msg.get_speed();if(typeof use_us_metrics!="undefined"&&use_us_metrics)
speed*=0.621;speed=parseInt(speed);var mod_sp=WebCMS.get_module("unit_info_text_speed");if(mod_sp){if(typeof use_us_metrics!="undefined"&&use_us_metrics)
speed+=" "+mod_sp.translation.mih;else
speed+=" "+mod_sp.translation.kmh;}
sat_count=msg.get_sat_count();location=msg.get_location();coords=msg.get_lat()+", "+msg.get_lon();if(sat_count!=0xFF)
coords+=sprintf(" (%d)",sat_count);alt=this.format_distance(msg.get_alt());}
if(has_pos){if(location!="")
html+="<tr><td>"+this.translation.position+"</td><td>"+location+"</td></tr>";html+="<tr><td>"+this.translation.speed+"</td><td>"+speed+"</td></tr>";html+="<tr><td>"+this.translation.coords+"</td><td>"+coords+"</td></tr>";html+="<tr><td>"+this.translation.altitude+"</td><td>"+alt+"</td></tr>";}
html+="<tr><td colspan='2'><hr></td></tr>";var pl=unit.get_plugin("avl_unit_sensors");var sens_mgr=WebCMS.get_module("device_sensors");if(pl&&sens_mgr){var sensors=Wialon.sort_items(pl.get_sensors());for(var i=0;i<sensors.length;i++){if(!sensors[i]||!sens_mgr.show_in_tooltip(sensors[i].get_type()))
continue;var value=this.get_sensor_value(msg,sensors[i]);if(value!=this.translation.unknown){var real_measure;if(sens_mgr)
real_measure=sens_mgr.get_real_measurement(sensors[i].get_type());else
real_measure=sensors[i].get_measurement();if(sens_mgr.is_on_off_sensor(real_measure)){var on_val=this.translation.on;var off_val=this.translation.off;var sens_meas=sensors[i].get_measurement();if(sens_mgr.get_real_measurement(sensors[i].get_type())!=sens_meas){var arrs=sens_meas.split("/");if(arrs.length==2){on_val=arrs[0];off_val=arrs[1];}}
if(parseFloat(value))
value=on_val;else
value=off_val;}else{var sens_meas=sensors[i].get_measurement();if(sens_mgr.get_real_measurement(sensors[i].get_type())==sens_meas)
value=sprintf("%.2f %s",value,sens_mgr.get_measurement(sensors[i].get_type()));else
value=sprintf("%.2f %s",value,sensors[i].get_measurement());}}
html+="<tr><td>"+sensors[i].get_name()+"</td><td>"+value+"</td></tr>"}}
return html;},get_sensor_value:function(msg,sensor){if(!sensor||!msg)
return this.translation.unknown;var is_in=sensor.get_param_name().split("in");if(is_in.length==2&&is_in[0]==""&&!isNaN(is_in[1])){if(msg.get_flags()&0x2)
return msg.get_inputs()&(1<<is_in[1]-1);else
return this.translation.unknown;}
var is_out=sensor.get_param_name().split("out");if(is_out.length==2&&is_out[0]==""&&!isNaN(is_out[1])){if(msg.get_flags()&0x4)
return msg.get_outputs()&(1<<is_out[1]-1);else
return this.translation.unknown;}
var param=msg.get_param(sensor.get_param_name(),"N/A");if(param!="N/A"){var res=sensor.calculate_val(param,-348201.3876);if(res!=-348201.3876)
return res;}
return this.translation.unknown;},format_distance:function(distance){if(typeof use_us_metrics!="undefined"&&use_us_metrics){var total_dk=distance/1000*0.621;var txt_total_dk=(total_dk>=1)?sprintf(this.translation.distance_mi,total_dk):sprintf(this.translation.distance_ft,distance*3.280);return txt_total_dk;}else{var total_dk=distance/1000;var txt_total_dk=(total_dk>=1)?sprintf(this.translation.distance_km,total_dk):sprintf(this.translation.distance_m,distance);return txt_total_dk;}}});WebCMS.register_module(UnitInfoTextCMSModule);var UnitInfoTextTimeCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"unit_info_text_time";},get_info_text:function(unit){var value;var last_msg=unit.get_last_msg();if(last_msg){var mod_ust=WebCMS.get_module("user_settings_time");if(!mod_ust)
return null;value=mod_ust.format_time(last_msg.get_time(),false);var diff=WebCMS.get_time_interval_text(Wialon.get_server_time()-last_msg.get_time());if(diff!="")
value+=sprintf(" (%s %s)",diff,this.translation.ago);}else
return null;return{name:this.translation.time,value:value};}});WebCMS.register_module(UnitInfoTextTimeCMSModule);var UnitInfoTextHwTypeCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"unit_info_text_hw_type";},get_info_text:function(unit){var curr_user=Wialon.get_current_user();if(unit.get_user_access(curr_user)>Wialon.access_level("view"))
return{name:this.translation.title,value:unit.get_hardware_type()};return"";}});WebCMS.register_module(UnitInfoTextHwTypeCMSModule);var UnitInfoTextLocationCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"unit_info_text_location";},get_info_text:function(unit){var value="";var pos=unit.get_position();if(pos)
value=pos.get_location();if(value=="")
return null;return{name:this.translation.location,value:value};}});WebCMS.register_module(UnitInfoTextLocationCMSModule);var UnitInfoTextSpeedCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"unit_info_text_speed";},get_info_text:function(unit){var value="N/A";var pos=unit.get_position();if(pos){if(typeof use_us_metrics!="undefined"&&use_us_metrics)
value=Math.round(pos.get_speed()*0.621)+" "+this.translation.mih;else
value=pos.get_speed()+" "+this.translation.kmh;}else
return null;var height=pos.get_alt();if(!height)
return{name:this.translation.speed,value:value};else{if(typeof use_us_metrics!="undefined"&&use_us_metrics){return[{name:this.translation.speed,value:value},{name:this.translation.height,value:Math.round(parseInt(height)*3.048)+" "+this.translation.feets}]}else{return[{name:this.translation.speed,value:value},{name:this.translation.height,value:parseInt(height)+" "+this.translation.meters}]}}}});WebCMS.register_module(UnitInfoTextSpeedCMSModule);var UnitInfoTextGPSCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"unit_info_text_gps";},get_info_text:function(unit){var value;var pos=unit.get_position();if(pos){var sats=pos.get_sat_count();if(sats==0xFF)
return null;else
value=sats;}else
return null;return{name:this.translation.locked_sats,value:value};}});WebCMS.register_module(UnitInfoTextGPSCMSModule);var UnitInfoTextGPRSCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"unit_info_text_gprs";},get_info_text:function(unit){var value=unit.get_inet_connection();if(value=="")
return null;return{name:this.translation.gprs_conn,value:value};}});WebCMS.register_module(UnitInfoTextGPRSCMSModule);var UnitInfoTextCountersCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"unit_info_text_counters";},get_info_text:function(unit){var arr=new Array;var val=unit.get_mileage_counter();if(val)
arr.push({name:this.translation.mileage,value:UnitInfoTextCMSModule.format_distance(val)});if(WebCMS.get_module("device_sensors")){val=unit.get_engine_hours_counter();if(val)
arr.push({name:this.translation.engine_hours,value:parseInt(val/3600)+" "+this.translation.hr});}
return arr;}});WebCMS.register_module(UnitInfoTextCountersCMSModule);var MonitoringMapCMSModule=Base.extend({constructor:null,map:null,image_renderer_name:"",image_renderer_layer:null,default_pos:{lat:53.9,lon:27.55,zoom:12},map_layers:{},get_type:function(){return"monitoring_map";},get_map:function(){return this.map;},register_map_layer:function(mod){if(typeof mod!='object'||!mod)
return;var t=this.map_layers[mod.get_type()];if(typeof t!='undefined')
return;this.map_layers[mod.get_type()]=mod;},ensure_units_visible:function(units,force,check_mod_mu){if(typeof units!='object')
return false;if(typeof force=='undefined')
force=false;if(typeof check_mod_mu=='undefined')
check_mod_mu=true;var bounds=null;var mod_mu=WebCMS.get_module("monitoring_units");for(var id in units){var unit=Wialon.get_item(id);if(!unit)
continue;var pos=unit.get_position();if(!pos||(mod_mu&&check_mod_mu&&!mod_mu.is_unit_visible(unit)))
continue;if(!bounds)
bounds=new OpenLayers.Bounds(pos.get_lon(),pos.get_lat(),pos.get_lon(),pos.get_lat());else
bounds.extend(new OpenLayers.LonLat(pos.get_lon(),pos.get_lat()));}
return this.set_map_bounds(bounds,force);},set_map_bounds:function(bounds,force){if(!bounds||!this.map)
return false;bounds.transform(this.map.displayProjection,this.map.getProjectionObject());if(bounds.left==bounds.right){var center=bounds.getCenterLonLat();if(this.map.getCenter()&&!force)
this.map.panTo(center);else
this.map.setCenter(center,this.default_pos.zoom);return true;}
if(force||!this.map.getExtent().containsBounds(bounds)){var center=bounds.getCenterLonLat();var width=bounds.getWidth()*2.0/3.0;var height=bounds.getHeight()*2.0/3.0;bounds.extend(new OpenLayers.LonLat(center.lon-width,center.lat-height));bounds.extend(new OpenLayers.LonLat(center.lon+width,center.lat+height));this.map.zoomToExtent(bounds);}
return true;},get_renderer_layer:function(){return this.image_renderer_layer;},on_init:function(){var mod_map=WebCMS.get_module("map");if(!mod_map)
return;this.map=mod_map.create_map("monitoring_map_target",{});if(!this.map)
return;var mod_mu=WebCMS.get_module("monitoring_units");var units={};var col=Wialon.get_units();for(var i=0;i<col.length;i++)
units[col[i].get_id()]=col[i];if(!mod_mu||!this.ensure_units_visible(units,true,true)){var pt=new OpenLayers.LonLat(this.default_pos.lon,this.default_pos.lat);pt.transform(this.map.displayProjection,this.map.getProjectionObject());this.map.setCenter(pt,this.default_pos.zoom);}
for(var mod_type in this.map_layers){var mod=this.map_layers[mod_type];if(mod&&typeof mod.attach_to_map=='function')
mod.attach_to_map(this.map);}
if(this.image_renderer_name!=""){this.image_renderer_layer=new ImageRendererLayer;this.image_renderer_layer.init_inline(this.map,"Monitoring Layer",this.image_renderer_name,null,null);}}});WebCMS.register_module(MonitoringMapCMSModule);var UnitStateImageCMSModule=Base.extend({constructor:null,visible_units:null,grouped_units:null,markers_layer:null,map:null,max_icon_rows:3,cookie:1,zoom:0,image_size:16,translation:{},get_type:function(){return"unit_state_image";},get_map:function(){return this.map;},get_layer:function(){return this.markers_layer;},attach_to_map:function(map){if(!map||this.map)
return;this.map=map;this.markers_layer=new OpenLayers.Layer.Markers("Unit States",{displayInLayerSwitcher:false});map.addLayer(this.markers_layer);this.map.setLayerIndex(this.markers_layer,1);this.map.events.register('zoomend',this,function(){if(this.zoom<this.map.getZoom())this.redraw();this.zoom=this.map.getZoom();});this.zoom=this.map.getZoom();},on_init:function(){this.visible_units=new Object;this.grouped_units=new Object;Wialon.bind_event_handler("item_deleted",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_unit")
UnitStateImageCMSModule.on_unit_deleted(event_id);});Wialon.bind_event_handler("unit_pos_updated",0,function(event_type,event_id,event_data){UnitStateImageCMSModule.on_unit_pos_updated(event_id,event_data);});Wialon.bind_event_handler("monitorig_unit_state_changed",0,function(event_type,event_id,event_data){UnitStateImageCMSModule.on_unit_state_changed(event_id,event_data);});Wialon.bind_event_handler("unit_grouped",0,function(event_type,event_id,event_data){delete UnitStateImageCMSModule.grouped_units[event_id.get_id()];UnitStateImageCMSModule.on_unit_state_changed(event_id.get_id(),false);UnitStateImageCMSModule.grouped_units[event_id.get_id()]=1;UnitStateImageCMSModule.refresh_layer(event_id.get_id());});Wialon.bind_event_handler("unit_ungrouped",0,function(event_type,event_id,event_data){delete UnitStateImageCMSModule.grouped_units[event_id.get_id()];UnitStateImageCMSModule.on_unit_state_changed(event_id.get_id(),true);UnitStateImageCMSModule.refresh_layer(event_id.get_id());});},add_image:function(unit,url,flags,tooltip_fn){if(!unit)
return 0;var unit_id=unit.get_id();unit_item=this.visible_units[unit_id];if(typeof unit_item=="undefined"){this.visible_units[unit_id]=new Object;unit_item=this.visible_units[unit_id];}
unit_item[this.cookie]=new Object;image_item=unit_item[this.cookie];image_item.pos=-1;image_item.marker=null;image_item.icon_url=url;image_item.unit=unit;image_item.flags=flags;image_item.deleted=false;image_item.updated=true;image_item.visible=true;image_item.hidden=false;var mod_mu=WebCMS.get_module("monitoring_units");if(!mod_mu.is_unit_visible(unit)||this.grouped_units[unit_id]){image_item.hidden=true;}
image_item.tooltip=tooltip_fn;image_item.timer_id=-1;var id=unit_id+"_"+this.cookie++;return id;},remove_image:function(cookie){var id=cookie.split("_");if(id.length!=2)
return;var image_item=this.visible_units[id[0]][id[1]];if(typeof image_item=="undefined")
return;image_item.deleted=true;return 1;},update_image:function(cookie,url){var id=cookie.split("_");if(id.length!=2)
return;var image_item=this.visible_units[id[0]][id[1]];if(typeof image_item=="undefined")
return;image_item.icon_url=url;image_item.updated=true;return 1;},refresh_layer:function(updated_unit_id){var map=this.map;for(unit_id in this.visible_units){if(updated_unit_id&&updated_unit_id!=unit_id)
continue;var unit=Wialon.get_item(unit_id);if(!unit)
continue;var need_update_left=false;var need_update_right=false;var curr_image_left=0;var curr_image_right=0;var unit_item=this.visible_units[unit_id];for(image_id in unit_item){var image_item=unit_item[image_id];var right_side=image_item.flags&0x01;if(image_item.deleted){var marker=image_item.marker;if(marker==null||typeof marker!='object')
continue;this.markers_layer.removeMarker(marker);marker.destroy();if(right_side)
need_update_right=true;else
need_update_left=true;if(image_item.timer_id!=-1)
clearInterval(image_item.timer_id);delete this.visible_units[unit_id][image_id];continue;}
if(image_item.hidden){curr_image_right=1;break;}
if((need_update_right&&right_side)||need_update_left&&!right_side)
image_item.updated=true;if(right_side)
curr_image=curr_image_right;else
curr_image=curr_image_left;if(image_item.updated){if(image_item.marker==null){var pos=image_item.unit.get_position();var lock_on_road=0;if(mod_mum)
lock_on_road=mod_mum.lock_on_road;var lonlat=lock_on_road?new OpenLayers.LonLat(pos.get_road_lon(),pos.get_road_lat()):new OpenLayers.LonLat(pos.get_lon(),pos.get_lat());lonlat.transform(map.displayProjection,map.getProjectionObject());var border=this.image_size;var size=new OpenLayers.Size(border,border);var x_shift=Math.round(0.5+curr_image/(this.max_icon_rows+1));var y_shift=curr_image%(this.max_icon_rows+1);if(right_side)
image_item.offset=new OpenLayers.Pixel(-border*(x_shift+1),border-border*y_shift);else
image_item.offset=new OpenLayers.Pixel(border*x_shift,border-border*y_shift);var icon=new OpenLayers.Icon(image_item.icon_url,size,image_item.offset);image_item.marker=new OpenLayers.Marker(lonlat,icon);this.markers_layer.addMarker(image_item.marker);image_item.pos=curr_image;jQuery(icon.imageDiv).attr("g_id",unit_id+"_"+image_id);if(typeof image_item.tooltip=="function")
jQuery(icon.imageDiv).attr("title","X").Tooltip({showURL:false,bodyHandler:image_item.tooltip});else if(image_item.tooltip.length){jQuery(icon.imageDiv).attr("t_tip",image_item.tooltip);jQuery(icon.imageDiv).attr("title","X").Tooltip({showURL:false,bodyHandler:function(){return jQuery(this).attr("t_tip");}});}
if(image_item.flags&0x02){var timer="UnitStateImageCMSModule.on_timer(\""+unit_id+"_"+image_id+"\");"
image_item.timer_id=setInterval(timer,1000);}
if(right_side)
need_update_right=true;else
need_update_left=true;}else{var pos=image_item.unit.get_position();var mod_mum=WebCMS.get_module("monitoring_units_markers");var lock_on_road=0;if(mod_mum)
lock_on_road=mod_mum.lock_on_road;var lonlat=lock_on_road?new OpenLayers.LonLat(pos.get_road_lon(),pos.get_road_lat()):new OpenLayers.LonLat(pos.get_lon(),pos.get_lat());lonlat.transform(map.displayProjection,map.getProjectionObject());var px=map.getLayerPxFromLonLat(lonlat);image_item.marker.setUrl(image_item.icon_url);if(image_item.pos!=curr_image){var border=this.image_size;var x_shift=Math.round(0.5+curr_image/(this.max_icon_rows+1));var y_shift=curr_image%(this.max_icon_rows+1);if(right_side)
image_item.offset.x=-border*(x_shift+1);else
image_item.offset.x=border*x_shift;image_item.offset.y=border-border*y_shift;}
image_item.marker.moveTo(px);image_item.pos=curr_image;}
image_item.updated=false;}
if(right_side)
curr_image_right++;else
curr_image_left++;}
if(!curr_image_right&&!curr_image_left)
delete this.visible_units[unit_id];if(updated_unit_id)
break;}},on_unit_pos_updated:function(unit_id,msg){var unit_item=this.visible_units[unit_id];if(!unit_item)
return;for(image_id in unit_item){this.visible_units[unit_id][image_id].updated=true;}
this.refresh_layer(unit_id);},on_unit_state_changed:function(unit_id,state){if(!unit_id||this.grouped_units[unit_id])
return;var unit_item=this.visible_units[unit_id];if(typeof unit_item=="undefined")
return;for(image_id in unit_item){var image_item=this.visible_units[unit_id][image_id];if(state){if(!image_item.hidden)
continue;image_item.hidden=false;if(image_item.marker!=null&&!(image_item.flags&0x2)){image_item.marker.display(true);}}else{if(image_item.hidden)
continue;image_item.hidden=true;if(image_item.marker!=null)
image_item.marker.display(false);}}},on_unit_deleted:function(unit_id){var unit_item=this.visible_units[unit_id];if(typeof unit_item=="undefined")
return;for(image_id in unit_item){var image_item=unit_item[image_id];if(image_item.marker!=null)
image_item.marker.display(false);image_item.deleted=true;}
delete this.grouped_units[unit_id];},on_timer:function(cookie){var id=cookie.split("_");if(id.length!=2)
return;var image_item=this.visible_units[id[0]][id[1]];if(typeof image_item=="undefined")
return;if(image_item.hidden)
return;image_item.visible=!image_item.visible;if(typeof image_item.marker!="undefined")
image_item.marker.display(image_item.visible);},redraw:function(){for(var unit_id in this.visible_units){var unit_item=this.visible_units[unit_id];if(!unit_item)
continue;for(image_id in unit_item){this.visible_units[unit_id][image_id].updated=true;}}
this.refresh_layer();}});WebCMS.register_module(UnitStateImageCMSModule);var mod_mm=WebCMS.get_module("monitoring_map");if(mod_mm)
mod_mm.register_map_layer(UnitStateImageCMSModule);var MapDrawingCMSModule=Base.extend({constructor:null,map:null,drawing_layer:null,features:{},features_count:1,g_obj:null,get_type:function(){return"map_drawing";},get_layer:function(){return this.drawing_layer;},attach_to_map:function(map){this.map=map;},get_map:function(){return this.map;},create_drawing_layer:function(){if(this.map){this.drawing_layer=new OpenLayers.Layer.Vector("Drawing layer",{displayInLayerSwitcher:false});this.map.addLayer(this.drawing_layer);this.map.setLayerIndex(this.drawing_layer,1);}else
return false;return true;},destroy_drawing_layer:function(){if(this.drawing_layer){this.map.removeLayer(this.drawing_layer);this.drawing_layer=null;}},on_init:function(){return true;},init:function(){if(!this.map)
return false;if(!this.drawing_layer)
return this.create_drawing_layer();return true;},add_text:function(point,text,style,fid){if(!this.drawing_layer&&!this.init())
return 0;var feature=null;if(fid)
feature=this.features[fid];if(!feature){feature=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Text(),null,style);feature.geometry.text=text;feature.geometry.x=point.lon;feature.geometry.y=point.lat;this.drawing_layer.addFeatures([feature]);this.features[this.features_count++]=feature;return this.check_priority(this.features_count-1,3);}else{feature.geometry.text=text;feature.geometry.x=point.lon;feature.geometry.y=point.lat;feature.style=style;this.drawing_layer.drawFeature(feature);return fid;}},add_polygone:function(points,style,fid){if(!this.drawing_layer&&!this.init())
return 0;var feature=null;if(fid)
feature=this.features[fid];if(!feature){feature=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(points)]),null,style);this.drawing_layer.addFeatures([feature]);this.features[this.features_count++]=feature;return this.check_priority(this.features_count-1,2);}else{feature.style=style;feature.geometry.components[0].components.splice(0,feature.geometry.components[0].components.length);for(var i=0;i<points.length;i++)
feature.geometry.components[0].components.push(points[i]);this.drawing_layer.drawFeature(feature);return fid;}},add_polyline:function(points,style,fid){if(!this.drawing_layer&&!this.init())
return 0;var feature=null;if(fid)
feature=this.features[fid];if(!feature){feature=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(points),null,style);this.drawing_layer.addFeatures([feature]);this.features[this.features_count++]=feature;return this.check_priority(this.features_count-1,1);}else{feature.style=style;feature.geometry.components.splice(0,feature.geometry.components.length);for(var i=0;i<points.length;i++)
feature.geometry.components.push(points[i]);this.drawing_layer.drawFeature(feature);return fid;}},add_point:function(fid,point,style){if(!this.drawing_layer&&!this.init())
return 0;var featuret=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(),null,style);feature.geometry.x=point.x;feature.geometry.y=point.y;this.drawing_layer.addFeatures([feature]);this.features[this.features_count++]=feature;return this.check_priority(this.features_count-1,0);},remove_feature:function(fid){if(!this.drawing_layer)
return false;var feature=this.features[fid];if(!feature)
return false;feature.destroy();this.features[fid]=null;},redraw:function(){if(!this.drawing_layer)
this.init();this.drawing_layer.redraw();},check_priority:function(id,type){if(!this.g_obj){if(jQuery.browser.msie)
this.g_obj=jQuery("div group",this.drawing_layer.div);else
this.g_obj=jQuery("svg g",this.drawing_layer.div);jQuery(this.g_obj).prepend("<marker id='md_a'></marker><marker id='md_b'></marker><marker id='md_c'></marker>");}
if(type==0||type==2)
jQuery("[id="+this.features[id].geometry.id+"]",this.g_obj).insertAfter(jQuery("#md_c",this.g_obj));else if(type==1)
jQuery("[id="+this.features[id].geometry.id+"]",this.g_obj).insertAfter(jQuery("#md_a",this.g_obj));else
jQuery("[id="+this.features[id].geometry.id+"]",this.g_obj).insertAfter(jQuery("#md_b",this.g_obj));return id;}});WebCMS.register_module(MapDrawingCMSModule);var mod_mm=WebCMS.get_module("monitoring_map");if(mod_mm)
mod_mm.register_map_layer(MapDrawingCMSModule);var MonitoringUnitsMarkersCMSModule=Base.extend({constructor:null,flags:0x1000,sensor_type:"engine operation",text_style:{text_color:"#FF0000",font_size:12,max_syms:15,auto_wrap:true,y_offset:16},tail_style:{tail_color:"#0000FF",tail_width:3,tail_points:5},new_tail_style:{tail_color:"#0000FF",tail_width:3,tail_points:5},course_style:null,group_style:{group_icon:"/monitoring_units_markers/cloud.png"},sensor_styles:null,show_names:0,show_courses:0,show_courses_popup:0,show_tails:0,replace_icons_shape:0,replace_icons_icon:0,add_sensor_text:0,change_name_color:0,lock_on_road:0,icons_on_border:0,group_icons:0,sensor_icons:0,show_markers:0,check_sensor:0,state_sensor:0,markers_layer:null,icon_size:32,group_checking_timeout:2000,features:{},view_states:{},cloud_markers:[],cloud_markers_texts:[],timer:null,icons:[],icons_cache:{},icons_groups:[],map:null,zoom:0,mod_mu:null,mod_md:null,mod_usi:null,priority:-20,no_img_url:"/monitoring_units_markers/no_image.png",translation:{},default_ol_style:{fillColor:"#00FF00",fillOpacity:1,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#000000",strokeOpacity:1,strokeWidth:1,strokeLinecap:"round",hoverStrokeColor:"#FDC689",hoverStrokeOpacity:0.5,hoverStrokeWidth:0.2,pointRadius:4,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted"},tail_img_url:"/monitoring_units_markers/tail.png",tail_none_img_url:"/monitoring_units_markers/tail_none.png",name_img_url:"/monitoring_units_markers/highlight_names.png",name_none_img_url:"/monitoring_units_markers/highlight_names_none.png",course_img_url:"/monitoring_units_markers/course.png",course_none_img_url:"/monitoring_units_markers/course_none.png",get_type:function(){return"monitoring_units_markers";},init_type_flags:function(){this.flags&0x1?this.show_names=1:this.show_names=0;if(this.flags&0x2){this.show_courses=1;this.show_courses_popup=0;}else if(this.flags&0x4){this.show_courses=0;this.show_courses_popup=1;}else{this.show_courses=0;this.show_courses_popup=1;}
this.flags&0x8?this.show_tails=1:this.show_tails=0;this.flags&0x10?this.replace_icons_shape=1:this.replace_icons_shape=0;this.flags&0x20?this.replace_icons_icon=1:this.replace_icons_icon=0;this.flags&0x40?this.change_name_color=1:this.change_name_color=0;this.flags&0x80?this.add_sensor_text=1:this.add_sensor_text=0;this.flags&0x100?this.lock_on_road=1:this.add_sensor_column=0;this.flags&0x200?this.icons_on_border=1:this.icons_on_border=0;this.flags&0x400?this.group_icons=1:this.group_icons=0;this.flags&0x800?this.sensor_icons=1:this.sensor_icons=0;this.flags&0x1000?this.state_sensor=1:this.state_sensor=0;this.replace_icons_icon=0;this.replace_icons_shape||this.replace_icons_icon?this.show_markers=1:this.show_markers=0;this.check_sensor=true;if(this.replace_icons_shape){this.show_courses=0;this.show_courses_popup=0;}},store_type_flags:function(){var new_flags=0;new_flags=this.show_names?new_flags|0x1:new_flags;new_flags=this.show_courses?new_flags|0x2:new_flags;new_flags=this.show_courses_popup?new_flags|0x4:new_flags;new_flags=this.show_tails?new_flags|0x8:new_flags;new_flags=this.replace_icons_shape?new_flags|0x10:new_flags;new_flags=this.replace_icons_icon?new_flags|0x20:new_flags;new_flags=this.change_name_color?new_flags|0x40:new_flags;new_flags=this.add_sensor_text?new_flags|0x80:new_flags;new_flags=this.lock_on_road?new_flags|0x100:new_flags;new_flags=this.icons_on_border?new_flags|0x200:new_flags;new_flags=this.group_icons?new_flags|0x400:new_flags;new_flags=this.sensor_icons?new_flags|0x800:new_flags;new_flags=this.state_sensor?new_flags|0x1000:new_flags;this.flags=new_flags;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("muf",this.flags);mod_us.store_settings();},make_speed_params:function(){var defaults=new Array;defaults.push(this.make_shape(null,[{x:-6,y:-6},{x:-6,y:6},{x:6,y:6},{x:6,y:-6}],false,"#FF0000"));defaults.push(this.make_shape(null,[{x:-6,y:-10},{x:0,y:10},{x:6,y:-10},{x:0,y:-6}],true,"#00FF00","",""));var sensor_on=new Array;sensor_on.push(this.make_shape(null,[{x:2,y:-8},{x:-2,y:-8},{x:-6,y:-6},{x:-8,y:-2},{x:-8,y:2},{x:-6,y:6},{x:-2,y:8},{x:2,y:8},{x:6,y:6},{x:8,y:2},{x:8,y:-2},{x:6,y:-6}],false,"#FFFF00"));sensor_on.push(this.make_shape(defaults[1]));var sensor_off=new Array;sensor_off.push(this.make_shape(defaults[0]));sensor_off.push(this.make_shape(defaults[1]));this.move_styles=new Object;this.move_styles["no_sensor"]=defaults;this.move_styles["no_data"]=defaults;this.move_styles[0]=sensor_off;this.move_styles[0.00000000001]=sensor_on;},make_course_params:function(){this.course_style=new Array;this.course_style.push(this.make_shape(null,null));this.course_style.push(this.make_shape(null,[{x:-6,y:-10},{x:0,y:10},{x:6,y:-10},{x:0,y:-6}],true,"#00FF00"));},on_init:function(){if(jQuery.browser.msie)
jQuery(document).ready(function(){MonitoringUnitsMarkersCMSModule.init_custom();});else
MonitoringUnitsMarkersCMSModule.init_custom();},init_custom:function(){var user=Wialon.get_current_user();if(!user)
return;this.flags=parseInt(user.get_private_property("muf","11"));var mod_mus=WebCMS.get_module("monitoring_units_sensor");if(mod_mus)
mod_mus.on_init();if(user.get_private_property("uml","")!="")
user.set_private_property("uml","");if(user.get_private_property("uhi","")!="")
user.set_private_property("uhi","");if(user.get_private_property("ugi","")!="")
user.set_private_property("ugi","");this.init_type_flags();this.mod_mu=WebCMS.get_module("monitoring_units");this.mod_md=WebCMS.get_module("map_drawing");this.mod_usi=WebCMS.get_module("unit_state_image");if(!this.mod_mu||!this.mod_md||!this.mod_usi)
return;if(!this.move_styles)
this.make_speed_params();if(!this.course_style)
this.make_course_params();this.ol_tail_style=this.make_style(this.tail_style);this.text_style_custom=this.make_style(this.text_style,this.default_ol_style);jQuery("body").append("<span id='test_font_width' style='display:none' style='font-size:"+this.text_style.fontSize+"px'></span>");Wialon.bind_event_handler("monitorig_units_all_added",0,function(event_type,event_id,event_data){MonitoringUnitsMarkersCMSModule.create_view_state();});Wialon.bind_event_handler("monitorig_units_all_removed",0,function(event_type,event_id,event_data){MonitoringUnitsMarkersCMSModule.hide_all_units();});Wialon.bind_event_handler("unit_color_updated",0,function(event_type,event_id,event_data){MonitoringUnitsMarkersCMSModule.on_unit_color_updated(Wialon.get_item(event_id));});Wialon.bind_event_handler("monitorig_unit_state_changed",0,function(event_type,event_ids,event_data){for(var i=0;i<event_ids.length;i++)
MonitoringUnitsMarkersCMSModule.on_unit_state_changed(Wialon.get_item(event_ids[i].uid),event_ids[i].hide,true);MonitoringUnitsMarkersCMSModule.check_markers_pos();});Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.ugi!='undefined')
MonitoringUnitsMarkersCMSModule.on_unit_icon_updated(Wialon.get_item(event_id));if(typeof event_data.nm!='undefined')
MonitoringUnitsMarkersCMSModule.on_unit_name_updated(Wialon.get_item(event_id));if(typeof event_data.sensu!='undefined'){MonitoringUnitsMarkersCMSModule.hide_unit(Wialon.get_item(event_id));MonitoringUnitsMarkersCMSModule.create_view_state(Wialon.get_item(event_id));}});Wialon.bind_event_handler("unit_pos_updated",0,function(event_type,event_id,event_data){MonitoringUnitsMarkersCMSModule.on_unit_pos_updated(event_id,event_data);if(!MonitoringUnitsMarkersCMSModule.timer)
MonitoringUnitsMarkersCMSModule.timer=setTimeout(function(){MonitoringUnitsMarkersCMSModule.check_markers_pos();MonitoringUnitsMarkersCMSModule.timer=null;},MonitoringUnitsMarkersCMSModule.group_checking_timeout);});Wialon.bind_event_handler("msg_registered",0,function(event_type,event_id,event_data){if(event_data&&event_data.type=="udp"&&!event_data.pos_updated)
MonitoringUnitsMarkersCMSModule.on_unit_pos_updated(event_id,event_data);else if(event_data&&event_data.type=="ud")
MonitoringUnitsMarkersCMSModule.on_unit_msg_updated(event_id,event_data,true);});Wialon.bind_event_handler("monitoring_unit_selected",0,function(event_type,event_id,event_data){MonitoringUnitsMarkersCMSModule.on_unit_selected(event_data);});Wialon.bind_event_handler("monitoring_unit_group_selected",0,function(event_type,event_id,event_data){MonitoringUnitsMarkersCMSModule.on_unit_group_selected(event_data);});Wialon.bind_event_handler("item_deleted",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_unit")
MonitoringUnitsMarkersCMSModule.on_unit_deleted(event_data);});Wialon.bind_event_handler("item_created",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_unit")
MonitoringUnitsMarkersCMSModule.create_view_state(event_data);});this.init_map();this.create_view_state();this.check_markers_pos();var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);var tail_img=this.show_tails?this.tail_img_url:this.tail_none_img_url;var html="&nbsp;&nbsp;<img id='drawing_features_tail' border='0' align='absmiddle' src='"+tail_img+"'>";var name_img=this.show_names?this.name_img_url:this.name_none_img_url;html+="&nbsp;<img id='drawing_features_name' border='0' align='absmiddle' src='"+name_img+"'>";var course_img=this.show_courses?this.course_img_url:this.course_none_img_url;html+="&nbsp;<img id='drawing_features_course' border='0' align='absmiddle' src='"+course_img+"'>";jQuery("#monitoring_options_target").css("width","auto");jQuery("#monitoring_options_target").append(html);jQuery("#drawing_features_tail").attr("title",this.translation.show_tail).Tooltip({showURL:false}).css({cursor:"pointer"}).click(MonitoringUnitsMarkersCMSModule.show_hide_tails);jQuery("#drawing_features_name").attr("title",this.translation.show_name).Tooltip({showURL:false}).css({cursor:"pointer"}).click(MonitoringUnitsMarkersCMSModule.show_hide_names);jQuery("#drawing_features_course").attr("title",this.translation.show_course).Tooltip({showURL:false}).css({cursor:"pointer"}).click(MonitoringUnitsMarkersCMSModule.show_hide_courses);this.load_tail_params();},get_map:function(){return this.map;},get_layer:function(){return this.markers_layer;},attach_to_map:function(map){if(!map||this.map)
return;this.map=map;this.markers_layer=new OpenLayers.Layer.Markers("Unit Markers",{displayInLayerSwitcher:false,trace_icons:this.icons_on_border});map.addLayer(this.markers_layer);this.map.setLayerIndex(this.markers_layer,1);},init_map:function(){if(!this.map)
return;var map=this.map;map.events.register("zoomend",this,function(){var zoom=this.map.getZoom();var old_zoom=this.zoom;if(zoom!=old_zoom){this.zoom=zoom;this.check_markers_pos();this.redraw(old_zoom<zoom||this.icons_on_border);}});map.events.addEventType("icons_border");map.events.eventTypes.push("icons_border");map.events.register("icons_border",this,function(evt){if(!this.replace_icons_shape||!this.icons_on_border)
return;var marker=evt.marker;if(!marker||!marker.unit_id)
return;var unit=Wialon.get_item(marker.unit_id);var state=this.view_states[marker.unit_id];if(!state||!state.visible)
return;state.icon_px_offset=evt.pos;this.update_shapes(state);this.show_shape(unit);});this.zoom=map.getZoom();},create_view_state:function(device){var units=null;if(device)
units=[device];else
units=Wialon.get_units();for(var i=0;i<units.length;i++){var unit=units[i];var unit_id=unit.get_id();var state=new Object;if(this.view_states[unit_id]){state.tail_points=this.view_states[unit_id].tail_points;state.marker=this.view_states[unit_id].marker;state.sensor_cookie=this.view_states[unit_id].sensor_cookie;}else
state.tail_points=new Array;state.device=unit;state.unit_name=unit.get_name();state.unit_text=unit.get_name();state.visible=this.mod_mu.is_unit_visible(unit);state.data_msg_time=0;state.pos_msg_time=0;state.unit_icon="";this.view_states[unit_id]=state;if(!state.visible)
continue;if(this.check_sensor){state.sensor_value=-348201.3876;state.style_pos="";state.shape_style=null;state.sensor=null;var sensors=null;var pl=unit.get_plugin("avl_unit_sensors")
if(pl){sensors=pl.get_sensors(this.sensor_type);if(sensors.length)
state.sensor=sensors[0];this.update_unit_status(unit);}}
this.update_unit_pos(unit);if(state.visible)
this.check_for_update(unit);}
if(!device){this.check_markers_pos();this.markers_layer.trace_icons=this.icons_on_border;this.markers_layer.redraw()}},check_for_update:function(unit){if(!unit)
return;var unit_id=unit.get_id();var state=this.view_states[unit_id];if(!state||!state.visible)
return;var last_speed=state.last_speed!=-1?state.last_speed:0;var style=state.shape_style&&state.shape_style[last_speed]?state.shape_style[last_speed]:null;if(state.style_updated||state.pos_updated){if(state.unit_pos){if(this.replace_icons_shape)
state.unit_icon=this.no_img_url;else if(this.replace_icons_icon){var style=state.shape_style[last_speed];if(style&&style.icon_large.length)
state.unit_icon=style.icon_large;else{var pl=unit.get_plugin("avl_item_icon");if(!pl)
return;state.unit_icon=WebCMS.get_img_url(pl.get_icon_url(this.icon_size));}}else{var pl=unit.get_plugin("avl_item_icon");if(!pl)
return;state.unit_icon=WebCMS.get_img_url(pl.get_icon_url(this.icon_size));}
this.show_unit_icon(unit,state.pos_updated,state.style_updated);}}
if(this.is_unit_grouped(unit))
return;if(state.unit_pos&&(state.speed_changed||state.style_updated||state.pos_updated)){state.unit_text=state.unit_name;if(this.add_sensor_text&&style&&style.description.length)
state.unit_text+=" ("+style.description+")";if(this.change_name_color&&style)
state.text_style=this.make_style(jQuery.extend(true,this.text_style,style),true);if(!state.text_style)
state.text_style=this.make_style(this.text_style,true);if(this.show_names)
this.show_name(unit);}
if(state.unit_pos&&state.tail_updated&&this.show_tails)
this.show_tail(unit);if(state.unit_pos&&(state.style_updated||state.course_changed||state.speed_changed||state.pos_updated)&&(this.show_courses||(this.show_courses_popup&&this.features[unit_id]&&this.features[unit_id].course))){this.show_course(unit);}
if(state.unit_pos&&state.style_updated||state.speed_changed)
state.ol_shape_style=this.make_style(style);if(state.unit_pos&&(state.course_changed||state.speed_changed||state.pos_updated)&&this.replace_icons_shape)
this.show_shape(unit);if(state.unit_pos&&this.sensor_icons&&(state.style_updated||state.speed_changed)){var style=state.shape_style[last_speed];if(style&&style.icon_small.length){state.sensor_icon=style.icon_small;state.sensor_text=style.description;if(style.icon_style)
state.sensor_style=style.icon_style;else
state.sensor_style=0;}else
state.sensor_icon="";this.show_sensor_icon(unit);}
state.tail_updated=false;state.style_updated=false;state.pos_updated=false;state.speed_changed=false;state.course_changed=false;},update_unit_status:function(unit,new_msg){if(!unit||!this.check_sensor)
return;var unit_id=unit.get_id();var state=this.view_states[unit_id];if(!state)
return;var msg=unit.get_last_msg();if((!msg&&!new_msg)||(new_msg&&state.data_msg_time>new_msg.get_time()))
return;if(new_msg)
msg=new_msg;state.data_msg_time=msg.get_time();var styles=this.move_styles;var style_pos="";var sensor=state.sensor;if(sensor){var res=sensor.calculate(msg,-348201.3876);if(res!==-348201.3876&&res!=state.sensor_value){state.sensor_value=res;for(style_pos in styles){if(isNaN(style_pos))
continue;if(parseFloat(style_pos)>=res)
break;}}else
style_pos=state.style_pos;}else
style_pos="no_sensor";if(!style_pos.length)
style_pos="no_data";if(style_pos!=state.style_pos){state.style_pos=style_pos;state.shape_style=styles[style_pos];state.style_updated=true;}
var mod_mus=WebCMS.get_module("monitoring_units_sensor");if(mod_mus){var info=mod_mus.get_unit_info(unit);if(info&&info.color.length){var style=new Object;state.shape_style=new Array;jQuery.extend(style,styles[style_pos][0]);style.color="#"+info.color;state.shape_style[0]=style;style=new Object;jQuery.extend(style,styles[style_pos][1]);style.color="#"+info.color;state.shape_style[1]=style;}}},on_unit_color_updated:function(unit){var mod_mus=WebCMS.get_module("monitoring_units_sensor");if(!mod_mus||!unit||!this.replace_icons_shape)
return;var unit_id=unit.get_id();var state=this.view_states[unit_id];if(!state||state.style_pos=="")
return;var info=mod_mus.get_unit_info(unit);if(info&&info.color.length){var style=new Object;state.shape_style=new Array;jQuery.extend(style,this.move_styles[state.style_pos][0]);style.color="#"+info.color;state.shape_style[0]=style;style=new Object;jQuery.extend(style,this.move_styles[state.style_pos][0]);style.color="#"+info.color;state.shape_style[1]=style;}else
state.shape_style=this.move_styles[state.style_pos];state.style_updated=true;state.course_changed=true;this.check_for_update(unit);},update_units_all_tail_points:function(){var units=this.mod_mu.get_visible_units();for(var i=0;i<units.length;i++){var unit_id=units[i].get_id();var state=this.view_states[unit_id];while(state&&state.tail_points.length>this.last_tail_points){var offset=state.tail_points.length>this.last_tail_points;state.tail_points.splice(0,1);this.hide_tail(units[i]);this.show_tail(units[i]);}}},update_unit_pos:function(unit,pos_msg){if(!unit)
return;var unit_id=unit.get_id();var state=this.view_states[unit_id];if(!state)
return;var msg=unit.get_position();if(pos_msg)
msg=pos_msg;state.pos_updated=false;state.tail_updated=false;state.speed_changed=false;state.course_changed=false;var unit_id=unit.get_id();var visible=this.mod_mu.is_unit_visible(unit);if(!msg){state.last_speed=-1;state.last_course=-1;state.visible=false;return;}
var unit_ll=this.lock_on_road?new OpenLayers.LonLat(msg.get_road_lon(),msg.get_road_lat()):new OpenLayers.LonLat(msg.get_lon(),msg.get_lat());unit_ll.transform(this.mod_md.map.displayProjection,this.mod_md.map.getProjectionObject());if(!unit_ll)
return;var insert_into=0;for(var i=state.tail_points.length;i>0;i--){if(state.tail_points[i-1].time<msg.get_time()){insert_into=i;break;}}
if(!pos_msg||insert_into==state.tail_points.length){state.pos_updated=true;state.tail_updated=true;state.unit_pos=unit_ll;state.unit_px=this.mod_md.map.getPixelFromLonLat(unit_ll);state.icon_px_offset=null;}
var pt=new OpenLayers.Geometry.Point(unit_ll.lon,unit_ll.lat);pt.time=msg.get_time();state.tail_points.splice(insert_into,0,pt);if(state.tail_points.length>this.tail_style.tail_points)
state.tail_points.splice(0,1);if(insert_into>0)
state.tail_updated=true;if(!pos_msg||(visible&&!state.visible)){state.speed_changed=true;state.course_changed=true;state.last_speed=msg.get_speed()?1:0;state.last_course=msg.get_course();}else{if(state.last_speed<0||(pos_msg.get_speed()?1:0)!=state.last_speed){state.speed_changed=true;state.last_speed=pos_msg.get_speed()?1:0;}
if(state.last_course<0||pos_msg.get_course()!=state.last_course){state.course_changed=true;state.last_course=pos_msg.get_course();}}
state.visible=visible;if(!visible)
return;if(state.course_changed||state.pos_updated)
this.update_shapes(state);},update_shapes:function(state,skip_shape,skip_course){var last_speed=state.last_speed!=-1?state.last_speed:0;var unit_px=null;if(state.icon_px_offset){unit_px=this.mod_md.map.getViewPortPxFromLayerPx(new OpenLayers.Pixel(state.icon_px_offset.x,state.icon_px_offset.y));}else if(state.unit_pos)
unit_px=this.mod_md.map.getPixelFromLonLat(state.unit_pos);else
return;if(!skip_shape){var shape=state.shape_style?state.shape_style[last_speed]:null;var rot_shape=new Array;var rot_course=new Array;if(shape){for(var i=0;i<shape.shape.length;i++){var rot_pt=this.rotate_angle(shape.shape[i],shape.rotate?state.last_course:0);var pixel=new OpenLayers.Pixel(unit_px.x+rot_pt.x,unit_px.y-rot_pt.y);var pixel_ll=this.mod_md.map.getLonLatFromPixel(pixel);rot_shape.push(new OpenLayers.Geometry.Point(pixel_ll.lon,pixel_ll.lat));}
state.shape=rot_shape;}}
if(!skip_course){var shape=this.course_style[last_speed];if(shape.shape){var shift_pt=this.rotate_angle({x:0,y:26},state.last_course);var rot_shape=new Array;for(var i=0;i<shape.shape.length;i++){var rot_pt=this.rotate_angle(shape.shape[i],shape.rotate?state.last_course:0);rot_pt.x+=shift_pt.x;rot_pt.y+=shift_pt.y;var pixel=new OpenLayers.Pixel(unit_px.x+rot_pt.x,unit_px.y-rot_pt.y);var pixel_ll=this.mod_md.map.getLonLatFromPixel(pixel);rot_shape.push(new OpenLayers.Geometry.Point(pixel_ll.lon,pixel_ll.lat));}
state.course_shape=rot_shape;}else
state.course_shape=null;if(shape&&state.course_shape&&(state.speed_changed||!state.course_style))
state.course_style=this.make_style(shape);}},show_all_names:function(){var units=this.mod_mu.get_visible_units();for(var i=0;i<units.length;i++)
if(!this.is_unit_grouped(units[i]))
this.show_name(units[i]);},show_name:function(unit){if(!unit)
return;var unit_id=unit.get_id();var state=this.view_states[unit_id];if(!state||!state.unit_pos)
return;if(!this.features[unit_id])
this.features[unit_id]={};var id=this.mod_md.add_text(state.unit_pos,state.unit_text,state.text_style,this.features[unit_id].unit_name);if(!id)
return false;this.features[unit_id].unit_name=id;},hide_all_names:function(){var units=this.mod_mu.get_visible_units();for(var i=0;i<units.length;i++)
this.hide_name(units[i]);},hide_name:function(unit){if(!unit)
return;var unit_id=unit.get_id();if(!this.features[unit_id])
return;if(this.features[unit_id].unit_name)
this.mod_md.remove_feature(this.features[unit_id].unit_name);this.features[unit_id].unit_name=null;},show_all_courses:function(){var units=this.mod_mu.get_visible_units();for(var i=0;i<units.length;i++)
if(!this.is_unit_grouped(units[i]))
this.show_course(units[i]);},show_course:function(unit){if(!unit)
return;var unit_id=unit.get_id();var state=this.view_states[unit_id];if(!state||!state.unit_pos)
return;if(!this.features[unit_id])
this.features[unit_id]={};if(!state.course_shape)
this.update_shapes(state,true,false);if(!state.course_shape){this.hide_course(unit);return;}
var id=this.mod_md.add_polygone(state.course_shape,state.course_style,this.features[unit_id].course);if(!id)
return false;this.features[unit_id].course=id;},hide_all_courses:function(){var units=this.mod_mu.get_visible_units();for(var i=0;i<units.length;i++)
this.hide_course(units[i]);},hide_course:function(unit){if(!unit)
return;var unit_id=unit.get_id();if(!this.features[unit_id])
return;if(this.features[unit_id].course)
this.mod_md.remove_feature(this.features[unit_id].course);this.features[unit_id].course=null;},show_all_tails:function(){var units=this.mod_mu.get_visible_units();for(var i=0;i<units.length;i++)
if(!this.is_unit_grouped(units[i]))
this.show_tail(units[i]);},show_tail:function(unit){if(!unit)
return;var unit_id=unit.get_id();var state=this.view_states[unit_id];if(!state||!state.unit_pos)
return;if(!this.features[unit_id])
this.features[unit_id]={};if(state.tail_points.length<2)
return;var id=this.mod_md.add_polyline(state.tail_points,this.ol_tail_style,this.features[unit_id].tail);if(!id)
return false;this.features[unit_id].tail=id;},hide_all_tails:function(){var units=this.mod_mu.get_visible_units();for(var i=0;i<units.length;i++)
this.hide_tail(units[i]);},hide_tail:function(unit){if(!unit)
return;var unit_id=unit.get_id();if(!this.features[unit_id])
return;if(this.features[unit_id].tail)
this.mod_md.remove_feature(this.features[unit_id].tail);this.features[unit_id].tail=null;},show_shapes:function(){var units=this.mod_mu.get_visible_units();for(var i=0;i<units.length;i++)
this.show_shape(units[i]);},show_shape:function(unit){if(!unit)
return;var unit_id=unit.get_id();var state=this.view_states[unit_id];if(!state||!state.unit_pos||this.is_unit_grouped(unit))
return;if(!this.features[unit_id])
this.features[unit_id]={};var id=this.mod_md.add_polygone(state.shape,state.ol_shape_style,this.features[unit_id].shape);if(!id)
return false;this.features[unit_id].shape=id;},hide_shapes:function(){var units=this.mod_mu.get_visible_units();for(var i=0;i<units.length;i++)
this.hide_shape(units[i]);},hide_shape:function(unit){if(!unit)
return;var unit_id=unit.get_id();if(!this.features[unit_id])
return;if(this.features[unit_id].shape)
this.mod_md.remove_feature(this.features[unit_id].shape);this.features[unit_id].shape=null;},show:function(){if(!this.markers_layer)
return;this.markers_layer.setVisibility(true);},hide:function(){if(!this.markers_layer)
return;this.markers_layer.setVisibility(false);},is_visible:function(){if(!this.markers_layer)
return false;return this.markers_layer.getVisibility();},get_row_html:function(){var html="<tr><td>"+this.translation.lock+":</td><td><input type='checkbox' id='monitoring_units_markers_lock'/></td></tr>";html+="<tr><td>"+this.translation.hide_unit_icon+":</td><td><input type='checkbox' id='monitoring_units_markers_hide'/></td></tr>";html+="<tr><td>"+this.translation.group_unit_icon+":</td><td><input type='checkbox' id='monitoring_units_markers_group'/></td></tr>";html+="<tr><td>"+this.translation.trace_icons+":</td><td><input type='checkbox' id='monitoring_units_markers_trace'/></td></tr>";html+="<tr><td>"+this.translation.units_count_points_tail+":</td><td><select id='monitoring_units_count_points_tail'>";for(var i=0;i<15;++i){var opt=i+1;if(opt>9)
opt=(opt%10)*10;if(opt==0)
continue;html+="<option value='"+opt+"' >"+opt+"</option>";}
html+="</select></td></tr>";html+="<tr><td style='text-indent: 20px;'>"+this.translation.units_color_tail+":</td><td><div style='"+(this.tail_style["tail_color"]?"background-color:"+this.tail_style["tail_color"]+";":"")+"border:1px black solid;height:12px;width:12px;cursor:pointer;' id='monitoring_units_color_tail' align='center' ac_color='"+this.tail_style["tail_color"]+"'></div></td></tr>";html+="<tr><td style='text-indent: 20px;'>"+this.translation.units_width_tail+":</td>";html+="<td><select id='monitoring_units_width_tail'>";for(var i=0;i<10;++i){var opt=i+1;html+="<option value='"+opt+"' >"+opt+"</option>";}
html+="</select></td></tr>";return html;},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#monitoring_units_markers_lock").attr("checked",this.lock_on_road).attr("title",this.translation.title).Tooltip({showURL:false});jQuery("#monitoring_units_markers_hide").attr("checked",this.replace_icons_shape).attr("title",this.translation.title_hide).Tooltip({showURL:false});jQuery("#monitoring_units_markers_group").attr("checked",this.group_icons).attr("title",this.translation.title_group).Tooltip({showURL:false});jQuery("#monitoring_units_markers_trace").attr("checked",this.icons_on_border).attr("title",this.translation.title_trace).Tooltip({showURL:false});jQuery("#monitoring_units_count_points_tail").change(function(){MonitoringUnitsMarkersCMSModule.new_tail_style["tail_points"]=jQuery(this).val();});jQuery("#monitoring_units_color_tail").click(function(){var mod=WebCMS.get_module("color_picker");if(mod)
mod.pick_color(jQuery(this).offset().top,jQuery(this).offset().left,MonitoringUnitsMarkersCMSModule.tail_style["tail_color"],function(sel_color){MonitoringUnitsMarkersCMSModule.new_tail_style["tail_color"]=sprintf("#%06x",sel_color);jQuery("#monitoring_units_color_tail").attr("ac_color",sel_color);jQuery("#monitoring_units_color_tail").css("background-color",sprintf("#%06x",sel_color));});});jQuery("#monitoring_units_width_tail").change(function(){MonitoringUnitsMarkersCMSModule.new_tail_style["tail_width"]=jQuery(this).val();});jQuery("#monitoring_units_count_points_tail").val(this.tail_style["tail_points"]);jQuery("#monitoring_units_width_tail").val(this.tail_style["tail_width"]);},load_tail_params:function(){var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;this.tail_style["tail_points"]=parseInt(user.get_private_property("last_tail_points"));if(isNaN(this.tail_style["tail_points"])||!this.tail_style["tail_points"])
this.tail_style["tail_points"]=5;this.tail_style["tail_color"]=user.get_private_property("last_tail_color");if(this.tail_style["tail_color"]=="")
this.tail_style["tail_color"]="#0000FF";this.tail_style["tail_width"]=parseInt(user.get_private_property("last_tail_width"));if(isNaN(this.tail_style["tail_width"])||!this.tail_style["tail_width"])
this.tail_style["tail_width"]=3;this.new_tail_style["tail_points"]=this.tail_style["tail_points"];this.new_tail_style["tail_color"]=this.tail_style["tail_color"];this.new_tail_style["tail_width"]=this.tail_style["tail_width"];this.update_tail_style(true);},update_tail_style:function(flag){if((this.new_tail_style["tail_points"]!=this.tail_style["tail_points"])||flag){this.tail_style["tail_points"]=this.new_tail_style["tail_points"];this.ol_tail_style=this.make_style(MonitoringUnitsMarkersCMSModule.tail_style);this.update_units_all_tail_points();}
if((this.new_tail_style["tail_color"]!=this.tail_style["tail_color"])||flag){this.tail_style["tail_color"]=this.new_tail_style["tail_color"];this.ol_tail_style=this.make_style(MonitoringUnitsMarkersCMSModule.tail_style);this.update_units_all_tail_points();}
if((this.new_tail_style["tail_width"]!=this.tail_style["tail_width"])||flag){this.tail_style["tail_width"]=this.new_tail_style["tail_width"];this.ol_tail_style=this.make_style(MonitoringUnitsMarkersCMSModule.tail_style);this.update_units_all_tail_points();}},save_tail_params:function(){var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("muf",this.flags);if(this.new_tail_style["tail_points"]!=this.tail_style["tail_points"]){user.set_private_property("last_tail_points",this.new_tail_style["tail_points"]);}
if(this.new_tail_style["tail_color"]!=this.tail_style["tail_color"]){user.set_private_property("last_tail_color",this.new_tail_style["tail_color"]);}
if(this.new_tail_style["tail_width"]!=this.tail_style["tail_width"]){user.set_private_property("last_tail_width",this.new_tail_style["tail_width"]);}
mod_us.store_settings();this.update_tail_style(false);},save_row_data:function(){this.save_tail_params();var lock=jQuery("#monitoring_units_markers_lock").attr("checked")?1:0;var hide=jQuery("#monitoring_units_markers_hide").attr("checked")?1:0;var group=jQuery("#monitoring_units_markers_group").attr("checked")?1:0;var trace=jQuery("#monitoring_units_markers_trace").attr("checked")?1:0;if(lock==this.lock_on_road&&hide==this.replace_icons_shape&&group==this.group_icons&&trace==this.icons_on_border)
return;this.hide_all_units();this.lock_on_road=lock;this.replace_icons_shape=hide;this.group_icons=group;this.icons_on_border=trace;this.store_type_flags();this.init_type_flags();this.create_view_state();},hide_all_units:function(){for(var uid in this.view_states){var state=this.view_states[uid];if(!state)
continue;this.hide_unit(state.device,true);}
this.check_markers_pos();},hide_unit:function(unit,hide_marker){var state=this.view_states[unit.get_id()];if(!state)
return;this.hide_name(unit);this.hide_course(unit);this.hide_tail(unit);this.hide_shape(unit);if(state.marker&&hide_marker){this.markers_layer.removeMarker(state.marker);state.marker.destroy();state.marker=null;this.hide_sensor_icon(unit);}
if(hide_marker)
state.visible=false;},show_unit:function(unit){var state=this.view_states[unit.get_id()];if(!state)
return;if(!state.visible||!state.unit_pos)
return;if(this.show_names)
this.show_name(unit);if(this.show_courses)
this.show_course(unit);if(this.show_tails)
this.show_tail(unit);if(this.replace_icons_shape)
this.show_shape(unit);},show_sensor_icon:function(unit){if(!unit)
return;var unit_id=unit.get_id();var state=this.view_states[unit_id];if(!state||!state.unit_pos)
return;if(state.sensor_cookie){this.mod_usi.remove_image(state.sensor_cookie);state.sensor_cookie=null;}
if(state.sensor_icon)
state.sensor_cookie=this.mod_usi.add_image(unit,state.sensor_icon,state.sensor_style,state.sensor_text);this.mod_usi.refresh_layer(unit_id);},hide_sensor_icon:function(unit){if(!unit)
return;var unit_id=unit.get_id();var state=this.view_states[unit_id];if(!state)
return;if(state.sensor_cookie){this.mod_usi.remove_image(state.sensor_cookie);state.sensor_cookie=null;this.mod_usi.refresh_layer(unit_id);}},show_unit_icon:function(unit,update_pos,update_icon){if(!unit)
return;var unit_id=unit.get_id();var state=this.view_states[unit_id];if(!state||!state.unit_pos)
return;if(!state.marker){var size=new OpenLayers.Size(this.icon_size,this.icon_size);var offset=new OpenLayers.Pixel(-(size.w/2),-size.h/2);var icon=new OpenLayers.Icon(state.unit_icon,size,offset);var marker=new OpenLayers.Marker(state.unit_pos,icon);marker.unit_id=unit_id;this.markers_layer.addMarker(marker);state.marker=marker;jQuery(icon.imageDiv).attr("title","X").Tooltip({oddColor:"#CFCFCF",showURL:false,bodyHandler:function(){var mod=MonitoringUnitsMarkersCMSModule;var unit=Wialon.get_item(unit_id);if(!unit)
return;if(mod.show_courses_popup)
mod.show_course(unit);var mod_it=WebCMS.get_module("unit_info_text");if(mod_it)
return mod_it.get_info_text(unit);return"";}}).mouseout(function(){var mod=MonitoringUnitsMarkersCMSModule;if(mod.show_courses_popup)
mod.hide_course(Wialon.get_item(unit_id));});jQuery(icon.imageDiv).bind("click",function(){var mod=MonitoringUnitsMarkersCMSModule;if(!mod.icons_on_border)
return;var unit=Wialon.get_item(unit_id);if(!unit)
return;mod.redraw(unit_id);mod.on_unit_selected(unit);});update_icon=false;update_pos=false;}
if(update_icon&&!this.replace_icons_shape){state.marker.setUrl(state.unit_icon);}
if(update_pos){var px=this.map.getLayerPxFromLonLat(state.unit_pos);if(px)
state.marker.moveTo(px);}
if(this.icons_on_border)
this.markers_layer.drawMarker(state.marker,false);},on_unit_state_changed:function(unit,state,skip_check){if(!unit)
return;var view_state=this.view_states[unit.get_id()];if(state){if(view_state&&view_state.marker)
return;this.create_view_state(unit);}else{this.hide_unit(unit,true);if(!skip_check)
this.check_markers_pos();}},on_unit_icon_updated:function(unit){if(!unit)
return;var unit_id=unit.get_id();var state=this.view_states[unit_id];if(!state||!state.visible||state.replace_icons_shape||this.replace_icons_icon)
return;var marker=state.marker;if(!marker)
return;var pl=unit.get_plugin("avl_item_icon");if(!pl)
return;marker.setUrl(WebCMS.get_img_url(pl.get_icon_url(this.icon_size)));},on_unit_name_updated:function(unit){if(!unit)
return;var unit_id=unit.get_id();var state=this.view_states[unit_id];if(!state||!state.visible)
return;state.unit_name=unit.get_name();state.style_updated=true;this.check_for_update(unit);},on_unit_pos_updated:function(unit_id,msg){var unit=Wialon.get_item(unit_id);if(!unit)
return;this.update_unit_status(unit,msg);this.update_unit_pos(unit,msg);this.check_for_update(unit);},on_unit_msg_updated:function(unit_id,msg){var unit=Wialon.get_item(unit_id);if(!unit)
return;this.update_unit_status(unit,msg);this.check_for_update(unit);},on_unit_selected:function(unit){if(!unit||!this.is_visible())
return;var state=this.view_states[unit.get_id()];if(state&&state.unit_pos)
this.map.panTo(state.unit_pos);},on_unit_group_selected:function(group){if(!group)
return;var bounds=null;var units=group.get_units();for(var i=0;i<units.length;i++){var state=this.view_states[units[i].get_id()];if(!state||!state.unit_pos)
continue;if(!bounds)
bounds=new OpenLayers.Bounds(state.unit_pos.lon,state.unit_pos.lat,state.unit_pos.lon,state.unit_pos.lat);else
bounds.extend(state.unit_pos);}
if(!bounds)
return;if(bounds.left==bounds.right){var center=bounds.getCenterLonLat();if(this.map.getCenter())
this.map.panTo(center);return true;}
var center=bounds.getCenterLonLat();var width=bounds.getWidth()*2.0/3.0;var height=bounds.getHeight()*2.0/3.0;bounds.extend(new OpenLayers.LonLat(center.lon-width,center.lat-height));bounds.extend(new OpenLayers.LonLat(center.lon+width,center.lat+height));this.map.zoomToExtent(bounds);},on_unit_deleted:function(unit){if(!unit)
return;var state=this.view_states[unit.get_id()];if(state&&state.unit_pos){this.hide_unit(unit,true);this.map.panTo(state.unit_pos);}},redraw:function(update_icons){for(var uid in this.view_states){var state=this.view_states[uid];if(!state.visible)
continue;if(!this.is_unit_grouped(state.device))
this.show_unit_icon(state.device,true,false);var feature=this.features[uid];if(!feature){state.course_shape=null;continue;}
this.update_shapes(state,feature.shape?0:1,feature.course?0:1);if(feature.course)
this.show_course(state.device);else
state.course_shape=null;if(feature.shape)
this.show_shape(state.device);}},check_markers_pos:function(){var mod=MonitoringUnitsMarkersCMSModule;if(!mod.group_icons&&!mod.cloud_markers.length)
return;var last_ic=mod.icons_cache;mod.icons=[];mod.icons_cache={};mod.icons_groups=[];var icons=mod.icons;var icons_cache=mod.icons_cache;var icons_groups=mod.icons_groups;if(!mod.group_icons){if(!mod.cloud_markers.length)
return;for(var i=0;i<mod.cloud_markers.length;i++){mod.markers_layer.removeMarker(mod.cloud_markers[i]);mod.cloud_markers[i].destroy();mod.mod_md.remove_feature(mod.cloud_markers_texts[i].fid);}
mod.cloud_markers=[];mod.cloud_markers_texts=[];for(var i in mod.markers){var marker=mod.markers[i];if(!marker||!marker.icon)
continue;jQuery(marker.icon.imageDiv).css("display","");}
return;}
for(var uid in mod.view_states){var marker=mod.view_states[uid].marker;if(!marker||!marker.icon)
continue;var px=mod.map.getLayerPxFromLonLat(marker.lonlat);if(px)
icons.push({x:px.x,y:px.y,id:uid});}
if(mod.zoom<17){for(var i=0;i<icons.length-1;i++){if(typeof icons_cache[icons[i].id]!="undefined")
continue;for(var j=i+1;j<icons.length;j++){if(typeof icons_cache[icons[j].id]!="undefined")
continue;var d=Math.sqrt((icons[i].x-icons[j].x)*(icons[i].x-icons[j].x)+
(icons[i].y-icons[j].y)*(icons[i].y-icons[j].y));if(d<50){var group=null;var group_id=0;if(typeof icons_cache[icons[i].id]=="undefined"&&typeof icons_cache[icons[j].id]=="undefined"){group={};group.units=[];icons_groups.push(group);group_id=icons_groups.length-1;}else if(typeof icons_cache[icons[i].id]!="undefined"&&typeof icons_cache[icons[j].id]!="undefined"){continue;group=icons_groups[icons_cache[icons[i].id]];group_id=icons_cache[icons[i].id];if(icons_cache[icons[i].id]==icons_cache[icons[j].id])
continue;var rem_group=icons_groups[icons_cache[icons[j].id]];var rem_group_id=icons_cache[icons[j].id];for(var k=0;k<rem_group.units.length;k++){var exists=false;for(var l=0;l<group.units.length;l++){if(group.units[l]==rem_group.units[k]){exists=true;break;}}
if(!exists)
group.units.push(rem_group.units[k]);icons_cache[rem_group.units[k]]=group_id;}
icons_groups[rem_group_id]=null;}else if(typeof icons_cache[icons[i].id]!="undefined"){group=icons_groups[icons_cache[icons[i].id]];group_id=icons_cache[icons[i].id];}else{group=icons_groups[icons_cache[icons[j].id]];group_id=icons_cache[icons[j].id];}
var exists=false;for(var k=0;k<group.units.length;k++)
if(group.units[k]==icons[i].id){exists=true;break;}
if(!exists)
group.units.push(icons[i].id);exists=false;for(var k=0;k<group.units.length;k++)
if(group.units[k]==icons[j].id){exists=true;break;}
if(!exists)
group.units.push(icons[j].id);icons_cache[icons[i].id]=group_id;icons_cache[icons[j].id]=group_id;}}}}
for(var i=0;i<mod.cloud_markers.length;i++){mod.markers_layer.removeMarker(mod.cloud_markers[i]);mod.cloud_markers[i].destroy();mod.mod_md.remove_feature(mod.cloud_markers_texts[i].fid);}
mod.cloud_markers=[];mod.cloud_markers_texts=[];var mod_mu=WebCMS.get_module("monitoring_units");for(var i=0;i<icons_groups.length;i++){if(!icons_groups[i])
continue;var x=0,y=0;var html="-h-<table style='padding:1px !important'>";for(var j=0;j<icons_groups[i].units.length;j++){jQuery(mod.view_states[icons_groups[i].units[j]].marker.icon.imageDiv).css("display","none");var unit=Wialon.get_item(icons_groups[i].units[j]);if(!unit)
continue;if(last_ic&&typeof last_ic[icons_groups[i].units[j]]=="undefined")
Wialon.fire_event("unit_grouped",unit);mod.hide_unit(unit,false);var pl=unit.get_plugin("avl_item_icon");if(!pl)
continue;var pos=unit.get_position();html+="<tr><td style='padding:0px !important'><img src='"+WebCMS.get_img_url(pl.get_icon_url(16))+"'></td><td align='left'>"+unit.get_name()+"</td>";for(mid in mod_mu.unit_state_modules){if(!mod_mu.unit_state_modules[mid])
continue;if(mod_mu.unit_state_modules[mid].use_in_group)
html+="<td style='padding:1px !important'>"+mod_mu.unit_state_modules[mid].get_unit_state_html(unit)+"</td>";}
html+="</tr>";if(j==0){x=pos.get_lon();y=pos.get_lat();}}
var unit_id=icons_groups[i].units[0];html+="</table>";var lonlat=new OpenLayers.LonLat(x,y);lonlat.transform(mod.map.displayProjection,mod.map.getProjectionObject());var size=new OpenLayers.Size(mod.icon_size,mod.icon_size);var offset=new OpenLayers.Pixel(-(size.w/2),-size.h/2);var img_path=mod.cloud_img_url;var icon=new OpenLayers.Icon(mod.group_style.group_icon,size,offset);var marker=new OpenLayers.Marker(lonlat,icon);mod.markers_layer.addMarker(marker);mod.cloud_markers.push(marker);var text=sprintf(mod.translation.group_capt,icons_groups[i].units.length);var fid=0;if(mod.show_names)
fid=mod.mod_md.add_text(lonlat,text,mod.text_style_custom,0);mod.cloud_markers_texts.push({fid:fid,lonlat:lonlat,text:text});jQuery(icon.imageDiv).attr("title",html).attr("uid",unit_id).Tooltip({showBody:"-h-",showURL:false});jQuery(icon.imageDiv).bind("click",function(){if(!MonitoringUnitsMarkersCMSModule.icons_on_border)
return;var unit=Wialon.get_item(jQuery(this).attr("uid"));if(!unit)
return;MonitoringUnitsMarkersCMSModule.on_unit_selected(unit);});}
for(var i=0;i<icons.length;i++){if(typeof icons_cache[icons[i].id]=="undefined"&&last_ic&&typeof last_ic[icons[i].id]!="undefined"){jQuery(mod.view_states[icons[i].id].marker.icon.imageDiv).css("display","");var unit=Wialon.get_item(icons[i].id);if(!unit)
continue;Wialon.fire_event("unit_ungrouped",unit);var state=mod.view_states[icons[i].id];state.tail_updated=true;state.style_updated=true;state.pos_updated=true;state.speed_changed=true;state.course_changed=true;mod.check_for_update(unit);mod.show_unit(unit);}}},is_unit_grouped:function(unit){if(!unit||!this.group_icons)
return false;return(typeof this.icons_cache[unit.get_id()]!="undefined")},rotate_angle:function(pt,angle){if(!angle)
return{x:pt.x,y:pt.y};var rot={};angle=(360-angle)/57.296;rot.x=parseInt(pt.x*Math.cos(angle)-pt.y*Math.sin(angle));rot.y=parseInt(pt.x*Math.sin(angle)+pt.y*Math.cos(angle));return rot;},make_shape:function(base,shape,rotate,color,description,icon_small,icon_mid,icon_large,icon_style){var result=null;if(base)
return jQuery.extend(true,{},base);else
result=new Object;if(typeof shape!="undefined")
result.shape=shape;else
result.shape=null;if(typeof rotate!="undefined"&&rotate!=null)
result.rotate=rotate;else
result.rotate=false;if(typeof color!="undefined"&&color!=null)
result.color=color;else
result.color="";if(typeof description!="undefined"&&description!=null)
result.description=description;else
result.description="";if(typeof icon_small!="undefined"&&icon_small!=null)
result.icon_small=icon_small;else
result.icon_small="";if(typeof icon_mid!="undefined"&&icon_mid!=null)
result.icon_mid=icon_mid;else
result.icon_mid="";if(typeof icon_large!="undefined"&&icon_large!=null)
result.icon_large=icon_large;else
result.icon_large="";if(typeof icon_style!="undefined"&&icon_style!=null)
result.icon_style=icon_style;else
result.icon_style=0;return result;},make_style:function(style,skip_expand){if(!style)
return;var ol_style=null;if(!skip_expand)
ol_style=jQuery.extend(true,{},this.default_ol_style);else
ol_style=new Object;if(typeof style.text_color!="undefined")
ol_style.fillColor=style.text_color;if(typeof style.font_size!="undefined")
ol_style.fontSize=style.font_size;if(typeof style.max_syms!="undefined")
ol_style.max_syms=style.max_syms;if(typeof style.y_offset!="undefined")
ol_style.y_offset=style.y_offset;if(typeof style.auto_wrap!="undefined")
ol_style.autoWrap=style.auto_wrap;if(typeof style.tail_color!="undefined")
ol_style.strokeColor=style.tail_color;if(typeof style.tail_width!="undefined"){ol_style.strokeWidth=style.tail_width;if(this.last_tail_width>3)
ol_style.strokeOpacity=0.8;}
if(typeof style.color!="undefined")
ol_style.fillColor=style.color;return ol_style;},show_hide_tails:function(){var mod=MonitoringUnitsMarkersCMSModule;if(mod.show_tails)
mod.hide_all_tails();else
mod.show_all_tails();mod.show_tails=!mod.show_tails;var tail_img=mod.show_tails?mod.tail_img_url:mod.tail_none_img_url;jQuery("#drawing_features_tail").attr("src",tail_img);mod.store_type_flags();},show_hide_names:function(){var mod=MonitoringUnitsMarkersCMSModule;if(mod.show_names){mod.hide_all_names();for(var i=0;i<mod.cloud_markers_texts.length;i++){mod.mod_md.remove_feature(mod.cloud_markers_texts[i].fid);mod.cloud_markers_texts[i].fid=0;}}else{for(var i=0;i<mod.cloud_markers_texts.length;i++)
mod.cloud_markers_texts[i].fid=mod.mod_md.add_text(mod.cloud_markers_texts[i].lonlat,mod.cloud_markers_texts[i].text,mod.text_style_custom,0);mod.show_all_names();}
mod.show_names=!mod.show_names;var name_img=mod.show_names?mod.name_img_url:mod.name_none_img_url;jQuery("#drawing_features_name").attr("src",name_img);mod.store_type_flags();},show_hide_courses:function(){var mod=MonitoringUnitsMarkersCMSModule;if(mod.replace_icons_shape)
return;if(mod.show_courses)
mod.hide_all_courses();else
mod.show_all_courses();mod.show_courses_popup=mod.show_courses;mod.show_courses=!mod.show_courses;var course_img=mod.show_courses?mod.course_img_url:mod.course_none_img_url;jQuery("#drawing_features_course").attr("src",course_img);mod.store_type_flags();}});WebCMS.register_module(MonitoringUnitsMarkersCMSModule);var mod_mm=WebCMS.get_module("monitoring_map");if(mod_mm)
mod_mm.register_map_layer(MonitoringUnitsMarkersCMSModule);var MonitoringUnitsOptionWatchCMSModule=Base.extend({constructor:null,watching_units:null,head_img_url:"/monitoring_units_option_watch/watch.png",translation:{},show_control:-1,group_incompatible:1,get_type:function(){return"monitoring_units_option_watch";},get_head_html:function(){return"<img id='monitoring_units_option_watch_head' src='"+WebCMS.get_img_url(this.head_img_url)+"'/>";},get_head_title:function(){return this.translation.title_head;},get_unit_state_html:function(unit){var mod_mu=WebCMS.get_module("monitoring_units");if(!unit||!mod_mu)
return"&nbsp;";var id=unit.get_id().toString();var checked_state="";if(typeof this.watching_units[unit.get_id()]!='undefined')
checked_state=" checked='true'";if(mod_mu&&!mod_mu.is_unit_visible(unit))
checked_state+=" disabled='true'";return"<input type='checkbox' id='monitoring_units_option_watch_"+id+"' name='monitoring_units_option_watch_"+id+"'"+checked_state+" />";},on_click:function(unit_id,event){if(!unit_id)
return;MonitoringUnitsOptionWatchCMSModule.on_unit_watch_state_changed(Wialon.get_item(unit_id),event.target.checked);},on_init:function(){this.initialize();Wialon.bind_event_handler("unit_pos_updated",0,function(event_type,event_id,event_data){MonitoringUnitsOptionWatchCMSModule.on_unit_pos_updated(Wialon.get_item(event_id));});Wialon.bind_event_handler("monitorig_unit_state_changed",0,function(event_type,event_id,event_data){if(!event_id||!event_id.length)
return;for(var i=0;i<event_id.length;i++)
MonitoringUnitsOptionWatchCMSModule.on_unit_state_changed(Wialon.get_item(event_id[i].uid),event_id[i].hide);});Wialon.bind_event_handler("monitorig_units_all_added",0,function(event_type,event_id,event_data){var mod_mu=WebCMS.get_module("monitoring_units");if(!mod_mu)
return;var units=mod_mu.get_units();for(var i=0;i<units.length;i++)
MonitoringUnitsOptionWatchCMSModule.on_unit_state_changed(units[i],1);});Wialon.bind_event_handler("monitorig_units_all_removed",0,function(event_type,event_id,event_data){var mod_mu=WebCMS.get_module("monitoring_units");if(!mod_mu)
return;var units=mod_mu.get_units();for(var i=0;i<units.length;i++)
MonitoringUnitsOptionWatchCMSModule.on_unit_state_changed(units[i],0);});var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd&&!disable_monitoring_settings)
mod_usd.add_row(this);this.update_settings();var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(mod_map&&mod_menu&&this.show_control&&!disable_monitoring_settings){if(this.show_control==2)
mod_menu.register_unit_state_module(this);else
mod_map.register_unit_state_module(this);}
var mod_mm=WebCMS.get_module("monitoring_map");var mod_mu=WebCMS.get_module("monitoring_units");if(!mod_mm||!mod_mu)
return;if(mod_mm&&this.watching_units&&this.show_control&&mod_mu.monitoring_type){for(var id in this.watching_units){mod_mm.ensure_units_visible(this.watching_units,true,true);break;}}},on_unit_pos_updated:function(unit){if(!unit||unit.get_type()!="avl_unit")
return;if(typeof this.watching_units[unit.get_id()]=='undefined')
return;var mod_mu=WebCMS.get_module("monitoring_units");if(mod_mu&&mod_mu.is_unit_visible(unit))
this.check_visibility();},on_unit_watch_state_changed:function(unit,state){if(!unit)
return;var update_visibility=false;jQuery("#monitoring_units_option_watch_"+unit.get_id()).attr("checked",state);if(jQuery("#monitoring_units_option_watch_"+unit.get_id()).attr("checked")){if(typeof MonitoringUnitsOptionWatchCMSModule.watching_units[unit.get_id()]=='undefined')
MonitoringUnitsOptionWatchCMSModule.watching_units[unit.get_id()]=unit;}else{if(typeof MonitoringUnitsOptionWatchCMSModule.watching_units[unit.get_id()]!='undefined')
delete MonitoringUnitsOptionWatchCMSModule.watching_units[unit.get_id()];}
for(var id in MonitoringUnitsOptionWatchCMSModule.watching_units){update_visibility=true;break;}
var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;var col=new Array;for(var id in this.watching_units)
col.push(id);user.set_private_property("muow",jQuery.toJSON(col));mod_us.store_settings();if(update_visibility&&unit.get_position())
this.check_visibility();},on_unit_state_changed:function(unit,state){if(!unit||!unit.get_position())
return;var id="#monitoring_units_option_watch_"+unit.get_id();if(!state){jQuery(id).attr("checked",false).attr("disabled",true);this.on_unit_watch_state_changed(unit,state);}else
jQuery(id).attr("disabled",false);},initialize:function(){if(this.watching_units)
return;this.watching_units=new Object;var user=Wialon.get_current_user();var mod_mu=WebCMS.get_module("monitoring_units");if(!user||!mod_mu)
return;try{var col=jQuery.parseJSON(user.get_private_property("muow","null"));if(col){if(typeof col=="number"){var s=col;col=[s];}
for(var i=0;i<col.length;i++){var unit=Wialon.get_item(col[i]);if(unit&&mod_mu.is_unit_visible(unit))
this.watching_units[unit.get_id()]=unit;}}}catch(e){}
if(user.get_public_property("monitoring_units_option_watch","")!=""){user.set_public_property("monitoring_units_option_watch","");var mod_us=WebCMS.get_module("user_settings");if(mod_us)
mod_us.store_settings();}},on_sort:function(units,asc){var mod=MonitoringUnitsOptionWatchCMSModule;units.sort(function(a,b){var u1,u2;if(!asc){u1=a;u2=b;}else{u1=b;u2=a;}
var a_sp=0;var b_sp=0;if(typeof mod.watching_units[u1.get_id()]!="undefined")
a_sp=1;if(typeof mod.watching_units[u2.get_id()]!="undefined")
b_sp=1;return a_sp-b_sp;});},check_visibility:function(){var mod_mm=WebCMS.get_module("monitoring_map");var mod_mu=WebCMS.get_module("monitoring_units");if(!mod_mm||!mod_mu)
return;if(mod_mu.monitoring_type)
mod_mm.ensure_units_visible(this.watching_units);},get_row_tab_info:function(){return{id:"monitoring_settings",title:this.translation.tab_name};},get_row_html:function(){return"<tr><td><img src='"+this.head_img_url+"'/>&nbsp;"+this.translation.title_head+":</td><td><input type='checkbox' id='state_option_watch'/></td><td><input type='checkbox' id='state_option_watch_m'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#state_option_watch").attr("checked",this.show_control==1).attr("title",this.translation.tooltip).Tooltip({showURL:false});jQuery("#state_option_watch_m").attr("checked",this.show_control==2).attr("title",this.translation.tooltip_menu).Tooltip({showURL:false});jQuery("#state_option_watch").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_option_watch_m").removeAttr("checked");});jQuery("#state_option_watch_m").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_option_watch").removeAttr("checked");});},save_row_data:function(){var show=jQuery("#state_option_watch").attr("checked")?1:0;if(!show)
show=jQuery("#state_option_watch_m").attr("checked")?2:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mu_watch",show);mod_us.store_settings();this.show_control=show;var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(!mod_map||!mod_menu)
return;if(this.show_control==1)
mod_map.register_unit_state_module(this);else if(this.show_control==2)
mod_menu.register_unit_state_module(this);else{this.watching_units=new Object;user.set_private_property("muow",jQuery.toJSON(new Array));mod_map.unregister_unit_state_module(this);}
return true;},update_settings:function(){var user=Wialon.get_current_user();if(!user)
return;this.show_control=parseInt(user.get_private_property("mu_watch","1"));}});WebCMS.register_module(MonitoringUnitsOptionWatchCMSModule);var MonitoringUnitsCmdBtnCMSModule=Base.extend({constructor:null,image_cookies:{},exec_cmd_img_url:"/monitoring_units_cmd_btn/exec_cmd.png",exec_cmd_gray_img_url:"/monitoring_units_cmd_btn/exec_cmd_gray.png",head_img_url:"/monitoring_units_cmd_btn/head.png",translation:{},show_control:-1,acc_res:new Object,get_type:function(){return"monitoring_units_cmd_btn";},get_head_html:function(){return"<img id='monitoring_units_cmd_head' src='"+WebCMS.get_img_url(this.head_img_url)+"'/>";},get_head_title:function(){return this.translation.title_head;},get_unit_state_html:function(unit){if(!unit)
return"&nbsp;";var url=this.exec_cmd_img_url;if(unit.get_type()=="avl_unit"){var cmds=unit.get_commands();if(!cmds.length||unit.get_access_level()<Wialon.access_level("exec_cmd"))
url=this.exec_cmd_gray_img_url;}else
url=this.exec_cmd_img_url;return"<img id='monitoring_units_cmd_btn_"+unit.get_id()+"' src='"+WebCMS.get_img_url(url)+"'/>";},update_state:function(unit_id){if(unit_id){var unit=Wialon.get_item(unit_id);if(!unit)
return;var url=this.exec_cmd_img_url;var cmds=unit.get_commands();if(!cmds.length||unit.get_access_level()<Wialon.access_level("exec_cmd"))
url=this.exec_cmd_gray_img_url;jQuery("#monitoring_units_cmd_btn_"+unit_id).attr("src",url);}else{var units=Wialon.get_units();for(var i=0;i<units.length;i++){var unit_id=units[i].get_id();if(typeof this.acc_res[unit_id]=="undefined")
this.acc_res[unit_id]=units[i].get_access_level();else if(units[i].get_access_level()!=this.acc_res[unit_id]){this.acc_res[unit_id]=units[i].get_access_level();var url=this.exec_cmd_img_url;var cmds=units[i].get_commands();if(!cmds.length||this.acc_res[unit_id]<Wialon.access_level("exec_cmd"))
url=this.exec_cmd_gray_img_url;jQuery("#monitoring_units_cmd_btn_"+unit_id).attr("src",url);}}}},get_unit_state_title:function(unit){if(!unit)
return"&nbsp;";return MonitoringUnitsCmdBtnCMSModule.get_unit_info(unit);},on_click:function(unit_id,event){if(!unit_id)
return;var unit=Wialon.get_item(unit_id);if(!unit)
return;if(unit.get_type()=="avl_unit"){var cmds=unit.get_commands();if(cmds.length&&unit.get_access_level()>=Wialon.access_level("exec_cmd"))
MonitoringUnitsCmdBtnCMSModule.on_show_cmd_dlg(unit_id);}else{var units=unit.get_units();if(!units.length)
return;var units_ids=new Array;var add=false;for(var i=0;i<units.length;i++){var cmds=units[i].get_commands();if(cmds.length&&units[i].get_access_level()>=Wialon.access_level("exec_cmd"))
add=true;units_ids.push(units[i].get_id());}
if(!add)
return;var mod_dlg=WebCMS.get_module("unit_cmds_dialog");if(mod_dlg)
mod_dlg.show(jQuery.toJSON(units_ids),"",{sel_units:1});}},on_init:function(){this.image_cookies=new Object;Wialon.bind_event_handler("msg_registered",0,function(event_type,event_id,event_data){if(event_data.get_type()=="ucr")
MonitoringUnitsCmdBtnCMSModule.on_msg_recieved(Wialon.get_item(event_id),event_data);});Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.acl!='undefined'){if(Wialon.get_current_user().get_id()==event_id)
MonitoringUnitsCmdBtnCMSModule.update_state(0);}else if(typeof event_data.cmds!='undefined')
MonitoringUnitsCmdBtnCMSModule.update_state(event_id);});var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd&&!disable_monitoring_settings)
mod_usd.add_row(this);this.update_settings();var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(mod_map&&mod_menu&&this.show_control&&!disable_monitoring_settings){if(this.show_control==1)
mod_map.register_unit_state_module(this);else
mod_menu.register_unit_state_module(this);}
var units=Wialon.get_units();for(var i=0;i<units.length;i++)
this.acc_res[units[i].get_id()]=units[i].get_access_level();},get_unit_info:function(unit){if(!unit)
return;if(unit.get_type()=="avl_unit"){var cmds=unit.get_commands();var res="";if(cmds.length){if(unit.get_access_level()<Wialon.access_level("exec_cmd"))
return this.translation.denied_cmds;res="<table>";res+="<tr><td colspan=2 align='center'>";res+=this.translation.available_cmds+":";res+="<br></td></tr>";for(i=0;i<cmds.length;i++){var mod_name="command_"+cmds[i];var mod=WebCMS.get_module(mod_name);if(mod){res+="<tr><td><img src = '"+mod.get_img_url(24)+"'></td><td>"+mod.get_title()+"</td></tr>";}else{var mod=WebCMS.get_module("command_generic");if(mod)
res+="<tr><td><img src = '"+mod.get_img_url(24)+"'></td><td>"+cmds[i]+"</td></tr>";else
res+="<tr><td>&nbsp;</td><td>"+cmds[i]+"</td></tr>";}}
res+="</table>";}
else
res=this.translation.no_cmds;return res;}else{var units=unit.get_units();var commands=new Object;var commands_count=0;var html="";for(var j=0;j<units.length;j++){var cmds=units[j].get_commands();if(!cmds.length||units[j].get_access_level()<Wialon.access_level("exec_cmd"))
continue;for(i=0;i<cmds.length;i++){if(commands[cmds[i]])
break;commands[cmds[i]]=1;commands_count++;var mod_name="command_"+cmds[i];var mod=WebCMS.get_module(mod_name);if(mod){html+="<tr><td><img src = '"+mod.get_img_url(24)+"'></td><td>"+mod.get_title()+"</td></tr>";}else{var mod=WebCMS.get_module("command_generic");if(mod)
html+="<tr><td><img src = '"+mod.get_img_url(24)+"'></td><td>"+cmds[i]+"</td></tr>";else
html+="<tr><td>&nbsp;</td><td>"+cmds[i]+"</td></tr>";}}}
if(commands_count)
return"<table>"+html+"</table>";else
return this.translation.no_cmds;}},on_show_cmd_dlg:function(unit_id){var unit=Wialon.get_item(unit_id);if(!unit)
return;var cmds=unit.get_commands();if(cmds.length&&unit.get_access_level()>=Wialon.access_level("exec_cmd")){var mod_dlg=WebCMS.get_module("unit_cmds_dialog");if(mod_dlg)
mod_dlg.show(unit_id);}},push_image_cookie:function(unit_id,cmd_name,cookie){var id=unit_id+"_"+cmd_name;if(typeof MonitoringUnitsCmdBtnCMSModule.image_cookies[id]=="undefined")
MonitoringUnitsCmdBtnCMSModule.image_cookies[id]=new Array;MonitoringUnitsCmdBtnCMSModule.image_cookies[id].push(cookie);},pop_image_cookie:function(unit_id,cmd_name){var id=unit_id+"_"+cmd_name;if(typeof MonitoringUnitsCmdBtnCMSModule.image_cookies[id]=="undefined"||!MonitoringUnitsCmdBtnCMSModule.image_cookies[id].length)
return"undefined";return MonitoringUnitsCmdBtnCMSModule.image_cookies[id].pop();},on_msg_recieved:function(unit,event){var cmd_name=event.get_cmd_name();var unit_id=unit.get_id();var param=event.get_cmd_param();var time=event.get_exec_time();var cookie=MonitoringUnitsCmdBtnCMSModule.pop_image_cookie(unit_id,cmd_name);if(cookie=="undefined")
return;var mod_image=WebCMS.get_module("unit_state_image");if(!mod_image)
return false;mod_image.remove_image(cookie);mod_image.refresh_layer(0);var name=cmd_name;var mod_name="command_"+cmd_name;var mod=WebCMS.get_module(mod_name);if(mod)
name=mod.get_title();if(time)
WebCMS.log_msg(sprintf(this.translation.cmd_ok,name,unit.get_name()),1);else
WebCMS.log_msg(sprintf(this.translation.cmd_error,name,unit.get_name()),2);},on_sort:function(units,asc){units.sort(function(a,b){var u1,u2;if(!asc){u1=a;u2=b;}else{u1=b;u2=a;}
var a_acc=u1.get_access_level();var b_acc=u2.get_access_level();if(a_acc<Wialon.access_level("exec_cmd")||b_acc<Wialon.access_level("exec_cmd"))
return a_acc-b_acc;return u1.get_commands().length-u2.get_commands().length;});},get_row_tab_info:function(){return{id:"monitoring_settings",title:this.translation.tab_name};},get_row_html:function(){return"<tr><td><img src='"+this.head_img_url+"'/>&nbsp;"+this.translation.title_head+":</td><td><input type='checkbox' id='state_cmd_btn'/></td><td><input type='checkbox' id='state_cmd_btn_m'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#state_cmd_btn").attr("checked",this.show_control==1).attr("title",this.translation.tooltip).Tooltip({showURL:false});jQuery("#state_cmd_btn_m").attr("checked",this.show_control==2).attr("title",this.translation.tooltip_menu).Tooltip({showURL:false});jQuery("#state_cmd_btn").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_cmd_btn_m").removeAttr("checked");});jQuery("#state_cmd_btn_m").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_cmd_btn").removeAttr("checked");});},save_row_data:function(){var show=jQuery("#state_cmd_btn").attr("checked")?1:0;if(!show)
show=jQuery("#state_cmd_btn_m").attr("checked")?2:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mu_cmd_btn",show);mod_us.store_settings();this.show_control=show;var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(!mod_map||!mod_menu)
return;if(this.show_control==1)
mod_map.register_unit_state_module(this);else if(this.show_control==2)
mod_menu.register_unit_state_module(this);else
mod_map.unregister_unit_state_module(this);return true;},update_settings:function(){var user=Wialon.get_current_user();if(!user)
return;this.show_control=parseInt(user.get_private_property("mu_cmd_btn","2"));}});WebCMS.register_module(MonitoringUnitsCmdBtnCMSModule);var MonitoringUnitsStateMoveCMSModule=Base.extend({constructor:null,state_on_img_url:"/monitoring_units_state_move/move.png",state_on_unknown_img_url:"/monitoring_units_state_move/move_unknown.png",state_off_unknown_img_url:"/monitoring_units_state_move/stop_unknown.png",state_off_img_url:"/monitoring_units_state_move/stop.png",state_on_sensor_img_url:"/monitoring_units_state_move/move_sensor.png",state_off_sensor_img_url:"/monitoring_units_state_move/stop_sensor.png",head_img_url:"/monitoring_units_state_move/head.png",translation:{},show_control:-1,unit_sensor_cache:{},unit_timeout_cache:{},use_in_group:true,unit_moving_timeouts:{},unit_moving_timeout:3600,get_type:function(){return"monitoring_units_state_move";},get_head_html:function(){return"<img id='monitoring_units_state_move_head' src='"+WebCMS.get_img_url(this.head_img_url)+"'/>";},get_head_title:function(){return this.translation.title_head;},get_unit_state_html:function(unit){if(!unit)
return"&nbsp;";var id=unit.get_id().toString();var info=null;if(unit.get_type()=="avl_unit"){info=this.get_unit_info(unit);return"<img id='monitoring_units_state_move_"+id+"' src='"+info.url+"'/>";}else
return"<img id='monitoring_units_state_move_"+id+"' src='"+this.head_img_url+"'/>";},get_unit_state_title:function(unit){if(!unit)
return"&nbsp;";var id=unit.get_id().toString();var info=null;if(unit.get_type()=="avl_unit"){info=this.get_unit_info(unit);return info.title;}else{var units=unit.get_units();var info_text="<table>";for(var i=0;i<units.length;i++){info=this.get_unit_info(units[i]);info_text+="<tr><td><img src='"+info.url+"'/></td><td>"+units[i].get_name()+"</td><td>"+info.title+"</td></tr>";}
info_text+="</table>";return info_text;}},on_init:function(){Wialon.bind_event_handler("unit_pos_updated",0,function(event_type,event_id,event_data){MonitoringUnitsStateMoveCMSModule.on_unit_pos_updated(Wialon.get_item(event_id));});var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd&&!disable_monitoring_settings)
mod_usd.add_row(this);this.update_settings();var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(mod_map&&mod_menu&&this.show_control&&!disable_monitoring_settings){if(this.show_control==2)
mod_menu.register_unit_state_module(this);else
mod_map.register_unit_state_module(this);}},on_unit_pos_updated:function(unit){if(!unit||unit.get_type()!="avl_unit"||!this.show_control)
return;var info=this.get_unit_info(unit);var id="#monitoring_units_state_move_"+unit.get_id();jQuery(id).attr("src",info.url).each(function(){this.tooltipText=info.title;});},get_unit_info:function(unit){var msg=unit.get_position();var url,title;var move=false;var timeout=false;var id=unit.get_id();if(!msg){url=this.state_off_unknown_img_url;move=false;title=this.translation.title_off;}else if(this.unit_moving_timeout<(Wialon.get_server_time()-msg.get_time())){move=false;timeout=true;if(msg.get_speed()>0){url=this.state_on_unknown_img_url;title=this.translation.title_unknown_on;}else{url=this.state_off_unknown_img_url;title=this.translation.title_unknown_off;}}else if(msg.get_speed()>0){url=this.state_on_img_url;move=true;title=this.translation.title_on;}else{url=this.state_off_img_url;move=false;title=this.translation.title_off;}
this.unit_timeout_cache[id]=timeout;var sens_pl=unit.get_plugin("avl_unit_sensors")
if(sens_pl&&!timeout){var sensors=sens_pl.get_sensors("engine operation");if(sensors.length){var mod_uit=WebCMS.get_module("unit_info_text_sensors");if(mod_uit){var sens_val=mod_uit.get_sensor_value(unit,sensors[0]);if(!isNaN(sens_val)){sens_val=parseInt(sens_val);this.unit_sensor_cache[id]=sens_val;if(sens_val&&move){url=this.state_on_sensor_img_url;title+=" "+this.translation.title_sensor_on;}else if(sens_val&&!move){url=this.state_off_sensor_img_url;title+=" "+this.translation.title_sensor_on;}else
title+=" "+this.translation.title_sensor_off;}}}}
var msg_time=0;if(msg)
msg_time=msg.get_time();var timeout_value=this.unit_moving_timeout;if(msg_time+this.unit_moving_timeout>Wialon.get_server_time())
timeout_value=this.unit_moving_timeout-(Wialon.get_server_time()-msg_time);if(this.unit_moving_timeouts[id])
this.unit_moving_timeouts[id]=clearTimeout(this.unit_moving_timeouts[id]);this.unit_moving_timeouts[id]=setTimeout(function(){var iid="#monitoring_units_state_move_"+id;if(!jQuery(iid).size())
return;var unit=Wialon.get_item(id);if(!unit)
return;var info=MonitoringUnitsStateMoveCMSModule.get_unit_info(unit);MonitoringUnitsStateMoveCMSModule.unit_moving_timeouts[id]=null;jQuery(iid).attr("src",info.url).each(function(){this.tooltipText=info.title;});},timeout_value*1000);return{url:WebCMS.get_img_url(url),title:title};},on_sort:function(units,asc){units.sort(function(a,b){var u1,u2;if(!asc){u1=a;u2=b;}else{u1=b;u2=a;}
var a_sp=-10000;var b_sp=-10000;var msg=u1.get_position();if(msg)
a_sp=msg.get_speed();msg=u2.get_position();if(msg)
b_sp=msg.get_speed();if(MonitoringUnitsStateMoveCMSModule.unit_sensor_cache[u1.get_id()])
a_sp+=1000;if(MonitoringUnitsStateMoveCMSModule.unit_sensor_cache[u2.get_id()])
b_sp+=1000;if(MonitoringUnitsStateMoveCMSModule.unit_timeout_cache[u1.get_id()])
a_sp-=2000;if(MonitoringUnitsStateMoveCMSModule.unit_timeout_cache[u2.get_id()])
b_sp-=2000;return a_sp-b_sp;});},get_row_tab_info:function(){return{id:"monitoring_settings",title:this.translation.tab_name};},get_row_html:function(){return"<tr><td><img src='"+this.head_img_url+"'/>&nbsp;"+this.translation.title_head+":</td><td><input type='checkbox' id='state_move_btn'/></td><td><input type='checkbox' id='state_move_btn_m'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#state_move_btn").attr("checked",this.show_control==1).attr("title",this.translation.tooltip).Tooltip({showURL:false});jQuery("#state_move_btn_m").attr("checked",this.show_control==2).attr("title",this.translation.tooltip_menu).Tooltip({showURL:false});jQuery("#state_move_btn").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_move_btn_m").removeAttr("checked");});jQuery("#state_move_btn_m").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_move_btn").removeAttr("checked");});},save_row_data:function(){var show=jQuery("#state_move_btn").attr("checked")?1:0;if(!show)
show=jQuery("#state_move_btn_m").attr("checked")?2:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mu_move",show);mod_us.store_settings();this.show_control=show;var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(!mod_map||!mod_menu)
return;if(this.show_control==1)
mod_map.register_unit_state_module(this);else if(this.show_control==2)
mod_menu.register_unit_state_module(this);else
mod_map.unregister_unit_state_module(this);return true;},update_settings:function(){var user=Wialon.get_current_user();if(!user)
return;this.show_control=parseInt(user.get_private_property("mu_move","1"));}});WebCMS.register_module(MonitoringUnitsStateMoveCMSModule);var MonitoringUnitsStateGPRSCMSModule=Base.extend({constructor:null,state_on_img_url:"/monitoring_units_state_gprs/online.png",state_off_img_url:"/monitoring_units_state_gprs/offline.png",head_img_url:"/monitoring_units_state_gprs/head.png",translation:{},show_control:-1,use_in_group:true,get_type:function(){return"monitoring_units_state_gprs";},get_head_html:function(){return"<img id='monitoring_units_state_gprs_head' src='"+WebCMS.get_img_url(this.head_img_url)+"'/>";},get_head_title:function(){return this.translation.title_head;},get_unit_state_html:function(unit){if(!unit)
return"&nbsp;";var id=unit.get_id().toString();var info=null;if(unit.get_type()=="avl_unit"){info=this.get_unit_info(unit);return"<img id='monitoring_units_state_gprs_"+id+"' src='"+info.url+"'/>";}else
return"<img id='monitoring_units_state_gprs_"+id+"' src='"+this.head_img_url+"'/>";},get_unit_state_title:function(unit){if(!unit)
return"&nbsp;";var id=unit.get_id().toString();var info=null;if(unit.get_type()=="avl_unit"){info=this.get_unit_info(unit);return info.title;}else{var units=unit.get_units();var info_text="<table>";for(var i=0;i<units.length;i++){info=this.get_unit_info(units[i]);info_text+="<tr><td><img src='"+info.url+"'/></td><td>"+units[i].get_name()+"</td><td>"+info.title+"</td></tr>";}
info_text+="</table>";return info_text;}},on_init:function(){Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.inet!='undefined')
MonitoringUnitsStateGPRSCMSModule.on_unit_state_updated(Wialon.get_item(event_id));});var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd&&!disable_monitoring_settings)
mod_usd.add_row(this);this.update_settings();var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(mod_map&&mod_menu&&this.show_control&&!disable_monitoring_settings){if(this.show_control==2)
mod_menu.register_unit_state_module(this);else
mod_map.register_unit_state_module(this);}},get_row_tab_info:function(){return{id:"monitoring_settings",title:this.translation.tab_name};},on_unit_state_updated:function(unit){if(!unit||unit.get_type()!="avl_unit")
return;var info=this.get_unit_info(unit);var id="#monitoring_units_state_gprs_"+unit.get_id();jQuery(id).attr("src",info.url).each(function(){this.tooltipText=info.title;});},get_unit_info:function(unit){var url,title;if(unit.get_inet_connection()!=""){url=this.state_on_img_url;title=this.translation.title_on+" ("+unit.get_inet_connection()+")";}else{url=this.state_off_img_url;title=this.translation.title_off;}
return{url:WebCMS.get_img_url(url),title:title};},on_sort:function(units,asc){units.sort(function(a,b){var u1,u2;if(!asc){u1=a;u2=b;}else{u1=b;u2=a;}
var a_i=u1.get_inet_connection()!=""?0:1;var b_i=u2.get_inet_connection()!=""?0:1;return a_i-b_i;});},get_row_html:function(){return"<tr><td><img src='"+this.head_img_url+"'/>&nbsp;"+this.translation.title_head+":</td><td><input type='checkbox' id='state_gprs_btn'/></td><td><input type='checkbox' id='state_gprs_btn_m'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#state_gprs_btn").attr("checked",this.show_control==1).attr("title",this.translation.tooltip).Tooltip({showURL:false});jQuery("#state_gprs_btn_m").attr("checked",this.show_control==2).attr("title",this.translation.tooltip_menu).Tooltip({showURL:false});jQuery("#state_gprs_btn").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_gprs_btn_m").removeAttr("checked");});jQuery("#state_gprs_btn_m").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_gprs_btn").removeAttr("checked");});},save_row_data:function(){var show=jQuery("#state_gprs_btn").attr("checked")?1:0;if(!show)
show=jQuery("#state_gprs_btn_m").attr("checked")?2:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mu_gprs",show);mod_us.store_settings();this.show_control=show;var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(!mod_map||!mod_menu)
return;if(this.show_control==1)
mod_map.register_unit_state_module(this);else if(this.show_control==2)
mod_menu.register_unit_state_module(this);else
mod_map.unregister_unit_state_module(this);return true;},update_settings:function(){var user=Wialon.get_current_user();if(!user)
return;this.show_control=parseInt(user.get_private_property("mu_gprs","1"));}});WebCMS.register_module(MonitoringUnitsStateGPRSCMSModule);var MonitoringUnitsStateGPSCMSModule=Base.extend({constructor:null,state_low_img_url:"/monitoring_units_state_gps/level_low.png",state_medium_img_url:"/monitoring_units_state_gps/level_medium.png",state_medium2_img_url:"/monitoring_units_state_gps/level_medium2.png",state_high_img_url:"/monitoring_units_state_gps/level_high.png",head_img_url:"/monitoring_units_state_gps/head.png",good_sat_count:4,high_act_max_seconds:300,medium_act_max_seconds:3600,low_act_max_seconds:86400,translation:{},show_control:-1,use_in_group:true,get_type:function(){return"monitoring_units_state_gps";},get_head_html:function(){return"<img id='monitoring_units_state_gps_head' src='"+WebCMS.get_img_url(this.head_img_url)+"'/>";},get_head_title:function(){return this.translation.title_head;},get_unit_state_html:function(unit){if(!unit)
return"&nbsp;";var id=unit.get_id().toString();var info=null;if(unit.get_type()=="avl_unit"){info=this.get_unit_info(unit);var html="<div mod='monitoring_units_state_gps' style='width: 16px'><img id='monitoring_units_state_gps_sats_"+id+"' src='"+info.url1+"'/>";html+="<img id='monitoring_units_state_gps_time_"+id+"' src='"+info.url2+"'/></div>";return html;}else
return"<div mod='monitoring_units_state_gps'><img id='monitoring_units_state_gps_"+id+"' src='"+this.head_img_url+"'/></div>";},get_unit_state_title:function(unit){if(!unit)
return"&nbsp;";var id=unit.get_id().toString();var info=null;if(unit.get_type()=="avl_unit"){info=this.get_unit_info(unit);return info.title1+"<br>"+info.title2;}else{var units=unit.get_units();var info_text="<table>";for(var i=0;i<units.length;i++){info=this.get_unit_info(units[i]);info_text+="<tr><td rowspan='2'>"+units[i].get_name()+"</td><td><img src='"+info.url1+"'/></td><td>"+info.title1+"</td></tr>";info_text+="<tr><td><img src='"+info.url2+"'/></td><td>"+info.title2+"</td></tr>";}
info_text+="</table>";return info_text;}},on_init:function(){Wialon.bind_event_handler("unit_pos_updated",0,function(event_type,event_id,event_data){MonitoringUnitsStateGPSCMSModule.on_unit_pos_updated(Wialon.get_item(event_id));});setInterval(function(){MonitoringUnitsStateGPSCMSModule.reload_unit_time_states();},10000);var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd&&!disable_monitoring_settings)
mod_usd.add_row(this);this.update_settings();var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(mod_map&&mod_menu&&this.show_control&&!disable_monitoring_settings){if(this.show_control==2)
mod_menu.register_unit_state_module(this);else
mod_map.register_unit_state_module(this);}},on_unit_pos_updated:function(unit){if(!unit||unit.get_type()!="avl_unit")
return;var info=this.get_unit_info(unit);var id="#monitoring_units_state_gps_sats_"+unit.get_id();jQuery(id).attr("src",info.url1).each(function(){this.tooltipText=info.title1;});id="#monitoring_units_state_gps_time_"+unit.get_id();jQuery(id).attr("src",info.url2);},get_row_tab_info:function(){return{id:"monitoring_settings",title:this.translation.tab_name};},get_unit_info:function(unit){if(!unit||unit.get_type()!="avl_unit")
return null;var pos=unit.get_position();var msg=unit.get_last_msg();var url1,title1;if(!pos||!msg||pos.get_time()!=msg.get_time()||pos.get_sat_count()==0){url1=this.state_low_img_url;title1=this.translation.gps_state_error;}else if(pos.get_sat_count()>=this.good_sat_count){url1=this.state_high_img_url;if(pos.get_sat_count()!=0xFF)
title1=sprintf(this.translation.gps_state_ok,pos.get_sat_count());else
title1=this.translation.gps_state_ok2;}else{url1=this.state_medium_img_url;title1=sprintf(this.translation.gps_state_ok,pos.get_sat_count());}
var url2,title2;var curr_time=Wialon.get_server_time();if(!pos||pos.get_time()+this.low_act_max_seconds<curr_time){url2=this.state_low_img_url;}else if(pos.get_time()+this.high_act_max_seconds>=curr_time){url2=this.state_high_img_url;}else if(pos.get_time()+this.medium_act_max_seconds>=curr_time){url2=this.state_medium_img_url;}else{url2=this.state_medium2_img_url;}
if(!pos)
title2=this.translation.move_state_error;else
title2=sprintf(this.translation.move_state_ok,WebCMS.get_time_interval_text(curr_time-pos.get_time()));return{url1:WebCMS.get_img_url(url1),title1:title1,url2:WebCMS.get_img_url(url2),title2:title2};},reload_unit_time_states:function(){var col=Wialon.get_units();for(var i=0;i<col.length;i++){var unit=col[i];var id="#monitoring_units_state_gps_time_"+unit.get_id();var url=jQuery(id).attr("src");if(!url)
continue;var info=this.get_unit_info(unit);if(info.url2!=url)
jQuery(id).attr("src",info.url2);}},on_sort:function(units,asc){units.sort(function(a,b){var u1,u2;if(!asc){u1=a;u2=b;}else{u1=b;u2=a;}
var a_t=-1;var b_t=-1;var pos=u1.get_position();var msg=u1.get_last_msg();var tm=0;if(pos)
tm=pos.get_time();if(msg&&tm<msg.get_time())
tm=msg.get_time();if(tm)
a_t=tm;pos=u2.get_position();msg=u2.get_last_msg();tm=0;if(pos)
tm=pos.get_time();if(msg&&tm<msg.get_time())
tm=msg.get_time();if(tm)
b_t=tm;return a_t-b_t;});},get_row_html:function(){return"<tr><td><img src='"+this.head_img_url+"'/>&nbsp;"+this.translation.title_head+":</td><td><input type='checkbox' id='state_gps_btn'/></td><td><input type='checkbox' id='state_gps_btn_m'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#state_gps_btn").attr("checked",this.show_control==1).attr("title",this.translation.tooltip).Tooltip({showURL:false});jQuery("#state_gps_btn_m").attr("checked",this.show_control==2).attr("title",this.translation.tooltip_menu).Tooltip({showURL:false});jQuery("#state_gps_btn").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_gps_btn_m").removeAttr("checked");});jQuery("#state_gps_btn_m").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_gps_btn").removeAttr("checked");});},save_row_data:function(){var show=jQuery("#state_gps_btn").attr("checked")?1:0;if(!show)
show=jQuery("#state_gps_btn_m").attr("checked")?2:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mu_gps",show);mod_us.store_settings();this.show_control=show;var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(!mod_map||!mod_menu)
return;if(this.show_control==1)
mod_map.register_unit_state_module(this);else if(this.show_control==2)
mod_menu.register_unit_state_module(this);else
mod_map.unregister_unit_state_module(this);return true;},update_settings:function(){var user=Wialon.get_current_user();if(!user)
return;this.show_control=parseInt(user.get_private_property("mu_gps","1"));}});WebCMS.register_module(MonitoringUnitsStateGPSCMSModule);var MonitoringUnitsSensorCMSModule=Base.extend({constructor:null,error_img_url:"/monitoring_units_sensor/error.png",unknown_img_url:"/monitoring_units_sensor/unknown.png",head_img_url:"/monitoring_units_sensor/head.png",translation:{},show_control:-1,unit_sensor_cache:{},use_in_group:true,initialized:false,get_type:function(){return"monitoring_units_sensor";},get_head_html:function(){return"<img id='monitoring_units_sensor_head' src='"+WebCMS.get_img_url(this.head_img_url)+"'/>";},get_head_title:function(){return this.translation.title_head;},get_unit_state_html:function(unit){if(!unit)
return"&nbsp;";var id=unit.get_id().toString();if(unit.get_type()=="avl_unit"){var info=this.get_unit_info(unit);return"<span id='monitoring_units_sensor_"+id+"'>"+info.html+"</span>";}else{return"<img id='monitoring_units_sensor_"+id+"' src='"+this.head_img_url+"'/>"}},get_unit_state_title:function(unit){if(!unit)
return"&nbsp;";if(unit.get_type()=="avl_unit"){var id=unit.get_id().toString();var info=this.get_unit_info(unit);return info.title;}else{var units=unit.get_units();if(!units.length)
return"&nbsp;"
var info_text="<table>";for(var i=0;i<units.length;i++){info=this.get_unit_info(units[i]);info_text+="<tr><td><span>"+info.html+"</span></td><td>"+units[i].get_name()+"</td><td>"+info.title+"</td></tr>";}
info_text+="</table>";return info_text;}},on_init:function(){if(this.initialized)
return;var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd&&!disable_monitoring_settings)
mod_usd.add_row(this);this.update_settings();var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(mod_map&&mod_menu&&this.show_control&&!disable_monitoring_settings){if(this.show_control==2)
mod_menu.register_unit_state_module(this);else
mod_map.register_unit_state_module(this);}
Wialon.bind_event_handler("unit_property_updated",0,function(event_type,event_id,event_data){if(event_data=="monitoring_sensor")
MonitoringUnitsSensorCMSModule.on_unit_sensor_string_updated(Wialon.get_item(event_id),false);});Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.sensu!='undefined')
MonitoringUnitsSensorCMSModule.on_unit_sensor_updated(Wialon.get_item(event_id),false);});Wialon.bind_event_handler("msg_registered",0,function(event_type,event_id,event_data){if(event_data&&(event_data.type=="udp"||event_data.type=="ud"))
MonitoringUnitsSensorCMSModule.on_unit_msg_updated(Wialon.get_item(event_id),false);});var units=Wialon.get_units();for(var i=0;i<units.length;i++)
this.on_unit_sensor_string_updated(units[i],true);this.initialized=true;},on_unit_sensor_string_updated:function(unit,skip_update){if(!unit||unit.get_type()!="avl_unit")
return;var uid=unit.get_id();var sc=unit.get_public_property("monitoring_sensor","");var sc_id=unit.get_public_property("monitoring_sensor_id","");if(sc==""||sc_id==""){delete this.unit_sensor_cache[uid];this.update_unit(unit);return;}
var table=this.unit_sensor_cache[uid];if(!table)
table=new Object();table.sensor_id=sc_id;table.calc_table=new Array();var arr=sc.split(";");for(var i=0;i<arr.length;i++){var clrs=arr[i].split(" ");if(clrs.length<2)
continue;var cv=new Object;cv.value=parseFloat(clrs[0]);cv.color=clrs[1];cv.text="";for(var j=2;j<clrs.length;j++)
cv.text+=(cv.text!=""?" ":"")+clrs[j];if(cv.color.length>6)
cv.color=cv.color.substring(cv.color.length-6);table.calc_table.push(cv);}
this.unit_sensor_cache[uid]=table;this.on_unit_sensor_updated(unit,skip_update);},on_unit_msg_updated:function(unit,skip_update){if(!unit||unit.get_type()!="avl_unit")
return;var uid=unit.get_id();var table=this.unit_sensor_cache[uid];if(!table||typeof table=="undefined")
return;var last_val=table.sens_val;var param=unit.get_last_param(table.sensor.get_param_name());var curr_val="N/A";if(param!="N/A")
curr_val=table.sensor.calculate_val(param,-348201.3876);if(last_val==curr_val&&skip_update)
return;table.sens_val=curr_val;if(!skip_update)
this.update_unit(unit);},on_unit_sensor_updated:function(unit,skip_update){if(!unit||unit.get_type()!="avl_unit")
return;var uid=unit.get_id();var table=this.unit_sensor_cache[uid];if(!table||typeof table=="undefined")
return;var pl=unit.get_plugin("avl_unit_sensors");if(!pl)
return;var sensor=pl.get_sensor(table.sensor_id);if(!sensor){delete this.unit_sensor_cache[uid];delete this.unit_sensor_cache[uid];this.update_unit(unit);return;}
table.sensor=sensor;this.on_unit_msg_updated(unit,skip_update);},update_unit:function(unit){if(!unit)
return;Wialon.fire_event("unit_color_updated",unit.get_id());if(this.show_control==-1)
return;var info=this.get_unit_info(unit);if(!info)
return;jQuery("#monitoring_units_sensor_"+unit.get_id()).html(info.html);},get_unit_info:function(unit){if(!unit)
return NULL;var uid=unit.get_id();var html="";var title="";var table=this.unit_sensor_cache[uid];var text="";var color="";if(!table||table.sens_val=="N/A"||!table.calc_table||!table.calc_table.length){html="<img src='"+this.unknown_img_url+"'/>";title=this.translation.unknown_state;}else if(table.sens_val==-348201.3876){html="<img src='"+this.error_img_url+"'/>";title=this.translation.error_state;}else{for(var i=0;i<table.calc_table.length;i++){if(i!=0&&table.calc_table[i].value>table.sens_val)
break;color=table.calc_table[i].color;text=table.calc_table[i].text;}
html="<center><span style='background-color: #"+color+"'>&nbsp;&nbsp;&nbsp;</span></center>";if(text=="")
title=sprintf("%s = %.2f",table.sensor.get_name(),table.sens_val);else
title=text;}
return{html:html,title:title,color:color};},on_sort:function(units,asc){units.sort(function(a,b){var u1,u2;if(!asc){u1=a;u2=b;}else{u1=b;u2=a;}
var a_sp=-10000;var b_sp=-10000;var a_tbl=MonitoringUnitsSensorCMSModule.unit_sensor_cache[u1.get_id()];var b_tbl=MonitoringUnitsSensorCMSModule.unit_sensor_cache[u2.get_id()];if(a_tbl){if(a_tbl.sens_val=="N/A")
a_sp=0;else if(a_tbl.sens_val==-348201.3876)
a_sp=-5000;else
a_sp=a_tbl.sens_val;}
if(b_tbl){if(b_tbl.sens_val=="N/A")
b_sp=0;else if(b_tbl.sens_val==-348201.3876)
b_sp=-5000;else
b_sp=b_tbl.sens_val;}
return a_sp-b_sp;});},get_row_tab_info:function(){return{id:"monitoring_settings",title:this.translation.tab_name};},get_row_html:function(){return"<tr><td><img src='"+this.head_img_url+"'/>&nbsp;"+this.translation.title_head+":</td><td><input type='checkbox' id='state_sens_btn'/></td><td><input type='checkbox' id='state_sens_btn_m'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#state_sens_btn").attr("checked",this.show_control==1).attr("title",this.translation.tooltip).Tooltip({showURL:false});jQuery("#state_sens_btn_m").attr("checked",this.show_control==2).attr("title",this.translation.tooltip_menu).Tooltip({showURL:false});jQuery("#state_sens_btn").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_sens_btn_m").removeAttr("checked");});jQuery("#state_sens_btn_m").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_sens_btn").removeAttr("checked");});},save_row_data:function(){var show=jQuery("#state_sens_btn").attr("checked")?1:0;if(!show)
show=jQuery("#state_sens_btn_m").attr("checked")?2:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mu_sens",show);mod_us.store_settings();this.show_control=show;var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(!mod_map||!mod_menu)
return;if(this.show_control==1)
mod_map.register_unit_state_module(this);else if(this.show_control==2)
mod_menu.register_unit_state_module(this);else
mod_map.unregister_unit_state_module(this);return true;},update_settings:function(){var user=Wialon.get_current_user();if(!user)
return;this.show_control=parseInt(user.get_private_property("mu_sens","2"));}});WebCMS.register_module(MonitoringUnitsSensorCMSModule);var UserSettingsTimeCMSModule=Base.extend({constructor:null,tz_cur:0,tz_user:0,local_dst:1,user_dst:1,translation:{timezone:""},zones_array:new Array,priority:10,get_type:function(){return"user_settings_time";},format_time:function(abs_time,allow_short){if(typeof allow_short=="undefined")
allow_short=true;var t=abs_time+this.tz_user-this.tz_cur+this.abs_to_local_dst(abs_time);return format_time(t,allow_short);},get_user_time:function(abs_time){if(typeof allow_short=="undefined")
allow_short=true;var t=abs_time+this.tz_user-this.tz_cur+this.abs_to_local_dst(abs_time);return t;},get_abs_time:function(date_time){if(typeof allow_short=="undefined")
allow_short=true;return abs_time=date_time-this.tz_user+this.tz_cur-this.local_to_abs_dst(date_time);},abs_to_local_dst:function(abs_time){if(this.user_dst==this.local_dst)
return 0;if(this.is_summer_time(abs_time)){if(this.user_dst)
return 3600;else
return-3600;}
return 0;},local_to_abs_dst:function(local_time){if(this.user_dst==this.local_dst)
return 0;if(this.is_summer_time(local_time)){if(!this.user_dst)
return-3600;else
return 3600;}
return 0;},is_summer_time:function(date){var d=new Date(date*1000);var ws_day=0;for(var i=31;i>0;i--){d.setMonth(2,i);if(d.getDay()==0){ws_day=i;break;}}
var sw_day=0;for(var i=31;i>0;i--){d.setMonth(9,i);if(d.getDay()==0){sw_day=i;break;}}
return(d.setMonth(2,ws_day)<date*1000)&&(d.setMonth(9,sw_day)>date*1000);},get_tz_offset:function(){return this.tz_user;},get_tz_dst_offset:function(){return this.tz_user|(this.user_dst!=WebCMS.server_dst?0x1:0);},get_dst_usage:function(){return this.user_dst;},get_row_html:function(){var html=jQuery("#user_settings_time_template").html();if(!html||html=="")
return null;html="<tr><td>"+this.translation.timezone+":</td><td><select id='user_settings_time_value' style='width:300px'>"+html+"</select></td></tr>";html+="<tr><td>"+this.translation.dst+":</td><td><input type='checkbox' id='user_settings_time_dst'/></td></tr>";return html;},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#user_settings_time_value").val(this.get_tz_offset()).attr("title",this.translation.title).Tooltip({showURL:false});if(this.user_dst)
jQuery("#user_settings_time_dst").attr("checked",true);},save_row_data:function(){var tval=parseInt(jQuery("#user_settings_time_value").val());if(isNaN(tval))
return;this.tz_user=tval;this.user_dst=jQuery("#user_settings_time_dst").attr("checked")?1:0;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user||(this.tz_user==parseInt(user.get_public_property("tz","1000000"))&&this.user_dst==parseInt(user.get_public_property("dst",""))))
return;user.set_public_property("tz",this.tz_user);user.set_public_property("dst",this.user_dst);mod_us.store_settings();},on_init:function(){var user=Wialon.get_current_user();if(!user)
return;var dt=new Date();this.tz_cur=get_local_timezone();this.tz_user=parseInt(user.get_public_property("tz",this.tz_cur));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);if(std_time_offset==daylight_time_offset)
this.local_dst=0;else
this.local_dst=1;this.user_dst=user.get_public_property("dst","")==""?this.local_dst:parseInt(user.get_public_property("dst",""));var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);var html="<iframe id='tz_list_temporary' name='tz_list_temporary' src='/user_settings_time/timezone.html?lang="+WebCMS.get_lang()+"' style='display: none'/>";jQuery("body").append(html);},get_timezones:function(){if(!this.zones_array.length){var select=jQuery("#tz_list_temporary").contents().find("#user_settings_time_template");jQuery("option",select.get(0)).each(function(){UserSettingsTimeCMSModule.zones_array.push({name:jQuery(this).html(),value:jQuery(this).val()});});jQuery("#tz_list_temporary").remove();}
return this.zones_array;}});WebCMS.register_module(UserSettingsTimeCMSModule);var LogPanelCMSModule=Base.extend({constructor:null,limit:100,showed:false,log_marker_url:"/log_panel/locate.png",resizing:false,get_type:function(){return"log";},log_msg:function(text,type,show_alert,lat,lon){var color="#000000";if(type==1)
color="#007236";else if(type==2)
color="#BB0028";var mod_ust=WebCMS.get_module("user_settings_time");var tm_str="";if(mod_ust)
tm_str=mod_ust.format_time(get_curr_abs_time());else
tm_str=format_time(get_curr_abs_time());var need_update=true;if(jQuery("#log_panel_content > p").size()>=this.limit){jQuery("#log_panel_content > p:eq(0)").remove();need_update=false;}
if(lat||lon){var img_url=WebCMS.get_img_url(this.log_marker_url);text="<span style='cursor:pointer' onclick='return WebCMS.locate("+lat+","+lon+")'>"+text+"&nbsp;<img border='0' src='"+img_url+"'/></span>";}
var html="<p style='color: "+color+"'>"+tm_str+":&nbsp;"+text+"</p>";jQuery("#log_panel_content").append(html);if(need_update)
this.resize();if(text!=""&&show_alert)
alert(text);},show:function(skip_store){jQuery("#log_panel_target").show();this.showed=true;this.resize();},hide:function(){this.showed=false;jQuery("#log_panel_target").hide();if(this.hide_drag_timeout)
clearTimeout(this.hide_drag_timeout);this.hide_drag_timeout=0;jQuery("#drag_log").css("display","none");},show_hide:function(){if(this.showed)
this.hide();else
this.show()},resize:function(){var log_obj=document.getElementById("log_panel_target");if(log_obj){var h_target=parseInt(document.getElementById("log_panel_target").scrollHeight);var h_content=parseInt(jQuery("#log_panel_content").height());if(h_target>h_content)
jQuery("#log_panel_content").css("height","auto");document.getElementById("log_panel_target").scrollTop=(h_target+20);}},on_init:function(){if(jQuery.browser.msie)
document.ondragstart=function(e){return false;};else{document.onmousedown=function(e){if(e&&e.preventDefault){var t=e.target;var nName=t.nodeName.toLowerCase();if(nName=="img"){e.preventDefault();return false;}}}}
var html="<div id='log_panel_content' style='height: 100%;'></div>";jQuery("#log_panel_target").html(html);jQuery("#drag_log").css("top",parseInt(jQuery("#log_panel_target").css("top"))-4);jQuery("#drag_log").css("width",parseInt(jQuery("#log_panel_target").css("width")));jQuery("#drag_log").css("left",parseInt(jQuery("#log_panel_target").css("left")));jQuery("#drag_log").disableTextSelect();jQuery("#log_panel_target").resize(function(){LogPanelCMSModule.resize();var top=parseInt(jQuery("#log_panel_target").css("top"));if(top<46){top=46;var new_h=jQuery("#log_panel_target").height()+parseInt(jQuery("#log_panel_target").css("top"))-top;jQuery("#log_panel_target").css("top",top);jQuery("#log_panel_target").css("height",new_h);}
jQuery("#drag_log").css("top",parseInt(jQuery("#log_panel_target").css("top"))-4);jQuery("#drag_log").css("width",parseInt(jQuery("#log_panel_target").css("width")));jQuery("#drag_log").css("left",parseInt(jQuery("#log_panel_target").css("left")));});jQuery("#drag_log").mousedown(function(e){LogPanelCMSModule.resizing=true;if(LogPanelCMSModule.hide_drag_timeout){clearTimeout(LogPanelCMSModule.hide_drag_timeout);LogPanelCMSModule.hide_drag_timeout=0;}
jQuery("#drag_log").addClass("drag_line_hover");jQuery("#log_panel_target").disableTextSelect();});jQuery("body").mouseup(function(e){if(LogPanelCMSModule.resizing){var top=parseInt(jQuery("#drag_log").css("top"));if(top<46){jQuery("#drag_log").css("top","100px");top=46;}
var new_h=jQuery("#log_panel_target").height()+parseInt(jQuery("#log_panel_target").css("top"))-top-4;jQuery("#log_panel_target").css("top",top+4);jQuery("#log_panel_target").css("height",new_h);jQuery("#drag_log").css("top",parseInt(jQuery("#log_panel_target").css("top"))-4);jQuery("#drag_log").removeClass("drag_line_hover");jQuery("#log_panel_target").enableTextSelect();resize_log_panel();}
LogPanelCMSModule.resizing=false;});jQuery("body").mousemove(function(e){if(!LogPanelCMSModule.resizing)
return;jQuery("#drag_log").css("top",e.clientY-4);if(LogPanelCMSModule.hide_drag_timeout){clearTimeout(LogPanelCMSModule.hide_drag_timeout);LogPanelCMSModule.hide_drag_timeout=0;}});jQuery("#log_panel_target,#drag_log").bind("mouseenter",function(){jQuery("#drag_log").css("display","");if(LogPanelCMSModule.hide_drag_timeout){clearTimeout(LogPanelCMSModule.hide_drag_timeout);LogPanelCMSModule.hide_drag_timeout=0;}});jQuery("#log_panel_target,#drag_log").bind("mouseleave",function(){if(LogPanelCMSModule.resizing)
return;if(LogPanelCMSModule.hide_drag_timeout){clearTimeout(LogPanelCMSModule.hide_drag_timeout);LogPanelCMSModule.hide_drag_timeout=0;}
LogPanelCMSModule.hide_drag_timeout=setTimeout(function(){jQuery("#drag_log").css("display","none");LogPanelCMSModule.hide_drag_timeout=false;},500);});}});WebCMS.register_module(LogPanelCMSModule);var UserSettingsEmailCMSModule=Base.extend({constructor:null,translation:{},priority:9,get_type:function(){return"user_settings_email";},get_row_html:function(){return"<tr><td>"+this.translation.email+":</td><td><input type='text' id='user_settings_email_value'/></td></tr>";},bind_row_events:function(){var user=Wialon.get_current_user();if(!user)
return;jQuery("#user_settings_email_value").val(user.get_public_property("email","your-email@your-domain.com")).attr("title",this.translation.title).Tooltip({showURL:false});},is_row_ok:function(){var email=jQuery("#user_settings_email_value").val();if(!email||email=="")
return false;var reg_exp=/[-_a-z0-9\.]{1,}@[-_a-z0-9]{1,}\.[-_a-z0-9\.]{2,}/i;return reg_exp.test(email);},save_row_data:function(){var email=jQuery("#user_settings_email_value").val();if(!email||email=="")
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user||email==user.get_public_property("email","your-email@your-domain.com"))
return;user.set_public_property("email",email);mod_us.store_settings();},on_init:function(){var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);}});WebCMS.register_module(UserSettingsEmailCMSModule);var UserSettingsPasswordCMSModule=Base.extend({constructor:null,translation:{},priority:7,get_type:function(){return"user_settings_password";},get_row_html:function(){var user=Wialon.get_current_user();if(!user||user.get_flags()&0x2)
return"";var html="";html+="<tr id='user_settings_password_btn_tr'><td>&nbsp;</td><td><input type='button' id='user_settings_password_btn'/></td></tr>";html+="<tr id='user_settings_password_v1'><td>"+this.translation.curr+":</td><td><input type='password' id='user_settings_password_curr'/></td></tr>";html+="<tr id='user_settings_password_v2'><td>"+this.translation.newp+":</td><td><input type='password' id='user_settings_password_new'/></td></tr>";html+="<tr id='user_settings_password_v3'><td>"+this.translation.repeat+":</td><td><input type='password' id='user_settings_password_repeat'/></td></tr>";return html;},bind_row_events:function(){var user=Wialon.get_current_user();if(!user||user.get_flags()&0x2)
return;jQuery("#user_settings_password_btn").val(this.translation.change).click(function(){jQuery("[@id^=user_settings_password_v]").show();jQuery("#user_settings_password_btn_tr").hide();});jQuery("[@id^=user_settings_password_v]").hide();},is_row_ok:function(){var user=Wialon.get_current_user();if(!user||user.get_flags()&0x2||jQuery("#user_settings_password_btn_tr").css("display")!="none")
return true;var p1=jQuery("#user_settings_password_new").val();var p2=jQuery("#user_settings_password_repeat").val();var p3=jQuery("#user_settings_password_curr").val();if(!p1||!p2||p1==""||p1!=p2||!p3||p3=="")
return false;return true;},save_row_data:function(){var user=Wialon.get_current_user();if(!user||user.get_flags()&0x2)
return;var p1=jQuery("#user_settings_password_new").val();var p2=jQuery("#user_settings_password_repeat").val();var p3=jQuery("#user_settings_password_curr").val();if(!p1||!p2||p1==""||p1!=p2||!p3||p3=="")
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_password(p3,p1);mod_us.store_settings();},on_init:function(){var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);}});WebCMS.register_module(UserSettingsPasswordCMSModule);var LogMessagesCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"log_messages";},on_init:function(){Wialon.bind_event_handler("msg_registered",0,function(event_type,event_id,event_data){LogMessagesCMSModule.on_msg_recieved(Wialon.get_item(event_id),event_data);});},on_msg_recieved:function(item,msg){if(!item||!msg)
return;if(item.get_type()=="avl_unit"){var mod_mu=WebCMS.get_module("monitoring_units");if(mod_mu&&!mod_mu.is_unit_available(item))
return;}
var mod_ust=WebCMS.get_module("user_settings_time");if(!mod_ust)
return;switch(msg.get_type()){case"ud":if((msg.get_flags()&0x10)==0x10)
WebCMS.log_msg(sprintf(this.translation.msg_ud,item.get_name(),mod_ust.format_time(msg.get_time())),2,false);else{if(msg.get_param("gprs_answer","")!="")
WebCMS.log_msg(sprintf(this.translation.msg_ud+" %s",item.get_name(),mod_ust.format_time(msg.get_time()),msg.get_param("gprs_answer","")),0);else
WebCMS.log_msg(sprintf(this.translation.msg_ud,item.get_name(),mod_ust.format_time(msg.get_time())),0);}
break;case"udp":if(msg.get_location()!=""){if((msg.get_flags()&0x10)==0x10)
WebCMS.log_msg(sprintf(this.translation.msg_udp,item.get_name(),mod_ust.format_time(msg.get_time()),msg.get_location()),2,false,msg.get_lat(),msg.get_lon());else
WebCMS.log_msg(sprintf(this.translation.msg_udp,item.get_name(),mod_ust.format_time(msg.get_time()),msg.get_location()),0,false,msg.get_lat(),msg.get_lon());}else{if((msg.get_flags()&0x10)==0x10)
WebCMS.log_msg(sprintf(this.translation.msg_ud,item.get_name(),mod_ust.format_time(msg.get_time())),2,false,msg.get_lat(),msg.get_lon());else
WebCMS.log_msg(sprintf(this.translation.msg_ud,item.get_name(),mod_ust.format_time(msg.get_time())),0,false,msg.get_lat(),msg.get_lon());}
break;case"us":WebCMS.log_msg(sprintf(this.translation.msg_us,item.get_name(),msg.get_sms_text()),0);break;case"unm":{var unit=msg.get_unit();if(unit)
WebCMS.log_msg(sprintf(this.translation.msg_unm,msg.get_name(),unit.get_name()),0);break;}
default:break;}}});WebCMS.register_module(LogMessagesCMSModule);var UserSettingsMsgParamsCMSModule=Base.extend({constructor:null,show_control:-1,priority:-10,translation:{},get_type:function(){return"user_settings_msg_params";},get_row_html:function(){return"<tr><td>"+this.translation.msg_params_show+":</td><td><input type='checkbox' id='user_settings_msg_params_show'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){var user=Wialon.get_current_user();if(!user)
return;jQuery("#user_settings_msg_params_show").attr("checked",this.show_control).attr("title",this.translation.title).Tooltip({showURL:false});;},save_row_data:function(){var show=jQuery("#user_settings_msg_params_show").attr("checked")?1:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("usmp",show?"1":"0");mod_us.store_settings();this.show_control=show;},on_init:function(){var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);var user=Wialon.get_current_user();if(!user)
return;if(user.get_private_property("usmp","0")=="1")
this.show_control=1;else
this.show_control=0;if(user.get_public_property("user_settings_msg_params","")!=""){user.set_public_property("user_settings_msg_params","");var mod_us=WebCMS.get_module("user_settings");if(mod_us)
mod_us.store_settings();}}});WebCMS.register_module(UserSettingsMsgParamsCMSModule);var UserSettingsSitesCMSModule=Base.extend({constructor:null,translation:{},priority:6,visible:1,get_type:function(){return"user_settings_mobile_sites";},get_row_html:function(){return"<tr><td>"+this.translation.mobile_sites_key+":</td><td><input type='text' id='user_settings_mobile_sites_value'/></td></tr>";},bind_row_events:function(){var user=Wialon.get_current_user();if(!user)
return;jQuery("#user_settings_mobile_sites_value").val(user.get_public_property("msakey","")).attr("title",this.translation.title).Tooltip({showURL:false});},is_row_ok:function(){return true;},save_row_data:function(){var mobile_sites=jQuery("#user_settings_mobile_sites_value").val();if(!mobile_sites||mobile_sites=="")
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_public_property("msakey",mobile_sites);mod_us.store_settings();},on_init:function(){if(!this.visible)
return;var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);}});WebCMS.register_module(UserSettingsSitesCMSModule);var UserSettingsStartPositionCMSModule=Base.extend({constructor:null,translation:{},priority:9,get_type:function(){return"user_map_start_position";},get_row_html:function(){return"<tr><td>"+this.translation.name+":</td><td><input type='checkbox' id='user_map_start_position_value'/>&nbsp;<input type='button' id='user_map_start_position_reset' value='"+this.translation.reset+"'/></td></tr>";},bind_row_events:function(){jQuery("#user_map_start_position_value").attr("title",this.translation.title).Tooltip({showUrl:false});jQuery("#user_map_start_position_reset").attr("title",this.translation.reset_title).Tooltip({showUrl:false}).click(function(){var user=Wialon.get_current_user();var mod_us=WebCMS.get_module("user_settings");if(!user||!mod_us)
return;user.set_private_property("umsp","");mod_us.store_settings();});},is_row_ok:function(){return true;},save_row_data:function(){var store=jQuery("#user_map_start_position_value").attr("checked")?true:false;if(!store)
return;var user=Wialon.get_current_user();var mod_mm=WebCMS.get_module("monitoring_map");var mod_us=WebCMS.get_module("user_settings");if(!mod_us||!mod_mm||!mod_mm.get_map()||!user)
return;var map=mod_mm.get_map();var center=map.getCenter();center=new OpenLayers.LonLat(center.lon,center.lat);center.transform(map.getProjectionObject(),map.displayProjection);var arr=new Array;arr.push(center.lon);arr.push(center.lat);arr.push(map.getZoom());user.set_private_property("umsp",arr.join(","));mod_us.store_settings();},get_row_tab_info:function(){return{id:"maps",title:this.translation.maps};},on_init:function(){var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);var user=Wialon.get_current_user();var mod_mm=WebCMS.get_module("monitoring_map");if(!mod_mm||!mod_mm.get_map()||!user)
return;var map=mod_mm.get_map();var sp=user.get_private_property("umsp","");if(!sp.length)
return;sp=sp.split(",");if(sp.length!=3)
return;var pos=new OpenLayers.LonLat(sp[0],sp[1]);pos.transform(map.displayProjection,map.getProjectionObject());map.setCenter(pos,parseInt(sp[2]));}});WebCMS.register_module(UserSettingsStartPositionCMSModule);var HotKeysCMSModule=Base.extend({constructor:null,translation:{},priority:-1,use_hotkeys:1,descriptions:0,actions:{},col_btns:[[81,87,69,82,84,89],[65,83,68,70,71],[90,88,67,86,66]],btns_codes:{81:"Q",87:"W",69:"E",82:"R",84:"T",89:"Y",65:"A",83:"S",68:"D",70:"F",71:"G",90:"Z",88:"X",67:"C",86:"V",66:"B"},modules:[["monitoring","routes","pois","geozones","plots","cultivations"],["jobs","notifications","route_control"],["devices","users","units_groups","drivers"]],get_type:function(){return"hot_keys";},get_row_html:function(){return"<tr><td>"+this.translation.use_hotkeys+":</td><td><input type='checkbox' id='user_settings_hotkeys'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){var user=Wialon.get_current_user();if(!user)
return;if(user.get_public_property("user_settings_hotkeys","0")=="1")
this.use_hotkeys=1;else
this.use_hotkeys=0;jQuery("#user_settings_hotkeys").attr("checked",this.use_hotkeys).attr("title",this.translation.title).Tooltip({showURL:false});},save_row_data:function(){var use_hotkeys=jQuery("#user_settings_hotkeys").attr("checked")?1:0;if(use_hotkeys==this.use_hotkeys)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_public_property("user_settings_hotkeys",use_hotkeys?"1":"0");this.use_hotkeys=use_hotkeys;mod_us.store_settings();this.check_descriptions();},on_init:function(){var user=Wialon.get_current_user();if(!user)
return;if(jQuery.browser.mozilla)
jQuery("body").attr("onkeydown","HotKeysCMSModule.process_key(event)");else
jQuery("body").keydown(function(){HotKeysCMSModule.process_key(event);});this.actions[53]=function(){if(active_tool_module=="dimensions"){destroy_tool();return;}
on_menu_dimensions();};this.actions[54]=function(){if(active_tool_module=="area"){destroy_tool();return;}
on_menu_area();};this.actions[55]=function(){if(active_tool_module=="address"){destroy_tool();return;}
on_menu_address();};this.actions[56]=function(){if(active_tool_module=="routing"){destroy_tool();return;}
on_menu_routing();};this.actions[57]=function(){if(active_tool_module=="track_hit_test"){destroy_tool();return;}
on_menu_hittest();};this.actions[48]=function(){if(active_tool_module=="nearest_devices"){destroy_tool();return;}
on_menu_nearest_units();};this.actions[49]="jQuery('#menu_modes_map').trigger('click')";this.actions[50]="jQuery('#menu_modes_messages').trigger('click')";this.actions[76]="jQuery('#log_btn_target').trigger('click')";if(typeof available_modules["reports"]!="undefined")
this.actions[51]="jQuery('#menu_modes_reports').trigger('click')";this.actions[192]="full_screen_mode(true)";var std_modules={};std_modules["monitoring"]=1;std_modules["routes"]=1;std_modules["devices"]=1;for(var i=0;i<this.modules.length;i++){var curr_btn=0;for(var ii=0;ii<this.modules[i].length;ii++){if(typeof available_modules[this.modules[i][ii]]!="undefined"||std_modules[this.modules[i][ii]]){var jcode="";if(this.modules[i][ii]=="reports"){jcode="jQuery('#menu_modes_reports').click();jQuery('#reports_filter_content dt:first').click();";}else{jcode="if(wialon_web_mode!=WIALON_WEB_MODE_MAP)jQuery('#menu_modes_map').trigger('click');if(full_screen_map)full_screen_mode(true);WebCMS.get_module('foldbar').show_panel('foldbar_"+this.modules[i][ii]+"');Wialon.fire_event('show_panel', '"+this.modules[i][ii]+"');";}
this.actions[this.col_btns[i][curr_btn++]]=jcode;}}}
var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);this.use_hotkeys=parseInt(user.get_public_property("user_settings_hotkeys","0"));this.check_descriptions();},process_key:function(e){if(!this.use_hotkeys||jQuery("#TB_window").size())
return;var target=null;if(jQuery.browser.msie)
target=e.srcElement;else
target=e.target;if(target.nodeName.toLowerCase()=="textarea"||(target.nodeName.toLowerCase()=="input"&&(target.type.toLowerCase()=="text"||target.type.toLowerCase()=="password")))
return;var keynum;if((window.event&&window.event.ctrlKey)||(e&&e.ctrlKey))
return;if(window.event)
keynum=e.keyCode;else if(e.which)
keynum=e.which;if(typeof this.actions[keynum]!="undefined"){if(typeof this.actions[keynum]=="function")
this.actions[keynum]();else
eval(this.actions[keynum]);}},check_descriptions:function(){if(!jQuery("#block_left_panel_foldbar_caption_link").size()){setTimeout(HotKeysCMSModule.check_descriptions,500);return;}
var std_modules={};std_modules["monitoring"]=1;std_modules["routes"]=1;std_modules["devices"]=1;if(HotKeysCMSModule.use_hotkeys&&!HotKeysCMSModule.descriptions){jQuery("#menu_modes_map").html(jQuery("#menu_modes_map").html()+" (1)");jQuery("#menu_modes_messages").html(jQuery("#menu_modes_messages").html()+" (2)");if(typeof available_modules["reports"]!="undefined")
jQuery("#menu_modes_reports").html(jQuery("#menu_modes_reports").html()+" (3)");jQuery("#sub_menu_tools_0").html(jQuery("#sub_menu_tools_0").html()+" (5)");jQuery("#sub_menu_tools_1").html(jQuery("#sub_menu_tools_1").html()+" (6)");jQuery("#sub_menu_tools_2").html(jQuery("#sub_menu_tools_2").html()+" (7)");jQuery("#sub_menu_tools_3").html(jQuery("#sub_menu_tools_3").html()+" (8)");jQuery("#sub_menu_tools_4").html(jQuery("#sub_menu_tools_4").html()+" (9)");jQuery("#sub_menu_tools_5").html(jQuery("#sub_menu_tools_5").html()+" (0)");for(var i=0;i<HotKeysCMSModule.modules.length;i++){var curr_btn=0;for(var ii=0;ii<HotKeysCMSModule.modules[i].length;ii++){if(typeof available_modules[HotKeysCMSModule.modules[i][ii]]!="undefined"||std_modules[HotKeysCMSModule.modules[i][ii]]){var html=jQuery("#block_left_panel_foldbar_menu_item_"+HotKeysCMSModule.modules[i][ii]).html();if(!html)
html="";jQuery("#block_left_panel_foldbar_menu_item_"+HotKeysCMSModule.modules[i][ii]).html(html+" ("+HotKeysCMSModule.btns_codes[HotKeysCMSModule.col_btns[i][curr_btn++]]+")");}}}
HotKeysCMSModule.descriptions=1;}else if(!HotKeysCMSModule.use_hotkeys&&HotKeysCMSModule.descriptions){var html=jQuery("#menu_modes_map").html();jQuery("#menu_modes_map").html(html.substring(0,html.length-4));html=jQuery("#menu_modes_messages").html();jQuery("#menu_modes_messages").html(html.substring(0,html.length-4));if(typeof available_modules["reports"]!="undefined"){html=jQuery("#menu_modes_reports").html();jQuery("#menu_modes_reports").html(html.substring(0,html.length-4));}
html=jQuery("#sub_menu_tools_0").html();jQuery("#sub_menu_tools_0").html(html.substring(0,html.length-4));html=jQuery("#sub_menu_tools_1").html();jQuery("#sub_menu_tools_1").html(html.substring(0,html.length-4));html=jQuery("#sub_menu_tools_2").html();jQuery("#sub_menu_tools_2").html(html.substring(0,html.length-4));html=jQuery("#sub_menu_tools_3").html();jQuery("#sub_menu_tools_3").html(html.substring(0,html.length-4));html=jQuery("#sub_menu_tools_4").html();jQuery("#sub_menu_tools_4").html(html.substring(0,html.length-4));html=jQuery("#sub_menu_tools_5").html();jQuery("#sub_menu_tools_5").html(html.substring(0,html.length-4));for(var i=0;i<HotKeysCMSModule.modules.length;i++){var curr_btn=0;for(var ii=0;ii<HotKeysCMSModule.modules[i].length;ii++){if(typeof available_modules[HotKeysCMSModule.modules[i][ii]]!="undefined"||std_modules[HotKeysCMSModule.modules[i][ii]]){var html=jQuery("#block_left_panel_foldbar_menu_item_"+HotKeysCMSModule.modules[i][ii]).html();if(!html)
html="";jQuery("#block_left_panel_foldbar_menu_item_"+HotKeysCMSModule.modules[i][ii]).html(html.substring(0,html.length-4));}}}
HotKeysCMSModule.descriptions=0;}}});WebCMS.register_module(HotKeysCMSModule);var UserSettingsMetricsCMSModule=Base.extend({constructor:null,translation:{},priority:6,get_type:function(){return"user_settings_metrics";},get_row_html:function(){return"<tr><td>"+this.translation.metrics+":</td><td><input type='checkbox' id='user_settings_metrics_value'/></td></tr>";},bind_row_events:function(){var user=Wialon.get_current_user();if(!user)
return;jQuery("#user_settings_metrics_value").attr("checked",parseInt(user.get_private_property("us_units","0"))).attr("title",this.translation.title).Tooltip({showURL:false});},is_row_ok:function(){return true;},save_row_data:function(){var value=jQuery("#user_settings_metrics_value").attr("checked")?1:0;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user||value==parseInt(user.get_private_property("us_units","0")))
return;user.set_private_property("us_units",value);mod_us.store_settings();use_us_metrics=value;},on_init:function(){var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);var user=Wialon.get_current_user();use_us_metrics=user?parseInt(user.get_private_property("us_units","0")):0;}});WebCMS.register_module(UserSettingsMetricsCMSModule);var LocatorCMSModule=Base.extend({constructor:null,translation:{},priority:9,get_type:function(){return"locator";},get_row_html:function(){var user=Wialon.get_current_user();var link=sprintf("<a target='_blank' href='/locator/index.html?u=%s&zoom=13&map_type=1'>%s</a>",user.get_name(),this.translation.link);var txt=sprintf(this.translation.locator,link);return"<tr><td>"+txt+":</td><td><input type='checkbox' id='user_settings_locator_enable' name='user_settings_locator_enable'/></td></tr>";},bind_row_events:function(){var user=Wialon.get_current_user();if(!user)
return;var show_loc=(user.get_public_property("locator","0")=="1")?true:false;jQuery("#user_settings_locator_enable").attr("checked",(show_loc?true:false)).attr("title",this.translation.title).Tooltip({showURL:false});},is_row_ok:function(){return true;},save_row_data:function(){var show_loc_new=jQuery("#user_settings_locator_enable").attr("checked")?true:false;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;var show_loc=user.get_public_property("locator","0")=="1"?true:false;if(show_loc==show_loc_new)
return;user.set_public_property("locator",show_loc_new?"1":"");mod_us.store_settings();},on_init:function(){var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);}});WebCMS.register_module(LocatorCMSModule);var UserSettingsCityCMSModule=Base.extend({constructor:null,translation:{},priority:9,city_id:null,get_type:function(){return'user_settings_city';},get_row_html:function(){var html='<tr><td>'+this.translation.city+':</td>';html+='<td><input type="text" id="user_settings_city_text"/><br>';html+='<select id="user_settings_city_select" style="width:161px; max-width:161px"></select></td></tr>';return html;},bind_row_events:function(){var user=Wialon.get_current_user();if(!user)
return;jQuery('#user_settings_city_text').val(user.get_public_property('city',''));jQuery('#user_settings_city_text').attr('title',this.translation.title).Tooltip({showURL:false});jQuery('#user_settings_city_text').change(function(){if(jQuery('#user_settings_city_text').val().length>2)
UserSettingsCityCMSModule.load_cities();});},is_row_ok:function(){return true;},save_row_data:function(){var tcity=jQuery('#user_settings_city_text').val();var city=jQuery('#user_settings_city_select').val();var mod_usersettings=WebCMS.get_module('user_settings');var user=Wialon.get_current_user();var ucity=user.get_public_property('city','');if(!mod_usersettings||!user||(!city&&(!tcity||tcity==ucity)))
return;user.set_public_property('city',city);mod_usersettings.store_settings();this.update_city_id();},get_city_id:function(){return this.city_id;},get_city:function(){var user=Wialon.get_current_user();var city=user.get_public_property('city','');return city;},on_init:function(){var mod_usdialog=WebCMS.get_module("user_settings_dialog");if(mod_usdialog)
mod_usdialog.add_row(this);this.update_city_id();},update_city_id:function(){var user=Wialon.get_current_user();var city=user.get_public_property('city','');if(city==''){this.city_id=null;return}
WebGIS.search_cities(city,'',function(cities,arg){if(cities&&cities.length>0)
arg.city_id=cities[0].id;},this);},load_cities:function(){jQuery('#user_settings_city_select').attr('disabled',true);jQuery('#user_settings_city_select').empty();var user=Wialon.get_current_user();var city=jQuery('#user_settings_city_text').val();WebGIS.search_cities(city,'',function(cities,arg){if(cities&&cities.length>0)
for(var i=0;i<cities.length;i++){var c=cities[i];var s='<option>'+c.text+'</option>';jQuery('#user_settings_city_select').append(s);}
jQuery('#user_settings_city_select').attr('disabled',false);},this);}});WebCMS.register_module(UserSettingsCityCMSModule);var UserSettingsAccountCMSModule=Base.extend({constructor:null,translation:{},days_left:"unk",get_type:function(){return"user_settings_account";},get_row_html:function(){var thtml1=jQuery("#user_settings_account_plan_name_template").val();var thtml2=jQuery("#user_settings_account_balance_template").val();var thtml3=jQuery("#user_settings_account_services_template").html();var thtml4=jQuery("#user_settings_account_days_template").val();if(!thtml1||thtml1==""||!thtml2||thtml2=="")
return null;var html="<tr><td><table width='100%'>";html+="<tr><td width='100%' id='user_settings_account_links'></td></tr>";html+="<tr><td align='center' id='user_settings_account_content'></td></tr>";html+="</table><td><tr>";return html;},is_row_ok:function(){return true;},bind_row_events:function(){var thtml1=jQuery("#user_settings_account_plan_name_template").val();var thtml2=jQuery("#user_settings_account_balance_template").val();var thtml3=jQuery("#user_settings_account_services_template").html();var thtml4=jQuery("#user_settings_account_days_template").val();if(!thtml1||thtml1==""||!thtml2||thtml2=="")
return;var html="<table><tr><td>"+this.translation.plan+":</td><td><input type='text' readonly='true' value='"+thtml1+"'/></td></tr>";html+="<tr><td>"+this.translation.balance+":</td><td><input type='text' readonly='true' value='"+thtml2+"'/></td></tr>";if(thtml4&&thtml4!="")
html+="<tr><td>"+this.translation.days_left+":</td><td><input type='text' readonly='true' value='"+thtml4+"'/></td></tr>";if(thtml3&&thtml3!=""){html+="<tr><td colspan='2'><br><table cellpadding='0px' cellspacing='1px' class='user_settings_account_table'><thead>";html+="<tr><td><b>"+this.translation.service+"</b></td><td><b>"+this.translation.in_use+"</b></td><td><b>"+this.translation.limit+"</b></td><td><b>"+this.translation.reset_interval+"</b></td></tr>";html+="</thead><tbody>"+thtml3+"</tbody></table></td></tr></table>";}
this.add_page(this.translation.general,html);html="<p>"+this.translation.statistics_text+"&nbsp;<select id='user_settings_account_interval' style='width: 50px;'>";for(var i=1;i<61;i++)
html+="<option value='"+i+"'>"+i+"</option>";html+="</select>&nbsp;"+this.translation.days+".&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input align='right' id='user_settings_account_view_history' type='button' value='"+this.translation.show+"' style='width: 100px; cursor: pointer;' /></p>";html+="<table class='user_settings_account_table' id='user_settings_account_view_table' cellspacing='1px' cellpadding='1px'><thead><tr><th align='center'>"+this.translation.date+"</th><th align='center'>"+this.translation.service+"</th>";html+="<th align='center'>"+this.translation.cost+"</th><th align='center'>"+this.translation.count+"</th><th align='center'>"+this.translation.additional+"</th></tr></thead>";html+="<tbody></tbody></table>";this.add_page(this.translation.statistics,html);jQuery("#user_settings_account_view_history").click(function(){var days=jQuery("#user_settings_account_interval").val();var mod_ust=WebCMS.get_module("user_settings_time");var acc_id=jQuery("#user_settings_account_id_template").val();if(!WebAjax.exec_service("/user_settings_account/history.html",{days:days,tz:mod_ust?mod_ust.get_tz_dst_offset():0,item_id:acc_id},function(result,text){UserSettingsAccountCMSModule.show_account_history(result,text);}));return false;});this.activate_page(0);},save_row_data:function(){},get_row_tab_info:function(){return{id:"account",title:this.translation.account};},on_init:function(){var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);if(this.days_left!="unk"&&this.days_left<=5){var days_left=parseInt(this.days_left);var txt1=this.translation.days_info;var txt2=this.translation.days_warn;setTimeout(function(){var html="<div id='account_days_error_info' class='server_time_info'>"+
(days_left>=0?sprintf(txt1,days_left):txt2)+"</div>";jQuery("body").append(html);var offset=jQuery("#server_time_target").offset();var h=jQuery("#server_time_target").height();jQuery("#account_days_error_info").css({left:offset.left-200,top:offset.top+h}).show('fast').fadeTo('fast',0.8);setTimeout(function(){jQuery("#account_days_error_info").remove();},10000);},10000);}},add_page:function(name,html){var count=jQuery("#user_settings_account_content div[@id^='user_settings_account_data_item_']").size();var id1="user_settings_account_link_item_"+count;var id2="user_settings_account_data_item_"+count;var link_html=(count?"|&nbsp;":"")+"<a id='"+id1+"' class='user_settings_account_link' href=''>"+name+"</a>&nbsp;";jQuery("#user_settings_account_links").append(link_html);var data_html="<div id='"+id2+"' class='user_settings_account_data_div'>"+html+"</div>";jQuery("#user_settings_account_content").append(data_html);jQuery("#"+id1).bind("click",count,function(evt){UserSettingsAccountCMSModule.activate_page(count);return false;});},activate_page:function(index){jQuery("#user_settings_account_content div[@id^='user_settings_account_data_item_']").each(function(i){if(i==index){jQuery("#user_settings_account_link_item_"+i).removeClass("user_settings_account_link");jQuery("#user_settings_account_link_item_"+i).addClass("user_settings_account_link2");jQuery(this).show('fast');}else{jQuery("#user_settings_account_link_item_"+i).removeClass("user_settings_account_link2");jQuery("#user_settings_account_link_item_"+i).addClass("user_settings_account_link");jQuery(this).hide();}});},show_account_history:function(result,text){if(result){function cfs(){if(jQuery.browser.msie)
return{t:[]};else
return{t:""};}
function gfs(s){if(jQuery.browser.msie)
return s.t.join('');else
return s.t;}
function fs(){var l=arguments[0].t.length;for(var i=1;i<arguments.length;i++){if(jQuery.browser.msie)
arguments[0].t[l++]=arguments[i];else
arguments[0].t+=arguments[i];}}
var html=cfs();try{var rows=jQuery.parseJSON(text);if(rows&&rows.length){for(var i=rows.length-1;i>=0;i--){var row=rows[i];if(parseInt(row[0]))
fs(html,"<tr style='font-weight: bold'><td>");else
fs(html,"<tr><td>");fs(html,row[1],"</td><td>",row[2],"</td><td>",row[3],"</td><td>",row[4],"</td><td>",row[5],"</td></tr>");}}}catch(err){test(err);}
jQuery("#user_settings_account_view_table > tbody").html(gfs(html));}else if(text!="error"&&text!=""){WebCMS.log_msg(text,2);}}});WebCMS.register_module(UserSettingsAccountCMSModule);var UserSettingsPhonesCMSModule=Base.extend({constructor:null,translation:{},priority:8,get_type:function(){return"user_settings_phones";},get_row_html:function(){return"<tr><td>"+this.translation.txt+":</td><td valign='middle'><input type='text' id='user_settings_phones_value' size='35'/></td></tr>";},bind_row_events:function(){var user=Wialon.get_current_user();if(!user)
return;var pl=user.get_plugin("avl_sms_manager");if(!pl)
return;jQuery("#user_settings_phones_value").val(pl.get_phones()).attr("title",this.translation.title).Tooltip({showURL:false});},is_row_ok:function(){var phones=jQuery("#user_settings_phones_value").val();if(!phones||phones=="")
return true;var arr=phones.split(",");var reg_exp=/\+[0-9]{10,13}/i;for(var i=0;i<arr.length;i++){if(arr[i].length&&!reg_exp.test(arr[i]))
return false;}
return true;},save_row_data:function(){var phones=jQuery("#user_settings_phones_value").val();if(!phones)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;var pl=user.get_plugin("avl_sms_manager");if(!pl)
return;pl.set_phones(phones);mod_us.store_settings();},on_init:function(){var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);}});WebCMS.register_module(UserSettingsPhonesCMSModule);var UserSettingsRetranslatorCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"user_settings_retranslator";},get_row_html:function(){var thtml=jQuery("#user_settings_retranslator_check").html();if(!thtml||typeof gl_retranslator_data!="object")
return"";var html="<tr><td><table width='100%'>";html+="<tr><td width='100%' id='user_settings_retranslator_server_td'></td></tr>";html+="<tr><td align='center' id='user_settings_retranslator_units_td'></td></tr>";html+="</table><td><tr>";return html;},is_row_ok:function(){return true;},bind_row_events:function(){var user=Wialon.get_current_user();var thtml=jQuery("#user_settings_retranslator_check").html();if(!user||!thtml||typeof gl_retranslator_data!="object")
return;gl_retranslator_data.modified=false;var html="<table width='100%'>";html+="<tr><td>"+this.translation.rserver+":<br>&nbsp;&nbsp;&nbsp;&nbsp;<span style='font-size: 7pt'>"+this.translation.limits+"</span></td>";html+="<td><input type='text' id='user_settings_retranslator_server_addr'></td></tr>";html+="</table>";jQuery("#user_settings_retranslator_server_td").html(html);jQuery("#user_settings_retranslator_server_addr").val(gl_retranslator_data.server).attr("title",this.translation.title).Tooltip({showURL:false});html="<table><tr><td colspan='2'><br><hr size='1'></td></tr>";html+="<tr><td>&nbsp;&nbsp;"+this.translation.all_units+":</td><td>&nbsp;&nbsp;"+this.translation.sel_units+":</td></tr>";html+="<tr><td valign='top'><select id='user_settings_retranslator_all_units' multiple='multiple' style='width: 200px; height: 90px;'></select></td>";html+="<td valign='top'><select id='user_settings_retranslator_sel_units' multiple='multiple' style='width: 200px; height: 90px;'></select></td></tr>";html+="<tr><td align='center' valign='center'><br><input type='button' id='user_settings_retranslator_btn_add' style='width: 200px' value='>> "+this.translation.add+"' style='width:100px;'/></td>";html+="<td align='center' valign='center'><br><input type='button' id='user_settings_retranslator_btn_del' style='width: 200px' value='<< "+this.translation.del+"' style='width:100px;'/></td></tr></table>";jQuery("#user_settings_retranslator_units_td").html(html);var all_units_html="";var sel_units_html="";var all_units=Wialon.get_units();for(var i=0;i<all_units.length;i++){var unit_html="<option value='"+all_units[i].get_id()+"'>"+all_units[i].get_name()+"</option>";if(user.check_item_in_id_col(gl_retranslator_data.units,all_units[i].get_id()))
sel_units_html+=unit_html;else
all_units_html+=unit_html;}
jQuery("#user_settings_retranslator_all_units").html(all_units_html);jQuery("#user_settings_retranslator_sel_units").html(sel_units_html);jQuery("#user_settings_retranslator_btn_add").click(function(){UserSettingsRetranslatorCMSModule.move_unit("user_settings_retranslator_all_units","user_settings_retranslator_sel_units")});jQuery("#user_settings_retranslator_btn_del").click(function(){UserSettingsRetranslatorCMSModule.move_unit("user_settings_retranslator_sel_units","user_settings_retranslator_all_units")});},save_row_data:function(){var user=Wialon.get_current_user();var thtml=jQuery("#user_settings_retranslator_check").html();if(!user||!thtml||typeof gl_retranslator_data!="object")
return;var addr=jQuery("#user_settings_retranslator_server_addr").val();if(gl_retranslator_data.server==addr&&!gl_retranslator_data.modified)
return;if(gl_retranslator_data.server!=addr){user.remove_modification("retranslator_set_server",null);user.add_modification("retranslator_set_server",addr,function(){});}
if(gl_retranslator_data.modified){var sel=jQuery("#user_settings_retranslator_sel_units option");var arr=new Array;for(var i=0;i<sel.length;i++)
arr.push(sel[i].value);user.remove_modification("retranslator_set_units",null);user.add_modification("retranslator_set_units",arr.join(","),function(){});}
var mod_us=WebCMS.get_module("user_settings");if(mod_us)
mod_us.store_settings();},get_row_tab_info:function(){return{id:"retranslator",title:this.translation.retranslator};},on_init:function(){var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);},move_unit:function(from,to){jQuery("#"+from+" option:selected").each(function(){jQuery("#"+to).append(this);jQuery(this).attr("selected",false);gl_retranslator_data.modified=true;});}});WebCMS.register_module(UserSettingsRetranslatorCMSModule);var ServerTimeCMSModule=Base.extend({constructor:null,class_error:"",timeout:120,counter:null,last_update_time:0,translation:{},state:false,get_type:function(){return"server_time";},on_init:function(){Wialon.bind_event_handler("wialon_events_poll",0,this.event_callback,this);this.update_control();},update_control:function(){var mod_ust=WebCMS.get_module("user_settings_time");if(!mod_ust)
return;var tm=mod_ust.format_time(Wialon.get_server_time());if(tm.length>8)
tm=tm.substr(11);var tz=mod_ust.get_tz_offset();var s="";if(tz%3600)
s=sprintf("%s&nbsp;(%s%02d:%02d)",tm,tz>=0?"+":"-",tz>=0?tz/3600:-tz/3600,Math.abs(parseInt(tz%3600)/60));else
s=sprintf("%s&nbsp;(%s%02d)",tm,tz>=0?"+":"-",tz>=0?tz/3600:-tz/3600);jQuery("#server_time_target").html(s);this.last_update_time=(new Date()).getTime()/1000;if(this.counter)
clearTimeout(this.counter);this.counter=setTimeout(function(){ServerTimeCMSModule.on_timeout();},this.timeout*1000);if(!this.state&&Wialon.events_poll_interval&&Wialon.get_current_user()!=null){this.state=true;if(this.class_error!="")
jQuery("#server_time_target").toggleClass(this.class_error);else
jQuery("#server_time_target").css({color:""});jQuery("#server_time_error_info").hide();}},event_callback:function(event_name,event_id,event_data,cparam){ServerTimeCMSModule.update_control();},on_timeout:function(){if(!this.state)
return;if(Wialon.events_poll_interval&&(new Date()).getTime()/1000-this.last_update_time<=this.timeout)
return;this.state=false;if(this.class_error!="")
jQuery("#server_time_target").toggleClass(this.class_error);else{jQuery("#server_time_target").css({color:"#ff0000"});this.show_error_info();}},show_error_info:function(){if(!jQuery("#server_time_error_info").size()){var html="<div id='server_time_error_info' class='server_time_info'>"+this.translation.timeout_error+"</div>";jQuery("body").append(html);}
var offset=jQuery("#server_time_target").offset();var h=jQuery("#server_time_target").height();jQuery("#server_time_error_info").css({left:offset.left,top:offset.top+h}).show('fast').fadeTo('fast',0.8);}});WebCMS.register_module(ServerTimeCMSModule);var UserNameCMSModule=Base.extend({constructor:null,get_type:function(){return"user_name";},on_init:function(){var user=Wialon.get_current_user();if(user)
jQuery("#user_name_target").html(user.get_name());}});WebCMS.register_module(UserNameCMSModule);var LogoutBtnCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"logout_btn";},on_init:function(){jQuery("#logout_btn_target").click(function(){Wialon.logout(function(result,error_msg){document.location.href="/index.html";});return false;}).attr("title",this.translation.btn_title).Tooltip({showURL:false});}});WebCMS.register_module(LogoutBtnCMSModule);var LogBtnCMSModule=Base.extend({constructor:null,translation:{},show_img_url:"/log_btn/show.png",hide_img_url:"/log_btn/hide.png",show_state:true,get_type:function(){return"log_btn";},on_init:function(){var user=Wialon.get_current_user();if(user&&user.get_public_property("show_log")!="")
user.set_public_property("show_log","");jQuery("#log_btn_target").click(function(){LogBtnCMSModule.on_click();return false;}).css({cursor:"pointer"});this.on_click(true);},on_click:function(on_init){var mod_log=WebCMS.get_module("log");if(!mod_log)
return;if(on_init==true){var user=Wialon.get_current_user();if(user&&user.get_private_property("show_log")=="1")
this.show_state=0;}
if(this.show_state){mod_log.hide();jQuery("#log_btn_target").attr("src",WebCMS.get_img_url(this.show_img_url)).attr("title",this.translation.show).Tooltip({showURL:false});}else{mod_log.show();jQuery("#log_btn_target").attr("src",WebCMS.get_img_url(this.hide_img_url)).attr("title",this.translation.hide).Tooltip({showURL:false});}
this.show_state=!this.show_state;if(on_init!=true){var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("show_log",this.show_state?"1":"0");mod_us.store_settings();WebCMS.log_action("secwnd","log");}}});WebCMS.register_module(LogBtnCMSModule);var TimeScheduleControlCMSModule=Base.extend({constructor:null,translation:{},cookie:0,shedules:null,get_type:function(){return"time_schedule_control";},on_init:function(){this.shedules=new Object;},bind:function(target_id){var prefix_id="time_schedule_control_"+this.cookie;var schedule_item=new TimeScheduleControlItemCMSModule(target_id,prefix_id,{translation:this.translation});if(typeof this.shedules[target_id]=='undefined'){schedule_item.init();this.shedules[target_id]=schedule_item;this.cookie++;}else{this.shedules[target_id].init();}},set_schedule:function(target_id,schedule){if(typeof schedule=='undefined')
return;if(!(schedule instanceof WialonTimeSchedule))
return;for(var id in this.shedules){var item=this.shedules[id];if(item.target_id==target_id){item.set_schedule(schedule);break;}}},get_schedule:function(target_id){for(var id in this.shedules){var item=this.shedules[id];if(item.target_id==target_id){return item.get_schedule();}}
return null;},is_valid:function(target_id){for(var id in this.shedules){var item=this.shedules[id];if(item.target_id==target_id){return item.is_valid();}}
return false;}});var TimeScheduleControlItemCMSModule=Base.extend({constructor:function(target_id,prefix_id,opts){this.target_id=target_id;this.prefix_id=prefix_id;if(typeof opts.translation!='undefined'){this.translation=opts.translation
this.month_names=this.translation.month_names.split(",");this.day_names=this.translation.day_names.split(",");}},translation:{},target_id:"",prefix_id:"",month_names:null,day_names:null,hour_names:['00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23'],minute_names:[],init:function(){this.minute_names=new Array;for(var i=0;i<60;i++)
this.minute_names.push(i<10?("0"+i):i.toString());jQuery("#"+this.target_id).addClass("time_schedule");var prefix=this.prefix_id;var html="<table class='schedule'>";html+="<tr><th><input type='checkbox' id='"+prefix+"_check_hours_in_day'/>&nbsp;"+this.translation.hours+"</th></tr>";html+="<tr><td><div id='"+prefix+"_div_hours_in_day'><table>";html+="<tr><td><input type='checkbox' id='"+prefix+"_check_interval1'/>&nbsp;"+this.translation.interval1+":</td><td><select id='"+prefix+"_time_from1' /></td><td>:</td><td><select id='"+prefix+"_time_from1m' /></td><td>&nbsp;-&nbsp;</td><td><select id='"+prefix+"_time_to1' /></td><td>:</td><td><select id='"+prefix+"_time_to1m' /></td></tr>";html+="<tr><td><input type='checkbox' id='"+prefix+"_check_interval2'/>&nbsp;"+this.translation.interval2+":</td><td><select id='"+prefix+"_time_from2' /></td><td>:</td><td><select id='"+prefix+"_time_from2m' /></td><td>&nbsp;-&nbsp;</td><td><select id='"+prefix+"_time_to2' /></td><td>:</td><td><select id='"+prefix+"_time_to2m' /></td></tr>";html+="</table></div></td></tr>";html+="<tr><th><input type='checkbox' id='"+prefix+"_check_days_in_week'/>&nbsp;"+this.translation.weeks+"</th></tr>";html+="<tr><td><div id='"+prefix+"_div_days_in_week'><table><tr>";for(var i=0;i<7;i++){html+="<td><span><input type='checkbox' id='"+prefix+"_days_in_week_"+i+"'/>&nbsp;"+this.day_names[i]+"</span></td>";}
html+="</tr></table></div></td></tr>";html+="<tr><th><input type='checkbox' id='"+prefix+"_check_days_in_month'/>&nbsp;"+this.translation.days+"</th></tr>";html+="<tr><td><div id='"+prefix+"_div_days_in_month'><table><tr>";for(var i=0;i<31;i++){html+="<td><span><input type='checkbox' id='"+prefix+"_days_in_month_"+i+"'/>&nbsp;"+(i+1)+"</span></td>";if(i==6||i==13||i==20||i==27)html+="</tr><tr>";}
html+="</tr></table></div></td></tr>";html+="<tr><th><input type='checkbox' id='"+prefix+"_check_months_in_year'/>&nbsp;"+this.translation.months+"</th></tr>";html+="<tr><td><div id='"+prefix+"_div_months_in_year'><table><tr>";for(var i=0;i<12;i++){html+="<td><span><input type='checkbox' id='"+prefix+"_months_in_year_"+i+"'/>&nbsp;"+this.month_names[i]+"</span></td>";if(i==3||i==7||i==11)html+="</tr><tr>";}
html+="</tr></table></div></td></tr>";html+="</table>";jQuery("#"+this.target_id).html(html);html="";for(var i=0;i<this.hour_names.length;i++){html+="<option value='"+i+"'>"+this.hour_names[i]+"</option>";}
jQuery("#"+prefix+"_time_from1").append(html);jQuery("#"+prefix+"_time_to1").append(html);jQuery("#"+prefix+"_time_from2").append(html);jQuery("#"+prefix+"_time_to2").append(html);html="";for(var i=0;i<this.minute_names.length;i++){html+="<option value='"+this.minute_names[i]+"'>"+this.minute_names[i]+"</option>";}
jQuery("#"+prefix+"_time_from1m").append(html);jQuery("#"+prefix+"_time_to1m").append(html);jQuery("#"+prefix+"_time_from2m").append(html);jQuery("#"+prefix+"_time_to2m").append(html);jQuery("#"+prefix+"_time_from1").attr("disabled",true);jQuery("#"+prefix+"_time_to1").attr("disabled",true);jQuery("#"+prefix+"_time_from2").attr("disabled",true);jQuery("#"+prefix+"_time_to2").attr("disabled",true);jQuery("#"+prefix+"_time_from1m").attr("disabled",true);jQuery("#"+prefix+"_time_to1m").attr("disabled",true);jQuery("#"+prefix+"_time_from2m").attr("disabled",true);jQuery("#"+prefix+"_time_to2m").attr("disabled",true);jQuery("#"+prefix+"_div_hours_in_day").hide();jQuery("#"+prefix+"_div_days_in_week").hide();jQuery("#"+prefix+"_div_days_in_month").hide();jQuery("#"+prefix+"_div_months_in_year").hide();jQuery("#"+prefix+"_check_interval1").click(function(){jQuery(this).attr("checked")?jQuery("#"+prefix+"_time_from1").attr("disabled",false):jQuery("#"+prefix+"_time_from1").attr("disabled",true);jQuery(this).attr("checked")?jQuery("#"+prefix+"_time_to1").attr("disabled",false):jQuery("#"+prefix+"_time_to1").attr("disabled",true);jQuery(this).attr("checked")?jQuery("#"+prefix+"_time_from1m").attr("disabled",false):jQuery("#"+prefix+"_time_from1m").attr("disabled",true);jQuery(this).attr("checked")?jQuery("#"+prefix+"_time_to1m").attr("disabled",false):jQuery("#"+prefix+"_time_to1m").attr("disabled",true);});jQuery("#"+prefix+"_check_interval2").click(function(){jQuery(this).attr("checked")?jQuery("#"+prefix+"_time_from2").attr("disabled",false):jQuery("#"+prefix+"_time_from2").attr("disabled",true);jQuery(this).attr("checked")?jQuery("#"+prefix+"_time_to2").attr("disabled",false):jQuery("#"+prefix+"_time_to2").attr("disabled",true);jQuery(this).attr("checked")?jQuery("#"+prefix+"_time_from2m").attr("disabled",false):jQuery("#"+prefix+"_time_from2m").attr("disabled",true);jQuery(this).attr("checked")?jQuery("#"+prefix+"_time_to2m").attr("disabled",false):jQuery("#"+prefix+"_time_to2m").attr("disabled",true);});jQuery("#"+prefix+"_check_hours_in_day").click(function(){jQuery(this).attr("checked")?jQuery("#"+prefix+"_div_hours_in_day").show():jQuery("#"+prefix+"_div_hours_in_day").hide();});jQuery("#"+prefix+"_check_months_in_year").click(function(){jQuery(this).attr("checked")?jQuery("#"+prefix+"_div_months_in_year").show():jQuery("#"+prefix+"_div_months_in_year").hide();});jQuery("#"+prefix+"_check_days_in_month").click(function(){jQuery(this).attr("checked")?jQuery("#"+prefix+"_div_days_in_month").show():jQuery("#"+prefix+"_div_days_in_month").hide();});jQuery("#"+prefix+"_check_days_in_week").click(function(){jQuery(this).attr("checked")?jQuery("#"+prefix+"_div_days_in_week").show():jQuery("#"+prefix+"_div_days_in_week").hide();});},set_schedule:function(schedule){var prefix=this.prefix_id;var time_from1=schedule.get_time_from1();var time_to1=schedule.get_time_to1();var time_from2=schedule.get_time_from2();var time_to2=schedule.get_time_to2();var month_day_mask=schedule.get_month_day_mask();var year_month_mask=schedule.get_year_month_mask();var week_day_mask=schedule.get_week_day_mask();if(time_from1||time_to1||time_from2||time_to2){var f1h=Math.floor(time_from1/60);var t1h=Math.floor(time_to1/60);var f2h=Math.floor(time_from2/60);var t2h=Math.floor(time_to2/60);var f1m=time_from1-f1h*60;var t1m=time_to1-t1h*60;var f2m=time_from2-f2h*60;var t2m=time_to2-t2h*60;if(f1h<10)f1h="0"+f1h;if(t1h<10)t1h="0"+t1h;if(f2h<10)f2h="0"+f2h;if(t2h<10)t2h="0"+t2h;if(f1m<10)f1m="0"+f1m;if(t1m<10)t1m="0"+t1m;if(f2m<10)f2m="0"+f2m;if(t2m<10)t2m="0"+t2m;jQuery("#"+prefix+"_check_hours_in_day").attr("checked",true);jQuery("#"+prefix+"_div_hours_in_day").show();if(time_from1||time_to1){jQuery("#"+prefix+"_check_interval1").attr("checked",true);jQuery("#"+prefix+"_time_from1").attr("disabled",false).val(f1h);jQuery("#"+prefix+"_time_from1m").attr("disabled",false).val(f1m);jQuery("#"+prefix+"_time_to1").attr("disabled",false).val(t1h);jQuery("#"+prefix+"_time_to1m").attr("disabled",false).val(t1m);}
if(time_from2||time_to2){jQuery("#"+prefix+"_check_interval2").attr("checked",true);jQuery("#"+prefix+"_time_from2").attr("disabled",false).val(f2h);jQuery("#"+prefix+"_time_from2m").attr("disabled",false).val(f2m);jQuery("#"+prefix+"_time_to2").attr("disabled",false).val(t2h);jQuery("#"+prefix+"_time_to2m").attr("disabled",false).val(t2m);}}
if(week_day_mask){jQuery("#"+prefix+"_check_days_in_week").attr("checked",true);jQuery("#"+prefix+"_div_days_in_week").show();for(var i=0;i<7;i++){if(week_day_mask&(1<<i))
jQuery("#"+prefix+"_days_in_week_"+i).attr("checked",true);}}
if(month_day_mask){jQuery("#"+prefix+"_check_days_in_month").attr("checked",true);jQuery("#"+prefix+"_div_days_in_month").show();for(var i=0;i<31;i++){if(month_day_mask&(1<<i))
jQuery("#"+prefix+"_days_in_month_"+i).attr("checked",true);}}
if(year_month_mask){jQuery("#"+prefix+"_check_months_in_year").attr("checked",true);jQuery("#"+prefix+"_div_months_in_year").show();for(var i=0;i<12;i++){if(year_month_mask&(1<<i))
jQuery("#"+prefix+"_months_in_year_"+i).attr("checked",true);}}},get_schedule:function(){var time_from1=0;var time_to1=0;var time_from2=0;var time_to2=0;var month_day_mask=0;var year_month_mask=0;var week_day_mask=0;var prefix=this.prefix_id;if(jQuery("#"+prefix+"_check_hours_in_day").attr("checked")){if(jQuery("#"+prefix+"_check_interval1").attr("checked")){time_from1=parseInt(jQuery("#"+prefix+"_time_from1").val())*60+parseInt(jQuery("#"+prefix+"_time_from1m").val());time_to1=parseInt(jQuery("#"+prefix+"_time_to1").val())*60+parseInt(jQuery("#"+prefix+"_time_to1m").val());}
if(jQuery("#"+prefix+"_check_interval2").attr("checked")){time_from2=parseInt(jQuery("#"+prefix+"_time_from2").val())*60+parseInt(jQuery("#"+prefix+"_time_from2m").val());time_to2=parseInt(jQuery("#"+prefix+"_time_to2").val())*60+parseInt(jQuery("#"+prefix+"_time_to2m").val());}}
if(jQuery("#"+prefix+"_check_months_in_year").attr("checked")){jQuery("#"+this.target_id+" input[@id^="+prefix+"_months_in_year_]").each(function(i){if(jQuery(this).attr("checked"))
year_month_mask|=(1<<i);});}
if(jQuery("#"+prefix+"_check_days_in_month").attr("checked")){jQuery("#"+this.target_id+" input[@id^="+prefix+"_days_in_month_]").each(function(i){if(jQuery(this).attr("checked"))
month_day_mask|=(1<<i);});}
if(jQuery("#"+prefix+"_check_days_in_week").attr("checked")){jQuery("#"+this.target_id+" input[@id^="+prefix+"_days_in_week_]").each(function(i){if(jQuery(this).attr("checked"))
week_day_mask|=(1<<i);});}
var state={f1:time_from1,f2:time_from2,t1:time_to1,t2:time_to2,mdm:month_day_mask,ymm:year_month_mask,wdm:week_day_mask}
return new WialonTimeSchedule(state);},is_valid:function(){var prefix=this.prefix_id;var checked=false;if(jQuery("#"+prefix+"_check_hours_in_day").attr("checked")){if(!jQuery("#"+prefix+"_check_interval1").attr("checked")&&!jQuery("#"+prefix+"_check_interval1").attr("checked"))
return false;var time_from1=parseInt(jQuery("#"+prefix+"_time_from1").val())*60+parseInt(jQuery("#"+prefix+"_time_from1m").val());var time_to1=parseInt(jQuery("#"+prefix+"_time_to1").val())*60+parseInt(jQuery("#"+prefix+"_time_to1m").val());var time_from2=parseInt(jQuery("#"+prefix+"_time_from2").val())*60+parseInt(jQuery("#"+prefix+"_time_from2m").val());var time_to2=parseInt(jQuery("#"+prefix+"_time_to2").val())*60+parseInt(jQuery("#"+prefix+"_time_to2m").val());if(jQuery("#"+prefix+"_check_interval1").attr("checked")){if(time_to1<=time_from1)
return false;}
if(jQuery("#"+prefix+"_check_interval2").attr("checked")){if(time_to2<=time_from2)
return false;}}
if(jQuery("#"+prefix+"_check_days_in_week").attr("checked")){jQuery("#"+this.target_id+" input[@id^="+prefix+"_days_in_week_]").each(function(i){if(jQuery(this).attr("checked")){checked=true;return;}});if(!checked)
return false;}
if(jQuery("#"+prefix+"_check_days_in_month").attr("checked")){checked=false;jQuery("#"+this.target_id+" input[@id^="+prefix+"_days_in_month_]").each(function(i){if(jQuery(this).attr("checked")){checked=true;return;}});if(!checked)
return false;}
if(jQuery("#"+prefix+"_check_months_in_year").attr("checked")){checked=false;jQuery("#"+this.target_id+" input[@id^="+prefix+"_months_in_year_]").each(function(i){if(jQuery(this).attr("checked")){checked=true;return;}});if(!checked)
return false;}
return true;}});WebCMS.register_module(TimeScheduleControlCMSModule);var RegScheduleControlCMSModule=Base.extend({constructor:null,translation:{},reg_schedules:null,get_type:function(){return"reg_schedule_control";},on_init:function(){this.reg_schedules=new Object;},bind:function(target_id,def_val){var reg_schedule_item=new RegScheduleControlItemCMSModule(target_id,def_val);if(typeof this.reg_schedules[target_id]!='undefined')
delete this.reg_schedules[target_id];reg_schedule_item.init();this.reg_schedules[target_id]=reg_schedule_item;},get_reg_schedule_by_id:function(id){if(typeof this.reg_schedules[id]=='undefined')
return"";var val="";var type=jQuery("#"+id).attr("stype");if(type=="2"){val=jQuery("#input_interval_"+id).val();if(isNaN(val)||val<=0)
return"";val=val*jQuery("#select_interval_"+id).val();}else
val=jQuery("#input_time_"+id).val();if(val=="")
return"";val=type+" "+val;if(!this.parse_reg_val(val))
return"";else
return val;},parse_reg_val:function(reg){if(!reg.length)
return null;var times=reg.split(" ");if(times.length<2)
return null;var error=false;var exists=false;if(times[0]=="1"){for(i=1;i<times.length;i++){if(times[i]=="")
continue;var hour=times[i].split(":");if(hour.length==1&&!isNaN(hour[0])&&parseInt(hour[0])>=0&&parseInt(hour[0])<=23){exists=true;continue;}
if(!hour.length||isNaN(hour[0])||isNaN(hour[1])||hour[0]<0||hour[0]>23||hour[1]<0||hour[1]>59||hour[0]==""||hour[1]=="")
error=true;exists=true;}}else if(times[0]=="2"){if(times.length>2)
error=true;else if(isNaN(times[1])||times[1]<=0||times[1]<60)
error=true;else
exists=true;}else
error=true;if(!error&&exists){var type=parseInt(times[0]);var value=times[1];for(i=2;i<times.length;i++)
value+=" "+times[i];return[type,value];}
return null;}});var RegScheduleControlItemCMSModule=Base.extend({constructor:function(target_id,def_val){this.id=target_id;this.def_val=def_val;},def_val:"",init:function(){var id=this.id;var rsc=WebCMS.get_module("reg_schedule_control");var res=rsc.parse_reg_val(this.def_val);var sel_type=1;var sel_interval=1;var sel_value="";if(res){sel_type=res[0];sel_value=res[1];if(sel_type==2){sel_value=parseInt(sel_value);if(sel_value<3600){sel_interval=1;sel_value=sel_value/60;}else{sel_interval=2;sel_value=sel_value/3600;}}}
var html="<table class='reg_schedule_control_table'>";if(sel_type==2){html+="<tr><td><input name='reg_shedule_radio_"+id+"' type='radio' stype='2' checked='true' id='interval_"+id+"'/></td>";html+="<td nowrap='nowrap'>"+rsc.translation.by_interval+"</td>";html+="<td><input type='text' id='input_interval_"+id+"' value='"+sel_value+"' style='width:50px;'/></td>";html+="<td align='left'><select id='select_interval_"+id+"'>";if(sel_interval==1)
html+="<option value='60' selected>"+rsc.translation.minutes+"</option>";else
html+="<option value='60'>"+rsc.translation.minutes+"</option>";if(sel_interval==2)
html+="<option value='3600' selected>"+rsc.translation.hours+"</option>";else
html+="<option value='3600'>"+rsc.translation.hours+"</option>";html+="</select></td></tr>";html+="<tr><td><input name='reg_shedule_radio_"+id+"' type='radio' stype='1' id='time_"+id+"'></td>";html+="<td>"+rsc.translation.in_times+"</td>";html+="<td colspan='2'><input type='text' id='input_time_"+id+"' style='width:95%;' disabled/></td></tr>";html+="</table>";}else{html+="<tr><td><input name='reg_shedule_radio_"+id+"' type='radio' stype='2' id='interval_"+id+"'/></td>";html+="<td nowrap='nowrap'>"+rsc.translation.by_interval+"</td>";html+="<td><input type='text' disabled id='input_interval_"+id+"' style='width:50px;'/></td>";html+="<td align='left'><select id='select_interval_"+id+"' disabled>";html+="<option value='60'>"+rsc.translation.minutes+"</option>";html+="<option value='3600'>"+rsc.translation.hours+"</option>";html+="</select></td></tr>";html+="<tr><td><input name='reg_shedule_radio_"+id+"' type='radio' stype='1' checked='true' id='time_"+id+"'></td>";html+="<td>"+rsc.translation.in_times+"</td>";html+="<td colspan='2'><input type='text' id='input_time_"+id+"' value='"+sel_value+"' style='width:95%;'/></td></tr>";html+="</table>";}
jQuery("#"+id).html(html);jQuery("#"+id).attr("stype",sel_type);jQuery("#input_time_"+id).attr("title",rsc.translation.tip_times).Tooltip({showURL:false});jQuery("[name='reg_shedule_radio_"+id+"']").each(function(){jQuery(this).unbind("click");jQuery(this).bind("click",function(){var id=jQuery(this).attr("name").substr(18);jQuery("#"+id).attr("stype",jQuery(this).attr("stype"));if(jQuery(this).attr("stype")=="2"){jQuery("#input_interval_"+id).attr("disabled","");jQuery("#select_interval_"+id).attr("disabled","");jQuery("#input_time_"+id).attr("disabled","true");}else{jQuery("#input_interval_"+id).attr("disabled","true");jQuery("#select_interval_"+id).attr("disabled","true");jQuery("#input_time_"+id).attr("disabled","");}});});}});WebCMS.register_module(RegScheduleControlCMSModule);var FoldBarCMSModule=Base.extend({constructor:null,translation:{},show_img_url:"/foldbar/show.png",menu_items:[],target_id:"",panel_id:"",caption_gradiend_clr1:"000000",caption_gradiend_clr2:"FFFFFF",corner:0,groups:null,icons:null,close_flag:false,menu_show_timeout:0,on_switch:null,on_resize:null,on_show:null,get_type:function(){return"foldbar";},on_init:function(){},load:function(target_id,opts){if(typeof opts.on_switch!='undefined')
this.on_switch=opts.on_switch;if(typeof opts.on_resize!='undefined')
this.on_resize=opts.on_resize;if(typeof opts.on_show!='undefined')
this.on_show=opts.on_show;if(typeof opts.caption_gradiend_clr1!='undefined')
this.caption_gradiend_clr1=opts.caption_gradiend_clr1;if(typeof opts.caption_gradiend_clr2!='undefined')
this.caption_gradiend_clr2=opts.caption_gradiend_clr2;if(typeof opts.groups!='undefined')
this.groups=opts.groups;if(typeof opts.icons!='undefined')
this.icons=opts.icons;if(typeof opts.corner!='undefined')
this.corner=opts.corner;this.target_id=target_id;var html="<table id='"+target_id+"_foldbar_table' class='foldbar_table' align='center' width='100%' height='100%' border='0px' cellpadding='0' cellspaceing='0'>";html+="<tr><td class='caption'><div id='"+target_id+"_foldbar_caption_link_div' class='caption_div'><table class='foldbar_table_caption'><tr>";if(this.icons)
html+="<td width='30px'><div class='caption_icon'><img id='"+target_id+"_foldbar_caption_link_img' align='top' border='0' /></div></td>";html+="<td><div id='"+target_id+"_foldbar_caption_link' class='caption_text'></div></td>";html+="<td width='35px'><div class='caption_img'><img src='"+WebCMS.get_img_url(this.show_img_url)+"' align='top' border='0' /></div></td></tr></table></div></td></tr>";html+="<tr><td width='100%' height='100%' align='center' valign='top'><center><div id='"+target_id+"_foldbar_content' class='panel_parent' style='overflow: auto; padding: 0px; margin: 0px; text-align: left;'></div></center></td></tr></table>";jQuery("#"+target_id).prepend(html);html="<div class='foldbar_menu' id='"+target_id+"_foldbar_menu'>";if(!this.groups)
html+="<ul id='"+target_id+"_foldbar_menu_ul'></ul>";html+="</div>";jQuery("body").append(html);var headers=jQuery("ft",jQuery("#"+target_id));var panels=jQuery("#"+target_id+" div[@id^=foldbar_]");var menu_prefix=target_id+"_foldbar_menu_item_";var panel_id="";var menu_items=this.menu_items;jQuery(panels).each(function(i){jQuery(this).css({display:'none'});if(i==0)
panel_id=jQuery(this).attr("id");menu_items.push({panel_id:jQuery(this).attr("id"),menu_id:menu_prefix+jQuery(this).attr("id").substring(8),caption:jQuery(this).attr("caption")});jQuery("#"+target_id+"_foldbar_content").append(jQuery(this));});if(!this.groups){for(var i=0;i<menu_items.length;i++){var mi=menu_items[i];var html="<li id='"+mi.menu_id+"'>";if(this.icons&&typeof this.icons[mi.panel_id]!='undefined')
html+="<img src='"+WebCMS.get_img_url(this.icons[mi.panel_id])+"' border='0' align='absmiddle' />&nbsp;";html+=mi.caption+"</li>";jQuery("#"+target_id+"_foldbar_menu_ul").append(html);jQuery("#"+mi.menu_id).bind("click",mi,function(e){FoldBarCMSModule.on_menu_click(e.data.panel_id);return false;});}
jQuery("#"+target_id+"_foldbar_menu_ul > li").each(function(){jQuery(this).hover(function(){jQuery(this).addClass("hover");},function(){jQuery(this).removeClass("hover");});});}else{var html="<table width='100%'><tr>";for(var i=0;i<this.groups.length;i++){var group=this.groups[i];html+="<td valign='top'><ul id='"+target_id+"_foldbar_menu_ul_"+i+"'>";for(var j=0;j<group.length;j++){for(var k=0;k<menu_items.length;k++){var mi=menu_items[k];if(group[j]==mi.panel_id){html+="<li id='"+mi.menu_id+"'>";if(this.icons&&typeof this.icons[mi.panel_id]!='undefined')
html+="<img src='"+WebCMS.get_img_url(this.icons[mi.panel_id])+"' border='0' align='absmiddle' />&nbsp;";html+=mi.caption+"</li>";break;}}}
html+="</ul></td>";if(i<this.groups.length-1)
html+="<td class='separator'>&nbsp;</td>";}
html+="</tr></table>";jQuery("#"+target_id+"_foldbar_menu").append(html);for(var i=0;i<this.groups.length;i++){var group=this.groups[i];for(var j=0;j<group.length;j++){for(var k=0;k<menu_items.length;k++){var mi=menu_items[k];if(group[j]==mi.panel_id){jQuery("#"+mi.menu_id).bind("click",mi,function(e){FoldBarCMSModule.on_menu_click(e.data.panel_id);return false;});break;}}}}
for(var i=0;i<this.groups.length;i++){jQuery("#"+target_id+"_foldbar_menu_ul_"+i+" > li").each(function(){jQuery(this).hover(function(){jQuery(this).addClass("hover");},function(){jQuery(this).removeClass("hover");});});}}
function is_parent(el){while(el&&el[0]!=null){if(el.hasClass("foldbar_menu"))
return true;el=el.parent();}
return false;}
function menu_move(e){if(!is_parent(jQuery(e.target))){FoldBarCMSModule.close_flag=true;FoldBarCMSModule.close_menu_with_delay(500);if(FoldBarCMSModule.menu_show_timeout)
clearTimeout(FoldBarCMSModule.menu_show_timeout);FoldBarCMSModule.menu_show_timeout=0;}else
FoldBarCMSModule.close_flag=false;}
jQuery("#"+target_id+"_foldbar_caption_link_div").hover(function(){if(FoldBarCMSModule.menu_show_timeout)
clearTimeout(FoldBarCMSModule.menu_show_timeout);FoldBarCMSModule.menu_show_timeout=setTimeout("FoldBarCMSModule.show_menu()",500);},function(){if(jQuery("#"+target_id+"_foldbar_menu").css("display")=="block"){FoldBarCMSModule.close_flag=true;FoldBarCMSModule.close_menu_with_delay(500);}
if(FoldBarCMSModule.menu_show_timeout)
clearTimeout(FoldBarCMSModule.menu_show_timeout);FoldBarCMSModule.menu_show_timeout=0;}).click(function(){if(jQuery("#"+target_id+"_foldbar_menu").css("display")!="block"){jQuery("#"+target_id+"_foldbar_menu").slideToggle("fast");jQuery(this).fadeTo("fast",0.5);}});jQuery("#"+target_id+"_foldbar_menu").hover(function(){jQuery(document).unbind("mousemove",menu_move);jQuery(document).bind("mousemove",menu_move);},function(){});jQuery("#"+target_id).resize(function(){FoldBarCMSModule.resize();});if(this.corner>0)
jQuery("#"+target_id+"_foldbar_caption_link_div").corner(this.corner+"px tl tr bl br");var w=jQuery("#"+target_id).width()-5;var h=jQuery("#"+target_id).height()-jQuery("#"+target_id+"_foldbar_caption_link_div").height()-5;jQuery("#"+target_id+"_foldbar_content").css({width:w+"px",height:h+"px",overflowX:"hidden"});jQuery("#"+FoldBarCMSModule.target_id+"_foldbar_menu").css({left:jQuery("#"+FoldBarCMSModule.target_id+"_foldbar_caption_link_div").offset().left,top:jQuery("#"+FoldBarCMSModule.target_id+"_foldbar_caption_link_div").offset().top+jQuery("#"+FoldBarCMSModule.target_id+"_foldbar_caption_link_div").height()});jQuery("#"+FoldBarCMSModule.target_id+"_foldbar_menu").css("width","600px");this.show_panel(panel_id);},show_menu:function(){FoldBarCMSModule.menu_show_timeout=0;if(jQuery("#"+FoldBarCMSModule.target_id+"_foldbar_menu").css("display")!="block"){jQuery("#"+FoldBarCMSModule.target_id+"_foldbar_menu").css({left:jQuery("#"+FoldBarCMSModule.target_id+"_foldbar_caption_link_div").offset().left,top:jQuery("#"+FoldBarCMSModule.target_id+"_foldbar_caption_link_div").offset().top+jQuery("#"+FoldBarCMSModule.target_id+"_foldbar_caption_link_div").height()});jQuery("#"+FoldBarCMSModule.target_id+"_foldbar_menu").slideToggle("fast");jQuery(this).fadeTo("fast",0.5);}else{FoldBarCMSModule.close_flag=false;}},close_menu:function(){if(jQuery("#"+this.target_id+"_foldbar_menu").css("display")=="block"){jQuery(document).unbind("mousemove",FoldBarCMSModule.menu_move);jQuery("#"+this.target_id+"_foldbar_menu").hide();jQuery("#"+this.target_id+"_foldbar_caption_link_div").fadeTo("fast",1.0);}},close_menu_with_delay:function(delay){var ms=500;if(typeof delay!='undefined')
ms=delay;setTimeout(function(){if(FoldBarCMSModule.close_flag)
FoldBarCMSModule.close_menu();},ms);},on_menu_click:function(panel_id){this.close_menu();this.show_panel(panel_id);},show_panel:function(panel_id){if(this.panel_id==panel_id)
return;var w=jQuery("#"+this.target_id).width()-5;var h=jQuery("#"+this.target_id).height()-jQuery("#"+this.target_id+"_foldbar_caption_link_div").height()-5;var cont=true;if(this.on_switch)
cont=this.on_switch(this.panel_id,panel_id,w,h);if(!cont)
return;jQuery("#"+this.panel_id).hide();this.panel_id=panel_id;if(this.icons&&typeof this.icons[this.panel_id]!='undefined')
jQuery("#"+this.target_id+"_foldbar_caption_link_img").attr("src",WebCMS.get_img_url(this.icons[this.panel_id]));jQuery("#"+this.target_id+"_foldbar_caption_link").html(jQuery("#"+this.panel_id).attr("caption"));jQuery("#"+this.panel_id).show();if(this.on_show){var ctrl=this;setTimeout(function(){ctrl.on_show(ctrl.panel_id,w,h);},500);}},resize:function(){if(this.on_resize&&jQuery("#"+this.target_id).css("display")!="none"){var w=jQuery("#"+this.target_id).width()-5;var h=jQuery("#"+this.target_id).height()-jQuery("#"+this.target_id+"_foldbar_caption_link_div").height()-5;jQuery("#"+this.target_id+"_foldbar_content").css({width:w+"px",height:h+"px"});this.on_resize(this.panel_id,w,h);}
Wialon.fire_event("show_panel",current_panel);}});WebCMS.register_module(FoldBarCMSModule);var ItemsCreateBtnCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"items_create_btn";},on_init:function(){var curr_user=Wialon.get_current_user();var disabled=!curr_user.can_create_item();jQuery("#users_create_target").click(function(){ItemsCreateBtnCMSModule.create_item("user");return false;}).attr("title",this.translation.title_user).Tooltip({showURL:false}).attr("disabled",disabled);jQuery("#devices_create_target").click(function(){ItemsCreateBtnCMSModule.create_item("avl_unit");return false;}).attr("title",this.translation.title_device).Tooltip({showURL:false}).attr("disabled",disabled);jQuery("#unit_groups_create_target").click(function(){ItemsCreateBtnCMSModule.create_item("avl_unit_group");return false;}).attr("title",this.translation.title_unit_group).Tooltip({showURL:false}).attr("disabled",disabled);if(this.show_search_ctrl){var mod=WebCMS.get_module("search_control");if(!mod)
return;mod.attach_to_module(WebCMS.get_module("users_list"),"users_create_target");mod.attach_to_module(WebCMS.get_module("devices_list"),"devices_create_target");mod.attach_to_module(WebCMS.get_module("unit_groups_list"),"unit_groups_create_target");}},create_item:function(item_type){var mod_idlg=WebCMS.get_module("items_dlg");if(mod_idlg)
mod_idlg.show(item_type,null);}});WebCMS.register_module(ItemsCreateBtnCMSModule);var HelpControlCMSModule=Base.extend({constructor:null,controls:[],next_id:0,get_type:function(){return"help_control";},translation:{},on_init:function(){},create:function(target,title,html,zindex){var target_id="";if(typeof target=='object')
target_id=jQuery(target).attr("id");else if(typeof target=='string')
target_id=target;if(target_id=="")
return null;this.next_id++;var target_new_id=target_id+"_"+this.next_id;var hc=new HelpControlItem(target_id,target_new_id,title,html,zindex);this.controls.push(hc);return hc;}});var HelpControlItem=Base.extend({constructor:function(target_id,target_new_id,title,content,zindex){this.target_id=target_id;this.target_child_id=target_new_id;var html="<div class='help_window' id='"+this.target_child_id+"_help_window_id'";if(zindex)
html+=" style='z-index:"+zindex+"'>";else
html+=">";html+="<table width='100%'>";html+="<thead><tr valign='top'><td><table width='100%' class='title_table'><tr><td align='left' width='100%'><div id='"+this.target_child_id+"_title_id'>"+title+"</div></td>";html+="<td><a id='"+this.target_child_id+"_close_id' href=''><img src='"+this.help_control_img_url+"' border='0px'/></a></td></tr></table></td></tr></thead>";html+="<tbody id='"+this.target_child_id+"_content_id'><tr valign='top'><td colspan='2' class='help_window_content'>"+content+"</td></tr>";html+="</tbody></table></div>";jQuery("body").append(html);jQuery("#"+this.target_child_id+"_help_window_id").bind("resize",this,function(evt){evt.data.resize();}).trigger("resize");jQuery("#"+this.target_child_id+"_help_window_id").fadeTo('fast',0.8,function(){jQuery(this).hide();});jQuery("#"+target_new_id+"_close_id").click(function(evt){jQuery("#"+target_new_id+"_content_id").toggle();return false;});},target_id:"",target_child_id:"",help_control_img_url:"/help_control/help.png",resize:function(){if(this.target_child_id=="")
return;var t=10;var l=jQuery(window).width()-jQuery("#"+this.target_child_id+"_help_window_id").width()-20;jQuery("#"+this.target_child_id+"_help_window_id").css({top:t,left:l});jQuery("#"+this.target_child_id+"_help_window_id > .jrCorner").remove();jQuery("#"+this.target_child_id+"_help_window_id").corner("5px");},show:function(show_help){if(this.target_child_id=="")
return;if(show_help){jQuery("#"+this.target_child_id+"_help_window_id").show();this.resize();}else{jQuery("#"+this.target_child_id+"_help_window_id").hide();if(jQuery.browser.msie)
jQuery(window).resize();}}});WebCMS.register_module(HelpControlCMSModule);var DimensionsCMSModule=Base.extend({constructor:null,map:null,help_mod:null,dimensions_layer:null,dimensions_control:null,map:null,enter_name:false,points:new Array,curr_point_id:null,lonlat:null,img_dimensions_help_url:"/dimensions/help.png",total_d:0,modify_index:-1,translation:{},default_style:{fillColor:"#FFFFFF",fillOpacity:0.4,hoverFillColor:"#FFFFFF",hoverFillOpacity:0.8,strokeColor:"#FF0000",strokeOpacity:0.9,strokeWidth:5,strokeLinecap:"round",hoverStrokeColor:"#FFFFFF",hoverStrokeOpacity:0.5,hoverStrokeWidth:0.2,pointRadius:3,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted"},text_style:{fillColor:"#0000FF",fillOpacity:1,hoverFillColor:"#0000FF",strokeColor:"#FFFFFF",strokeWidth:0,fontSize:11},get_type:function(){return"dimensions";},attach_to_map:function(map){this.map=map;},get_map:function(){return this.map;},get_layer:function(){return this.dimensions_layer;},get_control:function(){return this.dimensions_control;},attach_to_map:function(map){this.map=map;},create_dimensions_layer:function(){if(this.map){this.dimensions_layer=new OpenLayers.Layer.Vector("Dimensions layer");this.map.addLayer(this.dimensions_layer);return true;}
return false;},destroy_dimensions_layer:function(){if(this.dimensions_layer){this.map.removeLayer(this.dimensions_layer);this.dimensions_layer=null;}},create_dimensions_control:function(){this.destroy_dimensions_control();if(this.dimensions_layer){var dimensions_style=OpenLayers.Util.extend({},this.default_style);var dimensions_last_style=OpenLayers.Util.extend({},this.default_style);var text_style=OpenLayers.Util.extend({},this.text_style);dimensions_last_style.fillColor="#FFFFFF";dimensions_last_style.fillOpacity=0.9;dimensions_last_style.hoverFillColor="#FFFFFF";dimensions_last_style.pointRadius=5;dimensions_last_style.strokeColor="#0000FF";dimensions_last_style.strokeWidth=2;var options={handlerOptions:{style:dimensions_style,lastStyle:dimensions_last_style,textStyle:text_style}};this.dimensions_control=new OpenLayers.Control.DrawFeature(this.dimensions_layer,OpenLayers.Handler.PathEx,options);this.get_control().handler.event_disp=this;if(this.dimensions_control){this.map.addControl(this.dimensions_control);this.dimensions_control.activate();}
return true;}
return false;},destroy_dimensions_control:function(){if(this.dimensions_control){this.dimensions_control.deactivate();this.map.removeControl(this.dimensions_control);this.map.div.style.cursor="default";this.dimensions_control=null;}},init_control:function(){if(!this.map)
return false;if(!this.dimensions_layer)
this.create_dimensions_layer();if(!this.dimensions_control)
this.create_dimensions_control();if(this.help_mod)
this.help_mod.show(true);if(this.map)
this.map.events.register('zoomend',this,this.redraw);return true;},reset:function(){this.cancel();this.init_control();},cancel:function(){if(this.dimensions_control)
this.destroy_dimensions_control();if(this.dimensions_layer)
this.destroy_dimensions_layer();if(this.map){this.map.updateSize();this.map.events.unregister('zoomend',this,this.redraw);}
this.total_d=0;if(this.help_mod)
this.help_mod.show(false);},calc_distance:function(){if(this.map&&this.dimensions_control){var points=this.dimensions_control.handler.getPoints();if(!points)
return;this.total_d=0;var lonlat1=null;var lonlat2=null;for(var i=0;i<points.length;i++){lonlat2=new OpenLayers.LonLat(points[i].x,points[i].y);if(i==0){lonlat1=lonlat2;continue;}
if(lonlat1&&lonlat2){if(typeof use_us_metrics!="undefined"&&use_us_metrics){var dm=this.calculate_distance(lonlat1,lonlat2);var dk=dm/1000*0.621;var text=(dk>=1)?sprintf(this.translation.distance_mi,dk):sprintf(this.translation.distance_ft,dm*3.280);if(i==points.length-1)
this.dimensions_control.handler.setPointTextWithoutRedraw(i,text);if(this.modify_index!=-1)
this.dimensions_control.handler.setPointTextWithoutRedraw(i,text);this.total_d+=dm;}else{var dm=this.calculate_distance(lonlat1,lonlat2);var dk=dm/1000;var text=(dk>=1)?sprintf(this.translation.distance_km,dk):sprintf(this.translation.distance_m,dm);if(i==points.length-1)
this.dimensions_control.handler.setPointTextWithoutRedraw(i,text);if(this.modify_index!=-1)
this.dimensions_control.handler.setPointTextWithoutRedraw(i,text);this.total_d+=dm;}}
lonlat1=lonlat2;}
this.dimensions_control.handler.drawFeature();this.show_distance_info();}},calculate_distance:function(lonlat1,lonlat2){if(!lonlat1||!lonlat2||!this.map)
return 0;var p1=lonlat1.clone();var p2=lonlat2.clone();p1.transform(this.map.getProjectionObject(),this.map.displayProjection);p2.transform(this.map.getProjectionObject(),this.map.displayProjection);var d=OpenLayers.Util.distVincenty(p1,p2);d=Math.round(d*100)/100*1000;return d;},show_distance_info:function(d){if(typeof use_us_metrics!="undefined"&&use_us_metrics){var new_d=0;if(typeof d!='undefined')
new_d=d;var total_dk=this.total_d/1000*0.621;var txt_total_dk=(total_dk>=1)?sprintf(this.translation.distance_mi,total_dk):sprintf(this.translation.distance_ft,this.total_d*3.280);var new_dk=new_d/1000*0.621;var txt_new_dk=(new_dk>=1)?sprintf(this.translation.distance_mi,new_dk):sprintf(this.translation.distance_ft,new_d*3.280);var all_d=this.total_d+new_d;var all_dk=all_d/1000*0.621;var txt_all_dk=(all_dk>=1)?sprintf(this.translation.distance_mi,all_dk):sprintf(this.translation.distance_ft,all_d*3.280);jQuery("#dimensions_distance_id").html(sprintf("%s = (%s + %s)",txt_all_dk,txt_total_dk,txt_new_dk));}else{var new_d=0;if(typeof d!='undefined')
new_d=d;var total_dk=this.total_d/1000;var txt_total_dk=(total_dk>=1)?sprintf(this.translation.distance_km,total_dk):sprintf(this.translation.distance_m,this.total_d);var new_dk=new_d/1000;var txt_new_dk=(new_dk>=1)?sprintf(this.translation.distance_km,new_dk):sprintf(this.translation.distance_m,new_d);var all_d=this.total_d+new_d;var all_dk=all_d/1000;var txt_all_dk=(all_dk>=1)?sprintf(this.translation.distance_km,all_dk):sprintf(this.translation.distance_m,all_d);jQuery("#dimensions_distance_id").html(sprintf("%s = (%s + %s)",txt_all_dk,txt_total_dk,txt_new_dk));}},redraw:function(evt){if(DimensionsCMSModule.get_control().handler){if(typeof DimensionsCMSModule.get_control().handler.fullRepaint!="undefined")
DimensionsCMSModule.get_control().handler.fullRepaint=true;DimensionsCMSModule.get_control().handler.drawFeature();}},on_terminate:function(){},on_init:function(){if(!this.map||!this.map.div)
return;var hc=WebCMS.get_module("help_control");if(!hc)
return;var html="<table width='100%' cellspacing='1px'>";html+="<tr valign='top'><td colspan='2' align='justify'><hr size='1px'></td></tr>";html+="<tr valign='top'><td colspan='2' align='justify'>"+this.translation.content+"</td></tr>";html+="<tr valign='top'><td colspan='2' align='center'><hr size='1px'></td></tr>";html+="<tr valign='top'><td align='left'>"+this.translation.distance+":</td><td width='230px' align='left' id='dimensions_distance_id' style='color: #FF0000;'></td></tr>";html+="<tr valign='top'><td colspan='2' align='justify'><hr size='1px'></td></tr>";html+="<tr valign='top'><td colspan='2' align='center'><input id='dimensions_reset_id' type='button' value='"+this.translation.reset+"'/>&nbsp;<input id='dimensions_cancel_id' type='button' value='"+this.translation.cancel+"'/></td></tr>";html+="</table>";this.help_mod=hc.create(this.map.div,this.translation.title,html);if(!this.help_mod)
return;jQuery("#dimensions_reset_id").click(function(){DimensionsCMSModule.reset();});jQuery("#dimensions_cancel_id").click(function(){DimensionsCMSModule.cancel();});},on_point_insert:function(pointIndex){this.modify_index=pointIndex;if(this.map&&this.dimensions_control&&this.dimensions_control.handler)
this.dimensions_control.handler.fullRepaint=true;this.calc_distance();this.modify_index=-1;},on_point_add:function(){this.calc_distance();this.modify_index=-1;},on_point_modified:function(pointIndex){this.modify_index=pointIndex;if(this.map&&this.dimensions_control&&this.dimensions_control.handler)
this.dimensions_control.handler.fullRepaint=true;this.calc_distance();this.modify_index=-1;},on_point_remove:function(pointIndex){if(pointIndex==0&&this.map&&this.dimensions_control&&this.dimensions_control.handler){if(this.dimensions_control.handler.line&&this.dimensions_control.handler.line.geometry.components.length)
this.dimensions_control.handler.setPointTextWithoutRedraw(pointIndex,"");}
if(pointIndex!=0&&this.map&&this.dimensions_control&&this.dimensions_control.handler){this.modify_index=pointIndex;this.dimensions_control.handler.fullRepaint=true;}
this.calc_distance();this.modify_index=-1;},on_mouse_move:function(xy,lonlat){var new_d=0;if(this.map&&this.dimensions_control&&lonlat){var points=this.dimensions_control.handler.getPoints();if(points&&points.length){var lonlat1=lonlat.clone();var lonlat2=new OpenLayers.LonLat(points[points.length-1].x,points[points.length-1].y);var new_d=this.calculate_distance(lonlat2,lonlat1);}}
this.show_distance_info(new_d);},slider_calc_len:function(index,vertices,slider){var len=0;var points=this.dimensions_control.handler.getPoints();if(index>-1){for(var i=1;i<=index;++i){var pt1=new OpenLayers.LonLat(points[i-1].x,points[i-1].y);var pt2=new OpenLayers.LonLat(points[i].x,points[i].y);len=len+this.calculate_distance(pt1,pt2);}
var sld=new OpenLayers.LonLat(slider.geometry.x,slider.geometry.y);var pt=new OpenLayers.LonLat(points[index].x,points[index].y);len=len+this.calculate_distance(sld,pt);var text;var dm=len;if(typeof use_us_metrics!="undefined"&&use_us_metrics){var dk=dm/1000*0.621;text=(dk>=1)?sprintf(this.translation.distance_mi,dk):sprintf(this.translation.distance_ft,dm*3.280);}else{var dk=dm/1000;text=(dk>=1)?sprintf(this.translation.distance_km,dk):sprintf(this.translation.distance_m,dm);}
this.dimensions_control.handler.setSliderText(text);}}});WebCMS.register_module(DimensionsCMSModule);var mod_mm=WebCMS.get_module("monitoring_map");if(mod_mm)
mod_mm.register_map_layer(DimensionsCMSModule);var AreaCMSModule=Base.extend({constructor:null,map:null,help_mod:null,area_layer:null,area_control:null,map:null,points:new Array,curr_point_id:null,lonlat:null,img_area_help_url:"/area/help.png",total_length:0,total_area:0,modify_index:-1,coeff:null,translation:{},default_style:{fillColor:"#FFFFFF",fillOpacity:0.4,hoverFillColor:"#FFFFFF",hoverFillOpacity:0.8,strokeColor:"#FF0000",strokeOpacity:0.9,strokeWidth:5,strokeLinecap:"round",hoverStrokeColor:"#FFFFFF",hoverStrokeOpacity:0.5,hoverStrokeWidth:0.2,pointRadius:3,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted"},get_type:function(){return"area";},attach_to_map:function(map){this.map=map;},get_map:function(){return this.map;},get_layer:function(){return this.area_layer;},get_control:function(){return this.area_control;},attach_to_map:function(map){this.map=map;},create_area_layer:function(){if(this.map){this.area_layer=new OpenLayers.Layer.Vector("Area layer");this.map.addLayer(this.area_layer);return true;}
return false;},destroy_area_layer:function(){if(this.area_layer){this.map.removeLayer(this.area_layer);this.area_layer=null;}},create_area_control:function(){this.destroy_area_control();if(this.area_layer){var area_style=OpenLayers.Util.extend({},this.default_style);var area_last_style=OpenLayers.Util.extend({},this.default_style);area_last_style.fillColor="#FFFFFF";area_last_style.fillOpacity=0.9;area_last_style.hoverFillColor="#FFFFFF";area_last_style.pointRadius=5;area_last_style.strokeColor="#0000FF";area_last_style.strokeWidth=2;var options={handlerOptions:{style:area_style,lastStyle:area_last_style,textStyle:null}};this.area_control=new OpenLayers.Control.DrawFeature(this.area_layer,OpenLayers.Handler.PolygonEx,options);this.get_control().handler.event_disp=this;if(this.area_control){this.map.addControl(this.area_control);this.area_control.activate();}
return true;}
return false;},destroy_area_control:function(){if(this.area_control){this.area_control.deactivate();this.map.removeControl(this.area_control);this.map.div.style.cursor="default";this.area_control=null;}},init_control:function(){if(!this.map)
return false;if(!this.area_layer)
this.create_area_layer();if(!this.area_control)
this.create_area_control();if(this.help_mod)
this.help_mod.show(true);if(this.map)
this.map.events.register('zoomend',this,this.redraw);return true;},reset:function(){this.cancel();this.init_control();},cancel:function(){if(this.area_control)
this.destroy_area_control();if(this.area_layer)
this.destroy_area_layer();if(this.map){this.map.updateSize();this.map.events.unregister('zoomend',this,this.redraw);}
this.total_length=0;this.total_area=0;this.show_info();if(this.help_mod)
this.help_mod.show(false);},calc_area:function(){if(this.map&&this.area_control&&this.area_control.handler&&this.area_control.handler.polygon){this.total_area=this.area_control.handler.polygon.geometry.getArea();this.total_length=this.area_control.handler.polygon.geometry.getLength();this.show_info();}},show_info:function(){var center=this.map.getCenter().clone();center.transform(this.map.getProjectionObject(),this.map.displayProjection);var k=1.0;if(center.lat>-90&&center.lat<90)
k=this.coeff[Math.abs(Math.round(center.lat))];var len=this.total_length/k;if(typeof use_us_metrics!="undefined"&&use_us_metrics)
jQuery("#area_length_id").html(sprintf(this.translation.length_fmt_mi,(len/1000.0)*0.621,len*3.280));else
jQuery("#area_length_id").html(sprintf(this.translation.length_fmt,(len/1000.0),len));var area=this.total_area;if(area<0)
area=area*-1.0;area=area/(k*k);if(typeof use_us_metrics!="undefined"&&use_us_metrics)
jQuery("#area_area_id").html(sprintf(this.translation.area_fmt_mi,(area/1000000.0)*0.621*0.621,area*3.280*3.280));else
jQuery("#area_area_id").html(sprintf(this.translation.area_fmt,(area/1000000.0),area));},redraw:function(evt){if(AreaCMSModule.get_control().handler){if(typeof AreaCMSModule.get_control().handler.fullRepaint!="undefined")
AreaCMSModule.get_control().handler.fullRepaint=true;AreaCMSModule.get_control().handler.drawFeature();}},on_terminate:function(){},on_init:function(){if(!this.map||!this.map.div)
return;this.coeff=[0.994619,0.995992,0.996667,0.995533,1.001228,1.002125,1.006136,1.000555,1.002137,1.006779,1.009492,1.014286,1.024107,1.020076,1.022775,1.030754,1.040894,1.037553,1.044561,1.052370,1.059273,1.071442,1.070705,1.078455,1.091350,1.102193,1.110420,1.122186,1.127641,1.134145,1.154964,1.162891,1.169788,1.192376,1.204152,1.217187,1.234525,1.248846,1.266263,1.280590,1.297454,1.320742,1.337841,1.357593,1.382720,1.407516,1.429218,1.460415,1.483304,1.519167,1.551600,1.581454,1.624046,1.655527,1.703692,1.742173,1.782041,1.829374,1.872315,1.940956,1.996537,2.063585,2.129217,2.193146,2.276169,2.352063,2.449338,2.560503,2.669503,2.791219,2.902039,3.050515,3.215982,3.406356,3.628520,3.851926,4.127395,4.450237,4.808884,5.235419,5.749330,6.341281,7.168006,8.215152,9.570123,11.402398,14.292265,18.967756,28.619620,56.853094];var hc=WebCMS.get_module("help_control");if(!hc)
return;var html="<table width='100%' cellspacing='1px'>";html+="<tr valign='top'><td colspan='2' align='justify'><hr size='1px'></td></tr>";html+="<tr valign='top'><td colspan='2' align='justify'>"+this.translation.content+"</td></tr>";html+="<tr valign='top'><td colspan='2' align='center'><hr size='1px'></td></tr>";html+="<tr valign='top'><td align='left'>"+this.translation.perimeter+":</td><td width='230px' align='left' id='area_length_id' style='color: #FF0000;'></td></tr>";html+="<tr valign='top'><td align='left'>"+this.translation.area+":</td><td width='230px' align='left' id='area_area_id' style='color: #FF0000;'></td></tr>";html+="<tr valign='top'><td colspan='2' align='justify'><hr size='1px'></td></tr>";html+="<tr valign='top'><td colspan='2' align='center'><input id='area_reset_id' type='button' value='"+this.translation.reset+"'/>&nbsp;<input id='area_cancel_id' type='button' value='"+this.translation.cancel+"'/></td></tr>";html+="</table>";this.help_mod=hc.create(this.map.div,this.translation.title,html);if(!this.help_mod)
return;jQuery("#area_reset_id").click(function(){AreaCMSModule.reset();});jQuery("#area_cancel_id").click(function(){AreaCMSModule.cancel();});},on_point_insert:function(pointIndex){this.modify_index=pointIndex;if(this.map&&this.area_control&&this.area_control.handler)
this.area_control.handler.fullRepaint=true;this.calc_area();this.modify_index=-1;},on_point_add:function(){this.calc_area();this.modify_index=-1;},on_point_modified:function(pointIndex){this.modify_index=pointIndex;if(this.map&&this.area_control&&this.area_control.handler)
this.area_control.handler.fullRepaint=true;this.calc_area();this.modify_index=-1;},on_point_remove:function(pointIndex){if(pointIndex!=0&&this.map&&this.area_control&&this.area_control.handler){this.modify_index=pointIndex;this.area_control.handler.fullRepaint=true;}
this.calc_area();this.modify_index=-1;}});WebCMS.register_module(AreaCMSModule);var mod_mm=WebCMS.get_module("monitoring_map");if(mod_mm)
mod_mm.register_map_layer(AreaCMSModule);var SpeedColorsCMSModule=Base.extend({constructor:null,translation:{},speed_colors:null,get_type:function(){return"speed_colors_control";},on_init:function(){this.speed_colors=new Object;},bind:function(target_id,params){var speed_colors_item=new SpeedColorsItemCMSModule(target_id,params);if(typeof this.speed_colors[target_id]!='undefined')
delete this.speed_colors[target_id];speed_colors_item.init();this.speed_colors[target_id]=speed_colors_item;},unbind:function(target_id){jQuery("#"+target_id).empty();},get_speed_colors_by_id:function(id){if(typeof this.speed_colors[id]=='undefined')
return"";return this.speed_colors[id];},get_speed_colors_result:function(id){if(typeof this.speed_colors[id]=='undefined')
return"";return this.speed_colors[id].get_result();},get_default_speed_color:function(id){if(typeof this.speed_colors[id]=='undefined')
return"";return this.speed_colors[id].get_default_speed_color();}});var SpeedColorsItemCMSModule=Base.extend({constructor:function(target_id,params){this.id=target_id;if(params&&params.default_string){this.current_string=params.default_string;this.default_string=params.default_string;}
if(params&&params.use_colorpick)
this.use_colorpick=params.use_colorpick;if(params&&params.scroll_parent)
this.scroll_parent=params.scroll_parent;if(params&&params.tclass)
this.tclass=params.tclass;if(params&&params.ttip)
this.ttip=params.ttip;else
this.ttip=SpeedColorsCMSModule.translation.ttip;if(params&&params.value_type)
this.value_type=params.value_type;else
this.value_type=SpeedColorsCMSModule.translation.speed;if(params&&params.min_val)
this.min_val=params.min_val;if(params&&params.show_strings)
this.show_strings=params.show_strings;},current_string:"0 eec80a0a;20 eeD72ec1;50 CC029508;100 ee456aa8",default_string:"0 eec80a0a;20 eeD72ec1;50 CC029508;100 ee456aa8",use_colorpick:false,scroll_parent:null,tclass:"",ttip:"",value_type:"",min_val:"0",show_strings:0,get_result:function(){var res="";jQuery("#"+this.id+"_sc_table span").each(function(){var speed=jQuery(this).attr("speed");var color=jQuery.conv_rgb_color(jQuery(this).css("background"));var alpha=jQuery(this).attr("alpha");var text="";var input=jQuery(this).next();if(input.size())
text=input.val();if(color.length==7)
color=color.substr(1);if(res.length)
res+=";"
res+=speed+" "+alpha+color+(text.length?(" "+text):"");});return res;},get_default_speed_color:function(){var def_color="";jQuery("#"+this.id+"_sc_table span").each(function(){if(def_color.length)
return;def_color=jQuery.conv_rgb_color(jQuery(this).css("background"));});if(!def_color.length)
return"";if(def_color.length==7)
def_color=def_color.substr(1);return def_color;},init:function(update){var id=this.id;jQuery("#"+id).html("<table id='"+id+"_sc_table' class='"+this.tclass+"'/>");var str=this.current_string;var arr=str.split(";");var last_speed="∞";var html="";if(!this.show_strings){arr.sort(function(a,b){var a_arr=a.split(" ");var b_arr=b.split(" ");if(a_arr.length!=2||b_arr.length!=2)
return 0;return parseFloat(a_arr[0])-parseFloat(b_arr[0]);});var new_string="";var speeds_count=0;for(var i=arr.length;i>0;i--){var vals=arr[i-1].split(" ");if(vals.length!=2||(!isNaN(last_speed)&&vals[0]==last_speed+1)||isNaN(vals[0]))
continue;var interval="";if(arr.length==1){interval=this.min_val+" .. ∞";vals[0]=0;}else if(i==1){interval=this.min_val+" .. "+last_speed;if(this.min_val=="0")
vals[0]=0;}else
interval=vals[0]+" .. "+last_speed;if(this.min_val=="0")
last_speed=vals[0]-1;else
last_speed=vals[0];var color=vals[1];var alpha="";if(color.length>=8){vals[1]=color.substring(color.length-8);alpha=color.substr(0,2);color=color.substring(color.length-6);}else if(color.length>6){alpha=color.substr(0,1);color=color.substring(color.length-6);}else if(color.length<6){while(color.length<6)
color="0"+color;vals[1]=color;}
vals[0]=parseFloat(vals[0]);html="<tr><td>"+interval+"</td><td><span speed='"+vals[0]+"' alpha='"+alpha+"' style='background: #"+color+"'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>"+html;if(new_string.length)
new_string=";"+new_string;new_string=vals[0]+" "+vals[1]+new_string;speeds_count++;}
this.current_string=new_string;var html_head="";var html_bottom="";if(this.use_colorpick){html_head="<tr><td style='width:70px'>"+this.value_type+"</td><td align='left'>"+SpeedColorsCMSModule.translation.color+"</td><td rowspan='"+(speeds_count+1)+"'><div id='"+id+"_sc_pick'/></td></tr>";html_bottom="<tr><td colspan='3' valign='middle'><input type='text' id='"+id+"_sc_str' value='"+this.current_string+"' style='width:260px'/>&nbsp;<img src='/speed_colors/refresh.png' id='"+id+"_sc_refresh' style='vertical-align:middle'>";html_bottom+="&nbsp;<img src='/speed_colors/reset.png' id='"+id+"_sc_reset' style='vertical-align:middle'></td></tr>"}else
html_head="<tr><td style='width:70px'>"+this.value_type+"</td><td align='left'>"+SpeedColorsCMSModule.translation.color+"</td></tr>";jQuery("#"+id+"_sc_table").html(html_head+html+html_bottom);if(this.use_colorpick){jQuery("#"+id+"_sc_refresh").attr("title",SpeedColorsCMSModule.translation.refresh).css("cursor","pointer").Tooltip({showURL:false}).click(function(){var mod=SpeedColorsCMSModule;if(!mod)
return;var item=mod.get_speed_colors_by_id(id);if(!item)
return;item.current_string=jQuery("#"+id+"_sc_str").val();item.init();});jQuery("#"+id+"_sc_reset").attr("title",SpeedColorsCMSModule.translation.reset).css("cursor","pointer").Tooltip({showURL:false}).click(function(){var mod=SpeedColorsCMSModule;if(!mod)
return;var item=mod.get_speed_colors_by_id(id);if(!item)
return;item.current_string=item.default_string;item.init();});jQuery("#"+id+"_sc_str").attr("title",this.ttip).Tooltip({showURL:false});jQuery("#"+id+"_sc_table span").css("cursor","pointer").attr("title",SpeedColorsCMSModule.translation.click).Tooltip({showURL:false}).click(function(){var mod=SpeedColorsCMSModule;if(!mod)
return;var item=mod.get_speed_colors_by_id(id);if(!item)
return;jQuery("#"+id+"_sc_table span").css("border","");jQuery("#"+id+"_sc_pick").empty();jQuery("#"+id+"_sc_pick").removeAttr("farbtastic");if(!parseInt(jQuery(this).attr("selected"))){jQuery("#"+id+"_sc_table span").removeAttr("selected");jQuery(this).css("border","1px solid black").attr("selected","1");jQuery("#"+id+"_sc_pick").farbtastic(this,{radius:43,square:51,width:100,scroll_parent:item.scroll_parent,clss:"farbtastic_speed",color_changed:function(){var mod=SpeedColorsCMSModule;if(!mod)
return;var item=mod.get_speed_colors_by_id(id);if(!item)
return;item.current_string=item.get_result();jQuery("#"+id+"_sc_str").val(item.current_string);}});jQuery("#"+id+"_sc_pick").get(0).farbtastic.setColor(jQuery(this).css("background"));}else
jQuery(this).removeAttr("selected");});}else
jQuery("#"+id+"_sc_table").attr("title",sprintf(SpeedColorsCMSModule.translation.string,this.current_string)).Tooltip({showURL:false});}else{arr.sort(function(a,b){var a_arr=a.split(" ");var b_arr=b.split(" ");if(a_arr.length<2||b_arr.length<2)
return 0;return parseFloat(a_arr[0])-parseFloat(b_arr[0]);});var new_string="";var speeds_count=0;for(var i=arr.length;i>0;i--){var vals=arr[i-1].split(" ");if(vals.length<2||(!isNaN(last_speed)&&vals[0]==last_speed+1)||isNaN(vals[0]))
continue;var interval="";if(arr.length==1){interval=this.min_val+" .. ∞";vals[0]=0;}else if(i==1){interval=this.min_val+" .. "+last_speed;if(this.min_val=="0")
vals[0]=0;}else
interval=vals[0]+" .. "+last_speed;if(this.min_val=="0")
last_speed=vals[0]-1;else
last_speed=vals[0];var color=vals[1];var alpha="";if(color.length>=8){vals[1]=color.substring(color.length-8);alpha=color.substr(0,2);color=color.substring(color.length-6);}else if(color.length>6){alpha=color.substr(0,1);color=color.substring(color.length-6);}else if(color.length<6){while(color.length<6)
color="0"+color;vals[1]=color;}
vals[0]=parseFloat(vals[0]);var str="";if(vals.length>2)
for(var j=2;j<vals.length;j++)
str+=(str.length?" ":"")+vals[j];html="<tr><td>"+interval+"</td><td><span speed='"+vals[0]+"' alpha='"+alpha+"' style='background: #"+color+"'>&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp<input type='text' size='10' value='"+str+"'/></td></tr>"+html;if(new_string.length)
new_string=";"+new_string;new_string=vals[0]+" "+vals[1]+(str.length?(" "+str):"")+new_string;speeds_count++;}
this.current_string=new_string;var html_head="";var html_bottom="";if(this.use_colorpick){html_head="<tr><td style='width:70px'>"+this.value_type+"</td><td align='left'>"+SpeedColorsCMSModule.translation.text+"</td><td rowspan='"+(speeds_count+1)+"'><div id='"+id+"_sc_pick'/></td></tr>";html_bottom="<tr><td colspan='4' valign='middle'><input type='text' id='"+id+"_sc_str' value='"+this.current_string+"' style='width:260px'/>&nbsp;<img src='/speed_colors/refresh.png' id='"+id+"_sc_refresh' style='vertical-align:middle'>";html_bottom+="&nbsp;<img src='/speed_colors/reset.png' id='"+id+"_sc_reset' style='vertical-align:middle'></td></tr>"}else
html_head="<tr><td style='width:70px'>"+this.value_type+"</td><td align='left'>"+SpeedColorsCMSModule.translation.text+"</td></tr>";jQuery("#"+id+"_sc_table").html(html_head+html+html_bottom);if(this.use_colorpick){jQuery("#"+id+"_sc_refresh").attr("title",SpeedColorsCMSModule.translation.refresh).css("cursor","pointer").Tooltip({showURL:false}).click(function(){var mod=SpeedColorsCMSModule;if(!mod)
return;var item=mod.get_speed_colors_by_id(id);if(!item)
return;item.current_string=jQuery("#"+id+"_sc_str").val();item.init();});jQuery("#"+id+"_sc_reset").attr("title",SpeedColorsCMSModule.translation.reset).css("cursor","pointer").Tooltip({showURL:false}).click(function(){var mod=SpeedColorsCMSModule;if(!mod)
return;var item=mod.get_speed_colors_by_id(id);if(!item)
return;item.current_string=item.default_string;item.init();});jQuery("#"+id+"_sc_str").attr("title",this.ttip).Tooltip({showURL:false});jQuery("#"+id+"_sc_table span").css("cursor","pointer").attr("title",SpeedColorsCMSModule.translation.click).Tooltip({showURL:false}).click(function(){var mod=SpeedColorsCMSModule;if(!mod)
return;var item=mod.get_speed_colors_by_id(id);if(!item)
return;jQuery("#"+id+"_sc_table span").css("border","");jQuery("#"+id+"_sc_pick").empty();jQuery("#"+id+"_sc_pick").removeAttr("farbtastic");if(!parseInt(jQuery(this).attr("selected"))){jQuery("#"+id+"_sc_table span").removeAttr("selected");jQuery(this).css("border","1px solid black").attr("selected","1");jQuery("#"+id+"_sc_pick").farbtastic(this,{radius:43,square:51,width:100,scroll_parent:item.scroll_parent,clss:"farbtastic_speed",color_changed:function(){var mod=SpeedColorsCMSModule;if(!mod)
return;var item=mod.get_speed_colors_by_id(id);if(!item)
return;item.current_string=item.get_result();jQuery("#"+id+"_sc_str").val(item.current_string);}});jQuery("#"+id+"_sc_pick").get(0).farbtastic.setColor(jQuery(this).css("background"));}else
jQuery(this).removeAttr("selected");});}else
jQuery("#"+id+"_sc_table").attr("title",sprintf(SpeedColorsCMSModule.translation.string,this.current_string)).Tooltip({showURL:false});}}});WebCMS.register_module(SpeedColorsCMSModule);var SearchControlCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"search_control";},on_init:function(){},attach_to_module:function(callback_module,insert_after,store_prop_name){if(typeof insert_after=="undefined"||!callback_module||typeof callback_module=="undefined")
return false;var curr_user=Wialon.get_current_user();var mod_name=callback_module.get_type();var html="&nbsp;<input id='"+mod_name+"_fltr' type='text' size='15' value='"+(store_prop_name&&store_prop_name.length?curr_user.get_private_property(store_prop_name,"*"):"*");html+="'/>&nbsp;<input type='button' id='"+mod_name+"_fltr_btn' onclick='SearchControlCMSModule.change_list_mask(\""+mod_name+"\", \""+(store_prop_name?store_prop_name:"")+"\")' value='>'/></CENTER>";jQuery("#"+insert_after).after(html);jQuery("#"+mod_name+"_fltr_btn").attr("title",SearchControlCMSModule.translation.apply_filter).Tooltip({showURL:false});jQuery("#"+mod_name+"_fltr").keydown(function(e){if(e.keyCode==13)
SearchControlCMSModule.change_list_mask(mod_name,store_prop_name);}).attr("title",SearchControlCMSModule.translation.filter_text).Tooltip({showURL:false});},change_list_mask:function(mod_type,prop_name){var val=jQuery("#"+mod_type+"_fltr").val();if(!val.length)
val="";if(prop_name&&typeof prop_name!="undefined"&&prop_name.length){var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property(prop_name,val);mod_us.store_settings();}
var mod_il=WebCMS.get_module(mod_type);if(!mod_il)
return;mod_il.update_list_filter(val);}});WebCMS.register_module(SearchControlCMSModule);var FilterControlCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"resource_filter_control";},on_init:function(){},attach_to_module:function(mod,after,prop){if(!mod||!after)
return false;var resources=Wialon.get_resources();if(resources.length<2)
return true;var prop_val;if(prop)
prop_val=Wialon.get_current_user().get_private_property(prop);var selector=mod.get_type()+"_selector";var html='&nbsp;<select id="'+selector+'"><option value="0">'+this.translation.all+"</option>";for(var i=0;i<resources.length;i++){var res_id=parseInt(resources[i].get_id());var res_name=resources[i].get_name();if(res_id==prop_val)
html+='<option selected value="'+res_id+'">'+res_name+"</option>";else
html+='<option value="'+res_id+'">'+res_name+"</option>";}
html+="</select>";jQuery("#"+after).after(html);jQuery("#"+selector).change(function(){var val=parseInt(jQuery("#"+selector).val());if(prop){Wialon.get_current_user().set_private_property(prop,val);var mod_usersets=WebCMS.get_module("user_settings");if(mod_usersets)
mod_usersets.store_settings();}
mod.update_resource_filter(val);});jQuery("#"+selector).attr("title",this.translation.helptip).Tooltip({showURL:false});return true;}});WebCMS.register_module(FilterControlCMSModule);var ColorPickerCMSModule=Base.extend({constructor:null,started_timer:null,translation:{},callback:null,get_type:function(){return"color_picker";},on_init:function(){var html="<div id='color_picker_div' style='display:none;position:absolute;z-index: 2999; border: 1px solid #000000; background-color: #EEEEEE; color: #000000;padding:10px'>";html+="<div id='color_picker_div_farb'></div>";html+="<br><center><input type='text' id='color_picker_div_color' value='#FFFFFF'/>";html+="<br><input type='button' id='color_picker_div_cancel' value='"+this.translation.cancel+"'/>";html+="&nbsp;<input type='button' id='color_picker_div_ok' value='"+this.translation.ok+"'/></center></div>";jQuery("body").append(html);jQuery("#color_picker_div").hover(function(){var mod=ColorPickerCMSModule;if(mod.started_timer){clearTimeout(mod.started_timer);mod.started_timer=null;}},function(){var mod=ColorPickerCMSModule;if(mod.started_timer)
return;mod.started_timer=setTimeout(function(){jQuery("#color_picker_div").css("display","none");mod.started_timer=null;mod.callback=null;mod.parameter=null;},1000);});jQuery("#color_picker_div_ok").click(function(){var color=jQuery("#color_picker_div_color").val().substr(1);color=parseInt(color,16);if(ColorPickerCMSModule.callback)
ColorPickerCMSModule.callback(color,ColorPickerCMSModule.parameter);ColorPickerCMSModule.callback=null;jQuery("#color_picker_div").css("display","none");});jQuery("#color_picker_div_cancel").click(function(){ColorPickerCMSModule.callback=null;jQuery("#color_picker_div").css("display","none");});jQuery("#color_picker_div_farb").farbtastic("#color_picker_div_color",{clss:"farbtastic_zone"});},pick_color:function(top,left,def_color,callback,parameter){if(this.callback||!callback)
return;if(def_color>=0)
jQuery("#color_picker_div_color").val(sprintf("#%06x",def_color));this.callback=callback;if(parameter)
this.parameter=parameter;jQuery("#color_picker_div").css("left",left);var div_h=jQuery("#color_picker_div").height();var window_h=jQuery(window).height();if(top+div_h+40>window_h)
top=window_h-div_h-40;jQuery("#color_picker_div").css("top",top);jQuery("#color_picker_div").css("display","");this.set_color(def_color);},set_color:function(def_color){if(def_color>=0)
jQuery("#color_picker_div_color").val(sprintf("#%06x",def_color));jQuery("#color_picker_div_farb").get(0).farbtastic.setColor(sprintf("#%06x",def_color));}});WebCMS.register_module(ColorPickerCMSModule);var RoutingCMSModule=Base.extend({constructor:null,map:null,help_mod:null,routing_layer:null,routing_control:null,map:null,points:new Array,curr_point_id:null,lonlat:null,calculating:false,img_routing_help_url:"/routing/help.png",total_d:0,modify_index:-1,current_mode:0,default_color:0x197B30,geozone_color:0x197B30,last_user_color:0x197B30,prev_cpoints:null,translation:{},default_style:{fillColor:"#197B30",fillOpacity:0.7,hoverFillColor:"white",hoverFillOpacity:0.7,strokeColor:"#197B30",strokeOpacity:0.7,strokeWidth:3,strokeLinecap:"round",hoverStrokeColor:"#197B30",hoverStrokeOpacity:0.7,hoverStrokeWidth:0.2,pointRadius:4,hoverPointRadius:1,pointerEvents:"visiblePainted"},text_style:{fillColor:"#FF0000",fillOpacity:1,hoverFillColor:"#FF0000",strokeColor:"#FFFFFF",strokeWidth:0,fontSize:14},get_type:function(){return"routing";},attach_to_map:function(map){this.map=map;},get_map:function(){return this.map;},get_layer:function(){return this.routing_layer;},get_control:function(){return this.routing_control;},attach_to_map:function(map){this.map=map;},create_routing_layer:function(){if(this.map){this.routing_layer=new OpenLayers.Layer.Vector("Routing layer");this.map.addLayer(this.routing_layer);return true;}
return false;},destroy_routing_layer:function(){if(this.routing_layer){this.map.removeLayer(this.routing_layer);this.routing_layer=null;}},create_routing_control:function(){this.destroy_routing_control();if(this.routing_layer){var routing_style=OpenLayers.Util.extend({},this.default_style);var routing_last_style=OpenLayers.Util.extend({},this.default_style);var text_style=OpenLayers.Util.extend({},this.text_style);routing_last_style.fillColor=routing_style.fillColor=sprintf("#%06x",this.geozone_color);routing_last_style.strokeColor=routing_style.strokeColor=sprintf("#%06x",this.geozone_color);var options={handlerOptions:{style:routing_style,lastStyle:routing_last_style,textStyle:text_style}};this.routing_control=new OpenLayers.Control.DrawFeature(this.routing_layer,OpenLayers.Handler.PathEx,options);this.get_control().handler.event_disp=this;var mod_zp=WebCMS.get_module("zone_points");if(mod_zp)
mod_zp.event_disp=this.get_control().handler;if(this.routing_control){this.map.addControl(this.routing_control);this.routing_control.activate();}
return true;}
return false;},destroy_routing_control:function(){if(this.routing_control){this.routing_control.deactivate();this.map.removeControl(this.routing_control);this.map.div.style.cursor="default";this.routing_control=null;}},init_control:function(){var mod_rout=WebCMS.get_module("map_routing");var providers=mod_rout.get_providers();if(!this.map)
return false;if(this.feature){for(var i=0;i<this.feature.length;i++)
this.feature[i].destroy();}
this.feature=null;if(!this.routing_layer)
this.create_routing_layer();if(!this.routing_control)
this.create_routing_control();if(this.help_mod)
this.help_mod.show(true);if(this.map)
this.map.events.register('zoomend',this,this.redraw);jQuery("#routing_process").removeAttr("disabled");jQuery("#routing_points_list").html("<tr><td>№</td><td>"+this.translation.cp_name+"</td><td>"+this.translation.radius+"</td><td>"+this.translation.remove+"</td></tr>");jQuery("#routing_points_list").parent().show();jQuery("#routing_providers").change();var resources=Wialon.filter_items(Wialon.get_resources(),"edit");var user=Wialon.get_current_user();if(resources&&resources.length&&user){var res_count=0;var html="";var selected=false;for(var i=0;i<resources.length;i++){if(this.is_resource_limited(resources[i]))
continue
res_count++;html+="<option value='"+resources[i].get_id()+"'";if(user==resources[i].get_user_creator()&&!selected){html+=" selected";selected=true;}
html+=">"+resources[i].get_name()+"</option>";}
if(res_count)
jQuery("#routing_account").html(html);}
return true;},reset:function(){jQuery("#"+this.help_mod.target_child_id+"_close_id img").attr("src","/routing/help.png");if(this.routing_control)
this.destroy_routing_control();if(this.routing_layer)
this.destroy_routing_layer();if(this.map)
this.map.events.unregister('zoomend',this,this.redraw);this.init_control();this.calc_distance();jQuery("#routing_points_list").parent().show();},cancel:function(){jQuery("#"+this.help_mod.target_child_id+"_close_id img").attr("src","/routing/help.png");if(this.routing_control)
this.destroy_routing_control();if(this.routing_layer)
this.destroy_routing_layer();if(this.map){this.map.updateSize();this.map.events.unregister('zoomend',this,this.redraw);}
total_d=0;if(this.help_mod)
this.help_mod.show(false);},redraw:function(evt){this.change_geozone_width();},get_flags:function(){var flags=0;flags+=jQuery("#routing_traffic_provider").attr("checked")?1:0;flags+=jQuery("#routing_travel_mode_provider").attr("checked")?2:0;flags+=jQuery("#routing_avoid_highways_provider").attr("checked")?4:0;flags+=jQuery("#routing_stick_point").attr("checked")?0x8000:0;return flags;},optimize:function(){var provider=WebCMS.get_module(jQuery("#routing_providers").val());var mod_rout=WebCMS.get_module("map_optipath");if(!provider||!mod_rout){alert(this.translation.no_provider);return;}
if(!this.get_control()){alert(this.translation.no_points);return;}
var ol_points=this.get_control().handler.getPoints();if(!ol_points||ol_points.length<2){alert(this.translation.no_points);return;}
var points=new Array;for(var i=0;i<ol_points.length;i++){var lonlat=new OpenLayers.LonLat(ol_points[i].x,ol_points[i].y);lonlat.transform(this.map.getProjectionObject(),this.map.displayProjection);var tr=jQuery("#routing_points_list tr:eq("+(i+1)+")");if(!tr.size())
continue;lonlat.name=jQuery("td:eq(1) input",tr).val();lonlat.radius=atoui(jQuery("td:eq(2) input",tr).val());points.push(lonlat);}
jQuery("#"+this.help_mod.target_child_id+"_close_id img").attr("src","/routing/wait.gif");jQuery("#routing_process,#routing_optimize").attr("disabled",1);var res=mod_rout.optimize_path(provider,points,this.get_flags(),function(points,cparam){var mod=RoutingCMSModule;cparam.prev_cpoints=new Array;var old_points=null;if(cparam.get_control())
old_points=cparam.get_control().handler.vertices;if(old_points&&old_points.length){for(var i=0;i<old_points.length;i++)
cparam.prev_cpoints.push({x:old_points[i].geometry.x,y:old_points[i].geometry.y,name:old_points[i].text.geometry.text,radius:old_points[i].geometry.radius});jQuery("#routing_back").show();}
cparam.reset();for(var i=0;i<points[0].length;i++)
cparam.get_control().handler.createPoint(points[0][i].lat,points[0][i].lon,points[0][i].name,points[0][i].radius);cparam.get_control().handler.drawFeature();jQuery("#routing_process,#routing_optimize").removeAttr("disabled");jQuery("#"+mod.help_mod.target_child_id+"_close_id img").attr("src","/routing/help.png");},this);},process:function(){if(jQuery("#routing_optimize_points").attr("checked")){this.optimize();return;}
var provider=WebCMS.get_module(jQuery("#routing_providers").val());var mod_rout=WebCMS.get_module("map_routing");if(!provider||!mod_rout){alert(this.translation.no_provider);return;}
if(!this.get_control()){alert(this.translation.no_points);return;}
var ol_points=this.get_control().handler.getPoints();if(!ol_points||ol_points.length<2){alert(this.translation.no_points);return;}
var points=new Array;for(var i=0;i<ol_points.length;i++){var lonlat=new OpenLayers.LonLat(ol_points[i].x,ol_points[i].y);lonlat.transform(this.map.getProjectionObject(),this.map.displayProjection);points.push({x:lonlat.lon,y:lonlat.lat});}
jQuery("#"+this.help_mod.target_child_id+"_close_id img").attr("src","/routing/wait.gif");jQuery("#routing_process").attr("disabled",1);var flags=this.get_flags();var res=mod_rout.calculate_routing(provider,points,flags,function(res,points,cparam){var mod=RoutingCMSModule;if(!points){alert(cparam.translation.no_route);jQuery("#routing_process,#routing_optimize").removeAttr("disabled");jQuery("#"+mod.help_mod.target_child_id+"_close_id img").attr("src","/routing/help.png");return;}
var control_points=RoutingCMSModule.get_control().handler.getPoints();var nearest_points=new Array;nearest_points.length=control_points.length;jQuery("#"+mod.help_mod.target_child_id+"_close_id img").attr("src","/routing/help.png");if(res){var route_points=new Array;var abs_pos=0;for(var i=0;i<points.length;i++,abs_pos++){var line=points[i].p;for(var j=0;j<line.length;j++){var pt=new OpenLayers.LonLat(line[j].x,line[j].y);pt.transform(cparam.map.displayProjection,cparam.map.getProjectionObject());var new_point=new OpenLayers.Geometry.Point(pt.lon,pt.lat);route_points.push(new_point);for(var k=0;k<control_points.length;k++){var distance=Math.sqrt(Math.pow(control_points[k].y-pt.lat,2)+Math.pow(control_points[k].x-pt.lon,2));if(typeof nearest_points[k]=="undefined"||nearest_points[k].distance>distance)
nearest_points[k]={distance:distance,point_pos:abs_pos,point:new_point};}}}
if(route_points.length){cparam.destroy_routing_control();var geozone_style=OpenLayers.Util.extend({},cparam.default_style);geozone_style.fillColor=sprintf("#%06x",cparam.geozone_color);geozone_style.strokeColor=sprintf("#%06x",cparam.geozone_color);cparam.feature=new Array;var feature=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(route_points),null,geozone_style);cparam.feature.push(feature);var text_style=OpenLayers.Util.extend({},cparam.text_style);var text_features=[];cparam.prev_cpoints=new Array;for(var i=0;i<nearest_points.length;i++){var tr=jQuery("#routing_points_list tr:eq("+(i+1)+")");if(!tr.size())
continue;var name=jQuery("td:eq(1) input",tr).val();var radius=atoui(jQuery("td:eq(2) input",tr).val());nearest_points[i].point.cp_name=name?name:"";nearest_points[i].point.cp_radius=radius;var feature_text=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Text(),null,text_style);feature_text.geometry.text=name;feature_text.geometry.x=nearest_points[i].point.x;feature_text.geometry.y=nearest_points[i].point.y;cparam.prev_cpoints.push({x:feature_text.geometry.x,y:feature_text.geometry.y,name:name,radius:radius});text_features.push(feature_text);var point_style=OpenLayers.Util.extend({},cparam.default_style);point_style.fillColor=sprintf("#%06x",cparam.geozone_color);point_style.strokeColor=sprintf("#%06x",cparam.geozone_color);point_style.pointRadiusReal=radius;point_style.pointRadius=cparam.getWidthPxFromM(radius);var feature_pt=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(),null,point_style);feature_pt.geometry.x=nearest_points[i].point.x;feature_pt.geometry.y=nearest_points[i].point.y;cparam.feature.push(feature_pt);}
cparam.feature=cparam.feature.concat(text_features);cparam.routing_layer.addFeatures(cparam.feature);mod.calc_distance();}
jQuery("#routing_points_list").empty();jQuery("#routing_points_list").parent().hide();jQuery("#routing_back").show();}else{alert(mod.translation.no_route);mod.reset();}},this);if(!res){alert(this.translation.no_route);this.reset();}},save:function(){var name=jQuery("#routing_name").val();if(name==""){alert(this.translation.name);return;}
var zones_resource=Wialon.get_item(jQuery("#routing_account").val());var type=1;var width=5;var points=null;if(this.get_control())
points=this.get_control().handler.vertices;else
points=this.feature[0].geometry.components;if(!points||points.length==0){alert(this.translation.no_points);return;}
var zone_new=new WialonGeozoneConstructor();var lonlat=0;zone_new.set_name(name);zone_new.set_type(type);zone_new.set_description("");zone_new.set_deviation(width);var only_cp=jQuery("#routing_only_cp").attr("checked")?true:false;var counter=0;for(var i=0;i<points.length;i++){if(points[i].geometry)
lonlat=new OpenLayers.LonLat(points[i].geometry.x,points[i].geometry.y);else
lonlat=new OpenLayers.LonLat(points[i].x,points[i].y);lonlat.transform(this.map.getProjectionObject(),this.map.displayProjection);if(points[i].geometry||typeof points[i].cp_radius!="undefined"){var cp=new Object;cp.arrive=0;cp.arrive_offset=0;cp.departure=0;cp.departure_offset=0;if(!points[i].geometry){cp.name=points[i].cp_name;zone_new.insert_point(-1,lonlat.lat,lonlat.lon,points[i].cp_radius);}else{cp.name=points[i].text.geometry.text;zone_new.insert_point(-1,lonlat.lat,lonlat.lon,points[i].geometry.radius);}
zone_new.set_control_point(counter++,cp);}else if(!only_cp){zone_new.insert_point(-1,lonlat.lat,lonlat.lon,2);counter++;}}
if(!zone_new.get_points().length){alert(this.translation.no_points);return;}
zone_new.set_description("color:"+sprintf("0x%06x",this.geozone_color));var callback=function(zone_id,error_msg,cparam){if(!zone_id){if(error_msg=="")
error_msg="Error on AJAX request";WebCMS.log_msg(sprintf(error_msg,cparam.name),2);}else{error_msg=RoutingCMSModule.translation.create_ok;WebCMS.log_msg(sprintf(error_msg,cparam.name),1);var mod_zg=WebCMS.get_module("zones_group");if(mod_zg)
mod_zg.on_new_zone(cparam.res_id,zone_id);}};var pl=zones_resource.get_plugin("avl_zones_library");if(!pl)
return;pl.create_zone(zone_new,callback,{name:zone_new.get_name(),res_id:zones_resource.get_id()});alert(this.translation.create_ok);this.reset();},is_resource_limited:function(res){if(!res)
return true;var pl=res.get_plugin("avl_zones_library");if(!pl)
return true;var zones=pl.get_zones();var limit=pl.get_zones_limit();if(zones&&limit>=0&&zones.length>=limit){return true;}
return false;},back:function(){this.reset();jQuery("#routing_back").hide();jQuery("#routing_points_list").parent().show();if(this.prev_cpoints)
for(var i=0;i<this.prev_cpoints.length;i++){var lonlat=new OpenLayers.LonLat(this.prev_cpoints[i].x,this.prev_cpoints[i].y);lonlat.transform(this.map.getProjectionObject(),this.map.displayProjection);this.get_control().handler.createPoint(lonlat.lat,lonlat.lon,this.prev_cpoints[i].name,this.prev_cpoints[i].radius);}
this.get_control().handler.drawFeature();this.prev_cpoints=null;},on_point_insert:function(pointIndex){this.calc_distance();var html="<tr><td></td><td><input type='text' style='width: 200px'/></td><td><input type='text' value='50' style='width: 50px'/></td><td><img src='/routing/del.png' style='cursor: pointer'/></td></tr>";var tr=jQuery("#routing_points_list tr").get(pointIndex+1);if(!tr)
return;jQuery(tr).after(html);tr=jQuery(tr).next();jQuery("td:eq(1) input",tr).focus().keyup(function(){var pos=jQuery(this).parent().parent().prevAll().size()-1;RoutingCMSModule.get_control().handler.setPointText(pos,jQuery(this).val());});jQuery("td:eq(2) input",tr).keyup(function(){var pos=jQuery(this).parent().parent().prevAll().size()-1;var radius=atoui(jQuery(this).val());RoutingCMSModule.get_control().handler.setPointRadius(pos,atoui(jQuery(this).val()));});jQuery("td:eq(3) img",tr).click(function(){var pos=jQuery(this).parent().parent().prevAll().size()-1;RoutingCMSModule.get_control().handler.deletePoint(pos);});var point_pos=pointIndex+1;if(!this.get_control().handler.getPointRadius(point_pos))
this.get_control().handler.setPointRadius(point_pos,50);var pos=0;jQuery("#routing_points_list tr").each(function(){if(!pos&&!pos++)
return;jQuery("td:eq(0)",this).html(pos++);});},on_point_add:function(text){this.calc_distance();var html="<tr><td></td><td><input type='text' style='width: 200px'/></td><td><input type='text' value='50' style='width: 50px'/></td><td><img src='/routing/del.png' style='cursor: pointer'/></td></tr>";jQuery("#routing_points_list").append(html);var tr=jQuery("#routing_points_list tr:last");jQuery("td:eq(1) input",tr).focus().keyup(function(){var pos=jQuery(this).parent().parent().prevAll().size()-1;RoutingCMSModule.get_control().handler.setPointText(pos,jQuery(this).val());}).val(text?text:"");jQuery("td:eq(2) input",tr).keyup(function(){var pos=jQuery(this).parent().parent().prevAll().size()-1;var radius=atoui(jQuery(this).val());RoutingCMSModule.get_control().handler.setPointRadius(pos,atoui(jQuery(this).val()));});jQuery("td:eq(3) img",tr).click(function(){var pos=jQuery(this).parent().parent().prevAll().size()-1;RoutingCMSModule.get_control().handler.deletePoint(pos);});var pos=0;jQuery("#routing_points_list tr").each(function(){if(!pos&&!pos++)
return;jQuery("td:eq(0)",this).html(pos++);});var point_pos=jQuery("#routing_points_list tr").size()-2;if(!this.get_control().handler.getPointRadius(point_pos))
this.get_control().handler.setPointRadius(point_pos,50);else
jQuery("td:eq(2) input",tr).val(this.get_control().handler.getPointRadius(point_pos))},on_point_remove:function(pointIndex){jQuery("#routing_points_list tr:eq("+(pointIndex+1)+")").remove();var pos=0;jQuery("#routing_points_list tr").each(function(){if(!pos&&!pos++)
return;jQuery("td:eq(0)",this).html(pos++);});this.calc_distance();},on_point_modified:function(pointIndex){this.calc_distance();},calc_distance:function(){if(!this.map)
return;var points=[];if(this.routing_control&&this.routing_control.handler)
points=this.routing_control.handler.getPoints();else if(this.feature&&this.feature[0].geometry)
points=this.feature[0].geometry.components;if(!points||!points.length){jQuery("#routing_points_info").html(this.translation.no_points);return;}
var total_d=0;var lonlat1=null;var lonlat2=null;for(var i=0;i<points.length;i++){lonlat2=new OpenLayers.LonLat(points[i].x,points[i].y);if(i==0){lonlat1=lonlat2;continue;}
if(lonlat1&&lonlat2)
total_d+=this.calculate_distance(lonlat1,lonlat2);lonlat1=lonlat2;}
if(typeof use_us_metrics!="undefined"&&use_us_metrics){var new_d=0;if(typeof d!='undefined')
new_d=d;var total_dk=total_d/1000*0.621;var txt_total_dk=(total_dk>=1)?sprintf(this.translation.distance_mi,total_dk,points.length):sprintf(this.translation.distance_ft,total_d*3.280,points.length);jQuery("#routing_points_info").html(txt_total_dk);}else{var new_d=0;if(typeof d!='undefined')
new_d=d;var total_dk=total_d/1000;var txt_total_dk=(total_dk>=1)?sprintf(this.translation.distance_km,total_dk,points.length):sprintf(this.translation.distance_m,total_d,points.length);jQuery("#routing_points_info").html(txt_total_dk);}},calculate_distance:function(lonlat1,lonlat2){if(!lonlat1||!lonlat2||!this.map)
return 0;var p1=lonlat1.clone();var p2=lonlat2.clone();p1.transform(this.map.getProjectionObject(),this.map.displayProjection);p2.transform(this.map.getProjectionObject(),this.map.displayProjection);var d=OpenLayers.Util.distVincenty(p1,p2);d=Math.round(d*100)/100*1000;return d;},on_init:function(){if(!this.map||!this.map.div)
return;var hc=WebCMS.get_module("help_control");if(!hc)
return;var html="<table width='100%' cellspacing='1px'>";html+="<tr valign='top'><td colspan='2' align='justify'><hr size='1px'></td></tr>";html+="<tr valign='top'><td colspan='2' align='justify'>"+this.translation.content+"</td></tr>";html+="<tr valign='top'><td colspan='2' align='center'><hr size='1px'></td></tr>";html+="<tr valign='top'><td style='width:30%'>"+this.translation.provider+"</td>";html+="<td><select id='routing_providers'></select></td></tr>";html+="<tr valign='top' id='tr_options' style='width:30%'><td id='td_options'>"+this.translation.options+"</td></tr>"
html+="<tr valign='top'><td style='width:30%'>"+this.translation.points_info+"</td>";html+="<td><span id='routing_points_info'>"+this.translation.no_points+"</td></tr>";html+="<tr valign='top'><td colspan='2' align='center'><input type='button' value='"+this.translation.from_address+"' id='routing_point_address'/>&nbsp;<input id='routing_process' type='button' value='"+this.translation.calculate+"'/>";html+="&nbsp;<input id='routing_reset' type='button' value='"+this.translation.reset+"'/>&nbsp;<input id='routing_back' style='display: none' type='button' value='"+this.translation.back+"'/></td></tr>";html+="<tr valign='top'><td colspan='2' align='justify'><hr size='1px'></td></tr>";html+="<tr valign='top'><td colspan='2' align='justify'>";html+="<div style='overflow: auto; height: 120px'>";html+="<table id='routing_points_list' class='routing_points_table'/></div></td></tr>";html+="<tr valign='top'><td colspan='2' align='justify'><hr size='1px'></td></tr>";html+="<tr valign='top' id='routing_account_tr'><td>"+this.translation.account+"</td>";html+="<td><select id='routing_account'></select></td></tr>";html+="<tr valign='top' name='routing_name_tr'><td>"+this.translation.zone_name+"</td>";html+="<td><input type='text' id='routing_name'></input></td></tr>";html+="<tr valign='top' name='routing_name_tr'><td>"+this.translation.only_cp+"</td>";html+="<td><input type='checkbox' id='routing_only_cp' checked></input></td></tr>";html+="<tr valign='top'><td colspan='2' align='center'><input id='routing_save' type='button' value='"+this.translation.save+"'/>&nbsp;<input id='routing_cancel' type='button' value='"+this.translation.cancel+"'/></td></tr>";html+="</table>";this.help_mod=hc.create(this.map.div,this.translation.title,html);if(!this.help_mod)
return;var ht="";ht+="<td><table>";ht+="<tr id='tr_traffic' style='display: none'><td><input type='checkbox' id='routing_traffic_provider'></td><td nowrap>"+this.translation.traffic+"</td></tr>";ht+="<tr id='tr_travel_mode' style='display: none'><td><input type='checkbox' id='routing_travel_mode_provider'></td><td nowrap>"+this.translation.travel_mode+"</td></tr>";ht+="<tr id='tr_avoid_highways' style='display: none'><td><input type='checkbox' id='routing_avoid_highways_provider'></td><td nowrap>"+this.translation.avoid_highways+"</td></tr>";ht+="<tr id='tr_optimize_points' style='display: none'><td><input type='checkbox' id='routing_optimize_points'></td><td nowrap>"+this.translation.optimize_points+"</td></tr>";ht+="<tr id='tr_stick_points' style='display: none'><td><input type='checkbox' id='routing_stick_point'></td><td nowrap>"+this.translation.stick_point+"</td></tr>";ht+="<tr><td><div style='background-color:#197B30;border:1px black solid;height:12px;width:12px;cursor:pointer;' id='routing_zone_color'></div></td><td nowrap>"+this.translation.zone_color+"</td></tr>";ht+="</table></td>";jQuery("#td_options").after(ht);jQuery("#routing_traffic_provider").attr("checked",false);jQuery("#routing_optimize").click(function(){RoutingCMSModule.optimize();});jQuery("#routing_process").click(function(){RoutingCMSModule.process();});jQuery("#routing_save").click(function(){RoutingCMSModule.save();});jQuery("#routing_reset").click(function(){RoutingCMSModule.reset();});jQuery("#routing_back").click(function(){RoutingCMSModule.back();});jQuery("#routing_cancel").click(function(){RoutingCMSModule.cancel();});var mod_rout=WebCMS.get_module("map_routing");var providers=mod_rout.get_providers();for(var i=0;i<providers.length;i++){jQuery("#routing_providers").append("<option value='"+providers[i].get_type()+"'>"+providers[i].get_name()+"</option>");}
jQuery("#routing_providers").change(function(){for(var i=0;i<providers.length;i++){var value=jQuery("#routing_providers").val();if(providers[i].get_type()==value){var traffic=providers[i].get_traffic_provide();var travel_mode=providers[i].get_travel_mode_provide();var avoid_highway=providers[i].get_avoid_highways_provide();var optimize_points=typeof providers[i].get_optimize_points=="function"?providers[i].get_optimize_points():false;if(traffic)
jQuery("#tr_traffic").css("display","");else
jQuery("#tr_traffic").css("display","none");if(travel_mode)
jQuery("#tr_travel_mode").css("display","");else
jQuery("#tr_travel_mode").css("display","none");if(avoid_highway)
jQuery("#tr_avoid_highways").css("display","");else
jQuery("#tr_avoid_highways").css("display","none");if(optimize_points){jQuery("#tr_optimize_points").show();jQuery("#tr_stick_points").show();}else{jQuery("#tr_optimize_points").hide();jQuery("#tr_stick_points").hide();jQuery("#routing_optimize_points").removeAttr("checked");jQuery("#routing_stick_point").removeAttr("checked");}
jQuery("#tr_options").css("display","");}}});jQuery("#routing_zone_color").click(function(){var self=RoutingCMSModule;var mod=WebCMS.get_module("color_picker");if(mod){mod.pick_color(jQuery(this).offset().top,jQuery(this).offset().left,RoutingCMSModule.geozone_color,function(color){var self=RoutingCMSModule;self.last_user_color=color;self.geozone_color=color;jQuery("#routing_zone_color").css("background-color",sprintf("#%06x",color));self.change_geozone_width();});}});jQuery("#routing_point_address").click(function(){var id="#"+RoutingCMSModule.help_mod.target_child_id+"_help_window_id";jQuery(id).hide();AddressCMSModule.init_control({back_text:RoutingCMSModule.translation.address_text,back_proc:function(){jQuery(id).show();}});});Wialon.bind_event_handler("store_address",0,function(event_type,event_id,event_data){var lat=event_data.lat;var lon=event_data.lon;var text=event_data.text;if(RoutingCMSModule.get_control())
RoutingCMSModule.get_control().handler.createPoint(lat,lon,text);});},change_geozone_width:function(){var geozone_style=OpenLayers.Util.extend({},this.default_style);var geozone_last_style=OpenLayers.Util.extend({},this.default_style);geozone_last_style.fillColor="#FF0000";geozone_last_style.fillOpacity=0.9;geozone_last_style.hoverFillColor="red";geozone_last_style.pointRadius=4;geozone_last_style.strokeColor="#FF0000";geozone_last_style.strokeWidth=3;geozone_style.fillColor=sprintf("#%06x",this.geozone_color);geozone_style.strokeColor=sprintf("#%06x",this.geozone_color);geozone_last_style.fillColor=sprintf("#%06x",this.geozone_color);geozone_last_style.strokeColor=sprintf("#%06x",this.geozone_color);if(this.get_control()){var width_px=2;geozone_style.strokeWidth=width_px+"px";geozone_last_style.strokeWidth=width_px+"px";this.get_control().handler.setStyle(geozone_style,geozone_last_style);}else if(this.feature){for(var i=0;i<this.feature.length;i++){var geozone_style=OpenLayers.Util.extend({},geozone_style);if(this.feature[i].geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){var radius=this.feature[i].style.pointRadiusReal;this.feature[i].style=geozone_style;this.feature[i].style.pointRadiusReal=radius;this.feature[i].style.pointRadius=this.getWidthPxFromM(radius);}else if(this.feature[i].geometry.CLASS_NAME!="OpenLayers.Geometry.Text")
this.feature[i].style=geozone_style;}}
this.routing_layer.redraw();},getWidthPxFromM:function(line_m){var line_p=0;pixel1=new OpenLayers.Pixel(100,100);var pixel1_=this.map.getLonLatFromPixel(pixel1);pixel1_.transform(this.map.getProjectionObject(),this.map.displayProjection);pixel2=new OpenLayers.Pixel(150,100);var pixel2_=this.map.getLonLatFromPixel(pixel2);pixel2_.transform(this.map.getProjectionObject(),this.map.displayProjection);if(!pixel1_||!pixel2_)
return 0;scale=calc_distance(pixel1_.lat,pixel1_.lon,pixel2_.lat,pixel2_.lon)/50.0;line_p=line_m/scale;return parseInt(line_p);}});WebCMS.register_module(RoutingCMSModule);var mod_mm=WebCMS.get_module("monitoring_map");if(mod_mm)
mod_mm.register_map_layer(RoutingCMSModule);var TrackHittestCMSModule=Base.extend({constructor:null,map:null,help_mod:null,img_track_hit_test_help_url:"/track_hit_test/help.png",pin_img_url:"/track_hit_test/pin.png",layers:new Object,current_track:null,searching:false,translation:{},get_type:function(){return"track_hit_test";},attach_to_map:function(map){this.map=map;},get_map:function(){return this.map;},attach_to_map:function(map){this.map=map;},init_control:function(){if(!this.map)
return;this.update_layers_list();this.map.div.style.cursor="crosshair";if(this.help_mod)
this.help_mod.show(true);this.dblclick_handler=new OpenLayers.Handler.Click({map:this.map},{dblclick:function(e){TrackHittestCMSModule.on_position_dblclick(e);}},{'double':true,stopDouble:true});this.dblclick_handler.activate();return true;},on_position_dblclick:function(evt){var mod=TrackHittestCMSModule;if(mod.searching){alert(mod.translation.searching_in_progress);return;}
var new_pos=mod.map.getLonLatFromViewPortPx(evt.xy);new_pos.transform(mod.map.getProjectionObject(),mod.map.displayProjection);var val=jQuery("#track_hit_test_tracks").val();if(!val)
return;var layer=mod.layers[val];var uid=jQuery("#track_hit_test_tracks option[selected]").attr("uid");var begin_time=jQuery("#track_hit_test_tracks option[selected]").attr("time");var rl=parseInt(jQuery("#track_hit_test_tracks option[selected]").attr("rl"));if(!mod.current_track||mod.current_track.layer_name!=val||mod.current_track.uid!=uid){mod.reset();mod.current_track=new Object;mod.current_track.points=new Array;mod.current_track.counter=0;mod.current_track.layer_name=val;mod.current_track.uid=uid;mod.current_track.unit=Wialon.get_item(uid);mod.current_track.begin_time=begin_time;mod.current_track.road_lock=rl;mod.current_track.last_tr=null;}
mod.searching=true;jQuery("#"+mod.help_mod.target_child_id+"_close_id img").attr("src","/track_hit_test/wait.gif");if(!layer.hit_test(uid,new_pos.lat,new_pos.lon,1,function(res,msg_info,param){var mod=TrackHittestCMSModule;if(res)
mod.on_add_message(msg_info.msg,msg_info.mileage);else
alert(mod.translation.search_failed);mod.searching=false;jQuery("#"+mod.help_mod.target_child_id+"_close_id img").attr("src","/track_hit_test/help.png");},null)){mod.searching=false;jQuery("#"+mod.help_mod.target_child_id+"_close_id img").attr("src","/track_hit_test/help.png");alert(mod.translation.search_failed);}},reset:function(){if(this.current_track)
for(var i=0;i<this.current_track.points.length;i++){this.markers_layer.removeMarker(this.current_track.points[i].marker);this.current_track.points[i].marker.destroy();}
this.current_track=null;jQuery("#hit_test_points").empty();this.check_table_height();},cancel:function(){if(!this.map)
return;this.reset();if(this.help_mod)
this.help_mod.show(false);this.map.div.style.cursor="default";if(this.dblclick_handler){this.dblclick_handler.destroy();this.dblclick_handler=null;}},on_init:function(){if(!this.map||!this.map.div)
return;var hc=WebCMS.get_module("help_control");if(!hc)
return;var html="<table width='100%' cellspacing='1px'>";html+="<tr valign='top'><td colspan='2' align='justify'><hr size='1px'></td></tr>";html+="<tr valign='top'><td colspan='2' align='justify'>"+this.translation.content+"</td></tr>";html+="<tr valign='top'><td colspan='2' align='center'><hr size='1px'></td></tr>";html+="<tr valign='top'><td>"+this.translation.tracks+"</td>";html+="<td><select id='track_hit_test_tracks'></select></td></tr>";html+="<tr valign='top'><td>"+this.translation.mode+"</td>";html+="<td nowrap><input type='radio' name='track_hit_test_mode' value='0' style='cursor: pointer' checked=1/>"+this.translation.single+"&nbsp;&nbsp;";html+="<input type='radio' name='track_hit_test_mode' value='1' style='cursor: pointer'/>"+this.translation.continuous+"&nbsp;";html+="</td></tr>";html+="<tr valign='top'><td colspan='2' align='center'><input id='hit_test_reset' type='button' value='"+this.translation.reset+"'/>&nbsp;<input id='hit_test_cancel' type='button' value='"+this.translation.cancel+"'/></td></tr>";html+="<tr><td colspan='2' align='center'><hr size='1px'></td></tr>";html+="<tr><td colspan='2'><div id='hit_test_div' style='overflow-y:none'><table class='hittest_points_table' id='hit_test_points'/></div></td></tr>";this.help_mod=hc.create(this.map.div,this.translation.title,html);if(!this.help_mod)
return;jQuery("#track_hit_test_tracks").attr("title",this.translation.tooltip).Tooltip({showURL:false});jQuery("#hit_test_reset").click(function(){TrackHittestCMSModule.reset();});jQuery("#hit_test_cancel").click(function(){TrackHittestCMSModule.cancel();});Wialon.bind_event_handler("msgs_layer_added",0,function(event_type,event_id,event_data){var mod=TrackHittestCMSModule;mod.layers[event_data.renderer_name+"_"+event_id.name]=event_id;mod.update_layers_list();});Wialon.bind_event_handler("msgs_layer_removed",0,function(event_type,event_id,event_data){var mod=TrackHittestCMSModule;delete mod.layers[event_data.renderer_name+"_"+event_id.name];mod.update_layers_list();mod.check_layer_changed();});Wialon.bind_event_handler("msgs_layer_enabled",0,function(event_type,event_id,event_data){var mod=TrackHittestCMSModule;mod.layers[event_data.renderer_name+"_"+event_id.name]=event_id;mod.update_layers_list();});Wialon.bind_event_handler("msgs_layer_disabled",0,function(event_type,event_id,event_data){var mod=TrackHittestCMSModule;delete mod.layers[event_data.renderer_name+"_"+event_id.name];mod.update_layers_list();mod.check_layer_changed();});this.markers_layer=new OpenLayers.Layer.Markers("Hittest Markers",{displayInLayerSwitcher:false});this.map.addLayer(this.markers_layer);},update_layers_list:function(){var selection=jQuery("#track_hit_test_tracks").val();var html="";for(var id in this.layers){var layer=this.layers[id];if(!layer||!layer.units)
continue;for(var i=0;i<layer.units.length;i++){if(!layer.units[i].msgs||!layer.units[i].msgs.count||!layer.units[i].msgs.first||!layer.units[i].msgs.first.length)
continue;var unit=Wialon.get_item(layer.units[i].id);var comment=this.translation.monitoring;if(layer.name=="messages")
comment=this.translation.messages;else if(layer.name=="trips")
comment=this.translation.reports;html+="<option value='"+id+"' uid='"+layer.units[i].id+"' time='"+layer.units[i].msgs.first[0]+"' rl='"+layer.units[i].msgs.rl+"'>"+unit.get_name()+" ("+comment+")</option>";}}
jQuery("#track_hit_test_tracks").html(html);jQuery("#track_hit_test_tracks").val(selection);},on_add_message:function(msg,distance){if(!this.current_track)
return;var mode=parseInt(jQuery("[name='track_hit_test_mode'][checked]").val());var lat=0;var lon=0;if(this.current_track.road_lock){lat=msg.get_road_lat();lon=msg.get_road_lon();}else{lat=msg.get_lat();lon=msg.get_lon();}
if(!mode){for(var i=0;i<this.current_track.points.length;i++){this.markers_layer.removeMarker(this.current_track.points[i].marker);this.current_track.points[i].marker.destroy();}
this.current_track.points=new Array;jQuery("#hit_test_points").empty();this.current_track.last_marker=null;this.current_track.last_tr=null;}
var lonlat=new OpenLayers.LonLat(lon,lat);lonlat.transform(this.map.displayProjection,this.map.getProjectionObject());var mod_ust=WebCMS.get_module("user_settings_time");var mod_uit=WebCMS.get_module("unit_info_text");if(!mod_uit)
return;var info=mod_uit.get_message_info(msg,this.current_track.unit);var msg_info=new Object;msg_info.time=msg.get_time();msg_info.distance=distance;var tr_id=msg.get_time()+"_"+this.current_track.counter++;msg_info.tr_id=tr_id;var insert_into=0;for(var i=0;i<this.current_track.points.length;i++){if(this.current_track.points[i].time==msg_info.time)
return;if(this.current_track.points[i].time>msg_info.time)
break;else
insert_into++;}
var html="";if(mode)
html+="<tr id='"+msg_info.tr_id+"'><td><img src='/track_hit_test/show.png' style='cursor: pointer'/></td>";else
html+="<tr id='"+msg_info.tr_id+"'><td><img src='/track_hit_test/hide.png' style='cursor: pointer'/></td>";if(!insert_into){html+="<td style='width: 100%; cursor: pointer'>"+mod_ust.format_time(msg_info.time)+" - "+this.format_distance(msg_info.distance);html+=" (+"+WebCMS.get_time_interval_text(msg_info.time-this.current_track.begin_time)+")</td>";}else{html+="<td style='width: 100%; cursor: pointer'>"+mod_ust.format_time(msg_info.time)+" - "+this.format_distance(msg_info.distance);html+=" (+"+WebCMS.get_time_interval_text(msg_info.time-this.current_track.points[insert_into-1].time);html+=" +"+this.format_distance(msg_info.distance-this.current_track.points[insert_into-1].distance)+")</td>";}
html+="<td><img src='/track_hit_test/delete.png' style='cursor: pointer'/></td></tr>";if(!mode)
html+="<tr id='"+msg_info.tr_id+"tr'><td colspan='3'><table class='hittest_point_description'>"+info+"</table></td></tr>";else
html+="<tr id='"+msg_info.tr_id+"tr' style='display: none'><td colspan='3'><table class='hittest_point_description'>"+info+"</table></td></tr>";if(insert_into<this.current_track.points.length){var mod_html=mod_ust.format_time(this.current_track.points[insert_into].time)+" - "+this.format_distance(this.current_track.points[insert_into].distance);mod_html+=" (+"+WebCMS.get_time_interval_text(this.current_track.points[insert_into].time-msg_info.time);mod_html+=" +"+this.format_distance(this.current_track.points[insert_into].distance-msg_info.distance)+")";jQuery(jQuery("#"+this.current_track.points[insert_into].tr_id+" td").get(1)).html(mod_html);}
if(!this.current_track.points.length)
jQuery("#hit_test_points").html(html);else if(this.current_track.points.length==insert_into)
jQuery("#hit_test_points").append(html);else
jQuery("#"+this.current_track.points[insert_into].tr_id).before(html);jQuery(jQuery("#"+msg_info.tr_id+" td").get(0)).click(function(){var mod=TrackHittestCMSModule;var img=jQuery("img",this);if(jQuery(img).attr("src")=="/track_hit_test/hide.png"){jQuery(img).attr("src","/track_hit_test/show.png");jQuery("#"+tr_id+"tr").css("display","none");}else{jQuery(img).attr("src","/track_hit_test/hide.png");jQuery("#"+tr_id+"tr").css("display","");}
mod.check_table_height();}).attr("title",this.translation.show_hide).Tooltip({showURL:false});jQuery(jQuery("#"+msg_info.tr_id+" td").get(1)).click(function(){var mod=TrackHittestCMSModule;mod.map.setCenter(lonlat);if(mod.current_track.last_tr)
jQuery("#"+mod.current_track.last_tr).removeClass("hit_test_selection");if(mod.current_track.last_marker)
mod.current_track.last_marker.setUrl("/track_hit_test/pin.png");mod.current_track.last_marker=null;mod.current_track.last_tr=null;var mode=parseInt(jQuery("[name='track_hit_test_mode'][checked]").val());if(mode){jQuery("#"+tr_id).addClass("hit_test_selection");mod.current_track.last_tr=tr_id;for(var i=0;i<mod.current_track.points.length;i++){if(mod.current_track.points[i].tr_id==tr_id){mod.current_track.last_marker=mod.current_track.points[i].marker;mod.current_track.last_marker.setUrl("/track_hit_test/pin_selection.png");break;}}}}).attr("title",this.translation.on_goto).Tooltip({showURL:false});jQuery(jQuery("#"+msg_info.tr_id+" td").get(2)).click(function(){var mod=TrackHittestCMSModule;for(var i=0;i<mod.current_track.points.length;i++){var point=mod.current_track.points[i];if(point.tr_id==tr_id){if(i<mod.current_track.points.length-1){var next_msg=mod.current_track.points[i+1];var html="";if(!i){html+="<td style='width: 100%; cursor: pointer'>"+mod_ust.format_time(next_msg.time)+" - "+mod.format_distance(next_msg.distance);html+=" (+"+WebCMS.get_time_interval_text(next_msg.time-mod.current_track.begin_time)+")</td>";}else{var prev_msg=mod.current_track.points[i-1];html+=mod_ust.format_time(next_msg.time)+" - "+mod.format_distance(next_msg.distance);html+=" (+"+WebCMS.get_time_interval_text(next_msg.time-prev_msg.time);html+=" +"+mod.format_distance(next_msg.distance-prev_msg.distance)+")";}
jQuery(jQuery("#"+mod.current_track.points[i+1].tr_id+" td").get(1)).html(html);}
jQuery("#"+mod.current_track.points[i].tr_id).remove();jQuery("#"+mod.current_track.points[i].tr_id+"tr").remove();mod.markers_layer.removeMarker(mod.current_track.points[i].marker);mod.current_track.points[i].marker.destroy();mod.current_track.points.splice(i,1);mod.check_table_height();if(mod.current_track.last_tr&&mod.current_track.last_tr==tr_id){mod.current_track.last_marker=null;mod.current_track.last_tr=null;}
return;}}
mod.check_table_height();}).attr("title",this.translation.remove).Tooltip({showURL:false});this.current_track.points.splice(insert_into,0,msg_info);var size=new OpenLayers.Size(13,32);var offset=new OpenLayers.Pixel(-(size.w/2),-size.h);var img_path=this.pin_img_url;var icon=new OpenLayers.Icon(img_path,size,offset);msg_info.marker=new OpenLayers.Marker(lonlat,icon);this.markers_layer.addMarker(msg_info.marker);jQuery(icon.imageDiv).attr("title","<table>"+info+"</table>").Tooltip({showURL:false}).css("cursor","pointer").click(function(){jQuery(jQuery("#"+tr_id+" td").get(1)).click();});this.map.div.style.cursor="crosshair";this.check_table_height();if(this.current_track.last_tr)
jQuery("#"+this.current_track.last_tr).removeClass("hit_test_selection");if(this.current_track.last_marker)
this.current_track.last_marker.setUrl("/track_hit_test/pin.png");this.current_track.last_tr=tr_id;this.current_track.last_marker=msg_info.marker;if(mode){jQuery("#"+msg_info.tr_id).addClass("hit_test_selection");this.current_track.last_marker.setUrl("/track_hit_test/pin_selection.png");}},format_distance:function(distance){if(typeof use_us_metrics!="undefined"&&use_us_metrics){var total_dk=distance/1000*0.621;var txt_total_dk=(total_dk>=1)?sprintf(this.translation.distance_mi,total_dk):sprintf(this.translation.distance_ft,distance*3.280);return txt_total_dk;}else{var total_dk=distance/1000;var txt_total_dk=(total_dk>=1)?sprintf(this.translation.distance_km,total_dk):sprintf(this.translation.distance_m,distance);return txt_total_dk;}},check_table_height:function(){var height=jQuery("#hit_test_div").height();var table_height=jQuery("#hit_test_points").height();var style=jQuery("#hit_test_div").css("overflow-y");if(height>300){jQuery("#hit_test_div").css("height",300);jQuery("#hit_test_div").css("overflow-y","auto");}else if(table_height<300&&height==300&&style){jQuery("#hit_test_div").css("height","auto");jQuery("#hit_test_div").css("overflow-y","none");}},check_layer_changed:function(){var val=jQuery("#track_hit_test_tracks").val();var layer=this.layers[val];var uid=jQuery("#track_hit_test_tracks option[selected]").attr("uid");var begin_time=jQuery("#track_hit_test_tracks option[selected]").attr("time");if(this.current_track&&(this.current_track.layer_name!=val||this.current_track.uid!=uid))
this.reset();}});WebCMS.register_module(TrackHittestCMSModule);var mod_mm=WebCMS.get_module("monitoring_map");if(mod_mm)
mod_mm.register_map_layer(TrackHittestCMSModule);var AddressCMSModule=Base.extend({icon_url:'/address/marker.gif',help:null,map:null,translation:{},process_geozone:true,dc_handler:null,markers_layer:null,marker:null,constructor:null,get_type:function(){return'address';},on_init:function(){if(!this.map||!this.map.div)
return;var mod_helpctl=WebCMS.get_module('help_control');if(!mod_helpctl)
return;var html='<table cellspacing="1px" style="width: 100%;">'+'<tr><td colspan="2"><hr size="1px" /></td></tr>'+'<tr><td colspan="2">'+this.translation.content+'</td></tr>'+'<tr><td>'+this.translation.provider+':</td><td>'+'<select id="af_provider" style="min-width: 100px"></select></td></tr>';html+='<tr id="af_auto_export_tr"><td>'+this.translation.auto_export+':</td><td>'+'<input type="checkbox" id="af_auto_export" checked/></td></tr>';html+='<tr><td colspan="2"><hr size="1px" /></td></tr>'+'<tr><td id="af_interface" colspan="2" class="provider_iface"></td></tr>'+'<tr><td colspan="2"><hr size="1px" /></td></tr>'+'<tr><td>'+this.translation.latitude+':</td><td style="width: 100%;">'+'<input id="af_lat" type="text" style="width: 70%;" /></td></tr>'+'<tr><td>'+this.translation.longitude+':</td><td style="width: 100%;">'+'<input id="af_lon" type="text" style="width: 70%;" />&nbsp;&nbsp;'+'<input id="af_respt_button" type="button" value="'+
this.translation.resolve+'" /></td></tr>'+'<tr><td>'+this.translation.address+':</td><td style="width: 100%;">'+'<textarea id="af_address" rows="2" readonly="true" style="max-width: 99%">'+'</textarea></td></tr>'+'<tr><td colspan="2"><hr size="1px" /></td></tr>'+'<tr><td colspan="2" style="text-align: center;">'+'<input id="af_cancel" type="button" value="'+
this.translation.cancel+'"/>'+'&nbsp;<input id="af_export" style="display: none" type="button" value="'+
this.translation.add_point+'"/></td></tr>';html+="<tr valign='top' id='address_account_tr' style='display: none'><td>"+this.translation.account+"</td>";html+="<td><select id='address_account'></select></td></tr>";html+="<tr valign='top' id='address_name_tr' style='display: none'><td>"+this.translation.zone_name+"</td>";html+="<td><input type='text' id='address_name' style='width: 70%;'></input></td></tr>";html+="<tr valign='top' id='address_radius_tr' style='display: none'><td>"+this.translation.radius+"</td>";html+="<td><input type='text' id='address_radius' style='width: 70%;' value='100'></td></tr>";html+="<tr id='address_save_tr'><td colspan='2' style='text-align: center;'><hr size='1px'/><br><input id='af_save' type='button' value='"+this.translation.save+"' disabled/></td></tr></table>";this.help=mod_helpctl.create(this.map.div,this.translation.title,html);if(!this.help)
return;var mod_geocoding=WebCMS.get_module('map_geocoding');var provs=mod_geocoding.get_providers();var s='';for(var i=0;i<provs.length;i++){var prov=provs[i];s+='<option value="'+prov.get_type()+'">'+prov.get_name()+'</option>';}
jQuery('#af_provider').html(s);jQuery('#af_provider').change(function(){AddressCMSModule.update_interface();var provt=jQuery('#af_provider').val();var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(mod_us&&user){user.set_private_property("addr_provider",provt);mod_us.store_settings();}});jQuery('#af_respt_button').click(function(){AddressCMSModule.resolve_point();});jQuery('#af_cancel').click(function(){AddressCMSModule.cancel();});jQuery('#af_export').click(function(){var lat=atof(jQuery("#af_lat").val());var lon=atof(jQuery("#af_lon").val());var text=jQuery("#af_address").val();Wialon.fire_event("store_address",0,{lat:lat,lon:lon,text:text});});jQuery("#af_save").click(function(){var lat=parseFloat(jQuery("#address_name").attr("lat"));var lon=parseFloat(jQuery("#address_name").attr("lon"));var name=jQuery("#address_name").val();var radius=parseInt(jQuery("#address_radius").val());var zones_resource=Wialon.get_item(jQuery("#address_account").val());if(isNaN(lat)||isNaN(lon)||!name.length||isNaN(radius)||!zones_resource){alert(AddressCMSModule.translation.bad_data);return;}
var zone_new=new WialonGeozoneConstructor();var lonlat=0;zone_new.set_name(name);zone_new.set_type(3);zone_new.set_description("");zone_new.set_deviation(radius);zone_new.insert_point(-1,lat,lon,radius);var callback=function(zone_id,error_msg,cparam){if(!zone_id){if(error_msg=="")
error_msg="Error on AJAX request";WebCMS.log_msg(sprintf(error_msg,cparam.name),2);}else{error_msg=AddressCMSModule.translation.create_ok;WebCMS.log_msg(sprintf(error_msg,cparam.name),1);var mod_zg=WebCMS.get_module("zones_group");if(mod_zg)
mod_zg.on_new_zone(cparam.res_id,zone_id);AddressCMSModule.clear_latlon();}};var pl=zones_resource.get_plugin("avl_zones_library");if(!pl)
return;pl.create_zone(zone_new,callback,{name:zone_new.get_name(),res_id:zones_resource.get_id()});});Wialon.bind_event_handler("address_resolved",0,this.address_resolved_proc);Wialon.bind_event_handler("webgis_address_resolved",0,function(event_type,event_id,event_data){Wialon.fire_event("address_resolved",event_id,event_data);});},address_resolved_proc:function(event_type,event_id,event_data){if(event_id){var lat=event_data.lat;var lon=event_data.lon;var text=event_data.text;if(!lat||!lon){lat=AddressCMSModule.last_point.lat;lon=AddressCMSModule.last_point.lon;}
jQuery("#af_address").val(text);jQuery("#address_name").val(text);jQuery("#address_name").attr("lat",lat);jQuery("#address_name").attr("lon",lon);if(AddressCMSModule.process_geozone){if(jQuery("#address_account_tr option").size()>1)
jQuery("#address_account_tr").css("display","");else if(!jQuery("#address_account_tr option").size())
return;jQuery("#address_name_tr").css("display","");jQuery("#address_radius_tr").css("display","");jQuery("#address_save_tr").css("display","");jQuery("#af_save").removeAttr("disabled");}else if(jQuery("#af_auto_export").attr("checked")&&event_id!=2)
Wialon.fire_event("store_address",0,{lat:lat,lon:lon,text:text});jQuery("#af_lat").val(lat);jQuery("#af_lon").val(lon);}else{jQuery("#address_account_tr").css("display","none");jQuery("#address_save_tr").css("display","none");jQuery("#address_name_tr").css("display","none");jQuery("#address_radius_tr").css("display","none");jQuery("#af_save").attr("disabled",1);}},on_terminate:function(){this.cancel();},attach_to_map:function(map){this.map=map;},get_map:function(){return this.map;},init_control:function(callback){if(!this.map||!this.help)
return false;var mapname=Wialon.get_current_user().get_private_property('umap');if(mapname&&mapname!=''){var opts=jQuery('#af_provider').children();for(var i=0;i<opts.length;i++){var pat=opts[i].value.split('_')[1];if(mapname.match(new RegExp(pat,'i'))){jQuery('#af_provider').attr('selectedIndex',i);break;}}}
this.update_interface();this.help.show(true);this.dc_handler=new OpenLayers.Handler.Click({map:this.map},{dblclick:function(e){AddressCMSModule.on_dclick(e);}},{'double':true,stopDouble:true});this.dc_handler.activate();var resources=Wialon.filter_items(Wialon.get_resources(),"edit");if(!resources||!resources.length)
return;var res_count=0;var user=Wialon.get_current_user();var selected=false;var html="";for(var i=0;i<resources.length;i++){if(this.is_resource_limited(resources[i]))
continue;html+="<option value='"+resources[i].get_id()+"'";if(user==resources[i].get_user_creator()&&!selected){html+=" selected";selected=true;}
html+=">"+resources[i].get_name()+"</option>";res_count++;}
if(!res_count)
return;jQuery("#address_account").html(html);this.clear_latlon();if(callback){var id="#"+this.help.target_child_id+"_help_window_id";this.process_geozone=false;jQuery("#af_export").show();jQuery("#af_address").removeAttr("readonly");jQuery("#af_auto_export_tr").show();this.callback=callback;jQuery(id+" #af_cancel").val("old_text",jQuery(id+" #af_cancel").val());jQuery(id+" #af_cancel").val(callback.back_text);}else{this.callback=null;this.process_geozone=true;jQuery("#af_export").hide();jQuery("#af_address").attr("readonly",true);jQuery("#af_auto_export_tr").hide();}
return true;},is_resource_limited:function(res){if(!res)
return true;var pl=res.get_plugin("avl_zones_library");if(!pl)
return true;var zones=pl.get_zones();var limit=pl.get_zones_limit();if(zones&&limit>=0&&zones.length>=limit){return true;}
return false;},cancel:function(){this.hide_marker();if(this.dc_handler){this.dc_handler.destroy();this.dc_handler=null;}
if(this.help)
this.help.show(false);if(this.map)
this.map.updateSize();if(this.callback){var id="#"+this.help.target_child_id+"_help_window_id";jQuery(id+" #af_cancel").val(jQuery(id+" #af_cancel").attr("old_text"));this.callback.back_proc();}},display_marker:function(lonlat,text){if(!this.markers_layer){var mod_monunits=WebCMS.get_module("monitoring_units_markers");if(mod_monunits)
this.markers_layer=mod_monunits.get_layer();if(!this.markers_layer)
return;}
if(!this.marker){var size=new OpenLayers.Size(21,32);var offset=new OpenLayers.Pixel(-size.w/2,-size.h);var icon=new OpenLayers.Icon(this.icon_url,size,offset);this.marker=new OpenLayers.Marker(lonlat,icon);this.markers_layer.addMarker(this.marker);}else{var px=this.map.getLayerPxFromLonLat(lonlat);if(px){this.marker.moveTo(px);this.markers_layer.redraw();}}},annotate_marker:function(text){if(text=="X")
jQuery(this.marker.icon.imageDiv).removeAttr("title").Tooltip({showUrl:false});else if(text)
jQuery(this.marker.icon.imageDiv).attr("title",text).Tooltip({showUrl:false});else
jQuery(this.marker.icon.imageDiv).attr("title",this.translation.n_a).Tooltip({showUrl:false});},hide_marker:function(){if(this.markers_layer&&this.marker){this.markers_layer.removeMarker(this.marker);this.marker=null;}},center_on:function(point,zoom){var lonlat=new OpenLayers.LonLat(point.lon,point.lat);lonlat.transform(this.map.displayProjection,this.map.getProjectionObject());this.map.setCenter(lonlat);if(zoom)
this.map.zoomTo(zoom);this.display_marker(lonlat);},callback_address:function(res,point,zoom){if(res){this.clear_latlon();this.center_on(point,zoom);this.annotate_marker((point.text&&point.text.length)?point.text:(sprintf("%.2f",point.lat)+" : "+sprintf("%.2f",point.lon)));Wialon.fire_event("address_resolved",2,{lat:point.lat,lon:point.lon,text:point.text});}else{this.hide_marker();Wialon.fire_event("address_resolved",0,null);}},resolve_point:function(point){jQuery('#af_address').val(this.translation.processing);if(point){jQuery('#af_lon').val(point.lon);jQuery('#af_lat').val(point.lat);}else{point={lat:jQuery('#af_lat').val(),lon:jQuery('#af_lon').val()};this.center_on(point);}
var provt=jQuery('#af_provider').val();if(!provt||!point.lat||!point.lon||isNaN(point.lat)||isNaN(point.lon)){jQuery('#af_address').val('');this.hide_marker();return;}
var prov=WebCMS.get_module(provt);var mod_geocoding=WebCMS.get_module('map_geocoding');if(!mod_geocoding){jQuery('#af_address').val('');return;}
mod_geocoding.clear_address_field(prov);this.last_point=point;var res=mod_geocoding.resolve_point(point,prov,function(res,addr,t){t.callback_point(res,addr);},this);if(!res)
jQuery('#af_address').val('');},callback_point:function(res,addr){if(res){jQuery('#af_address').val(addr);if(this.last_point)
Wialon.fire_event("address_resolved",1,{lat:this.last_point.lat,lon:this.last_point.lon,text:addr});}else{jQuery('#af_address').val('');Wialon.fire_event("address_resolved",1,{lat:this.last_point.lat,lon:this.last_point.lon,text:""});}
this.annotate_marker(addr);},on_dclick:function(e){var lonlat=this.map.getLonLatFromViewPortPx(e.xy);this.display_marker(lonlat);lonlat.transform(this.map.getProjectionObject(),this.map.displayProjection);jQuery('#af_lat').val(lonlat.lat);jQuery('#af_lon').val(lonlat.lon);this.resolve_point(lonlat);},clear_latlon:function(){jQuery('#af_lat').val('');jQuery('#af_lon').val('');jQuery('#af_address').val('');jQuery("#address_account_tr").css("display","none");jQuery("#address_save_tr").css("display","none");jQuery("#address_name_tr").css("display","none");jQuery("#address_radius_tr").css("display","none");jQuery("#af_save").attr("disabled",1);this.hide_marker();},update_interface:function(){var mod_geocoding=WebCMS.get_module('map_geocoding');var provt=jQuery('#af_provider').val();var prov=WebCMS.get_module(provt);mod_geocoding.bind_address_iface(prov,'af_interface',function(res,point,t,z){t.callback_address(res,point,z);},this);}});WebCMS.register_module(AddressCMSModule);var mod_monmap=WebCMS.get_module('monitoring_map');if(mod_monmap)
mod_monmap.register_map_layer(AddressCMSModule);var MapSearchCMSModule=Base.extend({constructor:null,get_type:function(){return'map_search';}});WebCMS.register_module(MapSearchCMSModule);var GenericMenuCMSModule=Base.extend({constructor:null,type:"generic_menu",counter:0,handlers:{},get_type:function(){return this.type;},create:function(ids,items){if(typeof ids=="number")
ids=[ids];var menu_id="generic_menu_"+this.counter;var tips=[];var html='<div id="'+menu_id+'" style="display:none; border:1px solid #000000; color:#000000; background-color:#eeeeee; padding:5px; position:absolute; z-index:2999">';for(var i=0;i<items.length;i++){var item=items[i];var item_id=menu_id+"_item_"+i;html+=(i==0?'':'<br />')+'<span id="'+item_id+'" style="cursor:pointer"><img id="'+menu_id+"_img_"+i+'" src="'+item.icon_url+'" />';if(item.text)
tips.push({id:item_id,text:item.text});html+='</span>';}
html+='</div>';jQuery("body").append(html);for(var i=0;i<tips.length;i++)
jQuery("#"+tips[i].id).attr("title",tips[i].text).Tooltip({showURL:false});var disp_for=null;function hide(){if(!disp_for)
return
jQuery("#"+menu_id).hide();jQuery("#"+menu_id).unbind("click");disp_for=null;};function show(x,y,id){jQuery("#"+menu_id).css({left:x,top:y});if(!disp_for){jQuery("#"+menu_id).click(function(e){var id=disp_for;hide();var parts=e.target.id.split("_");var index=parts.pop();if(parts.pop()!="menu"){var item=items[index];if(item&&item.handler)
item.handler(id);}});jQuery("#"+menu_id).show();}
disp_for=id;};function click_handler(e){try{if(ids.indexOf(e.target.id)==-1)
hide();else
show(e.pageX,e.pageY,e.target.id);}catch(e){hide();}
return true;};jQuery(document).click(click_handler);this.handlers[this.counter]=click_handler;var timeout=null;jQuery("#"+menu_id).hover(function(){if(timeout){clearTimeout(timeout);timeout=null;}},function(){if(timeout)
return;timeout=setTimeout(function(){hide();timeout=null;},500);});return this.counter++;},remove:function(descriptor){var menu_id="generic_menu_"+descriptor;jQuery(document).unbind("click",this.handlers[descriptor]);delete this.handlers[descriptor];jQuery("#"+menu_id).remove();}});WebCMS.register_module(GenericMenuCMSModule);var NearestCMSModule=Base.extend({constructor:null,help:null,map:null,translation:{},dc_handler:null,mod_unitsmon:null,mod_routing:null,routing_providers:null,route_calculated:null,units:null,point:null,markers_layer:null,marker:null,icon_url:'/nearest_devices/arrow.gif',citites:null,get_type:function(){return'nearest_devices';},attach_to_map:function(map){this.map=map;},get_map:function(){return this.map;},get_zone_by_ids:function(rid,zid){var res=Wialon.get_item(rid);var p=res.get_plugin("avl_zones_library");return p.get_zone(zid);},init_control:function(){if(!this.map||!this.help)
return false;var mod_uscity=WebCMS.get_module('user_settings_city');jQuery('#nearest_city').val(mod_uscity.get_city());jQuery('#nearest_street').val('');this.help.show(true);if(jQuery('#nearest_city').attr('selectBoxOptions')==null||jQuery('#nearest_city').attr('selectBoxOptions')==''){jQuery('#nearest_city').attr('selectBoxOptions',jQuery('#nearest_city').val());createEditableSelect(jQuery('#nearest_city')[0]);}
jQuery('#nearest_geozones').empty();jQuery('#nearest_geozones').append('<option value="*">'+this.translation.all+'</option>');var resources=Wialon.get_resources();for(var i=0;i<resources.length;i++){var res=resources[i];var p=res.get_plugin("avl_zones_library");if(p){var zones=p.get_zones();if(zones){for(var j=0;j<zones.length;j++){var z=zones[j];var id=res.get_id()+';'+z.get_id();jQuery('#nearest_geozones').append('<option value="'+id+'">'+z.get_name()+'</option>');}}}}
this.dc_handler=new OpenLayers.Handler.Click({map:this.map},{dblclick:function(e){NearestCMSModule.on_double_click(e);}},{'double':true,stopDouble:true});this.dc_handler.activate();return true;},cancel:function(){if(this.markers_layer&&this.marker){this.markers_layer.removeMarker(this.marker);this.marker=null;}
if(this.dc_handler){this.dc_handler.destroy();this.dc_handler=null;}
Wialon.unbind_event_handler("unit_pos_updated",0,this.on_unit_change,this);if(this.help)
this.help.show(false);jQuery('#nearest_streets').empty();jQuery('#nearest_buildings').empty();jQuery('#nearest_units').empty();jQuery('#nearest_city').attr('selectBoxOptions','');this.point=null;if(this.map)
this.map.updateSize();},on_double_click:function(e){this.point=this.map.getLonLatFromViewPortPx(e.xy);this.display_marker(this.point);this.point.transform(this.map.getProjectionObject(),this.map.displayProjection);jQuery("#nearest_geozones").val("*");this.find_nearest();},on_use_routing_click:function(){var f=jQuery('#nearest_use_routing').attr('checked');if(f&&!this.routing_providers){jQuery('#nearest_use_routing').attr('checked',false);alert(this.translation.no_providers);return;}
jQuery('#nearest_routers').attr('disabled',!f);},on_init:function(){if(!this.map&&!this.map.div)
return;var help_ctl=WebCMS.get_module('help_control');if(!help_ctl)
return;var html='<table width="100%"><tr valign="top"><td align="justify" colspan="2"><hr size="1px"></td></tr>'+'<tr valign="top"><td align="left" colspan="2">'+this.translation.content+'</td></tr>'+'<tr valign="top"><td align="justify" colspan="2"><hr size="1px"></td></tr>'+'<tr valign="top"><td>'+this.translation.city+'</td><td><input id="nearest_city" type="text" size="20" /></td></tr>'+'<tr valign="top"><td>'+this.translation.street+'&nbsp;</td><td><input type="text" id="nearest_street" size="20" /></td></tr>'+'<tr valign="top"><td align="justify" colspan="2"><hr size="1px"></td></tr>'+'<tr valign="top"><td colspan="2"><table style="width: 100%;"><tr><td>'+this.translation.streets+'</td><td>'+this.translation.buildings+'</td></tr>'+'<tr><td valign="top"><div id="nearest_streets" class="streets_list_div"></div></td><td valign="top"><div id="nearest_buildings" class="buildings_list_div">'+'</div></td></tr></table></td></tr>'+'<tr valign="top"><td align="justify" colspan="2"><hr size="1px"></td></tr></table>'+'<table class="nearest_flags" width="100%"><tr valign="top"><td>'+this.translation.nunits+'</td>'+'<td align="right"><select id="nearest_nunits">'+'<option>5</option><option>10</option><option>20</option></select></td></tr>'+'<tr valign="top" style="display:none"><td>'+this.translation.only_free+'</td><td align="right"><input id="nearest_only_free" type="checkbox" /></td></tr>'+'<tr valign="top"><td>'+this.translation.use_routing+'</td><td align="right"><input id="nearest_use_routing" type="checkbox" /></td></tr>'+'<tr valign="top"><td>'+this.translation.router+'</td><td align="right"><select id="nearest_routers" disabled="disabled"></select></td></tr>'+'<tr valign="top"><td>'+this.translation.geozone+'</td><td align="right"><select id="nearest_geozones" style="width: 150px;"></select></td></tr>'+'<tr valign="top"><td align="justify" colspan="2"><hr size="1px"></td></tr>'+'<tr valign="top"><td>'+this.translation.units+'</td></tr>'+'<tr><td colspan="2" valign="top"><div class="units_list_div" id="nearest_units"></div></td></tr>'+'<tr valign="top"><td align="justify" colspan="2"><hr size="1px"></td></tr>'+'<tr valign="top"><td align="center" colspan="2"><input id="nearest_cancel" type="button" value="'+this.translation.cancel+'" /></td></tr></table>';this.help=help_ctl.create(this.map.div,this.translation.title,html);if(!this.help)
return;jQuery('#nearest_street').change(function(){NearestCMSModule.load_streets();});jQuery('#nearest_street').keyup(function(){if(jQuery('#nearest_street').val().length>=3)
NearestCMSModule.load_streets();});jQuery('#nearest_city').keyup(function(e){if(e.which==35||e.which==36||e.which==37||e.which==39)
return;var val=jQuery('#nearest_city').val();if(val&&val.length>=3)
WebGIS.search_cities(val,'',function(cities){NearestCMSModule.cities=cities;var opts='';if(cities)
for(var i=0;i<cities.length;i++)
opts+=(i?';':'')+cities[i].text;jQuery('#nearest_city').attr('selectBoxOptions',opts);createEditableSelect(jQuery('#nearest_city')[0]);});});jQuery('#nearest_only_free').change(function(){if(jQuery('#nearest_units').html().length>0){NearestCMSModule.find_nearest();}});this.mod_unitsmon=WebCMS.get_module('monitoring_units');if(!this.mod_unitsmon)
return;this.mod_routing=WebCMS.get_module('map_routing');if(this.mod_routing)
this.routing_providers=this.mod_routing.get_providers();if(!this.routing_providers||this.routing_providers.length==0){this.routing_providers=null;this.mod_routing=null;jQuery('#nearest_use_routing').attr('disabled',true);}else
for(var i=0;i<this.routing_providers.length;i++){var p=this.routing_providers[i];jQuery('#nearest_routers').append('<option value="'+p.get_type()+'">'+p.get_name()+'</option>');}
jQuery('#nearest_geozones').change(function(){if(NearestCMSModule.point){NearestCMSModule.find_nearest();}});jQuery('#nearest_use_routing').click(function(){NearestCMSModule.on_use_routing_click();});jQuery('#nearest_cancel').click(function(){NearestCMSModule.cancel();});},on_terminate:function(){this.cancel();},display_marker:function(lonlat){if(!this.markers_layer){var mod_monunits=WebCMS.get_module("monitoring_units_markers");if(mod_monunits)
this.markers_layer=mod_monunits.get_layer();if(!this.markers_layer)
return;}
if(!this.marker){var size=new OpenLayers.Size(21,32);var offset=new OpenLayers.Pixel(-size.w/2,-size.h);var icon=new OpenLayers.Icon(this.icon_url,size,offset);this.marker=new OpenLayers.Marker(lonlat,icon);this.markers_layer.addMarker(this.marker);}
var px=this.map.getLayerPxFromLonLat(lonlat);if(px){this.marker.moveTo(px);this.markers_layer.redraw();}},center_on:function(lon,lat){var lonlat=new OpenLayers.LonLat(lon,lat);lonlat.transform(this.map.displayProjection,this.map.getProjectionObject());this.map.setCenter(lonlat,14);},center_on_and_mark:function(lon,lat){var lonlat=new OpenLayers.LonLat(lon,lat);lonlat.transform(this.map.displayProjection,this.map.getProjectionObject());this.map.setCenter(lonlat,14);this.display_marker(lonlat);},on_street_click:function(lon,lat,str_id){this.center_on_and_mark(lon,lat);this.point={lon:lon,lat:lat};this.load_buildings(str_id);this.find_nearest();},on_building_click:function(lon,lat){this.center_on_and_mark(lon,lat);this.point={lon:lon,lat:lat};this.find_nearest();},center_on_unit:function(unit){var pos=unit.get_position();this.center_on(pos.lon,pos.lat);},get_driver_phone_html:function(unit){var dcode=unit.get_driver_code();var resources=Wialon.get_resources();for(var i=0;i<resources.length;i++){var r=resources[i];var p=r.get_plugin("avl_drivers");if(!p)
return"";var drivers=p.get_drivers();for(var j=0;j<drivers.length;j++){var d=drivers[j];if(d.get_code()==dcode){var phonenum=d.get_phone_number();if(phonenum&&phonenum!="")
return phonenum;else
return"";}}}
return"";},unit__get_state:function(unit){var mod_monumark=WebCMS.get_module('monitoring_units_markers');if(mod_monumark&&typeof mod_monumark.get_unit_state=="function")
return mod_monumark.get_unit_state(unit);return null;},get_unit_state_html:function(unit){var mod_monumark=WebCMS.get_module('monitoring_units_markers');if(mod_monumark&&typeof mod_monumark.get_unit_state_html=="function")
return mod_monumark.get_unit_state_html(unit);return'';},format_dist:function(dist){return(dist/1000).toFixed(3)+'&nbsp;'+this.translation.km;},display_units:function(){var s='<table width="100%" cellspacing="1px">';var n=jQuery('#nearest_nunits').val();var mod_cmdbtn=WebCMS.get_module('monitoring_units_cmd_btn');for(var i=0;i<n&&i<this.units.length;i++){var u=this.units[i];var pos_u=u.get_position();s+='<tr><td>'+this.get_unit_state_html(u)+'</td><td class="unit_name_td" onclick="NearestCMSModule.center_on_unit(NearestCMSModule.units['+i+']);'+'NearestCMSModule.mod_unitsmon.update_unit_state(NearestCMSModule.units['+i+'], true);">'+u.get_name()+'</td><td>'+
this.get_driver_phone_html(u).split(new RegExp("[\s,;]+")).join('<br>')+'</td><td>'+this.format_dist(u.dist_)+
(u.rdist_==null?"":"&nbsp;("+this.format_dist(u.rdist_)+')')+'</td><td class="unit_name_td" onclick="'+'MonitoringUnitsCmdBtnCMSModule.on_click('+u.get_id()+');">'+mod_cmdbtn.get_unit_state_html(u)+'</td></tr>';}
s+='</table>';jQuery('#nearest_units').html(s);for(var i=0;i<this.units.length;i++){var u=this.units[i];u.dist_=undefined;u.rdist_=undefined;}
Wialon.unbind_event_handler("unit_pos_updated",0,this.on_unit_change,this);Wialon.bind_event_handler("unit_pos_updated",0,this.on_unit_change,this);},callback:function(res,lines,n){if(n>=this.units.length)
return;var u=this.units[n];if(res){var points=[];for(var i=0;i<lines.length;i++)
points=points.concat(lines[i].p);u.rdist_=0;for(i=1;i<points.length;i++){var a=points[i-1];var b=points[i];u.rdist_+=calc_distance(a.y,a.x,b.y,b.x);}}else{u.rdist_=u.dist_;}
if(n<this.units.length-1){n++;var posn=this.units[n].get_position();var prov=WebCMS.get_module(jQuery("#nearest_routers").val());this.mod_routing.calculate_routing(prov,[{x:posn.lon,y:posn.lat},{x:this.point.lon,y:this.point.lat}],1,function(res,lines,arg){arg.callback(res,lines,n);},this);}else{this.units.sort(function(a,b){return a.rdist_-b.rdist_;});this.display_units();}},find_nearest:function(){this.units=this.mod_unitsmon.get_units();for(var i=0;i<this.units.length;){var pos_u=this.units[i].get_position();if(pos_u==null||pos_u.lat==null||pos_u.lon==null)
this.units.splice(i,1);else
i++;}
if(!this.units||this.units.length==0)
jQuery('#nearest_units').empty();else{var only_free=jQuery('#nearest_only_free').attr('checked');var use_routing=jQuery('#nearest_use_routing').attr('checked');if(only_free){for(var i=0;i<this.units.length;){if(this.unit__get_state(this.units[i])!=1)
this.units.splice(i,1);else
i++;}}
var zone_ids=jQuery('#nearest_geozones').val();if(zone_ids!='*'){var rid=parseInt(zone_ids.split(';')[0]);var zid=parseInt(zone_ids.split(';')[1]);for(var i=0;i<this.units.length;){var pos=this.units[i].get_position();if(!this.get_zone_by_ids(rid,zid).point_in_zone(pos.lon,pos.lat))
this.units.splice(i,1);else
i++;}}
for(var i=0;i<this.units.length;i++){var u=this.units[i];var pos_u=u.get_position();u.dist_=calc_distance(this.point.lat,this.point.lon,pos_u.lat,pos_u.lon);}
this.units.sort(function(a,b){return a.dist_-b.dist_;});if(!use_routing)
this.display_units();else if(this.units&&this.units.length>0){jQuery('#nearest_units').html('<p style="text-decoration: blink;">'+this.translation.processing);var pos0=this.units[0].get_position();var provider=WebCMS.get_module(jQuery("#nearest_routers").val());this.mod_routing.calculate_routing(provider,[{x:pos0.lon,y:pos0.lat},{x:this.point.lon,y:this.point.lat}],1,function(res,lines,arg){arg.callback(res,lines,0);},this);}else{jQuery('#nearest_units').html('');}}},load_streets:function(){jQuery('#nearest_buildings').empty();jQuery('#nearest_streets').html('<p style="text-decoration: blink;"> '+this.translation.processing);var city=jQuery('#nearest_city').val();var mod_uscity=WebCMS.get_module('user_settings_city');var city_id=mod_uscity.get_city_id();if(this.cities)
for(var i=0;i<this.cities.length;i++){var c=this.cities[i];if(c.text==city){city_id=c.id;break;}}
if(!city_id){jQuery('#nearest_streets').html('<i>'+this.translation.no_city+'</i>');return;}
var street=jQuery('#nearest_street').val();WebGIS.search_streets(city_id,street,function(streets,arg){arg.display_streets(streets);},this);},display_streets:function(streets){if(!streets||streets.length==0){jQuery('#nearest_streets').html('<i>'+this.translation.no_streets+'</i>');}else{var html='<table>';for(var i=0;i<streets.length;i++){var str=streets[i];html+='<tr><td class="street_td" onclick="NearestCMSModule.on_street_click('+str.lon+','+str.lat+','+str.id+');">'+str.text+'</td></tr>';}
html+='</table>';jQuery('#nearest_streets').html(html);}},load_buildings:function(str_id){WebGIS.search_houses(str_id,'',function(buildings,arg){arg.display_buildings(buildings);},this);},display_buildings:function(buildings){if(!buildings||buildings.length==0){jQuery('#nearest_buildings').html('<i>'+this.translation.no_buildings+'</i>');}else{buildings.sort(function(a,b){a=parseInt(a.text);b=parseInt(b.text);if(a<b)
return-1;if(a==b)
return 0;return 1;});var html='<table>';for(var i=0;i<buildings.length;i+=2){var bld1=buildings[i];var bld2=buildings[i+1];html+=('<tr><td class="building_td" onclick="NearestCMSModule.on_building_click('+bld1.lon+','+bld1.lat+');">'+bld1.text+'</td>');if(bld2)
html+=('<td class="building_td" onclick="NearestCMSModule.on_building_click('+bld2.lon+','+bld2.lat+');">'+bld2.text+'</td>');html+='</tr>';}
html+='</table>';jQuery('#nearest_buildings').html(html);}},on_unit_change:function(event,id,udp,self){self.find_nearest();}});WebCMS.register_module(NearestCMSModule);var mon_map=WebCMS.get_module('monitoring_map');if(mon_map)
mon_map.register_map_layer(NearestCMSModule);var RoutesListCMSModule=Base.extend({constructor:null,routes_layer:null,layers:{},next_index:1,translation:{},route_begin_img_url:"/routes_list/begin.png",route_end_img_url:"/routes_list/end.png",route_del_img_url:"/routes_list/del.png",route_bounds_img_url:"/routes_list/bounds.png",last_layer_index:0,get_type:function(){return"routes_list";},add_route:function(unit,label,type,ival1,ival2,style,init_unit_func){if(!unit||!label||typeof type!='number'||typeof ival1!='number'||typeof ival2!='number')
return false;var index=this.next_index++;var unit_id=unit.get_id();var layer_name="route_unit_"+index;var html="<tr id='route_tr_"+index+"' >";html+="<td ><input type='checkbox' name='route_cb_"+index+"' id='route_cb_"+index+"' checked='true'/></td>";html+="<td";if(typeof style=='object'&&typeof style.c!='undefined'){var color=Number(style.c);if(!isNaN(color)){html+=" style='background-color: #"+sprintf("%06x",color)+"'";}}
html+=">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td width='100%' id='route_label_"+index+"' unit_id="+unit_id+"  ival1="+ival1+" ival2="+ival2+" ><span>"+(label.length>15?(label.substr(0,15)+"..."):label)+"</span></td>";html+="<td id='route_mileage_"+index+"'>&nbsp;</td>";html+="<td><img id='route_begin_"+index+"' src='"+WebCMS.get_img_url(this.route_begin_img_url)+"' title='"+this.translation.title_begin+"'/></td>";html+="<td><img id='route_end_"+index+"' src='"+WebCMS.get_img_url(this.route_end_img_url)+"' title='"+this.translation.title_end+"'/></td>";html+="<td><img id='route_bounds_"+index+"' src='"+WebCMS.get_img_url(this.route_bounds_img_url)+"' title='"+this.translation.title_bounds+"'/></td>";html+="<td><img id='route_del_"+index+"' src='"+WebCMS.get_img_url(this.route_del_img_url)+"' title='"+this.translation.title_del+"'/></td>";html+="</tr>";jQuery("#routes_list_target").append(html);var mod_ust=WebCMS.get_module("user_settings_time");if(mod_ust)
jQuery("#route_label_"+index).attr("title",sprintf("%s<br>%s - %s",label,mod_ust.format_time(ival1,false),mod_ust.format_time(ival2,false))).Tooltip({showURL:false});jQuery("#route_begin_"+index).Tooltip({showURL:false}).css({cursor:"pointer"}).click(function(){RoutesListCMSModule.show_route_point(index,0);});jQuery("#route_end_"+index).Tooltip({showURL:false}).css({cursor:"pointer"}).click(function(){RoutesListCMSModule.show_route_point(index,1);});jQuery("#route_bounds_"+index).Tooltip({showURL:false}).css({cursor:"pointer"}).click(function(){RoutesListCMSModule.set_route_bounds(index);});jQuery("#route_del_"+index).Tooltip({showURL:false}).css({cursor:"pointer"}).click(function(){RoutesListCMSModule.delete_route(index);});jQuery("#route_cb_"+index).click(function(){RoutesListCMSModule.enable_route(index,jQuery(this).attr("checked"));});var mod_mir=WebCMS.get_module("map_image_renderer");var mod_mm=WebCMS.get_module("monitoring_map");if(!mod_mir)
return;var unit_info={id:unit.get_id(),type:type,ival1:ival1,ival2:ival2};if(typeof style=='object'&&style)
unit_info.style=style;var layer=mod_mir.create_msgs_layer([unit_info]);var renderer_layer=mod_mm.get_renderer_layer();if(!layer||!renderer_layer)
return;var renderer=renderer_layer.get_renderer();if(!renderer)
return;var mod_ust=WebCMS.get_module("user_settings_time");if(mod_ust)
renderer.set_tz_offset(mod_ust.get_tz_dst_offset());this.layers[index]=layer;jQuery("#routes_add_btn").attr("disabled",true);layer.create_layer(renderer,layer_name,function(result,layer,renderer,cparam){jQuery("#routes_add_btn").attr("disabled",false);if(!result){alert(RoutesListCMSModule.translation.unitna);jQuery("#route_tr_"+cparam).remove();return;}
RoutesListCMSModule.on_layer_created(layer,cparam);},index);},on_init:function(){var html="<thead><tr><td align='center'></td><td></td><td></td><td></td><td align='center'></td><td align='center'></td><td align='center'></td><td align='center'></td></tr></thead><tbody></tbody>";jQuery("#routes_list_target").html(html);Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.nm!='undefined')
RoutesListCMSModule.on_unit_name_updated(Wialon.get_item(event_id));});},on_unit_name_updated:function(unit){if(!unit||unit.get_type()!="avl_unit")
return;var mod_ust=WebCMS.get_module("user_settings_time");if(!mod_ust)
return;var label=unit.get_name();var unit_id=unit.get_id();jQuery("td [unit_id='"+unit_id+"']").each(function(){var ival1=parseInt(jQuery(this).attr("ival1"));var ival2=parseInt(jQuery(this).attr("ival2"));jQuery(this).html((label.length>15?(label.substr(0,15)+"..."):label));jQuery(this).attr("title",sprintf("%s<br>%s - %s",label,mod_ust.format_time(ival1,false),mod_ust.format_time(ival2,false))).Tooltip({showURL:false});});},on_layer_created:function(layer,index){var mod_mm=WebCMS.get_module("monitoring_map");if(!layer||!mod_mm)
return;var units_data=layer.get_units_data();if(units_data&&units_data.length){var mileage=units_data[0].mileage;if(typeof mileage!='undefined'){if(typeof use_us_metrics!="undefined"&&use_us_metrics)
jQuery("#route_mileage_"+index).html(sprintf("%.2f&nbsp;%s",mileage/1000.0*0.621,this.translation.mi));else
jQuery("#route_mileage_"+index).html(sprintf("%.2f&nbsp;%s",mileage/1000.0,this.translation.km));}}
var renderer_layer=mod_mm.get_renderer_layer();if(!renderer_layer)
return;renderer_layer.update();},show_route_point:function(route_index,point_index){if(typeof this.layers[route_index]=="undefined")
return;var mod_mm=WebCMS.get_module("monitoring_map");var layer=this.layers[route_index];if(!mod_mm)
return;var map=mod_mm.get_map();if(!map)
return;var units_data=layer.get_units_data();if(!units_data||units_data.length<1)
return;var msgs=units_data[0].msgs;if(typeof msgs!='object'||typeof msgs.first=='undefined'||typeof msgs.last=='undefined')
return;var coord=null;if(point_index==0)
coord={lat:msgs.first[1],lon:msgs.first[2]};else
coord={lat:msgs.last[1],lon:msgs.last[2]};var lonlat=new OpenLayers.LonLat(coord.lon,coord.lat);lonlat.transform(map.displayProjection,map.getProjectionObject());map.panTo(lonlat);},set_route_bounds:function(route_index){if(typeof this.layers[route_index]=="undefined")
return;var mod_mm=WebCMS.get_module("monitoring_map");var layer=this.layers[route_index];if(!mod_mm)
return;var layer_bounds=layer.get_bounds();if(!layer_bounds||layer_bounds.length!=4)
return;var ol_bounds=new OpenLayers.Bounds(layer_bounds[1],layer_bounds[0],layer_bounds[3],layer_bounds[2]);mod_mm.set_map_bounds(ol_bounds,true);},enable_route:function(route_index,enable){if(typeof this.layers[route_index]!='undefined'){var checked=jQuery("#sub_menu_show_map").attr("checked")?true:false;if(!checked&&enable){jQuery("#sub_menu_show_map").attr("checked",true);jQuery("#sub_menu_show_map").click();jQuery("#sub_menu_show_map").attr("checked",true);}
var mod_mm=WebCMS.get_module("monitoring_map");var layer=this.layers[route_index];if(!mod_mm)
return;var renderer_layer=mod_mm.get_renderer_layer();if(!renderer_layer)
return;var renderer=renderer_layer.get_renderer();renderer.enable_layer(layer,enable);renderer_layer.update();}},delete_route:function(route_index){var tr_id="#route_tr_"+route_index;jQuery(tr_id).remove();if(typeof this.layers[route_index]!='undefined'){var mod_mm=WebCMS.get_module("monitoring_map");var layer=this.layers[route_index];if(!mod_mm)
return;var renderer_layer=mod_mm.get_renderer_layer();if(!renderer_layer)
return;var renderer=renderer_layer.get_renderer();renderer.remove_layer(layer);renderer_layer.update();}}});WebCMS.register_module(RoutesListCMSModule);var RoutesAddCMSModule=Base.extend({constructor:null,translation:{},color:"0x000000",color_index:0,color_showed:false,get_type:function(){return"routes_add";},on_init:function(){var html="<tbody>";html+="<tr><td align='left' valign='top' width='80px'>"+this.translation.unit+":</td><td valign='top'><select id='routes_add_unit' style='width: 170px;'/></td></tr>";html+="<tr><td align='left' valign='top' width='80px'>"+this.translation.color+":</td><td valign='top'><select id='routes_add_type'></select></td></tr>";html+="<tr id='routes_add_palette_tr'><td align='center' colspan='2' valign='top'><span id='routes_add_color'/><input type='text' id='routes_add_color_value' style='width: 150px; display: none;'></td></tr>";html+="<tr id='routes_add_speed_tr' style='display:none'><td align='center' colspan='2'><div id='routes_add_speed_table' style='width: 100%'/></td></tr>";html+="<tr><td align='left' valign='top' width='80px'>"+this.translation.track_width+":</td><td valign='top'><select id='routes_add_width'></select></td></tr>";html+="<tr><td align='left' valign='top' width='80px'>"+this.translation.annotations+":</td><td valign='top'><input type='checkbox' id='routes_add_annotations' checked='true'></td></tr>";if(typeof available_modules!="undefined"&&available_modules["reports"])
html+="<tr><td align='left' valign='top' width='80px'>"+this.translation.apply_td+":</td><td valign='top'><input type='checkbox' id='routes_apply_td' checked='true'></td></tr>";html+="<tr><td align='left' valign='top' width='80px'>"+this.translation.lock+":</td><td valign='top'><input type='checkbox' id='routes_add_lock'></td></tr>";html+="<tr><td align='left' valign='top' width='80px'>"+this.translation.interval+":</td><td valign='top'><div style='margin: 5px 0px 4px 0px;'><input type='text' id='routes_add_interval_from' style='width: 165px;'/></div><div style='margin: 5px 0px 0px 0px;'><input type='text' id='routes_add_interval_to' style='width: 165px'/></div></td></tr>";html+="<tr><td align='center' colspan='2'><hr></td></tr>";html+="<tr><td align='center' colspan='2'><input type='button' value='"+this.translation.show+"' id='routes_add_btn'/></td></tr>";html+="</tbody>";jQuery("#routes_add_target").html(html);jQuery("#routes_add_type").change(function(){var mod=RoutesAddCMSModule;mod.color_table_show();});jQuery("#routes_apply_td").click(function(){if(jQuery(this).attr("checked"))
jQuery("#routes_add_lock").attr("checked",false);});jQuery("#routes_add_lock").click(function(){if(jQuery(this).attr("checked"))
jQuery("#routes_apply_td").attr("checked",false);});jQuery("#routes_add_unit").change(function(){var mod=RoutesAddCMSModule;var unit=null;jQuery("#routes_add_unit option:selected").each(function(){unit=Wialon.get_item(jQuery(this).attr("value"));});if(!unit)
return;var old_type=parseInt(jQuery("#routes_add_type").val());jQuery("#routes_add_type").empty();jQuery("#routes_add_type").append("<option value='0'>"+mod.translation.default_color+"</option>");var sc=unit.get_public_property("sensors_colors","");if(sc.length){jQuery("#routes_add_type").append("<option value='2'>"+mod.translation.sensor+"</option>");jQuery("#routes_add_type").val(2);}else{sc=unit.get_public_property("speed_colors","");jQuery("#routes_add_type").append("<option value='1'>"+mod.translation.speed+"</option>");if(sc||old_type==1)
jQuery("#routes_add_type").val(1);}
mod.color_table_show();});var mod_ust=WebCMS.get_module("user_settings_time");var date=new Date();date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0);var time_from=mod_ust.get_abs_time(date.getTime()/1000);date.setHours(23);date.setMinutes(59);date.setSeconds(59);date.setMilliseconds(999);var time_to=mod_ust.get_abs_time(date.getTime()/1000);jQuery("#routes_add_interval_from").date_input({lang:WebCMS.get_lang(),dependencyDown:"routes_add_interval_to"}).setDateTimeAbs(time_from);jQuery("#routes_add_interval_to").date_input({lang:WebCMS.get_lang(),dependencyUp:"routes_add_interval_from"}).setDateTimeAbs(time_to);var col=Wialon.sort_items(Wialon.get_units());html="";this.on_workspace_units_changed();Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.nm!='undefined')
RoutesAddCMSModule.on_unit_name_updated(Wialon.get_item(event_id));});Wialon.bind_event_handler("workspace_units_changed",0,function(event_type,event_id,event_data){RoutesAddCMSModule.on_workspace_units_changed();});jQuery("#routes_add_color").addColorPicker({colors:["#FF0000","#00FF00","#0000FF","#FFFF00","#FF9900","#FF00CC","#999900","#00FFFF"],fillString:"&nbsp;&nbsp;&nbsp;&nbsp;"});jQuery("#routes_add_color span").css({cursor:"pointer","background-image":"url(/webbase_sdk/jquery/colorpicker/icon_check.gif)","background-repeat":"no-repeat"}).click(function(){jQuery("#routes_add_color span").css({"background-position":"0 0"});jQuery(this).css({"background-position":"-13px 0"});var clr=jQuery(this).css("background-color");if(clr.length==7)
RoutesAddCMSModule.color="0x"+clr.substring(1);else{var arr=clr.match(/[0-9,\s]+/g)[0].split(", ");RoutesAddCMSModule.color=sprintf("0x%02x%02x%02x",parseInt(arr[0]),parseInt(arr[1]),parseInt(arr[2]));}
var index=0;var sel_index=-1;var sel_id
jQuery("#routes_add_color span").each(function(){if(jQuery(this).css("background-color")==clr)
sel_index=index;index++;});if(sel_index!=-1)
RoutesAddCMSModule.color_index=sel_index;});jQuery("#routes_add_btn").click(function(){var checked=jQuery("#sub_menu_show_map").attr("checked")?true:false;if(!checked){jQuery("#sub_menu_show_map").attr("checked",true);jQuery("#sub_menu_show_map").click();jQuery("#sub_menu_show_map").attr("checked",true);}
RoutesAddCMSModule.on_add_unit();});html="";for(var i=3;i<=15;i++){html+="<option value='"+i+"'>"+i+"px</option>";}
jQuery("#routes_add_width").html(html);var user=Wialon.get_current_user();var track_width=6;if(user){try{var obj=jQuery.parseJSON(user.get_private_property("radd","null"));if(obj){if(typeof obj.w!="undefined")
track_width=obj.w;if(typeof obj.c!="undefined")
this.color_index=obj.c;if(typeof obj.u!="undefined")
jQuery("#routes_add_unit option[@value="+obj.u+"]").attr("selected",true);if(typeof obj.a!="undefined")
jQuery("#routes_add_annotations").attr("checked",obj.a?true:false);if(typeof obj.td!="undefined")
jQuery("#routes_apply_td").attr("checked",obj.td?true:false);if(typeof obj.l!="undefined")
jQuery("#routes_add_lock").attr("checked",obj.l?true:false);}}catch(e){}}
jQuery("#routes_add_color span:eq("+this.color_index+")").click();jQuery("#routes_add_width option[@value="+track_width+"]").attr("selected",true);var unit=null;jQuery("#routes_add_unit option:selected").each(function(){unit=Wialon.get_item(jQuery(this).attr("value"));});jQuery("#routes_add_unit").change();},color_table_show:function(){var mod=RoutesAddCMSModule;var type=parseInt(jQuery("#routes_add_type").val());if(type){var unit=null;jQuery("#routes_add_unit option:selected").each(function(){unit=Wialon.get_item(jQuery(this).attr("value"));});if(!unit)
return;jQuery("#routes_add_speed_tr").css("display","");if(type==1){var sc=unit.get_public_property("speed_colors","0 eec80a0a;20 eeD72ec1;50 CC029508;100 ee456aa8");SpeedColorsCMSModule.bind("routes_add_speed_table",{default_string:sc,use_colorpick:false,tclass:"add_table"});}else{var sc=unit.get_public_property("sensors_colors","0 eeFF0000;1 ee00FF00;2 ee0000FF");SpeedColorsCMSModule.bind("routes_add_speed_table",{default_string:sc,use_colorpick:false,tclass:"add_table",value_type:mod.translation.value,min_val:"-∞"});}
jQuery("#routes_add_palette_tr").css("display","none");mod.color_showed=true;}else
this.color_table_hide();},color_table_hide:function(){var mod=RoutesAddCMSModule;jQuery("#routes_add_speed_tr").css("display","none");SpeedColorsCMSModule.unbind("routes_add_speed_table");jQuery("#routes_add_palette_tr").css("display","");mod.color_showed=false;},on_add_unit:function(){if(!this.check_route_avaible()){alert(this.translation.unitna);return;}
WebCMS.log_action("trackadd","");var unit=null;jQuery("#routes_add_unit option:selected").each(function(){unit=Wialon.get_item(jQuery(this).attr("value"));});if(!unit)
return;var time_from=parseInt(jQuery("#routes_add_interval_from").getDateTimeAbs());var time_to=parseInt(jQuery("#routes_add_interval_to").getDateTimeAbs())+59;if(time_from>time_to||isNaN(time_from)||isNaN(time_to))
return;var width=3;jQuery("#routes_add_width option:selected").each(function(){width=jQuery(this).attr("value");});var mod_rl=WebCMS.get_module("routes_list");if(!mod_rl)
return;var transparency=10;if(width<8)
transparency=20;else
transparency=30;var speed_string="";var speed_conf=this.make_speed_config();var color=this.color;var type=parseInt(jQuery("#routes_add_type").val());if(speed_conf){speed_string=speed_conf.str;color=speed_conf.def_clr;if(type==2)
speed_string="sensor"+speed_string;}else
speed_string="default";var style={w:width,t:transparency,c:color,a:jQuery("#routes_add_annotations").attr("checked")?1:0,td:jQuery("#routes_apply_td").attr("checked")?1:0,l:jQuery("#routes_add_lock").attr("checked")?50:0,s:speed_string};var label=unit.get_name();mod_rl.add_route(unit,label,1,time_from,time_to,style);var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("radd",jQuery.toJSON({w:width,c:this.color_index,u:unit.get_id(),a:jQuery("#routes_add_annotations").attr("checked")?1:0,td:jQuery("#routes_apply_td").attr("checked")?1:0,l:jQuery("#routes_add_lock").attr("checked")?1:0,s:speed_string}));mod_us.store_settings();},on_unit_created:function(unit){if(!unit||unit.get_type()!="avl_unit")
return;var mod_mu=WebCMS.get_module("monitoring_units");if(!mod_mu||!mod_mu.is_unit_available(unit))
return;var html="<option value='"+unit.get_id()+"'>"+unit.get_name()+"</option>";jQuery("#routes_add_unit").append(html);},on_workspace_units_changed:function(units){if(!units){var mod_mu=WebCMS.get_module("monitoring_units");if(!mod_mu)
return;units=mod_mu.get_units();}
var sel_unit=jQuery("#routes_add_unit option[selected]").attr("value");var html="";for(var i=0;i<units.length;i++){var unit=units[i];html+="<option value='"+unit.get_id()+"'>"+unit.get_name()+"</option>";}
jQuery("#routes_add_unit").html(html);jQuery("#routes_add_unit").val(sel_unit);},on_unit_deleted:function(unit){if(!unit||unit.get_type()!="avl_unit")
return;jQuery("#routes_add_unit option[@value="+unit.get_id()+"]").remove();},on_unit_name_updated:function(unit){if(!unit||unit.get_type()!="avl_unit")
return;jQuery("#routes_add_unit option[@value="+unit.get_id()+"]").html(unit.get_name());},check_route_avaible:function(){var unit=null;jQuery("#routes_add_unit option:selected").each(function(){unit=Wialon.get_item(jQuery(this).attr("value"));});if(!unit)
return false;var label=unit.get_name();var time_from=parseInt(jQuery("#routes_add_interval_from").getDateTimeAbs());var time_to=parseInt(jQuery("#routes_add_interval_to").getDateTimeAbs())+59;if(time_from>time_to||isNaN(time_from)||isNaN(time_to))
return false;if(!unit.get_position()||time_from>unit.get_position().get_time())
return false;return true;},make_speed_config:function(){if(!this.color_showed)
return null;var res=SpeedColorsCMSModule.get_speed_colors_result("routes_add_speed_table");var def_color=SpeedColorsCMSModule.get_default_speed_color("routes_add_speed_table");if(!def_color.length)
return null;return{str:res,def_clr:"0x"+def_color};}});WebCMS.register_module(RoutesAddCMSModule);var ZoneCreateCMSModule=Base.extend({constructor:null,img_zone_create_yes_url:"/zone_create/yes.png",img_zone_create_no_url:"/zone_create/no.png",img_zone_create_help_url:"/zone_create/help.png",geozone_layer:null,geozone_control:null,map:null,create_geozone:false,enter_name:false,help_mod:null,save_to_zone:null,translation:{},coeff:[0.994619,0.995992,0.996667,0.995533,1.001228,1.002125,1.006136,1.000555,1.002137,1.006779,1.009492,1.014286,1.024107,1.020076,1.022775,1.030754,1.040894,1.037553,1.044561,1.052370,1.059273,1.071442,1.070705,1.078455,1.091350,1.102193,1.110420,1.122186,1.127641,1.134145,1.154964,1.162891,1.169788,1.192376,1.204152,1.217187,1.234525,1.248846,1.266263,1.280590,1.297454,1.320742,1.337841,1.357593,1.382720,1.407516,1.429218,1.460415,1.483304,1.519167,1.551600,1.581454,1.624046,1.655527,1.703692,1.742173,1.782041,1.829374,1.872315,1.940956,1.996537,2.063585,2.129217,2.193146,2.276169,2.352063,2.449338,2.560503,2.669503,2.791219,2.902039,3.050515,3.215982,3.406356,3.628520,3.851926,4.127395,4.450237,4.808884,5.235419,5.749330,6.341281,7.168006,8.215152,9.570123,11.402398,14.292265,18.967756,28.619620,56.853094],default_color:0x197B30,geozone_color:null,last_user_color:0x197B30,default_style:{fillColor:"#197B30",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#004A80",strokeOpacity:0.5,strokeWidth:1,strokeLinecap:"round",hoverStrokeColor:"#FDC689",hoverStrokeOpacity:0.5,hoverStrokeWidth:0.2,pointRadius:4,hoverPointRadius:1,pointerEvents:"visiblePainted"},use_reports:false,zone:null,get_type:function(){return"zone_create";},get_map:function(){return this.map;},get_layer:function(){return this.geozone_layer;},get_control:function(){return this.geozone_control;},is_active:function(){return this.create_geozone;},attach_to_map:function(map){this.map=map;if(map)
map.events.register('zoomend',this,function(){if(this.get_layer()&&this.get_control())this.redraw();});},create_geozone_layer:function(){this.destroy_geozone_layer();if(this.map){this.geozone_layer=new OpenLayers.Layer.Vector("Geozone creation");this.map.addLayer(this.geozone_layer);}},destroy_geozone_layer:function(){if(this.geozone_layer){this.map.removeLayer(this.geozone_layer);this.geozone_layer=null;}},destroy_geozone_control:function(){if(this.geozone_control){this.geozone_control.deactivate();this.map.removeControl(this.geozone_control);this.map.div.style.cursor="default";this.geozone_control=null;}
var mod_zp=WebCMS.get_module("zone_points");if(mod_zp)
mod_zp.clear(-1);},on_point_hover:function(pointIndex,lon,lat){var mod_zp=WebCMS.get_module("zone_points");if(mod_zp){var type=jQuery("#zone_create_type").val();if(pointIndex!=-1&&type=="line")
mod_zp.show(lon,lat,pointIndex);else if(type=="line")
mod_zp.hide();}
this.calc_area_perim();},on_point_insert:function(pointIndex){var mod_zp=WebCMS.get_module("zone_points");if(mod_zp){if(pointIndex!=-1)
mod_zp.insert_point(pointIndex);else
mod_zp.hide();}
this.calc_area_perim();},on_point_add:function(){var mod_zp=WebCMS.get_module("zone_points");if(mod_zp)
mod_zp.insert_point(-1);this.calc_area_perim();},on_point_remove:function(pointIndex){var mod_zp=WebCMS.get_module("zone_points");if(mod_zp)
mod_zp.clear(pointIndex);this.calc_area_perim();},on_point_added:function(){if(this.geozone_layer){if(this.geozone_layer.features.length>0)
this.geozone_layer.features[0].destroy();}
this.calc_area_perim();},on_check_enter_name:function(){var name=jQuery("#zone_create_name").val();if(name!=""){if(!this.enter_name){this.enter_name=true;jQuery("#zone_create_name_img")[0].src=this.img_zone_create_yes_url;}}else{if(this.enter_name){this.enter_name=false;jQuery("#zone_create_name_img")[0].src=this.img_zone_create_no_url;}}},change_geozone_type:function(){var points=null;if(this.get_control()&&this.get_control().handler)
points=this.get_control().handler.getPoints();var name=jQuery("#zone_create_name").val();this.create_geozone_control();jQuery("#zone_create_name").val(name);var type=jQuery("#zone_create_type").val();if(type=="line"||type=="circle"){var radius=5;if(type=="circle")
radius=100;if(points){if(type=="line"){for(var i=0;i<points.length;i++)
this.on_point_add();}else{if(points.length>1){var dx=points[1].x-points[0].x;var dy=points[1].y-points[0].y;radius=Math.floor(Math.sqrt(dx*dx+dy*dy));}
points=[points[0]];}}
jQuery("#zone_create_width").val(radius);}
if(points&&this.get_control()&&this.get_control().handler){this.get_control().handler.setPoints(points);}
ZoneCreateCMSModule.on_check_enter_name();this.redraw();},change_geozone_width:function(){var type=jQuery("#zone_create_type").val();if((type=='line'||type=='circle')&&this.get_control()&&this.get_control().handler){var geozone_style=OpenLayers.Util.extend({},this.default_style);var geozone_last_style=OpenLayers.Util.extend({},this.default_style);if(type=='line'){geozone_last_style.fillColor="#FF0000";geozone_last_style.fillOpacity=0.9;geozone_last_style.hoverFillColor="red";geozone_last_style.pointRadius=4;geozone_last_style.strokeColor="#FF0000";geozone_last_style.strokeWidth=1;}
geozone_style.fillColor=sprintf("#%06x",this.geozone_color);geozone_style.strokeColor=sprintf("#%06x",this.geozone_color);geozone_last_style.fillColor=sprintf("#%06x",this.geozone_color);geozone_last_style.strokeColor=sprintf("#%06x",this.geozone_color);var width=jQuery("#zone_create_width").val();if(width<0)
width=50;var width_px=this.getWidthPxFromM(width);if(width_px<1)
width_px=2;if(type=='circle'){geozone_style.pointRadiusReal=width;geozone_style.pointRadius=width_px;geozone_last_style.pointRadiusReal=width;geozone_last_style.pointRadius=width_px;}else{geozone_style.strokeWidth=width_px+"px";geozone_last_style.strokeWidth=width_px+"px";}
this.get_control().handler.setStyle(geozone_style,geozone_last_style);var mod_zp=WebCMS.get_module("zone_points");if(mod_zp)
mod_zp.radius=width;}},redraw:function(){var type=jQuery("#zone_create_type").val();if((type=='line'||type=='circle')&&this.get_control()&&this.get_control().handler){this.change_geozone_width();}else{if(this.get_control().handler){this.get_control().handler.drawFeature();}}},create_geozone_control:function(zone){this.destroy_geozone_control();this.zone=zone;if(!this.geozone_layer)
return;jQuery("#zone_create_address").removeAttr("checked");jQuery("#zone_create_ride_begin").removeAttr("checked");jQuery("#zone_create_ride_end").removeAttr("checked");jQuery("#zone_create_name").val("");var points=null;var type=jQuery("#zone_create_type").val();var geozone_style=OpenLayers.Util.extend({},this.default_style);var geozone_last_style=OpenLayers.Util.extend({},this.default_style);if(zone){switch(zone.get_type()){case 1:type="line";break;case 2:default:type="polygon";break;case 3:type="circle";break;}
jQuery("#zone_create_type").val(type);var descr=zone.get_description();var color_str=this.get_zone_descr_param(descr,"color");var color=parseInt(color_str);if(typeof color_str!="string"||color_str.length<8)
color=this.default_color;this.geozone_color=color;jQuery("#zone_create_color").css("background-color",sprintf("#%06x",color));jQuery("#zone_create_color").attr("ac_color",color);geozone_style.fillColor=sprintf("#%06x",color);geozone_style.strokeColor=sprintf("#%06x",color);geozone_last_style.fillColor=sprintf("#%06x",color);geozone_last_style.strokeColor=sprintf("#%06x",color);var mod=WebCMS.get_module("color_picker");mod.set_color(color);var addr=parseInt(this.get_zone_descr_param(descr,"addr"));if(addr)
jQuery("#zone_create_address").attr("checked",true);var ride_begin=parseInt(this.get_zone_descr_param(descr,"ride_begin"));if(ride_begin)
jQuery("#zone_create_ride_begin").attr("checked",true);var ride_end=parseInt(this.get_zone_descr_param(descr,"ride_end"));if(ride_end)
jQuery("#zone_create_ride_end").attr("checked",true);jQuery("#zone_create_name").val(zone.get_name());points=[];if(type=="circle"){var p=zone.get_points()[0];var c=new OpenLayers.LonLat(p.lon,p.lat);c.transform(this.map.displayProjection,this.map.getProjectionObject());points.push(new OpenLayers.Geometry.Point(c.lon,c.lat));}else{var zone_points=zone.get_points();for(var i=0;i<zone_points.length;i++){var ptc=zone_points[i];var pt=new OpenLayers.LonLat(ptc.lon,ptc.lat);pt.transform(this.map.displayProjection,this.map.getProjectionObject());var new_point=new OpenLayers.Geometry.Point(pt.lon,pt.lat);points.push(new_point);}}
var width=zone.get_deviation();jQuery("#zone_create_width").val(width);var mod_zp=WebCMS.get_module("zone_points");if(mod_zp)
mod_zp.radius=width;}else{if(this.geozone_color==null)
this.geozone_color=this.last_user_color;jQuery("#zone_create_color").css("background-color",sprintf("#%06x",this.geozone_color));geozone_style.fillColor=sprintf("#%06x",this.geozone_color);geozone_style.strokeColor=sprintf("#%06x",this.geozone_color);geozone_last_style.fillColor=sprintf("#%06x",this.geozone_color);geozone_last_style.strokeColor=sprintf("#%06x",this.geozone_color);var mod=WebCMS.get_module("color_picker");mod.set_color(this.geozone_color);}
switch(type){case"polygon":jQuery("#zone_create_width_line_tr").hide();var options={handlerOptions:{style:geozone_style,lastStyle:geozone_last_style}};this.geozone_control=new OpenLayers.Control.DrawFeature(this.geozone_layer,OpenLayers.Handler.PolygonEx,options);break;case"line":case"circle":jQuery("#zone_create_width_line_tr").show();var width=jQuery("#zone_create_width").val();if(width<0)
width=50;var width_px=this.getWidthPxFromM(width);if(width_px<1)
width_px=2;if(type=='circle'){geozone_style.pointRadiusReal=width;geozone_style.pointRadius=width_px;geozone_last_style.pointRadiusReal=width;geozone_last_style.pointRadius=width_px;}else{geozone_style.strokeWidth=width_px+"px";geozone_last_style.strokeWidth=width_px+"px";}
var options={handlerOptions:{style:geozone_style,lastStyle:geozone_last_style}};if(type=="circle")
options.handlerOptions.maxPoints=1;this.geozone_control=new OpenLayers.Control.DrawFeature(this.geozone_layer,OpenLayers.Handler.PathEx,options);this.get_control().handler.event_disp=this;var mod_zp=WebCMS.get_module("zone_points");if(mod_zp)
mod_zp.event_disp=this.get_control().handler;break;default:return;}
if(this.geozone_control){this.map.addControl(this.geozone_control);this.geozone_control.activate();}
if(points){this.get_control().handler.setPoints(points);}
if(zone){var mod_zp=WebCMS.get_module("zone_points");if(mod_zp)
mod_zp.load_points(zone);}
this.on_check_enter_name();this.calc_area_perim();this.get_control().handler.event_disp=this;},is_resource_limited:function(res){if(!res)
return true;var pl=res.get_plugin("avl_zones_library");if(!pl)
return true;var zones=pl.get_zones();var limit=pl.get_zones_limit();if(zones&&limit>=0&&zones.length>=limit){return true;}
return false;},on_key_down:function(key){if(key.keyCode==27){ZoneCreateCMSModule.on_zone_create_end();}},on_zone_create:function(zone,rid,edit){var acl="edit";if(edit&&Wialon.get_item(rid).get_access_level()<Wialon.access_level("edit")){jQuery("#zone_create_clear_btn").hide();jQuery("#zone_create_save_btn").hide();acl="view";}else{jQuery("#zone_create_clear_btn").show();jQuery("#zone_create_save_btn").show();}
var resources=Wialon.filter_items(Wialon.get_resources(),acl);if(!resources||!resources.length){alert(this.translation.not_resource);return;}
var res_count=0;var res_default=null;var curuser_id=Wialon.get_current_user().get_id();var html="";for(var i=0;i<resources.length;i++){var r=resources[i];if(this.is_resource_limited(r)&&!edit)
continue
res_count++;var res_creator=r.get_user_creator();if(!res_default&&res_creator&&res_creator.get_id()==curuser_id)
res_default=r.get_id();html+="<option value='"+r.get_id()+"'>"+r.get_name()+"</option>";}
jQuery("#zone_create_resource").html(html);if(res_default)
jQuery("#zone_create_resource").val(res_default);if(edit)
jQuery("#zone_create_resource").val(rid).attr("disabled",1);else
jQuery("#zone_create_resource").removeAttr("disabled");if(!res_count){alert(this.translation.limit_reached);return;}else if(res_count==1)
jQuery("#zone_create_resource_tr").hide();else
jQuery("#zone_create_resource_tr").show();if(!this.map)
return;if(!this.geozone_layer)
this.create_geozone_layer();if(!this.geozone_control)
this.create_geozone_control(zone);jQuery("#zones_add_target").css("display","");jQuery("#zones_create_target").css("display","none");jQuery("#zones_action_target").css("display","none");if(this.help_mod)
this.help_mod.show(true);jQuery(window).unbind("keypress",ZoneCreateCMSModule.on_key_down);jQuery(window).bind("keypress",ZoneCreateCMSModule.on_key_down);if(edit)
this.save_to_zone=zone;else
this.save_to_zone=null;jQuery("#block_left_panel").resize();jQuery("#zones_list_target").ft_update_height();this.create_geozone=true;},on_zone_action:function(){var mod_zone_dlg=WebCMS.get_module("zone_dialog");if(!mod_zone_dlg)
return;mod_zone_dlg.show();},on_zone_clear:function(){if(!this.geozone_layer)
return;this.create_geozone_control();var mod_zp=WebCMS.get_module("zone_points");if(mod_zp)
mod_zp.clear(-1);},on_zone_create_end:function(){if(this.geozone_control)
this.destroy_geozone_control();if(this.geozone_layer)
this.destroy_geozone_layer();if(this.help_mod)
this.help_mod.show(false);jQuery("#zones_add_target").css("display","none");jQuery("#zones_create_target").css("display","");jQuery("#zones_action_target").css("display","");jQuery(window).unbind("keypress",ZoneCreateCMSModule.on_key_down);jQuery("#block_left_panel").resize();jQuery("#zones_list_target").ft_update_height();this.create_geozone=false;},getWidthPxFromM:function(line_m){var line_p=0;pixel1=new OpenLayers.Pixel(100,100);var pixel1_=this.map.getLonLatFromPixel(pixel1);pixel1_.transform(this.map.getProjectionObject(),this.map.displayProjection);pixel2=new OpenLayers.Pixel(150,100);var pixel2_=this.map.getLonLatFromPixel(pixel2);pixel2_.transform(this.map.getProjectionObject(),this.map.displayProjection);if(!pixel1_||!pixel2_)
return 0;scale=calc_distance(pixel1_.lat,pixel1_.lon,pixel2_.lat,pixel2_.lon)/50.0;line_p=line_m/scale;return parseInt(line_p);},on_zone_add_library:function(){var name=string_trim(jQuery("#zone_create_name").val());var type=jQuery("#zone_create_type").val();var width=0;var descr="";if(this.use_reports){var addr=jQuery("#zone_create_address").attr("checked")?1:0;descr="addr:"+addr;var ride_begin=jQuery("#zone_create_ride_begin").attr("checked")?1:0;descr+=";ride_begin:"+ride_begin;var ride_end=jQuery("#zone_create_ride_end").attr("checked")?1:0;descr+=";ride_end:"+ride_end;}
if(descr.length>0)
descr+=";";descr+="color:"+sprintf("0x%06x",this.geozone_color);if(name==""){alert(this.translation.insert_name);return;}
var points=this.get_control().handler.getPoints();var control_points=null;var mod_zp=WebCMS.get_module("zone_points");if(mod_zp)
control_points=mod_zp.points;if(!points||points.length==0){alert(this.translation.no_points);return;}
switch(type){case"polygon":type=2;break;case"line":type=1;width=parseInt(jQuery("#zone_create_width").val());if(width<0)
width=0;break;case"circle":type=3;width=parseInt(jQuery("#zone_create_width").val());if(width<0)
width=0;break;default:alert(this.translation.unknown_type);return;}
var zone_new=new WialonGeozoneConstructor();var lonlat=0;zone_new.set_name(name);zone_new.set_type(type);zone_new.set_description(descr);if(width)
zone_new.set_deviation(width);if(type==3){var p=new OpenLayers.LonLat(points[0].x,points[0].y);p.transform(this.map.getProjectionObject(),this.map.displayProjection);zone_new.insert_point(-1,p.lat,p.lon,width);}else{for(var i=0;i<points.length;i++){var p=points[i];var r=0;lonlat=new OpenLayers.LonLat(p.x,p.y);lonlat.transform(this.map.getProjectionObject(),this.map.displayProjection);if(control_points&&control_points[i]&&control_points[i].enable)
r=control_points[i].radius;zone_new.insert_point(-1,lonlat.lat,lonlat.lon,r);}}
if(control_points){for(var i=0;i<control_points.length;i++)
if(control_points[i].enable)
zone_new.set_control_point(i,control_points[i]);}
var resources=Wialon.filter_items(Wialon.get_resources(),"edit");if(!this.save_to_zone&&(!resources||!resources.length))
return;var zones_resource=null;if(resources.length==1){zones_resource=resources[0];}else{var res_id=parseInt(jQuery("#zone_create_resource").val());if(res_id>0)
zones_resource=Wialon.get_item(res_id);}
if(!this.save_to_zone&&(!zones_resource||zones_resource.get_type()!="avl_resource"||this.is_resource_limited(zones_resource)))
return;this.on_zone_create_end();var pl=zones_resource.get_plugin("avl_zones_library");if(!pl)
return null;var callback=function(zone_id,error_msg,cparam){if(!zone_id){if(error_msg=="")
error_msg="Error on AJAX request";WebCMS.log_msg(sprintf(error_msg,cparam.name),2);}else{if(cparam.type=="create")
error_msg=ZoneCreateCMSModule.translation.create_ok;else
error_msg=ZoneCreateCMSModule.translation.edit_ok;ZoneCreateCMSModule.on_zone_clear();WebCMS.log_msg(sprintf(error_msg,cparam.name),1);var mod_zg=WebCMS.get_module("zones_group");if(mod_zg&&cparam.type=="create")
mod_zg.on_new_zone(cparam.res_id,zone_id);}};if(!this.save_to_zone)
pl.create_zone(zone_new,callback,{name:zone_new.get_name(),res_id:zones_resource.get_id(),type:"create"});else{zone_new.id=this.save_to_zone.id;pl.update_zone(zone_new,callback,{name:zone_new.get_name(),res_id:zones_resource.get_id(),type:"edit"});}},on_init:function(){if(WebCMS.get_module("zones_group")||WebCMS.get_module("report_templates_create"))
this.use_reports=true;var html="<thead><tr><td colspan='2' align='center'>"+this.translation.zone_new+"</td></tr></thead>";html+="<tbody><tr><td align='left' valign='top' width='120px'>"+this.translation.name+":</td>";html+="<td align='left' valign='top'><input type='text' id='zone_create_name' style='width: 150px;'/>&nbsp;&nbsp;";html+="&nbsp;&nbsp;<img id='zone_create_name_img' align='absmiddle'></td></tr>"
html+="<tr><td align='left' valign='top'>"+this.translation.type+":</td>";html+="<td align='left' valign='top'><select id='zone_create_type' style='width: 150px; text-align: left;'/></td></tr>";html+="<tr id='zone_create_width_line_tr'><td align='left' width='80px' valign='top'>"+this.translation.width+" (m):</td>";html+="<td align='left' valign='top'><input type='text' id='zone_create_width' style='width: 150px;' value='50'/></td></tr>"
html+="<tr id='zone_create_resource_tr'><td align='left' width='80px' valign='top'>"+this.translation.account+":</td>";html+="<td align='left' valign='top'><select id='zone_create_resource' style='width: 150px;' value=''> </select></td></tr>";html+="<tr><td align='left' width='80px' valign='top'>"+this.translation.area+":</td>";html+="<td align='left' valign='top'><input type='text' id='zone_create_area' readonly style='width: 150px;' value='0'/></td></tr>";html+="<tr><td align='left' width='80px' valign='top'>"+this.translation.perim+":</td>";html+="<td align='left' valign='top'><input type='text' id='zone_create_perim' readonly style='width: 150px;' value='0'/></td></tr>";if(this.use_reports){html+="<tr><td align='left' width='80px' valign='top'>"+this.translation.address+":</td>";html+="<td align='left' valign='top'><input type='checkbox' id='zone_create_address'/></td></tr>";html+="<tr><td align='left' width='80px' valign='top'>"+this.translation.ride_begin+":</td>";html+="<td align='left' valign='top'><input type='checkbox' id='zone_create_ride_begin'/></td></tr>";html+="<tr><td align='left' width='80px' valign='top'>"+this.translation.ride_end+":</td>";html+="<td align='left' valign='top'><input type='checkbox' id='zone_create_ride_end'/></td></tr>";}
html+="<tr><td align='left' width='80px' valign='top'>"+this.translation.change_color+":</td>";html+="<td align='left' valign='top'><div style='background-color:"+sprintf("#%06x",this.last_user_color)+";border:1px black solid;height:12px;width:12px;cursor:pointer;' ";html+="id='zone_create_color' align='center'></div></span></td></tr>";html+="<tr><td colspan='2' align='center'><hr></td></tr>";html+="<tr><td colspan='2' align='center'><input type='button' value='"+this.translation.cancel+"' id='zones_create_end_btn' style='width: 80px'>";html+="&nbsp;<input type='button' value='"+this.translation.clear+"' id='zone_create_clear_btn' style='width: 80px'>";html+="&nbsp;<input type='button' value='"+this.translation.save+"' id='zone_create_save_btn' style='width: 80px'>";html+="</td></tr></tbody>";jQuery("#zones_add_target").html(html);jQuery("#zones_add_target").hide();html="<option value='polygon'>"+this.translation.polygon+"</option>";html+="<option value='line'>"+this.translation.line+"</option>";html+="<option value='circle'>"+this.translation.circle+"</option>";jQuery("#zone_create_type").html(html);jQuery("#zone_create_width_line_tr").hide();jQuery("#zone_create_resource_tr").hide();jQuery("#zones_create_target").bind("click",this,function(evt){ZoneCreateCMSModule.on_zone_create();});jQuery("#zones_action_target").bind("click",this,function(evt){ZoneCreateCMSModule.on_zone_action();});jQuery("#zones_create_end_btn").click(function(){ZoneCreateCMSModule.on_zone_create_end();});jQuery("#zone_create_save_btn").click(function(){ZoneCreateCMSModule.on_zone_add_library();});jQuery("#zone_create_clear_btn").click(function(){ZoneCreateCMSModule.on_zone_clear();});jQuery("#zone_create_name").keyup(function(event){ZoneCreateCMSModule.on_check_enter_name();});jQuery("#zone_create_type").change(function(event){ZoneCreateCMSModule.change_geozone_type();ZoneCreateCMSModule.calc_area_perim();});jQuery("#zone_create_width").keydown(function(event){if(event.which<='9'.charCodeAt(0)||(96<=event.which&&event.which<=105)||event.which==0x7F||event.which==190||event.which==110)
return true;return false;});jQuery("#zone_create_width").keyup(function(event){ZoneCreateCMSModule.change_geozone_width();ZoneCreateCMSModule.calc_area_perim();});jQuery("#zone_create_name_img").attr("src",this.img_zone_create_no_url);jQuery("#zone_create_color").click(function(){var self=ZoneCreateCMSModule;var mod=WebCMS.get_module("color_picker");if(mod)
mod.pick_color(jQuery(this).offset().top,jQuery(this).offset().left,self.geozone_color,function(color){var self=ZoneCreateCMSModule;self.last_user_color=color;self.geozone_color=color;jQuery("#zone_create_color").css("background-color",sprintf("#%06x",color));var type=jQuery("#zone_create_type").val();if(type=="line"||type=="circle"){self.change_geozone_width();}else{var style=OpenLayers.Util.extend({},self.default_style);style.fillColor=sprintf("#%06x",color);style.strokeColor=sprintf("#%06x",color);self.get_control().handler.setStyle(style);}});});var hc=WebCMS.get_module("help_control");if(hc&&this.map){var html="<table width='100%' cellspacing='1px'>";html+="<tr valign='top'><td colspan='2' align='center'><hr size='1px'></td></tr>";html+="<tr valign='top'><td style='color: #000000;'>"+this.translation.help_add_point+":</td><td>"+this.translation.help_add_point_descr+"</td></tr>";html+="<tr valign='top'><td style='color: #000000;'>"+this.translation.help_insert_point+":</td><td>"+this.translation.help_insert_point_descr+"</td></tr>";html+="<tr valign='top'><td style='color: #000000;'>"+this.translation.help_remove_point+":</td><td>"+this.translation.help_remove_point_descr+"</td></tr>";html+="<tr valign='top'><td style='color: #000000;'>"+this.translation.help_move_point+":</td><td>"+this.translation.help_move_point_descr+"</td></tr>";html+="</table>";this.help_mod=hc.create(this.map.div,this.translation.help_title,html);if(!this.help_mod)
return;}},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)
return param[1];}
return 0;},calc_area_perim:function(){if(!this.map||!this.geozone_control||!this.geozone_control.handler)
return;var len=0;var area=0;var center=this.map.getCenter().clone();center.transform(this.map.getProjectionObject(),this.map.displayProjection);var k=1.0;if(center.lat>-90&&center.lat<90)
k=this.coeff[Math.abs(Math.round(center.lat))];if(this.geozone_control.handler.polygon){len=this.geozone_control.handler.polygon.geometry.getLength();area=this.geozone_control.handler.polygon.geometry.getArea();len=len/k;if(area<0)
area=area*-1.0;area=area/(k*k);}else if(this.geozone_control.handler.line){if(jQuery("#zone_create_type").val()=="line"){len=this.geozone_control.handler.line.geometry.getLength()/k;area=len*jQuery("#zone_create_width").val();}else if(this.geozone_control.handler.line.geometry.components&&this.geozone_control.handler.line.geometry.components.length){var r=parseInt(this.geozone_control.handler.style.pointRadiusReal);len=2*Math.PI*r;area=Math.PI*r*r;}}
if(typeof use_us_metrics!="undefined"&&use_us_metrics)
jQuery("#zone_create_perim").val(sprintf(this.translation.length_fmt_mi,(len/1000.0)*0.621,len*3.280));else
jQuery("#zone_create_perim").val(sprintf(this.translation.length_fmt,(len/1000.0),len));if(typeof use_us_metrics!="undefined"&&use_us_metrics)
jQuery("#zone_create_area").val(sprintf(this.translation.area_fmt_mi,(area/1000000.0)*0.621*0.621,area*3.280*3.280));else
jQuery("#zone_create_area").val(sprintf(this.translation.area_fmt,(area/1000000.0),area));}});WebCMS.register_module(ZoneCreateCMSModule);var mod_mm=WebCMS.get_module("monitoring_map");if(mod_mm)
mod_mm.register_map_layer(ZoneCreateCMSModule);var WebGISMap=Base.extend({constructor:function(state){this.name=state.n;this.tags=state.t;this.cp=state.c;this.envelope=state.e;},name:"",tags:"",cp:"",envelope:null,get_name:function(){return this.name;},get_tags:function(){return this.tags;},get_copyright:function(){return this.cp;}});var WebGIS=Base.extend({constructor:null,maps:[],get_maps:function(){return this.maps;},get_location:function(lat,lon,text,callback,cparam){return this.exec_service("search_loc",{text:text,lat:lat,lon:lon},function(result,reply){if(!result)
callback(false,"",cparam);else{callback(true,reply,cparam);}});},get_locations:function(points,text,callback,cparam){if(!points.length)
return false;var lp="";for(var i=0;i<points.length;i++){if(i)
lp+=" ";lp+="{"+points[i].lat+" "+points[i].lon+"}";}
return this.exec_service("search_loc",{text:text,points:lp},function(result,reply){if(!result)
callback(false,new Array,cparam);else{var state;eval("state = "+reply);var arr=new Array;for(var i=0;i<state.locations.length;i++){var l=state.locations[i];arr.push(l);}
delete state;callback(true,arr,cparam);}});},search_cities:function(text,map_tags,callback,cparam){return this.exec_service("search_cities",{text:text,map_tags:map_tags},function(result,reply){if(!result)
callback(null,cparam);else{var col;eval("col = "+reply);var col_copy=col;delete col;callback(col_copy,cparam);}});},search_streets:function(city_id,text,callback,cparam){return this.exec_service("search_streets",{text:text,id:city_id},function(result,reply){if(!result)
callback(null,cparam);else{var col;eval("col = "+reply);var col_copy=col;delete col;callback(col_copy,cparam);}});},search_houses:function(street_id,text,callback,cparam){return this.exec_service("search_houses",{text:text,id:street_id},function(result,reply){if(!result)
callback(null,cparam);else{var col;eval("col = "+reply);var col_copy=col;delete col;callback(col_copy,cparam);}});},init_state:function(state){if(typeof state!="object")
return;this.maps=new Array;for(var i=0;i<state.maps.length;i++)
this.maps.push(new WebGISMap(state.maps[i]));},init_ajax_state:function(callback){return this.exec_service("init_state",{},function(result,reply){if(!result||result==""){if(typeof callback=="function")
callback(false);}else{var state;eval("state = "+reply);this.init_state(state);delete state;if(typeof callback=="function")
callback(true);}});},exec_service:function(svc,parameters,callback){var url=WebAjax.get_jscript_base_url("webgis_sdk=1")+"/webgis_sdk/"+svc+".html";return WebAjax.exec_service(url,parameters,callback);}});function calc_distance(lat1,lon1,lat2,lon2)
{var k=Math.PI/180;var ff=1/298.257;var c,d,f,g,h1,h2,l,o,r,s,w1,w2,sg,cg,sf,cf,sl,cl;if(lat1==lat2&&lon1==lon2)
return 0;f=(lat1+lat2)/2;g=(lat1-lat2)/2;l=(lon1-lon2)/2;sg=Math.sin(g*k);cg=Math.cos(g*k);sf=Math.sin(f*k);cf=Math.cos(f*k);sl=Math.sin(l*k);cl=Math.cos(l*k);w1=Math.pow(sg*cl,2);w2=Math.pow(cf*sl,2);s=w1+w2;w1=Math.pow(cg*cl,2);w2=Math.pow(sf*sl,2);c=w1+w2;o=Math.atan(Math.sqrt(s/c));r=Math.sqrt(s*c)/o;d=2*o*6378.137;h1=(3*r-1)/(2*c);h2=(3*r+1)/(2*s);w1=sf*cg;w1=w1*w1*h1*ff+1;w2=cf*sg;w2=w2*w2*h2*ff;return d*(w1-w2)*1000;}
function get_coord(val,dec_dig,rem_dig,pos,neg,deg_sym){if(!deg_sym)
deg_sym="&deg;";var v=Number(val);var dec=Math.floor(v);var rem=(v-dec)*60.0;var p=String(rem);if(rem<10)
p="0"+rem;var dec2="";var ndec=(dec<0)?"-":"";dec=Math.abs(dec);if(dec_dig==2){if(dec>=0&&dec<10)
dec2="0"+dec;else
dec2=dec;}else if(dec_dig==3){if(dec>=0&&dec<10)
dec2="00"+dec;else if(dec>=10&&dec<100)
dec2="0"+dec;else
dec2=dec;}
dec2=ndec+dec2;return(v>0?pos:neg)+" "+dec2+deg_sym+" "+p.substr(0,rem_dig+3)+"'";}
var ZonesListCMSModule=Base.extend({constructor:null,route_img_url:"/zones_list/foldbar_route_control.png",zone_edit_img_url:"/zones_list/edit.png",zone_edit_disable_img_url:"/zones_list/edit_disable.png",zone_del_img_url:"/zones_list/del.png",zone_del_disable_img_url:"/zones_list/del_disable.png",zone_copy_img_url:"/zones_list/copy.png",units_img_url:"/zones_list/units.png",actions_img_url:"/zones_list/actions.png",feature_on_map:[],feature_ex_on_map:[],geozone_layer:null,map:null,visible_zones:{},visible_zones_count:0,rows_array:new Array,rows_array_hash:new Object,help_mod:null,coeff:[0.994619,0.995992,0.996667,0.995533,1.001228,1.002125,1.006136,1.000555,1.002137,1.006779,1.009492,1.014286,1.024107,1.020076,1.022775,1.030754,1.040894,1.037553,1.044561,1.052370,1.059273,1.071442,1.070705,1.078455,1.091350,1.102193,1.110420,1.122186,1.127641,1.134145,1.154964,1.162891,1.169788,1.192376,1.204152,1.217187,1.234525,1.248846,1.266263,1.280590,1.297454,1.320742,1.337841,1.357593,1.382720,1.407516,1.429218,1.460415,1.483304,1.519167,1.551600,1.581454,1.624046,1.655527,1.703692,1.742173,1.782041,1.829374,1.872315,1.940956,1.996537,2.063585,2.129217,2.193146,2.276169,2.352063,2.449338,2.560503,2.669503,2.791219,2.902039,3.050515,3.215982,3.406356,3.628520,3.851926,4.127395,4.450237,4.808884,5.235419,5.749330,6.341281,7.168006,8.215152,9.570123,11.402398,14.292265,18.967756,28.619620,56.853094],translation:{},default_style:{fillColor:"#197B30",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#004A80",strokeOpacity:0.5,strokeWidth:1,strokeLinecap:"round",hoverStrokeColor:"#FDC689",hoverStrokeOpacity:0.5,hoverStrokeWidth:0.2,pointRadius:4,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted"},text_style:{fillColor:"#FF0000",fontSize:12},point_style:{fillColor:"#197B30",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#004A80",strokeOpacity:0.5,strokeWidth:1,strokeLinecap:"round",hoverStrokeColor:"#FDC689",hoverStrokeOpacity:0.5,hoverStrokeWidth:0.2,pointRadius:4,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted"},acl_res:{},type_filter:"0",name_filter:"*",cached_units:{},cached_zones:{},all_zones_alphabetical:new Array,all_zones_hash:new Object,use_reports:false,priority:-10,get_type:function(){return"zones_list";},get_map:function(){return this.map;},get_layer:function(){return this.geozone_layer;},attach_to_map:function(map){this.map=map;if(map)
map.events.register('zoomend',this,function(){this.redraw();});},create_geozone_layer:function(){if(this.map&&!this.geozone_layer){this.geozone_layer=new OpenLayers.Layer.Vector("Geozones",{displayInLayerSwitcher:false});this.map.addLayer(this.geozone_layer);this.map.setLayerIndex(this.geozone_layer,1);var select_style=OpenLayers.Util.extend({},this.default_style);select_style.fillColor="#FF0000",this.selectControl=new OpenLayers.Control.SelectFeature(this.geozone_layer,{onSelect:function(evt){var mod=ZonesListCMSModule;if(!mod.keydown||!evt||!evt.id.length){jQuery("#geozone_name_div").html("---");return;}
var zone=null;for(var i=0;i<mod.feature_ex_on_map.length;i++){if(mod.feature_ex_on_map[i].ex_feature_id==evt.id){zone=mod.get_geozone_by_feature_id(mod.feature_ex_on_map[i].feature_id);break;}}
if(!zone)
zone=mod.get_geozone_by_feature_id(evt.id);if(zone){var html=zone.z.get_name();html+="<br>"+mod.get_zone_area_perim(evt,zone);html+="<br>"+mod.get_units_zone(zone.rid,zone.z.get_id());html+="<br>"+mod.get_zone_info_cpoint(evt,zone);jQuery("#geozone_name_div").html(html);jQuery("#geozone_name_div table td").css("padding",0);}else
jQuery("#geozone_name_div").html(" ---");},onUnselect:function(evt){jQuery("#geozone_name_div").html("---");},hover:true});this.map.addControl(this.selectControl);this.handler=new OpenLayers.Handler.Keyboard(this.selectControl,{keydown:function(evt){var mod=ZonesListCMSModule;var mod_zc=ZoneCreateCMSModule;if(evt.keyCode==17&&!mod.edit_geozone_id&&!mod_zc.geozone_control&&!mod.keydown&&!jQuery("#TB_window").size()){jQuery("#geozone_name_div").html("---");if(mod.help_mod_sel)
mod.help_mod_sel.show(true);ZonesListCMSModule.selectControl.activate();mod.keydown=true;}},keyup:function(evt){if(evt.keyCode==17){var mod=ZonesListCMSModule;mod.keydown=false;ZonesListCMSModule.selectControl.deactivate();ZonesListCMSModule.selectControl.unselectAll();jQuery("#geozone_name_div").html("---");if(mod.help_mod_sel)
mod.help_mod_sel.show(false);}}});this.handler.activate();var hc=WebCMS.get_module("help_control");if(hc)
this.help_mod_sel=hc.create(this.map.div,this.translation.selected_zone,"<div style='color:red;font-size:14px' id='geozone_name_div'/>",10001);this.map.events.register('mousemove',this,this.mosemove);}},mosemove:function(evt){if(this.keydown&&!evt.ctrlKey){this.keydown=false;ZonesListCMSModule.selectControl.deactivate();ZonesListCMSModule.selectControl.unselectAll();jQuery("#geozone_name_div").html("---");if(this.help_mod_sel)
this.help_mod_sel.show(false);}},destroy_geozone_layer:function(){if(this.geozone_layer){this.map.removeLayer(this.geozone_layer);this.geozone_layer=null;}},on_init:function(){if(jQuery.browser.msie)
jQuery(window).load(function(){ZonesListCMSModule.init_custom();});else
ZonesListCMSModule.init_custom();var mod_wd=WebCMS.get_module("workspace_devices");if(mod_wd)
mod_wd.register_search(this);var html='<select id="zones_type_select" style="width:100%">';html+='<option value="0">'+this.translation.all_geofences+'</option>';html+='<optgroup label="'+this.translation.types+'">';if(WebCMS.get_module("report_templates_create")){html+='<option value="1">'+this.translation.geofences_with_control_points+'</option>';html+='<option value="2">'+this.translation.geofences_without_control_points+'</option>';html+='<option value="3">'+this.translation.geofences_addresses+'</option>';html+='<option value="4">'+this.translation.geofences_ride_beginning+'</option>';html+='<option value="5">'+this.translation.geofences_ride_end+'</option>';html+='<option value="6">'+this.translation.geofences_ride_begend+'</option>';}
html+='<option value="7">'+this.translation.geofences_polygons+'</option>';html+='<option value="8">'+this.translation.geofences_lines+'</option>';html+='<option value="9">'+this.translation.geofences_circles+'</option>';if(WebCMS.get_module("route_monitoring_control")){html+='<option value="10">'+this.translation.routes_begin+'</option>';html+='<option value="11">'+this.translation.routes_end+'</option>';}
html+='</optgroup>';var resources=Wialon.get_resources();if(resources.length>1){html+='<optgroup id="zones_type_select_accounts" label="'+this.translation.accounts+'">';for(var i=0;i<resources.length;i++){var r=resources[i];html+='<option value="-'+r.get_id()+'">'+r.get_name()+'</option>';}
html+='</optgroup>';}
html+='</select>';jQuery("#zones_create_target").after(html);jQuery("#zones_type_select").change(function(){var self=ZonesListCMSModule;var tf_val=jQuery("#zones_type_select").val();self.update_type_filter(tf_val);});},init_custom:function(){Wialon.bind_event_handler("show_panel",0,function(event_type,event_id,event_data){if(event_id=="geozones")
ZonesListCMSModule.on_display_init();});var mod_uit=WebCMS.get_module("unit_info_text");if(mod_uit)
mod_uit.add_info_text(ZonesListCMSModule);var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);var user=Wialon.get_current_user();if(!user)
return;if(user.get_private_property("usgz","1")=="0")
this.show_control=0;else
this.show_control=1;try{var col=jQuery.parseJSON(user.get_private_property("zlst","null"));}catch(e){}
var pre_visible_zones=new Object;if(col){this.create_geozone_layer();for(var i=0;i<col.length;i++){if(typeof col[i]!="string")
continue;var c2=col[i].split("_");if(c2.length!=2)
continue;pre_visible_zones[col[i]]=1;}}
this.update_zones_library();for(var id in pre_visible_zones){if(this.all_zones_hash[id])
this.show_zone(this.all_zones_hash[id].rid,this.all_zones_hash[id].zid,this.all_zones_hash[id].zone);}
Wialon.bind_event_handler("item_created",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_resource")
ZonesListCMSModule.on_resource_created(event_data,event_data.get_plugin("avl_zones_library"));if(event_data.get_type()=="avl_unit"){ZonesListCMSModule.cached_units[event_id]=null;var upd_zones_list=[];ZonesListCMSModule.make_tooltip_cache([Wialon.get_item(event_id)],null,null,upd_zones_list);for(var i=0;i<upd_zones_list.length;i++){var arr=upd_zones_list[i].split("_");var count=ZonesListCMSModule.get_units_zone_count(arr[0],arr[1]);jQuery("#zones_list_units_"+upd_zones_list[i]).html(count.toString());}}});Wialon.bind_event_handler("item_deleted",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_resource")
ZonesListCMSModule.on_resource_deleted(event_data,event_data.get_plugin("avl_zones_library"));if(event_data.get_type()=="avl_unit"){ZonesListCMSModule.cached_units[event_id]=null;for(var zid in ZonesListCMSModule.cached_zones){var count=0;for(var uid in ZonesListCMSModule.cached_zones[zid]){if(uid==event_id)
ZonesListCMSModule.cached_zones[zid][uid]=null;if(ZonesListCMSModule.cached_zones[zid][uid])
count++;}
if(this.show_control)
jQuery("#zones_list_units_"+zid).html(count.toString());else
jQuery("#zones_list_units_"+zid).html("?");}}});Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.zlu!='undefined')
ZonesListCMSModule.on_resource_updated(Wialon.get_item(event_id),event_data.zlu);if(typeof event_data.acl!='undefined'&&event_id==Wialon.get_current_user().get_id()){for(var i in event_data.acl){var item=Wialon.get_item(i);if(item&&item.get_type()=="avl_resource"&&ZonesListCMSModule.acl_res[i]!=item.get_access_level()){ZonesListCMSModule.acl_res[i]=item.get_access_level();ZonesListCMSModule.on_resource_updated(item);}}}
if(typeof event_data.rcu!='undefined')
ZonesListCMSModule.make_table();});Wialon.bind_event_handler("unit_pos_updated",0,function(event_type,event_id,event_data){ZonesListCMSModule.cached_units[event_id]=null;var upd_zones_list=[];ZonesListCMSModule.make_tooltip_cache([Wialon.get_item(event_id)],null,null,upd_zones_list);for(var i=0;i<upd_zones_list.length;i++){var arr=upd_zones_list[i].split("_");var count=ZonesListCMSModule.get_units_zone_count(arr[0],arr[1]);jQuery("#zones_list_units_"+upd_zones_list[i]).html(count.toString());}});},on_display_init:function(){if(this.shown){this.make_table();return;}else
this.shown=true;if(WebCMS.get_module("zones_group"))
this.use_reports=true;var mod=WebCMS.get_module("search_control");if(!mod)
return;mod.attach_to_module(this,"zones_create_target");this.make_table();jQuery("#zones_list_target_div").attr("title","X").Tooltip({showURL:false,track_children:true,bodyHandler:function(e){if(!e)
return"";var mod=ZonesListCMSModule;var id=e;if(id=="zones_list_head_cb")
return"<b>"+mod.translation.select_all+"</b>";else if(id=="zones_list_units")
return"<b>"+mod.translation.units+"</b>";else if(id=="zones_list_action")
return"<b>"+mod.translation.actions+"</b>";else if(id=="zones_list_route")
return"<b>"+mod.translation.routes+"</b>";else if(id.substring(0,16)=="zones_list_name_")
return mod.get_zone_title(id.substr(16));else if(id.substring(0,17)=="zones_list_route_")
return"<b>"+mod.translation.route+"</b>";else if(id.substring(0,16)=="zones_list_edit_")
return"<b>"+mod.translation.edit+"</b>";else if(id.substring(0,15)=="zones_list_del_")
return"<b>"+mod.translation.del+"</b>";else if(id.substring(0,16)=="zones_list_copy_")
return"<b>"+mod.translation.copy+"</b>";else if(id.substring(0,17)=="zones_list_units_"){var arr=id.substr(17).split("_");return mod.get_units_zone(parseInt(arr[0]),parseInt(arr[1]));}else if(id=="zones_list_sel_del"){return"<b>"+mod.translation.sel_del+"</b>";}else if(id.substring(0,16)=="zones_list_route_")
return"<b>"+mod.translation.route+"</b>";return"";}}).click(function(evt){var target=evt.target;var id=target.id;if(typeof id=="undefined")
return;var mod=ZonesListCMSModule;if(id=="zones_list_head_cb"){mod.on_show_all();return;}
var arr=id.split("_");if(arr.length<4)
return;if(arr[2]=="edit")
mod.on_edit_zone(arr[3],arr[4]);else if(arr[2]=="pos")
mod.on_position_poi(arr[3],arr[4]);else if(arr[2]=="del")
mod.on_del_zone(arr[3],arr[4]);else if(arr[2]=="cb")
mod.on_switch_zone(arr[3],arr[4]);else if(arr[2]=="name"){mod.on_locate_zone(arr[3],arr[4]);mod.on_switch_zone(arr[3],arr[4]);}else if(arr[2]=="copy")
mod.on_copy_zone(arr[3],arr[4]);else if(arr[2]=="sel"&&arr[3]=="del")
mod.on_sel_del_zone();else if(arr[2]=="route")
mod.on_create_route(arr[3],arr[4]);});var hc=WebCMS.get_module("help_control");if(hc&&this.map){var html="<table width='100%' cellspacing='1px'>";html+="<tr valign='top'><td colspan='2' align='center'><hr size='1px'></td></tr>";html+="<tr valign='top'><td style='color: #000000;'>"+this.translation.help_add_point+":</td><td>"+this.translation.help_add_point_descr+"</td></tr>";html+="<tr valign='top'><td style='color: #000000;'>"+this.translation.help_insert_point+":</td><td>"+this.translation.help_insert_point_descr+"</td></tr>";html+="<tr valign='top'><td style='color: #000000;'>"+this.translation.help_remove_point+":</td><td>"+this.translation.help_remove_point_descr+"</td></tr>";html+="<tr valign='top'><td style='color: #000000;'>"+this.translation.help_move_point+":</td><td>"+this.translation.help_move_point_descr+"</td></tr>";html+="</table>";this.help_mod=hc.create(this.map.div,this.translation.help_title,html);if(!this.help_mod)
return;}},get_table_row_html:function(pos){var mod=ZonesListCMSModule;if(pos==0){var html="<tr class='zones_list_head_tr'><td class='zones_list_head_tr_td_cb'><input type='checkbox' id='zones_list_head_cb' "+(mod.rows_array.length-1==mod.visible_zones_count?"checked":"")+"/></td>";html+="<td class='zones_list_head_tr_td_zone' align='center'>"+mod.translation.zone+"</td>";html+="<td class='zones_list_head_tr_td_units'><img id='zones_list_units' src='"+mod.units_img_url+"'/></td>";if(WebCMS.get_module("route_monitoring_control")){html+="<td class='zones_list_head_tr_td_route'><img id='zones_list_route' src='"+mod.route_img_url+"'/></td>";}
html+="<td class='zones_list_head_tr_td_actions' colspan='2'><img id='zones_list_action' src='"+mod.actions_img_url+"'/></td>";html+="<td class='zones_list_head_tr_td_sel_del'><img id='zones_list_sel_del' src='"+mod.zone_del_img_url+"' style='cursor:pointer'></td>"
html+="</tr>";return{id:"zones_list_row_header",html:html};}
var zone_obj=mod.rows_array[pos];if(!zone_obj||typeof zone_obj=="undefined")
return null;var html="<tr class='zones_list_tr' id='zones_list_row_"+zone_obj.id+"'>";var img_route_url=mod.zone_route_disable_img_url;var img_edit_url=mod.zone_edit_disable_img_url;var img_delete_url=mod.zone_del_disable_img_url;if(mod.acl_res[zone_obj.rid]>=Wialon.access_level("edit")){img_edit_url=mod.zone_edit_img_url;img_delete_url=mod.zone_del_img_url;}
html+="<td class='zones_list_tr_td_cb'><input type='checkbox' id='zones_list_cb_"+zone_obj.id+"' "+(mod.visible_zones[zone_obj.id]?"checked":"")+"></td>";html+="<td class='zones_list_tr_td_name' id='zones_list_name_"+zone_obj.id+"'>"+zone_obj.name+"</td>";html+="<td class='zones_list_tr_td_units' id='zones_list_units_"+zone_obj.id+"'>"+mod.get_units_zone_count(zone_obj.rid,zone_obj.zid)+"</td>";if(WebCMS.get_module("route_monitoring_control")){html+="<td class='zones_list_tr_td_route'><img id='zones_list_route_"+zone_obj.id+"' src='"+WebCMS.get_img_url(mod.route_img_url)+"' style='cursor:pointer' /></td>";}
html+="<td class='zones_list_tr_td_edit'><img id='zones_list_edit_"+zone_obj.id+"' src='"+WebCMS.get_img_url(img_edit_url)+"'/></td>";html+="<td class='zones_list_tr_td_copy'><img id='zones_list_copy_"+zone_obj.id+"' src='"+WebCMS.get_img_url(mod.zone_copy_img_url)+"'/></td>";html+="<td class='zones_list_tr_td_del'><img id='zones_list_del_"+zone_obj.id+"' src='"+WebCMS.get_img_url(img_delete_url)+"' "+(img_delete_url==mod.zone_del_disable_img_url?"style='cursor:auto'":"")+"/></td>";html+="</tr>";return{id:"zones_list_row_"+zone_obj.id,html:html};},make_table:function(){if(!this.shown)
return;this.rows_array=new Array;this.rows_array_hash=new Object;this.rows_array_hash["zones_list_row_header"]=this.rows_array.length;this.rows_array.push("zones_list_row_header");var rcol=Wialon.get_resources();var new_visible_zones_count=0;var zones=this.all_zones_alphabetical;for(var i=0;i<zones.length;i++){if(!this.check_filter(zones[i])){if(this.visible_zones[zones[i].id])
this.hide_zone(zones[i].rid,zones[i].zid,zones[i].zone);delete this.visible_zones[zones[i].id];continue;}
this.rows_array_hash[zones[i].id]=this.rows_array.length;this.rows_array.push(zones[i]);if(this.visible_zones[zones[i].id])
new_visible_zones_count++;}
this.visible_zones_count=new_visible_zones_count;var tbl_obj=new Object();tbl_obj.get_row=this.get_table_row_html;tbl_obj.cols_count=6;tbl_obj.rows_count=this.rows_array.length;tbl_obj.erase=true;tbl_obj.gap=4;tbl_obj.parent_class="panel_parent";jQuery("#zones_list_target").fast_table(tbl_obj);},check_filter:function(zone_obj){var type_filter_ok=false;if(this.type_filter=="0")
type_filter_ok=true;else if(this.type_filter=="1"){if(zone_obj.cp_exists)
type_filter_ok=true;}else if(this.type_filter=="2"){if(!zone_obj.cp_exists)
type_filter_ok=true;}else if(this.type_filter=="3"){if(zone_obj.addr)
type_filter_ok=true;}else if(this.type_filter=="4"){if(zone_obj.ride_begin)
type_filter_ok=true;}else if(this.type_filter=="5"){if(zone_obj.ride_end)
type_filter_ok=true;}else if(this.type_filter=="6"){if(zone_obj.ride_begin&&zone_obj.ride_end)
type_filter_ok=true;}else if(this.type_filter=="7"){if(zone_obj.zone.get_type()==2)
type_filter_ok=true;}else if(this.type_filter=="8"){if(zone_obj.zone.get_type()==1)
type_filter_ok=true;}else if(this.type_filter=="9"){if(zone_obj.zone.get_type()==3)
type_filter_ok=true;}else if(this.type_filter=="10"||this.type_filter=="11"){if(WebCMS.get_module("route_monitoring_control")){type_filter_ok=this.filter_routes_zone(zone_obj);}}else if(this.type_filter<0){if(zone_obj.id.split("_")[0]==-this.type_filter)
type_filter_ok=true;}
if(!type_filter_ok)
return false;if(this.name_filter!="*"&&!WebCMS.compare_wildcard(zone_obj.name,this.name_filter))
return false;return true;},filter_routes_zone:function(zone_obj){var obj=zone_obj.id.split("_");var res=Wialon.get_item(obj[0]);var pl=res.get_plugin("avl_route_control");if(!res||!pl)
return false;var routes=pl.get_routes();if(!routes||!routes.length)
return false;for(var i=0;i<routes.length;i++){var rt=routes[i];var zn=rt.get_zone();if(!rt||!zn)
continue;if(zn.get_id()==obj[1]){if((this.type_filter=="10"&&!(rt.get_status()&0x02))||(this.type_filter=="11"&&(rt.get_status()&0x02)))
return true;}}
return false;},update_type_filter:function(filter){this.type_filter=filter;this.make_table();},update_list_filter:function(filter){this.name_filter=filter;this.make_table();},on_resource_deleted:function(res,pl){var rid=res.get_id();if(pl){var zones=pl.get_zones();for(var j=0;j<zones.length;j++){var zone=zones[j];this.update_zone(rid,zone.get_id(),true);}}
var need_update=jQuery("#zones_type_select_accounts").val()==-rid;jQuery("#zones_type_select_accounts > [value=-"+rid+"]").remove();if(need_update){this.type_filter=0;this.make_table();}},on_resource_created:function(res,pl){var rid=res.get_id();if(pl){var zones=pl.get_zones();for(var j=0;j<zones.length;j++){var zone=zones[j];this.update_zone(rid,zone.get_id());}}
jQuery("#zones_type_select_accounts").append("<option value='-"+rid+"'>"+res.get_name()+"</option>");},on_resource_updated:function(res,zl_col){if(!res)
return;if(typeof zl_col!="undefined"&&zl_col&&zl_col.length==2){var zid=zl_col[0];var zone_data=zl_col[1];if(zone_data){this.make_tooltip_cache(null,res.get_id(),zid,null);this.update_zone(res.get_id(),zid,false);}else
this.update_zone(res.get_id(),zid,true);}else{var pl=res.get_plugin("avl_zones_library");this.make_tooltip_cache(null,res.get_id(),null,null);if(pl){var zones=pl.get_zones();var rid=res.get_id();for(var j=0;j<zones.length;j++){var zone=zones[j];jQuery("#zones_list_target").ft_update_row("zones_list_row_"+rid+"_"+zone.get_id());}}}
this.check_select_all_zones();},update_zones_library:function(){this.all_zones_alphabetical=new Array;this.all_zones_hash=new Object;var resources=Wialon.get_resources();for(var i=0;i<resources.length;i++){var res=resources[i];var rid=res.get_id();var plugin=res.get_plugin("avl_zones_library");if(plugin){var zcol=plugin.get_zones();for(var j=0;j<zcol.length;j++){var zone=zcol[j];var descr=zone.get_description();var obj=new Object;obj.rid=rid;obj.zid=zone.get_id();obj.id=obj.rid+"_"+obj.zid;obj.zone=zone;obj.name=zone.get_name();obj.name_lc=obj.name.toLowerCase();obj.addr=parseInt(this.get_zone_descr_param(descr,"addr"));var color_str=this.get_zone_descr_param(descr,"color");var color=parseInt(color_str);if(typeof color_str!="string"||color_str.length<8)
color=ZoneCreateCMSModule.default_color;obj.color=sprintf("#%06x",color);obj.ride_begin=parseInt(this.get_zone_descr_param(descr,"ride_begin"));obj.ride_end=parseInt(this.get_zone_descr_param(descr,"ride_end"));var cps=zone.get_control_points();obj.cp_exists=(cps&&cps.length?cps.length:0);this.all_zones_alphabetical.push(obj);this.all_zones_hash[obj.id]=obj;}
this.make_tooltip_cache(null,rid);}
this.acl_res[rid]=res.get_access_level();}
this.all_zones_alphabetical.sort(function(a,b){if(a.name_lc==b.name_lc)
return 0;if(a.name_lc>b.name_lc)
return 1;else
return-1;});},update_zone:function(rid,zid,remove){var id=rid+"_"+zid;var zone_obj=this.all_zones_hash[id];var pos=this.rows_array_hash[id];if(remove){if(!zone_obj)
return;delete this.all_zones_hash[id];for(var i=0;i<this.all_zones_alphabetical.length;i++)
if(this.all_zones_alphabetical[i].id==id){this.all_zones_alphabetical.splice(i,1);break;}
if(typeof pos!="undefined"){delete this.rows_array_hash[id];this.rows_array.splice(pos,1);for(var rrid in this.rows_array_hash){if(this.rows_array_hash[rrid]>pos)
this.rows_array_hash[rrid]--;}
jQuery("#zones_list_target").ft_remove_row(pos,"zones_list_row_"+id);this.hide_zone(rid,zid);this.check_select_all_zones();}
return;}
var res=Wialon.get_item(rid);if(!res)
return;var pl=res.get_plugin("avl_zones_library")
if(!pl)
return;var zone=pl.get_zone(zid);if(!zone)
return;var old_zone_obj=zone_obj;var descr=zone.get_description();zone_obj=new Object;zone_obj.rid=rid;zone_obj.zid=zone.get_id();zone_obj.id=zone_obj.rid+"_"+zone_obj.zid;zone_obj.zone=zone;zone_obj.name=zone.get_name();zone_obj.name_lc=zone_obj.name.toLowerCase();zone_obj.addr=parseInt(this.get_zone_descr_param(descr,"addr"));var color_str=this.get_zone_descr_param(descr,"color");var color=parseInt(color_str);if(typeof color_str!="string"||color_str.length<8)
color=ZoneCreateCMSModule.default_color;zone_obj.color=sprintf("#%06x",color);zone_obj.ride_begin=parseInt(this.get_zone_descr_param(descr,"ride_begin"));zone_obj.ride_end=parseInt(this.get_zone_descr_param(descr,"ride_end"));var cps=zone.get_control_points();zone_obj.cp_exists=(cps&&cps.length?cps.length:0);if(!this.check_filter(zone_obj)){if(old_zone_obj)
this.update_zone(rid,zid,true);var added=false;var name_lc=zone.get_name().toLowerCase();for(var i=0;i<this.all_zones_alphabetical.length;i++){if(name_lc<this.all_zones_alphabetical[i].name_lc&&!added){this.all_zones_alphabetical.splice(i,0,zone_obj);i++;added=true;}}
if(!added)
this.all_zones_alphabetical.push(zone_obj);this.all_zones_hash[id]=zone_obj;return;}
var added=false;var name_lc=zone.get_name().toLowerCase();for(var i=0;i<this.all_zones_alphabetical.length;i++){if(this.all_zones_alphabetical[i].id==id){this.all_zones_alphabetical.splice(i,1);i--;continue;}
if(name_lc<this.all_zones_alphabetical[i].name_lc&&!added){this.all_zones_alphabetical.splice(i,0,zone_obj);i++;added=true;}}
if(!added)
this.all_zones_alphabetical.push(zone_obj);this.all_zones_hash[id]=zone_obj;if(typeof pos!="undefined"){this.rows_array[pos]=zone_obj;jQuery("#zones_list_target").ft_update_row("zones_list_row_"+id);}else{this.rows_array_hash[id]=this.rows_array.length;this.rows_array.push(zone_obj);jQuery("#zones_list_target").ft_append_rows(1);}
if(this.visible_zones[id]){this.hide_zone(rid,zid,zone);this.show_zone(rid,zid,zone);}},get_zone_title:function(id){var zone_obj=this.all_zones_hash[id];if(!zone_obj)
return;var title="<table><tr><td>"+this.translation.type+"</td><td>";var type=zone_obj.zone.get_type();if(type==1){if(zone_obj.cp_exists)
title+=this.translation.control_points;else
title+=this.translation.line;}else if(type==2)
title+=this.translation.polygon;else
title+=this.translation.circle;title+="</td>";if(WebCMS.get_module("report_templates_create")){title+="<tr><td>"+this.translation.address+"</td><td>"+(zone_obj.addr?this.translation.yes:this.translation.no)+"</td></tr>";title+="<tr><td>"+this.translation.ride_begin+"</td><td>"+(zone_obj.ride_begin?this.translation.yes:this.translation.no)+"</td></tr>";title+="<tr><td>"+this.translation.ride_end+"</td><td>"+(zone_obj.ride_end?this.translation.yes:this.translation.no)+"</td></tr>";}
title+="</table>";return title;},on_edit_zone:function(rid,zid){var id=rid+"_"+zid;var obj=this.all_zones_hash[id];var mod_zc=WebCMS.get_module("zone_create");if(!obj||!mod_zc){alert(this.translation.edit_error);return;}
this.show_bounds(rid,zid);this.check_select_all_zones();mod_zc.on_zone_create(obj.zone,rid,true);},on_copy_zone:function(rid,zid){var id=rid+"_"+zid;var obj=this.all_zones_hash[id];var mod_zc=WebCMS.get_module("zone_create");if(!obj||!mod_zc){alert(this.translation.edit_error);return;}
this.show_bounds(rid,zid);mod_zc.on_zone_create(obj.zone,rid,false);jQuery("#zones_list_target").ft_update_height();return;},redraw:function(){if(this.get_layer()){var update=false;for(var i in this.visible_zones){var zone_obj=this.all_zones_hash[i];if(!zone_obj||!zone_obj.zone)
continue;var zone=zone_obj.zone;if(zone.get_type()==2)
continue;var feature_id=this.get_feature_id_by_id_geozone(zone_obj.rid,zone_obj.zid);var feature=this.get_layer().getFeatureById(feature_id);if(!feature)
continue;for(var ii=0;ii<this.feature_ex_on_map.length;ii++){if(this.feature_ex_on_map[ii].feature_id==feature_id){var feature_ex=this.get_layer().getFeatureById(this.feature_ex_on_map[ii].ex_feature_id);if(feature_ex.geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){feature_ex.style.pointRadius=this.getWidthPxFromM(feature_ex.style.pointRadiusReal);}}}
var geozone_style=OpenLayers.Util.extend({},this.default_style);if(zone.get_type()==3){var radius_real=zone.get_deviation();var radius=this.getWidthPxFromM(radius_real);geozone_style.strokeColor=geozone_style.fillColor;geozone_style.pointRadiusReal=radius_real;geozone_style.pointRadius=radius;}else{var width=this.getWidthPxFromM(zone.get_deviation());if(width<=0)
width=2;geozone_style.strokeWidth=width;}
geozone_style.fillColor=zone_obj.color;geozone_style.strokeColor=zone_obj.color;feature.style=geozone_style;update=true;}
if(update)
this.get_layer().redraw();}},get_feature_id_by_id_geozone:function(rid,zid){if(!this.feature_on_map)
return 0;var feature_id=0;for(i=0;i<this.feature_on_map.length;i++){if(this.feature_on_map[i].zone_id==zid&&this.feature_on_map[i].res_id==rid){feature_id=this.feature_on_map[i].feature_id;break;}}
return feature_id;},get_geozone_by_feature_id:function(feature_id){if(!this.feature_on_map||!feature_id)
return null;for(i=0;i<this.feature_on_map.length;i++){if(this.feature_on_map[i].feature_id!=feature_id)
continue;var res=Wialon.get_item(this.feature_on_map[i].res_id);if(!res)
return null;var pl=res.get_plugin("avl_zones_library");if(!pl)
return null;return{z:pl.get_zone(this.feature_on_map[i].zone_id),rid:res.get_id()};}
return null;},check_select_all_zones:function(){var check_all=this.rows_array.length-1==this.visible_zones_count;jQuery("#zones_list_head_cb").attr("checked",check_all);},on_show_all:function(){var check=jQuery("#zones_list_head_cb").attr("checked")?true:false;for(var i=0;i<this.rows_array.length;i++){var obj=this.rows_array[i];if(this.visible_zones[obj.id]&&!check)
this.hide_zone(obj.rid,obj.zid,obj.zone);else if(!this.visible_zones[obj.id]&&check)
this.show_zone(obj.rid,obj.zid,obj.zone);}
this.store_settings();},on_switch_zone:function(rid,zid){var id=rid+"_"+zid;if(jQuery("#zones_list_cb_"+id).attr("checked")?true:false)
this.show_zone(rid,zid,this.all_zones_hash[id].zone);else
this.hide_zone(rid,zid,this.all_zones_hash[id].zone);this.check_select_all_zones();this.store_settings();},show_zone:function(rid,zid,zone){this.create_geozone_layer();if(!zone)
zone=this.get_zone_by_id(rid,zid);if(!zone)
return;var id=rid+"_"+zid;var zone_obj=this.all_zones_hash[id]
if(!zone_obj)
return;if(!this.visible_zones[id]){this.visible_zones_count++;this.visible_zones[id]=1;if(this.shown)
jQuery("#zones_list_target").ft_update_row("zones_list_row_"+id);}else
return;var type=zone.get_type();var geozone_style=OpenLayers.Util.extend({},this.default_style);var text_style=OpenLayers.Util.extend({},this.text_style);if(type==3){geozone_style.strokeColor=geozone_style.fillColor;}
geozone_style.fillColor=zone_obj.color;geozone_style.strokeColor=zone_obj.color;geozone_style.hoverFillColor=zone_obj.color;geozone_style.hoverStrokeColor=zone_obj.color;var zone_points=zone.get_points();if(!zone_points)
return;var points=[];for(var i=0;i<zone_points.length;i++){var ptc=zone.points[i];var pt=new OpenLayers.LonLat(ptc.lon,ptc.lat);pt.transform(this.map.displayProjection,this.map.getProjectionObject());var new_point=new OpenLayers.Geometry.Point(pt.lon,pt.lat);points.push(new_point);}
var feature=null;var features_ext=[];if(type==1){var width=this.getWidthPxFromM(zone.get_deviation());if(width<=0)
width=2;geozone_style.strokeWidth=width;feature=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(points),null,geozone_style);var cps=zone.get_control_points();if(cps){for(var i=0;i<cps.length;i++){if(!cps[i])
continue;var feature_text=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Text(),null,text_style);feature_text.geometry.text=cps[i].name;feature_text.geometry.x=points[i].x;feature_text.geometry.y=points[i].y;features_ext.push(feature_text);var point_style=OpenLayers.Util.extend({},this.point_style);point_style.pointRadiusReal=zone_points[i].radius;point_style.pointRadius=this.getWidthPxFromM(zone_points[i].radius);point_style.fillColor=zone_obj.color;point_style.strokeColor=zone_obj.color;var feature_pt=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(),null,point_style);feature_pt.geometry.x=points[i].x;feature_pt.geometry.y=points[i].y;features_ext.push(feature_pt);}}}else if(type==2){feature=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(points)]),null,geozone_style);}else if(type==3){var radius_real=zone.get_deviation();var radius=this.getWidthPxFromM(radius_real);if(radius<=0)
radius=2;var point_style=OpenLayers.Util.extend({},this.point_style);point_style.pointRadiusReal=radius_real;point_style.pointRadius=radius;point_style.fillColor=zone_obj.color;point_style.strokeColor=zone_obj.color;feature=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(points[0].x,points[0].y),null,point_style);}
if(!feature)
return;this.geozone_layer.addFeatures([feature]);if(features_ext.length)
this.geozone_layer.addFeatures(features_ext);var el_features={"zone_id":zid,"res_id":rid,"feature_id":feature.id};this.feature_on_map.push(el_features);for(var i=0;i<features_ext.length;i++){var el_ex_features={"feature_id":feature.id,"ex_feature_id":features_ext[i].id};this.feature_ex_on_map.push(el_ex_features);}},hide_zone:function(rid,zid){if(!this.geozone_layer)
return;var feature=this.geozone_layer.getFeatureById(this.get_feature_id_by_id_geozone(rid,zid));if(feature)
feature.destroy();var id=rid+"_"+zid;if(this.visible_zones[id]){this.visible_zones_count--;delete this.visible_zones[id];if(this.shown)
jQuery("#zones_list_target").ft_update_row("zones_list_row_"+id);}else
return;for(i=0;i<this.feature_on_map.length;i++){if(this.feature_on_map[i].zone_id==zid&&this.feature_on_map[i].res_id==rid){for(var ii=0;ii<this.feature_ex_on_map.length;){if(this.feature_ex_on_map[ii].feature_id==this.feature_on_map[i].feature_id){var feature=this.get_layer().getFeatureById(this.feature_ex_on_map[ii].ex_feature_id);if(feature)
feature.destroy();this.feature_ex_on_map.splice(ii,1);}else
ii++;}
this.feature_on_map.splice(i,1);break;}}},on_locate_zone:function(rid,zid){this.show_zone(rid,zid);this.check_select_all_zones();this.show_bounds(rid,zid);WebCMS.log_action("locate","zone");},show_bounds:function(rid,zid,zone){if(!zone)
zone=this.get_zone_by_id(rid,zid);if(!zone)
return;var zone_points=zone.get_points();if(!zone_points)
return;var bounds=null;if(zone.get_type()==3){var p=zone_points[0];var r=p.radius/(2.0*110000);bounds=new OpenLayers.Bounds(p.lon-r,p.lat-r,p.lon+r,p.lat+r);}else{for(var j=0;j<zone_points.length;j++){var ptc=zone_points[j];if(!bounds)
bounds=new OpenLayers.Bounds(ptc.lon,ptc.lat,ptc.lon,ptc.lat);else
bounds.extend(new OpenLayers.LonLat(ptc.lon,ptc.lat));}}
if(bounds&&MonitoringMapCMSModule){MonitoringMapCMSModule.set_map_bounds(bounds,true);this.redraw();}},get_zone_by_id:function(rid,zid){var res=Wialon.get_item(rid);if(!res||res.get_type()!="avl_resource")
return null;var pl=res.get_plugin("avl_zones_library");if(!pl)
return null;var zone=pl.get_zone(zid);return zone;},on_del_zone:function(rid,zid,flag_sel_del){if(this.acl_res[rid]<Wialon.access_level("edit"))
return;if(!flag_sel_del)
if(confirm(this.translation.question_delete)==false)
return;var zone=this.get_zone_by_id(rid,zid);if(!zone)
return;this.hide_zone(rid,zid,zone);var callback=function(res,error_msg,cparam){if(!res){if(error_msg=="")
error_msg="Error on AJAX request";}else
error_msg=ZonesListCMSModule.translation.del_geozone;WebCMS.log_msg(sprintf(error_msg,cparam.name),1);};var res=Wialon.get_item(rid);if(!res||res.get_type()!="avl_resource")
return null;var pl=res.get_plugin("avl_zones_library");if(!pl)
return null;pl.delete_zone(zone,callback,{name:zone.get_name(),res:res,id:zone.get_id()});},on_sel_del_zone:function(){var col=null;var user=Wialon.get_current_user();if(!user)
return;try{col=jQuery.parseJSON(user.get_private_property("zlst","null"));}catch(e){}
if(!col||isNaN(col.length)||!col.length)
return;if(!confirm(sprintf(this.translation.sel_zones_del,col.length)))
return;for(var i=0;i<col.length;i++){var item=col[i];if(!item)
continue;var zn=item.split('_');this.on_del_zone(zn[0],zn[1],true);}},on_create_route:function(rid,zid){if(Wialon.get_item(rid).get_access_level()<Wialon.access_level("edit")){alert(this.translation.no_rights);return;}
var mod_rdlg=WebCMS.get_module("route_control_dialog");if(mod_rdlg)
mod_rdlg.show(rid,0,0,zid);},getWidthPxFromM:function(line_m){var line_p=0;pixel1=new OpenLayers.Pixel(100,100);var pixel1_=this.map.getLonLatFromPixel(pixel1);pixel1_.transform(this.map.getProjectionObject(),this.map.displayProjection);pixel2=new OpenLayers.Pixel(150,100);var pixel2_=this.map.getLonLatFromPixel(pixel2);pixel2_.transform(this.map.getProjectionObject(),this.map.displayProjection);if(!pixel1_||!pixel2_)
return 0;scale=calc_distance(pixel1_.lat,pixel1_.lon,pixel2_.lat,pixel2_.lon)/50.0;line_p=line_m/scale;return parseInt(line_p);},store_settings:function(){if(!this.feature_on_map)
return;var col=new Array;for(var i=0;i<this.feature_on_map.length;i++)
col.push(this.feature_on_map[i].res_id+"_"+this.feature_on_map[i].zone_id);var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;var prop_value=jQuery.toJSON(col);user.set_private_property("zlst",prop_value);mod_us.store_settings();},get_info_text:function(unit){var arr=new Array;if(!unit||!this.show_control)
return arr;var zones_str="";var unit_id=unit.get_id();if(this.cached_units[unit_id]==null)
this.make_tooltip_cache([unit]);if(this.cached_units[unit_id]!=null){for(var id in this.cached_units[unit_id])
if(this.cached_units[unit_id][id]!=null){var zone_obj=this.all_zones_hash[id];if(!zone_obj)
continue;if(zones_str.length)
zones_str+=", ";zones_str+="<span style='color:"+zone_obj.color+"'>"+this.cached_units[unit_id][id]+"</span>";}}
if(zones_str.length)
arr.push({name:this.translation.curr_in_zones,value:zones_str});return arr;},get_units_zone:function(res_id,zone_id){var arr=new Array;var zid=res_id+"_"+zone_id;var html="<table>";var count=0;if(this.cached_zones[zid]==null)
this.make_tooltip_cache(null,res_id,zone_id)
if(this.cached_zones[zid]!=null){var zones=this.cached_zones[zid];var visible_units="";var other_units="";var mod_mu=WebCMS.get_module("monitoring_units");for(var id in zones){if(zones[id]!=null){var unit=Wialon.get_item(id);if(!unit)
continue;count++;var pos=unit.get_position();var loc_text="--";if(pos)
loc_text=pos.get_location();if(mod_mu&&mod_mu.is_unit_visible(unit))
visible_units+="<tr><td><b>"+unit.get_name()+"</b></td><td>"+loc_text+"</td></tr>";else
other_units+="<tr><td>"+unit.get_name()+"</td><td>"+loc_text+"</td></tr>";}}
html+=visible_units+other_units;}
html+="</table>";if(count)
return html;else
return"---";},get_units_zone_count:function(res_id,zone_id){if(!this.show_control){return"?";}
var count=0;var zid=res_id+"_"+zone_id;if(this.cached_zones[zid]!=null){var zones=this.cached_zones[zid];for(var id in zones)
if(zones[id]!=null)
count++;}
return count;},get_row_html:function(){return"<tr><td>"+this.translation.curr_in_zones+":</td><td><input type='checkbox' id='user_settings_zones_show'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#user_settings_zones_show").attr("checked",this.show_control).attr("title",this.translation.show_zone_descr).Tooltip({showURL:false});},save_row_data:function(){var show=jQuery("#user_settings_zones_show").attr("checked")?1:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("usgz",show?"1":"0");mod_us.store_settings();var mod_map=WebCMS.get_module("monitoring_units");if(typeof wialon_web_mode!="undefined"&&mod_map){if(wialon_web_mode!=WIALON_WEB_MODE_MAP)
jQuery("#menu_modes_map").trigger("click");WebCMS.get_module("foldbar").show_panel("foldbar_geozones");Wialon.fire_event("show_panel","geozones");}
this.show_control=show;this.make_tooltip_cache();this.make_table();},make_tooltip_cache:function(units,resource_id,zone_id,upd_zones_list){if(!this.show_control){this.cached_zones=new Object;this.cached_units=new Object;return;}
var resources=[];if(typeof resource_id=="undefined"||!resource_id)
resources=Wialon.get_resources();else
resources=[Wialon.get_item(resource_id)];if(typeof units=="undefined"||!units)
units=Wialon.get_units();var mod_mum=WebCMS.get_module("monitoring_units_markers");for(var i=0;i<units.length;i++){var unit_id=units[i].get_id();var pos=units[i].get_position();if(!pos)
continue;var lock_on_road=0;if(mod_mum)
lock_on_road=mod_mum.lock_on_road;var lon=lock_on_road?pos.get_road_lon():pos.get_lon();var lat=lock_on_road?pos.get_road_lat():pos.get_lat();if(this.cached_units[unit_id]==null)
this.cached_units[unit_id]={};for(var ii=0;ii<resources.length;ii++){var res=resources[ii];var plugin=res.get_plugin("avl_zones_library");if(plugin){var zones=[];if(resource_id&&typeof zone_id!="undefined")
zones=[plugin.get_zone(zone_id)];else
zones=plugin.get_zones();for(var iii=0;iii<zones.length;iii++){if(!zones[iii])
continue;var zid=res.get_id()+"_"+zones[iii].get_id();if(typeof this.cached_zones[zid]=="undefined"||!this.cached_zones[zid])
this.cached_zones[zid]={};if(zones[iii].point_in_zone(lon,lat)){if(this.cached_zones[zid][unit_id]!=1&&upd_zones_list)
upd_zones_list.push(zid);this.cached_zones[zid][unit_id]=1;this.cached_units[unit_id][zid]=zones[iii].get_name();}else{if(this.cached_zones[zid][unit_id]!=null&&upd_zones_list)
upd_zones_list.push(zid);this.cached_zones[zid][unit_id]=null;this.cached_units[unit_id][zid]=null;}}}}}},create_zone_descr:function(descr,attr,value){var pairs=descr.split(";");var descr_arr=new Array;var checked=false;for(var i=0;i<pairs.length;i++){var param=pairs[i].split(":");if(param=="")
continue;if(param.length==2&&param[0]==attr){descr_arr.push(attr+":"+value);addr_checked=true;}else
descr_arr.push(pairs[i]);}
if(!checked)
descr_arr.push(attr+":"+value);descr=descr_arr.join(";");return descr;},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)
return param[1];}
return 0;},get_search:function(){return{name:this.translation.search_by_zone,comment:this.translation.search_by_zone_comment,check_unit:function(unit,template){var mod_zl=WebCMS.get_module("zones_list");if(!mod_zl)
return false;for(var id in mod_zl.cached_zones){var res_id=id.split("_")[0];var zone_id=id.split("_")[1];var res=Wialon.get_item(res_id);if(!res)
continue;var pl=res.get_plugin("avl_zones_library");if(!pl)
continue;var zone=pl.get_zone(zone_id);var unit_id=unit.get_id();for(var uid in mod_zl.cached_zones[id])
if(uid==unit_id&&mod_zl.cached_zones[id][uid]){if(!template.length)
return false;if(zone&&WebCMS.compare_wildcard(zone.get_name(),template))
return true;}}
if(template.length)
return false;else
return true;}};},get_zone_area_perim:function(feature,zone){if(!feature||!feature.geometry||!zone)
return"";zone=zone.z;var len=0;var area=0;var center=this.map.getCenter().clone();center.transform(this.map.getProjectionObject(),this.map.displayProjection);var k=1.0;if(center.lat>-90&&center.lat<90)
k=this.coeff[Math.abs(Math.round(center.lat))];if(zone.get_type()==2){len=feature.geometry.getLength();area=feature.geometry.getArea();if(area<0)
area=area*-1.0;area=area/(k*k);len=len/k;}else if(zone.get_type()==1){len=feature.geometry.getLength()/k;if(!len){var points=zone.get_points();if(points&&points.length>1){var points_col=[];for(var i=0;i<points.length;i++){if(!points[i])
continue;var point=OpenLayers.Layer.SphericalMercator.forwardMercator(points[i].lon,points[i].lat);points_col.push(new OpenLayers.Geometry.Point(point.lon,point.lat));}
var geometry=new OpenLayers.Geometry.LineString(points_col);len=geometry.getLength()/k;}}
var width=zone.get_deviation();area=len*width;}else{var r=zone.get_deviation();len=2*Math.PI*r;area=Math.PI*r*r;}
var html="<table>";html+="<tr><td>"+this.translation.area+":</td><td>";if(typeof use_us_metrics!="undefined"&&use_us_metrics)
html+=sprintf(this.translation.area_fmt_mi,(area/1000000.0)*0.621*0.621,area*3.280*3.280);else
html+=sprintf(this.translation.area_fmt,(area/1000000.0),area);html+="<tr><td>"+this.translation.perim+":</td><td>";if(typeof use_us_metrics!="undefined"&&use_us_metrics)
html+=sprintf(this.translation.length_fmt_mi,(len/1000.0)*0.621,len*3.280);else
html+=sprintf(this.translation.length_fmt,(len/1000.0),len);html+="</td></tr>";html+="</td></tr></table>";return html;},get_zone_info_cpoint:function(feature,zone){if(!feature||!feature.geometry||!zone)
return"";var points=zone.z.get_points();var cpoints=zone.z.get_control_points();if(!points||!points.length||!cpoints||!cpoints.length)
return"";function format_time(h,m){return((h>9?h:("0"+h))+":"+(m>9?m:("0"+m)));};for(var i=0;i<points.length;i++){var pt=points[i];var cpt=cpoints[i];if(!pt||!cpt)
continue;var point=OpenLayers.Layer.SphericalMercator.inverseMercator(feature.geometry.x,feature.geometry.y);var scale=calc_distance(pt.lat,pt.lon,point.lat,point.lon);if(pt.radius>=scale){var html="";html+="<table>";html+="<tr>";html+="<td>"+this.translation.control_point_name+":</td><td>"+cpt.name+"</td>";html+="</tr>";html+="<tr>";html+="<td>"+this.translation.control_point_radius+":</td><td>"+pt.radius+"</td>";html+="</tr>";html+="<tr>";html+="<td>"+this.translation.control_point_arrive+":</td><td>"+format_time(Math.floor(cpt.arrive/3600),Math.floor((cpt.arrive%3600)/60))+"</td>";html+="</tr>";html+="<tr>";html+="<td>"+this.translation.control_point_arrive_offset+":</td><td>"+cpt.arrive_offset+"</td>";html+="</tr>";html+="<tr>";html+="<td>"+this.translation.control_point_departure+":</td><td>"+format_time(Math.floor(cpt.departure/3600),Math.floor((cpt.departure%3600)/60))+"</td>";html+="</tr>";html+="<tr>";html+="<td>"+this.translation.control_point_departure_offset+":</td><td>"+cpt.departure_offset+"</td>";html+="</tr>";html+="</table>";return html;}}
return"";}});WebCMS.register_module(ZonesListCMSModule);var mod_mm=WebCMS.get_module("monitoring_map");if(mod_mm)
mod_mm.register_map_layer(ZonesListCMSModule);var ZonePointsCMSModule=Base.extend({constructor:null,map:null,points:[],curr_point_id:null,lonlat:null,radius:200,translation:{},zone_add_img_url:"/zone_points/add.png",zone_remove_img_url:"/zone_points/remove.png",get_type:function(){return"zone_points";},attach_to_map:function(map){this.map=map;},on_terminate:function(){},on_init:function(){if(!this.map||!this.map.div)
return;var html="<div id='zone_points_window' style='position: absolute; display: none; z-index: 10001; border: 1px solid #000000; background-color: #EEEEEE; color: #000000;'>";html+="<table id='zone_points_table' cellspacing='1px'>";html+="<tr><td nowrap valign='middle'><img id='zone_points_action_img'/></td><td nowrap id='zone_points_action_text'></td></tr>";html+="<tr id='zone_points_settings'><td colspan='2'><div><table>";html+="<tr valign='top'><td colspan='2'><hr size='1px'></td></tr>";html+="<tr><td nowrap>"+this.translation.name+"</td><td><input id='zone_points_name' type='text' style='width: 150px'/></td></tr>";html+="<tr><td nowrap>"+this.translation.radius+"</td><td><input id='zone_points_radius' type='text' style='width: 150px'/></td></tr>";html+="<tr><td nowrap>"+this.translation.arrive_time+"</td><td><input id='zone_points_arrive' type='text' style='width: 150px'/></td></tr>";html+="<tr><td nowrap>"+this.translation.arrive_time_offset+"</td><td><input id='zone_points_arrive_offset' type='text' style='width: 150px'/></td></tr>";html+="<tr><td nowrap>"+this.translation.departure_time+"</td><td><input id='zone_points_departure' type='text' style='width: 150px'/></td></tr>";html+="<tr><td nowrap>"+this.translation.departure_time_offset+"</td><td><input id='zone_points_departure_offset' type='text' style='width: 150px'/></td></tr>";html+="</table></div></td></tr>";html+="</table></div>";jQuery("#panel_monitoring_map_target").append(html);jQuery("#zone_points_action_img").css({cursor:"pointer"}).click(ZonePointsCMSModule.process_cp);jQuery("#zone_points_name").keyup(function(){ZonePointsCMSModule.store_param("name",jQuery(this).val());});jQuery("#zone_points_arrive").keyup(function(){ZonePointsCMSModule.store_param("arrive",jQuery(this).val());});jQuery("#zone_points_arrive_offset").keyup(function(){ZonePointsCMSModule.store_param("arrive_offset",atoui(jQuery(this).val()));});jQuery("#zone_points_departure").keyup(function(){ZonePointsCMSModule.store_param("departure",jQuery(this).val());});jQuery("#zone_points_departure_offset").keyup(function(){ZonePointsCMSModule.store_param("departure_offset",atoui(jQuery(this).val()));});jQuery("#zone_points_radius").keyup(function(){ZonePointsCMSModule.store_param("radius",atoui(jQuery(this).val()));});jQuery("#zone_points_window").fadeTo('fast',0.8);},show:function(lon,lat,pointIndex){this.lonlat=new OpenLayers.LonLat(lon,lat);this.curr_point_id=pointIndex;this.show_cp();},clear:function(pointIndex){if(pointIndex!=-1){ZonePointsCMSModule.points.splice(pointIndex,1,"");ZonePointsCMSModule.points.sort();ZonePointsCMSModule.points.shift();}else{while(ZonePointsCMSModule.points.length)
ZonePointsCMSModule.points.pop();ZonePointsCMSModule.hide();}},hide:function(){jQuery("#zone_points_window").css("display","none");ZonePointsCMSModule.curr_point_id=-1;},store_param:function(prop_name,param_value){var point=ZonePointsCMSModule.points[ZonePointsCMSModule.curr_point_id];if(!point)
return;if(prop_name=="arrive"||prop_name=="departure"){var arr=param_value.split(":");if(!(arr.length==2&&!isNaN(arr[0])&&!isNaN(arr[1])&&arr[0]>=0&&arr[1]>=0&&arr[1]<60)&&!(arr.length==1&&!isNaN(arr[0])&&arr[0]>=0)){jQuery("#zone_points_"+prop_name).css("color","red");return;}else
jQuery("#zone_points_"+prop_name).css("color","black");if(arr.length==2){arr[0]=atoui(arr[0]);arr[1]=atoui(arr[1]);param_value=atoui(arr[0]*3600+arr[1]*60);}else{arr[0]=atoui(arr[0]);param_value=atoui(arr[0]*3600);}}else if(prop_name=="name"){if(!(param_value.search(/[\\\']/g)<0&&param_value.length>0)){jQuery("#zone_points_"+prop_name).css("color","red");return;}else
jQuery("#zone_points_"+prop_name).css("color","black");}else if(prop_name!="name"){if(!(!isNaN(param_value)&&param_value>=0)){jQuery("#zone_points_"+prop_name).css("color","red");return;}else
jQuery("#zone_points_"+prop_name).css("color","black");}
var cmd="point."+prop_name+" = '"+param_value+"'";eval(cmd);if(ZonePointsCMSModule.event_disp){if(prop_name=="name")
ZonePointsCMSModule.event_disp.setPointText(ZonePointsCMSModule.curr_point_id,param_value);else if(prop_name=="radius")
ZonePointsCMSModule.event_disp.setPointRadius(ZonePointsCMSModule.curr_point_id,param_value);}},process_cp:function(){var point=ZonePointsCMSModule.points[ZonePointsCMSModule.curr_point_id];if(!point)
return;point.enable=!point.enable;if(point.enable){ZonePointsCMSModule.points[ZonePointsCMSModule.curr_point_id]=ZonePointsCMSModule.new_control_point();point=ZonePointsCMSModule.points[ZonePointsCMSModule.curr_point_id];ZonePointsCMSModule.points[ZonePointsCMSModule.curr_point_id].enable=true;}
ZonePointsCMSModule.show_cp();if(ZonePointsCMSModule.event_disp){if(!point.enable){ZonePointsCMSModule.event_disp.setPointText(ZonePointsCMSModule.curr_point_id,"");ZonePointsCMSModule.event_disp.setPointRadius(ZonePointsCMSModule.curr_point_id,-1);}else{ZonePointsCMSModule.event_disp.setPointText(ZonePointsCMSModule.curr_point_id,point.name);ZonePointsCMSModule.event_disp.setPointRadius(ZonePointsCMSModule.curr_point_id,point.radius);}}},load_points:function(zone){this.clear(-1);if(!zone)
return;var points=zone.get_points();var cp_points=zone.get_control_points();if(!points||!cp_points||points.length!=cp_points.length){for(var i=0;i<points.length;i++)
this.insert_point(-1);return;}
for(var i=0;i<points.length;i++){this.insert_point(-1);ZonePointsCMSModule.points[i]=jQuery.extend(true,{},cp_points[i]);if(cp_points[i].name.length)
ZonePointsCMSModule.event_disp.setPointText(i,cp_points[i].name);if(points[i].radius)
ZonePointsCMSModule.event_disp.setPointRadius(i,points[i].radius);ZonePointsCMSModule.points[i].radius=points[i].radius;if(cp_points[i].name.length||points[i].radius)
ZonePointsCMSModule.points[i].enable=true;else
ZonePointsCMSModule.points[i].enable=false;}},insert_point:function(pointIndex){var point=ZonePointsCMSModule.new_control_point();if(pointIndex!=-1)
ZonePointsCMSModule.points.splice(pointIndex+1,0,point);else
ZonePointsCMSModule.points.push(point);},show_cp:function(){var point=ZonePointsCMSModule.points[ZonePointsCMSModule.curr_point_id];if(!point){point=ZonePointsCMSModule.new_control_point();ZonePointsCMSModule.points.push(point);}
if(!point.enable){jQuery("#zone_points_action_img").attr("src",ZonePointsCMSModule.zone_add_img_url);jQuery("#zone_points_action_text").html(ZonePointsCMSModule.translation.add_cp_role);jQuery("#zone_points_settings").css("display","none");}else{jQuery("#zone_points_action_img").attr("src",ZonePointsCMSModule.zone_remove_img_url);jQuery("#zone_points_action_text").html(ZonePointsCMSModule.translation.remove_cp_role);jQuery("#zone_points_settings").css("display","");jQuery("#zone_points_name").val(point.name).css("color","black");jQuery("#zone_points_arrive").val(Math.floor(point.arrive/3600)+":"+Math.floor((point.arrive%3600)/60)).css("color","black");jQuery("#zone_points_arrive_offset").val(point.arrive_offset).css("color","black");jQuery("#zone_points_departure").val(Math.floor(point.departure/3600)+":"+Math.floor((point.departure%3600)/60)).css("color","black");jQuery("#zone_points_departure_offset").val(point.departure_offset).css("color","black");jQuery("#zone_points_radius").val(point.radius).css("color","black");}
var px=ZonePointsCMSModule.map.getViewPortPxFromLonLat(ZonePointsCMSModule.lonlat);var parent_w=jQuery("#panel_monitoring_map_target").width();var div_w=jQuery("#zone_points_window").width();var parent_h=jQuery("#panel_monitoring_map_target").height();var div_h=jQuery("#zone_points_window").height();if(px.x+20+div_w>parent_w)
px.x-=(div_w+20);else
px.x+=20;if(px.y+div_h>parent_h)
px.y-=div_h;jQuery("#zone_points_window").css({top:px.y,left:px.x});jQuery("#zone_points_window").css("display","");},new_control_point:function(){var last_point=null;if(ZonePointsCMSModule.points instanceof Array)
for(var i=ZonePointsCMSModule.curr_point_id-1;i>=0;i--)
if(typeof(ZonePointsCMSModule.points[i])!="undefined"&&ZonePointsCMSModule.points[i].enable){last_point=ZonePointsCMSModule.points[i];break;}
var point=new Object;if(last_point){point.enable=false;point.name="";point.arrive=parseInt(last_point.departure)+parseInt(last_point.departure_offset);point.arrive_offset=last_point.arrive_offset;point.departure=parseInt(point.arrive)+parseInt(last_point.departure-last_point.arrive);point.departure_offset=last_point.departure_offset;point.radius=ZonePointsCMSModule.radius;}else{point.enable=false;point.name="";point.arrive=0;point.arrive_offset=0;point.departure=0;point.departure_offset=0;point.radius=ZonePointsCMSModule.radius;}
return point;}});WebCMS.register_module(ZonePointsCMSModule);var mod_mm=WebCMS.get_module("monitoring_map");if(mod_mm)
mod_mm.register_map_layer(ZonePointsCMSModule);var ZoneDialogCMSModule=Base.extend({constructor:null,get_type:function(){return"zone_dialog";},show:function(){var mod_wiz=WebCMS.get_module("wizard_dlg");if(mod_wiz)
mod_wiz.show("/zone_dialog/zone_dlg.html");}});WebCMS.register_module(ZoneDialogCMSModule);var ZonesImportCMSModule=Base.extend({constructor:null,type:"zone_import",get_type:function(){return this.type;},import_from_file:function(){if(!uids)
return;var mod_wd=WebCMS.get_module("wizard_dlg");if(!mod_wd)
return;mod_wd.show("/zone_import_page/zone_import_page.html");}});WebCMS.register_module(ZonesImportCMSModule);var ZonesExportCMSModule=Base.extend({constructor:null,type:"zone_export",get_type:function(){return this.type;},export_from_file:function(){if(!uids)
return;var mod_wd=WebCMS.get_module("wizard_dlg");if(!mod_wd)
return;mod_wd.show("/zone_export_page/zone_export_page.html");}});WebCMS.register_module(ZonesExportCMSModule);var JobsDialogCMSModule=Base.extend({constructor:null,get_type:function(){return"jobs_dialog";},show:function(res_id,base_id,save_id){if(typeof res_id=="undefined")
res_id=0;if(typeof base_id=="undefined")
base_id=0;if(typeof save_id=="undefined")
save_id=0;var mod_wiz=WebCMS.get_module("wizard_dlg");if(mod_wiz)
mod_wiz.show("/jobs_dialog/jobs_dlg.html",{res_id:res_id,base_id:base_id,save_id:save_id});}});WebCMS.register_module(JobsDialogCMSModule);var JobsCreateCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"jobs_create";},on_init:function(){jQuery("#jobs_create_target").click(function(){JobsCreateCMSModule.create_job();return false;}).attr("title",this.translation.title).Tooltip({showURL:false});},create_job:function(){var resources=Wialon.filter_items(Wialon.get_resources(),"edit");if(!resources||!resources.length){alert(this.translation.not_resource);return;}
if(resources&&resources.length==1){var job_resource=resources[0];var pl=job_resource.get_plugin("avl_jobs");if(!pl)
return;var job=pl.get_jobs();var limit=pl.get_jobs_limit();if(job&&limit>=0&&job.length>=limit){alert(this.translation.limit_reached);return;}}
var mod_jdlg=WebCMS.get_module("jobs_dialog");if(mod_jdlg)
mod_jdlg.show();}});WebCMS.register_module(JobsCreateCMSModule);var JobsListCMSModule=Base.extend({constructor:null,translation:{},state_img_url:"/jobs_list/state.png",enabled_img_url:"/jobs_list/enabled.png",enabled_none_img_url:"/jobs_list/engray.png",disabled_img_url:"/jobs_list/disabled.png",disabled_none_img_url:"/jobs_list/disgray.png",time_img_url:"/jobs_list/time.png",config_img_url:"/jobs_list/configure.png",config_none_img_url:"/jobs_list/configure_none.png",del_img_url:"/jobs_list/del.png",del_none_img_url:"/jobs_list/del_none.png",units_img_url:"/jobs_list/units.png",action_head_img_url:"/jobs_list/action.png",copy_img_url:"/jobs_list/copy.png",acl_res:{},res_filter:0,list_filter:"*",get_type:function(){return"jobs_list";},on_init:function(){Wialon.bind_event_handler("show_panel",0,function(event_type,event_id,event_data){if(event_id=="jobs")
JobsListCMSModule.on_display_init();});},on_display_init:function(){if(this.shown){this.refresh_list();return;}else
this.shown=true;var mod=WebCMS.get_module("search_control");if(!mod)
return;mod.attach_to_module(this,"jobs_create_target");var mod_fctl=WebCMS.get_module("resource_filter_control");if(!mod_fctl)
return;mod_fctl.attach_to_module(this,"jobs_create_target");this.unit_jobs=new Array();var html="<thead><tr>";html+="<td id='job_head_image' align='center'>&nbsp;</td>";html+="<td id='job_head_name' align='center' width='100%'>"+this.translation.jobs+"</td>";html+="<td id='job_head_state' align='center' jobs_status=1 ><img src='"+WebCMS.get_img_url(this.state_img_url)+"'/></td>";html+="<td id='job_head_times' colspan='2' align='center'><img src='"+WebCMS.get_img_url(this.time_img_url)+"'/></td>";html+="<td>&nbsp;&nbsp;</td>";html+="<td id='job_head_action' colspan='3' align='center'><img src='"+WebCMS.get_img_url(this.action_head_img_url)+"'/></td>";html+="</tr></thead><tbody></tbody>";jQuery("#jobs_list_target").html(html);jQuery("[id^=job_head_]").Tooltip({showURL:false});this.update_list_filter("*");jQuery("#job_head_state").attr("title",JobsListCMSModule.translation.job_state+" ["+JobsListCMSModule.translation.job_disable+"]").css({cursor:"pointer"}).Tooltip({showURL:false});jQuery("#job_head_times").attr("title",JobsListCMSModule.translation.job_times).Tooltip({showURL:false});jQuery("#job_head_action").attr("title",JobsListCMSModule.translation.action).Tooltip({showURL:false});if(!this.is_enabled_jobs_all()){jQuery("#job_head_state").attr("title",JobsListCMSModule.translation.job_state+" ["+JobsListCMSModule.translation.job_enable+"]").css({cursor:"pointer"}).Tooltip({showURL:false});jQuery("#job_head_state").attr("jobs_status","0");}
jQuery("#job_head_state").click(function(){if(jQuery(this).attr("jobs_status")=="1"){if(JobsListCMSModule.is_access_resources_all()){JobsListCMSModule.on_enable_jobs_all(false);jQuery(this).attr("title",JobsListCMSModule.translation.job_state+" ["+JobsListCMSModule.translation.job_enable+"]").css({cursor:"pointer"}).Tooltip({showURL:false});jQuery(this).attr("jobs_status","0");}}else{if(JobsListCMSModule.is_access_resources_all()){JobsListCMSModule.on_enable_jobs_all(true);jQuery(this).attr("title",JobsListCMSModule.translation.job_state+" ["+JobsListCMSModule.translation.job_disable+"]").css({cursor:"pointer"}).Tooltip({showURL:false});jQuery(this).attr("jobs_status","1");}}});Wialon.bind_event_handler("item_created",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_resource")
JobsListCMSModule.on_resource_created(event_data,event_data.get_plugin("avl_jobs"));});Wialon.bind_event_handler("item_deleted",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_resource")
JobsListCMSModule.on_resource_deleted(event_data,event_data.get_plugin("avl_jobs"));});Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.ujbu!='undefined'){JobsListCMSModule.on_job_updated(Wialon.get_item(event_id),event_data.ujbu);}
if(typeof event_data.acl!='undefined'&&event_id==Wialon.get_current_user().get_id()){for(var i in event_data.acl){var item=Wialon.get_item(i);if(item&&item.get_type()=="avl_resource"&&JobsListCMSModule.acl_res[i]!=item.get_access_level()){JobsListCMSModule.acl_res[i]=item.get_access_level();JobsListCMSModule.on_job_updated(item);}}}
JobsListCMSModule.on_disable_not_work_job(Wialon.get_item(event_id));});},update_row_html:function(res,job){if(!res||!job)
return;var rid=res.get_id();var jid=job.get_id();var id=rid+"_"+jid;var html="<tr id='job_list_row_"+id+"'>";var update=false;var prev_html=jQuery("#job_list_row_"+id).html();if(prev_html&&prev_html!=""){html="";update=true;}
var act=job.get_action();var job_image_url="";if(typeof act=="object"){var mod_name="jobs_"+act.get_type();var mod=WebCMS.get_module(mod_name);if(mod)
job_image_url=mod.get_img_url();}
var job_last_time="&nbsp;";var mod_ust=WebCMS.get_module("user_settings_time");if(mod_ust)
job_last_time=mod_ust.format_time(job.get_last_done_time());var can_edit=res.get_access_level()>=Wialon.access_level("edit");var can_manage=res.get_access_level()>=Wialon.access_level("edit");if(can_edit){var job_enabled=this.enabled_img_url;if(!job.is_enabled())
job_enabled=this.disabled_img_url;}else{var job_enabled=this.enabled_none_img_url;if(!job.is_enabled())
job_enabled=this.disabled_none_img_url;}
var done_color="#000000";html+="<td><img id='job_list_image_"+id+"' src='"+WebCMS.get_img_url(job_image_url)+"'></td>";html+="<td id='job_list_name_"+id+"'>"+job.get_name()+"</td>";html+="<td id='job_list_enabled_"+id+"'><img src='"+WebCMS.get_img_url(job_enabled)+"'></td>";html+="<td id='job_list_done_"+id+"' style='color:"+done_color+";' align='center'><div style='width: auto;'>"+job.get_done_times()+"</div></td>";html+="<td id='job_list_max_"+id+"' align='center'><div style='width: auto;'>"+job.get_max_times()+"</div></td>";html+="<td>&nbsp;&nbsp;</td>";var edit_img=this.config_img_url;if(!can_edit)
edit_img=this.config_none_img_url;var manage_img=this.del_img_url;if(!can_manage)
manage_img=this.del_none_img_url;html+="<td><img id='job_list_config_"+id+"' src='"+WebCMS.get_img_url(edit_img)+"' title='"+this.translation.config+"'/></td>";html+="<td><img id='job_list_copy_"+id+"' src='"+WebCMS.get_img_url(this.copy_img_url)+"' title='"+this.translation.copy+"'/></td>";html+="<td><img id='job_list_del_"+id+"' src='"+WebCMS.get_img_url(manage_img)+"' title='"+this.translation.del+"'/></td>";if(update)
jQuery("#job_list_row_"+id).html(html);else{html+="</tr>";jQuery("#jobs_list_target").append(html);}
jQuery("#job_list_image_"+id).attr("title","X").Tooltip({showURL:false,bodyHandler:function(){return JobsListCMSModule.get_job_tip(jQuery(this).attr("id").substring(15).split("_"));}});jQuery("#job_list_name_"+id).attr("title","X").css({cursor:"default"}).Tooltip({showURL:false,bodyHandler:function(){return JobsListCMSModule.get_job_tip(jQuery(this).attr("id").substring(14).split("_"));}});var title="";if(job.is_enabled())
title=this.translation.enabled;else
title=this.translation.disabled;jQuery("#job_list_enabled_"+id).attr("title",title).Tooltip({showURL:false});jQuery("#job_list_done_"+id).attr("title",JobsListCMSModule.translation.job_done_times).css({cursor:"default"}).Tooltip({showURL:false});jQuery("#job_list_max_"+id).attr("title",JobsListCMSModule.translation.job_max_times).css({cursor:"default"}).Tooltip({showURL:false});jQuery("#job_list_copy_"+id).attr("title",JobsListCMSModule.translation.copy).css({cursor:"pointer"}).Tooltip({showURL:false}).click(function(){JobsListCMSModule.on_copy_job(jQuery(this).attr("id").substring(14).split("_"));});jQuery("#job_list_config_"+id).css({cursor:"pointer"}).Tooltip({showURL:false})
jQuery("#job_list_config_"+id).click(function(){JobsListCMSModule.on_edit_job(jQuery(this).attr("id").substring(16).split("_"));});if(can_edit){jQuery("#job_list_enabled_"+id).css({cursor:"pointer"}).click(function(){JobsListCMSModule.on_enable_job(jQuery(this).attr("id").substring(17).split("_"));});}
if(can_manage){jQuery("#job_list_del_"+id).css({cursor:"pointer"}).Tooltip({showURL:false}).click(function(){JobsListCMSModule.on_del_job(jQuery(this).attr("id").substring(13).split("_"));});}},get_font_color:function(val,max){var d=val/max;if(d<0.5){var t=Math.round(0xFF*d);t<<=16;return"00"+(0xFF00|t).toString(16);}else{var t=Math.round(0xFF*(1-d));t<<=8;return(0xFF0000|t).toString(16);}},get_job_tip:function(arr){if(!arr||arr.length!=2)
return"";var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return"";var pl=res.get_plugin("avl_jobs");if(!pl)
return"";var job=pl.get_job(arr[1]);if(!job)
return"";var act=job.get_action();var job_tip="";if(typeof act=="object"){var mod_name="jobs_"+act.get_type();var mod=WebCMS.get_module(mod_name);if(mod)
job_tip=mod.get_title(job,res);}
return job_tip;},on_resource_deleted:function(res,pl){if(!res||!pl)
return;var rid=res.get_id();jQuery("[id^=job_list_row_"+rid+"]").remove();var need_update=jQuery("#jobs_list_selector").val()==rid;jQuery("#jobs_list_selector > [value="+rid+"]").remove();if(need_update){this.res_filter=0;this.refresh_list();}},on_resource_created:function(res,pl){if(!res||!pl)
return;var jcol=pl.get_jobs();for(var j=0;j<jcol.length;j++){var job=jcol[j];this.update_row_html(res,job);}
jQuery("#jobs_list_selector").append("<option value='"+res.get_id()+"'>"+res.get_name()+"</option>");},on_job_updated:function(res,jb_col){if(!res)
return;if(typeof jb_col!="undefined"&&jb_col&&jb_col.length==2){var pl=res.get_plugin("avl_jobs");if(!pl)
return;var jb_id=jb_col[0];var jb_data=jb_col[1];if(jb_data&&this.check_filter(pl.get_job(jb_id).get_name(),res.get_id()))
this.update_row_html(res,pl.get_job(jb_id));else
jQuery("#job_list_row_"+res.get_id()+"_"+jb_id).remove();}else{var pl=res.get_plugin("avl_jobs");if(pl){var jcol=pl.get_jobs();for(var j=0;j<jcol.length;j++){var job=jcol[j];this.update_row_html(res,job);}}}},on_edit_job:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_jobs");if(!pl)
return;var job=pl.get_job(arr[1]);if(!job)
return;var mod_jdlg=WebCMS.get_module("jobs_dialog");if(mod_jdlg)
mod_jdlg.show(res.get_id(),job.get_id(),job.get_id());},on_copy_job:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_jobs");if(!pl)
return;var jbl=pl.get_jobs();var limit=pl.get_jobs_limit();if(jbl&&limit>=0&&jbl.length>=limit){alert(this.translation.limit_reached);return;}
var job=pl.get_job(arr[1]);if(!job)
return;var mod_jdlg=WebCMS.get_module("jobs_dialog");if(mod_jdlg)
mod_jdlg.show(res.get_id(),job.get_id(),0);},on_del_job:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_jobs");if(!pl)
return;var job=pl.get_job(arr[1]);if(!job)
return;if(!confirm(sprintf(this.translation.del_confirm,job.get_name())))
return;pl.delete_job(job,function(result,error_text,cparam){if(!result)
WebCMS.log_msg(sprintf(JobsListCMSModule.translation.error_delete,cparam.name,error_text),2);else{WebCMS.log_msg(sprintf(JobsListCMSModule.translation.succ_delete,cparam.name),1);JobsListCMSModule.on_job_updated(cparam.res,[cparam.id,null]);}},{name:job.get_name(),res:res,id:job.get_id()});},on_enable_job:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_jobs");if(!pl)
return;var job=pl.get_job(arr[1]);if(!job)
return;if(!pl.enable_job(job,!job.is_enabled(),function(id,error_msg,cparam){if(!id)
WebCMS.log_msg(sprintf(JobsListCMSModule.translation.error_enable,error_msg),2);else
WebCMS.log_msg(JobsListCMSModule.translation.succ_enable,1);})){WebCMS.log_msg(JobsListCMSModule.translation.no_enable,2);}},on_disable_not_work_job:function(res){if(!res||res.get_type()!="avl_resource")
return;if(res.get_access_level()<Wialon.access_level("edit"))
return;var pl_job=res.get_plugin("avl_jobs");var pl_rep=res.get_plugin("avl_report_templates");if(!pl_job||!pl_rep)
return;var jcol=pl_job.get_jobs();if(!jcol)
return;for(var j=0;j<jcol.length;j++){var job=jcol[j];if(job.action.type!="send_email_report")
continue;var report_id=job.action.get_param("report_id");var report=pl_rep.get_report_template(report_id);if(!report){if(!job.is_enabled())
continue;pl_job.enable_job(job,false,function(id,error_msg,cparam){if(id)
WebCMS.log_msg(JobsListCMSModule.translation.succ_enable,1);});}}},on_enable_disable_job:function(arr,flag){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;if(res.get_access_level()<Wialon.access_level("edit"))
return;var pl=res.get_plugin("avl_jobs");if(!pl)
return;var job=pl.get_job(arr[1]);if(!job)
return;if((job.is_enabled()&&flag)||(!job.is_enabled()&&!flag))
return;if(!pl.enable_job(job,flag,function(id,error_msg,cparam){if(!id)
WebCMS.log_msg(sprintf(JobsListCMSModule.translation.error_enable,error_msg),2);else
WebCMS.log_msg(JobsListCMSModule.translation.succ_enable,1);})){WebCMS.log_msg(JobsListCMSModule.translation.no_enable,2);}},on_enable_jobs_all:function(flag){jQuery("tr[@id^=job_list_row]").each(function(){JobsListCMSModule.on_enable_disable_job(jQuery(this).attr("id").substring(13).split("_"),flag);});},is_enabled_job:function(arr){if(!arr||arr.length!=2)
return false;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return false;var pl=res.get_plugin("avl_jobs");if(!pl)
return false;var job=pl.get_job(arr[1]);if(!job)
return false;return job.is_enabled();},is_enabled_jobs_all:function(){var res=false;jQuery("tr[@id^=job_list_row]").each(function(){var r=JobsListCMSModule.is_enabled_job(jQuery(this).attr("id").substring(13).split("_"));if(r)
res=r;});return res;},is_access_resource:function(arr){if(!arr||arr.length!=2)
return false;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return false;if(res.get_access_level()<Wialon.access_level("edit"))
return false;return true;},is_access_resources_all:function(){var res=false;jQuery("tr[@id^=job_list_row]").each(function(){var r=JobsListCMSModule.is_access_resource(jQuery(this).attr("id").substring(13).split("_"));if(r)
res=r;});return res;},check_filter:function(name,resource){return((this.list_filter=="*"||WebCMS.compare_wildcard(name,this.list_filter))&&(this.res_filter==0||resource==this.res_filter));},refresh_list:function(){jQuery("tr[@id^=job_list_row]").remove();var resources=Wialon.get_resources();var fresources=Wialon.filter_items(resources,"view");if(fresources&&fresources.length>0){for(var i=0;i<resources.length;i++){var res=resources[i];this.acl_res[res.get_id()]=res.get_access_level();if(this.res_filter!=0&&res.get_id()!=this.res_filter)
continue;var plugin=res.get_plugin("avl_jobs");if(plugin){var jobs=plugin.get_jobs();for(var j=0;j<jobs.length;j++){var job=jobs[j];if(this.check_filter(job.get_name(),res.get_id()))
this.update_row_html(res,job);}}}}},update_resource_filter:function(filter){this.res_filter=filter;this.refresh_list();},update_list_filter:function(filter){this.list_filter=filter;this.refresh_list();}});WebCMS.register_module(JobsListCMSModule);var JobsExecUnitCmdCMSModule=Base.extend({constructor:null,img_url:"/jobs_defaults/jobs_exec_unit_cmd.png",translation:{},get_type:function(){return"jobs_exec_unit_cmd";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(job){if(typeof job!="object")
return"";var descr=job.get_description();if(descr!="")
descr+="<br>";var action=job.get_action();if(typeof action!="object"||action.get_type()!="exec_unit_cmd")
return"";var cmd_name=action.get_param("cmd_name");var cmd_param=action.get_param("cmd_param");var image_url="";var mod_name="command_"+cmd_name;var mod=WebCMS.get_module(mod_name);if(mod){image_url=mod.get_img_url(24);cmd_name=mod.get_title();}else{mod=WebCMS.get_module("command_generic");if(mod)
image_url=mod.get_img_url();}
var html="<table><thead><tr><td colspan='2' align='center'><b>"+this.translation.text+"</b><hr size='1'/></td></tr>";html+="<tr><td colspan='2' align='center'>"+descr+"</td></tr>";html+="<tr><td><img src='"+WebCMS.get_img_url(image_url)+"'></td><td align='left'>"+cmd_name+"</td></tr></thead>";if(cmd_param!="")
html+="<tr><td><b>"+this.translation.parameter+":</b></td><td>"+cmd_param+"</td></tr>";html+="<tr><td colspan='2'><b>"+this.translation.last_time_done+":</b>";var job_last_time="";var time=job.get_last_done_time();if(time){var mod_ust=WebCMS.get_module("user_settings_time");if(mod_ust)
job_last_time+=mod_ust.format_time(job.get_last_done_time());}else
job_last_time+=this.translation.unknown;html+=job_last_time+"</td></tr>";html+="</table>";return html;}});var JobsResetUnitBytesCounterCMSModule=Base.extend({constructor:null,img_url:"/jobs_defaults/jobs_reset_unit_bytes_counter.png",translation:{},get_type:function(){return"jobs_reset_unit_bytes_counter";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(job){if(typeof job!="object")
return"";var descr=job.get_description();var html="<table><thead><tr><td colspan='2' align='center'><b>"+this.translation.text+"</b><hr size='1'/></td></tr>";html+="<tr><td colspan='2' align='center'>"+descr+"</td></tr>";html+="<tr><td colspan='2'><b>"+this.translation.last_time_done+":</b>";var job_last_time="";var time=job.get_last_done_time();if(time){var mod_ust=WebCMS.get_module("user_settings_time");if(mod_ust)
job_last_time+=mod_ust.format_time(job.get_last_done_time());}else
job_last_time+=this.translation.unknown;html+=job_last_time+"</td></tr>";html+="</table>";return html;}});var JobsChangeAccessUserCMSModule=Base.extend({constructor:null,img_url:"/jobs_defaults/jobs_change_access_user.png",translation:{},get_type:function(){return"jobs_change_access_user";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(job){if(typeof job!="object")
return"";var descr=job.get_description();var html="<table><thead><tr><td colspan='2' align='center'><b>"+this.translation.text+"</b><hr size='1'/></td></tr>";html+="<tr><td colspan='2' align='center'>"+descr+"</td></tr>";html+="<tr><td colspan='2'><b>"+this.translation.last_time_done+":</b>";var job_last_time="";var time=job.get_last_done_time();if(time){var mod_ust=WebCMS.get_module("user_settings_time");if(mod_ust)
job_last_time+=mod_ust.format_time(job.get_last_done_time());}else
job_last_time+=this.translation.unknown;html+=job_last_time+"</td></tr>";html+="</table>";return html;}});WebCMS.register_module(JobsExecUnitCmdCMSModule);WebCMS.register_module(JobsResetUnitBytesCounterCMSModule);WebCMS.register_module(JobsChangeAccessUserCMSModule);var NotifyDialogCMSModule=Base.extend({constructor:null,get_type:function(){return"notify_dialog";},show:function(res_id,base_id,save_id){if(typeof res_id=="undefined")
res_id=0;if(typeof base_id=="undefined")
base_id=0;if(typeof save_id=="undefined")
save_id=0;var mod_wiz=WebCMS.get_module("wizard_dlg");if(mod_wiz)
mod_wiz.show("/notify_dialog/notify_dlg.html",{res_id:res_id,base_id:base_id,save_id:save_id});}});WebCMS.register_module(NotifyDialogCMSModule);var NotifyCreateCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"notify_create";},on_init:function(){jQuery("#notify_create_target").click(function(){NotifyCreateCMSModule.create_notification();return false;}).attr("title",this.translation.title).Tooltip({showURL:false});},create_notification:function(){var resources=Wialon.filter_items(Wialon.get_resources(),"edit");if(!resources||!resources.length){alert(this.translation.not_resource);return;}
if(resources&&resources.length==1){var notify_resource=resources[0];var pl=notify_resource.get_plugin("avl_notifications");if(!pl)
return;var nf=pl.get_notifications();var limit=pl.get_notifications_limit();if(nf&&limit>=0&&nf.length>=limit){alert(this.translation.limit_reached);return;}}
var mod_ndlg=WebCMS.get_module("notify_dialog");if(mod_ndlg)
mod_ndlg.show();}});WebCMS.register_module(NotifyCreateCMSModule);var NotifyListCMSModule=Base.extend({constructor:null,triggers:{},actions:{},edit_img_url:"/notify_list/edit.png",no_edit_img_url:"/notify_list/edit_none.png",copy_img_url:"/notify_list/copy.png",del_img_url:"/notify_list/del.png",no_del_img_url:"/notify_list/del_none.png",units_img_url:"/notify_list/units.png",trigger_img_url:"/notify_list/trigger.png",actions_img_url:"/notify_list/actions.png",user_actions_img_url:"/notify_list/user_actions.png",alarms_img_url:"/notify_list/alarms.png",state_img_url:"/notify_list/state.png",enabled_img_url:"/notify_list/enabled.png",enabled_none_img_url:"/notify_list/engray.png",disabled_img_url:"/notify_list/disabled.png",disabled_none_img_url:"/notify_list/disgray.png",translation:{},acl_res:{},list_filter:"*",res_filter:0,get_type:function(){return"notify_list";},register_trigger:function(obj){if(typeof obj!='object'||!obj)
return;var t=this.triggers[obj.get_trigger_type()];if(typeof t!='undefined')
return;this.triggers[obj.get_trigger_type()]=obj;},register_action:function(obj){if(typeof obj!='object'||!obj)
return;var t=this.actions[obj.get_action_type()];if(typeof t!='undefined')
return;this.actions[obj.get_action_type()]=obj;},on_init:function(){Wialon.bind_event_handler("show_panel",0,function(event_type,event_id,event_data){if(event_id=="notifications")
NotifyListCMSModule.on_display_init();});},on_display_init:function(){if(this.shown)
return;else
this.shown=true;var mod=WebCMS.get_module("search_control");if(!mod)
return;mod.attach_to_module(this,"notify_create_target");var mod_fctl=WebCMS.get_module("resource_filter_control");if(mod_fctl)
mod_fctl.attach_to_module(this,"notify_create_target");var html="<thead><tr><td align='center' width='100%'>"+this.translation.notification+"</td>";html+="<td align='center'><img id='notify_list_head_state' src='"+WebCMS.get_img_url(this.state_img_url)+"'  notify_status='1' /></td>";html+="<td align='center'><img id='notify_list_head_alarms' title='"+this.translation.alarms+"' src='"+WebCMS.get_img_url(this.alarms_img_url)+"'/></td>";html+="<td align='center'><img id='notify_list_head_units' title='"+this.translation.units+"' src='"+WebCMS.get_img_url(this.units_img_url)+"'/></td>";html+="<td align='center'><img id='notify_list_head_trigger' title='"+this.translation.control_type+"' src='"+WebCMS.get_img_url(this.trigger_img_url)+"'/></td>";html+="<td align='center'><img id='notify_list_head_actions' title='"+this.translation.deliveries+"' src='"+WebCMS.get_img_url(this.actions_img_url)+"'/></td>";html+="<td align='center' colspan='3'><img src='"+WebCMS.get_img_url(this.user_actions_img_url)+"'/></td>";html+="</tr></thead><tbody></tbody>";jQuery("#notify_list_target").html(html);jQuery("[id^=notify_list_head_]").Tooltip({showURL:false});this.update_list_filter("*");if(!this.is_enabled_notify_all()){jQuery("#notify_list_head_state").attr("title",NotifyListCMSModule.translation.notify_state+" ["+NotifyListCMSModule.translation.notify_enable+"]").css({cursor:"pointer"}).Tooltip({showURL:false});jQuery("#notify_list_head_state").attr("notify_status","0");}
jQuery("#notify_list_head_state").click(function(){var self=NotifyListCMSModule;if(jQuery(this).attr("notify_status")=="1"){if(self.is_access_resources_all()){self.on_enable_notify_all(false);jQuery(this).attr("title",self.translation.notify_state+" ["+self.translation.notify_disable+"]").css({cursor:"pointer"}).Tooltip({showURL:false});jQuery(this).attr("notify_status","0");}}else{if(self.is_access_resources_all()){self.on_enable_notify_all(true);jQuery(this).attr("title",self.translation.notify_state+" ["+self.translation.notify_enable+"]").css({cursor:"pointer"}).Tooltip({showURL:false});jQuery(this).attr("notify_status","1");}}});Wialon.bind_event_handler("item_created",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_resource")
NotifyListCMSModule.on_resource_created(event_data,event_data.get_plugin("avl_notifications"));});Wialon.bind_event_handler("item_deleted",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_resource")
NotifyListCMSModule.on_resource_deleted(event_data,event_data.get_plugin("avl_notifications"));});Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.unfu!='undefined')
NotifyListCMSModule.on_notification_updated(Wialon.get_item(event_id),event_data.unfu);if(typeof event_data.acl!='undefined'&&event_id==Wialon.get_current_user().get_id()){for(var i in event_data.acl){var item=Wialon.get_item(i);if(item&&item.get_type()=="avl_resource"&&NotifyListCMSModule.acl_res[i]!=item.get_access_level()){NotifyListCMSModule.acl_res[i]=item.get_access_level();NotifyListCMSModule.on_notification_updated(item);}}}});},update_row_html:function(res,nf){if(!res||!nf)
return;var html="<tr id='notify_list_row_"+res.get_id()+"_"+nf.get_id()+"'>";var update=false;var prev_html=jQuery("#notify_list_row_"+res.get_id()+"_"+nf.get_id()).html();if(prev_html&&prev_html!=""){html="";update=true;}
var can_edit=res.get_access_level()>=Wialon.access_level("edit");if(can_edit){var nf_enabled=this.enabled_img_url;if(nf.get_flags()&0x02)
nf_enabled=this.disabled_img_url;}else{var nf_enabled=this.enabled_none_img_url;if(nf.get_flags()&0x02)
nf_enabled=this.disabled_none_img_url;}
html+="<td id='notify_list_name_"+res.get_id()+"_"+nf.get_id()+"'>"+nf.get_name()+"</td>";html+="<td align='center' id='notify_list_enabled_"+res.get_id()+"_"+nf.get_id()+"'><img src='"+WebCMS.get_img_url(nf_enabled)+"'/></td>";html+="<td align='center' id='notify_list_alarms_"+res.get_id()+"_"+nf.get_id()+"'>"+nf.get_alarms_count()+"</td>";html+="<td align='center' id='notify_list_units_"+res.get_id()+"_"+nf.get_id()+"'>"+nf.get_units().length+"</td>";var url="";var tr=nf.get_trigger();if(tr){var obj=this.triggers[tr.get_type()];if(typeof obj!="undefined")
url=obj.get_img_url(tr);}
html+="<td align='center'><img id='notify_list_trigger_"+res.get_id()+"_"+nf.get_id()+"' src='"+WebCMS.get_img_url(url)+"'/></td>";html+="<td align='left'>";var col=nf.get_actions();var act_types={};var act_count=0;var act_html="";for(var i=0;i<col.length;i++){url="";var reg_act=act_types[col[i].get_type()];if(typeof reg_act!="undefined")
continue;act_types[col[i].get_type()]=1;var obj=this.actions[col[i].get_type()];if(typeof obj!="undefined")
url=obj.get_img_url(col[i]);act_count++;act_html+="<img id='notify_list_action_"+res.get_id()+"_"+nf.get_id()+"_"+col[i].get_type()+"' src='"+WebCMS.get_img_url(url)+"'/>";}
html+="<div style='width:"+(16*act_count)+"px'>"+act_html+"</div></td>";html+="<td align='center'>";if(res.get_access_level()>=Wialon.access_level("edit"))
html+="<img id='notify_list_edit_"+res.get_id()+"_"+nf.get_id()+"' src='"+WebCMS.get_img_url(this.edit_img_url)+"'/>";else
html+="<img id='notify_list_edit_"+res.get_id()+"_"+nf.get_id()+"' src='"+WebCMS.get_img_url(this.no_edit_img_url)+"'/>";html+="</td><td  align='center'>";html+="<img id='notify_list_copy_"+res.get_id()+"_"+nf.get_id()+"' src='"+WebCMS.get_img_url(this.copy_img_url)+"'/>";html+="</td><td  align='center'>";if(res.get_access_level()>=Wialon.access_level("edit"))
html+="<img id='notify_list_del_"+res.get_id()+"_"+nf.get_id()+"' src='"+WebCMS.get_img_url(this.del_img_url)+"'/>";else
html+="<img id='notify_list_no_del_"+res.get_id()+"_"+nf.get_id()+"' src='"+WebCMS.get_img_url(this.no_del_img_url)+"'/>";html+="</td>";if(update)
jQuery("#notify_list_row_"+res.get_id()+"_"+nf.get_id()).html(html);else{html+="</tr>";jQuery("#notify_list_target").append(html);}
var title="";if(nf.get_flags()&0x02)
title=this.translation.disabled;else
title=this.translation.enabled;jQuery("#notify_list_enabled_"+res.get_id()+"_"+nf.get_id()).attr("title",title).Tooltip({showURL:false});if(can_edit){jQuery("#notify_list_enabled_"+res.get_id()+"_"+nf.get_id()).css({cursor:"pointer"}).click(function(){NotifyListCMSModule.on_enable_notify(jQuery(this).attr("id").substring(20).split("_"));});}
jQuery("#notify_list_edit_"+res.get_id()+"_"+nf.get_id()).attr("title",this.translation.edit).css({cursor:"pointer"}).Tooltip({showURL:false}).click(function(){NotifyListCMSModule.on_edit_notification($(this).attr("id").substring(17).split("_"));});jQuery("#notify_list_copy_"+res.get_id()+"_"+nf.get_id()).attr("title",this.translation.copy).css({cursor:"pointer"}).Tooltip({showURL:false}).click(function(){NotifyListCMSModule.on_copy_notification($(this).attr("id").substring(17).split("_"));});jQuery("#notify_list_del_"+res.get_id()+"_"+nf.get_id()).attr("title",this.translation.del).css({cursor:"pointer"}).Tooltip({showURL:false}).click(function(){NotifyListCMSModule.on_del_notification($(this).attr("id").substring(16).split("_"));});jQuery("#notify_list_alarms_"+res.get_id()+"_"+nf.get_id()).attr("title",this.translation.alarms).Tooltip({showURL:false});jQuery("#notify_list_units_"+res.get_id()+"_"+nf.get_id()).attr("title","X").Tooltip({showURL:false,bodyHandler:function(){return NotifyListCMSModule.get_units_title($(this).attr("id").substring(18).split("_"));}});jQuery("#notify_list_name_"+res.get_id()+"_"+nf.get_id()).attr("title","X").Tooltip({showURL:false,bodyHandler:function(){return NotifyListCMSModule.get_notify_title($(this).attr("id").substring(17).split("_"));}});jQuery("#notify_list_trigger_"+res.get_id()+"_"+nf.get_id()).attr("title","X").Tooltip({showURL:false,bodyHandler:function(){return NotifyListCMSModule.get_trigger_title($(this).attr("id").substring(20).split("_"));}});jQuery("[@id^=notify_list_action_"+res.get_id()+"_"+nf.get_id()+"_]").attr("title","X").Tooltip({showURL:false,bodyHandler:function(){return NotifyListCMSModule.get_action_title($(this).attr("id").substring(19).split("_"));}});},on_resource_deleted:function(res,pl){if(!res||!pl)
return;var rid=res.get_id();jQuery("[@id^=notify_list_row_"+rid+"]").remove();var need_update=jQuery("#notify_list_selector").val()==rid;jQuery("#notify_list_selector > [value="+rid+"]").remove();if(need_update){this.res_filter=0;this.refresh_list();}},on_resource_created:function(res,pl){if(!res||!pl)
return;var ncol=pl.get_notifications();for(var j=0;j<ncol.length;j++){var nf=ncol[j];this.update_row_html(res,nf);}
jQuery("#notify_list_selector").append("<option value='"+res.get_id()+"'>"+res.get_name()+"</option>");this.refresh_list();},on_notification_updated:function(res,nf_col){if(!res)
return;if(typeof nf_col!="undefined"&&nf_col&&nf_col.length==2){var pl=res.get_plugin("avl_notifications");if(!pl)
return;var nf_id=nf_col[0];var nf_data=nf_col[1];if(nf_data&&this.check_filter(pl.get_notification(nf_id).get_name(),res.get_id()))
this.update_row_html(res,pl.get_notification(nf_id));else
jQuery("#notify_list_row_"+res.get_id()+"_"+nf_id).remove();}else{var pl=res.get_plugin("avl_notifications");if(pl){var ncol=pl.get_notifications();for(var j=0;j<ncol.length;j++){var nf=ncol[j];this.update_row_html(res,nf);}}}},on_enable_notify:function(arr,flag){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;if(res.get_access_level()<Wialon.access_level("edit"))
return;var pl=res.get_plugin("avl_notifications");if(!pl)
return;var notify=pl.get_notification(arr[1]);if(!notify)
return;if((typeof flag!="undefined")&&(((notify.get_flags()&0x02)&&flag)||(!(notify.get_flags()&0x02)&&!flag)))
return;var enable=true;if(typeof flag=="undefined")
enable=(notify.get_flags()&0x02)?true:false;else
enable=flag;if(!pl.enable_notification(notify.get_id(),notify,enable,function(id,error_msg,cparam){if(!id)
WebCMS.log_msg(sprintf(NotifyListCMSModule.translation.error_enable,error_msg),2);else
WebCMS.log_msg(NotifyListCMSModule.translation.succ_enable,1);},null)){WebCMS.log_msg(NotifyListCMSModule.translation.no_enable,2);}},on_enable_notify_all:function(flag){jQuery("tr[@id^=notify_list_row]").each(function(){NotifyListCMSModule.on_enable_notify(jQuery(this).attr("id").substring(16).split("_"),flag);});},is_enabled_notify:function(arr){if(!arr||arr.length!=2)
return false;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return false;var pl=res.get_plugin("avl_jobs");if(!pl)
return false;var job=pl.get_job(arr[1]);if(!job)
return false;return job.is_enabled();},is_enabled_notify_all:function(){var res=false;jQuery("tr[@id^=notify_list_row]").each(function(){var r=NotifyListCMSModule.is_enabled_notify(jQuery(this).attr("id").substring(16).split("_"));if(r)
res=r;});return res;},is_access_resource:function(arr){if(!arr||arr.length!=2)
return false;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return false;if(res.get_access_level()<Wialon.access_level("edit"))
return false;return true;},is_access_resources_all:function(){var res=false;jQuery("tr[@id^=notify_list_row]").each(function(){var r=NotifyListCMSModule.is_access_resource(jQuery(this).attr("id").substring(16).split("_"));if(r)
res=r;});return res;},get_units_title:function(arr){if(!arr||arr.length!=2)
return"";var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return"";var pl=res.get_plugin("avl_notifications");if(!pl)
return"";var nf=pl.get_notification(arr[1]);if(!nf)
return"";var col=nf.get_units();if(!col||!col.length)
return this.translation.no_units;var html="<table>";for(var i=0;i<col.length;i++){var unit=col[i];html+="<tr><td>"+unit.get_name()+"</td><td>";var pos=unit.get_position();if(pos)
html+=pos.get_location();else
html+="--";html+="</td></tr>";}
html+="</table>";return html;},get_notify_title:function(arr){if(!arr||arr.length!=2)
return"";var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return"";var pl=res.get_plugin("avl_notifications");if(!pl)
return"";var nf=pl.get_notification(arr[1]);if(!nf)
return"";var rows=new Array;var mod_tm=WebCMS.get_module("user_settings_time");if(mod_tm){rows.push({name:this.translation.act_time,value:mod_tm.format_time(nf.get_activation_time(),false)});rows.push({name:this.translation.deact_time,value:mod_tm.format_time(nf.get_deactivation_time(),false)});}
if(nf.get_max_alarms())
rows.push({name:this.translation.max_alarms,value:nf.get_max_alarms()});var text=nf.get_text();if(text.length>50)
text=text.substring(0,50)+"...";rows.push({name:this.translation.alarm_template,value:text});var html="<table style='color: #000000'><tr><td colspan='2' align='center'><b>"+nf.get_name()+"</b><hr size='1'/></td></tr>";for(var i=0;i<rows.length;i++)
html+="<tr><td style='padding-bottom: 5px'>"+rows[i].name+":</td><td style='padding-left: 30px;padding-bottom: 5px'>"+rows[i].value+"</td></tr>";html+="</table>";return html;},get_trigger_title:function(arr){if(!arr||arr.length!=2)
return"";var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return"";var pl=res.get_plugin("avl_notifications");if(!pl)
return"";var nf=pl.get_notification(arr[1]);if(!nf)
return"";var tr=nf.get_trigger();if(!tr)
return"";var obj=this.triggers[tr.get_type()];if(typeof obj=="undefined")
return this.translation.unk_trigger;return obj.get_title(res,nf,tr);},get_action_title:function(arr){if(!arr)
return"";var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return"";var pl=res.get_plugin("avl_notifications");if(!pl)
return"";var nf=pl.get_notification(arr[1]);if(!nf)
return"";var name=[];for(var i=2;i<arr.length;i++)
name.push(arr[i]);var obj=this.actions[name.join("_")];if(typeof obj=="undefined")
return this.translation.unk_action;return obj.get_title(res,nf);},on_edit_notification:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_notifications");if(!pl)
return;var nf=pl.get_notification(arr[1]);if(!nf)
return;var mod_ndlg=WebCMS.get_module("notify_dialog");if(mod_ndlg)
mod_ndlg.show(res.get_id(),nf.get_id(),nf.get_id());},on_copy_notification:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_notifications");if(!pl)
return;var nfl=pl.get_notifications();var limit=pl.get_notifications_limit();if(nfl&&limit>=0&&nfl.length>=limit){alert(this.translation.limit_reached);return;}
var nf=pl.get_notification(arr[1]);if(!nf)
return;var mod_ndlg=WebCMS.get_module("notify_dialog");if(mod_ndlg)
mod_ndlg.show(res.get_id(),nf.get_id(),0);},on_del_notification:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_notifications");if(!pl)
return;var nf=pl.get_notification(arr[1]);if(!nf)
return;if(!confirm(sprintf(this.translation.del_confirm,nf.get_name())))
return;pl.delete_notification(nf,function(result,error_text,cparam){if(!result)
WebCMS.log_msg(sprintf(NotifyListCMSModule.translation.error_delete,cparam.name,error_text),2);else{WebCMS.log_msg(sprintf(NotifyListCMSModule.translation.succ_delete,cparam.name),1);NotifyListCMSModule.on_notification_updated(cparam.res,[cparam.id,null]);}},{name:nf.get_name(),res:res,id:nf.get_id()});},refresh_list:function(){jQuery("tr[@id^=notify_list_row]").remove();var resources=Wialon.get_resources();for(var i=0;i<resources.length;i++){var res=resources[i];this.acl_res[res.get_id()]=res.get_access_level();if(this.res_filter!=0&&res.get_id()!=this.res_filter)
continue;var plugin=res.get_plugin("avl_notifications");if(plugin){var notifications=plugin.get_notifications();for(var j=0;j<notifications.length;j++){var notify=notifications[j];if(this.check_filter(notify.get_name(),res.get_id()))
this.update_row_html(res,notify);}}}},update_resource_filter:function(filter){this.res_filter=filter;this.refresh_list();},update_list_filter:function(filter){this.list_filter=filter;this.refresh_list();},check_filter:function(name,resource){return((this.name_filter=="*"||WebCMS.compare_wildcard(name,this.list_filter))&&(this.res_filter==0||resource==this.res_filter));}});WebCMS.register_module(NotifyListCMSModule);var NotifyTriggerZoneCMSModule=Base.extend({constructor:null,img_url:"/notify_defaults/zone.png",translation:{},get_type:function(){return"notify_trigger_zone";},get_trigger_type:function(){return"geozone";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(res,nf,tr){if(!res||!nf||!tr)
return"";var txt=this.translation.zone_in;if(tr.get_param("type")=="1")
txt=this.translation.zone_out;var gz_name="(N/A)";var pl=res.get_plugin("avl_zones_library");if(pl){var zone;var zone_ids=tr.get_param("geozone_ids");if(zone_ids&&zone_ids.length>0)
zone=pl.get_zone(zone_ids.split(",")[0]);else
zone=pl.get_zone(tr.get_param("geozone_id"));if(zone)
gz_name=zone.get_name();}
return sprintf(txt,gz_name);}});var NotifyTriggerSpeedCMSModule=Base.extend({constructor:null,img_url1:"/notify_defaults/speed.png",img_url2:"/notify_defaults/idle.png",translation:{},get_type:function(){return"notify_trigger_speed";},get_trigger_type:function(){return"speed";},get_img_url:function(obj){if(obj.get_param("min_idle_time")!="")
return WebCMS.get_img_url(this.img_url2);else
return WebCMS.get_img_url(this.img_url1);},get_title:function(res,nf,tr){if(!res||!nf||!tr)
return"";if(tr.get_param("min_idle_time")!=""){var txt="<table><tr><td colspan='2' align='center'><b>"+this.translation.idle+"</b><hr size='1'/></td></tr>";txt+="<tr><td>"+this.translation.speed_idle+":</td><td>"+(tr.get_param("min_speed")-1)+"</td></tr>";txt+="<tr><td>"+this.translation.min_idle_time+":</td><td>"+tr.get_param("min_idle_time")+"</td></tr></table>";return txt;}else{var txt=this.translation.speed;txt+=":<br/>"+this.translation.speed_min+" "+tr.get_param("min_speed")+" "+this.translation.kmh;txt+="<br/>"+this.translation.speed_max+" "+tr.get_param("max_speed")+" "+this.translation.kmh;return txt;}}});var NotifyTriggerAlarmCMSModule=Base.extend({constructor:null,img_url:"/notify_defaults/alarm.png",translation:{},get_type:function(){return"notify_trigger_alarm";},get_trigger_type:function(){return"alarm";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(res,nf,tr){if(!res||!nf||!tr)
return"";return this.translation.alarm;}});var NotifyTriggerDigitalInputCMSModule=Base.extend({constructor:null,img_url:"/notify_defaults/digital_input.png",translation:{},get_type:function(){return"notify_trigger_digital_input";},get_trigger_type:function(){return"digital_input";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(res,nf,tr){if(!res||!nf||!tr)
return"";var txt=sprintf(this.translation.digital_input,(parseInt(tr.get_param("type"))?this.translation.digital_input_deactivated:this.translation.digital_input_activated),tr.get_param("input_index"));return txt;}});var NotifyTriggerMsgParamCMSModule=Base.extend({constructor:null,img_url:"/notify_defaults/msg_param.png",translation:{},get_type:function(){return"notify_trigger_msg_param";},get_trigger_type:function(){return"msg_param";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(res,nf,tr){if(!res||!nf||!tr)
return"";var html="<table><tr><td colspan='2' align='center'><b>"+this.translation.msg_param+"</b><hr size='1'/></td></tr>";html+="<tr><td>"+this.translation.param_name+":</td><td>"+tr.get_param("param")+"</td></tr>";html+="<tr><td>"+this.translation.lower_bound+":</td><td>"+tr.get_param("lower_bound")+"</td></tr>";html+="<tr><td>"+this.translation.upper_bound+":</td><td>"+tr.get_param("upper_bound")+"</td></tr>";html+="<tr><td>"+this.translation.ctl_type+":</td><td>"+(tr.get_param("type")?this.translation.out_range:this.translation.in_range)+"</td></tr>";html+="</table>";return html;}});var NotifyTriggerSensorValueCMSModule=Base.extend({constructor:null,img_url:"/notify_defaults/sensor_value.png",translation:{},get_type:function(){return"notify_trigger_sensor_value";},get_trigger_type:function(){return"sensor_value";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(res,nf,tr){if(!res||!nf||!tr)
return"";var html="<table><tr><td colspan='2' align='center'><b>"+this.translation.sensor_value+"</b><hr size='1'/></td></tr>";var type_name=tr.get_param("sensor_type");var mask_name=tr.get_param("sensor_name_mask");var sens_mgr=WebCMS.get_module("device_sensors");if(sens_mgr)
type_name=sens_mgr.get_type_name(type_name);if(type_name)
html+="<tr><td>"+this.translation.sensor_type+":</td><td>"+type_name+"</td></tr>";else if(mask_name)
html+="<tr><td>"+this.translation.sensor_mask_name+":</td><td>"+mask_name+"</td></tr>";html+="<tr><td>"+this.translation.lower_bound+":</td><td>"+tr.get_param("lower_bound")+"</td></tr>";html+="<tr><td>"+this.translation.upper_bound+":</td><td>"+tr.get_param("upper_bound")+"</td></tr>";html+="<tr><td>"+this.translation.merge_type+":</td><td>"+(tr.get_param("merge")?this.translation.merge:this.translation.separate)+"</td></tr>";html+="<tr><td>"+this.translation.ctl_type+":</td><td>"+(tr.get_param("type")?this.translation.out_range:this.translation.in_range)+"</td></tr>";html+="</table>";return html;}});var NotifyTriggerSMSCMSModule=Base.extend({constructor:null,img_url:"/notify_defaults/sms.png",translation:{},get_type:function(){return"notify_trigger_sms";},get_trigger_type:function(){return"sms";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(res,nf,tr){if(!res||!nf||!tr)
return"";var html="<table><tr><td colspan='2' align='center'><b>"+this.translation.sms+"</b><hr size='1'/></td></tr>";var mask=tr.get_param("mask");html+="<tr><td>"+this.translation.sms_mask+":</td><td>"+mask+"</td></tr>";html+="</table>";return html;}});var NotifyTriggerOutageCMSModule=Base.extend({constructor:null,img_url:"/notify_defaults/outage.png",translation:{},get_type:function(){return"notify_trigger_outage";},get_trigger_type:function(){return"outage";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(res,nf,tr){if(!res||!nf||!tr)
return"";var html="<table><tr><td colspan='2' align='center'><b>"+this.translation.closs+"</b><hr size='1'/></td></tr>";html+="<tr><td>"+this.translation.cltype+":</td><td>"+(tr.get_param("type")=="0"?"GPS":"GPRS")+"</td></tr>";html+="<tr><td>"+this.translation.cltime+":</td><td>"+parseInt(tr.get_param("time"))/60+"</td></tr></table>";return html;}});var NotifyActionEmailCMSModule=Base.extend({constructor:null,img_url:"/notify_defaults/email.png",translation:{},get_type:function(){return"notify_action_email";},get_action_type:function(){return"email";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(res,nf){var col=nf.get_actions();var col2=new Array;for(var i=0;i<col.length;i++){if(col[i].get_type()==this.get_action_type()){var items=col[i].get_param("email_to").split(";");for(var j=0;j<items.length;j++)
col2.push(items[j]);}}
return sprintf("%s: %s.",this.translation.text,col2.join(", "));}});var NotifyActionSMSCMSModule=Base.extend({constructor:null,img_url:"/notify_defaults/sms.png",translation:{},get_type:function(){return"notify_action_sms";},get_action_type:function(){return"sms";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(res,nf){var col=nf.get_actions();var col2=new Array;for(var i=0;i<col.length;i++){if(col[i].get_type()==this.get_action_type()){var items=col[i].get_param("phones").split(";");for(var j=0;j<items.length;j++)
col2.push(items[j]);}}
return sprintf("%s: %s.",this.translation.text,col2.join(", "));}});var NotifyActionMessageCMSModule=Base.extend({constructor:null,img_url:"/notify_defaults/message.png",translation:{},get_type:function(){return"notify_action_message";},get_action_type:function(){return"message";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(res,nf){return this.translation.text;}});var NotifyActionEventCMSModule=Base.extend({constructor:null,img_evt_url:"/notify_defaults/event.png",img_viol_url:"/notify_defaults/violation.png",translation:{},get_type:function(){return"notify_action_event";},get_action_type:function(){return"event";},get_img_url:function(obj){var flags=(obj.params&&!isNaN(obj.params["flags"]))?parseInt(obj.params["flags"]):0;if(flags&0x1)
return WebCMS.get_img_url(this.img_viol_url);else
return WebCMS.get_img_url(this.img_evt_url);},get_title:function(res,nf){var col=nf.get_actions();for(var i=0;i<col.length;i++){if(col[i].get_type()==this.get_action_type()){var flags=(col[i].params&&!isNaN(col[i].params["flags"]))?parseInt(col[i].params["flags"]):0;if(flags&0x1)
return this.translation.viol_title;else
return this.translation.evt_title;}}
return"";}});var NotifyActionExecCmdCMSModule=Base.extend({constructor:null,img_url:"/notify_defaults/exec_cmd.png",translation:{},get_type:function(){return"notify_action_exec_cmd";},get_action_type:function(){return"exec_cmd";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(res,nf){var col=nf.get_actions();var cmd_name="";for(var i=0;i<col.length;i++){if(col[i].get_type()==this.get_action_type()){cmd_name=col[i].get_param("name");break;}}
var mod_name="command_"+cmd_name;var mod=WebCMS.get_module(mod_name);if(mod)
cmd_name=mod.get_title();return sprintf("%s",cmd_name);}});var NotifyActionSetAccessCMSModule=Base.extend({constructor:null,img_url:"/notify_defaults/user_access.png",translation:{},get_type:function(){return"notify_action_user_access";},get_action_type:function(){return"user_access";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(res,nf){return this.translation.access_title;}});var NotifyActionSetCounterCMSModule=Base.extend({constructor:null,img_url:"/notify_defaults/counter.png",translation:{},get_type:function(){return"notify_action_set_counter";},get_action_type:function(){return"counter";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(res,nf){return this.translation.counter_title;}});var NotifyActionStatusCMSModule=Base.extend({constructor:null,img_url:"/notify_defaults/status.png",translation:{},get_type:function(){return"notify_action_status";},get_action_type:function(){return"status";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(res,nf){var col=nf.get_actions();for(var i=0;i<col.length;i++){if(col[i].get_type()==this.get_action_type())
return this.translation.title;}
return"";}});WebCMS.register_module(NotifyTriggerZoneCMSModule);WebCMS.register_module(NotifyTriggerSpeedCMSModule);WebCMS.register_module(NotifyTriggerAlarmCMSModule);WebCMS.register_module(NotifyTriggerDigitalInputCMSModule);WebCMS.register_module(NotifyTriggerMsgParamCMSModule);WebCMS.register_module(NotifyTriggerSensorValueCMSModule);WebCMS.register_module(NotifyTriggerOutageCMSModule);WebCMS.register_module(NotifyTriggerSMSCMSModule);WebCMS.register_module(NotifyActionEmailCMSModule);WebCMS.register_module(NotifyActionSMSCMSModule);WebCMS.register_module(NotifyActionMessageCMSModule);WebCMS.register_module(NotifyActionEventCMSModule);WebCMS.register_module(NotifyActionExecCmdCMSModule);WebCMS.register_module(NotifyActionSetAccessCMSModule);WebCMS.register_module(NotifyActionSetCounterCMSModule);WebCMS.register_module(NotifyActionStatusCMSModule);var mod_lst=WebCMS.get_module("notify_list");if(mod_lst){mod_lst.register_trigger(NotifyTriggerZoneCMSModule);mod_lst.register_trigger(NotifyTriggerSpeedCMSModule);mod_lst.register_trigger(NotifyTriggerAlarmCMSModule);mod_lst.register_trigger(NotifyTriggerDigitalInputCMSModule);mod_lst.register_trigger(NotifyTriggerMsgParamCMSModule);mod_lst.register_trigger(NotifyTriggerSensorValueCMSModule);mod_lst.register_trigger(NotifyTriggerOutageCMSModule);mod_lst.register_trigger(NotifyTriggerSMSCMSModule);mod_lst.register_action(NotifyActionEmailCMSModule);mod_lst.register_action(NotifyActionSMSCMSModule);mod_lst.register_action(NotifyActionMessageCMSModule);mod_lst.register_action(NotifyActionEventCMSModule);mod_lst.register_action(NotifyActionExecCmdCMSModule);mod_lst.register_action(NotifyActionSetAccessCMSModule);mod_lst.register_action(NotifyActionSetCounterCMSModule);mod_lst.register_action(NotifyActionStatusCMSModule);}
var NotifyOnlineCMSModule=Base.extend({constructor:null,notifications:[],edit_img_url:"/notify_list/edit.png",notify_new_img_url:"/notify_online/notify_new_16x16.gif",notify_read_img_url:"/notify_online/notify_read_16x16.png",notify_none_img_url:"/notify_online/notify_empty_16x16.png",translation:{},offset_scroll:0,size_table:0,show_window:false,get_type:function(){return"notify_online";},register_notify:function(obj){},on_init:function(){var html=this.html_init();jQuery("body").append(html);jQuery("#notify_online_target").fadeTo('fast',0.8,function(){jQuery(this).hide();});Wialon.bind_event_handler("msg_registered",0,function(event_type,event_id,event_data){NotifyOnlineCMSModule.on_msg_recieved(Wialon.get_item(event_id),event_data);});jQuery("#notify_online_target").resize(function(){NotifyOnlineCMSModule.resize();});jQuery("#notify_online_close").click(function(){NotifyOnlineCMSModule.on_close();NotifyOnlineCMSModule.update_status_notify();return false;});jQuery("#notify_online_remove_all").click(function(){NotifyOnlineCMSModule.on_remove_all_notify();NotifyOnlineCMSModule.update_status_notify();return false;});jQuery("#notify_online_remove_read").click(function(){NotifyOnlineCMSModule.on_remove_read_notify();NotifyOnlineCMSModule.update_status_notify();return false;});var notify_img=this.notify_none_img_url;var html="&nbsp;"+this.translation.notify_icon_name+"&nbsp;<img id='status_notify_online' border='0' align='absmiddle' src='"+notify_img+"'>&nbsp;|&nbsp;";jQuery("#bottom_panel_area").prepend(html);jQuery("#status_notify_online").attr("title","X").Tooltip({showURL:false,bodyHandler:function(e){return NotifyOnlineCMSModule.status_notify_tooltip();}}).css({cursor:"pointer"});jQuery("#status_notify_online").click(function(){NotifyOnlineCMSModule.on_open_close();return false;});},on_msg_recieved:function(item,msg){if(!item||!msg)
return;if(msg.get_type()=="unm"){var u=msg.get_unit();if(!u)
return;if(msg.get_text()=="")
return;this.notifications.push({item:item,msg:msg});var user=Wialon.get_current_user();if(user&&parseInt(user.get_private_property("pnfs","0"))>0)
jQuery("#play_notify_sound").html("<embed src='/notify_online/notify.wav' type='audio/wav' hidden='true' width='0' height='0'/>");var index=this.notifications.length-1;this.add_row(index);this.show();}},add_row:function(index){var unit_name=this.get_unit_name(index);var msg_name=this.get_msg_name(index);var text=this.get_notify_text(index);var html=this.html_add_row(index,unit_name,msg_name,text);this.get_offset_scroll_and_size_table();var state=jQuery("#notify_online_button_show_hide_"+(index-1)).attr("state");jQuery("#notify_online_table").prepend(html);this.resize_table(this.size_table,state);jQuery("#notify_online_content_show_hide_"+index).slideUp();jQuery("#notify_title_unit_name_"+index).click(function(e){NotifyOnlineCMSModule.on_click_title(e);return false;});jQuery("#notify_title_msg_name_"+index).click(function(e){NotifyOnlineCMSModule.on_click_text(e);return false;});jQuery("#notify_online_content_"+index).click(function(e){NotifyOnlineCMSModule.on_click_text(e);return false;});jQuery("#notify_online_button_close_"+index).click(function(e){NotifyOnlineCMSModule.on_close_notify(e);NotifyOnlineCMSModule.update_status_notify();return false;});jQuery("#notify_online_button_show_hide_"+index).click(function(e){var state=parseInt(jQuery(this).attr("state"));NotifyOnlineCMSModule.on_show_hide_notify(e,state);jQuery("#notify_title_unit_name_"+index).css("font-weight","normal");jQuery("#notify_title_msg_name_"+index).css("font-weight","normal");if(state==1){jQuery(this).attr("src","/notify_online/show.png");jQuery(this).attr("state","0");}else{jQuery(this).attr("src","/notify_online/hide.png");jQuery(this).attr("state","1");}
jQuery(this).attr("read","1");NotifyOnlineCMSModule.update_status_notify();return false;});jQuery("#notify_title_unit_img_"+index).attr("title","X").Tooltip({showURL:false,bodyHandler:function(e){return NotifyOnlineCMSModule.on_unit_tooltip(index);}});NotifyOnlineCMSModule.update_status_notify();},on_unit_tooltip:function(i){var n=NotifyOnlineCMSModule.notifications[i];if(!n)
return"";var unit=n.msg.get_unit();var mod=WebCMS.get_module("unit_info_text");if(!mod)
return"";return mod.get_info_text(unit);},status_notify_tooltip:function(){var html="<font style='font-size:11px ;font-weight: bolder'>"+this.not_read_count()+" "+this.translation.status_notify_tooltip+"&nbsp;</font>";return html;},update_status_notify:function(){var notify_img="";var empty=this.empty();var not_read=NotifyOnlineCMSModule.is_notify_not_read();if(not_read&&!empty)
notify_img=this.notify_new_img_url;if(!not_read&&!empty)
notify_img=this.notify_read_img_url;if(empty)
notify_img=this.notify_none_img_url;jQuery("#status_notify_online").attr("src",notify_img);},get_unit_icon_url:function(index){if(this.notifications.length==0||index>=this.notifications.length)
return"";var n=this.notifications[index];if(!n)
return"";var unit=n.msg.get_unit();if(!unit)
return"";var pl=unit.get_plugin("avl_item_icon");return pl.get_icon_url(16);},get_unit_name:function(index){if(this.notifications.length==0||index>=this.notifications.length)
return"";var n=this.notifications[index];if(!n)
return"";var unit=n.msg.get_unit();if(!unit)
return"";return unit.get_name();},get_msg_name:function(index){if(this.notifications.length==0||index>=this.notifications.length)
return"";var n=this.notifications[index];if(!n)
return"";return n.msg.get_name();},get_notify_text:function(index){if(this.notifications.length==0||index>=this.notifications.length)
return"";var n=this.notifications[index];if(!n)
return"";var unit=n.msg.get_unit();if(!unit)
return"";return n.msg.get_text();},not_read_count:function(){var count=0;for(var val in this.notifications){if(jQuery("#notify_online_button_show_hide_"+val).attr("read")==0)
count++;}
return count;},size:function(){var size=0;for(var val in this.notifications)
size++;return size;},empty:function(){if(!this.size())
return true;return false;},is_notify_not_read:function(){var is=false;for(var val in this.notifications){if(jQuery("#notify_online_button_show_hide_"+val).attr("read")==0){is=true;break;}}
return is;},show:function(){if(!this.show_window){jQuery("#notify_online_target > .jrCorner").remove();jQuery("#notify_online_target").css("display","block");this.show_window=true;this.resize();}},resize:function(){var x=(jQuery(window).width()-jQuery("#notify_online_target").width())-40;var y=40;jQuery("#notify_online_target").css({left:x,top:y});var mod=WebCMS.get_module("unit_cmds_response");if(mod)
mod.resize();},resize_table:function(size,last_state){var len=this.notifications.length;var sz=jQuery("#notify_online_table").height();if(sz==0)sz=100;var height=sz;if(height>180&&jQuery("#notify_online_table_div").css("overflow-y")=="hidden"){jQuery("#notify_online_table_div").css("height","180px");jQuery("#notify_online_table_div").css("overflow-y","auto");}else if(height<180&&jQuery("#notify_online_table_div").css("overflow-y")=="auto"){if(height<100)
sz=100;jQuery("#notify_online_table_div").css("overflow-y","hidden");jQuery("#notify_online_table_div").css("height",sz+"px");if(size!=0&&(this.offset_scroll!=0||(!this.offset_scroll&&last_state==1)))
jQuery("#notify_online_table_div").scrollTop(this.offset_scroll+sz-size);}else if(height>180){if(size!=0&&(this.offset_scroll!=0||(!this.offset_scroll&&last_state==1)))
jQuery("#notify_online_table_div").scrollTop(this.offset_scroll+sz-size);}else if(height<180){if(height<100)
sz=100;jQuery("#notify_online_table_div").css("height",sz+"px");}},html_init:function(){var html="<div id='notify_online_target' class='notify_online_div' style='width:390px;z-index: 1000 !important;' >";html+="<div style='width:99%;height:100px;overflow-y: hidden;overflow-x: hidden'   align='center' id='notify_online_table_div'>";html+="<table class='notify_online_table' id='notify_online_table' ></table>";html+="</div>";html+="<div align='center' >";html+="<table class='notify_online_table'><tr>";html+="<td nowrap><a id='notify_online_close' class='notify_online_link' href=''>"+this.translation.close+"</a></td>";html+="<td nowrap>|</td>";html+="<td nowrap><a id='notify_online_remove_all' class='notify_online_link' href=''>"+this.translation.remove_all+"</a></td>";html+="<td nowrap>|</td>";html+="<td nowrap><a id='notify_online_remove_read' class='notify_online_link' href=''>"+this.translation.remove_read+"</a></td>";html+="</tr></table>";html+="</div>";html+="<div id='play_notify_sound'> </div>";html+="</div>";return html;},html_add_row:function(index,unit_name,msg_name,text){var unit_icon_url=this.get_unit_icon_url(index);var html="";html+="<tr class='notify_online_row_div' id='notify_online_close_"+index+"'>";html+="<td nowrap style='font-weight:bold; cursor:pointer'>";html+="<img style=' cursor:pointer' src='"+unit_icon_url+"' id='notify_title_unit_img_"+index+"'></img>";html+="</td>";html+="<td nowrap style='width:100%;font-weight:bold; cursor:pointer'>";html+="<span href='' id='notify_title_unit_name_"+index+"'>"+(unit_name.length>10?(unit_name.substr(0,10)+"..."):unit_name)+"</span>";html+="</td>";html+="<td nowrap style='width:100%; font-weight:bold; cursor:pointer'>";html+="<span href='' id='notify_title_msg_name_"+index+"'>"+(msg_name.length>30?(msg_name.substr(0,30)+"..."):msg_name)+"</span>";html+="</td>";html+="<td>";html+="<img style=' cursor:pointer' src='/notify_online/show.png' read=0 state=0 id='notify_online_button_show_hide_"+index+"'/>";html+="</td>";html+="<td>";html+="<img style=' cursor:pointer' src='/notify_online/delete.png' id='notify_online_button_close_"+index+"'/>";html+="</td>";html+="</tr>";html+="<tr style='display:none;font-weight:normal' class='notify_online_row_div' id='notify_online_content_show_hide_"+index+"'>";html+="<td align=left colspan='5' >";html+="<span href='' id='notify_online_content_"+index+"'>"+text+"</span>";html+="</td>";html+="</tr>";return html;},on_click_text:function(evt){if(this.notifications.length==0)
return;var i=jQuery(evt.target).attr("id").substring(22);var n=this.notifications[i];if(!n)
return;var lat=n.msg.get_lat();var lon=n.msg.get_lon();if(!lat||!lon)
return;WebCMS.locate(lat,lon);},on_click_title:function(evt){if(this.notifications.length==0)
return;var i=jQuery(evt.target).attr("id").substring(23);var n=this.notifications[i];if(!n)
return;var unit=n.msg.get_unit();if(!unit)
return;var lat=unit.get_position().get_lat();var lon=unit.get_position().get_lon();if(!lat||!lon)
return;WebCMS.locate(lat,lon);},on_remove_all_notify:function(){this.get_offset_scroll_and_size_table();for(var val in this.notifications){var id_close="#notify_online_close_"+val;var id_content="#notify_online_content_show_hide_"+val;jQuery(id_close).remove();jQuery(id_content).remove();}
this.notifications.splice(0,this.notifications.length);this.on_close();},on_remove_read_notify:function(){this.get_offset_scroll_and_size_table();for(var val in this.notifications){if(jQuery("#notify_online_button_show_hide_"+val).attr("read")==1){var id_close="#notify_online_close_"+val;var id_content="#notify_online_content_show_hide_"+val;jQuery(id_close).remove();jQuery(id_content).remove();delete this.notifications[val];}}
this.resize_table(0,0);if(!jQuery("#notify_online_table tr").size()){this.on_close();}},on_open_close:function(){if(!this.show_window){this.on_open();this.resize_table(0,0);}else
this.on_close();},on_open:function(){this.show();WebCMS.log_action("secwnd","notify");},on_close:function(){WebCMS.log_action("secwnd","notify");if(this.show_window){var user=Wialon.get_current_user();if(user&&parseInt(user.get_private_property("pnfs","0"))>0)
jQuery("#play_notify_sound").html("");jQuery("#notify_online_target").css("display","none");this.show_window=false;var mod=WebCMS.get_module("unit_cmds_response");if(mod)
mod.resize();}},on_close_notify:function(evt){this.get_offset_scroll_and_size_table();var index=jQuery(evt.target).attr("id").substring(27);var id_close="#notify_online_close_"+index;var id_content="#notify_online_content_show_hide_"+index;var content="#notify_online_content_"+index;jQuery(content).css("display","none");jQuery(id_close).remove();jQuery(id_content).remove();delete this.notifications[index];this.resize_table(this.size_table,0);if(!jQuery("#notify_online_table tr").size()){this.on_close();}},on_show_hide_notify:function(evt,st){this.get_offset_scroll_and_size_table();var index=jQuery(evt.target).attr("id").substring(31);var content="#notify_online_content_show_hide_"+index;if(st==1){jQuery(content).css("display","none");}else{jQuery(content).css("display","");}
if(jQuery("#notify_online_table_div").scrollTop()==0){this.get_offset_scroll_and_size_table();}
this.resize_table(0,0);},get_offset_scroll_and_size_table:function(){this.offset_scroll=jQuery("#notify_online_table_div").scrollTop();this.size_table=jQuery("#notify_online_table").height();}});WebCMS.register_module(NotifyOnlineCMSModule);var UserSettingsNotifyCMSModule=Base.extend({constructor:null,translation:{},priority:5,get_type:function(){return"user_settings_notify";},get_row_html:function(){var html="<tr><td>"+this.translation.play_sound+":</td><td><input type='checkbox' id='user_settings_notify_sound'/></td></tr>";return html;},bind_row_events:function(){var user=Wialon.get_current_user();if(!user)
return;jQuery("#user_settings_notify_sound").attr("checked",user.get_private_property("pnfs","0")=="1"?true:false).attr("title",this.translation.title).Tooltip({showURL:false});},is_row_ok:function(){return true;},save_row_data:function(){var play_sound=jQuery("#user_settings_notify_sound").attr("checked")?"1":"0";var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user||user.get_private_property("pnfs","0")==play_sound)
return;user.set_private_property("pnfs",play_sound);mod_us.store_settings();},on_init:function(){var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);var user=Wialon.get_current_user();if(!user)
return;if(user.get_public_property("play_notify_sound","")!=""||user.get_public_property("notify_action_email","")!=""||user.get_public_property("notify_action_sms","")!=""){user.set_public_property("play_notify_sound","");user.set_public_property("notify_action_email","");user.set_public_property("notify_action_sms","");var mod_us=WebCMS.get_module("user_settings");if(mod_us)
mod_us.store_settings();}}});WebCMS.register_module(UserSettingsNotifyCMSModule);var UnitGroupsListCMSModule=Base.extend({constructor:null,unit_groups:new Object,settings_changed:false,timeout_changed:0,group_border_size:16,visible_groups:new Object,visible_groups_count:0,translation:{},config_img_url:"/unit_groups_list/configure.png",config_none_img_url:"/unit_groups_list/configure_none.png",del_img_url:"/unit_groups_list/del.png",del_none_img_url:"/unit_groups_list/del_none.png",action_head_img_url:"/unit_groups_list/action.png",copy_img_url:"/unit_groups_list/copy.png",units_img_url:"/unit_groups_list/units.png",cmd_head_img_url:"/unit_groups_list/head.png",cmd_img_url:"/unit_groups_list/exec_cmd.png",filter:"*",rows_array:[],acl_array:{},rows_array_hash:{},get_type:function(){return"unit_groups_list";},on_init:function(){Wialon.bind_event_handler("show_panel",0,function(event_type,event_id,event_data){if(event_id=="units_groups")
UnitGroupsListCMSModule.on_display_init();});var user=Wialon.get_current_user();if(!user)
return;var mod_icb=WebCMS.get_module("items_create_btn");if(mod_icb&&!mod_icb.show_search_ctrl)
this.filter="*";try{var ugl=user.get_private_property("ugl","null");if(ugl!="null")
ugl=null;var col=jQuery.parseJSON(ugl);if(col){if(typeof col=="number"){var s=col;col=[s];}
for(var i=0;i<col.length;i++){var group=Wialon.get_item(col[i]);if(!group||(this.filter!="*"&&!WebCMS.compare_wildcard(group.get_name(),this.filter)))
continue;this.visible_groups[group.get_id()]=1;this.visible_groups_count++;this.show_group(group.get_id());}
this.update_icons();}}catch(e){}
if(user.get_public_property("unit_groups_list","")!=""||user.get_public_property("unit_groups_list_fltr","")!=""||user.get_public_property("devices_list_fltr","")!=""||user.get_public_property("users_list_fltr","")!=""){user.set_public_property("unit_groups_list","");user.set_public_property("unit_groups_list_fltr","");user.set_public_property("devices_list_fltr","");user.set_public_property("users_list_fltr","");var mod_us=WebCMS.get_module("user_settings");if(mod_us)
mod_us.store_settings();}
var mod_wd=WebCMS.get_module("workspace_devices");if(mod_wd)
mod_wd.register_search(this);Wialon.bind_event_handler("monitorig_unit_state_changed",0,function(event_type,event_id,event_data){UnitGroupsListCMSModule.on_unit_state_changed(event_id,event_data);});},on_display_init:function(){if(this.shown){this.make_table();return;}else
this.shown=true;Wialon.bind_event_handler("item_created",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_unit_group")
UnitGroupsListCMSModule.on_group_created(event_data);});Wialon.bind_event_handler("item_deleted",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_unit_group")
UnitGroupsListCMSModule.on_group_deleted(event_data);});Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.u!='undefined')
UnitGroupsListCMSModule.on_group_units_updated(Wialon.get_item(event_id));if(typeof event_data.ugi!='undefined')
UnitGroupsListCMSModule.on_group_icon_updated(Wialon.get_item(event_id));if(typeof event_data.nm!='undefined')
UnitGroupsListCMSModule.on_group_updated(Wialon.get_item(event_id));if(typeof event_data.acl!='undefined'&&event_id==Wialon.get_current_user().get_id()){for(var i in event_data.acl){var item=Wialon.get_item(i);var old_acl=UnitGroupsListCMSModule.acl_array[i];if(item&&item.get_type()=="avl_unit_group"&&(old_acl!=event_data.acl[i]||!old_acl)){UnitGroupsListCMSModule.acl_array[i]=event_data.acl[i];UnitGroupsListCMSModule.on_group_updated(item);}}}});this.make_table();jQuery("#unit_groups_list_target_div").attr("title","X").Tooltip({showURL:false,track_children:true,bodyHandler:function(e){if(!e)
return"";var mod=UnitGroupsListCMSModule;var id=e;if(id=="unit_groups_head_action")
return"<b>"+mod.translation.action+"</b>";else if(id=="unit_groups_head_units")
return"<b>"+mod.translation.units+"</b>";else if(id=="unit_groups_head_cmd")
return"<b>"+mod.translation.send_cmg_head+"</b>";else if(id.substring(0,24)=="unit_groups_list_config_")
return"<b>"+mod.translation.config+"</b>";else if(id.substring(0,22)=="unit_groups_list_copy_")
return"<b>"+mod.translation.copy+"</b>";else if(id.substring(0,21)=="unit_groups_list_del_")
return"<b>"+mod.translation.del+"</b>";else if(id.substring(0,22)=="unit_groups_list_name_")
return mod.get_group_units(Wialon.get_item(id.substring(22)));else if(id.substring(0,23)=="unit_groups_list_units_")
return mod.get_group_units(Wialon.get_item(id.substring(23)));else if(id.substring(0,22)=="unit_groups_head_icon_")
return mod.get_group_units(Wialon.get_item(id.substring(22)));else if(id.substring(0,21)=="unit_groups_list_cmd_")
return"<b>"+mod.translation.send_cmd+"</b>";else if(id.substring(0,24)=="unit_groups_list_import_")
return"<b>"+mod.translation.import_tip+"</b>";return"";}}).click(function(evt){var target=evt.target;var id=target.id;var mod=UnitGroupsListCMSModule;if(typeof id=="undefined")
return;if(id=="unit_groups_head_cb"){mod.on_select_all();return;}
var arr=id.split("_");if(arr.length!=5)
return;if(arr[3]=="config")
mod.on_edit_group(arr[4]);else if(arr[3]=="copy")
mod.on_copy_group(arr[4]);else if(arr[3]=="del"&&jQuery(target).css("cursor")=="pointer")
mod.on_del_group(arr[4]);else if(arr[3]=="cb")
mod.on_switch_group(arr[4],true);else if(arr[3]=="cmd")
mod.on_send_cmd(arr[4]);else if(arr[3]=="import")
mod.on_import_unit(arr[4]);});},make_table:function(){var unit_groups=Wialon.get_unit_groups();this.rows_array=new Array;this.rows_array_hash=new Object;this.acl_array=new Object;this.rows_array_hash["unit_groups_list_row_header"]=this.rows_array.length;this.rows_array.push("unit_groups_list_row_header");var new_visible_groups_count=0;var old_visible_groups_count=this.visible_groups_count;for(var i=0;i<unit_groups.length;i++){var group=unit_groups[i];var id=group.get_id();if(this.filter!="*"&&!WebCMS.compare_wildcard(group.get_name(),this.filter)){if(this.visible_groups[id])
this.hide_group(id);continue;}
this.rows_array_hash[group.get_id()]=this.rows_array.length;this.rows_array.push(group);this.acl_array[group.get_id()]=group.get_access_level();if(this.visible_groups[id])
new_visible_groups_count++;}
if(old_visible_groups_count!=new_visible_groups_count){this.update_icons();this.visible_groups_count=new_visible_groups_count;}
var tbl_obj=new Object();tbl_obj.get_row=this.get_row_html;tbl_obj.cols_count=5;tbl_obj.rows_count=this.rows_array.length;tbl_obj.erase=true;tbl_obj.gap=4;tbl_obj.parent_class="panel_parent";jQuery("#unit_groups_list_target").fast_table(tbl_obj);},update_list_filter:function(filter){this.filter=filter;this.make_table();},get_row_html:function(pos){var mod=UnitGroupsListCMSModule;var mod_unimp=WebCMS.get_module("unit_import");if(pos==0){var html="<tr class='units_groups_list_head_tr'><td id='unit_groups_head_image' align='center'>&nbsp;</td>";html+="<td id='unit_groups_head_name' align='center' width='100%'><b>"+mod.translation.group+"</b></td>";html+="<td id='unit_groups_head_units' align='center'><img src='"+WebCMS.get_img_url(mod.units_img_url)+"'/></td>";if(mod_unimp)
html+="<td id='unit_groups_head_action' colspan='4' align='center'><img src='"+WebCMS.get_img_url(mod.action_head_img_url)+"'/></td></tr>";else
html+="<td id='unit_groups_head_action' colspan='3' align='center'><img src='"+WebCMS.get_img_url(mod.action_head_img_url)+"'/></td></tr>";return{id:"unit_groups_list_row_header",html:html};}
var group=mod.rows_array[pos];if(!group||typeof group=="undefined")
return null;var id=group.get_id();var acl=mod.acl_array[id];var html="<tr id='unit_groups_list_row_"+id+"'>";var pl=group.get_plugin("avl_item_icon");var url=mod.blank_img_url;if(pl)
url=pl.get_icon_url(mod.group_border_size);html+="<td id='unit_groups_list_image_"+id+"'><img id='unit_groups_head_icon_"+id+"' src='"+WebCMS.get_img_url(url)+"'/></td>";html+="<td style='width:100%' id='unit_groups_list_name_"+id+"'>"+group.get_name()+"</td>";var ucol=group.get_units();html+="<td id='unit_groups_list_units_"+id+"'>"+(ucol?ucol.length:0)+"</td>";var can_manage=acl>=Wialon.access_level("manage");var can_edit=acl>=Wialon.access_level("edit");if(!document.getElementById("unit_groups_create_target"))
can_manage=false;var manage_img=mod.del_img_url;if(can_edit)
html+="<td><img id='unit_groups_list_config_"+id+"' src='"+WebCMS.get_img_url(mod.config_img_url)+"' style='cursor: pointer'/></td>";else
html+="<td><img id='unit_groups_list_config_"+id+"' src='"+WebCMS.get_img_url(mod.config_none_img_url)+"' style='cursor: pointer'/></td>";if(mod_unimp)
html+='<td><img id="unit_groups_list_import_'+id+'" src="'+WebCMS.get_img_url(mod_unimp.get_import_icon_url())+'" style="cursor:pointer" /></td>';html+="<td><img id='unit_groups_list_copy_"+id+"' src='"+WebCMS.get_img_url(mod.copy_img_url)+"' style='cursor: pointer'/></td>";if(can_manage)
html+="<td><img id='unit_groups_list_del_"+id+"' src='"+WebCMS.get_img_url(mod.del_img_url)+"' style='cursor: pointer'/></td>";else
html+="<td><img id='unit_groups_list_del_"+id+"' src='"+WebCMS.get_img_url(mod.del_none_img_url)+"'/></td>";return{id:"unit_groups_list_row_"+id,html:html};},on_group_deleted:function(group){if(!group)
return;var unit_groups_id=group.get_id();var pos=this.rows_array_hash[unit_groups_id];if(typeof pos=="undefined")
return;delete this.rows_array_hash[unit_groups_id];this.rows_array.splice(pos,1);for(var id in this.rows_array_hash){if(this.rows_array_hash[id]>pos)
this.rows_array_hash[id]--;}
jQuery("#unit_groups_list_target").ft_remove_row(pos,"unit_groups_list_row_"+group.get_id());this.check_select_all_groups();if(this.visible_groups[unit_groups_id]){this.hide_group(unit_groups_id);this.update_icons(0,unit_groups_id);}},on_group_created:function(group){if(!group)
return;if(this.filter!="*"&&!WebCMS.compare_wildcard(group.get_name(),this.filter))
return;this.rows_array_hash[group.get_id()]=this.rows_array.length;this.rows_array.push(group);jQuery("#unit_groups_list_target").ft_append_rows(1);this.check_select_all_groups();},on_group_updated:function(group){if(!group||group.get_type()!="avl_unit_group")
return;if(this.filter!="*"&&!WebCMS.compare_wildcard(group.get_name(),this.filter)){this.on_group_deleted(group);return;}
jQuery("#unit_groups_list_target").ft_update_row("unit_groups_list_row_"+group.get_id());},on_edit_group:function(unit_groups_id){if(!unit_groups_id)
return;var group=Wialon.get_item(unit_groups_id);if(!group||group.get_type()!="avl_unit_group")
return;var mod_idlg=WebCMS.get_module("items_dlg");if(mod_idlg)
mod_idlg.show("avl_unit_group",group,0);},on_copy_group:function(unit_groups_id){if(!unit_groups_id)
return;var group=Wialon.get_item(unit_groups_id);if(!group||group.get_type()!="avl_unit_group")
return;var mod_idlg=WebCMS.get_module("items_dlg");if(mod_idlg)
mod_idlg.show("avl_unit_group",group,1);},on_del_group:function(unit_groups_id){if(!unit_groups_id)
return;var group=Wialon.get_item(unit_groups_id);if(!group||group.get_type()!="avl_unit_group")
return;if(!confirm(sprintf(this.translation.confirm_delete,group.get_name())))
return;group.delete_item(function(result,error_text,cparam){if(!result)
WebCMS.log_msg(sprintf(UnitGroupsListCMSModule.translation.error_delete,cparam.group.get_name(),error_text),2);else{WebCMS.log_msg(sprintf(UnitGroupsListCMSModule.translation.succ_delete,cparam.group.get_name()),1);UnitGroupsListCMSModule.on_group_deleted(cparam.group);}},{group:group});},on_locate_group:function(group){var id=group.get_id();var col=group.get_units();var watching_units=new Object;var mod_mu=WebCMS.get_module("monitoring_units");for(i=0;i<col.length;i++){if(!col[i])
continue;if(!mod_mu.is_unit_visible(col[i]))
continue;if(!watching_units[col[i].get_id()])
watching_units[col[i].get_id()]=col[i];}
if(typeof this.visible_groups[id]=="undefined"){jQuery("#unit_groups_cb_"+id).attr("checked",true);this.on_switch_group(id,true);}
var mod_mm=WebCMS.get_module("monitoring_map");if(mod_mm){mod_mm.ensure_units_visible(watching_units,false,false);}},on_select_all:function(){var checked_all=jQuery("#unit_groups_head_cb").attr("checked")?true:false;for(var i=1;i<this.rows_array.length;i++){var gid=this.rows_array[i].get_id();var checked=typeof this.visible_groups[gid]!="undefined"?true:false;if(checked_all!=checked){UnitGroupsListCMSModule.on_switch_group(gid,false);jQuery("#unit_groups_list_target").ft_update_row("unit_groups_list_row_"+gid);}}
this.update_icons();},on_switch_group:function(group_id,update){var show=this.visible_groups[group_id]?false:true;if(!this.shown)
show=true;if(show){this.show_group(group_id);}else{this.hide_group(group_id);}
if(update)
this.update_icons(0,group_id);this.store_settings();this.check_select_all_groups();},show_group:function(group_id){var group=Wialon.get_item(group_id);if(!group)
return;var mod_image=WebCMS.get_module("unit_state_image");if(!mod_image)
return;var col=group.get_units();for(i=0;i<col.length;i++){if(!col[i])
continue;var pos=col[i].get_position();if(!pos)
continue;var mod_mu=WebCMS.get_module("monitoring_units");if(!mod_mu||!mod_mu.is_unit_visible(col[i]))
continue;var unit_id=col[i].get_id();unit_item=this.unit_groups[unit_id];if(typeof unit_item=="undefined"){unit_item=new Array();this.unit_groups[unit_id]=unit_item;}
group_item=unit_item[group_id];if(typeof group_item=="undefined"){unit_item[group_id]=new Object();group_item=unit_item[group_id];}
if(!group_item.cookie){var pl=group.get_plugin("avl_item_icon");var url=this.blank_img_url;if(pl)
url=pl.get_icon_url(this.group_border_size);group_item.cookie=mod_image.add_image(col[i],url,0,UnitGroupsListCMSModule.show_tooltip);}}
if(typeof this.visible_groups[group_id]=="undefined")
this.visible_groups_count++;this.visible_groups[group_id]=1;},on_send_cmd:function(group_id){var group=Wialon.get_item(group_id);if(!group)
return;var units=group.get_units();if(!units.length)
return;var units_ids=new Array;for(var i=0;i<units.length;i++)
units_ids.push(units[i].get_id());var mod_dlg=WebCMS.get_module("unit_cmds_dialog");if(mod_dlg)
mod_dlg.show(jQuery.toJSON(units_ids),"",{sel_units:1});},on_import_unit:function(group_id){var mod_unimp=WebCMS.get_module("unit_import");if(!mod_unimp)
return;var group=Wialon.get_item(group_id);if(!group)
return;var units=group.get_units();if(!units||units.length==0)
return;var uids=[];for(var i=0;i<units.length;i++)
uids.push(units[i].get_id());mod_unimp.import_from_file(uids);},show_tooltip:function(){var cookie=jQuery(this).attr("g_id");var id=cookie.split("_");if(id.length!=2)
return"";var group_item=UnitGroupsListCMSModule.unit_groups[id[0]];for(group_id in group_item){if(group_item[group_id].cookie!=cookie)
continue;return UnitGroupsListCMSModule.get_group_units(Wialon.get_item(group_id));}
return"";},hide_group:function(group_id){var mod_image=WebCMS.get_module("unit_state_image");if(!mod_image)
return;for(unit_id in this.unit_groups){if(typeof this.unit_groups[unit_id][group_id]=="undefined")
continue
if(this.unit_groups[unit_id][group_id].cookie){mod_image.remove_image(this.unit_groups[unit_id][group_id].cookie);this.unit_groups[unit_id][group_id].cookie=0;}}
if(typeof this.visible_groups[group_id]!="undefined")
this.visible_groups_count--;delete this.visible_groups[group_id];},update_icons:function(updated_unit_id,updated_group_id){var mod_image=WebCMS.get_module("unit_state_image");if(!mod_image)
return;mod_image.refresh_layer(0);},get_group_units:function(group){if(!group){return"Error";}
var col=group.get_units();if(!col||!col.length)
return this.translation.no_units;var html="<table><tr><td colspan='2' align='center'><b>"+group.get_name()+"</b><hr size='1'/></td></tr>";for(var i=0;i<col.length;i++){var unit=col[i];html+="<tr><td>"+unit.get_name()+"</td><td>";var pos=unit.get_position();if(pos)
html+=pos.get_location();else
html+="--";html+="</td></tr>";}
html+="</table>";return html;},on_group_units_updated:function(group){if(!group||group.get_type()!="avl_unit_group")
return;var gid=group.get_id();jQuery("#unit_groups_list_target").ft_update_row("unit_groups_list_row_"+gid);if(this.visible_groups[gid]){this.hide_group(gid);this.show_group(gid);this.update_icons();}},on_group_icon_updated:function(group){if(!group||group.get_type()!="avl_unit_group")
return;jQuery("#unit_groups_list_target").ft_update_row("unit_groups_list_row_"+group.get_id());var mod_image=WebCMS.get_module("unit_state_image");if(!mod_image)
return;var refresh=false;var group_id=group.get_id();for(unit_id in this.unit_groups){if(typeof this.unit_groups[unit_id][group_id]=="undefined"||!this.unit_groups[unit_id][group_id].cookie)
continue;mod_image.update_image(this.unit_groups[unit_id][group_id].cookie,url);refresh=true;}
if(refresh)
mod_image.refresh_layer(0);},on_unit_state_changed:function(unit_id,state){if(!unit_id)
return;if(state){for(var id in this.visible_groups){var group=Wialon.get_item(id);if(group&&group.check_unit(Wialon.get_item(unit_id)));this.show_group(group.get_id());}}
this.update_icons();},check_select_all_groups:function(){var check_all=this.visible_groups_count==this.rows_array.length-1;jQuery("#unit_groups_head_cb").attr("checked",check_all);},store_settings:function(){var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;var col=new Array;for(var id in this.visible_groups)
col.push(id);var prop_value=jQuery.toJSON(col);user.set_private_property("ugl",null);mod_us.store_settings();},get_search:function(){return{name:this.translation.search_by_group,comment:this.translation.search_by_group_comment,check_unit:function(unit,template){var unit_groups=Wialon.get_unit_groups();for(var i=0;i<unit_groups.length;i++){if(!unit_groups[i].check_unit(unit))
continue;if(!template.length)
return false;if(WebCMS.compare_wildcard(unit_groups[i].get_name(),template))
return true;}
if(template.length)
return false;else
return true;}};}});WebCMS.register_module(UnitGroupsListCMSModule);var mod_map=WebCMS.get_module("unit_groups_actions_menu");if(mod_map)
mod_map.register_unit_state_module(UnitGroupsListCMSModule);var POIDialogCMSModule=Base.extend({constructor:null,get_type:function(){return"poi_dialog";},show:function(res_id,poi_id,lat,lon){if(typeof res_id=="undefined")
res_id=0;if(typeof poi_id=="undefined")
poi_id=0;if(typeof lat=="undefined")
lat=0;if(typeof lon=="undefined")
lon=0;var mod_wiz=WebCMS.get_module("wizard_dlg");if(mod_wiz)
mod_wiz.show("/poi_dialog/poi_dlg.html",{res_id:res_id,poi_id:poi_id,lat:lat,lon:lon});},on_init:function(){var mod_mm=WebCMS.get_module("monitoring_map");var map=mod_mm?mod_mm.get_map():null;if(!map)
return;}});WebCMS.register_module(POIDialogCMSModule);var POICreateCMSModule=Base.extend({constructor:null,dblclick_handler:null,help_mod:null,translation:{},is_active:function(){return(this.dblclick_handler?true:false);},get_type:function(){return"poi_create";},on_init:function(){var mod_mm=WebCMS.get_module("monitoring_map");var hc=WebCMS.get_module("help_control");if(!mod_mm||!hc)
return;var map=mod_mm.get_map();if(!map)
return;jQuery("#poi_create_target").click(function(){POICreateCMSModule.create_poi();return false;}).attr("title",this.translation.title).Tooltip({showURL:false});jQuery("#poi_import_export").click(function(){POICreateCMSModule.on_poi_action();return false;}).attr("title","").Tooltip({showURL:false});var html="<table width='100%' cellspacing='1px'>";html+="<tr valign='top'><td colspan='2' align='justify'><hr size='1px'></td></tr>";html+="<tr valign='top'><td colspan='2' align='justify'>"+this.translation.help_content+"</td></tr>";html+="<tr valign='top'><td colspan='2' align='justify'><hr size='1px'></td></tr>";html+="<tr valign='top'><td colspan='2' align='center'><input id='poi_create_position_cancel' type='button' value='"+this.translation.help_cancel+"'/></td></tr>";html+="</table>";this.help_mod=hc.create(map.div,this.translation.help_title,html);if(!this.help_mod)
return;jQuery("#poi_create_position_cancel").click(function(){POICreateCMSModule.on_position_poi_cancel();return false;});},create_poi:function(){var mod_pl=WebCMS.get_module("poi_list");if(mod_pl&&mod_pl.is_active()){alert(mod_pl.translation.change_mode);return;}
var resources=Wialon.filter_items(Wialon.get_resources(),"edit");if(!resources||!resources.length){alert(this.translation.not_resource);return;}
if(resources&&resources.length==1){var poi_resource=resources[0];var pl=poi_resource.get_plugin("avl_poi_manager");if(!pl)
return;var nf=pl.get_pois();var limit=pl.get_pois_limit();if(nf&&limit>=0&&nf.length>=limit){alert(this.translation.limit_reached);return;}}
var lat=0;var lon=0;var mod_mm=WebCMS.get_module("monitoring_map");if(mod_mm){var map=mod_mm.get_map();if(map){map.div.style.cursor="crosshair";if(this.help_mod)
this.help_mod.show(true);if(map){this.dblclick_handler=new OpenLayers.Handler.Click({map:map},{'dblclick':this.on_position_dblclick},{'double':true,'stopDouble':true});this.dblclick_handler.activate();}}}},on_position_dblclick:function(evt){var new_pos=this.map.getLonLatFromViewPortPx(evt.xy);if(new_pos){new_pos.transform(this.map.getProjectionObject(),this.map.displayProjection);POICreateCMSModule.continue_create_place(new_pos);}},on_position_poi_cancel:function(){var mod_mm=WebCMS.get_module("monitoring_map");var map=mod_mm?mod_mm.get_map():null;if(map){map.div.style.cursor="default";if(this.help_mod)
this.help_mod.show(false);}
if(this.dblclick_handler){this.dblclick_handler.destroy();this.dblclick_handler=null;}},continue_create_place:function(pos){this.on_position_poi_cancel();var mod_ndlg=WebCMS.get_module("poi_dialog");if(mod_ndlg){mod_ndlg.show(0,0,pos.lat,pos.lon);}},on_poi_action:function(){var mod_poi_dlg=WebCMS.get_module("poi_action");if(!mod_poi_dlg)
return;mod_poi_dlg.show();}});WebCMS.register_module(POICreateCMSModule);var POIListCMSModule=Base.extend({constructor:null,pos_img_url:"/poi_list/pos.png",no_pos_img_url:"/poi_list/no_pos.png",edit_img_url:"/poi_list/edit.png",no_edit_img_url:"/poi_list/edit_none.png",del_img_url:"/poi_list/del.png",no_del_img_url:"/poi_list/del_none.png",blank_img_url:"/poi_list/blank.png",user_actions_img_url:"/poi_list/user_actions.png",pos_marker_img_url:"/poi_list/pos_marker.png",poi_border_size:24,poi_map_size:32,visible_pois:{},visible_pois_count:0,visible_names:{},markers_layer:null,map:null,dblclick_handler:null,new_pos:null,marker_pos:null,help_mod:null,md_mod:null,rows_array:new Array,rows_array_hash:new Object,all_pois_alphabetical:new Array,all_pois_hash:new Object,translation:{},text_style:{fillColor:"#FF0000",fontSize:12},name_filter:"*",acct_filter:0,acl_res:{},get_type:function(){return"poi_list";},get_map:function(){return this.map;},get_layer:function(){return this.markers_layer;},is_active:function(){return(this.marker_pos&&this.dblclick_handler)?true:false;},attach_to_map:function(map){if(!map||this.map)
return;this.map=map;this.markers_layer=new OpenLayers.Layer.Markers("POI",{displayInLayerSwitcher:false});map.addLayer(this.markers_layer);this.map.setLayerIndex(this.markers_layer,1);},on_init:function(){if(jQuery.browser.msie&&!this.loaded){jQuery(window).load(function(){POIListCMSModule.loaded=true;POIListCMSModule.on_init();});return;}
Wialon.bind_event_handler("show_panel",0,function(event_type,event_id,event_data){if(event_id=="pois")
POIListCMSModule.on_display_init();});var pre_visible_pois=new Object;var user=Wialon.get_current_user();try{var col=jQuery.parseJSON(user.get_private_property("poil","null"));if(col){for(var i=0;i<col.length;i++){if(typeof col[i]!="string")
continue;var c2=col[i].split("_");if(c2.length!=2)
continue;pre_visible_pois[col[i]]=1;}}}catch(e){}
this.md_mod=WebCMS.get_module("map_drawing");if(this.md_mod&&this.md_mod.map)
this.md_mod.map.events.register('zoomend',this,this.redraw_names);if(user.get_public_property("poi_list","")!=""){user.set_public_property("poi_list","");var mod_us=WebCMS.get_module("user_settings");if(mod_us)
mod_us.store_settings();}
var rcol=Wialon.get_resources();for(var i=0;i<rcol.length;i++){var res=rcol[i];this.acl_res[res.get_id()]=res.get_access_level();var pl=res.get_plugin("avl_poi_manager");if(pl){var ncol=pl.get_pois();for(var j=0;j<ncol.length;j++){var poi=ncol[j];var id=res.get_id()+"_"+poi.get_id();jQuery("#test_font_width").html(poi.get_name());poi.name_width=jQuery("#test_font_width").width();if(typeof pre_visible_pois[id]!="undefined")
this.show_poi(res,poi);}}}
Wialon.bind_event_handler("item_created",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_resource")
POIListCMSModule.on_resource_created(event_data,event_data.get_plugin("avl_poi_manager"));});Wialon.bind_event_handler("item_deleted",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_resource")
POIListCMSModule.on_resource_deleted(event_data,event_data.get_plugin("avl_poi_manager"));});Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.poiu!='undefined')
POIListCMSModule.on_poi_updated(Wialon.get_item(event_id),event_data.poiu);if(typeof event_data.acl!='undefined'&&event_id==Wialon.get_current_user().get_id()){for(var i in event_data.acl){var item=Wialon.get_item(i);if(item&&item.get_type()=="avl_resource"&&POIListCMSModule.acl_res[i]!=item.get_access_level()){POIListCMSModule.acl_res[i]=item.get_access_level();POIListCMSModule.on_poi_updated(item);}}}});},on_display_init:function(){if(this.shown){this.make_table();return;}else
this.shown=true;var mod=WebCMS.get_module("search_control");if(!mod)
return;mod.attach_to_module(WebCMS.get_module("poi_list"),"poi_create_target");var mod_fctl=WebCMS.get_module("resource_filter_control");if(!mod_fctl)
return;mod_fctl.attach_to_module(this,"poi_create_target");this.update_pois_library();this.make_table();jQuery("#poi_list_target_div").attr("title","X").Tooltip({showURL:false,track_children:true,bodyHandler:function(e){if(!e)
return"";var mod=POIListCMSModule;var id=e;if(id.substring(0,14)=="poi_list_edit_")
return"<b>"+mod.translation.edit+"</b>";else if(id.substring(0,13)=="poi_list_del_")
return"<b>"+mod.translation.del+"</b>";else if(id.substring(0,13)=="poi_list_pos_")
return"<b>"+mod.translation.pos+"</b>";else if(id.substring(0,13)=="poi_list_del_")
return"<b>"+mod.translation.del+"</b>";else if(id.substring(0,14)=="poi_list_name_")
return mod.get_poi_title(id.substr(14).split("_"));return"";}}).click(function(evt){var target=evt.target;var id=target.id;if(typeof id=="undefined")
return;var mod=POIListCMSModule;if(id=="poi_list_head_cb"){mod.on_show_all();return;}
var arr=id.split("_");if(arr.length!=5)
return;if(arr[2]=="edit")
mod.on_edit_poi([arr[3],arr[4]]);else if(arr[2]=="pos")
mod.on_position_poi([arr[3],arr[4]]);else if(arr[2]=="del")
mod.on_del_poi([arr[3],arr[4]]);else if(arr[2]=="cb")
mod.on_switch_poi([arr[3],arr[4]]);else if(arr[2]=="name")
mod.on_locate_poi([arr[3],arr[4]]);});var html="<table width='100%' cellspacing='1px'>";html+="<tr valign='top'><td colspan='2' align='justify'><hr size='1px'></td></tr>";html+="<tr valign='top'><td colspan='2' align='justify'>"+this.translation.help_content+"</td></tr>";html+="<tr valign='top'><td colspan='2' align='justify'><hr size='1px'></td></tr>";html+="<tr valign='top'><td align='left'><span style='color: #FF0000;'>"+this.translation.help_coordinates+":</span></td><td width='230px'><div id='poi_list_coordinates' style='float: right; color: #FF0000;'>-</div></td></tr>";html+="<tr valign='top'><td colspan='2' align='justify'><hr size='1px'></td></tr>";html+="<tr valign='top'><td colspan='2' align='center'><input id='poi_list_position_save' type='button' value='"+this.translation.help_save+"'/>&nbsp;<input id='poi_list_position_cancel' type='button' value='"+this.translation.help_cancel+"'/></td></tr>";html+="</table>";var hc=WebCMS.get_module("help_control");if(!hc||!this.map)
return;this.help_mod=hc.create(this.map.div,this.translation.help_title,html);if(!this.help_mod)
return;jQuery("#poi_list_position_cancel").click(function(){POIListCMSModule.on_position_poi_cancel();return false;});},make_table:function(){this.rows_array=new Array;this.rows_array_hash=new Object;this.rows_array_hash["poi_list_row_header"]=this.rows_array.length;this.rows_array.push("poi_list_row_header");var pois=this.all_pois_alphabetical;var new_visible_pois_count=0;for(var i=0;i<pois.length;i++){var poi=pois[i];var id=poi.id;if(!this.check_filter(poi)){if(this.visible_pois[id])
this.hide_poi(poi.res,poi.pid);delete this.visible_pois[id];continue;}
this.rows_array_hash[id]=this.rows_array.length;this.rows_array.push(poi);if(this.visible_pois[id])
new_visible_pois_count++;}
this.visible_pois_count=new_visible_pois_count;var tbl_obj=new Object();tbl_obj.get_row=this.get_row_html;tbl_obj.cols_count=6;tbl_obj.rows_count=this.rows_array.length;tbl_obj.erase=true;tbl_obj.gap=4;tbl_obj.parent_class="panel_parent";jQuery("#poi_list_target").css("border-width","0px");jQuery("#poi_list_target").fast_table(tbl_obj);},get_row_html:function(pos){var mod=POIListCMSModule;if(pos==0){var html="<tr id='poi_list_row_header'><td align='center'><input type='checkbox' id='poi_list_head_cb' "+(mod.rows_array.length-1==mod.visible_pois_count?"checked":"")+" style='cursor:pointer'/></td>";html+="<td align='center'><img src='"+WebCMS.get_img_url(mod.blank_img_url)+"'/></td>";html+="<td align='center' width='100%'><b>"+mod.translation.poi+"</b></td>";html+="<td align='center' colspan='3'><img src='"+WebCMS.get_img_url(mod.user_actions_img_url)+"'/></td>";html+="</tr>";return{id:"poi_list_row_header",html:html};}
var poi_obj=mod.rows_array[pos];if(!poi_obj||typeof poi_obj=="undefined")
return null;var poi=poi_obj.poi;var id=poi_obj.id;var html="<tr id='poi_list_row_"+id+"'>";var checked="";if(typeof mod.visible_pois[id]!="undefined"||typeof mod.visible_names[id]!="undefined")
checked="checked"
html+="<td><input type='checkbox' id='poi_list_cb_"+id+"' "+checked+" style='cursor:pointer'/></td>";var url=poi.get_image_url(mod.poi_border_size);if(url=="")
url=mod.blank_img_url;html+="<td><img id='poi_list_img_"+id+"' src='"+url+"'/></td>";html+="<td id='poi_list_name_"+id+"' style='cursor:pointer;width:100%'>"+poi.get_name()+"</td>";html+="<td>";var can_edit=mod.acl_res[poi_obj.rid]>=Wialon.access_level("edit");if(can_edit)
html+="<img id='poi_list_pos_"+id+"' style='cursor:pointer' src='"+WebCMS.get_img_url(mod.pos_img_url)+"'/>";else
html+="<img id='poi_list_no_pos_"+id+"' src='"+WebCMS.get_img_url(mod.no_pos_img_url)+"'/>";html+="</td><td>";if(can_edit)
html+="<img id='poi_list_edit_"+id+"' style='cursor:pointer' src='"+WebCMS.get_img_url(mod.edit_img_url)+"'/>";else
html+="<img id='poi_list_edit_"+id+"' style='cursor:pointer' src='"+WebCMS.get_img_url(mod.no_edit_img_url)+"'/>";html+="</td><td>";if(can_edit)
html+="<img id='poi_list_del_"+id+"' style='cursor:pointer' src='"+WebCMS.get_img_url(mod.del_img_url)+"'/>";else
html+="<img id='poi_list_no_del_"+id+"' src='"+WebCMS.get_img_url(mod.no_del_img_url)+"'/>";html+="</td>";return{id:"poi_list_row_"+id,html:html};},update_pois_library:function(){this.all_pois_alphabetical=new Array;this.all_pois_hash=new Object;var resources=Wialon.get_resources();for(var i=0;i<resources.length;i++){var res=resources[i];var rid=res.get_id();var plugin=res.get_plugin("avl_poi_manager");if(plugin){var pcol=plugin.get_pois();for(var j=0;j<pcol.length;j++){var poi=pcol[j];var obj=new Object;obj.rid=rid;obj.res=res;obj.pid=poi.get_id();obj.id=obj.rid+"_"+obj.pid;obj.poi=poi;obj.name=poi.get_name();obj.descr=poi.get_description();obj.name_lc=obj.name.toLowerCase();this.all_pois_alphabetical.push(obj);this.all_pois_hash[obj.id]=obj;}}
this.acl_res[rid]=res.get_access_level();}
this.all_pois_alphabetical.sort(function(a,b){if(a.name_lc==b.name_lc)
return 0;if(a.name_lc>b.name_lc)
return 1;else
return-1;});},on_resource_deleted:function(res,pl){if(!res||!pl)
return;var rid=res.get_id();var pcol=pl.get_pois();for(var j=0;j<pcol.length;j++)
this.update_poi(rid,pcol[j].get_id(),true);var need_update=jQuery("#poi_list_selector").val()==rid;jQuery("#poi_list_selector > [value="+rid+"]").remove();if(need_update){this.acct_filter=0;this.make_table();}},delete_poi:function(res,poi){if(!res||!poi)
return;var poi_id=(typeof poi=="object"?poi.get_id():poi);var id=res.get_id()+"_"+poi_id;var pos=this.rows_array_hash[id];jQuery("#poi_list_target").ft_remove_row(pos,"poi_list_row_"+id);this.hide_poi(res,poi_id);this.update_show_all_cb();},on_resource_created:function(res,pl){if(!res||!pl)
return;var pcol=pl.get_pois();var rid=res.get_id();for(var j=0;j<pcol.length;j++)
this.update_poi(rid,pcol[j].get_id());jQuery("#poi_list_selector").append("<option value='"+res.get_id()+"'>"+res.get_name()+"</option>");},on_poi_updated:function(res,poi_col){if(!res)
return;var pl=res.get_plugin("avl_poi_manager");if(pl){if(typeof poi_col!="undefined"&&poi_col&&poi_col.length==2){var pid=poi_col[0];var poi_data=poi_col[1];if(poi_data)
this.update_poi(res.get_id(),pid,false);else
this.update_poi(res.get_id(),pid,true);}else{var pois=pl.get_pois();var rid=res.get_id();for(var j=0;j<pois.length;j++){var poi=pois[j];this.update_poi(res.get_id(),poi.get_id());}}}
this.update_show_all_cb();},check_filter:function(poi_obj){return((this.name_filter=="*"||WebCMS.compare_wildcard(poi_obj.name,this.name_filter))&&(this.acct_filter==0||poi_obj.rid==this.acct_filter));},update_poi:function(rid,pid,remove){var id=rid+"_"+pid;var poi_obj=this.all_pois_hash[id];var pos=this.rows_array_hash[id];var res=Wialon.get_item(rid);if(poi_obj&&!res)
res=poi_obj.res;if(remove){if(!poi_obj)
return;delete this.all_pois_hash[id];for(var i=0;i<this.all_pois_alphabetical.length;i++)
if(this.all_pois_alphabetical[i].id==id){this.all_pois_alphabetical.splice(i,1);break;}
if(typeof pos!="undefined"){delete this.rows_array_hash[id];this.rows_array.splice(pos,1);for(var rrid in this.rows_array_hash){if(this.rows_array_hash[rrid]>pos)
this.rows_array_hash[rrid]--;}
jQuery("#poi_list_target").ft_remove_row(pos,"poi_list_row_"+id);}
this.delete_poi(res,poi_obj.poi);return;}
var pl=res.get_plugin("avl_poi_manager")
if(!pl)
return;var poi=pl.get_poi(pid);if(!poi)
return;jQuery("#test_font_width").html(poi.get_name());poi.name_width=jQuery("#test_font_width").width();var old_poi_obj=poi_obj;poi_obj=new Object;poi_obj.rid=rid;poi_obj.res=res;poi_obj.pid=poi.get_id();poi_obj.id=poi_obj.rid+"_"+poi_obj.pid;poi_obj.poi=poi;poi_obj.name=poi.get_name();poi_obj.descr=poi.get_description();poi_obj.name_lc=poi_obj.name.toLowerCase();if(!this.check_filter(poi_obj)){var added=false;for(var i=0;i<this.all_pois_alphabetical.length;){if(this.all_pois_alphabetical[i].id==poi_obj.id){this.all_pois_alphabetical.splice(i,1);continue;}
if(!added&&poi_obj.name_lc<this.all_pois_alphabetical[i].name_lc){this.all_pois_alphabetical.splice(i,0,poi_obj);added=true;}
i++;}
if(!added)
this.all_pois_alphabetical.push(poi_obj);this.all_pois_hash[id]=poi_obj;this.delete_poi(res,poi_obj.poi);return;}
var added=false;for(var i=0;i<this.all_pois_alphabetical.length;){if(this.all_pois_alphabetical[i].id==poi_obj.id){this.all_pois_alphabetical.splice(i,1);continue;}
if(!added&&poi_obj.name_lc<this.all_pois_alphabetical[i].name_lc){this.all_pois_alphabetical.splice(i,0,poi_obj);added=true;}
i++;}
if(!added)
this.all_pois_alphabetical.push(poi_obj);this.all_pois_hash[id]=poi_obj;if(typeof pos!="undefined"){this.rows_array[pos]=poi_obj;jQuery("#poi_list_target").ft_update_row("poi_list_row_"+id);}else{this.rows_array_hash[id]=this.rows_array.length;this.rows_array.push(poi_obj);jQuery("#poi_list_target").ft_append_rows(1);}
if(this.visible_pois[poi_obj.id]){this.hide_poi(res,poi.get_id());this.show_poi(res,poi);}},update_list_filter:function(filter){this.name_filter=filter;this.make_table();},update_resource_filter:function(filter){this.acct_filter=filter;this.make_table();},get_poi_title:function(arr){if(!arr||arr.length!=2)
return"";var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return"";var pl=res.get_plugin("avl_poi_manager");if(!pl)
return"";var poi=pl.get_poi(arr[1]);if(!poi)
return"";var html="<table style='color: #000000'><tr><td align='center'><b>"+poi.get_name()+"</b><hr size='1'/></td></tr>";html+="<tr><td>"+poi.get_description()+"</td></tr>";if(poi.get_image_url(256)!="")
html+="<tr><td align='center'><img src='"+poi.get_image_url(256)+"'/></td></tr>";html+="</table>";return html;},on_edit_poi:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);this.update_show_all_cb();if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_poi_manager");if(!pl)
return;var poi=pl.get_poi(arr[1]);if(!poi)
return;var mod_ndlg=WebCMS.get_module("poi_dialog");if(mod_ndlg)
mod_ndlg.show(res.get_id(),poi.get_id());},on_position_poi:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_poi_manager");if(!pl)
return;var poi=pl.get_poi(arr[1]);if(!poi)
return;jQuery("#poi_list_position_save").unbind("click");jQuery("#poi_list_position_save").click(function(){POIListCMSModule.on_position_poi_save(arr);return false;});if(this.help_mod){jQuery("#"+this.help_mod.target_child_id+"_title_id").html(this.translation.help_title+"' "+poi.get_name()+"'");this.help_mod.show(true);}
if(this.map){this.dblclick_handler=new OpenLayers.Handler.Click({map:this.map},{'dblclick':this.on_position_dblclick},{'double':true,'stopDouble':true});this.dblclick_handler.activate();}
this.new_pos=new OpenLayers.LonLat(poi.get_lon(),poi.get_lat());this.map.div.style.cursor="crosshair";this.set_new_position(this.new_pos);},on_position_poi_save:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_poi_manager");if(!pl)
return;var poi=pl.get_poi(arr[1]);if(!poi)
return;if(!this.new_pos){return;}
this.show_buttons(false);pl.update_poi(poi.get_id(),poi.get_name(),poi.get_description(),this.new_pos.lat,this.new_pos.lon,poi.get_radius(),function(result,error_text,cparam){if(!result)
WebCMS.log_msg(sprintf(POIListCMSModule.translation.error_change_coordinates,cparam.name,error_text),2);else{cparam.mod.on_position_poi_cancel();WebCMS.log_msg(sprintf(POIListCMSModule.translation.succ_change_coordinates,cparam.name),1);}
POIListCMSModule.show_buttons(true);},{mod:this,name:poi.get_name(),res:res,id:poi.get_id()});},on_position_poi_cancel:function(){this.map.div.style.cursor="default";if(this.help_mod)
this.help_mod.show(false);if(this.dblclick_handler){this.dblclick_handler.destroy();this.dblclick_handler=null;}
if(this.marker_pos&&this.markers_layer){this.markers_layer.removeMarker(this.marker_pos);this.marker_pos=null;}},on_position_dblclick:function(evt){var new_pos=this.map.getLonLatFromViewPortPx(evt.xy);if(new_pos){new_pos.transform(this.map.getProjectionObject(),this.map.displayProjection);POIListCMSModule.set_new_position(new_pos);}
this.map.div.style.cursor="crosshair";},on_del_poi:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_poi_manager");if(!pl)
return;var poi=pl.get_poi(arr[1]);if(!poi)
return;if(!confirm(sprintf(this.translation.del_confirm,poi.get_name())))
return;pl.delete_poi(poi,function(result,error_text,cparam){if(!result)
WebCMS.log_msg(sprintf(POIListCMSModule.translation.error_delete,cparam.name,error_text),2);else
WebCMS.log_msg(sprintf(POIListCMSModule.translation.succ_delete,cparam.name),1);},{name:poi.get_name(),res:res,id:poi.get_id()});},on_switch_poi:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_poi_manager");if(!pl)
return;var poi=pl.get_poi(arr[1]);if(!poi)
return;var id=arr.join("_");if(jQuery("#poi_list_cb_"+id).attr("checked"))
this.show_poi(res,poi);else{this.hide_poi(res,poi.get_id());delete this.visible_pois[id];}
this.store_settings();this.update_show_all_cb();},on_locate_poi:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_poi_manager");if(!pl)
return;var poi=pl.get_poi(arr[1]);if(!poi||!this.map)
return;var id=res.get_id()+"_"+poi.get_id();var lonlat=new OpenLayers.LonLat(poi.get_lon(),poi.get_lat());lonlat.transform(this.map.displayProjection,this.map.getProjectionObject());this.map.panTo(lonlat);if(!jQuery("#poi_list_cb_"+id).attr("checked")){jQuery("#poi_list_cb_"+id).click();this.on_switch_poi(arr);}
WebCMS.log_action("locate","poi");},show_buttons:function(show){if(show){jQuery("#poi_list_position_save").show();jQuery("#poi_list_position_cancel").show();}else{jQuery("#poi_list_position_save").hide();jQuery("#poi_list_position_cancel").hide();}},store_settings:function(){var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;var col=new Array;for(var id in this.visible_pois){var arr=id.split("_");if(arr.length!=2)
continue;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
continue;var pl=res.get_plugin("avl_poi_manager");if(!pl)
continue;col.push(id);}
var prop_value=jQuery.toJSON(col);user.set_private_property("poil",prop_value);mod_us.store_settings();},show_poi:function(res,poi){if(!res||!poi||!this.map||!this.markers_layer)
return;var id=res.get_id()+"_"+poi.get_id();if(typeof this.visible_pois[id]=="undefined"){this.visible_pois[id]=1;this.visible_pois_count++;}else
return;var url=poi.get_image_url(this.poi_map_size);var map=this.map;var lonlat=new OpenLayers.LonLat(poi.get_lon(),poi.get_lat());lonlat.transform(this.md_mod.map.displayProjection,this.md_mod.map.getProjectionObject());if(typeof this.visible_pois[id]!="object"&&url!=""){var width=this.poi_map_size;var height=this.poi_map_size;if(poi.get_ratio()>1)
height=parseInt(height/poi.get_ratio());else
width=parseInt(width*poi.get_ratio());var size=new OpenLayers.Size(width,height);var offset=new OpenLayers.Pixel(-(width/2),-height/2);var icon=new OpenLayers.Icon(url,size,offset);var marker=new OpenLayers.Marker(lonlat,icon);this.markers_layer.addMarker(marker);this.visible_pois[id]=marker;jQuery(icon.imageDiv).attr("title","X").Tooltip({showURL:false,bodyHandler:function(){return POIListCMSModule.get_poi_title(id.split("_"));}});}
if(!this.md_mod)
return;var y_shift=16;if(url=="")
y_shift=0;var ll_px=this.md_mod.map.getPixelFromLonLat(lonlat);var pixel=new OpenLayers.Pixel(ll_px.x-poi.name_width/2,ll_px.y+y_shift+(jQuery.browser.msie?0:this.text_style.fontSize));var pixel_ll=this.md_mod.map.getLonLatFromPixel(pixel);this.visible_names[id]=this.md_mod.add_text(pixel_ll,poi.get_name(),this.text_style,this.visible_names[id]);},hide_poi:function(res,poi_id){if(!res||!this.map||!this.markers_layer)
return;var id=res.get_id()+"_"+poi_id;if(typeof this.visible_pois[id]=="undefined")
return;var marker=this.visible_pois[id];if(typeof marker=='object'){this.markers_layer.removeMarker(marker);marker.destroy();}
this.visible_pois_count--;delete this.visible_pois[id];if(!this.md_mod)
return;this.md_mod.remove_feature(this.visible_names[id]);delete this.visible_names[id];},redraw_names:function(){if(!this.md_mod)
return;for(var id in this.visible_names){if(!this.visible_names[id])
continue;var arr=id.split("_");var res=Wialon.get_item(arr[0]);if(!res)
continue;var pl=res.get_plugin("avl_poi_manager");if(!pl)
continue;var poi=pl.get_poi(arr[1]);if(!poi)
continue;var url=poi.get_image_url(this.poi_map_size);var lonlat=new OpenLayers.LonLat(poi.get_lon(),poi.get_lat());lonlat.transform(this.md_mod.map.displayProjection,this.md_mod.map.getProjectionObject());var y_shift=16;if(url=="")
y_shift=0;var ll_px=this.md_mod.map.getPixelFromLonLat(lonlat);var pixel=new OpenLayers.Pixel(ll_px.x-poi.name_width/2,ll_px.y+y_shift+(jQuery.browser.msie?0:this.text_style.fontSize));var pixel_ll=this.md_mod.map.getLonLatFromPixel(pixel);this.visible_names[id]=this.md_mod.add_text(pixel_ll,poi.get_name(),this.text_style,this.visible_names[id]);}},set_new_position:function(pos){this.new_pos=pos;jQuery("#poi_list_coordinates").html(get_coord(POIListCMSModule.new_pos.lat,2,4,"N","S")+" : "+get_coord(POIListCMSModule.new_pos.lon,3,4,"E","W"));var lonlat=this.new_pos.clone();lonlat.transform(this.map.displayProjection,this.map.getProjectionObject());if(this.marker_pos){this.markers_layer.removeMarker(this.marker_pos);this.marker_pos=null;}
var width=21;var height=25;var size=new OpenLayers.Size(width,height);var offset=new OpenLayers.Pixel(-(width/2),-height);var icon=new OpenLayers.Icon(WebCMS.get_img_url(this.pos_marker_img_url),size,offset);this.marker_pos=new OpenLayers.Marker(lonlat,icon);this.markers_layer.addMarker(this.marker_pos);},update_show_all_cb:function(){jQuery("#poi_list_head_cb").attr("checked",this.visible_pois_count==this.rows_array.length-1?true:false);},on_show_all:function(){var checked_all=jQuery("#poi_list_head_cb").attr("checked");var rcol=Wialon.get_resources();for(var i=0;i<rcol.length;i++){var res=rcol[i];var pl=res.get_plugin("avl_poi_manager");if(pl){var ncol=pl.get_pois();for(var j=0;j<ncol.length;j++){var poi=ncol[j];if(!this.check_filter({name:poi.get_name(),rid:res.get_id()}))
continue;var id=res.get_id()+"_"+poi.get_id();if(checked_all)
this.show_poi(res,poi);else
this.hide_poi(res,poi.get_id());jQuery("#poi_list_target").ft_update_row("poi_list_row_"+id);}}}}});WebCMS.register_module(POIListCMSModule);var mod_mm=WebCMS.get_module("monitoring_map");if(mod_mm)
mod_mm.register_map_layer(POIListCMSModule);var POIActionCMSModule=Base.extend({constructor:null,type:"poi_action",get_type:function(){return this.type;},show:function(){var mod_wiz=WebCMS.get_module("wizard_dlg");if(mod_wiz)
mod_wiz.show("/poi_action_dialog/poi_action_dlg.html");}});WebCMS.register_module(POIActionCMSModule);var POIImportCMSModule=Base.extend({constructor:null,type:"poi_import",get_type:function(){return this.type;},import_from_file:function(){var mod_wd=WebCMS.get_module("wizard_dlg");if(!mod_wd)
return;mod_wd.show("/poi_import_page/poi_import_page.html");}});WebCMS.register_module(POIImportCMSModule);var POIExportCMSModule=Base.extend({constructor:null,type:"poi_export",get_type:function(){return this.type;},export_from_file:function(){var mod_wd=WebCMS.get_module("wizard_dlg");if(!mod_wd)
return;mod_wd.show("/poi_export_page/poi_export_page.html");}});WebCMS.register_module(POIExportCMSModule);var MessagesParamsCMSModule=Base.extend({constructor:null,params:{},param_columns:[],popup_params:{},translation:{},get_type:function(){return"messages_params";},register_param:function(type,text){if(typeof text=='undefined'||!text||typeof type=='undefined'||!type||text==""||type=="")
return;var t=this.params[type];if(typeof t!='undefined')
return;this.params[type]=text;},get_param:function(type){var t=this.params[type];if(typeof t!='undefined')
return t;return null;},get_params:function(){return this.params;},get_info_text:function(unit){var arr=new Array;var user=Wialon.get_current_user();if(!user)
return;if(user.get_private_property("usmp","0")=="0")
return arr;var value="N/A";var pos=unit.get_position();if(pos){var params=unit.get_last_params();var ins=0;var outs=0;var io_exists=false;if(params){for(var pn in params){if(pn=="in"){ins=params[pn];io_exists=true;}else if(pn=="out"){outs=params[pn];io_exists=true;}else if((pn.substr(0,2)=="in"&&parseInt(pn.substr(2,2))>0)||(pn.substr(0,3)=="out"&&parseInt(pn.substr(3,2))>0))
continue;arr.push({name:pn,value:params[pn]});}}
if(io_exists)
arr.push({name:"I/O",value:this.binary_format(ins)+"/"+this.binary_format(outs)});}
return arr;},binary_format:function(value){var str=value.toString(2);var res="";var j=0;for(var i=str.length-1;i>=0;i--,j++)
if(j&&j%4==0)
res=str[i]+" "+res;else
res=str[i]+res;return res;},on_init:function(){var mod_ut=WebCMS.get_module("unit_info_text");if(mod_ut)
mod_ut.add_info_text(this);}});WebCMS.register_module(MessagesParamsCMSModule);var MessagesFilterCMSModule=Base.extend({constructor:null,translation:{},was_prepared:false,enable_msgs_import:1,group_incompatible:1,message_img_url:"/messages_filter/messages.png",message_head_img_url:"/messages_filter/messages_head.png",get_type:function(){return"messages_filter";},destroy:function(){},clear:function(){jQuery("#messages_filter_stat_msgs_count").html("-");jQuery("#messages_filter_stat_total_time").html("-");jQuery("#messages_filter_stat_speed").html("-");jQuery("#messages_filter_stat_distance").html("-");jQuery("#messages_filter_stat_max_speed").html("-");},show_control:-1,prepare:function(){if(jQuery("#messages_filter_target").size()==0)
return;if(!this.was_prepared){this.was_prepared=true;var html="<div id='messages_filter_interval'><table class='filter_table' cellspacing='1px' cellpadding='0px' width='100%'>";html+="<tr><td>"+this.translation.unit+":</td><td><select id='messages_filter_units' style='width: 170px;'></select></td></tr>";html+="<tr><td>"+this.translation.from+":</td><td><input type='text' id='messages_filter_interval_from' style='width: 165px;'/></td></tr>";html+="<tr><td>"+this.translation.to+":</td><td><input type='text' id='messages_filter_interval_to' style='width: 165px;'/></td></tr>";html+="<tr style='display: none;'><td>"+this.translation.lock_to_road+":</td><td><input type='checkbox' id='messages_filter_road_lock' /></td></tr>";html+="<tr><td>"+this.translation.msg_types+":</td><td><select id='messages_table_msg_types'>";html+="<option value='data'>"+this.translation.data_msgs+"</option>";html+="<option value='sms'>"+this.translation.sms+"</option>";html+="<option value='cmd'>"+this.translation.commands+"</option>";html+="<option value='event'>"+this.translation.events+"</option></select></td></tr>";html+="<tr id='msg_table_type_tr'><td>"+this.translation.msg_table_type+":</td><td><select id='messages_table_type'>";html+="<option value='0'>"+this.translation.show_params+"</option>";if(WebCMS.get_module("device_sensors"))
html+="<option value='1'>"+this.translation.show_sensors+"</option></select></td></tr>";html+="<tr><td colspan='2' align='center'><input type='button' id='messages_filter_interval_execute' style='width: 100px;' value='"+this.translation.execute+"'/>&nbsp;";html+="<input type='button' id='messages_filter_interval_clear' style='width: 100px;' value='"+this.translation.clear+"'/></td></tr>";html+="</table>";jQuery("#messages_filter_target").append(html);jQuery("#messages_table_msg_types").change(function(){if(jQuery(this).val()!="data")
jQuery("#msg_table_type_tr").hide();else
jQuery("#msg_table_type_tr").show();jQuery("#messages_filter_target").resize();MessagesFilterCMSModule.check_on_changes();});html="";this.on_workspace_units_changed();var mod_ust=WebCMS.get_module("user_settings_time");var date=new Date();date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0);jQuery("#messages_filter_interval_from").date_input({lang:WebCMS.get_lang(),dependencyDown:"messages_filter_interval_to"}).setDateTimeAbs(mod_ust.get_abs_time(date.getTime()/1000));date.setHours(23);date.setMinutes(59);date.setSeconds(59);date.setMilliseconds(999);jQuery("#messages_filter_interval_to").date_input({lang:WebCMS.get_lang(),dependencyUp:"messages_filter_interval_from"}).setDateTimeAbs(mod_ust.get_abs_time(date.getTime()/1000));html="<dl id='messages_filter_content' class='accordion'></dl>";jQuery("#messages_filter_target").append(html);var user=Wialon.get_current_user();var check=(user?user.get_private_property("mfrl","0")=="1":0)?true:false;jQuery("#messages_filter_road_lock").attr("checked",false);html="<div id='messages_filter_accordion_stat'><table class='filter_table' cellspacing='1px' cellpadding='0px' width='100%'>";html+="<tr><td><b>"+this.translation.msgs_count+":</b></td><td id='messages_filter_stat_msgs_count'>-</td></tr>";html+="<tr><td><b>"+this.translation.total_time+":</b></td><td id='messages_filter_stat_total_time'>-</td></tr>";html+="<tr><td><b>"+this.translation.distance+":</b></td><td id='messages_filter_stat_distance'>-</td></tr>";html+="<tr><td><b>"+this.translation.average_speed+":</b></td><td id='messages_filter_stat_speed'>-</td></tr>";html+="<tr><td><b>"+this.translation.max_speed+":</b></td><td id='messages_filter_stat_max_speed'>-</td></tr>";html+="</table></div>";this.add_filter(this.translation.caption_stat,html);html="<div id='messages_filter_accordion_player'><table id='messages_filter_accordion_player_table' class='filter_table' cellspacing='1px' cellpadding='0px' width='100%'>";var pmod=WebCMS.get_module("messages_player");if(pmod){html+=pmod.get_html();}
html+="</table></div>";this.add_filter(this.translation.msgs_player,html);Wialon.fire_event("messages_player_init",0,null);html="<div id='messages_filter_accordion_export'><table class='filter_table' cellspacing='1px' cellpadding='0px' width='100%'>";html+="<tr><td><input type='radio' id='messages_filter_export_radio' name='messages_filter_export_radio' value='plt' checked='checked'/></td><td><b>"+this.translation.export_plt+"</b></td></tr>";html+="<tr><td><input type='radio' id='messages_filter_export_radio' name='messages_filter_export_radio' value='txt' /></td><td><b>"+this.translation.export_txt+":</b></td></tr>";html+="<tr><td><input type='radio' id='messages_filter_export_radio' name='messages_filter_export_radio' value='kml' /></td><td><b>"+this.translation.export_kml+":</b></td></tr>";html+="<tr><td><input type='radio' id='messages_filter_export_radio' name='messages_filter_export_radio' value='wln' /></td><td><b>"+this.translation.export_wln+":</b></td></tr>";html+="<tr><td colspan='2' align='center'><input type='button' id='messages_filter_export_btn' value='"+this.translation.export_btn+"' style='width: 100px;' /></td></tr>";html+="</table></div>";this.add_filter(this.translation.caption_export,html);if(this.enable_msgs_import){html="<div id='messages_filter_accordion_import'><table class='filter_table' cellspacing='1px' cellpadding='0px' width='100%'>";html+="<tr><td>"+this.translation.import_help_zip+"</td></tr>";html+="<tr><td><b>"+this.translation.import_help+":</b><ul><li>"+this.translation.import_help_nmea+"</li><li>"+this.translation.import_help_gps+"</li><li>"+this.translation.import_help_wln+"</li></ul></td></tr>";html+="<tr><td><b>"+this.translation.import_help_file+":</b></td></tr>";html+="<tr><td align='center'><input align='center' type='file' id='messages_filter_import_file' name='messages_filter_import_file' /></td></tr>";html+="<tr><td align='center'><input type='button' id='messages_filter_import_btn' value='"+this.translation.import_btn+"' style='width: 100px;' /></td></tr>";html+="</table></div>";this.add_filter(this.translation.caption_import,html);}
jQuery("#messages_filter_content").Accordion({headerSelector:'dt',panelSelector:'dd',activeClass:'active',hoverClass:'hover',speed:300});jQuery("#messages_filter_interval_from, #messages_filter_interval_to").change(function(){MessagesFilterCMSModule.check_on_changes();});jQuery("#messages_filter_units").change(function(){var unit_id=jQuery(this).val();var time=parseInt((new Date()).getTime()/1000);var mod_ust=WebCMS.get_module("user_settings_time");if(unit_id){var unit=Wialon.get_item(unit_id);if(unit){var msg=unit.get_last_msg();if(msg)
time=mod_ust.get_user_time(msg.get_time());}}
var date=new Date();date.setTime(time*1000);date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0);jQuery("#messages_filter_interval_from").setDateTimeAbs(mod_ust.get_abs_time(date.getTime()/1000));date.setTime(time*1000);date.setHours(23);date.setMinutes(59);date.setSeconds(59);date.setMilliseconds(999);jQuery("#messages_filter_interval_to").setDateTimeAbs(mod_ust.get_abs_time(date.getTime()/1000));MessagesFilterCMSModule.check_on_changes();});jQuery("#messages_filter_interval_execute").click(function(){MessagesFilterCMSModule.on_execute();});jQuery("#messages_filter_interval_clear").click(function(){MessagesFilterCMSModule.on_clear();});jQuery("#messages_filter_export_btn").click(function(){MessagesFilterCMSModule.on_export();});jQuery("#messages_filter_import_btn").click(function(){MessagesFilterCMSModule.on_import();});jQuery("#messages_filter_target").resize(function(){MessagesFilterCMSModule.resize();});Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.nm!='undefined')
MessagesFilterCMSModule.on_unit_name_updated(Wialon.get_item(event_id));});Wialon.bind_event_handler("workspace_units_changed",0,function(event_type,event_id,event_data){MessagesFilterCMSModule.on_workspace_units_changed();});jQuery("#messages_filter_units").trigger("change");}
this.check_on_changes();this.resize();},resize:function(){if(jQuery("#messages_filter_target").css("display")!="none"){var arr=jQuery("#messages_filter_content dt");var dt_h=arr.size()?jQuery(arr[0]).height():16;if(!dt_h)dt_h=16;var h=jQuery("#messages_filter_target").height();var h2=jQuery("#messages_filter_target").height()-jQuery("#messages_filter_interval").height()-(arr.size()*dt_h)-arr.size()*1;jQuery("#messages_filter_content div[@id^=messages_filter_accordion_]").css({height:h2});jQuery("#messages_filter_content dd").css({height:h2});if(jQuery("#messages_filter_content")[0])
jQuery("#messages_filter_content")[0].accordionCfg.panelHeight=h2;jQuery("#messages_filter_content").css({height:h});}},disable_execute_button:function(disable){jQuery("#messages_filter_interval_execute, #messages_filter_export_btn").attr("disabled",disable);},add_filter:function(caption,html){jQuery("#messages_filter_content").append("<dt>"+caption+"</dt><dd>"+html+"</dd>");},check_on_changes:function()
{var unit=null;jQuery("#messages_filter_units option:selected").each(function(){unit=Wialon.get_item(jQuery(this).attr("value"));});if(!unit){this.disable_execute_button(true);return;}
jQuery("#messages_filter_import_btn").attr("disabled",!this.check_import_access());var time_from=parseInt(jQuery("#messages_filter_interval_from").getDateTimeAbs(true));var time_to=parseInt(jQuery("#messages_filter_interval_to").getDateTimeAbs(true))+59;var msg_type=jQuery("#messages_table_msg_types").val();if(msg_type=="data"&&(time_from>time_to||isNaN(time_from)||isNaN(time_to)||!unit.get_last_msg()||time_from>unit.get_last_msg().get_time())){this.disable_execute_button(true);return;}
this.disable_execute_button(false);},on_unit_created:function(unit){if(!unit||unit.get_type()!="avl_unit")
return;var mod_mu=WebCMS.get_module("monitoring_units");if(!mod_mu||!mod_mu.is_unit_available(unit))
return;var html="<option value='"+unit.get_id()+"'>"+unit.get_name()+"</option>";jQuery("#messages_filter_units").append(html);},on_unit_deleted:function(unit){if(!unit||unit.get_type()!="avl_unit")
return;jQuery("#messages_filter_units option[@value="+unit.get_id()+"]").remove();},on_unit_name_updated:function(unit){if(!unit||unit.get_type()!="avl_unit")
return;jQuery("#messages_filter_units option[@value="+unit.get_id()+"]").html(unit.get_name());},on_workspace_units_changed:function(units){if(!units){var mod_mu=WebCMS.get_module("monitoring_units");if(!mod_mu)
return;units=mod_mu.get_units();}
var sel_unit=jQuery("#messages_filter_units option[selected]").attr("value");var html="";for(var i=0;i<units.length;i++){var unit=units[i];html+="<option value='"+unit.get_id()+"'>"+unit.get_name()+"</option>";}
jQuery("#messages_filter_units").html(html);jQuery("#messages_filter_units").val(sel_unit);jQuery("#messages_filter_units").change();},on_execute:function(){WebCMS.log_action("msgsshow","");var mod_mm=WebCMS.get_module("messages_map");var mod_mt=WebCMS.get_module("messages_table");if(!mod_mm||!mod_mt)
return;mod_mt.was_prepared=false;mod_mm.clear();var usm=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();var lock=jQuery("#messages_filter_road_lock").attr("checked");if(usm&&user&&parseInt(user.get_private_property("mfrl","0"))!=(lock?1:0)){user.set_private_property("mfrl",(lock?1:0));usm.store_settings();}
mod_mt.set_callback_func(function(result,msgs_col){MessagesFilterCMSModule.on_table_result(result,msgs_col);});mod_mm.set_callback_func(function(result,params,msgs_layer){MessagesFilterCMSModule.on_map_result(result,params,msgs_layer);});mod_mt.show_type=parseInt(jQuery("#messages_table_type").val());var time_from=parseInt(jQuery("#messages_filter_interval_from").getDateTimeAbs(true));var time_to=parseInt(jQuery("#messages_filter_interval_to").getDateTimeAbs(true))+59;var unit_id=parseInt(jQuery("#messages_filter_units").val());var type=jQuery("#messages_table_msg_types").val();if(!unit_id)unit_id=0;var params={unit_id:unit_id,time_from:time_from,time_to:time_to,msgs_type:type,lock:lock?50:0};this.disable_execute_button(true);if(!mod_mm.map_init(params)){MessagesFilterCMSModule.disable_execute_button(false);}},on_clear:function(){var mod_msg_map=WebCMS.get_module("messages_map");var mod_msg_table=WebCMS.get_module("messages_table");var mod_msg_player=WebCMS.get_module("messages_player");if(mod_msg_map)mod_msg_map.clear();if(mod_msg_table)mod_msg_table.recreate();if(mod_msg_player)mod_msg_player.clear();this.clear();},on_export:function(){var fmt="";jQuery("#messages_filter_accordion_export input[@id^=messages_filter_export_radio]").each(function(){if(jQuery(this).attr("checked")){fmt=jQuery(this).attr("value");return;}});var time_from=parseInt(jQuery("#messages_filter_interval_from").getDateTimeAbs());var time_to=parseInt(jQuery("#messages_filter_interval_to").getDateTimeAbs())+59;var unit_id=parseInt(jQuery("#messages_filter_units").val());if(fmt==""||isNaN(unit_id)||!unit_id)
return;var unit_name=jQuery("#messages_filter_units option:selected").text();var cmd="name="+encodeURIComponent(unit_name)+"&fmt="+fmt+"&id="+unit_id+"&from="+time_from+"&to="+time_to+"&cookie="+Math.random();window.open("/messages_filter/export_msgs.html?"+cmd,"_blank","");},check_import_access:function(){var unit_id=parseInt(jQuery("#messages_filter_units").val());if(isNaN(unit_id)||!unit_id)
return false;var unit=Wialon.get_item(unit_id);if(!unit)
return false;if(unit.get_access_level()<Wialon.access_level("manage"))
return false;return true;},on_import:function(){if(!this.check_import_access())
return;var unit_id=parseInt(jQuery("#messages_filter_units").val());if(isNaN(unit_id)||!unit_id)
return;if(jQuery("#messages_filter_import_file").val()=="")
return;jQuery("#messages_filter_import_btn").attr("disabled",true);var import_result=function(result,data){if(result){var inf_msgs=eval(data);WebCMS.log_msg(sprintf("%s '%s':",MessagesFilterCMSModule.translation.import_help_result,jQuery("#messages_filter_import_file").val()),0);if(inf_msgs&&inf_msgs.length){for(var i=0;i<inf_msgs.length;i++){var txt=inf_msgs[i];if(txt.slice(0,2)=="OK"){WebCMS.log_msg(txt.slice(2),1);}else if(txt.slice(0,5)=="ERROR"){WebCMS.log_msg(txt.slice(5),2,false);}}}}else{WebCMS.log_msg(sprintf("%s '%s': %s",MessagesFilterCMSModule.translation.import_help_error,jQuery("#messages_filter_import_file").val(),data),2);}
jQuery("#messages_filter_import_btn").attr("disabled",false);}
var upload_result=function(data,status,e){WebCMS.log_msg(sprintf("%s '%s': %s",MessagesFilterCMSModule.translation.import_help_error,jQuery("#messages_filter_import_file").val(),e),2);jQuery("#messages_filter_import_btn").attr("disabled",false);}
jQuery.ajaxFileUpload({url:"/messages_filter/import_msgs.html",secureuri:false,fileElementId:"messages_filter_import_file",dataType:"text",params:{id:unit_id},success:function(result){if(result.slice(0,2)=="OK"){import_result(true,result.slice(2));}else if(result.slice(0,5)=="ERROR"){import_result(false,result.slice(5));}else{import_result(false,result);}},error:upload_result});},on_init:function(){var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd&&!disable_monitoring_settings)
mod_usd.add_row(this);this.update_settings();var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(mod_map&&mod_menu&&this.show_control&&!disable_monitoring_settings){if(this.show_control==1)
mod_map.register_unit_state_module(this);else
mod_menu.register_unit_state_module(this);}},on_table_result:function(result,msgs_col){MessagesFilterCMSModule.disable_execute_button(result?false:true);if(!msgs_col)
return;var pmod=WebCMS.get_module("messages_params");if(pmod){var exists_params=new Object();for(var i=0;i<msgs_col.length;i++){if(typeof msgs_col[i].get_params!="function")
return;var params_col=msgs_col[i].get_params();for(var type in params_col){var val=pmod.get_param(type)
if(typeof exists_params[type]=='undefined'&&val){exists_params[type]=val;}}}
var html="";for(var type in exists_params)
html+="<tr><td><b>"+type+"</b></td><td>"+exists_params[type]+"</td></tr>";if(html!="")
jQuery("#messages_filter_accordion_column_table > tbody").empty().append(html);else
jQuery("#messages_filter_accordion_column_table > tbody").empty().append("<tr><td><b>"+this.translation.unknown_parameters+"</b></td></tr>");}},on_map_result:function(result,params,msgs_layer){if(!result){MessagesFilterCMSModule.on_clear();return;}
if(params){var time_from=0;var time_to=0;if(typeof params.messages!="undefined"){jQuery("#messages_filter_stat_msgs_count").html(""+params.msgs_count);jQuery("#messages_filter_stat_distance").html("-----");jQuery("#messages_filter_stat_total_time").html("-----");jQuery("#messages_filter_stat_speed").html("-----");jQuery("#messages_filter_stat_max_speed").html("-----");}else{jQuery("#messages_filter_stat_msgs_count").html(""+params.msgs.count);if(typeof use_us_metrics!="undefined"&&use_us_metrics)
jQuery("#messages_filter_stat_distance").html(sprintf("%.2f&nbsp;%s",params.mileage/1000.0*0.621,this.translation.mi));else
jQuery("#messages_filter_stat_distance").html(sprintf("%.2f&nbsp;%s",params.mileage/1000.0,this.translation.km));var t=0;if(params.msgs.count&&typeof params.msgs.first!="undefined"){t=params.msgs.last[0]-params.msgs.first[0];time_from=params.msgs.first[0];time_to=params.msgs.last[0];}
jQuery("#messages_filter_stat_total_time").html(sprintf("%d&nbsp;%s,&nbsp;%02d&nbsp;%s.&nbsp;%02d&nbsp;%s.&nbsp;%02d&nbsp;%s.",(t/86400),this.translation.days,((t/3600)%24),this.translation.hours,((t/60)%60),this.translation.minutes,(t%60),this.translation.seconds));if(!t)t=3600;if(typeof use_us_metrics!="undefined"&&use_us_metrics){jQuery("#messages_filter_stat_speed").html(sprintf("%.2f&nbsp;%s",((params.mileage/1000.0)/(t/3600))*0.621,this.translation.mih));jQuery("#messages_filter_stat_max_speed").html(sprintf("%.2f&nbsp;%s",params.max_speed*0.621,this.translation.mih));}else{jQuery("#messages_filter_stat_speed").html(sprintf("%.2f&nbsp;%s",((params.mileage/1000.0)/(t/3600)),this.translation.kmh));jQuery("#messages_filter_stat_max_speed").html(sprintf("%.2f&nbsp;%s",params.max_speed,this.translation.kmh));}}
var mod_mt=WebCMS.get_module("messages_table");var mod_mp=WebCMS.get_module("messages_player");if(!mod_mt||!mod_mp&&(!msgs_layer&&!params.messages))
return;mod_mt.init(params,msgs_layer);mod_mp.player_init({time_from:time_from,time_to:time_to});}},get_head_html:function(){return"<img id='monitoring_units_msgs_head' src='"+WebCMS.get_img_url(this.message_head_img_url)+"'/>";},get_head_title:function(){return this.translation.title_head;},get_unit_state_html:function(unit){if(!unit)
return"&nbsp;";return"<img id='messages_list_row_"+unit.get_id()+"' src='"+WebCMS.get_img_url(this.message_img_url)+"'/>";},get_unit_state_title:function(unit){return this.translation.title;},on_click:function(unit_id,event){var obj=Wialon.get_item(unit_id);if(!obj)
return;if(obj.get_type()=="avl_unit_group"){var units=obj.get_units();if(!units.length)
return;unit_id=units[0].get_id();}
jQuery("#menu_modes_messages").trigger("click");jQuery("#messages_filter_units").val(unit_id);jQuery("#messages_filter_units").change();},get_row_tab_info:function(){return{id:"monitoring_settings",title:this.translation.tab_name};},get_row_html:function(){return"<tr><td><img src='"+this.message_head_img_url+"'/>&nbsp;"+this.translation.title_head+":</td><td><input type='checkbox' id='state_msgs_btn'/></td><td><input type='checkbox' id='state_msgs_btn_m'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#state_msgs_btn").attr("checked",this.show_control==1).attr("title",this.translation.tooltip).Tooltip({showURL:false});jQuery("#state_msgs_btn_m").attr("checked",this.show_control==2).attr("title",this.translation.tooltip_menu).Tooltip({showURL:false});jQuery("#state_msgs_btn").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_msgs_btn_m").removeAttr("checked");});jQuery("#state_msgs_btn_m").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_msgs_btn").removeAttr("checked");});},save_row_data:function(){var show=jQuery("#state_msgs_btn").attr("checked")?1:0;if(!show)
show=jQuery("#state_msgs_btn_m").attr("checked")?2:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mu_msgs",show);mod_us.store_settings();this.show_control=show;var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(!mod_map||!mod_menu)
return;if(this.show_control==1)
mod_map.register_unit_state_module(this);else if(this.show_control==2)
mod_menu.register_unit_state_module(this);else
mod_map.unregister_unit_state_module(this);return true;},update_settings:function(){var user=Wialon.get_current_user();if(!user)
return;this.show_control=parseInt(user.get_private_property("mu_msgs","2"));}});WebCMS.register_module(MessagesFilterCMSModule);var MessagesMapCMSModule=Base.extend({constructor:null,translation:{},map:null,markers_layer:null,marker:null,image_renderer_layer:null,msg:null,marker_img_url:"/messages_map/marker.gif",callback_func:null,messages_layer:null,unit_data:null,road_lock:false,marker_code:0,activate:false,get_type:function(){return"messages_map";},get_map:function(){return this.map;},get_renderer:function(){return(this.messages_layer?this.messages_layer.renderer:null);},set_callback_func:function(func){this.callback_func=func;},set_map_bounds:function(bounds,force){if(!bounds||!this.map)
return false;bounds.transform(this.map.displayProjection,this.map.getProjectionObject());if(bounds.left==bounds.right){var center=bounds.getCenterLonLat();if(this.map.getCenter()&&!force)
this.map.panTo(center);else
this.map.setCenter(center,MonitoringMapCMSModule.default_pos.zoom);return true;}
if(force||!this.map.getExtent().containsBounds(bounds)){var center=bounds.getCenterLonLat();var width=bounds.getWidth()*2.0/3.0;var height=bounds.getHeight()*2.0/3.0;bounds.extend(new OpenLayers.LonLat(center.lon-width,center.lat-height));bounds.extend(new OpenLayers.LonLat(center.lon+width,center.lat+height));this.map.zoomToExtent(bounds);}
return true;},prepare:function(){if(jQuery("#monitoring_map_target").size()==0)
return;if(!this.map){var mod_map=WebCMS.get_module("monitoring_map");if(!mod_map)
return;this.map=mod_map.get_map();if(!this.map)
return;this.markers_layer=new OpenLayers.Layer.Markers("Messages Markers",{displayInLayerSwitcher:false});this.map.addLayer(this.markers_layer);}
if(!this.image_renderer_layer){var img_renderer=new ImageRendererLayer;img_renderer.init(this.map,"Messages Layer",function(result,layer,cparam){if(result)
MessagesMapCMSModule.image_renderer_layer=layer;});}},map_init:function(opts){var checked=jQuery("#sub_menu_show_messages").attr("checked")?true:false;if(!checked){jQuery("#sub_menu_show_messages").attr("checked",true);jQuery("#sub_menu_show_messages").click();jQuery("#sub_menu_show_messages").attr("checked",true);}
this.destroy_marker();this.unit_data=null;this.msg=null;var mod_mir=WebCMS.get_module("map_image_renderer");if(!opts||!opts.unit_id||!opts.time_from||!opts.time_to||!mod_mir||!this.map||!this.image_renderer_layer)
return false;this.time_from=opts.time_from;this.time_to=opts.time_to;this.flags=0;if(opts.msgs_type=="data"){if(typeof opts.lock!='undefined')
this.road_lock=opts.lock;var unit_info={id:opts.unit_id,type:1,ival1:opts.time_from,ival2:opts.time_to,style:{w:4,t:20,c:0x0000FF,a:0,l:opts.lock}};var layer=mod_mir.create_msgs_layer([unit_info]);if(!layer)
return false;var renderer=this.image_renderer_layer.get_renderer();if(!renderer)
return false;var mod_ust=WebCMS.get_module("user_settings_time");if(mod_ust)
renderer.set_tz_offset(mod_ust.get_tz_dst_offset());layer.create_layer(renderer,"messages",function(result,layer,renderer,cparam){if(!result){alert(MessagesMapCMSModule.translation.unitna);if(MessagesFilterCMSModule)
MessagesFilterCMSModule.disable_execute_button(false);return;}
MessagesMapCMSModule.on_layer_created(layer);});}else{var flags=0;if(opts.msgs_type=="sms")
flags=0x0100;else if(opts.msgs_type=="cmd")
flags=0x0200;else if(opts.msgs_type=="event")
flags=0x0600;this.flags=flags;Wialon.exec_service({svc:"get_msgs",item_id:opts.unit_id,ival1:opts.time_from,ival2:opts.time_to,type:1,flags:flags,flags_mask:0xFF00,load_locations:1},function(result,text){if(MessagesFilterCMSModule)
MessagesFilterCMSModule.disable_execute_button(false);if(!result){alert(MessagesMapCMSModule.translation.unitna);return;}
var unit_data=new Object;var msgs=eval(text);unit_data.id=opts.unit_id;unit_data.msgs=new Object;unit_data.msgs_count=msgs.length;unit_data.messages=msgs;unit_data.msgs_type=opts.msgs_type;if(MessagesFilterCMSModule&&MessagesMapCMSModule.callback_func)
MessagesMapCMSModule.callback_func(msgs.length,unit_data,null);});}
return true;},clear:function(){if(this.messages_layer){if(this.image_renderer_layer){var renderer=this.image_renderer_layer.get_renderer();if(renderer){renderer.remove_layer(this.messages_layer);this.image_renderer_layer.update();}}
this.messages_layer=null;}
this.unit_data=null;this.msg=null;this.destroy_marker();},on_layer_created:function(layer){this.image_renderer_layer.update();this.messages_layer=layer;var units_data=this.messages_layer.get_units_data();if(units_data&&units_data.length){this.unit_data=units_data[0];if(this.unit_data&&this.unit_data.msgs){if(this.callback_func){this.callback_func(true,this.unit_data,this.messages_layer);}}else{if(this.callback_func){this.callback_func(false,null,this.messages_layer);}}}
if(layer){var layer_bounds=layer.get_bounds();if(!layer_bounds||layer_bounds.length!=4)
return;var ol_bounds=new OpenLayers.Bounds(layer_bounds[1],layer_bounds[0],layer_bounds[3],layer_bounds[2]);this.set_map_bounds(ol_bounds,true);}},set_map_bounds:function(bounds,force){if(!bounds||!this.map)
return false;bounds.transform(this.map.displayProjection,this.map.getProjectionObject());if(bounds.left==bounds.right){var center=bounds.getCenterLonLat();if(this.map.getCenter()&&!force)
this.map.panTo(center);else
this.map.setCenter(center,MonitoringMapCMSModule.default_pos.zoom);return true;}
if(force||!this.map.getExtent().containsBounds(bounds)){var center=bounds.getCenterLonLat();var width=bounds.getWidth()*2.0/3.0;var height=bounds.getHeight()*2.0/3.0;bounds.extend(new OpenLayers.LonLat(center.lon-width,center.lat-height));bounds.extend(new OpenLayers.LonLat(center.lon+width,center.lat+height));this.map.zoomToExtent(bounds);}
return true;},center:function(msg,time){if(!msg||!this.map){this.destroy_marker();return;}
var lat=0;var lon=0;if(typeof msg.get_lat=="function"){lat=this.road_lock?msg.get_road_lat():msg.get_lat();lon=this.road_lock?msg.get_road_lon():msg.get_lon();}else{lat=msg.y;lon=msg.x;}
this.create_marker(msg,time);var lonlat=new OpenLayers.LonLat(lon,lat);lonlat.transform(this.map.displayProjection,this.map.getProjectionObject());this.map.panTo(lonlat);},on_init:function(){if(this.activate)
return false;Wialon.bind_event_handler("messages_player_hittest",0,function(event_type,event_id,event_data){var self=MessagesMapCMSModule;if(event_data==null||!self.image_renderer_layer)
return;var render=self.image_renderer_layer.get_renderer();if(!render)
return;render.hit_test_time(event_data.time,function(res,hit_info,param){if(!res||!hit_info)
return;var mod_mt=WebCMS.get_module("messages_table");if(mod_mt)
mod_mt.on_select_row(hit_info.imsg);},null);});this.activate=true;},create_marker:function(msg,time){if(!this.map||!this.markers_layer||!msg)
return;time=(time==null?4000:time);this.msg=msg;var lat=0;var lon=0;if(typeof msg.get_lat=="function"){lat=this.road_lock?msg.get_road_lat():msg.get_lat();lon=this.road_lock?msg.get_road_lon():msg.get_lon();}else{lat=msg.y;lon=msg.x;}
var lonlat=new OpenLayers.LonLat(lon,lat);lonlat.transform(this.map.displayProjection,this.map.getProjectionObject());if(!this.marker){var size=new OpenLayers.Size(21,32);var offset=new OpenLayers.Pixel(-size.w/2,-size.h);var icon=new OpenLayers.Icon(this.marker_img_url,size,offset);this.marker=new OpenLayers.Marker(lonlat,icon);this.markers_layer.addMarker(this.marker);}else{var px=this.map.getLayerPxFromLonLat(lonlat);this.marker.moveTo(px);this.markers_layer.redraw();}
this.marker_code++;var xtm=this.marker_code;setTimeout(function(){if(MessagesMapCMSModule.marker_code==xtm)
MessagesMapCMSModule.destroy_marker();},time);},destroy_marker:function(){if(!this.markers_layer||!this.marker||!this.map)
return;this.markers_layer.removeMarker(this.marker);this.marker.destroy();this.marker=null;this.msg=null;}});WebCMS.register_module(MessagesMapCMSModule);var MessagesTableCMSModule=Base.extend({constructor:null,translation:{},callback_func:null,was_prepared:false,unit_data:null,messages_layer:null,msg_per_page:50,cur_page:0,cur_row:-1,play_timer:null,play:false,suspend_play:true,count_x_speed:1,messages:{},page_options:[25,50,100,500,1000],mod_user_settings_time:null,mod_user_settings:null,show_columns:null,show_type:0,chart_scripts_loaded:false,chart_datas:null,chart_axis:null,chart_legends:null,chart_sel_point:null,action_mode:"table",chart:null,show_msg_del_col:false,deleted_messages:{},wait_img_url:"/skin/images/flexigrid/wait.gif",chart_img_url:"/messages_table/graph.png",table_img_url:"/messages_table/table.png",del_img_url:"/messages_table/del.png",flag_zerro_speed:true,get_type:function(){return"messages_table";},set_callback_func:function(func){this.callback_func=func;},set_flag_zerro_speed:function(val){this.flag_zerro_speed=val;},destroy:function(){this.was_prepared=false;if(this.messages_layer)
this.messages_layer=null;this.cur_page=0;for(i=0;i<this.page_options.length;i++)
this.messages[this.page_options[i]]={};this.unit_data=null;this.mod_user_settings_time=null;this.mod_user_settings=null;this.show_columns=null;jQuery("#messages_table_target").html("");if(jQuery("#chart_legend_div").size())
jQuery("#chart_legend_div").html("");this.chart_datas=null;this.chart_axis=null;this.chart_legends=null;this.chart_sel_point=null;this.action_mode="table";this.chart=null;},recreate:function(){this.destroy();this.prepare();},prepare:function(unit,msgs_type){if(this.was_prepared)
return;if(!msgs_type)
this.msgs_type="data";else
this.msgs_type=msgs_type;if(jQuery("#messages_table_target").size()==0)
return;jQuery("#messages_table_target").html("");this.mod_user_settings_time=WebCMS.get_module("user_settings_time");var col_info=null;var user=Wialon.get_current_user();var mus=WebCMS.get_module("user_settings");if(user&&mus){try{col_info=jQuery.parseJSON(user.get_public_property("messages_table_columns_states","null"));}catch(e){}}
var columns_info=col_info?col_info.col_info:null;var col_model=null;if(this.msgs_type=="data"){col_model=[{display:this.translation.col_number,name:'index',width:140,sortable:false,align:'left',hide:false},{display:this.translation.col_time,name:'time',width:140,sortable:false,align:'left',hide:false},{display:(typeof use_us_metrics!="undefined"&&use_us_metrics)?this.translation.col_speed_mi:this.translation.col_speed_km,name:'speed',width:140,sortable:false,align:'left',hide:false},{display:this.translation.col_coords,name:'coords',width:140,sortable:false,align:'left',hide:false},{display:this.translation.col_location,name:'location',width:140,sortable:false,align:'left',hide:false}];if(this.show_type==1&&unit){var pl=unit.get_plugin("avl_unit_sensors");if(pl){var sensors=pl.get_sensors();for(var i=0;i<sensors.length;i++)
col_model.push({display:sensors[i].get_name(),name:sensors[i].get_name(),width:140,sortable:false,align:'left',hide:false});}}else
col_model.push({display:this.translation.col_params,name:'params',width:140,sortable:false,align:'left',hide:false});}else if(msgs_type=="sms"){col_model=[{display:this.translation.col_number,name:'index',width:140,sortable:false,align:'left',hide:false},{display:this.translation.col_time,name:'time',width:140,sortable:false,align:'left',hide:false},{display:this.translation.col_sms,name:'sms',width:140,sortable:false,align:'left',hide:false},{display:this.translation.col_phone,name:'phone',width:140,sortable:false,align:'left',hide:false}];}else if(msgs_type=="cmd"){col_model=[{display:this.translation.col_number,name:'index',width:140,sortable:false,align:'left',hide:false},{display:this.translation.col_time,name:'time',width:140,sortable:false,align:'left',hide:false},{display:this.translation.col_user,name:'cmd_user',width:140,sortable:false,align:'left',hide:false},{display:this.translation.col_cmd_name,name:'cmd_name',width:140,sortable:false,align:'left',hide:false},{display:this.translation.col_cmd_params,name:'cmd_params',width:140,sortable:false,align:'left',hide:false},{display:this.translation.col_cmd_ex_time,name:'cmd_ex_time',width:140,sortable:false,align:'left',hide:false},{display:this.translation.col_cmd_channel,name:'cmd_channel',width:140,sortable:false,align:'left',hide:false}];}else if(msgs_type=="event"){col_model=[{display:this.translation.col_number,name:'index',width:140,sortable:false,align:'left',hide:false},{display:this.translation.col_time,name:'time',width:140,sortable:false,align:'left',hide:false},{display:this.translation.col_evt_type,name:'evt_type',width:140,sortable:false,align:'left',hide:false},{display:this.translation.col_evt_text,name:'evt_text',width:140,sortable:false,align:'left',hide:false}];}
if(unit&&unit.get_access_level()>=Wialon.access_level("manage")){col_model.push({display:this.translation.delmsg_header,name:'del',width:50,sortable:false,align:'center',hide:false});this.show_msg_del_col=true;this.deleted_messages={};}else
this.show_msg_del_col=false;for(var i=0;col_model&&i<col_model.length;i++){for(var j=0;columns_info&&j<columns_info.length;j++){if(col_model[i].name==columns_info[j].name){if(col_model[i].width!=columns_info[j].width&&columns_info[j].width!=0)
col_model[i].width=columns_info[j].width;if(col_model[i].align!=columns_info[j].align&&columns_info[j].align!="")
col_model[i].align=columns_info[j].align;if(col_model[i].hide!=columns_info[j].hide)
col_model[i].hide=columns_info[j].hide;break;}}}
var html="<table id='messages_table' style='height:100%'><tr><td style='width:18px' valign='top'><div id='messages_table_actions'/></td><td id='messages_table_content_table'><table id='messages_table_content' style='display:none'></table></td><td style='display:none' id='messages_table_content_chart'><div id='messages_table_chart'></div></div></td></tr></table>";jQuery("#messages_table_target").append(html);html="<img id='messages_table_action_table' src='"+this.table_img_url+"'/>";html+="<img id='messages_table_action_chart' src='"+this.chart_img_url+"'/>";html+="<img style='display:none' id='messages_table_action_del' src='"+this.del_img_url+"'/>";jQuery("#messages_table_actions").append(html);jQuery("#messages_table_action_table").attr("title",this.translation.show_table).Tooltip({showURL:false});jQuery("#messages_table_action_chart").attr("title",this.translation.show_chart).Tooltip({showURL:false});jQuery("#messages_table_action_del").attr("title",this.translation.del_chart).Tooltip({showURL:false});jQuery("[id^=messages_table_action_]").css("cursor","pointer").click(function(){var act=jQuery(this).attr("id").substr(22);if(MessagesTableCMSModule.play&&(act=="chart"||act=="del"))
return;var res="";if(jQuery("#messages_table_content_"+act).size()){jQuery("[id^=messages_table_content_]").css("display","none");jQuery("#messages_table_content_"+act).css("display","");}
MessagesTableCMSModule.action_mode=act;jQuery("#chart_tooltip").remove();eval("res = typeof MessagesTableCMSModule.on_action_"+act);if(res=="undefined")
return;eval("MessagesTableCMSModule.on_action_"+act+"(true)");});var h=jQuery("#messages_table_target").height();h=h-57;jQuery("#messages_table_content").flexigrid({dataType:'json',colModel:col_model,rpOptions:this.page_options,sortname:"time",sortorder:"asc",usepager:true,useRp:true,rp:this.msg_per_page,showTableToggleBtn:false,height:h,resizable:false,autoload:false,auto_width:(columns_info==null||col_info.auto_width),singleSelect:true,onChangePage:function(page){MessagesTableCMSModule.load_page(page);},onRpChange:function(count){MessagesTableCMSModule.change_msg_per_page(count);},onRowClick:function(row){var self=MessagesTableCMSModule;if(self.play&&self.suspend_play)
self.stop_play(true);if(!self.play)
self.cur_row=row;self.select_row(row);},errormsg:this.translation.errormsg,pagestat:this.translation.pagestat,procmsg:this.translation.procmsg,nomsg:this.translation.nomsg});jQuery(".flexigrid").width(jQuery("#panel_messages_table_target").width()-30);jQuery(".pReload").hide();jQuery("#messages_table_target .pDiv2 .pAwidth").attr("title",this.translation.toolbar_awidth).Tooltip({showURL:false});jQuery("#messages_table_target .pDiv2 .pFirst").attr("title",this.translation.toolbar_first).Tooltip({showURL:false});jQuery("#messages_table_target .pDiv2 .pPrev").attr("title",this.translation.toolbar_prev).Tooltip({showURL:false});jQuery("#messages_table_target .pDiv2 .pNext").attr("title",this.translation.toolbar_next).Tooltip({showURL:false});jQuery("#messages_table_target .pDiv2 .pLast").attr("title",this.translation.toolbar_last).Tooltip({showURL:false});jQuery("#messages_table_target .pDiv2 .pDelete").attr("title",this.translation.toolbar_delete).Tooltip({showURL:false});jQuery("#messages_table_target .pDiv2 input[@id=pade_selector]").attr("title",this.translation.toolbar_page_selector).Tooltip({showURL:false});jQuery("#messages_table_target .pDiv2 select[@id=rp]").attr("title",this.translation.toolbar_page_items).Tooltip({showURL:false});jQuery("#messages_table_target").resize(function(){MessagesTableCMSModule.resize();});var unit_id=unit?unit.get_id():0;jQuery("#messages_table_content").click(function(evt){var target=evt.target;var id=target.id;if(typeof id=="undefined")
return;if(id.substr(0,19)=="messages_table_del_"){var index=parseInt(id.substr(19));var mod_map=WebCMS.get_module("messages_map");if(mod_map&&!isNaN(index)&&typeof MessagesTableCMSModule.deleted_messages[index]=="undefined"){if(confirm(MessagesTableCMSModule.translation.delmsg_ask)){var params={index:(index-1),rname:MessagesTableCMSModule.messages_layer?MessagesTableCMSModule.messages_layer.renderer_name:"",lname:MessagesTableCMSModule.messages_layer?MessagesTableCMSModule.messages_layer.name:"",unit_id:unit_id,tm1:mod_map.time_from,tm2:mod_map.time_to,f:mod_map.flags};WebAjax.exec_service("/messages_table/delete_message.html",params,function(result,text){if(!result){WebCMS.log_msg(text,2);}else{jQuery("#"+id).attr("src","/messages_table/del_none.png");MessagesTableCMSModule.deleted_messages[index]=1;}});}}}});var user=Wialon.get_current_user();var mus=WebCMS.get_module("user_settings");if(!user||!mus)
return;if(user.get_public_property("messages_table_columns_states","")!=""||user.get_public_property("messages_filter_road_lock","")!=""){user.set_public_property("messages_table_columns_states","");user.set_public_property("messages_filter_road_lock","");mus.store_settings();}
this.bind_plot_events();this.was_prepared=true;},init:function(unit_data,layer){if(!unit_data&&!layer)
return;this.messages_layer=null;this.unit_data=null;this.cur_page=0;this.stop_play();this.messages_layer=layer;this.unit_data=unit_data;this.all_msgs_stored=false;for(i=0;i<this.page_options.length;i++){var mpp=this.page_options[i];this.messages[mpp]={};if(unit_data.messages){this.all_msgs_stored=true;var counter=1;var pages=1;for(var j=0;j<unit_data.msgs_count;j++,counter++){if(!this.messages[mpp][pages])
this.messages[mpp][pages]=new Array;this.messages[mpp][pages].push(unit_data.messages[j]);if(counter==mpp){counter=0;pages++;}}}}
if(this.all_msgs_stored){this.prepare(Wialon.get_item(unit_data.id),unit_data.msgs_type);this.change_msg_per_page(this.msg_per_page);return;}
if(!this.unit_data||!this.messages_layer)
return;if(!this.get_msgs_count())
return;this.prepare(Wialon.get_item(unit_data.id));this.change_msg_per_page(this.msg_per_page);Wialon.bind_event_handler("click_on_track",0,function(event_type,event_id,event_data){if(event_data==null)
return;MessagesTableCMSModule.on_select_row(event_data.imsg);});},wait:function(hide){if(hide){jQuery("#messages_table_target").append("<div id='messages_table_wait_div' style='position: absolute; display: block; left: 0px; top: 0px; width: 100%; height: 100%; background: #E5E8E9; cursor: wait;'><table width='100%' height='100%'><tr><td style='color: #000000; font-size: 11px; text-align: center; vertical-align: middle;'><img src='"+this.wait_img_url+"'/><br><b>"+this.translation.procmsg+"</b></td></tr></table></div>");}else
jQuery("#messages_table_wait_div").remove();},change_msg_per_page:function(count){this.msg_per_page=count;jQuery("#messages_table_content").flexOptions({rp:this.msg_per_page});this.stop_play();this.load_page(1);},resize:function(){var h=jQuery("#messages_table_target").height();h=h-57;if(h<0)
return;jQuery(".flexigrid").width(jQuery("#panel_messages_table_target").width()-30);jQuery("#messages_table_content").flexResize({height:h});if(this.chart_datas&&this.chart_scripts_loaded&&this.action_mode=="chart")
this.on_action_chart();else
this.chart=null;},load_page:function(page,row){row=(row==null?0:row);if(!this.messages_layer&&!this.all_msgs_stored)
return;var id=this.get_unit_id();if(typeof page=='undefined')
page=1;this.cur_page=page;this.cur_row=row;var pages=this.messages[this.msg_per_page];if(typeof pages=='undefined'||!pages)
return;if(this.play&&this.suspend_play)
this.stop_play(true);this.wait(true);if(typeof pages[page]=='undefined'){var index_from=(page-1)*this.msg_per_page;var index_to=index_from+this.msg_per_page-1;if(this.callback_func)this.callback_func(false);if(!this.messages_layer.get_unit_msgs(id,index_from,index_to,function(result,col,cparam){if(MessagesTableCMSModule.callback_func)
MessagesTableCMSModule.callback_func(result?true:false,col);if(result)
MessagesTableCMSModule.add_messages(col);if(row!=null){jQuery("#messages_table_content tr:eq("+row+")").toggleClass('trSelected');var tr=jQuery("#messages_table_content tr:eq("+row+")");if(tr.size()){var ofs=tr.offset().top-tr.parent().offset().top;jQuery("#messages_table_content_table .bDiv").scrollTop(ofs);}
MessagesTableCMSModule.select_row(row);}
MessagesTableCMSModule.wait(false);},null)){MessagesTableCMSModule.wait(false);}}else{if(this.callback_func)this.callback_func(false,pages[page]);this.add_messages_in_table(pages[page]);if(this.callback_func)this.callback_func(true);MessagesTableCMSModule.wait(false);if(row!=null){jQuery("#messages_table_content tr:eq("+row+")").toggleClass('trSelected');var tr=jQuery("#messages_table_content tr:eq("+row+")");if(tr.size()){var ofs=tr.offset().top-tr.parent().offset().top;jQuery("#messages_table_content_table .bDiv").scrollTop(ofs);}
MessagesTableCMSModule.select_row(MessagesTableCMSModule.cur_row);}}
this.action_mode="table";if(jQuery("#chart_legend_div").size())
jQuery("#chart_legend_div").html("");},add_messages:function(col){if(!col||!col.length)
return;var pages=this.messages[this.msg_per_page];if(typeof pages=='undefined'||!pages)
return;if(typeof pages[this.cur_page]=='undefined')
pages[this.cur_page]=col;this.add_messages_in_table(pages[this.cur_page]);},add_messages_in_table:function(col){if(!col||!col.length)
return;var data={page:this.cur_page,total:this.get_msgs_count(),rows:[]};var from=(this.cur_page-1)*this.msg_per_page;var dsts={};for(var i=0;i<col.length;i++){var row=this.conv_data_to_row(from+i+1,col[i]);var msg=col[i];if(this.msgs_type=="data"){var params_col=msg.get_params();for(var name in params_col){if(typeof params_col[name]=='undefined')
continue;if(typeof dsts[name]=='undefined'){dsts[name]={};dsts[name].data=[],dsts[name].label=name;}
dsts[name].data.push([msg.get_time(),params_col[name]]);}}
data.rows.push(row);}
if(this.msgs_type=="data"){this.chart_datas=[];this.chart_axis=null;this.chart_legends={};this.chart=null;for(var name in dsts)
this.chart_datas.push(dsts[name]);for(var i=0;i<this.chart_datas.length;i++){this.chart_legends[i]=this.chart_datas[i].data;this.chart_datas[i].data=[];}}
jQuery("#messages_table_content").flexAddData(data);if(this.play){this.cur_row=0;this.calc_playback_speed(0,0);}},conv_data_to_row:function(index,msg){if(this.msgs_type=="event"){if(!this.mod_user_settings_time||!msg)
return{id:0,cell:[index,"-","-","-"]};var type=this.translation.event;if(msg.f&0x10)
type=this.translation.maintenance;else if(msg.f&0x20)
type=this.translation.reg_filling;else if(msg.f&0x1)
type=this.translation.violation;var cell=[index,this.mod_user_settings_time.format_time(msg.t),type,this.get_msg_text(msg)];if(this.show_msg_del_col){if(typeof MessagesTableCMSModule.deleted_messages[index]=="undefined")
cell.push("<img src='/messages_table/del.png' id='messages_table_del_"+index+"'/>");else
cell.push("<img src='/messages_table/del_none.png' id='messages_table_del_"+index+"'/>");}
var res={id:time,cell:cell,cols_cfg:null};return res;}else if(this.msgs_type=="cmd"){if(!this.mod_user_settings_time||!msg)
return{id:0,cell:[index,"-","-","-","-","-","-"]};var user=Wialon.get_item_by_guid(msg.ug);var cmd_name=msg.cn;var cmd_mod=WebCMS.get_module("command_"+cmd_name);if(cmd_mod)
cmd_name=cmd_mod.get_title();var cell=[index,this.mod_user_settings_time.format_time(msg.t),user?user.get_name():"-",cmd_name,msg.cp,this.mod_user_settings_time.format_time(msg.et),msg.lt];if(this.show_msg_del_col){if(typeof MessagesTableCMSModule.deleted_messages[index]=="undefined")
cell.push("<img src='/messages_table/del.png' id='messages_table_del_"+index+"'/>");else
cell.push("<img src='/messages_table/del_none.png' id='messages_table_del_"+index+"'/>");}
var res={id:time,cell:cell,cols_cfg:null};return res;}else if(this.msgs_type=="sms"){if(!this.mod_user_settings_time||!msg)
return{id:0,cell:[index,"-","-","-"]};var cell=[index,this.mod_user_settings_time.format_time(msg.t),msg.st,msg.mp];if(this.show_msg_del_col){if(typeof MessagesTableCMSModule.deleted_messages[index]=="undefined")
cell.push("<img src='/messages_table/del.png' id='messages_table_del_"+index+"'/>");else
cell.push("<img src='/messages_table/del_none.png' id='messages_table_del_"+index+"'/>");}
return{id:time,cell:cell,cols_cfg:null};}else if(this.msgs_type=="data"){if(!this.mod_user_settings_time||!msg)
return{id:0,cell:[index,"-","-","-","-","-"]};var time=this.mod_user_settings_time.format_time(msg.get_time());var has_pos=msg.get_flags()&0x01;var speed="---";var sat_count="---";var location="---";var coords="---";if(has_pos){speed=msg.get_speed();if(typeof use_us_metrics!="undefined"&&use_us_metrics)
speed*=0.621;speed=parseInt(speed);sat_count=msg.get_sat_count();location=msg.get_location();coords=msg.get_lat()+", "+msg.get_lon();if(sat_count!=0xFF)
coords+=sprintf(" (%d)",sat_count);}
var cell=[index,time,speed,coords,location];if(this.show_type==1){var unit=Wialon.get_item(this.unit_data.id);var pl=unit.get_plugin("avl_unit_sensors");var sensors=pl.get_sensors();for(var i=0;i<sensors.length;i++){var res=sensors[i].calculate(msg,-348201.3876);if(res!=-348201.3876){cell.push(sprintf("%.2f",res));}else
cell.push("---");}}else{var params=new Array();if(msg.get_flags()&0x20)
params.push("ID="+msg.get_driver_code());var params_col=msg.get_params();for(var name in params_col){if(typeof params_col[name]!='undefined')
params.push(name+"="+params_col[name]);}
var inputs=msg.get_inputs();var outputs=msg.get_outputs();if(outputs||inputs)
params.push(sprintf("I/O=%x/%x",inputs,outputs));cell.push(params.join(", "));}
if(this.show_msg_del_col){if(typeof MessagesTableCMSModule.deleted_messages[index]=="undefined")
cell.push("<img src='/messages_table/del.png' id='messages_table_del_"+index+"'/>");else
cell.push("<img src='/messages_table/del_none.png' id='messages_table_del_"+index+"'/>");}
var cols_cfg=new Array();if((msg.get_flags()&0x10)==0x10){var cfg=new Object();cfg.background="#ff6363";for(var i=0;i<cell.length;i++)
cols_cfg.push(cfg);}
return{id:time,cell:cell,cols_cfg:cols_cfg};}},get_unit_id:function(){return(this.unit_data?this.unit_data.id:0);},get_msgs_count:function(){if(this.all_msgs_stored)
return(this.unit_data?this.unit_data.msgs_count:0);else
return(this.unit_data?this.unit_data.msgs.count:0);},get_first_msg:function(){return((this.unit_data&&typeof this.unit_data.msgs.first!="undefined")?this.unit_data.msgs.first:null);},get_last_msg:function(){return((this.unit_data&&typeof this.unit_data.msgs.last!="undefined")?this.unit_data.msgs.last:null);},select_row:function(row){if(!this.messages||row<0)
return;var mod_mm=WebCMS.get_module("messages_map");if(!mod_mm)
return;var pages=this.messages[this.msg_per_page];if(typeof pages=='undefined'||!pages){return;}
var msgs=pages[this.cur_page];if(typeof msgs=='undefined'){return;}
var msg=msgs[row];if(!msg)
return;if(typeof msg.get_flags=="function"&&!(msg.get_flags()&0x01))
return;if(typeof msg.get_flags!="function"&&!msg.x&&!msg.y)
return;mod_mm.center(msg,(!this.play?4000:this.time));MessagesTableCMSModule.fire_event_data(msg);},on_init:function(){},on_action_table:function(){jQuery("#messages_table_action_del").css("display","none");if(MessagesTableCMSModule.chart_sel_point){var tr=MessagesTableCMSModule.chart_sel_point;MessagesTableCMSModule.chart_sel_point=null;var ofs=tr.offset().top-tr.parent().offset().top;jQuery("#messages_table_content_table .bDiv").scrollTop(ofs);}},on_action_del:function(){this.chart=null;this.chart_axis=null;if(!this.chart_datas)
return;for(var i=0;i<this.chart_datas.length;i++){if(this.chart_datas[i].data.length)
this.chart_legends[i]=this.chart_datas[i].data;this.chart_datas[i].data=[];}
this.on_action_chart();},bind_plot_events:function(){jQuery("#messages_table_chart").bind("plotclick",function(evt,pos,item){if(item){var msgs=MessagesTableCMSModule.messages[MessagesTableCMSModule.msg_per_page][MessagesTableCMSModule.cur_page];var time=item.datapoint[0].toFixed(2);for(var i=0;i<msgs.length;i++){if(msgs[i].time==time&&msgs[i].get_flags()&0x01){var tr=jQuery("#messages_table_content tr:eq("+i+")");if(tr.size()){tr.click();MessagesTableCMSModule.chart_sel_point=tr;}
break;}}}});jQuery("#messages_table_chart").bind("plotselected",function(evt,ranges){if(ranges&&typeof ranges.xaxis!="undefined"&&typeof ranges.yaxis!="undefined"){MessagesTableCMSModule.chart_axis=ranges;MessagesTableCMSModule.on_action_chart();}});jQuery("#messages_table_chart").bind("plothover",function(event,pos,item){if(item){if(MessagesTableCMSModule.chart_prev_point!=item.datapoint){MessagesTableCMSModule.chart_prev_point=item.datapoint;jQuery("#chart_tooltip").remove();var x=parseInt(item.datapoint[0]);var y=item.datapoint[1].toFixed(2);MessagesTableCMSModule.show_chart_tooltip(item.pageX,item.pageY,MessagesTableCMSModule.mod_user_settings_time.format_time(x)+" | "+y);}}else{jQuery("#chart_tooltip").remove();MessagesTableCMSModule.chart_prev_point=null;}});},on_action_chart:function(no_create){jQuery("#messages_table_action_del").css("display","");if(this.play)
this.stop_play(true);if(no_create&&this.chart)
return;if(!this.chart_datas)
return;if(!this.chart_scripts_loaded){var scripts="<script type='text/javascript' src='/messages_table/flot/jquery.flot.pack.js'></script>";if(jQuery.browser.msie){scripts+="<script type='text/javascript' src='/messages_table/flot/excanvas.pack.js'></script>";}
jQuery("body").append(scripts);this.chart_scripts_loaded=true;}
if(!jQuery("#chart_legend_div").size()){var mod_mf=WebCMS.get_module("messages_filter");if(!mod_mf)
return;var panels_count=jQuery("#messages_filter_content dt").size();mod_mf.add_filter(this.translation.legend_chart,"<div id='chart_legend_div'/>");jQuery("#messages_filter_content").Accordion("destroy");jQuery("#messages_filter_content").Accordion({headerSelector:'dt',panelSelector:'dd',activeClass:'active',hoverClass:'hover',speed:300});mod_mf.resize();jQuery(jQuery("#messages_filter_content dt").get(panels_count)).click();}
jQuery("#messages_table_chart").width(jQuery("#panel_messages_table_target").width()-30);var h=jQuery("#messages_table_target").height();jQuery("#messages_table_chart").css("height",h+"px");var opts={};opts.legend={};opts.legend.show=true;opts.legend.noColumns=1;opts.legend.position='nw';opts.legend.container=jQuery("#chart_legend_div");opts.selection={};opts.selection.mode='xy';opts.selection.fps=30;opts.xaxis={};opts.yaxis={};opts.xaxis.tickFormatter=function(n){return MessagesTableCMSModule.mod_user_settings_time.format_time(n)};if(this.chart_axis){opts.xaxis.min=this.chart_axis.xaxis.from;opts.xaxis.max=this.chart_axis.xaxis.to;opts.yaxis.min=this.chart_axis.yaxis.from;opts.yaxis.max=this.chart_axis.yaxis.to;}
opts.points={show:true};opts.lines={show:true};opts.grid={hoverable:true,clickable:true};this.chart=jQuery.plot(jQuery("#messages_table_chart"),this.chart_datas,opts);if(!this.chart_legends)
this.chart_legends={};var id=0;jQuery("#chart_legend_div .legendLabel").each(function(){var html="<input type='checkbox' id='flot_legend_label_"+id+"' ";if(!MessagesTableCMSModule.chart_legends[id])
html+="checked";html+=" style='cursor:pointer'>&nbsp;"+jQuery(this).html();jQuery(this).html(html);var idd=id;jQuery("#flot_legend_label_"+idd).click(function(){if(!MessagesTableCMSModule.chart_legends[idd]){MessagesTableCMSModule.chart_legends[idd]=MessagesTableCMSModule.chart_datas[idd].data;MessagesTableCMSModule.chart_datas[idd].data=[];}else{MessagesTableCMSModule.chart_datas[idd].data=MessagesTableCMSModule.chart_legends[idd];MessagesTableCMSModule.chart_legends[idd]=null;}
if(MessagesTableCMSModule.action_mode!="chart")
jQuery("#messages_table_action_chart").click();MessagesTableCMSModule.on_action_chart();});id++;});},show_chart_tooltip:function(x,y,contents){jQuery("<div id='chart_tooltip'><table><tr><td nowrap>"+contents+"</td></tr></table></div>").css({position:'absolute',display:'none',top:y+5,left:x+5,border:'1px solid #fdd',padding:'2px','background-color':'#fee',color:'black'}).appendTo("body").fadeIn(200);var offset=jQuery("#chart_tooltip").offset();var offset_x=jQuery(window).width()-offset.left-jQuery("#chart_tooltip").width()-20;if(offset_x<0){jQuery("#chart_tooltip").css("left",offset.left+offset_x);}
var offset_y=jQuery(window).height()-offset.top-jQuery("#chart_tooltip").height()-20;if(offset_y<0){jQuery("#chart_tooltip").css("top",offset.top+offset_y);}},on_change_speed:function(val){if(!val)
return;this.count_x_speed=val;},on_action_play:function(){jQuery("#messages_table_action_del").css("display","none");if(jQuery("#messages_table_content_table").size()){jQuery("[id^=messages_table_content_]").css("display","none");jQuery("#messages_table_content_table").css("display","");}
if(!this.play){if(this.cur_row==-1)
this.cur_row=0;this.play=true;this.calc_playback_speed(0,0);}else
this.stop_play(true);Wialon.fire_event("messages_player_status_play",0,{play:this.play});},play_proc:function(){var mod=MessagesTableCMSModule;var max_msgs=mod.get_msgs_count();var cur_msg=mod.msg_per_page*(mod.cur_page-1)+mod.cur_row;if(cur_msg>=max_msgs||!mod.play){mod.stop_play();return;}
if(max_msgs>0){var msgs=mod.messages[mod.msg_per_page][mod.cur_page];var flag=mod.flag_zerro_speed;var row=(!msgs?0:msgs.length%mod.msg_per_page);row=(!row?mod.msg_per_page:row);if(flag)
while(msgs&&msgs[mod.cur_row]&&(!msgs[mod.cur_row].speed||(isNaN(msgs[mod.cur_row].lat)&&isNaN(msgs[mod.cur_row].lon)))&&mod.cur_row<row-1)
mod.cur_row++;var t1=((msgs&&msgs[mod.cur_row+1])?(flag&&!msgs[mod.cur_row+1].speed?0:msgs[mod.cur_row+1].time):0);var t0=((msgs&&msgs[mod.cur_row])?msgs[mod.cur_row].time:0);mod.calc_playback_speed(t1,t0);mod.fire_event_data((msgs?msgs[mod.cur_row]:null));}
if(mod.cur_row>=mod.msg_per_page){clearInterval(mod.track_timer);mod.track_timer=null;mod.suspend_play=false;mod.load_page(mod.cur_page+1);mod.suspend_play=true;return;}
var tr=jQuery("#messages_table_content tr:eq("+mod.cur_row+")");if(tr.size()){var ofs=tr.offset().top-tr.parent().offset().top;jQuery("#messages_table_content_table .bDiv").scrollTop(ofs);mod.suspend_play=false;tr.click();mod.suspend_play=true;}else{mod.stop_play();return;}
mod.cur_row++;},get_msg_text:function(msg){if(msg.p&&typeof msg.p=="object"&&typeof msg.p.rt_code!="undefined"){if(msg.p.rt_code==1)
return sprintf(this.translation.rt_started,msg.p.rt_name,msg.p.rt_zone);else if(msg.p.rt_code==2)
return sprintf(this.translation.rt_finished,msg.p.rt_name,msg.p.rt_zone);else if(msg.p.rt_code==11)
return sprintf(this.translation.rt_arrived,msg.p.rt_name,msg.p.rt_pt_name);else if(msg.p.rt_code==12)
return sprintf(this.translation.rt_skipped,msg.p.rt_name,msg.p.rt_pt_name);else if(msg.p.rt_code==13)
return sprintf(this.translation.rt_departured,msg.p.rt_name,msg.p.rt_pt_name);else if(msg.p.rt_code==21)
return sprintf(this.translation.zone_in,msg.p.rt_name,msg.p.rt_zone);else if(msg.p.rt_code==22)
return sprintf(this.translation.zone_out,msg.p.rt_name,msg.p.rt_zone);else
return this.translation.route_event;}else
return msg.et;},stop_play:function(save_row){clearInterval(this.track_timer);this.track_timer=null;this.play=false;if(!save_row)
this.cur_row=-1;Wialon.fire_event("messages_player_status_play",0,{play:this.play});},on_select_row:function(index){if(index==null)
return;if(this.play&&this.suspend_play)
this.stop_play();var mod=MessagesTableCMSModule;var tmp=index/mod.msg_per_page;var page=(tmp>parseInt(tmp)?parseInt(tmp+1):tmp);var row=index%mod.msg_per_page;mod.load_page(page?page:1,row);},fire_event_data:function(msg){if(!msg)
return;var mod=MessagesTableCMSModule;var data={cur_row:mod.cur_row,count_row:mod.get_msgs_count(),cur_page:mod.cur_page,count_row_page:mod.msg_per_page,msg:msg};Wialon.fire_event("messages_player_data",0,data);},calc_playback_speed:function(t1,t0){var mod=MessagesTableCMSModule;if(!mod.messages)
return;var k=1/this.count_x_speed;var delta_time=atoui(t1-t0);this.time=((!t1||!t0)?500:atoui(k*delta_time*1000));if(this.play){clearInterval(this.track_timer);this.track_timer=setInterval(MessagesTableCMSModule.play_proc,this.time);}}});WebCMS.register_module(MessagesTableCMSModule);(function($){$.fn.progressbar=function(options){var settings=$.extend({background0:'red',background1:'green',width:'200px',height:'20px'},options);return this.each(function(){var self=$(this);var id=$(this).attr("id");var html="";html+="<div style='width:"+settings.width+"; height:"+settings.height+";background-color:"+settings.background0+"' id='template_slider__"+id+"'>";html+="<div style='width:0%; height:"+settings.height+";background-color:"+settings.background1+"' id='template_pos__"+id+"'>";html+="<div id='template_percent__"+id+"' style='position:relative; left:50%;width:10%'>0%</div>";html+="</div>";html+="</div>";self.append(html);});};$.fn.progressbar_getPercent=function(){var self=$(this);var id=self.attr("id");return parseInt($("#template_pos__"+id).css("width"));};$.fn.progressbar_setPercent=function(value){var self=$(this);var id=self.attr("id");var val=parseInt($("#template_slider__"+id).css("width"));if(!isNaN(val)&&!isNaN(value)&&val>=value&&value>=0){$("#template_pos__"+id).css("width",value+"%");$("#template_percent__"+id).html(value+"%");return true;}
return false;};$.fn.progressbar_click=function(callback){var self=$(this);var id=self.attr("id");$("#template_slider__"+id).click(callback).css("cursor","pointer");return this;};$.fn.progressbar_mousemove=function(callback){var self=$(this);var id=self.attr("id");$("#template_slider__"+id).mousemove(callback).css("cursor","pointer");return this;};})(jQuery);var MessagesPlayerCMSModule=Base.extend({constructor:null,type:"messages_player",translation:{},activate:false,activate_bind:false,play_img_url:"/messages_player/play.png",pause_img_url:"/messages_player/pause.png",decr_speed_img_url:"/messages_player/decr_speed.png",incr_speed_img_url:"/messages_player/incr_speed.png",data:null,time_from:0,time_to:0,player_init:function(opts){if(!opts)
return;jQuery("#messages_player_time_info").html("&nbsp;");jQuery("#progressive").progressbar_setPercent(0);this.time_from=opts.time_from;this.time_to=opts.time_to;this.on_update_info();},clear:function(){this.on_update_info();this.time_from=0;this.time_to=0;jQuery("#progressive").progressbar_setPercent(0);jQuery("#messages_player_time_info").html("&nbsp;");},get_type:function(){return this.type;},get_html:function(){var html="";html+="<tr><td nowrap><b>"+this.translation.cur_messages+":</b></td><td style='width:100%' id='messages_player_stat_cur_msgs' nowrap></td></tr>";html+="<tr><td nowrap><b>"+this.translation.cur_time+":</b></td><td style='width:100%' id='messages_player_stat_cur_time' nowrap></td></tr>";html+="<tr><td nowrap><b>"+this.translation.cur_speed+":</b></td><td style='width:100%' id='messages_player_stat_cur_speed' nowrap></td></tr>";html+="<tr><td nowrap><b>"+this.translation.location+":</b></td><td style='width:100%' id='messages_player_stat_location' nowrap></td></tr>";html+="<tr><td colspan='2' nowrap id='messages_player_time_info' align='center' class='clear_td'>&nbsp;</td></tr>";html+="<tr><td colspan='2'>";html+="<table style='width:100%;' id='messages_player_control'><tr>"
html+="<td style='width:5%;padding:0px;' class='clear_td'><img id='messages_player_action_play' src='"+this.play_img_url+"'/></td>";html+="<td style='width:85%;padding:0px;'><div id='progressive'/></td>";html+="<td style='width:10%;padding:0px;' class='clear_td'>";html+="<select id='messages_player_change_speed'>";html+="<option value='1' selected>"+this.translation.realtime+"</option>";html+="<option value='10'>"+sprintf(this.translation.sec_per_sec,10)+"</option>";html+="<option value='30'>"+sprintf(this.translation.sec_per_sec,30)+"</option>";html+="<option value='60'>"+sprintf(this.translation.min_per_sec,1)+"</option>";html+="<option value='300'>"+sprintf(this.translation.min_per_sec,5)+"</option>";html+="<option value='600'>"+sprintf(this.translation.min_per_sec,10)+"</option>";html+="<option value='1800'>"+sprintf(this.translation.min_per_sec,30)+"</option>";html+="<option value='3600'>"+sprintf(this.translation.min_per_sec,60)+"</option>";html+="</select>";html+="</td>";html+="</tr></table>";html+="</td></tr>";html+="<tr><td colspan='2' class='clear_td' nowrap><input type='checkbox'  id='messages_player_check_zerro_speed' checked/>&nbsp;&nbsp;"+this.translation.zerro_speed+"</td></tr>";return html;},init:function(){if(this.activate)
return;Wialon.bind_event_handler("messages_player_init",0,function(event_type,event_id,event_data){if(MessagesPlayerCMSModule.activate_bind)
return;jQuery("#progressive").progressbar({background0:"#adc7ef",background1:"#3969b5",width:"100%",height:"18px"});jQuery("#progressive").progressbar_click(function(evt){var self=MessagesPlayerCMSModule;if(!self.data||!self.time_from||!self.time_to)
return;var width=jQuery(this).width();var left=jQuery(this).offset().left;var x=(evt.pageX-left)*100/width;var time=atoui(((self.time_to-self.time_from)*x)/100)+self.time_from;Wialon.fire_event("messages_player_hittest",0,{time:time});});jQuery("#progressive").progressbar_mousemove(function(evt){var self=MessagesPlayerCMSModule;if(!self.data||!self.time_from||!self.time_to)
return;var width=jQuery(this).width();var left=jQuery(this).offset().left;var x=(evt.pageX-left)*100/width;var time=atoui(((self.time_to-self.time_from)*x)/100)+self.time_from;jQuery("#messages_player_time_info").html((time?format_time(time):"&nbsp;"));});jQuery("#messages_player_action_play").click(function(){var self=MessagesPlayerCMSModule;var mod_mt=WebCMS.get_module("messages_table");if(!mod_mt||!self.time_from||!self.time_to)
return;mod_mt.on_action_play();}).css("cursor","pointer").attr("title",sprintf(MessagesPlayerCMSModule.translation.play,1)).Tooltip({showURL:false});jQuery("#messages_player_change_speed").change(function(){var mod_mt=WebCMS.get_module("messages_table");if(!mod_mt)
return;var val=atouf(jQuery(this).val());mod_mt.on_change_speed(val);}).css("cursor","pointer");jQuery("[class=clear_td]").mousemove(function(evt){if(!evt)
return;jQuery("#messages_player_time_info").html("&nbsp;");});jQuery("#messages_player_check_zerro_speed").click(function(){var mod_mt=WebCMS.get_module("messages_table");if(!mod_mt)
return;mod_mt.set_flag_zerro_speed(jQuery(this).attr("checked"));}).css("cursor","pointer");MessagesPlayerCMSModule.on_update_info();MessagesPlayerCMSModule.activate_bind=true;});Wialon.bind_event_handler("messages_player_data",0,function(event_type,event_id,event_data){var self=MessagesPlayerCMSModule;if(!event_data||!event_data.msg||!self.time_from||!self.time_to)
return;self.data=event_data;var index=self.data.cur_row+((self.data.cur_page-1)*self.data.count_row_page)+1;var x=(self.data.msg.time-self.time_from)*100/(self.time_to-self.time_from);jQuery("#progressive").progressbar_setPercent(atoui(x));self.on_update_info(index,self.data.msg.time,self.data.msg.speed,self.data.msg.location);});Wialon.bind_event_handler("messages_player_status_play",0,function(event_type,event_id,event_data){if(event_data==null)
return;var self=MessagesPlayerCMSModule;jQuery("#messages_player_action_play").attr("src",(event_data.play?self.pause_img_url:self.play_img_url));});this.activate=true;},on_update_info:function(cur_index_msg,cur_time,cur_speed,location){jQuery("#messages_player_stat_cur_msgs").html((cur_index_msg!=null?atoui(cur_index_msg):"-"));jQuery("#messages_player_stat_cur_time").html((cur_time?format_time(cur_time):"-"));if(typeof use_us_metrics!="undefined"&&use_us_metrics)
jQuery("#messages_player_stat_cur_speed").html((cur_speed!=null?sprintf("%.2f&nbsp;%s",atoui(cur_speed*0.621),this.translation.mih):"-"));else
jQuery("#messages_player_stat_cur_speed").html((cur_speed!=null?sprintf("%.2f&nbsp;%s",atoui(cur_speed),this.translation.kmh):"-"));jQuery("#messages_player_stat_location").html(((location&&location.length>0)?location:"-"));}});WebCMS.register_module(MessagesPlayerCMSModule);var UnitCmdsDialogCMSModule=Base.extend({constructor:null,get_type:function(){return"unit_cmds_dialog";},show:function(unit_id,cmd_name,params){WebCMS.log_action("unitcmd",cmd_name);var mod_wiz=WebCMS.get_module("wizard_dlg");if(mod_wiz)
mod_wiz.show("/unit_cmds_dialog/unit_cmds_dialog.html",{unit_id:unit_id,cmd_name:cmd_name,params:jQuery.toJSON(params)});}});WebCMS.register_module(UnitCmdsDialogCMSModule);var CommandGenericCMSModule=Base.extend({constructor:null,generic_img_url:"/unit_cmds_defaults/command_generic",cmd_ok_img_url:"/unit_cmds_defaults/cmd_ok",cmd_warning_img_url:"/unit_cmds_defaults/cmd_warning",get_type:function(){return"command_generic";},get_img_url:function(size){return WebCMS.get_img_url(this.generic_img_url+size+".png");},get_cmd_ok_url:function(size){return WebCMS.get_img_url(this.cmd_ok_img_url+size+".png");},get_cmd_warning_url:function(size){return WebCMS.get_img_url(this.cmd_warning_img_url+size+".png");}});var CommandQueryPosCMSModule=Base.extend({constructor:null,need_agreement:false,img_url:"/unit_cmds_defaults/query_pos",translation:{text:""},get_type:function(){return"command_query_pos";},get_img_url:function(size){return WebCMS.get_img_url(this.img_url+size+".png");},get_title:function(){return this.translation.text;}});var CommandBlockEngineCMSModule=Base.extend({constructor:null,need_agreement:true,img_url:"/unit_cmds_defaults/block_engine",translation:{text:""},get_type:function(){return"command_block_engine";},get_img_url:function(size){return WebCMS.get_img_url(this.img_url+size+".png");},get_title:function(){return this.translation.text;}});var CommandUnblockEngineCMSModule=Base.extend({constructor:null,need_agreement:true,img_url:"/unit_cmds_defaults/unblock_engine",translation:{text:""},get_type:function(){return"command_unblock_engine";},get_img_url:function(size){return WebCMS.get_img_url(this.img_url+size+".png");},get_title:function(){return this.translation.text;}});var CommandOutputOnCMSModule=Base.extend({constructor:null,need_agreement:true,img_url:"/unit_cmds_defaults/output_on",translation:{text:""},get_type:function(){return"command_output_on";},get_img_url:function(size){return WebCMS.get_img_url(this.img_url+size+".png");},get_title:function(){return this.translation.text;}});var CommandOutputOffCMSModule=Base.extend({constructor:null,need_agreement:true,img_url:"/unit_cmds_defaults/output_off",translation:{text:""},get_type:function(){return"command_output_off";},get_img_url:function(size){return WebCMS.get_img_url(this.img_url+size+".png");},get_title:function(){return this.translation.text;}});var CommandDownloadMsgsCMSModule=Base.extend({constructor:null,need_agreement:false,img_url:"/unit_cmds_defaults/download_msgs",translation:{text:""},get_type:function(){return"command_download_msgs";},get_img_url:function(size){return WebCMS.get_img_url(this.img_url+size+".png");},get_title:function(){return this.translation.text;}});var CommandSetReportIntervalCMSModule=Base.extend({constructor:null,need_agreement:false,img_url:"/unit_cmds_defaults/set_report_interval",translation:{text:""},get_type:function(){return"command_set_report_interval";},get_img_url:function(size){return WebCMS.get_img_url(this.img_url+size+".png");},get_title:function(){return this.translation.text;}});var CommandCustomMsgCMSModule=Base.extend({constructor:null,need_agreement:false,img_url:"/unit_cmds_defaults/command_generic",translation:{text:""},get_type:function(){return"command_custom_msg";},get_img_url:function(size){return WebCMS.get_img_url(this.img_url+size+".png");},get_title:function(){return this.translation.text;}});var CommandDriverMsgCMSModule=Base.extend({constructor:null,need_agreement:false,img_url:"/unit_cmds_defaults/driver_msg",translation:{text:""},get_type:function(){return"command_driver_msg";},get_img_url:function(size){return WebCMS.get_img_url(this.img_url+size+".png");},get_title:function(){return this.translation.text;}});var CommandSendPositionCMSModule=Base.extend({constructor:null,need_agreement:false,img_url:"/unit_cmds_defaults/send_position",translation:{text:""},get_type:function(){return"command_send_position";},get_img_url:function(size){return WebCMS.get_img_url(this.img_url+size+".png");},get_title:function(){return this.translation.text;}});var CommandUploadCfgCMSModule=Base.extend({constructor:null,need_agreement:true,img_url:"/unit_cmds_defaults/upload_cfg",translation:{text:""},get_type:function(){return"command_upload_cfg";},get_img_url:function(size){return WebCMS.get_img_url(this.img_url+size+".png");},get_title:function(){return this.translation.text;}});var CommandUploadSwCMSModule=Base.extend({constructor:null,need_agreement:true,img_url:"/unit_cmds_defaults/upload_sw",translation:{text:""},get_type:function(){return"command_upload_sw";},get_img_url:function(size){return WebCMS.get_img_url(this.img_url+size+".png");},get_title:function(){return this.translation.text;}});WebCMS.register_module(CommandGenericCMSModule);WebCMS.register_module(CommandQueryPosCMSModule);WebCMS.register_module(CommandBlockEngineCMSModule);WebCMS.register_module(CommandUnblockEngineCMSModule);WebCMS.register_module(CommandOutputOnCMSModule);WebCMS.register_module(CommandOutputOffCMSModule);WebCMS.register_module(CommandDownloadMsgsCMSModule);WebCMS.register_module(CommandSetReportIntervalCMSModule);WebCMS.register_module(CommandCustomMsgCMSModule);WebCMS.register_module(CommandDriverMsgCMSModule);WebCMS.register_module(CommandSendPositionCMSModule);WebCMS.register_module(CommandUploadCfgCMSModule);WebCMS.register_module(CommandUploadSwCMSModule);var UnitCmdsResponseCMSModule=Base.extend({constructor:null,messages:[],translation:{},response_new_img_url:"/unit_cmds_response/response_new_16x16.gif",response_read_img_url:"/unit_cmds_response/response_read_16x16.png",response_empty_img_url:"/unit_cmds_response/response_empty_16x16.png",response_delete_img_url:"/unit_cmds_response/delete.png",response_show_img_url:"/unit_cmds_response/show.png",response_hide_img_url:"/unit_cmds_response/hide.png",response_exec_cmds_img_url:"/unit_cmds_response/exec_cmd.png",response_exec_none_cmds_img_url:"/unit_cmds_response/exec_none_cmd.png",show_window:false,offset_scroll:0,size_table:0,index:0,get_type:function(){return"unit_cmds_response";},on_init:function(){var html=this.html_init();jQuery("body").append(html);jQuery("#unit_cmds_response_target").fadeTo('fast',0.8,function(){jQuery(this).hide();});Wialon.bind_event_handler("msg_registered",0,function(event_type,event_id,event_data){UnitCmdsResponseCMSModule.on_msg_recieved(Wialon.get_item(event_id),event_data);});jQuery("#unit_cmds_response_target").resize(function(){UnitCmdsResponseCMSModule.resize();});jQuery("#unit_cmds_response_close").click(function(){UnitCmdsResponseCMSModule.on_close();return false;});jQuery("#unit_cmds_response_delete_all").click(function(){UnitCmdsResponseCMSModule.on_cmd_response_delete_all();UnitCmdsResponseCMSModule.update_status_cmd_response();return false;});jQuery("#unit_cmds_response_delete_read").click(function(){UnitCmdsResponseCMSModule.on_cmd_response_delete_read();UnitCmdsResponseCMSModule.update_status_cmd_response();return false;});var response_img=this.response_empty_img_url;var html="&nbsp;"+this.translation.response_icon_name+"&nbsp;<img id='status_response' border='0' align='absmiddle' src='"+response_img+"'>&nbsp;|&nbsp;";jQuery("#bottom_panel_area").prepend(html);jQuery("#status_response").attr("title","X").Tooltip({showURL:false,bodyHandler:function(e){return UnitCmdsResponseCMSModule.status_cmd_response_tooltip();}}).css({cursor:"pointer"});jQuery("#status_response").click(function(){UnitCmdsResponseCMSModule.on_open_close();return false;});},on_msg_recieved:function(item,msg){if(!item||!msg)
return;if(msg.get_type()=="ud"||msg.get_type()=="udp"){var text=msg.get_param("text","");if(!text.length)
return;this.messages.push({item:item,msg:msg});this.index=this.messages.length-1;var user=Wialon.get_current_user();if(user&&parseInt(user.get_private_property("pnfs","0"))>0)
jQuery("#play_messages_sound").html("<embed src='/unit_cmds_response/notify.wav' type='audio/wav' hidden='true' width='0' height='0'/>");this.add_row(this.index);this.show();}},html_init:function(){var html="";html+="<div id='unit_cmds_response_target' class='unit_cmds_response_div' style='width:390px;z-index: 1000 !important;'>";html+="<div style='width:99%;height:100px;overflow-y:hidden;overflow-x:hidden'   align='center' id='unit_cmds_response_table_div'>";html+="<table class='unit_cmds_response_table' id='unit_cmds_response_table'></table>";html+="</div>";html+="<div align='center' >";html+="<table class='unit_cmds_response_table' >";html+="<tr>";html+="<td><a class='unit_cmds_response_link' href='' id='unit_cmds_response_close'>"+this.translation.close+"</a></td>";html+="<td style='font-weight: normal;'>|</td>";html+="<td><a class='unit_cmds_response_link' href='' id='unit_cmds_response_delete_all'>"+this.translation.delete_all+"</a></td>";html+="<td style='font-weight: normal;'>|</td>";html+="<td><a class='unit_cmds_response_link' href='' id='unit_cmds_response_delete_read'>"+this.translation.delete_read+"</a></td>";html+="</tr>";html+="</table>";html+="</div>";html+="<div id='play_messages_sound'></div>";html+="</div>";return html;},html_add:function(index){var unit_img_url=this.get_unit_icon(index);var unit_name=this.get_unit_name(index);var content=this.get_message_text(index);var html="";html+="<tr class='unit_cmds_response_row_div' id='tr_unit_cmds_response_title_"+index+"'>";html+="<td nowrap style='font-weight:bold; cursor:pointer'><img style=' cursor:pointer' src='"+unit_img_url+"' id='unit_cmds_response_img_"+index+"'></img></td>";html+="<td nowrap style='width:100%; font-weight:bold; cursor:pointer'><span href='' id='unit_cmds_response_name_"+index+"'>"+(unit_name.length>10?(unit_name.substr(0,10)+"..."):unit_name)+"</span></td>";html+="<td nowrap style='width:100%; font-weight:bold; cursor:pointer' id='td_unit_cmds_response_msg_title_"+index+"'><span href='' id='unit_cmds_response_msg_title_"+index+"' style='text-align: justify;'>"+(content.length>30?(content.substr(0,30)+"..."):content)+"</span></td>";html+="<td id='td_unit_cmds_response_answer_"+index+"'><img style='cursor:pointer'  id='unit_cmds_response_answer_"+index+"' src='"+this.response_exec_cmds_img_url+"'></img></td>";html+="<td><img style='cursor:pointer' read=0 state=0 src='"+this.response_show_img_url+"' id='unit_cmds_response_button_hide_show_"+index+"'/></td>";html+="<td><img style='cursor:pointer' src='"+this.response_delete_img_url+"' id='unit_cmds_response_button_close_"+index+"'/></td>";html+="</tr>";html+="<tr style='display:none;font-weight:normal' class='unit_cmds_response_row_div' id='tr_unit_cmds_response_content_"+index+"'>";html+="<td align=left colspan='6'><span style='cursor:pointer' href='' id='unit_cmds_response_content_"+index+"'>"+this.create_content(content)+"</span></td>";html+="</tr>";return html;},create_content:function(content){var max_syms=60;var text_lines=[];var line_from=-1;var line_to=-1;var line_width=1;var arr=content.split(" ");for(var i=0;i<arr.length;i++){if(line_from==-1)
line_from=i;line_width+=arr[i].length+1;if(line_width>=max_syms||i==arr.length-1){line_to=i;var line_str="";for(var ii=line_from;ii<=line_to;ii++){if(ii==line_from)
line_str=arr[ii];else
line_str+=(" "+arr[ii]);}
text_lines.push(line_str);line_width=1;line_from=-1;line_to=-1;}else
line_width+=1;}
return text_lines.join("<br>");},add_row:function(index){var html=this.html_add(index);this.get_offset_scroll_and_size_table();var state=jQuery("#unit_cmds_response_button_hide_show_"+(index-1)).attr("state");jQuery("#unit_cmds_response_table").prepend(html);this.resize_table(this.size_table,state);jQuery("#tr_unit_cmds_response_content_"+index).slideUp();jQuery("#unit_cmds_response_name_"+index).click(function(e){UnitCmdsResponseCMSModule.on_click_unit(e);return false;});jQuery("#unit_cmds_response_msg_title_"+index).click(function(e){UnitCmdsResponseCMSModule.on_click_title(e);return false;});jQuery("#unit_cmds_response_content_"+index).click(function(e){UnitCmdsResponseCMSModule.on_click_text(e);return false;});jQuery("#unit_cmds_response_button_close_"+index).click(function(e){UnitCmdsResponseCMSModule.on_cmd_response_close(e);UnitCmdsResponseCMSModule.update_status_cmd_response();return false;});jQuery("#unit_cmds_response_button_hide_show_"+index).click(function(e){var state=parseInt(jQuery(this).attr("state"));UnitCmdsResponseCMSModule.on_cmd_response_show_hide(e,state);jQuery("#unit_cmds_response_name_"+index).css("font-weight","normal");jQuery("#unit_cmds_response_msg_title_"+index).css("font-weight","normal");if(state==1){jQuery(this).attr("src",UnitCmdsResponseCMSModule.response_show_img_url);jQuery(this).attr("state","0");}else{jQuery(this).attr("src",UnitCmdsResponseCMSModule.response_hide_img_url);jQuery(this).attr("state","1");}
jQuery(this).attr("read","1");UnitCmdsResponseCMSModule.update_status_cmd_response();return false;});jQuery("#unit_cmds_response_img_"+index).attr("title","X").Tooltip({showURL:false,bodyHandler:function(e){return UnitCmdsResponseCMSModule.on_unit_tooltip(index);}});jQuery("#unit_cmds_response_answer_"+index).click(function(e){UnitCmdsResponseCMSModule.on_answer(e);return false;});this.is_answer(index);this.is_msg_position(index);this.update_status_cmd_response();},is_msg_position:function(index){if(this.messages.length==0||index>=this.messages.length)
return;var n=this.messages[index];if(!n||!n.msg)
return;if(!n.msg.is_position()){jQuery("#td_unit_cmds_response_msg_title_"+index).css("cursor","default");jQuery("#unit_cmds_response_content_"+index).css("cursor","default");}},status_cmd_response_tooltip:function(){var html="<font style='font-size:11px ;font-weight: bolder'>"+this.not_read_count()+" "+this.translation.status_response_tooltip+"&nbsp;</font>";return html;},update_status_cmd_response:function(){var response_img="";var empty=this.empty();var not_read=this.is_cmd_response_not_read();if(not_read&&!empty)
response_img=this.response_new_img_url;if(!not_read&&!empty)
response_img=this.response_read_img_url;if(empty)
response_img=this.response_empty_img_url;jQuery("#status_response").attr("src",response_img);},is_cmd_response_not_read:function(){var is=false;for(var val in this.messages){if(jQuery("#unit_cmds_response_button_hide_show_"+val).attr("read")==0){is=true;break;}}
return is;},get_unit_icon:function(index){if(this.messages.length==0||index>=this.messages.length)
return"";var n=this.messages[index];if(!n)
return"";var unit=n.item;if(!unit)
return"";var pl=unit.get_plugin("avl_item_icon");return pl.get_icon_url(16);},get_unit_name:function(index){if(this.messages.length==0||index>=this.messages.length)
return"";var n=this.messages[index];if(!n)
return"";var unit=n.item;if(!unit)
return"";return unit.get_name();},get_message_text:function(index){if(this.messages.length==0||index>=this.messages.length)
return"";var n=this.messages[index];if(!n||!n.msg)
return"";return n.msg.get_param("text","");},show:function(){if(!this.show_window){jQuery("#unit_cmds_response_target > .jrCorner").remove();jQuery("#unit_cmds_response_target").css("display","block");this.show_window=true;this.resize();}},resize:function(){var x=(jQuery(window).width()-jQuery("#unit_cmds_response_target").width())-40;var y=40;var mod=WebCMS.get_module("notify_online");if(mod&&mod.show_window)
x-=jQuery("#notify_online_target").width()+20;jQuery("#unit_cmds_response_target").css({left:x,top:y});},resize_table:function(size,last_state){var len=this.messages.length;var sz=jQuery("#unit_cmds_response_table").height();if(sz==0)sz=100;var height=sz;if(height>180&&jQuery("#unit_cmds_response_table_div").css("overflow-y")=="hidden"){jQuery("#unit_cmds_response_table_div").css("height","180px");jQuery("#unit_cmds_response_table_div").css("overflow-y","auto");}else if(height<180&&jQuery("#unit_cmds_response_table_div").css("overflow-y")=="auto"){if(height<100)
sz=100;jQuery("#unit_cmds_response_table_div").css("overflow-y","hidden");jQuery("#unit_cmds_response_table_div").css("height",sz+"px");if(size!=0&&(this.offset_scroll!=0||(!this.offset_scroll&&last_state==1)))
jQuery("#unit_cmds_response_table_div").scrollTop(this.offset_scroll+sz-size);}else if(height>180){if(size!=0&&(this.offset_scroll!=0||(!this.offset_scroll&&last_state==1)))
jQuery("#unit_cmds_response_table_div").scrollTop(this.offset_scroll+sz-size);}else if(height<180){if(height<100)
sz=100;jQuery("#unit_cmds_response_table_div").css("height",sz+"px");}},not_read_count:function(){var count=0;for(var val in this.messages){if(jQuery("#unit_cmds_response_button_hide_show_"+val).attr("read")==0)
count++;}
return count;},size:function(){var size=0;for(var val in this.messages)
size++;return size;},empty:function(){if(!this.size())
return true;return false;},is_answer:function(index){if(index>=this.messages.length)
return;var unit=this.messages[index].item;if(!unit)
return;var cmds=unit.get_commands();var driver_msg_exists=false;for(var i=0;i<cmds.length;i++)
if(cmds[i]=="driver_msg"){driver_msg_exists=true;break;}
if(!driver_msg_exists){jQuery("#unit_cmds_response_answer_"+index).attr("src",this.response_exec_none_cmds_img_url);jQuery("#unit_cmds_response_answer_"+index).css("cursor","default");}},on_answer:function(evt){var index=jQuery(evt.target).attr("id").substring(26);if(index>=this.messages.length)
return;var unit=this.messages[index].item;if(!unit)
return;if(unit.get_access_level()<Wialon.access_level("exec_cmd"))
return;var cmds=unit.get_commands();var driver_msg_exists=false;for(var i=0;i<cmds.length;i++)
if(cmds[i]=="driver_msg"){driver_msg_exists=true;break;}
if(!driver_msg_exists)
return;var mod_dlg=WebCMS.get_module("unit_cmds_dialog");if(mod_dlg)
mod_dlg.show(unit.get_id(),"driver_msg");},on_show_unit:function(id){var mod_mu=WebCMS.get_module("monitoring_units");if(!mod_mu||!id)
return;mod_mu.select_unit(Wialon.get_item(id));},on_unit_tooltip:function(index){if(index>=this.messages.length)
return;var unit=this.messages[index].item;var mod=WebCMS.get_module("unit_info_text");if(!mod)
return"";return mod.get_info_text(unit);},is_msg_pos:function(index){},on_click_title:function(evt){var index=jQuery(evt.target).attr("id").substring(29);if(this.messages.length==0||index>=this.messages.length)
return;var n=this.messages[index];if(!n||!n.msg)
return;if(!n.msg.is_position())
return;if(typeof n.msg.get_lat=="function"&&typeof n.msg.get_lon=="function"){var lat=n.msg.get_lat();var lon=n.msg.get_lon();if(!lat||!lon)
return;WebCMS.locate(lat,lon);}},on_click_unit:function(evt){var index=jQuery(evt.target).attr("id").substring(24);if(this.messages.length==0||index>=this.messages.length)
return;var n=this.messages[index];if(!n)
return;var unit=n.item;if(!unit)
return;if(!unit.get_position())
return;var lat=unit.get_position().get_lat();var lon=unit.get_position().get_lon();if(!lat||!lon)
return;WebCMS.locate(lat,lon);},on_click_text:function(evt){var index=jQuery(evt.target).attr("id").substring(27);if(this.messages.length==0||index>=this.messages.length)
return;var n=this.messages[index];if(!n||!n.msg)
return;if(typeof n.msg.get_lat=="function"&&typeof n.msg.get_lon=="function"){var lat=n.msg.get_lat();var lon=n.msg.get_lon();if(!lat||!lon)
return;WebCMS.locate(lat,lon);}},on_open_close:function(){if(!this.show_window){this.on_open();this.resize_table(0,0);}else
this.on_close();},on_open:function(){this.show();WebCMS.log_action("secwnd","unitresponse");},on_close:function(){if(this.show_window){var user=Wialon.get_current_user();if(user&&parseInt(user.get_private_property("pnfs","0"))>0)
jQuery("#play_messages_sound").html("");jQuery("#unit_cmds_response_target").css("display","none");this.show_window=false;}
WebCMS.log_action("secwnd","unitresponse");},on_cmd_response_close:function(evt){this.get_offset_scroll_and_size_table();var index=jQuery(evt.target).attr("id").substring(32);var id_close="#tr_unit_cmds_response_title_"+index;var id_content="#tr_unit_cmds_response_content_"+index;var content="#tr_unit_cmds_response_content_"+index;jQuery(content).css("display","none");jQuery(id_close).remove();jQuery(id_content).remove();delete this.messages[index];this.resize_table(this.size_table,0);if(!jQuery("#unit_cmds_response_table tr").size()){this.on_close();}},on_cmd_response_show_hide:function(evt,st){this.get_offset_scroll_and_size_table();var index=jQuery(evt.target).attr("id").substring(36);var content="#tr_unit_cmds_response_content_"+index;if(st==1){jQuery(content).css("display","none");}else{jQuery(content).css("display","");}
if(jQuery("#unit_cmds_response_table_div").scrollTop()==0){this.get_offset_scroll_and_size_table();}
this.resize_table(0,0);},on_cmd_response_delete_read:function(){this.get_offset_scroll_and_size_table();for(var val in this.messages){if(jQuery("#unit_cmds_response_button_hide_show_"+val).attr("read")==1){var id_title="#tr_unit_cmds_response_title_"+val;var id_content="#tr_unit_cmds_response_content_"+val;jQuery(id_title).remove();jQuery(id_content).remove();delete this.messages[val];}}
this.resize_table(0,0);if(!jQuery("#unit_cmds_response_table tr").size()){this.on_close();}},on_cmd_response_delete_all:function(){this.get_offset_scroll_and_size_table();for(var val in this.messages){var id_title="#tr_unit_cmds_response_title_"+val;var id_content="#tr_unit_cmds_response_content_"+val;jQuery(id_title).remove();jQuery(id_content).remove();}
this.messages.splice(0,this.messages.length);this.on_close();},get_offset_scroll_and_size_table:function(){this.offset_scroll=jQuery("unit_cmds_response_div").scrollTop();this.size_table=jQuery("unit_cmds_response_table").height();}});WebCMS.register_module(UnitCmdsResponseCMSModule);var ReportIntevalControlCMSModule=Base.extend({constructor:null,translation:{},report_intervals:null,get_type:function(){return"report_interval_control";},on_init:function(){this.report_intervals=new Object;},bind:function(target_id,from,to,flags,lang,placement){var report_interval_item=new ReportIntervalControlItemCMSModule(target_id,from,to,flags,lang,placement);if(typeof this.report_intervals[target_id]!='undefined')
delete this.report_intervals[target_id];report_interval_item.init();this.report_intervals[target_id]=report_interval_item;},check_text:function(id){var flags=parseInt(jQuery("#interval_type_"+id).val());var time_from=jQuery("#time_from_"+id).getDateTimeAbs();var time_to=jQuery("#time_to_"+id).getDateTimeAbs();if(flags==0x02){var curr=jQuery("#include_current_time"+id).attr("checked")?32:0;flags=parseInt(jQuery("#last_type_"+id).val())+curr;time_to=jQuery("#last_val_"+id).val();}
var int_ok=false;if(flags==0x00)
int_ok=time_from<=time_to;else if(flags==0x01)
int_ok=Wialon.get_server_time()>time_from;else
int_ok=!isNaN(time_to)&&time_to.length&&time_to>=0;return int_ok;},get_interval:function(id){var obj=new Object();obj.flags=parseInt(jQuery("#interval_type_"+id).val());obj.time_from=jQuery("#time_from_"+id).getDateTimeAbs();obj.time_to=jQuery("#time_to_"+id).getDateTimeAbs()+59;if(obj.flags==0x01){obj.time_to=obj.time_from;}else if(obj.flags==0x02){var curr=jQuery("#include_current_time"+id).attr("checked")?32:0;obj.flags=parseInt(jQuery("#last_type_"+id).val())+curr;obj.time_from=0;obj.time_to=Math.round(jQuery("#last_val_"+id).val());}
return obj;}});var ReportIntervalControlItemCMSModule=Base.extend({constructor:function(target_id,from,to,flags,lang,placement){this.id=target_id;this.from=from;this.to=to;this.flags=flags;this.lang=lang;this.placement=placement;},id:"",from:0,to:0,flags:0,placement:0,lang:"en",init:function(){var id=this.id;var html="";if(this.placement){html="<table width='100%'>";html+="<tr><td width='33%'>"+ReportIntevalControlCMSModule.translation.kind+":</td>";html+="<td width='67%' rowspan='2' valign='bottom'>";html+="<div id='int_"+id+"' style='display: none'>";html+="<table cellspacing='0'>";html+="<tr>";html+="<td width='50%'>"+ReportIntevalControlCMSModule.translation.from+":</td>";html+="<td width='50%'>"+ReportIntevalControlCMSModule.translation.to+":</td>";html+="</tr><tr>";html+="<td align='left' valign='bottom'><input type='text' style='width: 150px' id='time_from_"+id+"'/></td>";html+="<td align='left' valign='bottom'><input type='text' style='width: 150px' id='time_to_"+id+"'/></td>";html+="</tr></table>";html+="</div>";html+="<div id='last_"+id+"' style=display: none'>";html+="<table cellspacing='0'><tr>";html+="<td valign='bottom'>&nbsp;<select id='last_val_"+id+"'/></td>";html+="<td valign='bottom'>&nbsp;<select id='last_type_"+id+"'/></td>";html+="<td valign='bottom'>&nbsp;<input type='checkbox' id='include_current_time'/></td>";html+="</tr></table></div></td>";html+="</tr><tr>";html+="<td valign='bottom'><select id='interval_type_"+id+"'/></td>";html+="</tr></table>";}else{html="<table width='100%'>";html+="<tr><td width='110px'>"+ReportIntevalControlCMSModule.translation.kind+":</td>";html+="<td ><select id='interval_type_"+id+"'/></td></tr>";html+="<tr id='int_from_"+id+"' style='display: none'>";html+="<td>"+ReportIntevalControlCMSModule.translation.from+":</td>";html+="<td align='left'><input type='text' style='width: 170px' id='time_from_"+id+"'/></td></tr>";html+="<tr id='int_to_"+id+"' style='display: none'>";html+="<td>"+ReportIntevalControlCMSModule.translation.to+":</td>";html+="<td align='left'><input type='text' style='width: 170px' id='time_to_"+id+"'/></td></tr>";html+="<tr id='last_"+id+"' style='display: none'>";html+="<td>&nbsp;</td>";html+="<td nowrap><select id='last_val_"+id+"'/>&nbsp;<select id='last_type_"+id+"'/>&nbsp;<br><input type='checkbox' id='include_current_time"+id+"'/>&nbsp;"+ReportIntevalControlCMSModule.translation.include_current_time+"</td>";html+="</tr></table>";}
jQuery("#"+id).html(html);for(var i=1;i<=24;i++)
jQuery("#last_val_"+id).append("<option value='"+i+"'>"+i+"</option>");jQuery("#last_type_"+id).append("<option value='2'>"+ReportIntevalControlCMSModule.translation.days+"</option>");jQuery("#last_type_"+id).append("<option value='4'>"+ReportIntevalControlCMSModule.translation.weeks+"</option>");jQuery("#last_type_"+id).append("<option value='8'>"+ReportIntevalControlCMSModule.translation.months+"</option>");jQuery("#last_type_"+id).append("<option value='16'>"+ReportIntevalControlCMSModule.translation.years+"</option>");jQuery("#last_type_"+id).append("<option value='64'>"+ReportIntevalControlCMSModule.translation.hours+"</option>");jQuery("#interval_type_"+id).append("<option value='0'>"+ReportIntevalControlCMSModule.translation.int_spec+"</option>");jQuery("#interval_type_"+id).append("<option value='1'>"+ReportIntevalControlCMSModule.translation.int_from+"</option>");jQuery("#interval_type_"+id).append("<option value='2'>"+ReportIntevalControlCMSModule.translation.int_prev+"</option>");jQuery("#interval_type_"+id).change(function(){var index=parseInt(jQuery(this).attr("selectedIndex"));var id=jQuery(this).attr("id").substr(14);if(isNaN(index)||index==0||index<2){jQuery("#int_"+id).css("display","");jQuery("#int_from_"+id).css("display","");jQuery("#int_to_"+id).css("display","");jQuery("#last_"+id).css("display","none");}else{jQuery("#int_"+id).css("display","none");jQuery("#int_from_"+id).css("display","none");jQuery("#int_to_"+id).css("display","none");jQuery("#last_"+id).css("display","");}
if(isNaN(index)||index==0){jQuery("#time_from_"+id).attr("disabled",false);jQuery("#time_to_"+id).attr("disabled",false);}else if(index==1){jQuery("#time_from_"+id).attr("disabled",false);jQuery("#time_to_"+id).attr("disabled",true);}});var flags=this.flags;var time_from=this.from;var time_to=this.to;var mod_ust=WebCMS.get_module("user_settings_time");var date=new Date();date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0);var c_from=mod_ust.get_abs_time(date.getTime()/1000);date.setHours(23);date.setMinutes(59);date.setSeconds(59);date.setMilliseconds(999);c_to=mod_ust.get_abs_time(date.getTime()/1000);if(flags==0x00){c_from=time_from;c_to=time_to;}else if(flags==0x01)
c_from=time_from;var index=0;var flg=flags;if(flags&32)
flg-=32;if(flags&64)
flg-=32;while(flg){flg=flg>>1;index++;}
if(index<2){jQuery("#interval_type_"+id).attr("selectedIndex",index);jQuery("#int_"+id).css("display","");jQuery("#int_from_"+id).css("display","");jQuery("#int_to_"+id).css("display","");jQuery("#last_"+id).css("display","none");}else{jQuery("#interval_type_"+id).attr("selectedIndex",2);jQuery("#last_type_"+id).attr("selectedIndex",index-2);jQuery("#int_"+id).css("display","none");jQuery("#int_from_"+id).css("display","none");jQuery("#int_to_"+id).css("display","none");jQuery("#last_"+id).css("display","");time_to=Math.round(time_to);if(time_to<1||time_to>11)
time_to=1;jQuery("#last_val_"+id).attr("selectedIndex",time_to-1);time_to=time_from;}
jQuery("#time_from_"+id).date_input({lang:this.lang,dependencyDown:"time_to_"+id}).setDateTimeAbs(c_from);jQuery("#time_to_"+id).date_input({lang:this.lang,dependencyUp:"time_from_"+id}).setDateTimeAbs(c_to);jQuery("#interval_type_"+id).change();flg=flags;if(flags&64)
flg-=64;if(flg&32)
jQuery("#include_current_time"+id).attr("checked",true);else
jQuery("#include_current_time"+id).attr("checked",false);}});WebCMS.register_module(ReportIntevalControlCMSModule);var rsc=WebCMS.get_module("report_interval_control");var ReportTemplatesCreateCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"report_templates_create";},on_init:function(){jQuery("#report_templates_create_target").click(function(){ReportTemplatesCreateCMSModule.create_report_template();return false;}).attr("title",this.translation.title).Tooltip({showURL:false});},create_report_template:function(){var resources=Wialon.filter_items(Wialon.get_resources(),"edit");if(!resources||!resources.length){alert(this.translation.not_resource);return;}
if(resources&&resources.length==1){var report_resource=resources[0];var pl=report_resource.get_plugin("avl_report_templates");if(!pl)
return;var report_templates=pl.get_report_templates();var limit=pl.get_report_templates_limit();if(report_templates&&limit>=0&&report_templates.length>=limit){alert(this.translation.limit_reached);return;}}
var mod_rdlg=WebCMS.get_module("report_templates_dialog");if(mod_rdlg)
mod_rdlg.show();}});WebCMS.register_module(ReportTemplatesCreateCMSModule);var ReportTemplatesDialogCMSModule=Base.extend({constructor:null,get_type:function(){return"report_templates_dialog";},show:function(res_id,base_report_id,report_id){if(typeof res_id=="undefined")
res_id=0;if(typeof base_report_id=="undefined")
base_report_id=0;if(typeof report_id=="undefined")
report_id=0;var mod_wiz=WebCMS.get_module("wizard_dlg");if(mod_wiz)
mod_wiz.show("/report_templates_dialog/report_templates_dialog.html",{res_id:res_id,base_report_id:base_report_id,report_id:report_id},800,550);}});WebCMS.register_module(ReportTemplatesDialogCMSModule);var ReportTemplatesFilterCMSModule=Base.extend({constructor:null,translation:{},activated:false,config_img_url:"/report_templates_filter/configure.png",get_type:function(){return"report_templates_filter";},destroy:function(){},set_initial_report_template:function(report_template){ReportTemplatesFilterCMSModule.initial_report_template=report_template;},prepare:function(){if(jQuery("#report_templates_filter_target").size()==0)
return;if(!this.activated){this.activated=true;var html="<div id='report_templates_filter_params'><table class='filter_table' cellspacing='1px' cellpadding='0px' width='100%'>";html+="<tr><td width='100px'>"+this.translation.report_template+":</td><td align='left'><select id='report_templates_filter_reports' style='width: 170px;'/></td><td align='left' valign='middle'><img style='cursor:pointer' id='report_templates_filter_reports_configure' src='"+WebCMS.get_img_url(this.config_img_url)+"'></td></tr>";html+="<tr><td width='100px'>"+this.translation.report_object+":</td><td align='left'><select id='report_templates_filter_units' style='width: 170px;'/></td><td align='left' valign='middle'><img style='cursor:pointer' id='report_templates_filter_units_configure' src='"+WebCMS.get_img_url(this.config_img_url)+"'></td></tr>";html+="<tr><td width='100%' colspan='3'><div id='report_templates_filter_time'/></td></tr>";html+="</table><table width='100%'><tr><td align='left'><input type='button' id='report_templates_filter_params_execute' value='"+this.translation.execute+"'/>&nbsp;";html+="<input type='button' id='report_templates_filter_params_clear' value='"+this.translation.clear+"'/></td>";html+="<td align='right'><input type='button' id='report_templates_filter_params_print' value='"+this.translation.print_report+"' disabled/>&nbsp;";html+="<input type='button' id='report_templates_filter_params_do_file' value='"+this.translation.make_report_file+"'/></td></tr>";html+="</table>";jQuery("#report_templates_filter_target").append(html);html="<dl id='report_templates_filter_content' class='accordion'></dl>";jQuery("#report_templates_filter_target").append(html);html='<table width="100%" id="menu_report_result_table"><tr id="menu_report_result_table_tr"><td align="center" style="padding: 0px 0p 0px 0px;"><input type="button" id="report_templates_create_target" value="'+this.translation.create_report_template+'" /></td></tr><tr><td valign="top"><table width="100%" cellpadding="0" cellspacing="0" id="report_templates_list_target" class="list_table"></table></td></tr></table>';this.add_filter(this.translation.list_table,html);var mod_replst=WebCMS.get_module("report_templates_list");if(mod_replst)
mod_replst.on_display_init(this.on_report_template_click);var rtc_mod=WebCMS.get_module("report_templates_create");if(rtc_mod)
rtc_mod.on_init();html="<div id='report_templates_filter_accordion_total'><table id='report_templates_filter_accordion_content' class='report_templates_filter_content' cellspacing='1px' cellpadding='0px' width='100%'>";html+="</table></div>";this.add_filter(this.translation.report_result,html);var arr=jQuery("#report_templates_filter_content dt");var dt_h=arr.size()?jQuery(arr[0]).height():16;if(!dt_h)dt_h=16;var h=jQuery("#report_templates_filter_target").height()-jQuery("#report_templates_filter_params").height()-(arr.size()*dt_h)-arr.size()*1;jQuery("#report_templates_filter_content").Accordion({headerSelector:'dt',panelSelector:'dd',activeClass:'active',hoverClass:'hover',panelHeight:h,speed:300});jQuery("#report_templates_filter_content div[@id^=report_templates_filter_accordion_]").css({height:h});jQuery("#report_templates_filter_params_do_file").click(ReportTemplatesFilterCMSModule.do_report_file);jQuery("#report_templates_filter_params_print").click(ReportTemplatesFilterCMSModule.print);jQuery("#report_templates_filter_params_execute").click(function(){ReportTemplatesFilterCMSModule.on_execute();});jQuery("#report_templates_filter_params_clear").click(function(){ReportTemplatesFilterCMSModule.on_clear();});jQuery("#report_templates_filter_target").resize(function(){ReportTemplatesFilterCMSModule.resize();});html="";var mod_ust=WebCMS.get_module("user_settings_time");var date=new Date();date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0);var time_from=mod_ust.get_abs_time(date.getTime()/1000);date.setHours(23);date.setMinutes(59);date.setSeconds(59);date.setMilliseconds(999);var time_to=mod_ust.get_abs_time(date.getTime()/1000);var flags=0;var ric=WebCMS.get_module("report_interval_control");if(!ric)
return
ric.bind("report_templates_filter_time",time_from,time_to,flags,WebCMS.get_lang(),false);this.report_template_type_id=ReportTemplatesSelector.attach_gui_client("report_templates_filter_reports","report_templates_filter_units","report_templates_filter_reports_configure","report_templates_filter_units_configure");}
this.resize();},resize:function(){if(jQuery("#report_templates_filter_target").css("display")!="none"){var arr=jQuery("#report_templates_filter_content dt");var dt_h=arr.size()?jQuery(arr[0]).height():16;if(!dt_h)dt_h=16;var h=jQuery("#report_templates_filter_target").height();var h2=jQuery("#report_templates_filter_target").height()-jQuery("#report_templates_filter_params").height()-(arr.size()*dt_h)-arr.size()*1;jQuery("#report_templates_filter_content div[id^=report_templates_filter_accordion]").css({height:h2});jQuery("#report_templates_filter_content dd").css({height:h2});if(jQuery("#report_templates_filter_content")[0])
jQuery("#report_templates_filter_content")[0].accordionCfg.panelHeight=h2;jQuery("#report_templates_filter_content").css({height:h});}},disable_execute_button:function(disable){jQuery("#report_templates_filter_params_execute").attr("disabled",disable);jQuery("#report_templates_filter_params_do_file").attr("disabled",disable);},add_filter:function(caption,html){jQuery("#report_templates_filter_content").append("<dt>"+caption+"</dt><dd>"+html+"</dd>");},on_execute:function(){this.on_clear(true);var mod_rt=WebCMS.get_module("report_result_table");var mod_rm=WebCMS.get_module("report_result_map");var ric=WebCMS.get_module("report_interval_control");if(!mod_rt||!mod_rm||!ric)
return;if(!ric.check_text("report_templates_filter_time"))
return;var interval=ric.get_interval("report_templates_filter_time");var selection=ReportTemplatesSelector.get_selection(this.report_template_type_id);if(!selection)
return;jQuery("#report_templates_filter_content dt:last").click();mod_rt.set_callback_func(function(rres,ren){ReportTemplatesFilterCMSModule.on_show_content(rres,ren);});mod_rm.clear();this.disable_execute_button(true);if(!mod_rt.generate(selection.report_item_id,selection.report_id,selection.object_id,selection.object_prop_id,interval))
ReportTemplatesFilterCMSModule.disable_execute_button(false);jQuery("#report_templates_filter_params_print").attr("disabled",true);},on_clear:function(show_accordion){var mod_rep_map=WebCMS.get_module("report_result_map");var mod_rep_table=WebCMS.get_module("report_result_table");if(mod_rep_map)mod_rep_map.clear();if(mod_rep_table)mod_rep_table.clear_all();if(!show_accordion)
jQuery("#report_templates_filter_content dt:first").click();jQuery("#report_templates_filter_accordion_content").empty();this.disable_execute_button(false);jQuery("#report_templates_filter_params_print").attr("disabled",true);},on_show_content:function(rres,ren){var mod=ReportTemplatesFilterCMSModule;mod.disable_execute_button(false);jQuery("#report_templates_filter_accordion_content tr").removeClass("selected");if(rres){var html="";if(rres.stats&&rres.stats.length)
html+="<tr pos='-1' tp='table'><td>"+this.translation.stats+"</td></tr>";if(rres.tables&&rres.tables.length){for(var i=0;i<rres.tables.length;i++)
html+="<tr pos='"+i+"' tp='table'><td>"+rres.tables[i].text+"</td></tr>";}
if(rres.attachments&&rres.attachments.length){for(var i=0;i<rres.attachments.length;i++)
html+="<tr pos='"+i+"' tp='attach'><td>"+rres.attachments[i].n+"</td></tr>";}
if(html.length){jQuery("#report_templates_filter_params_print").removeAttr("disabled");jQuery("#report_templates_filter_accordion_content").html(html);jQuery("#report_templates_filter_accordion_content tr").click(function(){var mod=WebCMS.get_module("report_result_table");if(mod.is_busy())
return;jQuery("#report_templates_filter_accordion_content tr").removeClass("selected");jQuery(this).addClass("selected");var mod=WebCMS.get_module("report_result_table");var pos=parseInt(jQuery(this).attr("pos"));var type=jQuery(this).attr("tp");if(type=="table")
mod.show_table(pos);else
mod.show_attachment(pos);});}
jQuery("#report_templates_filter_accordion_content tr:first").addClass("selected");var mod=WebCMS.get_module("report_result_table");if(rres.stats&&rres.stats.length){mod.show_table(-1);}else if(rres.tables&&rres.tables.length){mod.show_table(0);}else if(rres.attachments&&rres.attachments.length){mod.show_attachment(0);}}
if(ren){jQuery("#report_templates_filter_params_print").removeAttr("disabled");var mod_rm=WebCMS.get_module("report_result_map");if(mod_rm)
mod_rm.map_init(ren);}},on_init:function(){},on_table_result:function(renderer){ReportTemplatesFilterCMSModule.disable_execute_button(false);var mod_rm=WebCMS.get_module("report_result_map");if(!mod_rm)
return;mod_rm.map_init(renderer);},do_report_file:function(){var mod_wiz=WebCMS.get_module("wizard_dlg");if(!mod_wiz)
return;var ric=WebCMS.get_module("report_interval_control");if(!ric)
return;var selection=ReportTemplatesSelector.get_selection(ReportTemplatesFilterCMSModule.report_template_type_id);if(!selection)
return;var interval=ric.get_interval("report_templates_filter_time");mod_wiz.show("/report_templates_filter/export_to_file.html",{object_id:selection.object_id,object_prop_id:selection.object_prop_id,resource_id:selection.report_item_id,report_template_id:selection.report_id,time_from:interval.time_from,time_to:interval.time_to,flags:interval.flags,gen:0,rweb:ReportResultTableCMSModule.rweb});},print:function(){var mod_wiz=WebCMS.get_module("wizard_dlg");if(!mod_wiz)
return;var ric=WebCMS.get_module("report_interval_control");if(!ric)
return;var selection=ReportTemplatesSelector.get_selection(ReportTemplatesFilterCMSModule.report_template_type_id);if(!selection)
return;var interval=ric.get_interval("report_templates_filter_time");mod_wiz.show("/report_templates_filter/print_file.html",{rweb:ReportResultTableCMSModule.rweb},800,550);},on_report_template_click:function(resource_id,report_id){if(typeof resource_id!="undefined"&&typeof resource_id!=report_id){jQuery("#report_templates_filter_reports").val(resource_id+"_"+report_id);jQuery("#report_templates_filter_reports").change();}}});WebCMS.register_module(ReportTemplatesFilterCMSModule);var ReportTemplateListCMSModule=Base.extend({constructor:null,translation:{},show_control:-1,group_incompatible:1,to_menu:-1,show_cf:null,set_report_template_cf:null,config_img_url:"/report_templates_list/configure.png",config_none_img_url:"/report_templates_list/configure_none.png",del_img_url:"/report_templates_list/del.png",del_none_img_url:"/report_templates_list/del_none.png",action_head_img_url:"/report_templates_list/action.png",copy_img_url:"/report_templates_list/copy.png",generate_img_url:"/report_templates_list/generate.png",generate_head_img_url:"/report_templates_list/generate_head.png",acl_res:{},list_filter:"*",res_filter:0,get_type:function(){return"report_templates_list";},on_init:function(){if(!available_modules.reports)
return;},on_display_init:function(on_report_template_click){this.on_report_template_click=on_report_template_click;var mod=WebCMS.get_module("search_control");if(!mod)
return;mod.attach_to_module(this,"report_templates_create_target");var mod_fctl=WebCMS.get_module("resource_filter_control");if(!mod_fctl)
return;mod_fctl.attach_to_module(this,"report_templates_create_target");var html="<tbody></tbody>";jQuery("#report_templates_list_target").html(html);jQuery("[id^=report_template_head_]").Tooltip({showURL:false});this.update_list_filter("*");jQuery("#report_template_head_interval").attr("title",ReportTemplateListCMSModule.translation.report_template_interval).Tooltip({showURL:false});jQuery("#report_template_head_action").attr("title",ReportTemplateListCMSModule.translation.action).Tooltip({showURL:false});Wialon.bind_event_handler("item_created",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_resource")
ReportTemplateListCMSModule.on_resource_created(event_data,event_data.get_plugin("avl_report_templates"));});Wialon.bind_event_handler("item_deleted",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_resource")
ReportTemplateListCMSModule.on_resource_deleted(event_data,event_data.get_plugin("avl_report_templates"));});Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.repu!='undefined')
ReportTemplateListCMSModule.on_report_template_updated(Wialon.get_item(event_id),event_data.repu);if(typeof event_data.acl!='undefined'&&event_id==Wialon.get_current_user().get_id()){for(var i in event_data.acl){var item=Wialon.get_item(i);if(item&&item.get_type()=="avl_resource"&&ReportTemplateListCMSModule.acl_res[i]!=item.get_access_level()){ReportTemplateListCMSModule.acl_res[i]=item.get_access_level();ReportTemplateListCMSModule.on_report_template_updated(item);}}}});},update_row_html:function(res,report_template){if(!res||!report_template)
return;var rid=res.get_id();var rpid=report_template.get_id();var id=rid+"_"+rpid;var html="<tr id='report_template_list_row_"+id+"'>";var update=false;var prev_html=jQuery("#report_template_list_row_"+id).html();if(prev_html&&prev_html!=""){html="";update=true;}
html+="<td id='report_template_list_name_"+id+"' nowrap>"+report_template.get_name()+"</td><td width='99%'></td>";var can_edit=res.get_access_level()>=Wialon.access_level("edit");var can_manage=res.get_access_level()>=Wialon.access_level("edit");var edit_img=this.config_img_url;var manage_img=this.del_img_url;if(!can_edit)
edit_img=this.config_none_img_url;if(!can_manage)
manage_img=this.del_none_img_url;html+="<td><img id='report_template_list_config_"+id+"' src='"+WebCMS.get_img_url(edit_img)+"' title='"+this.translation.config+"'/></td>";html+="<td><img id='report_template_list_copy_"+id+"' src='"+WebCMS.get_img_url(this.copy_img_url)+"' title='"+this.translation.copy+"'/></td>";html+="<td><img id='report_template_list_del_"+id+"' src='"+WebCMS.get_img_url(manage_img)+"' title='"+this.translation.del+"'/></td>";if(update)
jQuery("#report_template_list_row_"+id).html(html);else{html+="</tr>";jQuery("#report_templates_list_target").append(html);}
jQuery("#report_template_list_name_"+id).css({cursor:"pointer"}).click(function(){var arr=$(this).attr("id").substring(26).split("_");if(!arr||arr.length!=2)
return;var item=Wialon.get_item(arr[0]);if(!item)
return;ReportTemplateListCMSModule.on_report_template_click(arr[0],arr[1]);});jQuery("#report_template_list_config_"+id).css({cursor:"pointer"}).Tooltip({showURL:false}).click(function(){ReportTemplateListCMSModule.on_edit_report_template($(this).attr("id").substring(28).split("_"));});if(can_manage){jQuery("#report_template_list_del_"+id).css({cursor:"pointer"}).Tooltip({showURL:false}).click(function(){ReportTemplateListCMSModule.on_del_report_template($(this).attr("id").substring(25).split("_"));});}
jQuery("#report_template_list_copy_"+id).attr("title",ReportTemplateListCMSModule.translation.copy).css({cursor:"pointer"}).Tooltip({showURL:false}).click(function(){ReportTemplateListCMSModule.on_copy_report_template($(this).attr("id").substring(26).split("_"));});},on_resource_deleted:function(res,pl){if(!res||!pl)
return;jQuery("[id^=report_template_list_row_"+res.get_id()+"]").remove();},on_resource_created:function(res,pl){if(!res||!pl)
return;var jcol=pl.get_report_templates();for(var j=0;j<jcol.length;j++){var report_template=jcol[j];this.update_row_html(res,report_template);}},on_report_template_updated:function(res,rp_col){if(!res)
return;if(typeof rp_col!="undefined"&&rp_col&&rp_col.length==2){var pl=res.get_plugin("avl_report_templates");if(!pl)
return;var rp_id=rp_col[0];var rp_data=rp_col[1];if(rp_data)
this.update_row_html(res,pl.get_report_template(rp_id));else
jQuery("#report_template_list_row_"+res.get_id()+"_"+rp_id).remove();}else{var pl=res.get_plugin("avl_report_templates");if(pl){var rcol=pl.get_report_templates();for(var j=0;j<rcol.length;j++){this.update_row_html(res,rcol[j]);}}}},on_edit_report_template:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_report_templates");if(!pl)
return;var report_template=pl.get_report_template(arr[1]);if(!report_template)
return;var mod_rdlg=WebCMS.get_module("report_templates_dialog");if(mod_rdlg)
mod_rdlg.show(res.get_id(),report_template.get_id(),report_template.get_id());},on_copy_report_template:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_report_templates");if(!pl)
return;var report_templates=pl.get_report_templates();var limit=pl.get_report_templates_limit();if(report_templates&&limit>=0&&report_templates.length>=limit){alert(this.translation.limit_reached);return;}
var report_template=pl.get_report_template(arr[1]);if(!report_template)
return;var mod_rdlg=WebCMS.get_module("report_templates_dialog");if(mod_rdlg)
mod_rdlg.show(res.get_id(),report_template.get_id(),0);},on_del_report_template:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_report_templates");if(!pl)
return;var report_template=pl.get_report_template(arr[1]);if(!report_template)
return;if(!confirm(sprintf(this.translation.del_confirm,report_template.get_name())))
return;pl.delete_report_template(report_template,function(result,error_text,cparam){if(!result)
WebCMS.log_msg(sprintf(ReportTemplateListCMSModule.translation.error_delete,cparam.name,error_text),2);else{WebCMS.log_msg(sprintf(ReportTemplateListCMSModule.translation.succ_delete,cparam.name),1);ReportTemplateListCMSModule.on_report_template_updated(cparam.res,[cparam.id,null]);}},{name:report_template.get_name(),res:res,id:report_template.get_id()});},set_callbacks:function(show_cf,set_report_template_cf){this.show_cf=show_cf;this.set_report_template_cf=set_report_template_cf;},on_generate_report_template:function(arr){if(!arr||arr.length!=2)
return;if(!this.show_cf||!this.set_report_template_cf)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_report_templates");if(!pl)
return;var report_template=pl.get_report_template(arr[1]);if(!report_template)
return;jQuery("#menu_modes_report_templates").trigger("click");Report.select_report_template(1,"device_report_template",res,report_template);},get_unit_state_html:function(unit){if(!unit)
return"&nbsp;";return"<img id='report_template_list_generate_btn_"+unit.get_id()+"' src='"+WebCMS.get_img_url(this.generate_img_url)+"'/>";},get_head_html:function(){return"<img id='monitoring_units_report_templates_head' src='"+WebCMS.get_img_url(this.generate_head_img_url)+"'/>";},get_head_title:function(){return this.translation.title_head;},get_unit_state_html:function(unit){if(!unit)
return"&nbsp;";return"<img id='report_templates_list_row_"+unit.get_id()+"' src='"+WebCMS.get_img_url(this.generate_img_url)+"'/>";},get_unit_state_title:function(unit){return this.translation.title;},on_click:function(unit_id,event){jQuery("#menu_modes_report_templates").trigger("click");ReportTypeSelector.select_object(1,"device_report_template",Wialon.get_item(unit_id));},get_row_tab_info:function(){return{id:"monitoring_settings",title:this.translation.tab_name};},get_row_html:function(){return"<tr><td><img src='"+this.generate_head_img_url+"'/>&nbsp;"+this.translation.title_head+":</td><td><input type='checkbox' id='state_reps_btn'/></td><td><input type='checkbox' id='state_reps_btn_m'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#state_reps_btn").attr("checked",this.show_control==1).attr("title",this.translation.tooltip).Tooltip({showURL:false});jQuery("#state_reps_btn_m").attr("checked",this.show_control==2).attr("title",this.translation.tooltip_menu).Tooltip({showURL:false});jQuery("#state_reps_btn").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_reps_btn_m").removeAttr("checked");});jQuery("#state_reps_btn_m").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_reps_btn").removeAttr("checked");});},save_row_data:function(){var show=jQuery("#state_reps_btn").attr("checked")?1:0;if(!show)
show=jQuery("#state_reps_btn_m").attr("checked")?2:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mu_reps",show);mod_us.store_settings();this.show_control=show;var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(!mod_map||!mod_menu)
return;if(this.show_control==1)
mod_map.register_unit_state_module(this);else if(this.show_control==2)
mod_menu.register_unit_state_module(this);else
mod_map.unregister_unit_state_module(this);return true;},update_settings:function(){var user=Wialon.get_current_user();if(!user)
return;this.show_control=parseInt(user.get_private_property("mu_reps","2"));},refresh_list:function(){jQuery("tr[id^=report_template_list_row]").remove();var resources=Wialon.get_resources();var fresources=Wialon.filter_items(resources,"view");if(fresources&&fresources.length>0){for(var i=0;i<resources.length;i++){var res=resources[i];this.acl_res[res.get_id()]=res.get_access_level();if(this.res_filter!=0&&res.get_id()!=this.res_filter)
continue;var plugin=res.get_plugin("avl_report_templates");if(plugin){var report_templates=plugin.get_report_templates();for(var j=0;j<report_templates.length;j++){var rep=report_templates[j];if(this.list_filter=="*"||WebCMS.compare_wildcard(rep.name,this.list_filter))
this.update_row_html(res,rep);}}}}},update_resource_filter:function(filter){this.res_filter=filter;this.refresh_list();},update_list_filter:function(filter){this.list_filter=filter;this.refresh_list();}});WebCMS.register_module(ReportTemplateListCMSModule);var ReportObjectUnitType=Base.extend({constructor:null,translation:{},type:"avl_unit",get_type:function(){return"report_object_unit_type";},object_update_type:"avl_unit",objects:null,get_objects:function(){if(this.objects)
return this.objects;var col=Wialon.get_units();var mod_mu=WebCMS.get_module("monitoring_units");if(mod_mu)
col=mod_mu.get_units();else
Wialon.sort_items(col);this.objects=[];for(var i=0;i<col.length;i++){var object={};object.id=col[i].get_id();object.sid=col[i].get_guid();object.name=col[i].get_name();this.objects.push(object);}
return this.objects;},object_edit_fn:"avl_unit"});var ReportObjectUnitGroupsType=Base.extend({constructor:null,translation:{},type:"avl_unit_group",get_type:function(){return"report_object_unit_groups_type";},object_update_type:"avl_unit_group",objects:null,get_objects:function(){if(this.objects)
return this.objects;var col=Wialon.get_unit_groups();Wialon.sort_items(col);this.objects=[];for(var i=0;i<col.length;i++){var object={};object.id=col[i].get_id();object.sid=col[i].get_guid();object.name=col[i].get_name();this.objects.push(object);}
return this.objects;},object_edit_fn:"avl_unit_group"});var ReportObjectUserType=Base.extend({constructor:null,translation:{},type:"storage_user",get_type:function(){return"report_object_user_type";},object_update_type:"storage_user",objects:null,get_objects:function(){if(this.objects)
return this.objects;this.objects=[];var users=Wialon.get_users();for(var i=0;i<users.length;i++){var user=users[i];this.objects.push({id:user.get_id(),name:user.get_name(),sid:user.get_guid()});}
return this.objects;},object_edit_fn:"storage_user"});var ReportTemplatesSelector=Base.extend({constructor:null,translation:{},gui_clients:{},gui_clients_counter:0,get_type:function(){return"report_type_selector";},report_templates:[],reports_types:{},report_object_types:{},on_init:function(){Wialon.bind_event_handler("item_created",0,ReportTemplatesSelector.event_dispatch);Wialon.bind_event_handler("item_deleted",0,ReportTemplatesSelector.event_dispatch);Wialon.bind_event_handler("item_updated",0,ReportTemplatesSelector.event_dispatch);Wialon.bind_event_handler("workspace_units_changed",0,ReportTemplatesSelector.event_dispatch);this.update_report_templates();},update_report_templates:function(){this.report_templates=new Array;var resources=Wialon.filter_items(Wialon.get_resources(),"view");if(resources&&resources.length){for(var i=0;i<resources.length;i++){var res=resources[i];var pl=res.get_plugin("avl_report_templates");if(pl){var rcol=pl.get_report_templates();for(var j=0;j<rcol.length;j++){var report_obj={};report_obj.item=res;report_obj.object=rcol[j];this.report_templates.push(report_obj);}}}}
this.report_templates.sort(function(a,b){if(a.object.get_name()==b.object.get_name())
return 0;return a.object.get_name().toLowerCase()>b.object.get_name()?1:-1;});},register_object_type:function(rtype){if(typeof this.reports_types[rtype.type]=="undefined")
this.reports_types[rtype.type]=rtype;},get_object_types:function(){var res={};for(var type in this.reports_types)
res[type]=this.reports_types[type].translation.name;return res;},event_dispatch:function(event_type,event_id,event_data){if(event_data&&(event_data.cnm||event_data.cneh))
return;var mod=ReportTemplatesSelector;var event_type="";if(typeof event_data.get_type=="function")
event_type=event_data.get_type();else if(event_id)
event_type=Wialon.get_item(event_id).get_type();else
event_type=event_data;var object_changed=false;var report_changed=false;for(var i in mod.reports_types){var rtype=mod.reports_types[i];if(rtype&&typeof rtype.object_update_type!="undefined"&&rtype.object_update_type==event_type){object_changed=true;rtype.objects=null;}}
if(event_type=="avl_resource"&&event_data&&event_data.repu){report_changed=true;mod.update_report_templates();}
if(object_changed||report_changed)
mod.update_gui_clients(object_changed,report_changed);},attach_gui_client:function(report_select,object_select,report_edit,object_edit,filters){if(typeof report_select=="undefined"||typeof object_select=="undefined")
return 0;for(var i=0;i<this.gui_clients.length;i++){if(this.gui_clients[i].report_select==report_select)
this.gui_clients[i]=null;}
var gui_client={};gui_client.report_select=report_select;gui_client.object_select=object_select;gui_client.filters=filters;if(typeof report_edit!="undefined")
gui_client.report_edit=report_edit;if(typeof object_edit!="undefined")
gui_client.object_edit=object_edit;gui_client.last_selected_report={};gui_client.last_selected_object={};this.gui_clients_counter++;this.gui_clients[this.gui_clients_counter]=gui_client;jQuery("#"+report_select).attr("client_id",this.gui_clients_counter).change(function(){var mod=ReportTemplatesSelector;var gui_client=mod.get_gui_client(jQuery(this).attr("client_id"));if(!gui_client)
return;var old_report_type=jQuery(this).attr("last_calc_type");var new_report_type=jQuery("option:selected",this).attr("calc_type");if(!(old_report_type&&old_report_type==new_report_type)){var objects=mod.reports_types&&mod.reports_types[new_report_type]?mod.reports_types[new_report_type].get_objects():null;jQuery("#"+object_select).empty();jQuery(this).attr("last_calc_type",new_report_type);if(!objects)
return;var user_creator=null;if(filters&&filters.report_item)
user_creator=filters.report_item.get_user_creator();for(var i=0;i<objects.length;i++){var object=objects[i];if(!object)
continue;var item=Wialon.get_item(object.id);if(!item)
item=object.item;if(!item||!user_creator||(item&&item.get_user_access(user_creator)>=Wialon.access_level("view")))
jQuery("#"+object_select).append("<option value='"+object.id+"'>"+object.name+"</option>");}}
var last_sel_obj=jQuery(this).attr(new_report_type);if(last_sel_obj)
jQuery("#"+object_select).val(last_sel_obj);jQuery(this).attr(new_report_type,jQuery("#"+object_select).val());jQuery(this).attr("last_rep",jQuery(this).val());}).keyup(function(){jQuery(this).change();});jQuery("#"+object_select).attr("client_id",this.gui_clients_counter).change(function(){var id=jQuery(this).val();if(!id)
return;var old_report_type=jQuery("#"+report_select).attr("last_calc_type");if(old_report_type)
jQuery("#"+report_select).attr(old_report_type,id);}).keyup(function(){jQuery(this).change();});if(typeof report_edit!="undefined")
jQuery("#"+report_edit).attr("client_id",this.gui_clients_counter).click(function(){var mod=ReportTemplatesSelector;var gui_client=mod.get_gui_client(jQuery(this).attr("client_id"));if(!gui_client)
return;var mod_rdlg=WebCMS.get_module("report_templates_dialog");if(mod_rdlg){var ids=jQuery("#"+gui_client.report_select).val();if(!ids)
return;ids=ids.split("_");var report=Wialon.get_item(ids[0]);if(!report)
return;var res_id=report.get_id();mod_rdlg.show(res_id,ids[1],ids[1]);}});if(typeof object_edit!="undefined")
jQuery("#"+object_edit).attr("client_id",this.gui_clients_counter).click(function(){var mod=ReportTemplatesSelector;var gui_client=mod.get_gui_client(jQuery(this).attr("client_id"));if(!gui_client)
return;var rtype_name=jQuery("#"+report_select+" [selected]").attr("calc_type");var rtype=mod.reports_types[rtype_name];if(!rtype)
return;var object_id=jQuery("#"+object_select).val();if(!object_id)
return;if(typeof rtype.object_edit_fn=="function")
rtype.object_edit_fn(object_id);else if(typeof rtype.object_edit_fn=="string"){var item=Wialon.get_item(object_id);var mod_idlg=WebCMS.get_module("items_dlg");if(mod_idlg)
mod_idlg.show(rtype.object_edit_fn,item,0);}});this.initialize_reports(gui_client);return this.gui_clients_counter;},initialize_reports:function(gui_client){var html="";var last_sel_report=jQuery("#"+gui_client.report_select).attr("last_rep");var filters=gui_client.filters;var reports=this.report_templates;for(var j=0;j<reports.length;j++){if(filters&&filters.report_item&&reports[j].item.get_id()!=filters.report_item.get_id())
continue;html+="<option value='"+reports[j].item.get_id()+"_"+reports[j].object.get_id()+"' calc_type='"+reports[j].object.get_calc_type()+"'>";html+=reports[j].object.get_name()+"</option>";}
jQuery("#"+gui_client.report_select).html(html).val(last_sel_report);jQuery("#"+gui_client.report_select).change();},detach_gui_client:function(id){this.gui_clients[id]=null;},get_gui_client:function(id){return this.gui_clients[id];},update_gui_clients:function(object_changed,report_changed){for(var id in this.gui_clients){if(!this.gui_clients[id])
continue;var client=this.gui_clients[id];if(report_changed)
this.initialize_reports(client);if(object_changed){jQuery("#"+client.report_select).removeAttr("last_calc_type");jQuery("#"+client.report_select).change();}}},select_report:function(id,res_id,rep_id){var gui_client=this.gui_clients[id];if(!gui_client)
return;jQuery("#"+gui_client.report_select).val(res_id+"_"+rep_id);jQuery("#"+gui_client.report_select).change();},select_object:function(id,item_id,obj_id){var gui_client=this.gui_clients[id];if(!gui_client||!item_id||!item_id.toString().length)
return;if(parseInt(obj_id))
jQuery("#"+gui_client.object_select).val(item_id+"_"+obj_id);else
jQuery("#"+gui_client.object_select).val(item_id);jQuery("#"+gui_client.object_select).change();},get_selection:function(id){var gui_client=this.get_gui_client(id);if(!gui_client)
return null;var result=new Object;var rep_id=jQuery("#"+gui_client.report_select).val();if(!rep_id)
return null;rep_id=rep_id.split("_");if(rep_id.length!=2)
return null;var res=Wialon.get_item(rep_id[0]);if(!res)
return null;result.report_item=res;result.report_item_id=rep_id[0];result.report_id=rep_id[1];if(jQuery("#"+gui_client.object_select).size()){var obj_id=jQuery("#"+gui_client.object_select).val();if(!obj_id||!obj_id.length)
return null;obj_id=obj_id.split("_");result.object_id=obj_id.length?obj_id[0]:"";result.object_prop_id=obj_id.length>1?obj_id[1]:0;}
result.report_item_guid=res.get_guid();var obj=Wialon.get_item(result.object_id);if(!obj)
result.object_guid="";else
result.object_guid=obj.get_guid();return result;},get_report_objects:function(id){var gui_client=this.get_gui_client(id);if(!gui_client)
return null;var report_type=jQuery("#"+gui_client.report_select+" option:selected").attr("calc_type");var objects=this.reports_types&&this.reports_types[report_type]?this.reports_types[report_type].get_objects():null;if(!objects||!objects.length)
return null;var ret_objects=new Array;var user_creator=null;var filters=gui_client.filters;if(filters&&filters.report_item){user_creator=filters.report_item.get_user_creator();for(var i=0;i<objects.length;i++){var object=objects[i];if(!object)
continue;var item=Wialon.get_item(object.id);if(!item)
item=object.item;if(!item||!user_creator||(item&&item.get_user_access(user_creator)>=Wialon.access_level("view")))
ret_objects.push({id:object.sid,name:object.name});}}
return ret_objects;}});var GeozonesReport=Base.extend({constructor:null,type:"geozone",translation:{},get_type:function(){return"geozone";},on_init:function(){this.name=this.translation.name;},reports:[],get_reports:function(rtype){return rtype.reports;},object_update_type:"avl_resource",objects:null,get_objects:function(rtype){if(rtype.objects)
return rtype.objects;rtype.objects=[];var resources=Wialon.filter_items(Wialon.get_resources(),"view");if(resources&&resources.length){for(var i=0;i<resources.length;i++){var res=resources[i];var pl=res.get_plugin("avl_zones_library");if(pl){var rcol=pl.get_zones();for(var j=0;j<rcol.length;j++){var object={};object.item=res;object.object=rcol[j];rtype.objects.push(object);}}}}
return rtype.objects;}});var GeozonesGroupsReport=Base.extend({constructor:null,type:"geozones_group",translation:{},get_type:function(){return"geozones_group";},on_init:function(){this.name=this.translation.name;},reports:[],get_reports:function(rtype){return rtype.reports;},object_update_type:"avl_resource",objects:null,get_objects:function(rtype){if(rtype.objects)
return rtype.objects;rtype.objects=[];var resources=Wialon.filter_items(Wialon.get_resources(),"view");if(resources&&resources.length){for(var i=0;i<resources.length;i++){var res=resources[i];var dpl=res.get_plugin("avl_report_data");if(!dpl)
continue;var zgroups=dpl.get_zones_groups();if(!zgroups)
continue;for(var j=0;j<zgroups.length;j++){if(!zgroups[j])
continue;var object={};object.item=res;object.object=zgroups[j];rtype.objects.push(object);}}}
return rtype.objects;},object_edit_fn:function(object){if(!object||!object.item)
return;var opt_id=object.item.get_id()+"_"+object.object.get_id();var mod_wiz=WebCMS.get_module("wizard_dlg");if(mod_wiz)
mod_wiz.show("/zones_group/zones_group.html",{opt_id:opt_id});}});WebCMS.register_module(ReportObjectUnitType);WebCMS.register_module(ReportObjectUnitGroupsType);WebCMS.register_module(ReportObjectUserType);ReportTemplatesSelector.register_object_type(ReportObjectUnitType);ReportTemplatesSelector.register_object_type(ReportObjectUnitGroupsType);ReportTemplatesSelector.register_object_type(ReportObjectUserType);WebCMS.register_module(ReportTemplatesSelector);var ReportResultTableCMSModule=Base.extend({constructor:null,translation:{},report:null,report_plugin:null,msgs_per_page:[25,50,100,200,500],report_result:null,wait_hidden:false,rweb:"",next_img_src:"/report_result_table/next.gif",last_img_src:"/report_result_table/last.gif",prev_img_src:"/report_result_table/prev.gif",first_img_src:"/report_result_table/first.gif",globe_img_src:"/report_result_table/globe.png",hide_img_url:"/report_result_table/hide.png",show_img_url:"/report_result_table/show.png",none_img_url:"/report_result_table/none.png",none16_img_url:"/report_result_table/none16.png",report_obj:null,get_type:function(){return"report_result_table";},get_unit:function(){if(!this.report_obj)
return null;if(typeof this.report_obj.get_type!='undefined'&&this.report_obj.get_type()=="avl_unit")
return this.report_obj;return null;},set_callback_func:function(func){this.callback_func=func;},is_busy:function(){return this.wait_hidden;},generate:function(res_id,report_id,object_id,object_prop_id,interval){if(!res_id||!report_id)
return false;this.report_obj=null;var resource=Wialon.get_item(res_id);var mod_ust=WebCMS.get_module("user_settings_time");if(!resource||!mod_ust)
return false;var rpt_plugin=resource.get_plugin("avl_report_templates");if(!rpt_plugin)
return false;var report=rpt_plugin.get_report_template(report_id);if(!report)
return false;this.wait(true,true);this.report_plugin=rpt_plugin;this.resource=resource;this.report_obj=Wialon.get_item(object_id);if(!rpt_plugin.generate_report(report,object_id,object_prop_id,interval,WebCMS.get_lang(),mod_ust.get_tz_dst_offset(),this.on_generate_done,null)){this.wait(false);return false;}
return true;},on_generate_done:function(res,rres,ren,rweb,cparam){var mod=ReportResultTableCMSModule;mod.wait(false);if(!res){mod.report_result=null;return;}
mod.rweb=rweb;WialonWebObjects.add_name(rweb);mod.renderers=new Array;mod.tables=new Array;for(var i=0;i<rres.tables.length;i++){var table=new Object;table.header=rres.tables[i].h;table.rows_count=rres.tables[i].r;table.rows=new Array;table.rows_detail=new Object;table.msgs=new Array;table.total=rres.tables[i].t;table.flags=rres.tables[i].f;table.rendered=rres.msgs_rendered&&table.flags&0x80;table.msg_from=0;table.msgs_per_page=mod.msgs_per_page[1];mod.tables.push(table);}
if(rres.stats&&rres.stats.length){mod.stats_table=new Object;mod.stats_table.flags=0;mod.stats_table.rows=rres.stats;mod.stats_table.rows_count=mod.stats_table.rows.length;mod.stats_table.msg_from=0;mod.stats_table.msgs_per_page=mod.msgs_per_page[1];}
mod.charts=new Object;mod.report_result=rres;if(typeof mod.callback_func=="function")
mod.callback_func(rres,ren);},show_error:function(msg){if(msg)
alert(msg);this.wait(false);},show_table:function(table_index,msg_from,msg_to){this.clear_table(false,true);var rres=this.report_result;if(!rres){this.show_error(this.translation.report_empty);return false;}
this.current_table_index=table_index;var table=null;if(table_index==-1)
table=this.stats_table;else
table=this.tables[table_index];if(!table){this.show_error(this.translation.invalid_table);return;}
var all_rows_downloaded=true;if(table.rows.length!=table.rows_count){for(var i=0;i<table.rows_count;i++)
table.rows.push(null);all_rows_downloaded=false;}
if(!msg_from&&!msg_to){if(table.msg_from){msg_from=table.msg_from;msg_to=table.msgs_per_page==-1?table.rows_count:table.msg_from+table.msgs_per_page;}else{msg_from=0;msg_to=table.msgs_per_page==-1?table.rows_count:table.msgs_per_page-1;}}
if(msg_from>=table.rows_count){this.show_error(this.translation.out_of_range);return;}
if(msg_from<0)
msg_from=0;if(msg_to>=table.rows_count)
msg_to=table.rows_count-1;var message_missing_from=-1;var missing_intervals=new Array;for(var i=msg_from;i<=msg_to;i++){if(!table.rows[i]&&message_missing_from==-1)
message_missing_from=i;else if(table.rows[i]&&message_missing_from!=-1){missing_intervals.push({from:message_missing_from,to:i});message_missing_from=-1;}}
if(message_missing_from!=-1)
missing_intervals.push({from:message_missing_from,to:msg_to});this.current_table=table;if(missing_intervals.length){this.wait(true);this.report_plugin.get_report_result_rows(this.rweb,table_index,missing_intervals,function(res,tres,cparam){var mod=ReportResultTableCMSModule;mod.wait(false);if(!res||!mod.current_table){mod.show_error(mod.translation.downloading_error);return;}
var d=mod.current_table.detailed?1:0;for(var i=0;i<tres.length;i++){var interval=tres[i];var from=interval.f;var to=from+interval.msgs.length;for(var j=from;j<to;j++){mod.current_table.rows[j]=interval.msgs[j-from];if(!d)
d=interval.msgs[j-from].d;}}
if(!mod.current_table.detailed)
mod.current_table.detailed=d;mod.show_rows(cparam.from,cparam.to);},{from:msg_from,to:msg_to});}else
this.show_rows(msg_from,msg_to);},show_attachment:function(attach_id){this.clear_table(true);var h=jQuery("#panel_report_result_target").height()-30;jQuery("#report_result_chart_td").chart({url:"/report_result_table/get_attachment.html",resource_id:this.resource.get_id(),attach_id:attach_id,rweb:ReportResultTableCMSModule.rweb,on_loadimg:function(){ReportResultTableCMSModule.wait();ReportResultTableCMSModule.resize();},height:h,translation:this.translation});},get_row_html:function(table,row,pos,sub_pos){var div1="";var div2="";if(jQuery.browser.msie&&jQuery.browser.version==7){div1="<div>";div2="</div>"}
var html="<tr pos='"+pos+"' sub_pos='"+sub_pos+"'";if(sub_pos!=-1)
html+=" class='report_result_body_subrow'>";else
html+=">";var cells=row.c?row.c:row;if(table.rendered)
html+="<td class='report_result_body_trip'><img src='"+this.globe_img_src+"'/></td>";if(table.detailed){if(sub_pos==-1){if(row.opened)
html+="<td class='report_result_body_detail report_result_body_detail_hide'><img src='"+this.hide_img_url+"'/></td>";else{if(row.d)
html+="<td class='report_result_body_detail'><img src='"+this.show_img_url+"'/></td>";else
html+="<td class='report_result_body_detail'><img src='"+this.none_img_url+"'/></td>";}}else
html+="<td class='report_result_body_detail' skip='1'><img src='"+this.none_img_url+"'/></td>";}
for(var j=0;j<cells.length;j++){var cell=cells[j];if(!cell){html+="<td>-----</td>";continue;}
html+="<td";if(typeof cell=="string")
html+=">"+div1+(cell.length>200?cell.substr(0,200)+"...":cell);else
html+=" lat='"+cell.y+"' lon='"+cell.x+"' class='report_result_table_pointer'>"+(cell.t.length>200?cell.t.substr(0,200)+"...":cell.t);html+=div2+"</td>";}
html+="</tr>";return html;},show_rows:function(from,to){var table=this.current_table;if(!table||!table.rows||!table.rows.length){show_error(this.translation.report_empty);return;}
this.wait(true);var div1="";var div2="";if(jQuery.browser.msie&&jQuery.browser.version==7){div1="<div>";div2="</div>"}
table.msg_from=from;table.msg_to=to;var clr=(this.current_table_index==-1)?"report_result_body_table_stat":"report_result_body_table";var html="<td><div class='report_result_body_target'><table class='"+clr+"'>";var ii=0;for(var i=from;i<=to;i++){var row=table.rows[i];if(!row)
continue;html+=this.get_row_html(table,row,i,-1);if(row.opened)
for(var j=0;j<row.subrows.length;j++)
html+=this.get_row_html(table,row.subrows[j],i,j);}
html+="</table></div></td>";jQuery("#report_result_body").html(html);if(table.header){html="<td><div class='report_result_header_target'><table class='report_result_header_table'><tr>";if(table.rendered)
html+="<td class='report_result_body_none'><img src='"+this.none16_img_url+"'/></td>";if(table.detailed)
html+="<td class='report_result_body_none'><img src='"+this.none_img_url+"'/></td>";for(var i=0;i<table.header.length;i++)
html+="<td>"+div1+table.header[i]+div2+"</td>";html+="</tr></table></div></td>";jQuery("#report_result_header").html(html);}
if(table.total){html="<td><div class='report_result_footer_target'><table class='report_result_footer_table'><tr>";if(table.rendered)
html+="<td class='report_result_body_none'><img src='"+this.none16_img_url+"'/></td>";if(table.detailed)
html+="<td class='report_result_body_none'><img src='"+this.none_img_url+"'/></td>";for(var i=0;i<table.total.length;i++)
html+="<td>"+div1+(table.total[i].length?(table.total[i].length>200?table.total[i].substr(0,200)+"...":table.total[i]):"-----")+div2+"</td>";html+="</tr></table></div></td>";jQuery("#report_result_footer").html(html);}
this.bind_cell_events("#report_result_body tr");this.create_table_header(table);this.wait(false);},bind_cell_events:function(tr){jQuery("td",jQuery(tr)).click(function(event){if(jQuery(this).hasClass("report_result_body_trip")){var mod=ReportResultTableCMSModule;if(jQuery(this).hasClass("report_result_body_trip_checked")){jQuery(this).removeClass("report_result_body_trip_checked");mod.hide_trip();return;}
jQuery(".report_result_body_trip_checked").removeClass("report_result_body_trip_checked");jQuery(this).addClass("report_result_body_trip_checked");var pos=parseInt(jQuery(this).parent().attr("pos"));var sub_pos=parseInt(jQuery(this).parent().attr("sub_pos"));mod.show_trip(pos,sub_pos);}else if(jQuery(this).hasClass("report_result_body_detail")){if(jQuery(this).attr("skip"))
return;var mod=ReportResultTableCMSModule;var pos=parseInt(jQuery(this).parent().attr("pos"));mod.show_sub_rows(pos,jQuery(this).hasClass("report_result_body_detail_hide"));}else if(jQuery(this).hasClass("report_result_table_pointer")){var lat=parseFloat(jQuery(this).attr("lat"));var lon=parseFloat(jQuery(this).attr("lon"));var text=jQuery(this).html();var mod=WebCMS.get_module("report_result_map");if(mod)
mod.center(lat,lon,text);};});},show_sub_rows:function(row_index,hide){var row=this.current_table.rows[row_index];if(!row)
return;var td=jQuery("#report_result_body tr[pos='"+row_index+"'] .report_result_body_detail");if(hide){this.wait(true);row.opened=false;jQuery("#report_result_body tr[pos='"+row_index+"'][sub_pos!='-1']").remove();jQuery("img",td).attr("src",this.show_img_url);td.removeClass("report_result_body_detail_hide");td.addClass("report_result_body_detail_show");this.create_table_header(this.current_table);this.wait(false);return;}
var subrows=row.subrows;if(subrows&&subrows.length){this.wait(true);row.opened=true;var prev_tr=jQuery("#report_result_body tr[pos='"+row_index+"']");for(var i=0;i<subrows.length;i++){var html=this.get_row_html(this.current_table,subrows[i],row_index,i);prev_tr.after(html);prev_tr=jQuery("#report_result_body tr[pos='"+row_index+"'][sub_pos='"+i+"']");this.bind_cell_events(prev_tr);}
jQuery("img",td).attr("src",this.hide_img_url);td.addClass("report_result_body_detail_hide");td.removeClass("report_result_body_detail_show");this.create_table_header(this.current_table);this.wait(false);return;}
this.wait(true);this.report_plugin.get_report_result_subrows(this.rweb,this.current_table_index,row_index,function(res,tres,cparam){var mod=ReportResultTableCMSModule;mod.wait(false);if(!res){mod.show_error(mod.translation.downloading_error);return;}
mod.current_table.rows[row_index].subrows=new Array;var srows=mod.current_table.rows[row_index].subrows;for(var i=0;i<tres.length;i++)
srows.push(tres[i]);mod.show_sub_rows(row_index,hide);});},create_table_header:function(table){var ie7=(jQuery.browser.msie&&jQuery.browser.version==7);var widths=new Array;jQuery("#report_result_body table tr:eq(0) td").each(function(){widths.push(jQuery(this).width());});var pos=0;jQuery("#report_result_header table tr:eq(0) td").each(function(){if(jQuery(this).width()>widths[pos])
widths[pos]=jQuery(this).width();pos++;});pos=0
jQuery("#report_result_footer table tr:eq(0) td").each(function(){if(jQuery(this).width()>widths[pos])
widths[pos]=jQuery(this).width();pos++;});pos=0;jQuery("#report_result_body table tr:eq(0) td").each(function(){if(!ie7){jQuery(this).css("width",widths[pos]);jQuery(this).css("max-width",widths[pos]);jQuery(this).css("min-width",widths[pos]);}else{jQuery("div",this).css("width",widths[pos]);jQuery("div",this).css("max-width",widths[pos]);jQuery("div",this).css("min-width",widths[pos]);}
pos++;});pos=0;jQuery("#report_result_header table tr:eq(0) td").each(function(){if(!ie7){jQuery(this).css("width",widths[pos]);jQuery(this).css("max-width",widths[pos]);jQuery(this).css("min-width",widths[pos]);}else{jQuery("div",this).css("width",widths[pos]);jQuery("div",this).css("max-width",widths[pos]);jQuery("div",this).css("min-width",widths[pos]);}
pos++;});pos=0;jQuery("#report_result_footer table tr:eq(0) td").each(function(){if(!ie7){jQuery(this).css("width",widths[pos]);jQuery(this).css("max-width",widths[pos]);jQuery(this).css("min-width",widths[pos]);}else{jQuery("div",this).css("width",widths[pos]);jQuery("div",this).css("max-width",widths[pos]);jQuery("div",this).css("min-width",widths[pos]);}
pos++;});var curr_page=0;var total_pages=1;var msg_from=0;var msg_to=table.rows_count;if(table.msgs_per_page!=-1){curr_page=parseInt(table.msg_from/table.msgs_per_page);total_pages=table.rows_count%table.msgs_per_page?parseInt(table.rows_count/table.msgs_per_page)+1:parseInt(table.rows_count/table.msgs_per_page);msg_from=table.msg_from;msg_to=msg_from+table.msgs_per_page;if(msg_to>table.rows_count)
msg_to=table.rows_count;}
jQuery("#report_result_toolbar_page").val(curr_page+1);jQuery("#report_result_toolbar_pages").html(sprintf(this.translation.pages_descr,total_pages));jQuery("#report_result_toolbar_messages").html(sprintf(this.translation.msgs_descr,msg_from+1,msg_to,table.rows_count));jQuery("#report_result_msgs_per_page").val(table.msgs_per_page);this.resize();},show_trip:function(row_index,subrow_index){var row=this.current_table.rows[row_index];if(!row)
return;var msg_from=row.i1;var msg_to=row.i2;var tm_from=row.t1;var tm_to=row.t2;if(subrow_index!=-1){var subrow=row.subrows[subrow_index];if(!subrow)
return;msg_from=subrow.i1;msg_to=subrow.i2;tm_from=subrow.t1;tm_to=subrow.t2;}
var msgs=this.current_table.msgs;var trip=new Array;for(var i=0;i<msgs.length;i++){var from=msgs[i].from;var to=msgs[i].to;if(from<=msg_from&&to>=msg_to){from=msg_from-from;to=msg_from-msg_to;for(var j=msg_from;j<=to;j++)
trip.push(msgs[i].msgs[j]);}}
if(trip.length){var mod=WebCMS.get_module("report_result_map");if(mod)
mod.show_trip(trip);return;}
this.wait(true);this.report_plugin.get_row_trip(this.rweb,tm_from,tm_to,function(res,coords,cparam){var mod=ReportResultTableCMSModule;mod.wait(false);if(!res){mod.show_error(mod.translation.downloading_error);return;}
var msgs=new Object;msgs.from=cparam.msg_from;msgs.to=cparam.msg_to;msgs.msgs=new Array;for(var i=0;i<coords.length;i+=2)
msgs.msgs.push({x:coords[i],y:coords[i+1]});mod=ReportResultTableCMSModule;mod.current_table.msgs.push(msgs);mod=WebCMS.get_module("report_result_map");if(mod)
mod.show_trip(msgs.msgs);},{msg_from:msg_from,msg_to:msg_to});},hide_trip:function(){var mod=WebCMS.get_module("report_result_map");if(mod)
mod.hide_trip();},change_msg_per_page:function(count){if(!this.current_table)
return;this.current_table.msgs_per_page=count;if(count==-1)
count=this.current_table.rows_count-1;else
count--;this.show_table(this.current_table_index,0,count);},wait:function(hide,solid){if(ReportResultTableCMSModule.wait_hidden==hide)
return;if(hide){if(!solid)
jQuery("#report_result_target").append("<div id='report_result_table_wait_div' style='position: absolute; display: block; left: 0px; top: 0px; width: 100%; height: 100%; background: #E5E8E9; opacity:0.35; filter:alpha(opacity=35);cursor: wait;'><table width='100%' height='100%'><tr><td style='color: #000000; font-size: 12px; text-align: center; vertical-align: middle;'><img src='/skin/images/flexigrid/wait.gif'/><br><b>"+ReportResultTableCMSModule.translation.procmsg+"</b></td></tr></table></div>");else
jQuery("#report_result_target").append("<div id='report_result_table_wait_div' style='position: absolute; display: block; left: 0px; top: 0px; width: 100%; height: 100%; background: #E5E8E9; cursor: wait;'><table width='100%' height='100%'><tr><td style='color: #000000; font-size: 12px; text-align: center; vertical-align: middle;'><img src='/skin/images/flexigrid/wait.gif'/><br><b>"+ReportResultTableCMSModule.translation.procmsg+"</b></td></tr></table></div>");}else{jQuery("#report_result_table_wait_div").remove();}
ReportResultTableCMSModule.wait_hidden=hide;},on_init:function(){jQuery("#report_result_target").addClass("report_result_target");var html="<table style='width: 100%; height: 100%'>";html+="<tr id='report_result_header'><td/></tr>";html+="<tr id='report_result_body' class='report_result_body'><td/></tr>";html+="<tr id='report_result_footer'><td/></tr>";html+="<tr id='report_result_chart' style='display: none'><td/></tr>";html+="<tr id='report_result_toolbar'><td/></tr></table>";jQuery("#report_result_target").html(html);this.create_navigation_toolbar();jQuery("#panel_report_result_target").resize(function(){ReportResultTableCMSModule.resize();});this.clear_all();},resize:function(){if(wialon_web_mode!=WIALON_WEB_MODE_REPORTS){wialon_update_reports=true;return;}
var h=jQuery("#report_result_target").height();if(jQuery("#report_result_chart").css("display")!="none"){h-=30;if(jQuery("#report_result_target").width()<jQuery("#report_result_chart").width())
h-=12;jQuery("#report_result_chart_td").chartResize({height:h});return;}
var hdr_h=jQuery(".report_result_header_target").outerHeight();if(typeof hdr_h=="undefined"||hdr_h==null)
hdr_h=0;var ft_h=jQuery(".report_result_footer_target").outerHeight();if(typeof ft_h=="undefined"||ft_h==null)
ft_h=0;var tb_h=jQuery(".report_result_toolbar_target").outerHeight();if(typeof tb_h=="undefined"||tb_h==null)
tb_h=0;jQuery("#report_result_header").height(hdr_h);jQuery("#report_result_footer").height(ft_h);jQuery("#report_result_toolbar").height(tb_h);var scroll_h=0;if(jQuery("#report_result_target").width()<jQuery("#report_result_body").width())
scroll_h=28;var body_h=h-(tb_h+hdr_h+ft_h+scroll_h);jQuery(".report_result_body_target").height(body_h);jQuery("#report_result_body").height(body_h);},clear_all:function(){this.clear_table();this.current_table=null;this.current_table_index=null;this.report_result=null;WialonWebObjects.delete_name(this.rweb);this.report_obj=null;this.rweb="";this.tables=null;;this.stats_table=null;jQuery("#report_result_toolbar").css("display","none");},create_navigation_toolbar:function(){var html="<td valign='bottom'><div class='report_result_toolbar_target'><table id='report_result_toolbar_table' class='report_result_toolbar_table'>";html+="<tr><td>"+this.translation.msgs_per_page+":&nbsp;<select id='report_result_msgs_per_page'>";for(var i=0;i<this.msgs_per_page.length;i++)
html+="<option value='"+this.msgs_per_page[i]+"'>"+(this.msgs_per_page[i]==-1?this.translation.msgs_all:this.msgs_per_page[i])+"</option>";html+="</select></td>";html+="<td><div class='nav_btn'><img id='report_result_toolbar_first' type='0' src='"+this.first_img_src+"'/></div></td>";html+="<td><div class='nav_btn'><img id='report_result_toolbar_prev' type='1' src='"+this.prev_img_src+"'/></div></td>";html+="<td>"+this.translation.page+"&nbsp;";html+="<input type='text' id='report_result_toolbar_page' style='width: 70px'/>&nbsp;";html+="<span id='report_result_toolbar_pages'></span></td>";html+="<td><div class='nav_btn'><img id='report_result_toolbar_next' type='2' src='"+this.next_img_src+"'/></div></td>";html+="<td><div class='nav_btn'><img id='report_result_toolbar_last' type='3' src='"+this.last_img_src+"'/></div></td>";html+="<td><span id='report_result_toolbar_messages'></span></td></tr></table></div></td>";jQuery("#report_result_toolbar").html(html);jQuery("#report_result_msgs_per_page").change(function(){ReportResultTableCMSModule.change_msg_per_page(parseInt(jQuery(this).val()));});jQuery("#report_result_toolbar_table img").click(function(){var mod=ReportResultTableCMSModule;var type=parseInt(jQuery(this).attr("type"));var table=mod.current_table;if(!table||table.msgs_per_page==-1)
return;if(type==0&&table.msg_from!=0){mod.show_table(mod.current_table_index,0,table.msgs_per_page);}else if(type==1&&table.msg_from!=0){var curr_page=parseInt(table.msg_from/table.msgs_per_page);if(!curr_page)
return;var msg_from=(curr_page-1)*table.msgs_per_page;mod.show_table(mod.current_table_index,msg_from,msg_from+table.msgs_per_page-1);}else if(type==2){var msg_from=table.msg_from+table.msgs_per_page;if(msg_from>=table.rows_count)
msg_from=0;mod.show_table(mod.current_table_index,msg_from,msg_from+table.msgs_per_page-1);}else{var msg_from=table.rows_count%table.msgs_per_page?parseInt(table.rows_count/table.msgs_per_page)*table.msgs_per_page:(parseInt(table.rows_count/table.msgs_per_page)-1)*table.msgs_per_page;mod.show_table(mod.current_table_index,msg_from,msg_from+table.msgs_per_page-1);}});jQuery("#report_result_toolbar_page").keydown(function(e){var keynum=0;if(window.event)
keynum=e.keyCode;else if(e.which)
keynum=e.which;if(keynum!=13)
return;var mod=ReportResultTableCMSModule;var table=mod.current_table;if(!table||table.msgs_per_page==-1)
return;var val=parseInt(jQuery(this).val());if(isNaN(val))
return;jQuery(this).val(val);var msg_from=(val-1)*table.msgs_per_page;if(msg_from>table.rows_count)
return
mod.show_table(mod.current_table_index,msg_from,msg_from+table.msgs_per_page-1);});},clear_table:function(show_chart,keep_page){if(!show_chart){jQuery("#report_result_header").html("<td/>").css("display","");jQuery("#report_result_chart").html("<td/>").css("display","none");jQuery("#report_result_body").html("<td/>").css("display","");jQuery("#report_result_footer").html("<td/>").css("display","");jQuery("#report_result_toolbar").css("display","");if(!keep_page){jQuery("#report_result_toolbar_page").val(0);jQuery("#report_result_toolbar_pages").html(sprintf(this.translation.pages_descr,0));jQuery("#report_result_toolbar_messages").html(sprintf(this.translation.msgs_descr,0,0,0));}}else{jQuery("#report_result_header").html("<td/>").css("display","none");jQuery("#report_result_chart").html("<td id='report_result_chart_td'/>").css("display","");jQuery("#report_result_body").html("<td/>").css("display","none");jQuery("#report_result_footer").html("<td/>").css("display","none");jQuery("#report_result_toolbar").css("display","none");}
this.hide_trip();}});var reports_col_info={};WebCMS.register_module(ReportResultTableCMSModule);var ReportResultMapCMSModule=Base.extend({constructor:null,translation:{},map:null,markers_layer:null,marker:null,marker_img_url:"/report_result_map/marker.gif",callback_func:null,messages_layer:null,marker_code:0,default_style:{fillColor:"#FF0000",fillOpacity:0.8,hoverFillColor:"#FFFFFF",hoverFillOpacity:1,strokeColor:"#FF0000",strokeOpacity:1,strokeWidth:8,strokeLinecap:"round",hoverStrokeColor:"#FFFFFF",hoverStrokeOpacity:0.5,hoverStrokeWidth:4,pointRadius:2,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted"},trip_layer:null,get_type:function(){return"report_result_map";},get_map:function(){return this.map;},get_renderer:function(){return(this.messages_layer?this.messages_layer.renderer:null);},set_callback_func:function(func){this.callback_func=func;},set_map_bounds:function(bounds,force){if(!bounds||!this.map)
return false;bounds.transform(this.map.displayProjection,this.map.getProjectionObject());if(bounds.left==bounds.right){var center=bounds.getCenterLonLat();if(this.map.getCenter()&&!force)
this.map.panTo(center);else
this.map.setCenter(center,MonitoringMapCMSModule.default_pos.zoom);return true;}
if(force||!this.map.getExtent().containsBounds(bounds)){var center=bounds.getCenterLonLat();var width=bounds.getWidth()*2.0/3.0;var height=bounds.getHeight()*2.0/3.0;bounds.extend(new OpenLayers.LonLat(center.lon-width,center.lat-height));bounds.extend(new OpenLayers.LonLat(center.lon+width,center.lat+height));this.map.zoomToExtent(bounds);}
return true;},destroy:function(){if(this.marker){this.marker.destroy();this.marker=null;}
if(this.markers_layer){this.markers_layer.destroy();this.messages_layer=null;}
if(this.messages_layer){this.messages_layer.destroy();this.messages_layer=null;}
if(this.map){this.map.destroy();this.map=null;}},prepare:function(){if(jQuery("#monitoring_map_target").size()==0)
return;if(!this.map){var mod_map=WebCMS.get_module("monitoring_map");if(!mod_map)
return;this.map=mod_map.get_map();if(!this.map)
return;this.markers_layer=new OpenLayers.Layer.Markers("Reports Markers",{displayInLayerSwitcher:false});this.map.addLayer(this.markers_layer);}},map_init:function(renderer){this.prepare();var checked=jQuery("#sub_menu_show_reports").attr("checked")?true:false;if(!checked){jQuery("#sub_menu_show_reports").attr("checked",true);jQuery("#sub_menu_show_reports").click();jQuery("#sub_menu_show_reports").attr("checked",true);}
this.destroy_marker();if(!renderer||typeof renderer=="undefined"||renderer.name=="")
return;var messages_layer=new ImageRendererLayer;if(!messages_layer)
return false;if(!messages_layer.init_inline(this.map,"Reports Layer",renderer,function(result,layer,cparam){if(!result)
return;ReportResultMapCMSModule.on_layer_created(layer,cparam);},renderer)){return false;}
return true;},clear:function(){this.destroy_marker();if(this.messages_layer){this.messages_layer.destroy();this.messages_layer=null;}
this.hide_trip();},on_layer_created:function(layer,renderer){this.clear();this.messages_layer=layer;var ren_bounds=renderer.bounds;if(ren_bounds&&ren_bounds.length==4&&(ren_bounds[0]&&ren_bounds[1]&&ren_bounds[2]&&ren_bounds[3])){var ol_bounds=new OpenLayers.Bounds(ren_bounds[1],ren_bounds[0],ren_bounds[3],ren_bounds[2]);this.set_map_bounds(ol_bounds,true);}
this.messages_layer.show();},set_map_bounds:function(bounds,force){if(!bounds||!this.map)
return false;bounds.transform(this.map.displayProjection,this.map.getProjectionObject());if(bounds.left==bounds.right){var center=bounds.getCenterLonLat();if(this.map.getCenter()&&!force)
this.map.panTo(center);else
this.map.setCenter(center,MonitoringMapCMSModule.default_pos.zoom);return true;}
if(force||!this.map.getExtent().containsBounds(bounds)){var center=bounds.getCenterLonLat();var width=bounds.getWidth()*2.0/3.0;var height=bounds.getHeight()*2.0/3.0;bounds.extend(new OpenLayers.LonLat(center.lon-width,center.lat-height));bounds.extend(new OpenLayers.LonLat(center.lon+width,center.lat+height));this.map.zoomToExtent(bounds);}
return true;},reset:function(){this.destroy_marker();},center:function(lat,lon,text){this.destroy_marker();this.prepare();this.create_marker(lat,lon,text);var lonlat=new OpenLayers.LonLat(lon,lat);lonlat.transform(this.map.displayProjection,this.map.getProjectionObject());this.map.panTo(lonlat);},center2:function(msg){this.destroy_marker();if(!msg)
return;this.center(msg.get_lat(),msg.get_lon(),"");},show_trip:function(points){if(!this.map)
this.prepare();if(!this.trip_layer){this.trip_layer=new OpenLayers.Layer.Vector("Reports trips");this.map.addLayer(this.trip_layer);this.map.setLayerIndex(this.trip_layer,0);}
if(this.feature)
this.feature.destroy();var trip_points=new Array;var bounds=null;for(var i=0;i<points.length;i++){var pt=new OpenLayers.LonLat(points[i].y,points[i].x);pt.transform(this.map.displayProjection,this.map.getProjectionObject());var new_point=new OpenLayers.Geometry.Point(pt.lon,pt.lat);trip_points.push(new_point);if(!bounds)
bounds=new OpenLayers.Bounds(points[i].y,points[i].x,points[i].y,points[i].x);else
bounds.extend(new OpenLayers.LonLat(points[i].y,points[i].x));}
var geozone_style=OpenLayers.Util.extend({},this.default_style);this.feature=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(trip_points),null,geozone_style);this.trip_layer.addFeatures([this.feature]);this.set_map_bounds(bounds,true);},hide_trip:function(){if(this.feature)
this.feature.destroy();this.feature=null;},on_init:function(){},create_marker:function(lat,lon,text){if(!this.map||!this.markers_layer)
return;var lonlat=new OpenLayers.LonLat(lon,lat);lonlat.transform(this.map.displayProjection,this.map.getProjectionObject());if(!this.marker){var size=new OpenLayers.Size(21,32);var offset=new OpenLayers.Pixel(-size.w/2,-size.h);var icon=new OpenLayers.Icon(this.marker_img_url,size,offset);this.marker=new OpenLayers.Marker(lonlat,icon);this.markers_layer.addMarker(this.marker);}else{var px=this.map.getLayerPxFromLonLat(lonlat);this.marker.moveTo(px);this.markers_layer.redraw();}
this.marker_code++;var xtm=this.marker_code;setTimeout(function(){if(ReportResultMapCMSModule.marker_code==xtm)
ReportResultMapCMSModule.destroy_marker();},4000);},destroy_marker:function(){if(!this.markers_layer||!this.marker||!this.map)
return;this.markers_layer.removeMarker(this.marker);this.marker.destroy();this.marker=null;}});WebCMS.register_module(ReportResultMapCMSModule);var JobsSendEmailSmsFuelCMSModule=Base.extend({constructor:null,img_url:"/email_sms_fuel_job/email_sms_fuel_job.png",type:"jobs_send_email_sms_fuel",translation:{},get_type:function(){return this.type;},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(job,resource){if(typeof job!="object"||typeof resource!="object")
return"";var descr=job.get_description();if(descr!="")
descr+="<br>";var action=job.get_action();if(typeof action!="object"||action.get_type()!="send_email_sms_fuel")
return"";var html="<table><thead><tr><td colspan='2' align='center'><b>"+this.translation.text+"</b><hr size='1'/></td></tr>";html+="<tr><td colspan='2' align='center'><b>"+this.translation.recipients+"</b></td></tr>";html+="<tr><td><b>"+this.translation.emails+":</b></td><td>";var mails=action.get_param("email_to").split(";");for(var i=0;i<mails.length;i++){if(!mails[i].length)
continue;html+=mails[i];if(i!=mails.length-1)
html+="<br>";}
html+="</td></tr>";html+="<tr><td><b>"+this.translation.phones+":</b></td><td>";var phones=action.get_param("phone_to").split(";");for(var i=0;i<phones.length;i++){if(!phones[i].length)
continue;html+=phones[i];if(i!=phones.length-1)
html+="<br>";}
html+="</td></tr>";html+="<tr><td colspan='1'><b>"+this.translation.last_time_done+":</b>";var job_last_time="<td>";var time=job.get_last_done_time();if(time){var mod_ust=WebCMS.get_module("user_settings_time");if(mod_ust)
job_last_time+=mod_ust.format_time(job.get_last_done_time());}else
job_last_time+=this.translation.unknown;html+=job_last_time+"</td></tr>";html+="</table>";return html;},on_init:function(){var user=Wialon.get_current_user();var mod_us=WebCMS.get_module("user_settings");if(mod_us&&user&&user.get_public_property("jobs_action_send_email_sms_fuel","")!=""){user.set_public_property("jobs_action_send_email_sms_fuel","");mod_us.store_settings();}}});WebCMS.register_module(JobsSendEmailSmsFuelCMSModule);var JobsSendEmailReportCMSModule=Base.extend({constructor:null,img_url:"/email_report_job/email_report_job.png",translation:{},get_type:function(){return"jobs_send_email_report";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(job,resource){if(typeof job!="object"||typeof resource!="object")
return"";var descr=job.get_description();if(descr!="")
descr+="<br>";var action=job.get_action();if(typeof action!="object"||action.get_type()!="send_email_report")
return"";var report_type=action.get_param("report_type");var html="<table><thead><tr><td colspan='2' align='center'><b>"+this.translation.text+"</b><hr size='1'/></td></tr>";var report_id=action.get_param("report_id");var report_guid=action.get_param("report_guid");var pl=resource.get_plugin("avl_report_templates");if(!pl){html+="<tr><td colspan='2' align='center'><b>"+this.translation.report_error+"</b></td></tr>";return html;}
var report=pl.get_report_template(report_id);if(!report){html+="<tr><td colspan='2' align='center'><b>"+this.translation.report_warning+"</b></td></tr>";return html;}
html+="<tr><td colspan='2' align='center'>"+report.get_name()+"</td></tr>";html+="<tr><td><b>"+this.translation.file_type+":</b></td><td align='left'>"+action.get_param("file_type")+"</td></tr>";html+="<tr><td><b>"+this.translation.recipients+":</b></td><td>";var mails=action.get_param("email_to").split(";");for(i=0;i<mails.length;i++){if(!mails[i].length)
continue;html+=mails[i];if(i!=mails.length-1)
html+="<br>";}
html+="</td></tr>";html+="<tr><td colspan='1'><b>"+this.translation.last_time_done+":</b>";var job_last_time="<td>";var time=job.get_last_done_time();if(time){var mod_ust=WebCMS.get_module("user_settings_time");if(mod_ust)
job_last_time+=mod_ust.format_time(job.get_last_done_time());}else
job_last_time+=this.translation.unknown;html+=job_last_time+"</td></tr>";html+="</table>";return html;},on_init:function(){var user=Wialon.get_current_user();var mod_us=WebCMS.get_module("user_settings");if(mod_us&&user&&user.get_public_property("jobs_action_send_email_report","")!=""){user.set_public_property("jobs_action_send_email_report","");mod_us.store_settings();}}});WebCMS.register_module(JobsSendEmailReportCMSModule);var NotifyReportActionCMSModule=Base.extend({constructor:null,img_evt_url:"/email_report_notification/email_report_notification.png",translation:{},get_type:function(){return"email_report_notification";},get_action_type:function(){return"email_report";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_evt_url);},get_title:function(res,nf){var col=nf.get_actions();var col2=new Array;for(var i=0;i<col.length;i++){if(col[i].get_type()==this.get_action_type()){var items=col[i].get_param("email_to").split(";");for(var j=0;j<items.length;j++)
col2.push(items[j]);}}
return sprintf("%s: %s.",this.translation.text,col2.join(", "));}});WebCMS.register_module(NotifyReportActionCMSModule);var mod_lst=WebCMS.get_module("notify_list");if(mod_lst){mod_lst.register_action(NotifyReportActionCMSModule);}
var UsersListCMSModule=Base.extend({constructor:null,translation:{},config_img_url:"/users_list/configure.png",config_none_img_url:"/users_list/configure_none.png",del_img_url:"/users_list/del.png",del_none_img_url:"/users_list/del_none.png",action_head_img_url:"/users_list/action.png",copy_img_url:"/users_list/copy.png",filter:"*",rows_array:new Array,acl_array:new Object,rows_array_hash:new Object,get_type:function(){return"users_list";},on_init:function(){Wialon.bind_event_handler("show_panel",0,function(event_type,event_id,event_data){if(event_id=="users")
UsersListCMSModule.on_display_init();});},on_display_init:function(){if(this.shown){this.make_table();return;}else
this.shown=true;var curr_user=Wialon.get_current_user();if(!curr_user)
return;var mod_icb=WebCMS.get_module("items_create_btn");if(mod_icb&&!mod_icb.show_search_ctrl)
this.filter="*";Wialon.bind_event_handler("item_created",0,function(event_type,event_id,event_data){if(event_data.get_type()=="user")
UsersListCMSModule.on_user_created(event_data);});Wialon.bind_event_handler("item_deleted",0,function(event_type,event_id,event_data){if(event_data.get_type()=="user")
UsersListCMSModule.on_user_deleted(event_data);});Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.nm!='undefined')
UsersListCMSModule.on_user_updated(Wialon.get_item(event_id));if(typeof event_data.acl!='undefined'&&event_id==Wialon.get_current_user().get_id()){for(var i in event_data.acl){var item=Wialon.get_item(i);var old_acl=UsersListCMSModule.acl_array[i];if(item&&item.get_type()=="user"&&(old_acl!=event_data.acl[i]||!old_acl)){UsersListCMSModule.acl_array[i]=event_data.acl[i];UsersListCMSModule.on_user_updated(item);}}}});this.make_table();jQuery("#users_list_target_div").attr("title","X").Tooltip({showURL:false,track_children:true,bodyHandler:function(e){if(!e)
return"";var mod=UsersListCMSModule;var id=e;if(id=="user_head_action")
return"<b>"+mod.translation.action+"</b>";else if(id.substring(0,17)=="user_list_config_")
return"<b>"+mod.translation.config+"</b>";else if(id.substring(0,15)=="user_list_copy_")
return"<b>"+mod.translation.copy+"</b>";else if(id.substring(0,14)=="user_list_del_")
return"<b>"+mod.translation.del+"</b>";return"";}}).click(function(evt){var target=evt.target;var id=target.id;if(typeof id=="undefined")
return;var arr=id.split("_");if(arr.length!=4)
return;var mod=UsersListCMSModule;if(arr[2]=="config")
mod.on_edit_user(arr[3]);else if(arr[2]=="copy")
mod.on_copy_user(arr[3]);else if(arr[2]=="del"&&jQuery(target).css("cursor")=="pointer")
mod.on_del_user(arr[3]);});},make_table:function(){var users=Wialon.get_users();this.rows_array=new Array;this.rows_array_hash=new Object;this.acl_array=new Object;this.rows_array_hash["user_list_row_header"]=this.rows_array.length;this.rows_array.push("user_list_row_header");var count=0;var cid=Wialon.get_current_user().get_id();for(var i=0;i<users.length;i++){var user=users[i];if((this.filter!="*"&&!WebCMS.compare_wildcard(user.get_name(),this.filter))||cid==user.get_id())
continue;this.rows_array_hash[user.get_id()]=this.rows_array.length;this.rows_array.push(user);this.acl_array[user.get_id()]=user.get_access_level();}
var tbl_obj=new Object();tbl_obj.get_row=this.get_row_html;tbl_obj.cols_count=4;tbl_obj.rows_count=this.rows_array.length;tbl_obj.erase=true;tbl_obj.gap=4;tbl_obj.parent_class="panel_parent";jQuery("#users_list_target").fast_table(tbl_obj);},update_list_filter:function(filter){this.filter=filter;this.make_table();},get_row_html:function(pos){var mod=UsersListCMSModule;if(pos==0){var html="<tr class='users_list_head_tr'><td id='user_head_name' align='center' width='100%'><b>"+mod.translation.users+"</b></td>";html+="<td id='user_head_action' colspan='3' align='center'><img src='"+WebCMS.get_img_url(mod.action_head_img_url)+"'/></td></tr>";return{id:"user_list_row_header",html:html};}
var user=mod.rows_array[pos];if(!user||typeof user=="undefined")
return null;var id=user.get_id();var acl=mod.acl_array[id];var html="<tr id='user_list_row_"+id+"'>";html+="<td style='width:100%' id='user_list_name_"+id+"'>"+user.get_name()+"</td>";var can_manage=acl>=Wialon.access_level("manage");var can_edit=acl>=Wialon.access_level("edit");if(!document.getElementById("users_create_target"))
can_manage=false;var manage_img=mod.del_img_url;if(can_edit)
html+="<td><img id='user_list_config_"+id+"' src='"+WebCMS.get_img_url(mod.config_img_url)+"' style='cursor: pointer'/></td>";else
html+="<td><img id='user_list_config_"+id+"' src='"+WebCMS.get_img_url(mod.config_none_img_url)+"' style='cursor: pointer'/></td>";html+="<td><img id='user_list_copy_"+id+"' src='"+WebCMS.get_img_url(mod.copy_img_url)+"' style='cursor: pointer'/></td>";if(can_manage)
html+="<td><img id='user_list_del_"+id+"' src='"+WebCMS.get_img_url(mod.del_img_url)+"' style='cursor: pointer'/></td>";else
html+="<td><img id='user_list_no_del_"+id+"' src='"+WebCMS.get_img_url(mod.del_none_img_url)+"'/></td>";return{id:"user_list_row_"+id,html:html};},on_user_deleted:function(user){if(!user)
return;var user_id=user.get_id();var pos=this.rows_array_hash[user.get_id()];if(typeof pos=="undefined")
return;delete this.rows_array_hash[user.get_id()];this.rows_array.splice(pos,1);for(var id in this.rows_array_hash){if(this.rows_array_hash[id]>pos)
this.rows_array_hash[id]--;}
jQuery("#users_list_target").ft_remove_row(pos,"user_list_row_"+user.get_id());},on_user_created:function(user){if(!user)
return;if(this.filter!="*"&&!WebCMS.compare_wildcard(user.get_name(),this.filter))
return;this.rows_array_hash[user.get_id()]=this.rows_array.length;this.rows_array.push(user);jQuery("#users_list_target").ft_append_rows(1);},on_user_updated:function(user){if(!user||user.get_type()!="user")
return;if(this.filter!="*"&&!WebCMS.compare_wildcard(user.get_name(),this.filter)){this.on_user_deleted(user);return;}
jQuery("#users_list_target").ft_update_row("user_list_row_"+user.get_id());},on_edit_user:function(user_id){if(!user_id)
return;var user=Wialon.get_item(user_id);if(!user||user.get_type()!="user")
return;var mod_idlg=WebCMS.get_module("items_dlg");if(mod_idlg)
mod_idlg.show("user",user,0);},on_copy_user:function(user_id){if(!user_id)
return;var user=Wialon.get_item(user_id);if(!user||user.get_type()!="user")
return;var mod_idlg=WebCMS.get_module("items_dlg");if(mod_idlg)
mod_idlg.show("user",user,1);},on_del_user:function(user_id){if(!user_id)
return;var user=Wialon.get_item(user_id);if(!user||user.get_type()!="user")
return;if(!confirm(sprintf(this.translation.del_confirm,user.get_name())))
return;user.delete_item(function(result,error_text,cparam){if(!result)
WebCMS.log_msg(sprintf(UsersListCMSModule.translation.error_delete,cparam.user.get_name(),error_text),2);else{WebCMS.log_msg(sprintf(UsersListCMSModule.translation.succ_delete,cparam.user.get_name()),1);UsersListCMSModule.on_user_deleted(cparam.user);}},{user:user});},get_unit_state_html:function(unit){if(!unit)
return"&nbsp;";return"<img id='user_list_row_o_"+unit.get_id()+"' src='"+WebCMS.get_img_url(this.config_img_url)+"'/>";},bind_unit_state_gui_events:function(unit_id){jQuery("#user_list_row_o_"+unit_id).attr("title",this.translation.config).Tooltip({showURL:false}).css({cursor:"pointer"}).unbind("click").bind("click",function(){UsersListCMSModule.on_edit_user(unit_id);});}});WebCMS.register_module(UsersListCMSModule);var mod_map=WebCMS.get_module("user_actions_menu");if(mod_map)
mod_map.register_unit_state_module(UsersListCMSModule);var DevicesListCMSModule=Base.extend({constructor:null,translation:{},config_img_url:"/devices_list/configure.png",config_none_img_url:"/devices_list/configure_none.png",del_img_url:"/devices_list/del.png",del_none_img_url:"/devices_list/del_none.png",action_head_img_url:"/devices_list/action.png",copy_img_url:"/devices_list/copy.png",export_menu_img_url:"/devices_list/export_menu.png",export_menu1:null,export_menu2:null,filter:"*",rows_array:new Array,acl_array:new Object,rows_array_hash:new Object,show_control:-1,get_type:function(){return"devices_list";},on_init:function(){Wialon.bind_event_handler("show_panel",0,function(event_type,event_id,event_data){if(event_id=="devices")
DevicesListCMSModule.on_display_init();});var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd&&!disable_monitoring_settings)
mod_usd.add_row(this);this.update_settings();var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(mod_map&&mod_menu&&this.show_control&&!disable_monitoring_settings){if(this.show_control==1)
mod_map.register_unit_state_module(this);else
mod_menu.register_unit_state_module(this);}},on_display_init:function(){if(this.shown){this.make_table();return;}else
this.shown=true;var curr_user=Wialon.get_current_user();if(!curr_user)
return;var mod_icb=WebCMS.get_module("items_create_btn");if(mod_icb&&!mod_icb.show_search_ctrl)
this.filter="*";Wialon.bind_event_handler("item_created",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_unit")
DevicesListCMSModule.on_device_created(event_data);});Wialon.bind_event_handler("item_deleted",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_unit")
DevicesListCMSModule.on_device_deleted(event_data);});Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.nm!='undefined')
DevicesListCMSModule.on_device_updated(Wialon.get_item(event_id));if(typeof event_data.acl!='undefined'&&event_id==Wialon.get_current_user().get_id()){for(var i in event_data.acl){var item=Wialon.get_item(i);var old_acl=DevicesListCMSModule.acl_array[i];if(item&&item.get_type()=="avl_unit"&&(!old_acl||old_acl!=event_data.acl[i])){DevicesListCMSModule.acl_array[i]=event_data.acl[i];DevicesListCMSModule.on_device_updated(item);}
if(item&&item.get_type()=="avl_unit_group"&&item.is_acl_propogated()){var ucol=item.get_units();for(var j=0;ucol&&j<ucol.length;j++){var old_acl2=DevicesListCMSModule.acl_array[ucol[j].get_id()];if(!old_acl2||old_acl2!=ucol[j].get_access_level()){DevicesListCMSModule.acl_array[ucol[j].get_id()]=ucol[j].get_access_level();DevicesListCMSModule.on_device_updated(ucol[j]);}}}}}});this.make_table();jQuery("#devices_list_target_div").attr("title","X").Tooltip({showURL:false,track_children:true,bodyHandler:function(e){if(!e)
return"";var mod=DevicesListCMSModule;var id=e;if(id=="device_head_action")
return"<b>"+mod.translation.action+"</b>";else if(id.substring(0,19)=="device_list_config_")
return"<b>"+mod.translation.config+"</b>";else if(id.substring(0,17)=="device_list_copy_")
return"<b>"+mod.translation.copy+"</b>";else if(id.substring(0,16)=="device_list_del_")
return"<b>"+mod.translation.del+"</b>";else if(id.substring(0,17)=="device_list_name_")
return mod.get_device_tip(id.substr(17));else if(id.substring(0,19)=="device_list_export_")
return"<b>"+mod.translation.export_+"</b>";return"";}}).click(function(evt){var target=evt.target;var id=target.id;if(typeof id=="undefined")
return;var arr=id.split("_");if(arr.length!=4)
return;var mod=DevicesListCMSModule;if(arr[2]=="config")
mod.on_edit_device(arr[3]);else if(arr[2]=="copy")
mod.on_copy_device(arr[3]);else if(arr[2]=="del"&&jQuery(target).css("cursor")=="pointer")
mod.on_del_device(arr[3]);});},create_export_menu:function(){var mod_gm=WebCMS.get_module("generic_menu");if(!mod_gm)
return;var ids1=[];var ids2=[];for(var i=1;i<this.rows_array.length;i++){var unit=this.rows_array[i];if(unit.get_access_level()<Wialon.access_level("edit"))
ids1.push("device_list_export_"+unit.get_id());else
ids2.push("device_list_export_"+unit.get_id());}
var items1=[];var items2=[];var mod_unimp=WebCMS.get_module("unit_import");if(mod_unimp){var mi_imp={icon_url:mod_unimp.get_import_icon_url(),handler:function(id){var uid=id.split("_").pop();mod_unimp.import_from_file(uid);},text:this.translation.import_from_file};var mi_exp={icon_url:mod_unimp.get_export_icon_url(),handler:function(id){var uid=id.split("_").pop();mod_unimp.export_to_file(uid);},text:this.translation.export_to_file};items2.push(mi_imp);items1.push(mi_exp);items2.push(mi_exp);}
var mod_uniexp=WebCMS.get_module("unit_export");if(mod_uniexp){var mi={icon_url:mod_uniexp.get_export_icon_url(),handler:function(id){var uid=id.split("_").pop();mod_uniexp.export_to_units(uid);},text:this.translation.export_into_unit};items1.push(mi);items2.push(mi);}
if(items1.length>0)
this.export_menu1=mod_gm.create(ids1,items1);if(items2.length>0)
this.export_menu2=mod_gm.create(ids2,items2);},remove_export_menu:function(){var mod_gm=WebCMS.get_module("generic_menu");if(!mod_gm)
return;if(this.export_menu1!=null){mod_gm.remove(this.export_menu1);this.export_menu1=null;}
if(this.export_menu2!=null){mod_gm.remove(this.export_menu2);this.export_menu2=null;}},make_table:function(){this.remove_export_menu();var devices=Wialon.get_units();this.rows_array=new Array;this.rows_array_hash=new Object;this.acl_array=new Object;this.rows_array_hash["device_list_row_header"]=this.rows_array.length;this.rows_array.push("device_list_row_header");var count=0;for(var i=0;i<devices.length;i++){var device=devices[i];if(this.filter!="*"&&!WebCMS.compare_wildcard(device.get_name(),this.filter))
continue;this.rows_array_hash[device.get_id()]=this.rows_array.length;this.rows_array.push(device);this.acl_array[device.get_id()]=device.get_access_level();}
var tbl_obj=new Object();tbl_obj.get_row=this.get_row_html_ft;tbl_obj.cols_count=4;tbl_obj.rows_count=this.rows_array.length;tbl_obj.erase=true;tbl_obj.gap=4;tbl_obj.parent_class="panel_parent";jQuery("#devices_list_target").fast_table(tbl_obj);this.create_export_menu();},update_list_filter:function(filter){this.filter=filter;this.make_table();},get_row_html_ft:function(pos){var mod=DevicesListCMSModule;if(pos==0){var html="<tr class='devices_list_head_tr'><td id='device_head_name' align='center' width='100%'><b>"+mod.translation.devices+"</b></td>";html+="<td id='device_head_action' colspan='4' align='center'><img src='"+WebCMS.get_img_url(mod.action_head_img_url)+"'/></td></tr>";return{id:"device_list_row_header",html:html};}
var device=mod.rows_array[pos];if(!device||typeof device=="undefined"){alert("error");return null;}
var id=device.get_id();var acl=mod.acl_array[id];var html="<tr id='device_list_row_"+id+"'>";html+="<td style='width:100%' id='device_list_name_"+id+"'>"+device.get_name()+"</td>";var can_manage=acl>=Wialon.access_level("manage");if(!document.getElementById("devices_create_target"))
can_manage=false;var manage_img=mod.del_img_url;var img=mod.config_img_url;var acl=device.get_access_level();if(acl<Wialon.access_level("edit"))
img=mod.config_none_img_url;html+="<td><img id='device_list_config_"+id+"' src='"+WebCMS.get_img_url(img)+"' style='cursor: pointer'/></td>";html+='<td><img id="device_list_export_'+id+'" src="'+WebCMS.get_img_url(mod.export_menu_img_url)+'" style="cursor:pointer"/></td>';html+="<td><img id='device_list_copy_"+id+"' src='"+WebCMS.get_img_url(mod.copy_img_url)+"' style='cursor: pointer'/></td>";if(can_manage)
html+="<td><img id='device_list_del_"+id+"' src='"+WebCMS.get_img_url(mod.del_img_url)+"' style='cursor: pointer'/></td>";else
html+="<td><img id='device_list_del_"+id+"' src='"+WebCMS.get_img_url(mod.del_none_img_url)+"'/></td>";return{id:"device_list_row_"+id,html:html};},on_device_deleted:function(device){if(!device)
return;var device_id=device.get_id();var pos=this.rows_array_hash[device.get_id()];if(typeof pos=="undefined")
return;delete this.rows_array_hash[device.get_id()];this.rows_array.splice(pos,1);for(var id in this.rows_array_hash){if(this.rows_array_hash[id]>pos)
this.rows_array_hash[id]--;}
jQuery("#devices_list_target").ft_remove_row(pos,"device_list_row_"+device.get_id());},on_device_created:function(device){if(!device)
return;if(this.filter!="*"&&!WebCMS.compare_wildcard(device.get_name(),this.filter))
return;this.rows_array_hash[device.get_id()]=this.rows_array.length;this.rows_array.push(device);jQuery("#devices_list_target").ft_append_rows(1);this.remove_export_menu();this.create_export_menu();},on_device_updated:function(device){if(!device||device.get_type()!="avl_unit")
return;if(this.filter!="*"&&!WebCMS.compare_wildcard(device.get_name(),this.filter)){this.on_device_deleted(device);return;}
jQuery("#devices_list_target").ft_update_row("device_list_row_"+device.get_id());},on_edit_device:function(device_id){if(!device_id)
return;var device=Wialon.get_item(device_id);if(!device||device.get_type()!="avl_unit")
return;var mod_idlg=WebCMS.get_module("items_dlg");if(mod_idlg)
mod_idlg.show("avl_unit",device,0);},on_copy_device:function(device_id){if(!device_id)
return;var device=Wialon.get_item(device_id);if(!device||device.get_type()!="avl_unit")
return;var mod_idlg=WebCMS.get_module("items_dlg");if(mod_idlg)
mod_idlg.show("avl_unit",device,1);},on_del_device:function(device_id){if(!device_id)
return;var device=Wialon.get_item(device_id);if(!device||device.get_type()!="avl_unit")
return;if(!confirm(sprintf(this.translation.del_confirm,device.get_name())))
return;device.delete_item(function(result,error_text,cparam){if(!result)
WebCMS.log_msg(sprintf(DevicesListCMSModule.translation.error_delete,cparam.device.get_name(),error_text),2);else{WebCMS.log_msg(sprintf(DevicesListCMSModule.translation.succ_delete,cparam.device.get_name()),1);DevicesListCMSModule.on_device_deleted(cparam.device);}},{device:device});},get_device_tip:function(id){var device=Wialon.get_item(id);if(!device||device.get_type()!="avl_unit"||device.get_access_level()<Wialon.access_level("edit"))
return"";var unique_id=device.get_unique_id().length?device.get_unique_id():"---";var phone=device.get_phone_number().length?device.get_phone_number():"---";var html="<table>";html+="<tr><td align='left'><b>"+DevicesListCMSModule.translation.type+":</b></td><td align='left'>"+device.get_hardware_type()+"</td></tr>";html+="<tr><td align='left'><b>"+DevicesListCMSModule.translation.unique_id+":</b></td><td align='left'>"+unique_id+"</td></tr>";html+="<tr><td align='left'><b>"+DevicesListCMSModule.translation.phone+":</b></td><td align='left'>"+phone+"</td></tr>";html+="</table>";return html;},get_head_html:function(){return"<img id='monitoring_units_devices_head' src='"+WebCMS.get_img_url(this.config_img_url)+"'/>";},get_head_title:function(){return this.translation.title_head;},get_unit_state_html:function(unit){if(!unit)
return"&nbsp;";var img=this.config_img_url;var acl=unit.get_access_level();if(acl<Wialon.access_level("edit"))
img=this.config_none_img_url;return"<img id='devices_list_row_"+unit.get_id()+"' src='"+WebCMS.get_img_url(img)+"'/>";},on_sort:function(units,asc){units.sort(function(a,b){var u1,u2;if(!asc){u1=a;u2=b;}else{u1=b;u2=a;}
return u1.get_access_level()-u2.get_access_level();});},get_unit_state_title:function(unit){return this.translation.title;},on_click:function(unit_id,event){var obj=Wialon.get_item(unit_id);if(!obj)
return;if(obj.get_type()=="avl_unit")
DevicesListCMSModule.on_edit_device(unit_id);else
UnitGroupsListCMSModule.on_edit_group(unit_id)},get_row_tab_info:function(){return{id:"monitoring_settings",title:this.translation.tab_name};},get_row_html:function(){return"<tr><td><img src='"+this.config_img_url+"'/>&nbsp;"+this.translation.title_head+":</td><td><input type='checkbox' id='state_cfg_btn'/></td><td><input type='checkbox' id='state_cfg_btn_m'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#state_cfg_btn").attr("checked",this.show_control==1).attr("title",this.translation.tooltip).Tooltip({showURL:false});jQuery("#state_cfg_btn_m").attr("checked",this.show_control==2).attr("title",this.translation.tooltip_menu).Tooltip({showURL:false});jQuery("#state_cfg_btn").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_cfg_btn_m").removeAttr("checked");});jQuery("#state_cfg_btn_m").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_cfg_btn").removeAttr("checked");});},save_row_data:function(){var show=jQuery("#state_cfg_btn").attr("checked")?1:0;if(!show)
show=jQuery("#state_cfg_btn_m").attr("checked")?2:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mu_dev_cfg",show);mod_us.store_settings();this.show_control=show;var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(!mod_map||!mod_menu)
return;if(this.show_control==1)
mod_map.register_unit_state_module(this);else if(this.show_control==2)
mod_menu.register_unit_state_module(this);else
mod_map.unregister_unit_state_module(this);return true;},update_settings:function(){var user=Wialon.get_current_user();if(!user)
return;this.show_control=parseInt(user.get_private_property("mu_dev_cfg","2"));}});WebCMS.register_module(DevicesListCMSModule);var WebCMSDeviceSensors=Base.extend({constructor:null,sensors:{},translation:{},get_type:function(){return"device_sensors";},on_init:function(){this.register_sensor_type("impulse fuel consumption",this.translation.impulse_fuel_consumption_type,"","",true);this.register_sensor_type("absolute fuel consumption",this.translation.absolute_fuel_consumption_type,this.translation.litres,"litres",true);this.register_sensor_type("instant fuel consumption",this.translation.instant_fuel_consumption_type,"","",true);this.register_sensor_type("fuel level",this.translation.fuel_type,this.translation.litres,"litres");this.register_sensor_type("fuel level impulse sensor",this.translation.impulse_fuel_level_type,this.translation.litres,"litres",true);this.register_sensor_type("temperature",this.translation.temperature_type,"°C","°C");this.register_sensor_type("engine rpm",this.translation.engine_rpm_type,this.translation.rpm,"rpm");this.register_sensor_type("engine operation",this.translation.engine_operation_type,this.translation.on_off,"On/Off");this.register_sensor_type("voltage",this.translation.voltage_type,this.translation.voltage,"V");this.register_sensor_type("digital",this.translation.digital,this.translation.on_off,"On/Off");this.register_sensor_type("custom",this.translation.custom,"","");this.register_sensor_type("mileage",this.translation.mileage,this.translation.km,"km");this.register_sensor_type("odometer",this.translation.odometer,this.translation.km,"кm");this.register_sensor_type("engine efficiency",this.translation.engine_efficiency,this.translation.on_off,"On/Off");this.register_sensor_type("engine hours",this.translation.absolute_engine_hours,this.translation.hr,"hours");this.register_sensor_type("device states",this.translation.device_states,"","");this.register_sensor_type("counter",this.translation.counter,"","");var mod_wd=WebCMS.get_module("workspace_devices");if(mod_wd)
mod_wd.register_search(this);},register_sensor_type:function(sensor_type,sensor_type_name,measurement_view,measurement_store,remove_from_tooltip){this.sensors[sensor_type]={type:sensor_type,type_name:sensor_type_name,measurement_view:measurement_view,measurement_store:measurement_store,remove_from_tooltip:remove_from_tooltip};},get_sensor_types:function(){var col=new Array;for(sens in this.sensors)
col.push(this.sensors[sens]);return col;},get_type_name:function(sensor_type){var sens=this.sensors[sensor_type];if(typeof sens=="undefined")
return sensor_type;return sens.type_name;},get_measurement:function(sensor_type){var sens=this.sensors[sensor_type];if(typeof sens=="undefined")
return"";return sens.measurement_view;},get_real_measurement:function(sensor_type){var sens=this.sensors[sensor_type];if(typeof sens=="undefined")
return"";if(sens.measurement_store)
return sens.measurement_store;else
return sens.measurement_view;},is_on_off_sensor:function(measurement){if(measurement=="On/Off")
return true;return false;},show_in_tooltip:function(sensor_type){var sens=this.sensors[sensor_type];if(typeof sens=="undefined")
return true;return sens.remove_from_tooltip?false:true;},get_search:function(){return{name:this.translation.sensors,comment:this.translation.search_by_sensors_comment,check_unit:function(unit,template){var pl=unit.get_plugin("avl_unit_sensors");var sens_mgr=WebCMS.get_module("device_sensors");if(pl&&sens_mgr){var sensors=pl.get_sensors();if(template.length){for(var i=0;i<sensors.length;i++){var update=false;var name=sensors[i].get_name();var type=sens_mgr.get_type_name(sensors[i].get_type());var param=sensors[i].get_param_name();var descr=sensors[i].get_description();if(WebCMS.compare_wildcard(name,template)||WebCMS.compare_wildcard(type,template)||WebCMS.compare_wildcard(param,template)||WebCMS.compare_wildcard(descr,template))
return true;}}else if(!sensors.length)
return true;}
return false;}};}});var UserSettingsSensorsCMSModule=Base.extend({constructor:null,show_control:-1,priority:-10,translation:{},get_type:function(){return"user_settings_sensors";},get_row_html:function(){return"<tr><td>"+this.translation.sensor_show+":</td><td><input type='checkbox' id='user_settings_sensors_show'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#user_settings_sensors_show").attr("checked",this.show_control).attr("title",this.translation.title).Tooltip({showURL:false});},save_row_data:function(){var show=jQuery("#user_settings_sensors_show").attr("checked")?1:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("uss",show?"1":"0");mod_us.store_settings();this.show_control=show;},on_init:function(){if(!WebCMS.get_module("monitoring_map"))
return;var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);var user=Wialon.get_current_user();if(!user)
return;if(user.get_private_property("uss","1")=="1")
this.show_control=1;else
this.show_control=0;if(user.get_public_property("user_settings_sensors","")!=""){user.set_public_property("user_settings_sensors","");var mod_us=WebCMS.get_module("user_settings");if(mod_us)
mod_us.store_settings();}}});var UnitInfoTextSensorsCMSModule=Base.extend({constructor:null,translation:{},on_init:function(){var mod_uit=WebCMS.get_module("unit_info_text");if(mod_uit)
mod_uit.add_info_text(UnitInfoTextSensorsCMSModule);var mod_wd=WebCMS.get_module("workspace_devices");if(mod_wd)
mod_wd.register_search(this);},get_type:function(){return"unit_info_text_sensors";},get_info_text:function(unit){var arr=new Array;var user=Wialon.get_current_user();if(!user)
return;if(user.get_private_property("uss","1")=="0")
return arr;var pl=unit.get_plugin("avl_unit_sensors");if(pl){var sens_mgr=WebCMS.get_module("device_sensors");var sensors=Wialon.sort_items(pl.get_sensors());for(var i=0;i<sensors.length;i++){if(!sensors[i]||!sens_mgr.show_in_tooltip(sensors[i].get_type()))
continue;var value=this.get_sensor_value(unit,sensors[i]);if(value!=this.translation.unknown){var real_measure;if(sens_mgr)
real_measure=sens_mgr.get_real_measurement(sensors[i].get_type());else
real_measure=sensors[i].get_measurement();if(sens_mgr.is_on_off_sensor(real_measure)){var on_val=this.translation.on;var off_val=this.translation.off;var sens_meas=sensors[i].get_measurement();if(sens_mgr.get_real_measurement(sensors[i].get_type())!=sens_meas){var arrs=sens_meas.split("/");if(arrs.length==2){on_val=arrs[0];off_val=arrs[1];}}
if(parseFloat(value))
value=on_val;else
value=off_val;}else{var sens_meas=sensors[i].get_measurement();if(sens_mgr.get_real_measurement(sensors[i].get_type())==sens_meas)
value=sprintf("%.2f %s",value,sens_mgr.get_measurement(sensors[i].get_type()));else
value=sprintf("%.2f %s",value,sensors[i].get_measurement());}}
arr.push({name:sensors[i].get_name(),value:value});}}
return arr;},get_sensor_value:function(unit,sensor){if(!sensor||!unit)
return this.translation.unknown;var param=unit.get_last_param(sensor.get_param_name());if(param!="N/A"){var res=sensor.calculate_val(param,-348201.3876);if(res!=-348201.3876)
return res;}
return this.translation.unknown;}});WebCMS.register_module(WebCMSDeviceSensors);WebCMS.register_module(UserSettingsSensorsCMSModule);WebCMS.register_module(UnitInfoTextSensorsCMSModule);var UserSettingsCustomFieldsCMSModule=Base.extend({constructor:null,show_control:-1,translation:{},priority:-10,get_type:function(){return"items_custom_fields";},get_row_html:function(){return"<tr><td>"+this.translation.field_show+":</td><td><input type='checkbox' id='items_custom_fields_show'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#items_custom_fields_show").attr("checked",this.show_control).attr("title",this.translation.title).Tooltip({showURL:false});},save_row_data:function(){var show=jQuery("#items_custom_fields_show").attr("checked")?1:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("ucfs",show?"1":"0");mod_us.store_settings();this.show_control=show;},on_init:function(){if(!WebCMS.get_module("monitoring_map"))
return;var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);var user=Wialon.get_current_user();if(!user)
return;if(user.get_private_property("ucfs","1")=="1")
this.show_control=1;else
this.show_control=0;if(user.get_public_property("items_custom_fields","")!=""){user.set_public_property("items_custom_fields","");var mod_us=WebCMS.get_module("user_settings");if(mod_us)
mod_us.store_settings();}
var mod_uit=WebCMS.get_module("unit_info_text");if(mod_uit)
mod_uit.add_info_text(this);var mod_wd=WebCMS.get_module("workspace_devices");if(mod_wd)
mod_wd.register_search(this);},get_info_text:function(unit){var arr=new Array;if(!this.show_control)
return;var pl=unit.get_plugin("avl_item_fields");if(pl){var fields=pl.get_fields();for(var i=0;i<fields.length;i++)
arr.push({name:fields[i].get_name(),value:fields[i].get_value()});}
arr.sort(function(a,b){if(a.name==b.name)
return 0;return a.name.toLowerCase()>b.name.toLowerCase()?1:-1;});return arr;},get_search:function(){return{name:this.translation.search_by_custom_field,comment:this.translation.search_by_custom_field_comment,check_unit:function(unit,template){var pl=unit.get_plugin("avl_item_fields");if(pl){var props=pl.get_fields();if(template.length){for(var j=0;j<props.length;j++){var n=props[j].get_name();var v=props[j].get_value();if(WebCMS.compare_wildcard(v,template)||WebCMS.compare_wildcard(n,template))
return true;}}else if(!props.length)
return true;}
return false;}};}});WebCMS.register_module(UserSettingsCustomFieldsCMSModule);var MonitoringRouteCMSModule=Base.extend({constructor:null,show_control:-1,routes_info:{},group_incompatible:1,translation:{},state_inactive_url:"/route_monitoring_control/state_inactive.png",state_ok_url:"/route_monitoring_control/state_ok.png",state_late_url:"/route_monitoring_control/state_late.png",state_early_url:"/route_monitoring_control/state_early.png",state_error_url:"/route_monitoring_control/state_error.png",state_finished_url:"/route_monitoring_control/state_finished.png",state_multiroutes_url:"/route_monitoring_control/state_multiroutes.png",state_no_routes_url:"/route_monitoring_control/state_no_routes.png",head_img_url:"/route_monitoring_control/head.png",use_in_group:true,get_type:function(){return"route_monitoring_control";},get_head_html:function(){this.update_settings();if(!this.show_control)
return"";return"<img id='route_monitoring_control_show_head' src='"+WebCMS.get_img_url(this.head_img_url)+"'/>";},get_head_title:function(){return this.translation.route_control_head;},get_unit_state_html:function(unit){if(!this.show_control)
return"";if(!unit)
return"&nbsp;";var unit_id=unit.get_id();if(!this.routes_info[unit_id]||typeof this.routes_info[unit_id]=="undefined")
return"<img id='monitoring_units_state_routes_"+unit_id+"' src='"+WebCMS.get_img_url(this.state_no_routes_url)+"'/>";return"<img id='monitoring_units_state_routes_"+unit_id+"' src='"+WebCMS.get_img_url(this.routes_info[unit_id].url)+"'/>";},get_unit_state_title:function(unit){return MonitoringRouteCMSModule.get_unit_info(unit);},get_row_tab_info:function(){return{id:"monitoring_settings",title:this.translation.tab_name};},get_unit_info:function(unit){if(!unit)
return"&nbsp;";var unit_id=unit.get_id();if(!this.routes_info[unit_id]||typeof this.routes_info[unit_id]=="undefined")
return"<b>"+this.translation.no_routes+"</b>";var html="";for(var res_route_id in this.routes_info[unit_id].route_info){var rinfo=this.routes_info[unit_id].route_info[res_route_id];if(!rinfo||typeof rinfo=="undefined")
continue;html+="<tr><td align='left'><b>"+rinfo.route.get_name()+"</b><hr size='1'/></td></tr>";if(rinfo.status.length)
html+="<tr><td align='left' style='font-weight: normal'>"+rinfo.status+"</td></tr>";if(rinfo.error.length)
html+="<tr><td align='left'><span style='color: red; font-weight: normal'>"+rinfo.error+"</span></td></tr>";}
if(!html.length)
html=this.translation.no_routes;else
html="<table>"+html+"</table>";return html;},on_route_state_changed:function(event_id,event_data){if(!event_data||typeof event_data=="undefined"||!event_id)
return;var unit_id=0;var res_route_id="";if(event_data.route&&typeof event_data.route!="undefined"&&!event_data.route.is_enabled())
event_data.route_id=event_data.route.get_id();if(event_data.route_id&&typeof event_data.route_id!="undefined"){res_route_id=event_id+"_"+event_data.route_id;for(var id in this.routes_info){if(!this.routes_info[id]||typeof this.routes_info[id]=="undefined")
continue;var rinfo=this.routes_info[id].route_info[res_route_id];if(!rinfo||typeof rinfo=="undefined")
continue;this.routes_info[id].route_info[res_route_id]=null;unit_id=id;break;}}else if(event_data.route&&typeof event_data.route!="undefined"){res_route_id=event_id+"_"+event_data.route.get_id();if(!event_data.route.get_unit())
return;unit_id=event_data.route.get_unit().get_id();if(!this.routes_info[unit_id]||typeof this.routes_info[unit_id]=="undefined"){this.routes_info[unit_id]=new Object();this.routes_info[unit_id].route_info=new Object();}
this.routes_info[unit_id].route_info[res_route_id]=new Object();this.routes_info[unit_id].route_info[res_route_id].route=event_data.route;this.routes_info[unit_id].route_info[res_route_id].status=event_data.status;this.routes_info[unit_id].route_info[res_route_id].error=event_data.error;}
if(!unit_id)
return;var count=0;var st=0;for(var res_route in this.routes_info[unit_id].route_info){var rinfo=this.routes_info[unit_id].route_info[res_route];if(!rinfo||typeof rinfo=="undefined")
continue;st=rinfo.route.get_status();count++;}
var image_url=this.state_ok_url;if(!count)
image_url=this.state_no_routes_url;else if(count==1){if(st&0x1)
image_url=this.state_inactive_url;else if(st&0x2)
image_url=this.state_finished_url;else if(st&0x10)
image_url=this.state_error_url;else if(st&0x20)
image_url=this.state_late_url;else if(st&0x40)
image_url=this.state_early_url;}else
image_url=this.state_multiroutes_url;this.routes_info[unit_id].url=image_url;jQuery("#monitoring_units_state_routes_"+unit_id).attr("src",WebCMS.get_img_url(image_url));},on_init:function(){this.update_settings();if(!jQuery("#menu_route_control_table").html())
return;var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd&&!disable_monitoring_settings)
mod_usd.add_row(this);Wialon.bind_event_handler("route_state_changed",0,function(event_type,event_id,event_data){MonitoringRouteCMSModule.on_route_state_changed(event_id,event_data);});var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(mod_map&&mod_menu&&this.show_control&&!disable_monitoring_settings){if(this.show_control==1)
mod_map.register_unit_state_module(this);else
mod_menu.register_unit_state_module(this);}},get_row_html:function(){return"<tr><td><img src='"+this.head_img_url+"'/>&nbsp;"+this.translation.route_control_head+":</td><td><input type='checkbox' id='state_route_btn'/></td><td><input type='checkbox' id='state_route_btn_m'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#state_route_btn").attr("checked",this.show_control==1).attr("title",this.translation.title).Tooltip({showURL:false});jQuery("#state_route_btn_m").attr("checked",this.show_control==2).attr("title",this.translation.title_menu).Tooltip({showURL:false});jQuery("#state_route_btn").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_route_btn_m").removeAttr("checked");});jQuery("#state_route_btn_m").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_route_btn").removeAttr("checked");});},save_row_data:function(){var show=jQuery("#state_route_btn").attr("checked")?1:0;if(!show)
show=jQuery("#state_route_btn_m").attr("checked")?2:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mu_route",show);mod_us.store_settings();this.show_control=show;var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(!mod_map||!mod_menu)
return;if(this.show_control==1)
mod_map.register_unit_state_module(this);else if(this.show_control==2)
mod_menu.register_unit_state_module(this);else
mod_map.unregister_unit_state_module(this);return true;},update_settings:function(){var user=Wialon.get_current_user();if(!user)
return;this.show_control=parseInt(user.get_private_property("mu_route","2"));}});WebCMS.register_module(MonitoringRouteCMSModule);var RouteControlListCMSModule=Base.extend({constructor:null,translation:{},show_attr:{},icons_attr:{},default_style:{fillColor:"#FF0000",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#FF0000",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",hoverStrokeColor:"#FF0000",hoverStrokeOpacity:0.5,hoverStrokeWidth:10,pointRadius:4,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted"},config_img_url:"/route_control_list/configure.png",config_none_img_url:"/route_control_list/configure_none.png",del_img_url:"/route_control_list/del.png",del_none_img_url:"/route_control_list/del_none.png",action_head_img_url:"/route_control_list/action.png",copy_img_url:"/route_control_list/copy.png",exclamation_img_url:"/route_control_list/exclamation.png",state_img_url:"/route_control_list/state.png",enabled_img_url:"/route_control_list/enabled.png",enabled_none_img_url:"/route_control_list/engray.png",disabled_img_url:"/route_control_list/disabled.png",disabled_none_img_url:"/route_control_list/disgray.png",acl_res:{},init_sel_routes:{},list_filter:"*",get_type:function(){return"route_control_list";},on_init:function(){Wialon.bind_event_handler("show_panel",0,function(event_type,event_id,event_data){if(event_id=="route_control")
RouteControlListCMSModule.on_display_init();});var resources=Wialon.filter_items(Wialon.get_resources(),"view");if(resources&&resources.length){var rescol=Wialon.get_resources();for(var i=0;i<rescol.length;i++){var res=rescol[i];this.acl_res[res.get_id()]=res.get_access_level();var pl=res.get_plugin("avl_route_control");if(pl){var rcol=pl.get_routes();for(var j=0;j<rcol.length;j++){var route=rcol[j];this.update_row_html(res,route);}}}}
Wialon.bind_event_handler("item_created",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_resource")
RouteControlListCMSModule.on_resource_created(event_data,event_data.get_plugin("avl_route_control"));});Wialon.bind_event_handler("item_deleted",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_resource")
RouteControlListCMSModule.on_resource_deleted(event_data,event_data.get_plugin("avl_route_control"));});Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.rcu!='undefined')
RouteControlListCMSModule.on_route_updated(Wialon.get_item(event_id),event_data.rcu);if(typeof event_data.acl!='undefined'&&event_id==Wialon.get_current_user().get_id()){for(var i in event_data.acl){var item=Wialon.get_item(i);if(item&&item.get_type()=="avl_resource"&&RouteControlListCMSModule.acl_res[i]!=item.get_access_level()){RouteControlListCMSModule.acl_res[i]=item.get_access_level();RouteControlListCMSModule.on_route_updated(item);}}}});var mod_uit=WebCMS.get_module("unit_info_text");if(mod_uit)
mod_uit.add_info_text(RouteControlListCMSModule);setInterval("RouteControlListCMSModule.on_gen_event()",60000);var user=Wialon.get_current_user();if(user.get_public_property("routes_list","")!=""||user.get_public_property("route_monitoring_control","")!=""){user.set_public_property("routes_list","");user.set_public_property("route_monitoring_control","");var mod_us=WebCMS.get_module("user_settings");if(mod_us)
mod_us.store_settings();}
var user=Wialon.get_current_user();try{var col=jQuery.parseJSON(user.get_private_property("rtsl","null"));if(col){for(var i=0;i<col.length;i++){jQuery("#route_list_sel_"+col[i]).attr("checked",true);RouteControlListCMSModule.on_show_route(col[i].split("_"),false);this.init_sel_routes[col[i]]=1;}}}catch(e){}},on_display_init:function(){if(this.shown){return;}else
this.shown=true;var html="<thead><tr>";html+="<td colspan='5' align='center'>"+this.translation.route_filter+":&nbsp;<select id='route_filter'>";html+="<option value='0'>"+this.translation.all_routes+"</option>";html+="<optgroup label='"+this.translation.types+"'>";html+="<option value='2'>"+this.translation.finished+"</option>";html+="<option value='4'>"+this.translation.checking_arrive+"</option>";html+="<option value='8'>"+this.translation.checking_departure+"</option>";html+="<option value='16'>"+this.translation.out_of_zone+"</option>";html+="<option value='32'>"+this.translation.too_late+"</option>";html+="<option value='64'>"+this.translation.too_early+"</option>";html+="<option value='1'>"+this.translation.inactive+"</option>";html+="</optgroup>";var resources=Wialon.get_resources();if(resources.length>1){html+='<optgroup id="route_filter_accounts" label="'+this.translation.accounts+'">';for(var i=0;i<resources.length;i++){var r=resources[i];html+='<option value="-'+r.get_id()+'">'+r.get_name()+'</option>';}
html+='</optgroup>';}
html+="</select></td></tr>";html+="<tr><td align='center' width='100%'>"+this.translation.routes+"</td>";html+="<td id='route_head_state' align='center'><img src='"+WebCMS.get_img_url(this.state_img_url)+"'/></td>";html+="<td colspan='3' id='route_head_action' align='center'><img src='"+WebCMS.get_img_url(this.action_head_img_url)+"'/></td>";html+="</tr></thead><tbody></tbody>";jQuery("#route_control_list_target").html(html);var resources=Wialon.filter_items(Wialon.get_resources(),"view");if(resources&&resources.length){var rescol=Wialon.get_resources();for(var i=0;i<rescol.length;i++){var res=rescol[i];this.acl_res[res.get_id()]=res.get_access_level();var pl=res.get_plugin("avl_route_control");if(pl){var rcol=pl.get_routes();for(var j=0;j<rcol.length;j++){var route=rcol[j];this.update_row_html(res,route);var id=res.get_id()+"_"+route.get_id();if(this.init_sel_routes[id]){jQuery("#route_list_row_"+id).attr("flags",route.get_status());jQuery("#route_list_sel_"+id).attr("checked",true)}}}}}
jQuery("#route_head_action").attr("title",RouteControlListCMSModule.translation.action).Tooltip({showURL:false});jQuery("#route_head_state").attr("title",RouteControlListCMSModule.translation.route_state).Tooltip({showURL:false});jQuery("#route_filter").change(function(){RouteControlListCMSModule.filter_routes();});var mod_sc=WebCMS.get_module("search_control");if(mod_sc)
mod_sc.attach_to_module(this,"route_control_create_target");},update_row_html:function(res,route){if(!res||!route)
return;var rid=res.get_id();var rpid=route.get_id();var id=rid+"_"+rpid;this.create_route_status(rid,id,route);if(!this.shown)
return;var html="<tr id='route_list_row_"+id+"' flags='"+route.get_status()+"'>";var update=false;var prev_html=jQuery("#route_list_row_"+id).html();if(prev_html&&prev_html!=""){html="";update=true;}
var can_edit=res.get_access_level()>=Wialon.access_level("edit");var can_manage=res.get_access_level()>=Wialon.access_level("edit");if(can_edit){var route_enabled=this.enabled_img_url;if(!route.is_enabled())
route_enabled=this.disabled_img_url;}else{var route_enabled=this.enabled_none_img_url;if(!route.is_enabled())
route_enabled=this.disabled_none_img_url;}
html+="<td align='left' width='100%' id='route_list_name_"+id+"'>"+route.get_name()+"</td>";html+="<td id='route_list_enabled_"+id+"'><img src='"+WebCMS.get_img_url(route_enabled)+"'></td>";var edit_img=this.config_img_url;if(!can_edit)
edit_img=this.config_none_img_url;var manage_img=this.del_img_url;if(!can_manage)
manage_img=this.del_none_img_url;var unit=route.get_unit();html+="<td><img id='route_list_config_"+id+"' src='"+WebCMS.get_img_url(edit_img)+"' title='"+this.translation.config+"'/></td>";html+="<td><img id='route_list_copy_"+id+"' src='"+WebCMS.get_img_url(this.copy_img_url)+"' title='"+this.translation.copy+"'/></td>";html+="<td><img id='route_list_del_"+id+"' src='"+WebCMS.get_img_url(manage_img)+"' title='"+this.translation.del+"'/></td>";if(update){var checked=jQuery("#route_list_sel_"+id).attr("checked")?true:false;jQuery("#route_list_row_"+id).html(html);jQuery("#route_list_row_"+id).attr("flags",route.get_status());jQuery("#route_list_sel_"+id).attr("checked",checked);}else{html+="</tr>";jQuery("#route_control_list_target").append(html);}
jQuery("#route_list_name_"+id).attr("title","X").css({cursor:"default"}).Tooltip({showURL:false,bodyHandler:function(){return RouteControlListCMSModule.get_route_tip($(this).attr("id").substring(16).split("_"));}});jQuery("#route_list_config_"+id).css({cursor:"pointer"}).Tooltip({showURL:false});jQuery("#route_list_config_"+id).click(function(){RouteControlListCMSModule.on_edit_route($(this).attr("id").substring(18).split("_"));});if(can_edit){jQuery("#route_list_enabled_"+id).css({cursor:"pointer"}).click(function(){RouteControlListCMSModule.on_enable_route($(this).attr("id").substring(19).split("_"));});}
if(can_manage){jQuery("#route_list_del_"+id).css({cursor:"pointer"}).Tooltip({showURL:false}).click(function(){RouteControlListCMSModule.on_del_route($(this).attr("id").substring(15).split("_"));});}
jQuery("#route_list_copy_"+id).attr("title",RouteControlListCMSModule.translation.copy).css({cursor:"pointer"}).Tooltip({showURL:false}).click(function(){RouteControlListCMSModule.on_copy_route($(this).attr("id").substring(16).split("_"));});jQuery("#route_list_sel_"+id).css({cursor:"pointer"}).click(function(){RouteControlListCMSModule.on_show_route($(this).attr("id").substring(15).split("_"),true);});var title="";if(route.is_enabled())
title=this.translation.enabled;else
title=this.translation.disabled;jQuery("#route_list_enabled_"+id).attr("title",title).Tooltip({showURL:false});},create_route_status:function(rid,id,route){var unit=route.get_unit();if(!this.show_attr[id]){this.show_attr[id]=new Object();this.show_attr[id].unit_id=0;this.show_attr[id].zone=0;this.show_attr[id].state=route.get_status();}
if(unit&&!this.icons_attr[unit.get_id()]){this.icons_attr[unit.get_id()]=new Object();this.icons_attr[unit.get_id()].cookie=0;this.icons_attr[unit.get_id()].ref=0;}
this.update_route_status(Wialon.get_item(rid),route);Wialon.fire_event("route_state_changed",rid,{route:route,status:this.show_attr[id].status,error:this.show_attr[id].error});},update_route_status:function(res,route){if(!route||!res)
return;var rid=res.get_id();var rpid=route.get_id();var id=rid+"_"+rpid;var st=route.get_status();var zone=route.get_zone();var unit=route.get_unit();this.show_attr[id].status="";this.show_attr[id].error="";var mod_ust=WebCMS.get_module("user_settings_time");if(!mod_ust)
return;var cps=null;if(zone)
cps=zone.get_control_points();var cp=null;var cp_last=null;if(cps&&cps.length>route.get_point_index()){cp=cps[route.get_point_index()];cp_last=cps[cps.length-1];}
if(unit&&zone){var time=Wialon.get_server_time();var time_to=0;if(st&0x1)
this.show_attr[id].status+=RouteControlListCMSModule.translation.inactive;if(st&0x2){if(route.get_update_time()){time=route.get_update_time();if(cp_last)
time_to=route.get_activation_time()+cp_last.get_arrive_time()}else
time=0;this.show_attr[id].status+=sprintf(RouteControlListCMSModule.translation.finished_msg,mod_ust.format_time(time));if(!(this.show_attr[id].state&0x2))
WebCMS.log_msg(this.show_attr[id].status,1,false);}
if(st&0x4&&cp){time_to=route.get_activation_time()+cp.get_arrive_time();if(this.show_attr[id].status.length)
this.show_attr[id].status+="<br>";if(route.get_activation_time()&&cp.get_arrive_time())
this.show_attr[id].status+=sprintf(RouteControlListCMSModule.translation.waiting_for_arrive,unit.get_name(),cp.get_name(),mod_ust.format_time(route.get_activation_time()+cp.get_arrive_time()),cp.get_arrive_time_deviation());else
this.show_attr[id].status+=sprintf(RouteControlListCMSModule.translation.waiting_for_arrive2,unit.get_name(),cp.get_name());}
if(st&0x8&&cp){time_to=route.get_activation_time()+cp.get_departure_time();if(this.show_attr[id].status.length)
this.show_attr[id].status+="<br>";if(route.get_activation_time()&&cp.get_departure_time())
this.show_attr[id].status+=sprintf(RouteControlListCMSModule.translation.waiting_for_departure,unit.get_name(),cp.get_name(),mod_ust.format_time(route.get_activation_time()+cp.get_departure_time()),cp.get_departure_time_deviation());else
this.show_attr[id].status+=sprintf(RouteControlListCMSModule.translation.waiting_for_departure2,unit.get_name(),cp.get_name());}
if(st&0x10){if(this.show_attr[id].error.length)
this.show_attr[id].error+="<br>";if(route.get_update_time())
time=route.get_update_time();else
time=route.get_activation_time();this.show_attr[id].error=sprintf(RouteControlListCMSModule.translation.zone_error,unit.get_name(),zone.get_name(),mod_ust.format_time(time));if(!(this.show_attr[id].state&0x10))
WebCMS.log_msg(this.show_attr[id].error,2,false);}
if(st&0x20&&time&&time_to){if(this.show_attr[id].error.length)
this.show_attr[id].error+="<br>";this.show_attr[id].error=sprintf(RouteControlListCMSModule.translation.too_late_msg,WebCMS.get_time_interval_text(time-time_to));if(!(this.show_attr[id].state&0x20))
WebCMS.log_msg(this.show_attr[id].error,2,false);}
if(st&0x40&&time&&time_to){if(this.show_attr[id].error.length)
this.show_attr[id].error+="<br>";this.show_attr[id].error=sprintf(RouteControlListCMSModule.translation.too_early_msg,WebCMS.get_time_interval_text(time_to-time));if(!(this.show_attr[id].state&0x40))
WebCMS.log_msg(this.show_attr[id].error,2,false);}
if(st==0){if(cps)
this.show_attr[id].status+=RouteControlListCMSModule.translation.unknown;else
this.show_attr[id].status+=sprintf(RouteControlListCMSModule.translation.zone_ok,unit.get_name(),zone.get_name());}}else
this.show_attr[id].status+=RouteControlListCMSModule.translation.zone_deleted;this.show_attr[id].state=st;},on_enable_route:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_route_control");if(!pl)
return;var route=pl.get_route(arr[1]);if(!route)
return;if(!pl.enable_route(route,!route.is_enabled(),function(id,error_msg,cparam){if(!id)
WebCMS.log_msg(sprintf("%s: %s",RouteControlListCMSModule.translation.error_enable,error_msg),2);else{WebCMS.log_msg(RouteControlListCMSModule.translation.succ_enable,1);if(cparam.route.is_enabled())
Wialon.fire_event("route_state_changed",cparam.res.get_id(),{route:cparam.route});else
Wialon.fire_event("route_state_changed",cparam.res.get_id(),{route_id:cparam.route.get_id()});}},{res:res,route:route})){WebCMS.log_msg(RouteControlListCMSModule.translation.error_enable,2);}},filter_routes:function(){var mask=this.list_filter;var filter=parseInt(jQuery("#route_filter").val());jQuery("[id^=route_list_row_]").each(function(){var flags=parseInt(jQuery(this).attr("flags"));var id_parts=jQuery(this).attr("id").split("_");var rid=id_parts[id_parts.length-2];var route=Wialon.get_item(rid).get_plugin("avl_route_control").get_route(id_parts[id_parts.length-1]);if((mask=="*"||WebCMS.compare_wildcard(route.get_name(),mask))&&(filter==0||(filter>0&&(flags&filter))||(filter<0&&-filter==rid)))
jQuery(this).show();else
jQuery(this).hide();});},get_route_tip:function(arr){if(!arr||arr.length!=2)
return"";if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_route_control");if(!pl)
return;var route=pl.get_route(arr[1]);if(!route)
return;var unit_name=route.get_unit()?route.get_unit().get_name():"";var zone_name=route.get_zone()?route.get_zone().get_name():"";RouteControlListCMSModule.update_route_status(res,route);var html="<table><thead><tr><td align='center'><b>"+route.get_description()+"</b><hr size='1'/></td></tr></thead>";if(route.get_zone())
html+="<tr><td>"+sprintf(RouteControlListCMSModule.translation.route_ttip,unit_name,zone_name)+"</td></tr>";else
html+="<tr><td>"+sprintf(RouteControlListCMSModule.translation.route_ttip,unit_name,RouteControlListCMSModule.translation.zone_deleted)+"</td></tr>";if(route.get_activation_time()){var mod_ust=WebCMS.get_module("user_settings_time");if(mod_ust)
html+="<tr><td>"+RouteControlListCMSModule.translation.activation_time+": "+mod_ust.format_time(route.get_activation_time())+"</td></tr>";}
html+="<tr><td><hr size='1'/></td></tr>";html+="<tr><td><b>"+RouteControlListCMSModule.show_attr[arr[0]+"_"+arr[1]].status+"</b></td></tr>";if(RouteControlListCMSModule.show_attr[arr[0]+"_"+arr[1]].error.length)
html+="<tr><td><b><span style='color: red'>"+RouteControlListCMSModule.show_attr[arr[0]+"_"+arr[1]].error+"</span></b></td></tr>";html+="</table>";return html;},on_resource_deleted:function(res,pl){if(!res||!pl)
return;var rid=res.get_id();var pl=res.get_plugin("avl_route_control");if(pl){var rcol=pl.get_routes();for(var j=0;j<rcol.length;j++){var route=rcol[j];Wialon.fire_event("route_state_changed",rid,{route_id:route.get_id()});}}
jQuery("[@id^=route_list_row_"+rid+"]").remove();jQuery("#route_filter_accounts > [value=-"+rid+"]").remove();RouteControlListCMSModule.filter_routes();},on_resource_created:function(res,pl){if(!res||!pl)
return;var jcol=pl.get_routes();for(var j=0;j<jcol.length;j++){var route=jcol[j];this.update_row_html(res,route);}
jQuery("#route_filter_accounts").append("<option value='-"+res.get_id()+"'>"+res.get_name()+"</option>");RouteControlListCMSModule.filter_routes();},on_route_updated:function(res,rp_col){if(!res)
return;if(typeof rp_col!="undefined"&&rp_col&&rp_col.length==2){var pl=res.get_plugin("avl_route_control");if(!pl)
return;var rp_id=rp_col[0];var rp_data=rp_col[1];if(rp_data){RouteControlListCMSModule.update_row_html(res,pl.get_route(rp_id));RouteControlListCMSModule.on_show_route([res.get_id(),rp_id],false);}else{var id=res.get_id()+"_"+rp_id;jQuery("#route_list_row_"+id).remove();Wialon.fire_event("route_state_changed",res.get_id(),{route_id:rp_id});var usi=WebCMS.get_module("unit_state_image");if(usi&&RouteControlListCMSModule.show_attr[id].unit_id){var unit_id=RouteControlListCMSModule.show_attr[id].unit_id;RouteControlListCMSModule.show_attr[id].unit_id=0;RouteControlListCMSModule.icons_attr[unit_id].ref--;if(!RouteControlListCMSModule.icons_attr[unit_id].ref){usi.remove_image(RouteControlListCMSModule.icons_attr[unit_id].cookie);RouteControlListCMSModule.icons_attr[unit_id].cookie=0;usi.refresh_layer(unit_id);}}}}else{var pl=res.get_plugin("avl_route_control");if(pl){var rcol=pl.get_routes();for(var j=0;j<rcol.length;j++){var route=rcol[j];this.update_row_html(res,route);}}}
RouteControlListCMSModule.filter_routes();},on_edit_route:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_route_control");if(!pl)
return;var route=pl.get_route(arr[1]);if(!route)
return;var mod_rdlg=WebCMS.get_module("route_control_dialog");if(mod_rdlg)
mod_rdlg.show(res.get_id(),route.get_id(),route.get_id());},on_copy_route:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_route_control");if(!pl)
return;var routes=pl.get_routes();var limit=pl.get_routes_limit();if(routes&&limit>=0&&routes.length>=limit){alert(this.translation.limit_reached);return;}
var route=pl.get_route(arr[1]);if(!route)
return;var mod_rdlg=WebCMS.get_module("route_control_dialog");if(mod_rdlg)
mod_rdlg.show(res.get_id(),route.get_id(),0);},on_del_route:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_route_control");if(!pl)
return;var route=pl.get_route(arr[1]);if(!route)
return;if(!confirm(sprintf(this.translation.del_confirm,route.get_name())))
return;pl.delete_route(route,function(result,error_text,cparam){if(!result)
WebCMS.log_msg(sprintf(RouteControlListCMSModule.translation.error_delete,cparam.name,error_text),2);else{WebCMS.log_msg(sprintf(RouteControlListCMSModule.translation.succ_delete,cparam.name),1);RouteControlListCMSModule.on_route_updated(cparam.res,[cparam.id,null]);}},{name:route.get_name(),res:res,id:route.get_id()});},on_show_route:function(arr,store){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_route_control");if(!pl)
return;var route=pl.get_route(arr[1]);if(!route)
return;var unit=route.get_unit();if(!unit)
return;var unit_id=unit.get_id();var id=arr[0]+"_"+arr[1];var checked=jQuery("#route_list_sel_"+id).attr("checked")?true:false;if(!this.shown)
checked=true;var mu=WebCMS.get_module("monitoring_units");var arr=new Array;var user=Wialon.get_current_user();if(!user)
return;if(user.get_private_property("roumc","0")=="1"||!checked){var usi=WebCMS.get_module("unit_state_image");if(usi){if(checked){if(!RouteControlListCMSModule.show_attr[id].unit_id){if(RouteControlListCMSModule.show_attr[id].error.length&&route.get_unit().get_position()){RouteControlListCMSModule.icons_attr[unit_id].ref++;RouteControlListCMSModule.show_attr[id].unit_id=unit_id;if(!RouteControlListCMSModule.icons_attr[unit_id].cookie)
RouteControlListCMSModule.icons_attr[unit_id].cookie=usi.add_image(route.get_unit(),WebCMS.get_img_url(RouteControlListCMSModule.exclamation_img_url),3,"");}}}
if(!checked||!RouteControlListCMSModule.show_attr[id].error.length){if(RouteControlListCMSModule.show_attr[id].unit_id){RouteControlListCMSModule.show_attr[id].unit_id=0;RouteControlListCMSModule.icons_attr[unit_id].ref--;if(!RouteControlListCMSModule.icons_attr[unit_id].ref){usi.remove_image(RouteControlListCMSModule.icons_attr[unit_id].cookie);RouteControlListCMSModule.icons_attr[unit_id].cookie=0;}}}
usi.refresh_layer(unit_id);}}
if(store)
RouteControlListCMSModule.store_settings();},get_info_text:function(unit){return null;},on_gen_event:function(){var resources=Wialon.get_resources();for(var i=0;i<resources.length;i++){var pl=resources[i].get_plugin("avl_route_control");if(!pl)
return;var routes=pl.get_routes();for(var ii=0;ii<routes.length;ii++){if(routes[ii].get_status()&0x20||routes[ii].get_status()&0x40){var id_res=resources[i].get_id();var id_route=routes[ii].get_id();Wialon.fire_event("route_state_changed",id_res,{route:routes[ii],status:RouteControlListCMSModule.show_attr[id_res+"_"+id_route].status,error:RouteControlListCMSModule.show_attr[id_res+"_"+id_route].error});}}}},store_settings:function(){var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;var col=new Array;jQuery("[@id^=route_list_sel_]").each(function(){if(jQuery(this).attr("checked")?true:false){var id=$(this).attr("id").substring(15);col.push(id);}});var prop_value=jQuery.toJSON(col);user.set_private_property("rtsl",prop_value);mod_us.store_settings();},get_table_html:function(use_act_time){var html="<table>";html+="<tr><td>"+this.translation.name+":</td>";html+="<td align='left'><input type='text' style='width: 150px' id='route_control_dlg_props_name'/></td></tr>";html+="<tr><td>"+this.translation.descr+":</td>";html+="<td align='left'><input type='text' style='width: 150px' id='route_control_dlg_props_descr'/></td></tr>";html+="<tr><td>"+this.translation.geofence+":</td>";html+="<td align='left'><select id='route_control_dlg_props_zone'/></td></tr>";html+="<tr><td>"+this.translation.auto_del+":</td>";html+="<td align='left'><input type='checkbox' id='route_control_dlg_props_zone_ad'/></td></tr>";html+="<tr><td>"+this.translation.skip_cp+":</td>";html+="<td align='left'><input type='checkbox' id='route_control_dlg_props_zone_cps'/></td></tr>";if(use_act_time){html+="<tr><td>"+this.translation.act_time+":</td>";html+="<td align='left'><input type='checkbox' checked id='route_control_dlg_props_act_use'/>&nbsp;<input type='text' style='width: 150px' id='route_control_dlg_props_act_val'/></td></tr>";}
html+="<tr><td>"+this.translation.enabled+":</td>";html+="<td align='left'><input type='checkbox' id='route_control_dlg_props_enabled' checked/></td></tr>";html+="<tr><td>"+this.translation.gen_events+":</td>";html+="<td align='left'><input type='checkbox' id='route_control_dlg_props_gen_events' checked/></td></tr>";html+="</table>";return html;},init_table_html:function(res,base_rc,zn){var mod_ust=WebCMS.get_module("user_settings_time");if(!res||!mod_ust)
return false;var date=new Date();date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0);var act_time=mod_ust.get_abs_time(date.getTime()/1000);var pl=res.get_plugin("avl_zones_library");if(!pl)
return false;var zones=pl.get_zones();for(var i=0;zones&&i<zones.length;i++)
jQuery("#route_control_dlg_props_zone").append("<option value='"+zones[i].get_id()+"' cps='"+(zones[i].get_control_points()?"1":"0")+"'>"+zones[i].get_name()+"</option>");if(base_rc){jQuery("#route_control_dlg_props_name").val(base_rc.get_name());jQuery("#route_control_dlg_props_descr").val(base_rc.get_description());var flags=base_rc.get_flags();var zone=base_rc.get_zone();if(flags&0x1){if(!zone)
jQuery("#route_control_dlg_props_zone").append("<option value='0' disabled selected>"+this.translation.geofence_rem+"</option>");else
jQuery("#route_control_dlg_props_zone").val(zone.get_id());}
if(flags&0x2)
jQuery("#route_control_dlg_props_zone_ad").attr("checked",true);if(flags&0x10)
jQuery("#route_control_dlg_props_zone_cps").attr("checked",true);if(base_rc.get_activation_time()){act_time=base_rc.get_activation_time();jQuery("#route_control_dlg_props_act_use").attr("checked",true);}else{jQuery("#route_control_dlg_props_act_use").attr("checked",false);jQuery("#route_control_dlg_props_act_val").attr("disabled",true);}
if(flags&0x20)
jQuery("#route_control_dlg_props_gen_events").attr("checked",true);else
jQuery("#route_control_dlg_props_gen_events").removeAttr("checked");if(!base_rc.is_enabled())
jQuery("#route_control_dlg_props_enabled").removeAttr("checked");}
jQuery("#route_control_dlg_props_act_val").date_input({lang:WebCMS.get_lang()}).setDateTimeAbs(act_time);jQuery("#route_control_dlg_props_zone").change(function(){if(jQuery("#route_control_dlg_props_zone").val()){if(parseInt(jQuery("#route_control_dlg_props_zone option[selected]").attr("cps")))
jQuery("#route_control_dlg_props_zone_ad,#route_control_dlg_props_zone_cps").removeAttr("disabled");else
jQuery("#route_control_dlg_props_zone_ad,#route_control_dlg_props_zone_cps").attr("disabled",true);}}).click().change();jQuery("#route_control_dlg_props_act_use").click(function(){jQuery("#route_control_dlg_props_act_val").attr("disabled",!jQuery(this).attr("checked"));});if(!base_rc){if(zn)
jQuery("#route_control_dlg_props_zone").val(zn.get_id());jQuery("#route_control_dlg_props_zone").change();}
return true;},construct_route_control:function(res){var route=new WialonUnitRouteConstructor;route.set_name(jQuery("#route_control_dlg_props_name").val());route.set_description(jQuery("#route_control_dlg_props_descr").val());var act_use=0;if(jQuery("#route_control_dlg_props_act_use").size()&&jQuery("#route_control_dlg_props_act_use").attr("checked"))
route.set_activation_time(jQuery("#route_control_dlg_props_act_val").getDateTimeAbs());else{route.set_activation_time(0);act_use=1;}
var zone=jQuery("#route_control_dlg_props_zone").val();if(parseInt(zone)>0){if(!res)
return;var plz=res.get_plugin("avl_zones_library");if(!plz)
return;zone=plz.get_zone(parseInt(zone));}
route.set_zone(zone);var flags=act_use;if(jQuery("#route_control_dlg_props_zone_ad").attr("checked")&&!(jQuery("#route_control_dlg_props_zone_ad").attr("disabled")?true:false))
flags|=0x2;if(jQuery("#route_control_dlg_props_zone_cps").attr("checked")&&!(jQuery("#route_control_dlg_props_zone_cps").attr("disabled")?true:false))
flags|=0x10;if(jQuery("#route_control_dlg_props_gen_events").attr("checked"))
flags|=0x20;route.enabled=jQuery("#route_control_dlg_props_enabled").attr("checked")?true:false;route.set_flags(flags);var points=zone.get_control_points();if(points&&act_use&&flags&0x10){for(var i=0;i<points.length;i++){if(!points[i])
continue;if(points[i].get_arrive_time()||points[i].get_departure_time()){alert(this.translation.warning);break;}}}
return route;},update_list_filter:function(filter){this.list_filter=filter;this.filter_routes();}});var UserSettingsRouteControlCMSModule=Base.extend({constructor:null,show_control:-1,priority:-10,type:"user_settings_route_control",translation:{},get_type:function(){return"user_settings_route_control";},get_row_html:function(){return"<tr><td>"+this.translation.route_control_show+":</td><td><input type='checkbox' id='user_settings_route_control_show'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#user_settings_route_control_show").attr("checked",this.show_control).attr("title",this.translation.title).Tooltip({showURL:false});},save_row_data:function(){var show=jQuery("#user_settings_route_control_show").attr("checked")?1:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("usrc",show?"1":"0");mod_us.store_settings();this.show_control=show;},on_init:function(){var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);var user=Wialon.get_current_user();if(!user)
return;if(user.get_private_property("usrc","1")=="1")
this.show_control=1;else
this.show_control=0;var mod_uit=WebCMS.get_module("unit_info_text");if(mod_uit)
mod_uit.add_info_text(UserSettingsRouteControlCMSModule);},get_info_text:function(unit){var arr=new Array;if(!this.show_control)
return arr;var user=Wialon.get_current_user();if(!user)
return arr;var mod_rcl=WebCMS.get_module("route_control_list");if(!mod_rcl)
return arr;var resources=Wialon.get_resources();for(var id in mod_rcl.show_attr){var ids=id.split("_");var res=null;for(var i=0;i<resources.length;i++)
if(resources[i].get_id()==ids[0]){res=resources[i];break;}
if(!res)
continue;var pl=res.get_plugin("avl_route_control");if(pl){var route=pl.get_route(ids[1]);if(!route||!route.get_unit())
continue;if(route.get_unit().get_id()==unit.get_id()){mod_rcl.update_route_status(res,route);var val="";if(mod_rcl.show_attr[id].status.length)
val+=""+mod_rcl.show_attr[id].status+"";if(val.length)
val+="<br>";if(mod_rcl.show_attr[id].error.length)
val+="<span style='color: red'>"+mod_rcl.show_attr[id].error+"</span>";arr.push({name:route.get_name(),value:val});}}}
return arr;}});WebCMS.register_module(UserSettingsRouteControlCMSModule);WebCMS.register_module(RouteControlListCMSModule);var RouteControlDialogCMSModule=Base.extend({constructor:null,get_type:function(){return"route_control_dialog";},show:function(res_id,base_id,save_id,zone_id){if(typeof res_id=="undefined")
res_id=0;if(typeof base_id=="undefined")
base_id=0;if(typeof save_id=="undefined")
save_id=0;if(typeof zone_id=="undefined")
zone_id=0;var mod_wiz=WebCMS.get_module("wizard_dlg");if(mod_wiz)
mod_wiz.show("/route_control_dialog/route_control_dlg.html",{res_id:res_id,base_id:base_id,save_id:save_id,zone_id:zone_id});}});WebCMS.register_module(RouteControlDialogCMSModule);var RouteControlCreateCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"route_control_create";},on_init:function(){jQuery("#route_control_create_target").click(function(){RouteControlCreateCMSModule.create_route_control();return false;}).attr("title",this.translation.title).Tooltip({showURL:false});},create_route_control:function(){var resources=Wialon.filter_items(Wialon.get_resources(),"edit");if(!resources||!resources.length){alert(this.translation.not_resource);return;}
var mod_rdlg=WebCMS.get_module("route_control_dialog");if(mod_rdlg)
mod_rdlg.show();}});WebCMS.register_module(RouteControlCreateCMSModule);var RouteControlActionCMSModule=Base.extend({constructor:null,img_evt_url:"/route_control_notification/route_control.png",translation:{},get_type:function(){return"route_control_action";},get_action_type:function(){return"route_control";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_evt_url);},get_title:function(res,nf){return this.translation.route_control;}});WebCMS.register_module(RouteControlActionCMSModule);var mod_lst=WebCMS.get_module("notify_list");if(mod_lst){mod_lst.register_action(RouteControlActionCMSModule);}
var NotifyTriggerRouteControlCMSModule=Base.extend({constructor:null,img_url:"/route_control_notification/route_control.png",translation:{},get_type:function(){return"notify_trigger_route_control";},get_trigger_type:function(){return"route_control";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(res,nf,tr){if(!res||!nf||!tr)
return"";return this.translation.route_control;}});WebCMS.register_module(NotifyTriggerRouteControlCMSModule);var mod_lst=WebCMS.get_module("notify_list");if(mod_lst)
mod_lst.register_trigger(NotifyTriggerRouteControlCMSModule);var JobsAssignRouteCMSModule=Base.extend({constructor:null,img_url:"/route_control_jobs/assign_route.png",translation:{},get_type:function(){return"jobs_assign_route";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(job){if(typeof job!="object")
return"";var name=job.get_action().get_param("name");var last_exec_time=this.translation.unknown;var time=job.get_last_done_time();var mod_ust=WebCMS.get_module("user_settings_time");if(time&&mod_ust)
last_exec_time=mod_ust.format_time(time);var html="<table><tr><td colspan='2'><b>"+this.translation.assign_route+"</b><hr size='1'/></td></tr>";html+="<tr><td colspan='2'>"+job.get_description()+"</td></tr>";html+="<tr><td>"+this.translation.route_name+":</td><td>"+name+"</td></tr>";html+="<tr><td>"+this.translation.last_exec_time+":</td><td>"+last_exec_time+"</td></tr>";html+="</table>";return html;}});var JobsRemoveRouteCMSModule=Base.extend({constructor:null,img_url:"/route_control_jobs/remove_route.png",translation:{},get_type:function(){return"jobs_remove_route";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(job){if(typeof job!="object")
return"";var finished=job.get_action().get_param("finished")?this.translation.yes:this.translation.no;var last_exec_time=this.translation.unknown;var time=job.get_last_done_time();var mod_ust=WebCMS.get_module("user_settings_time");if(time&&mod_ust)
last_exec_time=mod_ust.format_time(time);var html="<table><tr><td colspan='2'><b>"+this.translation.remove_route+"</b><hr size='1'/></td></tr>";html+="<tr><td colspan='2'>"+job.get_description()+"</td></tr>";html+="<tr><td>"+this.translation.finished+":</td><td>"+finished+"</td></tr>";html+="<tr><td>"+this.translation.last_exec_time+":</td><td>"+last_exec_time+"</td></tr>";html+="</table>";return html;}});WebCMS.register_module(JobsAssignRouteCMSModule);WebCMS.register_module(JobsRemoveRouteCMSModule);var DriversListCMSModule=Base.extend({constructor:null,translation:{},show_control:-1,config_img_url:"/drivers_list/configure.png",config_none_img_url:"/drivers_list/configure_none.png",del_img_url:"/drivers_list/del.png",del_none_img_url:"/drivers_list/del_none.png",action_head_img_url:"/drivers_list/action.png",copy_img_url:"/drivers_list/copy.png",bind_to_img_url:"/drivers_list/unit_in.png",unbind_from_img_url:"/drivers_list/unit_out.png",units_img_url:"/drivers_list/units.png",no_photo_img_url:"/drivers_list/no_photo.png",no_photo_small_img_url:"/drivers_list/no_photo_small.png",no_photo_large_img_url:"/drivers_list/no_photo_large.png",camera_img_url:"/drivers_list/camera.png",head_img_url:"/drivers_list/foldbar_drivers.png",acl_res:{},res_filter:0,type_filter:"-1",name_filter:"*",driver_unit:{},unit_driver:{},rows_array:new Array,rows_array_hash:new Object,all_drivers_alphabetical:new Array,all_drivers_hash:new Object,driver_resource_map:{},group_incompatible:1,get_type:function(){return"drivers_list";},on_init:function(){if(!available_modules.drivers)
return;Wialon.bind_event_handler("show_panel",0,function(event_type,event_id,event_data){if(event_id=="drivers")
DriversListCMSModule.on_display_init();});this.update_drivers_library();Wialon.bind_event_handler("item_created",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_resource")
DriversListCMSModule.on_resource_created(event_data,event_data.get_plugin("avl_drivers"));if(event_data.get_type()=="avl_unit")
DriversListCMSModule.on_unit_driver_updated(event_data);});Wialon.bind_event_handler("item_deleted",0,function(event_type,event_id,event_data){if(event_data.get_type()=="avl_resource")
DriversListCMSModule.on_resource_deleted(event_data,event_data.get_plugin("avl_drivers"));if(event_data.get_type()=="avl_unit")
DriversListCMSModule.on_unit_driver_updated(event_data,true);});Wialon.bind_event_handler("item_updated",0,function(event_type,event_id,event_data){if(typeof event_data.drvrsu!='undefined')
DriversListCMSModule.on_resource_updated(Wialon.get_item(event_id),event_data.drvrsu);if(typeof event_data.drv!='undefined')
DriversListCMSModule.on_unit_driver_updated(Wialon.get_item(event_id));if(typeof event_data.acl!='undefined'&&event_id==Wialon.get_current_user().get_id()){for(var i in event_data.acl){var item=Wialon.get_item(i);if(item&&item.get_type()=="avl_resource"&&DriversListCMSModule.acl_res[i]!=item.get_access_level()){DriversListCMSModule.acl_res[i]=item.get_access_level();DriversListCMSModule.on_resource_updated(item);}}}});var mod_wd=WebCMS.get_module("workspace_devices");if(mod_wd)
mod_wd.register_search(this);this.update_settings();var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(mod_map&&mod_menu&&this.show_control&&!disable_monitoring_settings){if(this.show_control==2)
mod_menu.register_unit_state_module(this);else
mod_map.register_unit_state_module(this);}
var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd&&!disable_monitoring_settings)
mod_usd.add_row(this);var mod_uit=WebCMS.get_module("unit_info_text");if(mod_uit)
mod_uit.add_info_text(this);},on_display_init:function(){if(this.shown){this.make_table();return;}else
this.shown=true;var mod=WebCMS.get_module("search_control");if(!mod)
return;mod.attach_to_module(this,"drivers_create_target");var mod_fctl=WebCMS.get_module("resource_filter_control");if(!mod_fctl)
return;mod_fctl.attach_to_module(this,"drivers_create_target");this.make_table();jQuery("#drivers_list_target_div").attr("title","X").Tooltip({showURL:false,track_children:true,bodyHandler:function(e){if(!e)
return"";var mod=DriversListCMSModule;var id=e;if(id=="drivers_head_unit")
return"<b>"+mod.translation.unit+"</b>";else if(id=="drivers_head_action")
return"<b>"+mod.translation.action+"</b>";else if(id=="drivers_head_camera")
return"<b>"+mod.translation.camera+"</b>";else if(id.substring(0,18)=="driver_list_photo_"){var arr=id.substr(18).split("_");return mod.get_driver_tip(arr);}else if(id.substring(0,17)=="driver_list_name_"){var arr=id.substr(17).split("_");return mod.get_driver_tip(arr);}else if(id.substring(0,18)=="driver_list_uicon_"){var unit=Wialon.get_item(jQuery("#"+id).attr("uid"));var mod_it=WebCMS.get_module("unit_info_text");if(mod_it)
return mod_it.get_info_text(unit);return"";}else if(id.substring(0,17)=="driver_list_bind_"){var bind=parseInt(jQuery("#"+id).attr("bind"));if(bind)
return"<b>"+mod.translation.bind+"</b>";else
return"<b>"+mod.translation.unbind+"</b>";}else if(id.substring(0,19)=="driver_list_config_")
return"<b>"+mod.translation.config+"</b>";else if(id.substring(0,17)=="driver_list_copy_")
return"<b>"+mod.translation.copy+"</b>";else if(id.substring(0,16)=="driver_list_del_")
return"<b>"+mod.translation.del+"</b>";return"";}}).click(function(evt){var target=evt.target;var id=target.id;if(typeof id=="undefined")
return;var mod=DriversListCMSModule;var arr=id.split("_");if(arr.length!=5)
return;if(arr[2]=="config")
mod.on_edit_driver([arr[3],arr[4]]);else if(arr[2]=="del")
mod.on_del_driver([arr[3],arr[4]]);else if(arr[2]=="bind")
mod.on_bind_driver([arr[3],arr[4]],parseInt(jQuery("#"+id).attr("bind")));else if(arr[2]=="copy")
mod.on_copy_driver([arr[3],arr[4]]);});},get_row_html_ft:function(pos){var mod=DriversListCMSModule;if(pos==0){var html="<tr class='drivers_head_tr'><td class='drivers_head_camera' id='drivers_head_camera'><img src='"+mod.camera_img_url+"'/></td>";html+="<td class='drivers_head_name' align='center'>"+mod.translation.drivers+"</td>";html+="<td class='drivers_head_unit' id='drivers_head_unit'><img src='"+WebCMS.get_img_url(mod.units_img_url)+"'</td>";html+="<td colspan='4' class='drivers_head_action' id='drivers_head_action'><img src='"+WebCMS.get_img_url(mod.action_head_img_url)+"'/></td></tr>";return{id:"drivers_row_header",html:html};}
var driver_obj=mod.rows_array[pos];if(!driver_obj||typeof driver_obj=="undefined")
return null;var driver=driver_obj.driver;var html="<tr class='drivers_tr' id='drivers_list_row_"+driver_obj.id+"'>";var img_edit_url=mod.config_none_img_url;if(mod.acl_res[driver_obj.rid]>=Wialon.access_level("edit"))
img_edit_url=mod.config_img_url;var img_delete_url=mod.del_none_img_url;if(mod.acl_res[driver_obj.rid]>=Wialon.access_level("edit"))
img_delete_url=mod.del_img_url;html+="<td class='driver_list_photo'><img id='driver_list_photo_"+driver_obj.id+"' src='"+(driver.get_ratio()?driver.get_image_url(32):mod.no_photo_img_url)+"'/></td>";html+="<td class='driver_list_name' id='driver_list_name_"+driver_obj.id+"'>"+driver.get_name()+"</td>";var uicon="<td class='driver_list_uicon' id='driver_list_uicon_"+driver_obj.id+"'>"+mod.translation.na+"</td>";var unit=Wialon.get_item(mod.driver_unit[driver_obj.id]);if(unit){var icon_pl=unit.get_plugin("avl_item_icon");if(icon_pl)
uicon="<td class='driver_list_uicon'><img src='"+icon_pl.get_icon_url(32)+"' id='driver_list_uicon_"+driver_obj.id+"' uid='"+unit.get_id()+"'/></td>";}
html+=uicon;if(unit)
html+="<td class='driver_list_unbind'><img id='driver_list_bind_"+driver_obj.id+"' src='"+WebCMS.get_img_url(mod.unbind_from_img_url)+"' bind='0''/></td>";else
html+="<td class='driver_list_bind'><img id='driver_list_bind_"+driver_obj.id+"' src='"+WebCMS.get_img_url(mod.bind_to_img_url)+"' bind='1'/></td>";html+="<td class='driver_list_config'><img id='driver_list_config_"+driver_obj.id+"' src='"+WebCMS.get_img_url(img_edit_url)+"'/></td>";html+="<td class='driver_list_copy'><img id='driver_list_copy_"+driver_obj.id+"' src='"+WebCMS.get_img_url(mod.copy_img_url)+"'/></td>";html+="<td class='driver_list_del'><img id='driver_list_del_"+driver_obj.id+"' src='"+WebCMS.get_img_url(img_delete_url)+"' "+(img_delete_url==mod.del_none_img_url?"style='cursor:auto'":"")+"/></td>";html+="</tr>";return{id:"drivers_list_row_"+driver_obj.id,html:html};},make_table:function(){if(!this.shown)
return;this.rows_array=new Array;this.rows_array_hash=new Object;this.rows_array_hash["drivers_row_header"]=this.rows_array.length;this.rows_array.push("drivers_row_header");var drivers=this.all_drivers_alphabetical;for(var i=0;i<drivers.length;i++){if(!this.check_filter(drivers[i]))
continue;this.rows_array_hash[drivers[i].id]=this.rows_array.length;this.rows_array.push(drivers[i]);}
var tbl_obj=new Object();tbl_obj.get_row=this.get_row_html_ft;tbl_obj.cols_count=7;tbl_obj.rows_count=this.rows_array.length;tbl_obj.erase=true;tbl_obj.gap=4;tbl_obj.parent_class="panel_parent";jQuery("#drivers_list_target").fast_table(tbl_obj);},update_resource_filter:function(filter){this.res_filter=filter;this.make_table();},update_type_filter:function(filter){this.type_filter=filter;this.make_table();},update_list_filter:function(filter){this.name_filter=filter;this.make_table();},update_drivers_library:function(){this.all_drivers_alphabetical=new Array;this.all_drivers_hash=new Object;var resources=Wialon.get_resources();for(var i=0;i<resources.length;i++){var res=resources[i];var rid=res.get_id();var plugin=res.get_plugin("avl_drivers");if(plugin){var dcol=plugin.get_drivers();for(var j=0;j<dcol.length;j++){var driver=dcol[j];var obj=new Object;obj.rid=rid;obj.did=driver.get_id();obj.id=obj.rid+"_"+obj.did;obj.driver=driver;obj.name=driver.get_name();obj.description=driver.get_description();obj.code=driver.get_code();obj.phone=driver.get_phone_number();obj.name_lc=obj.name.toLowerCase();obj.resource_id=res.get_id();this.all_drivers_alphabetical.push(obj);this.all_drivers_hash[obj.id]=obj;}}
this.acl_res[rid]=res.get_access_level();}
this.update_drivers_cache();this.all_drivers_alphabetical.sort(function(a,b){if(a.name_lc==b.name_lc)
return 0;if(a.name_lc>b.name_lc)
return 1;else
return-1;});},update_driver:function(rid,did,remove){var id=rid+"_"+did;var driver_obj=this.all_drivers_hash[id];var pos=this.rows_array_hash[id];if(remove){if(!driver_obj)
return;delete this.all_drivers_hash[id];for(var i=0;i<this.all_drivers_alphabetical.length;i++)
if(this.all_drivers_alphabetical[i].id==id){this.all_drivers_alphabetical.splice(i,1);break;}
if(typeof pos!="undefined"){delete this.rows_array_hash[id];this.rows_array.splice(pos,1);for(var rrid in this.rows_array_hash){if(this.rows_array_hash[rrid]>pos)
this.rows_array_hash[rrid]--;}
jQuery("#drivers_list_target").ft_remove_row(pos,"drivers_list_row_"+id);}
return;}
var res=Wialon.get_item(rid);if(!res)
return;var pl=res.get_plugin("avl_drivers")
if(!pl)
return;var driver=pl.get_driver(did);if(!driver)
return;var old_driver_obj=driver_obj;driver_obj=new Object;driver_obj.rid=rid;driver_obj.did=driver.get_id();driver_obj.id=driver_obj.rid+"_"+driver_obj.did;driver_obj.driver=driver;driver_obj.name=driver.get_name();driver_obj.name_lc=driver_obj.name.toLowerCase();driver_obj.name=driver.get_name();driver_obj.description=driver.get_description();driver_obj.code=driver.get_code();driver_obj.phone=driver.get_phone_number();if(!this.check_filter(driver_obj)){if(old_driver_obj)
this.update_driver(rid,did,true);var added=false;var name_lc=driver.get_name().toLowerCase();for(var i=0;i<this.all_drivers_alphabetical.length;i++){if(name_lc<this.all_drivers_alphabetical[i].name_lc&&!added){this.all_drivers_alphabetical.splice(i,0,driver_obj);i++;added=true;}}
if(!added)
this.all_drivers_alphabetical.push(driver_obj);this.all_drivers_hash[id]=driver_obj;return;}
var added=false;var name_lc=driver.get_name().toLowerCase();for(var i=0;i<this.all_drivers_alphabetical.length;i++){if(this.all_drivers_alphabetical[i].id==id){this.all_drivers_alphabetical.splice(i,1);i--;continue;}
if(name_lc<this.all_drivers_alphabetical[i].name_lc&&!added){this.all_drivers_alphabetical.splice(i,0,driver_obj);i++;added=true;}}
if(!added)
this.all_drivers_alphabetical.push(driver_obj);this.all_drivers_hash[id]=driver_obj;if(typeof pos!="undefined"){this.rows_array[pos]=driver_obj;jQuery("#drivers_list_target").ft_update_row("drivers_list_row_"+id);}else{this.rows_array_hash[id]=this.rows_array.length;this.rows_array.push(driver_obj);jQuery("#drivers_list_target").ft_append_rows(1);}},check_filter:function(driver_obj){var type_filter_ok=false;if(this.type_filter=="-1")
type_filter_ok=true;else if(this.type_filter=="-2"){if(!this.driver_unit[driver_obj.id])
type_filter_ok=true;}else if(this.type_filter=="-3"){if(this.driver_unit[driver_obj.id])
type_filter_ok=true;}
if(!type_filter_ok)
return false;if(this.name_filter!="*"&&!WebCMS.compare_wildcard(driver_obj.name,this.name_filter)&&!WebCMS.compare_wildcard(driver_obj.code,this.name_filter))
return false
if(this.res_filter!=0&&driver_obj.resource_id!=this.res_filter)
return false;return true;},get_driver_tip:function(arr){if(!arr||arr.length!=2)
return"";var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return"";var pl=res.get_plugin("avl_drivers");if(!pl)
return"";var driver=pl.get_driver(arr[1]);if(!driver)
return"";var html="<table><tr><td><img src='"+(driver.get_ratio()?driver.get_image_url(256):this.no_photo_large_img_url)+"'/></td></tr>";html+="<tr><td><b>"+driver.get_name()+"</b><hr size='1'/></td></tr>";html+="<tr><td>"+driver.get_phone_number()+"</td></tr>";html+="<tr><td>"+driver.get_description()+"</td></tr>";if(this.driver_unit[arr[0]+"_"+arr[1]]){var unit=Wialon.get_item(this.driver_unit[arr[0]+"_"+arr[1]]);if(unit)
html+="<tr><td>"+this.translation.unit+": "+unit.get_name()+"</td></tr>";}else
html+="<tr><td>"+this.translation.unit+": ---</td></tr>";html+="</table>";return html;},on_resource_deleted:function(res,pl){var rid=res.get_id();this.update_drivers_cache(null,[res]);if(pl){var drivers=pl.get_drivers();for(var j=0;j<drivers.length;j++){var driver=drivers[j];this.update_driver(rid,driver.get_id(),true);}}
var need_update=jQuery("#drivers_list_selector").val()==rid;jQuery("#drivers_list_selector > [value="+rid+"]").remove();if(need_update){this.res_filter=0;this.make_table();}},on_resource_created:function(res,pl){var rid=res.get_id();this.update_drivers_cache(null,[res]);if(pl){var drivers=pl.get_drivers();for(var j=0;j<drivers.length;j++){var driver=drivers[j];this.update_driver(rid,driver.get_id());}}
jQuery("#drivers_list_selector").append("<option value='"+rid+"'>"+res.get_name()+"</option>");},on_resource_updated:function(res,dr_col){if(!res)
return;this.update_drivers_cache(null,[res]);if(typeof dr_col!="undefined"&&dr_col&&dr_col.length==2){var did=dr_col[0];var driver_data=dr_col[1];if(driver_data)
this.update_driver(res.get_id(),did,false);else
this.update_driver(res.get_id(),did,true);}else{var pl=res.get_plugin("avl_drivers");if(pl){var drivers=pl.get_drivers();var rid=res.get_id();for(var j=0;j<drivers.length;j++){var driver=drivers[j];this.update_driver(res.get_id(),driver.get_id());}}}},on_unit_driver_updated:function(unit,deleted){if(!unit)
return false;if(deleted){var prev_driver=this.unit_driver[unit.get_id()];this.unit_driver[unit.get_id()]=[];if(prev_driver&&prev_driver.length){for(var i=0;i<prev_driver.length;i++){this.driver_unit[prev_driver[i].res.get_id()+"_"+prev_driver[i].drv.get_id()]=0;this.update_driver(prev_driver[i].res.get_id(),prev_driver[i].drv.get_id());}}
return;}
var prev_driver=this.unit_driver[unit.get_id()];this.update_drivers_cache([unit]);var curr_driver=this.unit_driver[unit.get_id()];var updated_rows={};if(prev_driver&&prev_driver.length){for(var i=0;i<prev_driver.length;i++){this.update_driver(prev_driver[i].res.get_id(),prev_driver[i].drv.get_id());updated_rows[prev_driver[i].res.get_id()+"_"+prev_driver[i].drv.get_id()]=1;}}
if(curr_driver&&curr_driver.length){for(var i=0;i<curr_driver.length;i++){if(updated_rows[curr_driver[i].res.get_id()+"_"+curr_driver[i].drv.get_id()])
continue;this.update_driver(curr_driver[i].res.get_id(),curr_driver[i].drv.get_id());updated_rows[curr_driver[i].res.get_id()+"_"+curr_driver[i].drv.get_id()]=1;}}
this.update_unit_state_html(unit);},on_edit_driver:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_drivers");if(!pl)
return;var driver=pl.get_driver(arr[1]);if(!driver)
return;var mod_rdlg=WebCMS.get_module("drivers_dialog");if(mod_rdlg)
mod_rdlg.show(res.get_id(),driver.get_id(),driver.get_id());},on_copy_driver:function(arr){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_drivers");if(!pl)
return;var drivers=pl.get_drivers();var limit=pl.get_drivers_limit();if(drivers&&limit>=0&&drivers.length>=limit){alert(this.translation.limit_reached);return;}
var driver=pl.get_driver(arr[1]);if(!driver)
return;var mod_rdlg=WebCMS.get_module("drivers_dialog");if(mod_rdlg)
mod_rdlg.show(res.get_id(),driver.get_id(),0);},on_bind_driver:function(arr,bind){if(!arr||arr.length!=2)
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_drivers");if(!pl)
return;var driver=pl.get_driver(arr[1]);if(!driver)
return;var mod_wiz=WebCMS.get_module("wizard_dlg");if(!mod_wiz)
return;var unit=this.driver_unit[arr[0]+"_"+arr[1]];mod_wiz.show("/drivers_list/bind_driver.html",{driver_id:arr[1],item_id:arr[0],bind:bind,unit_id:unit});},on_del_driver:function(arr){if(!arr||arr.length!=2)
return;if(this.acl_res[arr[0]]<Wialon.access_level("edit"))
return;var res=Wialon.get_item(arr[0]);if(!res||res.get_type()!="avl_resource")
return;var pl=res.get_plugin("avl_drivers");if(!pl)
return;var driver=pl.get_driver(arr[1]);if(!driver)
return;if(!confirm(sprintf(this.translation.del_confirm,driver.get_name())))
return;pl.delete_driver(driver,function(result,error_text,cparam){if(!result)
WebCMS.log_msg(sprintf(DriversListCMSModule.translation.error_delete,cparam.name,error_text),2);else
WebCMS.log_msg(sprintf(DriversListCMSModule.translation.succ_delete,cparam.name),1);},{name:driver.get_name(),res:res,id:driver.get_id()});},update_drivers_cache:function(units,resources){var mod_mit=WebCMS.get_module("unit_info_text_sensors");if(!mod_mit)
return;if(!units&&!resources){this.driver_unit={};this.unit_driver={};}
if(!units||!units.length)
units=Wialon.get_units();if(!resources||!resources.length)
resources=Wialon.get_resources();for(var i=0;i<units.length;i++){for(var j=0;j<resources.length;j++){if(!resources[j])
continue;var drv_pl=resources[j].get_plugin("avl_drivers");if(!drv_pl)
continue;var drivers=drv_pl.get_drivers();for(var k=0;k<drivers.length;k++)
if(this.driver_unit[resources[j].get_id()+"_"+drivers[k].get_id()]==units[i].get_id())
this.driver_unit[resources[j].get_id()+"_"+drivers[k].get_id()]=0;}}
for(var i=0;i<units.length;i++){if(!units[i])
continue;this.unit_driver[units[i].get_id()]=[];for(var j=0;j<resources.length;j++){if(!resources[j])
continue;var drv_pl=resources[j].get_plugin("avl_drivers");if(!drv_pl)
continue;var drivers=drv_pl.get_drivers();for(var k=0;k<drivers.length;k++){if(!this.driver_unit[resources[j].get_id()+"_"+drivers[k].get_id()]){if(drivers[k].get_code().toString().toLowerCase()==units[i].get_driver_code().toLowerCase()){this.unit_driver[units[i].get_id()].push({res:resources[j],drv:drivers[k]});this.driver_unit[resources[j].get_id()+"_"+drivers[k].get_id()]=units[i].get_id();}}}}}},get_search:function(){return{name:this.translation.drivers,comment:this.translation.search_by_drivers_comment,check_unit:function(unit,template){var code=unit.get_driver_code().toString().toLowerCase();if(!code||!code.length){return template.length?false:true;}
else if(WebCMS.compare_wildcard(code,template))
return true;var mod_dl=WebCMS.get_module("drivers_list");if(!mod_dl)
return false;var unit_driver=mod_dl.unit_driver[unit.get_id()];if(template.length){if(!unit_driver)
return false;for(var i=0;i<unit_driver.length;i++){var drv=unit_driver[i].drv;if(!drv)
continue;if(WebCMS.compare_wildcard(drv.get_name(),template))
return true;}}else if(!unit_driver)
return true;return false;}};},get_head_html:function(){return"<img id='monitoring_units_state_driver_head' src='"+WebCMS.get_img_url(this.head_img_url)+"'/>";},get_head_title:function(){return this.translation.drivers;},get_unit_state_html:function(unit){if(!unit)
return"&nbsp;";var drivers=this.unit_driver[unit.get_id()];if(!drivers||!drivers.length)
return"<span id='monitoring_units_state_driver_"+unit.get_id()+"'>"+this.translation.na+"</span>";var driver=drivers[0].drv;return"<span id='monitoring_units_state_driver_"+unit.get_id()+"'><img src='"+(driver.get_ratio()?driver.get_image_url(16):this.no_photo_small_img_url)+"'/></span>";},update_unit_state_html:function(unit){if(!unit)
return;var drivers=this.unit_driver[unit.get_id()];if(!drivers||!drivers.length){jQuery("#monitoring_units_state_driver_"+unit.get_id()).html("<span id='monitoring_units_state_driver_"+unit.get_id()+"'>"+this.translation.na+"</span>");return;}
var driver=drivers[0].drv;jQuery("#monitoring_units_state_driver_"+unit.get_id()).html("<img src='"+(driver.get_ratio()?driver.get_image_url(16):this.no_photo_small_img_url)+"'/>");},get_unit_state_title:function(unit){if(!unit)
return this.translation.na;var len=this.unit_driver[unit.get_id()].length;var format=this.translation.driver;if(len>1)
format=this.translation.driver+" #%d";var html="<table>";for(var i=0;i<len;i++){html+="<tr>";if(!this.unit_driver[unit.get_id()][i].drv.get_ratio())
html+="<td>"+sprintf(format,i+1)+"</td><td>"+this.unit_driver[unit.get_id()][i].drv.get_name()+"</td>";else
html+="<td>"+sprintf(format,i+1)+"</td><td><img src='"+this.unit_driver[unit.get_id()][i].drv.get_image_url(64)+"'/><br>"+this.unit_driver[unit.get_id()][i].drv.get_name()+"</td>";html+="</tr>";}
if(!len)
html+="<tr><td>"+this.translation.no_driver+"</td></tr>";html+="</table>";return html;},on_sort:function(units,asc){units.sort(function(a,b){var u1,u2;if(!asc){u1=a;u2=b;}else{u1=b;u2=a;}
var a_n=u1.get_driver_code();var b_n=u2.get_driver_code();if(a_n==b_n)
return 0;if(a_n>b_n)
return 1;else
return-1;});},get_row_tab_info:function(){return{id:"monitoring_settings",title:this.translation.tab_name};},get_row_html:function(){return"<tr><td><img src='"+this.head_img_url+"'/>&nbsp;"+this.translation.title_head+":</td><td><input type='checkbox' id='state_drivers_btn'/></td><td><input type='checkbox' id='state_drivers_btn_m'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#state_drivers_btn").attr("checked",this.show_control==1).attr("title",this.translation.tooltip).Tooltip({showURL:false});jQuery("#state_drivers_btn_m").attr("checked",this.show_control==2).attr("title",this.translation.tooltip_menu).Tooltip({showURL:false});jQuery("#state_drivers_btn").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_drivers_btn_m").removeAttr("checked");});jQuery("#state_drivers_btn_m").click(function(){if(jQuery(this).attr("checked")?true:false)
jQuery("#state_drivers_btn").removeAttr("checked");});},save_row_data:function(){var show=jQuery("#state_drivers_btn").attr("checked")?1:0;if(!show)
show=jQuery("#state_drivers_btn_m").attr("checked")?2:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("mu_driver",show);mod_us.store_settings();this.show_control=show;var mod_map=WebCMS.get_module("monitoring_units");var mod_menu=WebCMS.get_module("device_actions_menu");if(!mod_map||!mod_menu)
return;if(this.show_control==1)
mod_map.register_unit_state_module(this);else if(this.show_control==2)
mod_menu.register_unit_state_module(this);else
mod_map.unregister_unit_state_module(this);return true;},update_settings:function(){var user=Wialon.get_current_user();if(!user)
return;this.show_control=parseInt(user.get_private_property("mu_driver","2"));}});var UserSettingsDriversCMSModule=Base.extend({constructor:null,show_control:-1,priority:-10,translation:{},get_type:function(){return"user_settings_drivers";},get_row_html:function(){return"<tr><td>"+this.translation.drivers_show+":</td><td><input type='checkbox' id='user_settings_drivers_show'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#user_settings_drivers_show").attr("checked",this.show_control).attr("title",this.translation.title).Tooltip({showURL:false});},save_row_data:function(){var show=jQuery("#user_settings_drivers_show").attr("checked")?1:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("usd",show?"1":"0");mod_us.store_settings();this.show_control=show;},on_init:function(){if(!available_modules.drivers)
return;var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);var user=Wialon.get_current_user();if(!user)
return;if(user.get_private_property("usd","1")=="1")
this.show_control=1;else
this.show_control=0;var mod_uit=WebCMS.get_module("unit_info_text");if(mod_uit)
mod_uit.add_info_text(UserSettingsDriversCMSModule);var html="<br><select style='width:100%' id='drivers_type_select'>";html+="<option value='-1'>["+this.translation.all_drivers+"]</option>";html+="<option value='-2'>["+this.translation.all_unbinded_drivers+"]</option>";html+="<option value='-3'>["+this.translation.all_binded_drivers+"]</option>";html+="</select>";jQuery("#drivers_create_target").after(html);jQuery("#drivers_type_select").change(UserSettingsDriversCMSModule.on_select_driver_type);},on_select_driver_type:function(){var opt_id=jQuery("#drivers_type_select").val();var dl_mod=WebCMS.get_module("drivers_list");if(!dl_mod)
return;dl_mod.update_type_filter(opt_id);},get_info_text:function(unit){var arr=new Array;if(!this.show_control)
return arr;var mod_dl=WebCMS.get_module("drivers_list");if(!mod_dl)
return arr;if(mod_dl.unit_driver[unit.get_id()]){var len=mod_dl.unit_driver[unit.get_id()].length;var format=this.translation.driver;if(len>1)
format=this.translation.driver+" #%d";for(var i=0;i<len;i++){if(!mod_dl.unit_driver[unit.get_id()][i].drv.get_ratio())
arr.push({name:sprintf(format,i+1),value:mod_dl.unit_driver[unit.get_id()][i].drv.get_name()});else
arr.push({name:sprintf(format,i+1),value:"<img src='"+mod_dl.unit_driver[unit.get_id()][i].drv.get_image_url(64)+"'/><br>"+mod_dl.unit_driver[unit.get_id()][i].drv.get_name()});}}
return arr;}});WebCMS.register_module(DriversListCMSModule);WebCMS.register_module(UserSettingsDriversCMSModule);var DriversCreateCMSModule=Base.extend({constructor:null,translation:{},get_type:function(){return"drivers_create";},on_init:function(){jQuery("#drivers_create_target").click(function(){DriversCreateCMSModule.create_driver();return false;}).attr("title",this.translation.title).Tooltip({showURL:false});},create_driver:function(){var resources=Wialon.filter_items(Wialon.get_resources(),"edit");if(!resources||!resources.length){alert(this.translation.not_resource);return;}
if(resources&&resources.length==1){var driver_resource=resources[0];var pl=driver_resource.get_plugin("avl_drivers");if(!pl)
return;var drivers=pl.get_drivers();var limit=pl.get_drivers_limit();if(drivers&&limit>=0&&drivers.length>=limit){alert(this.translation.limit_reached);return;}}
var mod_rdlg=WebCMS.get_module("drivers_dialog");if(mod_rdlg)
mod_rdlg.show();}});WebCMS.register_module(DriversCreateCMSModule);var DriversDialogCMSModule=Base.extend({constructor:null,get_type:function(){return"drivers_dialog";},show:function(res_id,base_id,save_id){if(typeof res_id=="undefined")
res_id=0;if(typeof base_id=="undefined")
base_id=0;if(typeof save_id=="undefined")
save_id=0;var mod_wiz=WebCMS.get_module("wizard_dlg");if(mod_wiz)
mod_wiz.show("/drivers_dialog/drivers_dlg.html",{res_id:res_id,base_id:base_id,save_id:save_id});}});WebCMS.register_module(DriversDialogCMSModule);var DriversResetActionCMSModule=Base.extend({constructor:null,img_evt_url:"/drivers_reset_notification/drivers_reset_notification.png",translation:{},get_type:function(){return"drivers_reset_notification";},get_action_type:function(){return"drivers_reset";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_evt_url);},get_title:function(res,nf){return this.translation.text;}});WebCMS.register_module(DriversResetActionCMSModule);var mod_lst=WebCMS.get_module("notify_list");if(mod_lst)
mod_lst.register_action(DriversResetActionCMSModule);var NotifyTriggerServiceIntervalCMSModule=Base.extend({constructor:null,img_url:"/service_intervals_notification/service.png",translation:{},get_type:function(){return"notify_trigger_service_interval";},get_trigger_type:function(){return"service_intervals";},get_img_url:function(obj){return WebCMS.get_img_url(this.img_url);},get_title:function(res,nf,tr){if(!res||!nf||!tr)
return"";return this.translation.service_interval;}});WebCMS.register_module(NotifyTriggerServiceIntervalCMSModule);var mod_lst=WebCMS.get_module("notify_list");if(mod_lst)
mod_lst.register_trigger(NotifyTriggerServiceIntervalCMSModule);var UserSettingsMaintenanceCMSModule=Base.extend({constructor:null,show_control:-1,priority:-10,translation:{},get_type:function(){return"user_settings_maintenance";},get_row_html:function(){return"<tr><td>"+this.translation.maintenance_show+":</td><td><input type='checkbox' id='user_settings_maintenance_show'/></td></tr>";},is_row_ok:function(){return true;},bind_row_events:function(){jQuery("#user_settings_maintenance_show").attr("checked",this.show_control).attr("title",this.translation.title).Tooltip({showURL:false});},save_row_data:function(){var show=jQuery("#user_settings_maintenance_show").attr("checked")?1:0;if(show==this.show_control)
return;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("usms",show?"1":"0");mod_us.store_settings();this.show_control=show;},on_init:function(){if(!WebCMS.get_module("monitoring_map"))
return;var mod_usd=WebCMS.get_module("user_settings_dialog");if(mod_usd)
mod_usd.add_row(this);var user=Wialon.get_current_user();if(!user)
return;if(user.get_private_property("usms","1")=="1")
this.show_control=1;else
this.show_control=0;if(user.get_public_property("user_settings_maintenance","")!=""){user.set_public_property("user_settings_maintenance","");var mod_us=WebCMS.get_module("user_settings");if(mod_us)
mod_us.store_settings();}}});var UnitInfoTextMaintenanceCMSModule=Base.extend({constructor:null,translation:{},on_init:function(){var mod_uit=WebCMS.get_module("unit_info_text");if(mod_uit)
mod_uit.add_info_text(UnitInfoTextMaintenanceCMSModule);},get_type:function(){return"unit_info_text_maintenance";},get_info_text:function(unit){var arr=new Array;var user=Wialon.get_current_user();if(!user)
return;if(user.get_private_property("usms","1")=="0")
return arr;var pl=unit.get_plugin("avl_service_intervals");if(!pl)
return arr;var ivals=pl.get_service_intervals();for(var i=0;i<ivals.length;i++)
arr.push({name:ivals[i].get_name(),value:this.get_remained_text(unit,ivals[i])});return arr;},get_remained_text:function(device,service_interval){var html="";var mileage=parseInt(device.get_mileage_counter()/1000);var duration=parseInt(device.get_engine_hours_counter()/3600);if(service_interval.get_interval_mileage()){var remain=service_interval.get_prev_service_mileage()+service_interval.get_interval_mileage()-mileage;if(html.length)
html+=" ";if(remain>0)
html+=sprintf("<span style='color: green'>"+this.translation.km_left+"</span>",remain);else
html+=sprintf("<span style='color: red'>"+this.translation.km_exp+"</span>",Math.abs(remain));}
if(service_interval.get_interval_engine_hours()){var remain=service_interval.get_prev_service_engine_hours()+service_interval.get_interval_engine_hours()-duration;if(html.length)
html+=" ";if(remain>0)
html+=sprintf("<span style='color: green'>"+this.translation.eh_left+"</span>",remain);else
html+=sprintf("<span style='color: red'>"+this.translation.eh_exp+"</span>",Math.abs(remain));}
if(service_interval.get_interval_days()){var remain=service_interval.get_interval_days()-(Wialon.get_server_time()-service_interval.get_prev_service_time())/86400;if(html.length)
html+=" ";if(remain>0)
html+=sprintf("<span style='color: green'>"+this.translation.days_left+"</span>",remain);else
html+=sprintf("<span style='color: red'>"+this.translation.days_exp+"</span>",Math.abs(remain));}
return html;}});WebCMS.register_module(UserSettingsMaintenanceCMSModule);WebCMS.register_module(UnitInfoTextMaintenanceCMSModule);var WIALON_WEB_MODE_MAP=0;var WIALON_WEB_MODE_MESSAGES=1;var WIALON_WEB_MODE_REPORTS=2;var modes_panel_height;if(typeof modes_panel_height=="undefined")
modes_panel_height=41;var wialon_web_mode=WIALON_WEB_MODE_MAP;var wialon_web_fullscreen=false;var wialon_update_reports=false;var current_panel="";var gl_messages_h=0;var gl_reports_h=0;var gl_reports_version=1;var disable_monitoring_settings=0;OpenLayers.ImgPath="/skin/images/ol/";var tb_remove_orig=tb_remove;tb_remove=function(){jQuery(".olControlPanZoomBar").css({display:'block'});jQuery(".olControlScaleLine").css({display:'block'});jQuery(".olControlMousePosition").css({display:'block'});tb_remove_orig();}
var tb_show_orig=tb_show;tb_show=function(param,url,modal)
{jQuery(".olControlPanZoomBar").css({display:'none'});jQuery(".olControlScaleLine").css({display:'none'});jQuery(".olControlMousePosition").css({display:'none'});tb_show_orig(param,url,modal);}
function resize_log_panel()
{var id="panel_monitoring_map_target";var t=(parseInt(jQuery("#"+id).css("top"))+jQuery("#"+id).height())-(jQuery("#log_panel_target").height()+5);var l=parseInt(jQuery("#"+id).css("left"))+5;var w=jQuery("#"+id).width()-5*2;jQuery("#log_panel_target").css({top:t,left:l,width:w});jQuery("#log_panel_target").resize();}
function add_submenu(target,menu_items)
{if(target=="")
return;var html="<div class='sub_menu' id='sub_"+target+"' style='position: absolute; display: none; z-index: 30000;'><ul style='list-style-type: none;'>";for(var i=0;i<menu_items.length;i++){var mi=menu_items[i];var before=menu_items[i].before?menu_items[i].before:"";html+="<li style='line-height:30px !important;'>"+before+"<a id='sub_"+target+"_"+i+"' href='' style='display:inline !important;'>"+mi.name+"</a></li>";}
html+="</ul></div>";jQuery("body").append(html);for(var i=0;i<menu_items.length;i++){var index=i;var mi=menu_items[i];if(mi.func){var t=target;jQuery("#sub_"+target+"_"+index).bind("click",mi,function(evt){if(evt.data.func(evt.data.param)){if(typeof evt.data.change=='undefined')
jQuery("#"+target+"_target").html(evt.data.name);jQuery("#sub_"+t).hide();}
return false;});}}
jQuery("#"+target+"_target").Tooltip({showURL:false});jQuery("#"+target).click(function(){jQuery("div[id^=sub_menu_]").each(function(){if(jQuery(this).attr("id").substring(4)!=target)
jQuery(this).hide();});var win_width=jQuery(window).width();var ofs=jQuery("#"+target).offset();var width=jQuery("#sub_"+target).width();var left=ofs.left+10;if(ofs.left+width>win_width-20)
left=win_width-width-20;jQuery("#sub_"+target).css({left:left,top:ofs.top+jQuery("#"+target).height()+5}).slideToggle();return false;});}
function init_modes(modes,mode){if(typeof modes=="undefined")
return;for(var i=0;i<modes.length;i++){jQuery("#"+modes[i].id).bind("click",modes[i],function(evt){if(typeof evt.data.func=="function"){if(evt.data.func()){jQuery("td.mode").removeClass("mode_selected");jQuery(this).parent().addClass("mode_selected");}}
return false;}).Tooltip({showURL:false});jQuery("#"+modes[i].id).parent().disableTextSelect();if(typeof mode!="undefined"&&mode==modes[i].id)
jQuery("#"+modes[i].id).parent().addClass("mode_selected");}
jQuery("td.mode").disableTextSelect();jQuery("td.mode_no_padding").disableTextSelect();jQuery("input[id^=sub_menu_show_]").click(function(){var mode=jQuery(this).attr("id").substr(14);var checked=jQuery(this).attr("checked")?true:false;var mod_map=WebCMS.get_module("monitoring_map");if(!mod_map||!mod_map.map)
return;var layers=mod_map.map.layers;for(var i=0;i<layers.length;i++){var name=layers[i].name.split(" ");if(layers[i].isBaseLayer||layers[i].name=="Hittest Markers")
continue;if(layers[i].name=="ImageRenderer Markers"){if(layers[i].toplayer)
layers[i].toplayer.hide_marker();continue;}
if(mode=="messages"&&name[0]=="Messages"){layers[i].setVisibility(checked);if(checked)
layers[i].onMapResize();}else if(mode=="reports"&&name[0]=="Reports"){layers[i].setVisibility(checked);if(checked)
layers[i].onMapResize();}else if(mode=="map"&&name[0]!="Messages"&&name[0]!="Reports"){layers[i].setVisibility(checked);if(checked)
layers[i].onMapResize();}}
WebCMS.log_action("maplayer",mode);});}
function create_drag_div(panel_id,end_split_callback)
{if(jQuery("#dragDiv").size())
jQuery("#dragDiv").remove();if(typeof panel_id=="undefined"||panel_id=="")
return;var start_pos=0;var first_pos=0;var p="#"+panel_id;var pp="#panel_"+panel_id;var width=jQuery(window).width();var height=jQuery(window).height();if(jQuery.browser.opera)
height=window.innerHeight;var html="<div id='dragDiv' class='drag_line'><img src='/skin/images/split/resize.png' align='top' border='0' width='50px' height='4px' /></div>";jQuery("body").append(html);jQuery("#dragDiv").css({left:jQuery(pp).offset().left,top:jQuery(pp).offset().top+jQuery(pp).height()-1,width:jQuery(pp).width()});if(jQuery.browser.opera)
jQuery("#dragDiv").css({zIndex:800});function start_split(e){if(e.type=="mousedown"){first_pos=start_pos=jQuery("#dragDiv").offset().top;jQuery(document).bind("mousemove",do_split).bind("mouseup",end_split);jQuery("#dragDiv").addClass("drag_line_hover");}
return false;}
function do_split(e){if(e.pageX&&e.pageY&&(e.pageX<(width-10))&&(e.pageX>10)&&(e.pageY<(height-100))&&(e.pageY>100)){var offs=start_pos-e.pageY;jQuery("#dragDiv").css({top:jQuery("#dragDiv").offset().top-offs});start_pos=jQuery("#dragDiv").offset().top;}
return false;}
function end_split(e){jQuery(document).unbind("mousemove",do_split).unbind("mouseup",end_split);jQuery("#dragDiv").removeClass("drag_line_hover");if(e.pageX&&e.pageY&&(e.pageX<(width-10))&&(e.pageX>10)&&(e.pageY<(height-100))&&(e.pageY>100)){if(jQuery("#dragDiv").offset().top==first_pos)
return;var offs=first_pos-e.pageY;var s=jQuery(p).GetPanelSize();jQuery(p).SetPanelSize(s.w,s.h-offs);jQuery(p).Update();if(end_split_callback)
end_split_callback(panel_id);jQuery(window).trigger('resize');}else{jQuery("#dragDiv").css({top:first_pos});}
return false;}
function resize_split(e){jQuery("#dragDiv").css({left:jQuery(pp).offset().left,width:jQuery(pp).width()});width=jQuery(window).width();height=jQuery(window).height();if(jQuery.browser.opera)
height=window.innerHeight;}
jQuery("#dragDiv").bind("mousedown",start_split);jQuery("#dragDiv").bind("resize",resize_split);}
function create_vsplit(pid,eosfunc)
{if(!pid)
return;var did='vsplit_div_'+pid;jQuery('#'+did).remove();var html='<div id="'+did+'" class="vsplit"><img src="/skin/images/split/vresize.png" style="border: 0px; height: 50px; margin-top: 150px; width: 4px;" /></div>';jQuery('body').append(html);var panel=jQuery('#panel_'+pid);var div=jQuery('#'+did);div.css({height:panel.height(),left:panel.offset().left+panel.width()-1,top:panel.offset().top});if(jQuery.browser.opera)
div.css({zIndex:800});var start_x;function start_split(){start_x=div.offset().left;div.addClass('vsplit_hover');jQuery(document).mousemove(move_split);jQuery(document).mouseup(end_split);return false;};function move_split(e){var width=jQuery(window).width();if(e.pageX&&e.pageX>350&&e.pageX<width-200)
div.css({left:e.pageX});return false;};function end_split(e){jQuery(document).unbind('mousemove',move_split);jQuery(document).unbind('mouseup',end_split);div.removeClass('vsplit_hover');var width=jQuery(window).width();if(typeof e.pageX=="undefined"||e.pageX==null){div.css({left:start_x});}else{if(e.pageX<350)
e.pageX=350;else if(e.pageX>width-200)
e.pageX=width-200;if(div.offset().left==start_x)
return;var offset=e.pageX-start_x;var panel=jQuery('#'+pid);var size=panel.GetPanelSize();panel.SetPanelSize(size.w+offset,size.h);panel.Update();if(eosfunc)
eosfunc(pid);jQuery(window).resize();}
return false;};function resize_split(){div.css({height:panel.height(),left:panel.offset().left+panel.width()-1,top:panel.offset().top});};div.mousedown(start_split);jQuery(div).resize(resize_split);}
function delete_vsplit(pid){jQuery('#vsplit_div_'+pid).remove();}
function load_panel_width(panel)
{var user=Wialon.get_current_user();if(user)
return user.get_private_property("vsplit_"+panel);return null;}
function save_panel_width(panel)
{var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(!mod_us||!user)
return;user.set_private_property("vsplit_"+panel,jQuery("#"+panel).GetPanelSize().w);mod_us.store_settings();}
var full_screen_map=false;var full_screen_messages=false;var full_screen_reports=false;var prev_left_panel_id="block_left_panel";function full_screen_mode(switch_full_screen)
{var full_screen=false;var panel="";var panel2="";var drag_panel="";var vsplit_panel="";var after_resize_proc=null;var after_end_split=null;delete_vsplit(prev_left_panel_id);if(wialon_web_mode==WIALON_WEB_MODE_MAP){full_screen=full_screen_map;panel="block_left_panel";panel2="block_modes_panel";drag_panel="";vsplit_panel=panel;after_end_split=function(panel){var mod_fb=WebCMS.get_module("foldbar");if(mod_fb)
mod_fb.resize();save_panel_width(panel);};}else if(wialon_web_mode==WIALON_WEB_MODE_MESSAGES){full_screen=full_screen_messages;panel="messages_filter_target";panel2="block_modes_panel";drag_panel="monitoring_map_target";vsplit_panel=panel;after_resize_proc=function(){var mod_mt=WebCMS.get_module("messages_table");if(mod_mt)
mod_mt.resize();}
after_end_split=function(panel){var sz=jQuery("#"+panel).GetPanelSize();gl_messages_h=parseInt(sz.h);save_panel_width(panel);}}else if(wialon_web_mode==WIALON_WEB_MODE_REPORTS){full_screen=full_screen_reports;if(gl_reports_version==2)
panel="report_templates_filter_target";else
panel="reports_filter_target";panel2="block_modes_panel";drag_panel="monitoring_map_target";vsplit_panel=panel;after_end_split=function(panel){var sz=jQuery("#"+panel).GetPanelSize();gl_reports_h=parseInt(sz.h);save_panel_width(panel);}}else
return;prev_left_panel_id=panel;if(switch_full_screen)
full_screen=!full_screen;if(full_screen){jQuery("#hide_left_panel_target").attr("src","/skin/images/split/right.png").attr("title",jQuery("#full_screen_show").text()).Tooltip({showURL:false});jQuery("#"+panel).DisplayPanel(false);jQuery("#"+panel2).DisplayPanel(false);}else{jQuery("#hide_left_panel_target").attr("src","/skin/images/split/left.png").attr("title",jQuery("#full_screen_hide").text()).Tooltip({showURL:false});jQuery("#"+panel).DisplayPanel(true);jQuery("#"+panel2).DisplayPanel(true);}
wialon_web_fullscreen=full_screen;jQuery("#"+panel).Update();resize_log_panel();create_drag_div(drag_panel,after_end_split);if(!full_screen)
create_vsplit(vsplit_panel,after_end_split);if(wialon_web_mode==WIALON_WEB_MODE_MAP){full_screen_map=full_screen;}else if(wialon_web_mode==WIALON_WEB_MODE_MESSAGES){full_screen_messages=full_screen;}else if(wialon_web_mode==WIALON_WEB_MODE_REPORTS){full_screen_reports=full_screen;}
if(switch_full_screen)
setTimeout(function(){update_map_size();if(after_resize_proc)
after_resize_proc();},100);}
function hide_all_panels(update)
{jQuery("#block_left_panel").DisplayPanel(false);jQuery("#messages_filter_target").DisplayPanel(false);jQuery("#messages_table_target").DisplayPanel(false);jQuery(gl_reports_version==2?"#report_templates_filter_target":"#reports_filter_target").DisplayPanel(false);jQuery(gl_reports_version==2?"#report_result_target":"#reports_table_target").DisplayPanel(false);var mt_mod=WebCMS.get_module("messages_table");if(mt_mod)
mt_mod.stop_play(true);}
var initial_map_mode=1;function on_menu_monitoring()
{destroy_mode(wialon_web_mode);wialon_web_mode=WIALON_WEB_MODE_MAP;hide_all_panels(false);jQuery("#monitoring_map_target").DisplayPanel(true);full_screen_mode(false);set_ol_styles();setTimeout(function(){update_map_size();},100);FoldBarCMSModule.resize();if(!initial_map_mode)
WebCMS.log_action("mapmode","monitoring");else
initial_map_mode=0
return true;}
function on_menu_messages()
{destroy_mode(wialon_web_mode);wialon_web_mode=WIALON_WEB_MODE_MESSAGES;hide_all_panels(false);jQuery("#monitoring_map_target").DisplayPanel(true);jQuery("#messages_table_target").DisplayPanel(true);var s1=jQuery("#block_top_panel").GetPanelSize();var s2=jQuery("#block_bottom_panel").GetPanelSize();var s3=jQuery("#messages_table_target").GetPanelSize();var h=parseInt((jQuery(window).height()-(s1.h+s2.h))*0.5);if(h<s3.h)h=s3.h;if(gl_messages_h)h=gl_messages_h;jQuery("#monitoring_map_target").SetPanelSize(s2.w,h);full_screen_mode(false);var mod_msg_filter=WebCMS.get_module("messages_filter");var mod_msg_map=WebCMS.get_module("messages_map");var mod_msg_table=WebCMS.get_module("messages_table");if(mod_msg_map)mod_msg_map.prepare();if(mod_msg_filter)mod_msg_filter.prepare();if(mod_msg_table)mod_msg_table.prepare();set_ol_styles();setTimeout(function(){update_map_size();},100);WebCMS.log_action("mapmode","messages");return true;}
function on_menu_reports(report)
{destroy_mode(wialon_web_mode);wialon_web_mode=WIALON_WEB_MODE_REPORTS;hide_all_panels(false);jQuery("#monitoring_map_target").DisplayPanel(true);jQuery(gl_reports_version==2?"#report_result_target":"#reports_table_target").DisplayPanel(true);var s1=jQuery("#block_top_panel").GetPanelSize();var s2=jQuery("#block_bottom_panel").GetPanelSize();var s3=jQuery(gl_reports_version==2?"#report_result_target":"#reports_table_target").GetPanelSize();var h=parseInt((jQuery(window).height()-(s1.h+s2.h))*0.5);if(h<s3.h)h=s3.h;if(gl_reports_h)h=gl_reports_h;jQuery("#monitoring_map_target").SetPanelSize(s2.w,h);full_screen_mode(false);var mod_rpt_table=WebCMS.get_module("reports_table");var mod_rpt_map=WebCMS.get_module("reports_map");var mod_rpt_filter=WebCMS.get_module(gl_reports_version==2?"report_templates_filter":"reports_filter");if(mod_rpt_map)mod_rpt_map.prepare();if(mod_rpt_table)mod_rpt_table.prepare();if(mod_rpt_filter)mod_rpt_filter.prepare(report);set_ol_styles();setTimeout(function(){update_map_size();},100);WebCMS.log_action("mapmode","reports");if(wialon_update_reports){wialon_update_reports=false;ReportResultTableCMSModule.resize();}
return true;}
function destroy_mode(mode)
{}
var active_tool_module="";function destroy_tool()
{if(active_tool_module!=""){var dm=WebCMS.get_module(active_tool_module);if(dm)
dm.cancel();}
active_tool_module="";}
function on_menu_dimensions()
{var dm=WebCMS.get_module("dimensions");if(!dm)return false;destroy_tool();if(!dm.init_control())return false;active_tool_module="dimensions";WebCMS.log_action("tool",active_tool_module);return true;}
function on_menu_area(){var dm=WebCMS.get_module("area");if(!dm)return false;destroy_tool();if(!dm.init_control())return false;active_tool_module="area";WebCMS.log_action("tool",active_tool_module);return true;}
function on_menu_routing(){var dm=WebCMS.get_module("routing");if(!dm)return false;destroy_tool();if(!dm.init_control())return false;active_tool_module="routing";WebCMS.log_action("tool",active_tool_module);return true;}
function on_menu_hittest(){var dm=WebCMS.get_module("track_hit_test");if(!dm)return false;destroy_tool();if(!dm.init_control())return false;active_tool_module="track_hit_test";WebCMS.log_action("tool",active_tool_module);return true;}
function on_menu_address(){var dm=WebCMS.get_module("address");if(!dm)return false;destroy_tool();if(!dm.init_control())return false;active_tool_module="address";WebCMS.log_action("tool",active_tool_module);return true;}
function on_menu_language(lang)
{document.location.href="/service.html?lang="+lang;return true;}
function on_menu_nearest_units(){var dm=WebCMS.get_module("nearest_devices");if(!dm)return false;destroy_tool();if(!dm.init_control())return false;active_tool_module="nearest_devices";WebCMS.log_action("tool",active_tool_module);return true;}
function on_foldbar_switch(panel_id,new_panel_id)
{if(new_panel_id=="foldbar_reports"){if(typeof available_modules["reports"]!="undefined"){jQuery('#menu_modes_reports').click();jQuery('#reports_filter_content dt:first').click();}
return false;}
if(panel_id=="foldbar_geozones"){var mod_zc=WebCMS.get_module("zone_create");if(mod_zc&&mod_zc.is_active())
return false;}else if(panel_id=="foldbar_pois"){var mod_pc=WebCMS.get_module("poi_create");if(mod_pc&&mod_pc.is_active())
return false;var mod_pl=WebCMS.get_module("poi_list");if(mod_pl&&mod_pl.is_active())
return false;}
return true;}
var panelmode_counter=0;function on_foldbar_show(panel_id,width,height){panel_id=panel_id.substring(8);Wialon.fire_event("show_panel",panel_id);current_panel=panel_id;var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(mod_us&&user){if(user.get_private_property("fpnl","")!=panel_id){user.set_private_property("fpnl",panel_id);mod_us.store_settings();}}
if(panelmode_counter<2)
panelmode_counter++;else
WebCMS.log_action("panelmode",panel_id);}
function on_foldbar_resize(panel_id,width,height){panel_id=panel_id.substring(8);Wialon.fire_event("show_panel",panel_id);}
function update_map_size()
{var mm=null;mm=WebCMS.get_module("monitoring_map");if(mm&&mm.get_map()){mm.get_map().updateSize();mm.get_map().baseLayer.onMapResize();mm.get_map().baseLayer.redraw();if(wialon_web_mode==WIALON_WEB_MODE_MAP){var mp=WebCMS.get_module("monitoring_units_markers");if(mp&&mp.get_layer()&&mp.get_layer().visibility){mp.hide();mp.get_layer().onMapResize();mp.show();}}}}
Wialon.bind_event_handler("wialon_ready",0,function(event_type,event_id,event_data){jQuery("#block_top_panel").AddPanel({dock:'top',height:top_panel_height,bgColor:top_panel_fg_clr,fgColor:top_panel_bg_clr,corner:top_panel_corner,margin:top_panel_margin,padding:top_panel_padding});jQuery("#block_modes_panel").AddPanel({dock:'left',height:modes_panel_height,bgColor:top_panel_fg_clr,fgColor:top_panel_bg_clr,corner:top_panel_corner,margin:top_panel_margin,padding:top_panel_padding});jQuery("#block_bottom_panel").AddPanel({dock:'bottom',height:bottom_panel_height,bgColor:bottom_panel_fg_clr,fgColor:bottom_panel_bg_clr,corner:bottom_panel_corner,margin:bottom_panel_margin,padding:bottom_panel_padding});jQuery("#monitoring_map_target").AddPanel({dock:'center',bgColor:center_panel_fg_clr,center_fgColor:center_panel_bg_clr,corner:center_panel_corner,margin:center_panel_margin,padding:center_panel_padding});var panel_width=atoui(load_panel_width("block_left_panel"));if(!panel_width)
panel_width=left_panel_width;jQuery("#block_left_panel").AddPanel({dock:'left',width:panel_width,bgColor:left_panel_fg_clr,fgColor:left_panel_bg_clr,overflow:'hidden',corner:left_panel_corner,margin:left_panel_margin,padding:left_panel_padding});var panel_width=atoui(load_panel_width("messages_filter_target"));if(!panel_width)
panel_width=msg_filter_panel_width;jQuery("#messages_filter_target").AddPanel({dock:'left',width:panel_width,show:false,bgColor:msg_filter_panel_fg_clr,fgColor:msg_filter_panel_bg_clr,overflow:'hidden',corner:msg_filter_panel_corner,margin:msg_filter_panel_margin,padding:msg_filter_panel_padding});jQuery("#messages_table_target").AddPanel({dock:'center',show:false,bgColor:msg_table_panel_fg_clr,fgColor:msg_table_panel_bg_clr,overflow:'hidden',corner:msg_table_panel_corner,margin:msg_table_panel_margin,padding:msg_table_panel_padding});if(gl_reports_version==1){var panel_width=atoui(load_panel_width("reports_filter_target"));if(!panel_width)
panel_width=report_filter_panel_width;jQuery("#reports_filter_target").AddPanel({dock:'left',width:panel_width,show:false,bgColor:report_filter_panel_fg_clr,fgColor:report_filter_panel_bg_clr,overflow:'hidden',corner:report_filter_panel_corner,margin:report_filter_panel_margin,padding:report_filter_panel_padding});}else{var panel_width=atoui(load_panel_width("report_templates_filter_target"));if(!panel_width)
panel_width=report_filter_panel_width;jQuery("#report_templates_filter_target").AddPanel({dock:'left',width:panel_width,show:false,bgColor:report_filter_panel_fg_clr,fgColor:report_filter_panel_bg_clr,overflow:'hidden',corner:report_filter_panel_corner,margin:report_filter_panel_margin,padding:report_filter_panel_padding});}
if(gl_reports_version==1)
jQuery("#reports_table_target").AddPanel({dock:'center',show:false,bgColor:report_table_panel_fg_clr,fgColor:report_table_panel_bg_clr,overflow:'hidden',corner:report_table_panel_corner,margin:report_table_panel_margin,padding:report_table_panel_padding});else
jQuery("#report_result_target").AddPanel({dock:'center',show:false,bgColor:report_table_panel_fg_clr,fgColor:report_table_panel_bg_clr,overflow:'hidden',corner:report_table_panel_corner,margin:report_table_panel_margin,padding:report_table_panel_padding});jQuery("#log_panel_target").fadeTo('fast',log_panel_fade);var mod_filter=WebCMS.get_module("reports_filter");var mod_list=WebCMS.get_module("reports_list");if(mod_filter&&mod_list)
mod_list.set_callbacks(on_menu_reports,mod_filter.set_initial_report);on_menu_monitoring();jQuery("#hide_left_panel_target").click(function(){full_screen_mode(true);return false;}).css("cursor","pointer");});function set_ol_styles()
{setTimeout(function(){jQuery(".olControlOverviewMapElement").css("background-color",panel_fg_clr1).fadeTo("fast",0.9);},100);}
Wialon.bind_event_handler("wizard_dlg_created",0,function(event_type,event_id,event_data){jQuery(".wizard_dlg_title").corner(10+'px tl tr');jQuery(".wizard_dlg_buttons").corner(10+'px bl br');});jQuery(document).ready(function(){if(jQuery.browser.msie){jQuery("#monitoring_map_target_OpenLayers_ViewPort").css({position:'absolute'});}else if(jQuery.browser.opera){jQuery("#monitoring_map_target_OpenLayers_ViewPort").css({position:'relative'});}
var modes=[{id:"menu_modes_map",func:on_menu_monitoring},{id:"menu_modes_messages",func:on_menu_messages}];for(var module in available_modules){if(typeof available_modules[module]!="undefined"){if(module=="reports"){modes.push({id:"menu_modes_reports",func:on_menu_reports});break;}}}
init_modes(modes,"menu_modes_map");var groups=[['foldbar_monitoring','foldbar_routes'],[],['foldbar_devices']];var icons={foldbar_monitoring:"/skin/images/foldbar/foldbar_monitoring.png",foldbar_routes:"/skin/images/foldbar/foldbar_routes.png",foldbar_devices:"/skin/images/foldbar/foldbar_devices.png"}
var item_per_group=4;for(var module in available_modules){if(typeof available_modules[module]!="undefined"){var foldbar_id="foldbar_"+module;if(foldbar_id=="foldbar_pois"||foldbar_id=="foldbar_geozones")
groups[0].push(foldbar_id);if(foldbar_id=="foldbar_notifications"||foldbar_id=="foldbar_jobs"||foldbar_id=="foldbar_reports"||foldbar_id=="foldbar_route_control")
groups[1].push(foldbar_id);if(foldbar_id=="foldbar_users"||foldbar_id=="foldbar_units_groups"||foldbar_id=="foldbar_drivers")
groups[2].push(foldbar_id);if(foldbar_id=="foldbar_plots"||foldbar_id=="foldbar_cultivations"){groups[0].push(foldbar_id);icons[foldbar_id]=("/agro_plots/"+foldbar_id+".png");}else
icons[foldbar_id]=("/skin/images/foldbar/"+foldbar_id+".png");}}
for(var i=0;i<groups.length;i++){if(groups[i].length==0){groups[i]=null;groups.splice(i,1);if(i>0)i--;}}
var fbm=WebCMS.get_module("foldbar");if(fbm){fbm.load("block_left_panel",{on_switch:on_foldbar_switch,on_resize:on_foldbar_resize,on_show:on_foldbar_show,groups:groups,icons:icons,corner:0});var user=Wialon.get_current_user();if(user){var panel_id="foldbar_"+user.get_private_property("fpnl","monitoring");if(panel_id==""||jQuery("#"+panel_id).size()==0)
panel_id=="foldbar_monitoring";fbm.show_panel(panel_id);}}
add_submenu("menu_tools",[{name:jQuery("#sub_menu_dimensions").text(),func:on_menu_dimensions,change:0},{name:jQuery("#sub_menu_area").text(),func:on_menu_area,change:0},{name:jQuery("#sub_menu_address").text(),func:on_menu_address,change:0},{name:jQuery("#sub_menu_routing").text(),func:on_menu_routing,change:0},{name:jQuery("#sub_menu_hittest").text(),func:on_menu_hittest,change:0},{name:jQuery("#sub_menu_nearest_units").text(),func:on_menu_nearest_units,change:0}]);jQuery(window).resize(function(){jQuery("#monitoring_map_target").Update();resize_log_panel();jQuery("div").trigger("resize");update_map_size();});var mod_us=WebCMS.get_module("user_settings");var user=Wialon.get_current_user();if(mod_us&&user){if(user.get_public_property("foldbar_panel","")!=""){user.set_public_property("foldbar_panel","");mod_us.store_settings();}}
if(jQuery("#wialon_profile").size()){var login=Wialon.get_current_user().get_name();jQuery("#wialon_profile").attr("src","/theme/wialon_profile.html?login="+login);setTimeout(function(){if(!jQuery("#wialon_profile").contents().find("#login").size()){jQuery("#wialon_profile").remove();return;}
jQuery("#wialon_profile").fadeIn();jQuery("#wialon_profile").contents().find("#login").val(Wialon.get_current_user().get_name());jQuery("#wialon_profile").contents().find("input:button").click(function(){if(jQuery(this).attr("id")=="wialon_profile_close")
jQuery("#wialon_profile").contents().find("#closed").val("1");else
jQuery("#wialon_profile").contents().find("#closed").val("0");jQuery("#wialon_profile").load(function(){jQuery("#wialon_profile").remove();});jQuery("#wialon_profile").contents().find("#profile_form").submit();});},120000);}});