// JavaScript Document
// Webservice handling
function constants(){}function Account(a){this.id=a.id,this.name=a.name,this.phone=a.telNumber,this.icon=a.icon,this.connected=a.connected,this.mapObject=null,this.latitude=null,this.longitude=null}var NetworkConnection,TrackingService;constants.LOGON_TRUE=1,constants.LOGON_FALSE=2,constants.WEBSOCKET_ERROR=3,constants.WEBSOCKET_CLOSED=4,constants.ACCOUNTS=5,constants.ACCOUNT=6,constants.TRACKER=7,constants.PLACEHOLDER=8,constants.UNSUPPORTED=9,constants.LOGON_INVALID=10,constants.CONNECTED=11,constants.DISCONNECTED=12,constants.KEYVAL=13,constants.JOURNEYLIST=14,constants.DEFAULT_GRIDROWNORMAL="grid-row-normal-yellow",constants.DEFAULT_GRIDROWACTIVE="grid-row-active-yellow",constants.DEFAULT_ACTIVITYHIGHLIGHT=1e3,constants.DEFAULT_INACTIVEVEHICLE=24,constants.DEFAULT_LATITUDE=53.357108745695996,constants.DEFAULT_LONGITUDE=-2.0874023437499933,constants.DEFAULT_MAPZOOM=6,constants.DEFAULT_FINDZOOM=15,constants.DEFAULT_UPDATETICK=15e3,constants.DEFAULT_INITIALTICK=2e3,constants.DEFAULT_SHOWLABELS="On",constants.DEFAULT_MARKER="car",constants.DEFAULT_SPEEDUNIT="miles",constants.DEFAULT_SHOWTRAFFIC="Off",constants.DEFAULT_SHOWSEAMAP="Off",constants.MARKERS=["car","truck","pda","largeVan","smallVan","boat","pickup","flatbed","flatbedCrane","flatbedCargo"],constants.DIRECTIONS=["<img src='img/arrows/north.png' title='North' />","<img src='img/arrows/northeast.png' title='North East' />","<img src='img/arrows/east.png' title='East' />","<img src='img/arrows/southeast.png' title='South East' />","<img src='img/arrows/south.png' title='South' />","<img src='img/arrows/southwest.png' title='South West' />","<img src='img/arrows/west.png' title='West' />","<img src='img/arrows/northwest.png' title='North West' />"],constants.TABLE_ID=0,constants.TABLE_CONNECTED=1,constants.TABLE_IGON=2,constants.TABLE_NAME=3,constants.TABLE_UPDATED=4,constants.TABLE_SPEED=5,constants.TABLE_DIRECTION=6,constants.TABLE_EDIT=7,constants.TABLE_LATITUDE=8,constants.TABLE_LONGITUDE=9,constants.TABLE_ALTITUDE=10,constants.TABLE_OKOKM=11,constants.TABLE_ICON=12,constants.TABLE_TIMESTAMP=13,constants.TABLE_KPH=14,constants.TABLE_SCROLL=15,constants.DISPLAY_TRACKING=0,constants.DISPLAY_JOURNEY=1,constants.DISPLAY_TRAFFIC=2,constants.GEOCODE_DELAY=3e3,constants.GEOCODE_RETRY=6e3,NetworkConnection={socket:null,init:function(a,b){if("WebSocket"in window)NetworkConnection.socket=new WebSocket(TrackingService.url);else if("MozWebSocket"in window)NetworkConnection.socket=new MozWebSocket(TrackingService.url);else{var c=new Object;c.Unsupported=!0,b(c);return}NetworkConnection.socket.onopen=a,NetworkConnection.socket.onmessage=function(a){try{var c=JSON.parse(a.data.replace(/[\s\x00]/g," "));b(c)}catch(d){console.log("NetworkConnection.socket.onmessage"),console.log(d),console.log(a)}},NetworkConnection.socket.onerror=function(a){var c=new Object;c.Error=!0,c.ErrorMsg=a.data,b(c)},NetworkConnection.socket.onclose=function(){var a=new Object;a.Error=!0,a.ErrorMsg="",b(a)}},send:function(a){NetworkConnection.socket.send(JSON.stringify(a))},close:function(){NetworkConnection.socket.close()}},Account.prototype.update=function(a){this.name=a.name,this.phone=a.telNumber,this.icon=a.icon},Account.prototype.updateTracker=function(a){this.latitude=a.gps.latitude,this.longitude=a.gps.longitude},TrackingService={username:"",password:"",sessionKick:!1,url:"",accounts:new Object,applicationCallback:null,init:function(a,b,c,d,e){TrackingService.username=a,TrackingService.password=b,TrackingService.sessionKick=c,TrackingService.url=d,TrackingService.applicationCallback=e,NetworkConnection.init(TrackingService.sendCredentials,TrackingService.dispatchMessage)},sendCredentials:function(){NetworkConnection.send({Login:{username:TrackingService.username,password:TrackingService.password,sessionID:Math.floor(Math.random()*4294967295),sessionKick:TrackingService.sessionKick}})},sendAccount:function(a,b,c){NetworkConnection.send({setAccount:{id:a,name:b,icon:c}})},sendKeyValuePairs:function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){NetworkConnection.send({keyval:{showlabels:i,gridrownormal:a,gridrowactive:b,activityhighlight:c,inactivevehicle:d,theme:e,lat:f,lon:g,magnify:h,markers:j,speedunit:k,traffic:l,seamap:m,findzoom:n}})},sendJourneyRequest:function(a,b,c){NetworkConnection.send({journeyReq:{outputType:"data",trackerID:a,dateFrom:b,dateTo:c,includeFlags:0,inJnyLimitIntvalKm:-1,revGeoKmInterval:0}})},onLoginReply:function(a){a.loggedIn?TrackingService.applicationCallback(constants.LOGON_TRUE,null):typeof a.dupeLogin!="undefined"?TrackingService.applicationCallback(constants.LOGON_FALSE,a.message):TrackingService.applicationCallback(constants.LOGON_INVALID,a.message)},closeConnection:function(){NetworkConnection.send({Logout:{}}),NetworkConnection.close()},addOrUpdateAccount:function(a){var b=TrackingService.accounts[a.id];typeof b!="undefined"?b.update(a):(b=new Account(a),TrackingService.accounts[a.id]=b)},addAccountPlaceHolder:function(a){desc=new Object,desc.id=a.id,desc.name=null,desc.phone=null,desc.icon=null,desc.connected=!1,desc.mapObject=null,TrackingService.addOrUpdateAccount(desc),TrackingService.applicationCallback(constants.PLACEHOLDER,desc);var b=TrackingService.accounts[a.id];typeof b!="undefined"&&(b.updateTracker(a),TrackingService.applicationCallback(constants.TRACKER,a))},dispatchMessage:function(a){if(typeof a.loginReply!="undefined")TrackingService.onLoginReply(a.loginReply);else if(typeof a.Accounts!="undefined")$.each(a.Accounts,function(){TrackingService.addOrUpdateAccount(this)}),TrackingService.applicationCallback(constants.ACCOUNTS,TrackingService.accounts);else if(typeof a.Account!="undefined")TrackingService.addOrUpdateAccount(a.Account),TrackingService.applicationCallback(constants.ACCOUNT,a.Account);else if(typeof a.Tracker!="undefined"){var b=TrackingService.accounts[a.Tracker.id];typeof b!="undefined"?(b.updateTracker(a.Tracker),TrackingService.applicationCallback(constants.TRACKER,a.Tracker)):TrackingService.addAccountPlaceHolder(a.Tracker)}else typeof a.Error!="undefined"?a.ErrorMsg==""?TrackingService.applicationCallback(constants.WEBSOCKET_CLOSED,a.ErrorMsg):TrackingService.applicationCallback(constants.WEBSOCKET_ERROR,a.ErrorMsg):typeof a.Unsupported!="undefined"?TrackingService.applicationCallback(constants.UNSUPPORTED,a.Account):typeof a.connected!="undefined"?TrackingService.applicationCallback(constants.CONNECTED,a):typeof a.disconnected!="undefined"?TrackingService.applicationCallback(constants.DISCONNECTED,a):typeof a.keyval!="undefined"?TrackingService.applicationCallback(constants.KEYVAL,a):typeof a.journeys!="undefined"?TrackingService.applicationCallback(constants.JOURNEYLIST,a):(console.log("Unknown message type"),console.log(a))}};
