
if(typeof net=="undefined"||net==null){net=new Object();}
if(typeof net.watchee=="undefined"||net.watchee==null){net.watchee=new Object();}
net.watchee.RuleNameEnums=new Object();net.watchee.RuleNameEnums.FALLBACK="__FALLBACK__";net.watchee.RuleTypeEnums=[];net.watchee.RuleTypeEnum=function(ruleType,description){this.ruleType=ruleType;this.description=description||"";if(ruleType!="INVALID")
net.watchee.RuleTypeEnums.push(this);}
with(net.watchee){RuleTypeEnum.GEOFENCE=new RuleTypeEnum("GEOFENCE","Geofence enter or leave");RuleTypeEnum.GEOFENCE_LEAVE=new RuleTypeEnum("GEOFENCE_LEAVE");RuleTypeEnum.GEOFENCE_ENTER=new RuleTypeEnum("GEOFENCE_ENTER");RuleTypeEnum.SOS_BUTTON=new RuleTypeEnum("SOS_BUTTON");RuleTypeEnum.EXTERNAL_CHARGED_ON=new RuleTypeEnum("EXTERNAL_CHARGED_ON");RuleTypeEnum.EXTERNAL_CHARGED_OFF=new RuleTypeEnum("EXTERNAL_CHARGED_OFF");RuleTypeEnum.TRACKER_OFFLINE=new RuleTypeEnum("TRACKER_OFFLINE");RuleTypeEnum.BATTERY_LOW=new RuleTypeEnum("BATTERY_LOW");RuleTypeEnum.OVERSPEED=new RuleTypeEnum("OVERSPEED");RuleTypeEnum.MOVED=new RuleTypeEnum("MOVED");RuleTypeEnum.GPSSIGNAL_LOST=new RuleTypeEnum("GPSSIGNAL_LOST");RuleTypeEnum.GPSSIGNAL_OK=new RuleTypeEnum("GPSSIGNAL_OK");RuleTypeEnum.GPRS_LOST=new RuleTypeEnum("GPRS_LOST");RuleTypeEnum.GPRS_OK=new RuleTypeEnum("GPRS_OK");RuleTypeEnum.SMS_OPERATION=new RuleTypeEnum("SMS_OPERATION");RuleTypeEnum.GPRS_OPERATION=new RuleTypeEnum("GPRS_OPERATION");RuleTypeEnum.SCHEDULED_EVENT=new RuleTypeEnum("SCHEDULED_EVENT");RuleTypeEnum.ENTER_SLEEPMODE=new RuleTypeEnum("ENTER_SLEEPMODE");RuleTypeEnum.ENTER_AWAKE=new RuleTypeEnum("ENTER_AWAKE");RuleTypeEnum.FALLBACK=new RuleTypeEnum("FALLBACK","Base rule, fallback if no rule applies");RuleTypeEnum.INVALID=new RuleTypeEnum("INVALID");}
net.watchee.RuleTypeEnum.prototype.getId=function(){return this.ruleType;}
net.watchee.RuleTypeEnum.prototype.toSetActionString=function(){return net.watchee.PC_ACTION_SET+"."+this.getId();}
net.watchee.RuleTypeEnum.prototype.toRemoveActionString=function(){return net.watchee.PC_ACTION_REMOVE+"."+this.getId();}
net.watchee.RuleTypeEnum.prototype.getAutoRuleName=function(){return"__"+this.ruleType+"__";}
net.watchee.RuleTypeEnum.prototype.getDescription=function(){return this.description;}
net.watchee.RuleTypeEnum.prototype.isGeofenceType=function(){return this==net.watchee.RuleTypeEnum.GEOFENCE||this==net.watchee.RuleTypeEnum.GEOFENCE_LEAVE||this==net.watchee.RuleTypeEnum.GEOFENCE_ENTER;}
net.watchee.RuleTypeEnum.prototype.isSame=function(other){var other=other||null;if(other==null&&this.getId()==null)return true;if(other==null||this.getId()==null)return false;if(other.constructor==net.watchee.RuleTypeEnum)
return(this.getId()==other.getId())
else
return(this.getId()==other);}
net.watchee.RuleTypeEnum.lookup=function(ruleTypeId,defaultRuleTypeEnum){var defaultRuleTypeEnum=defaultRuleTypeEnum||net.watchee.RuleTypeEnum.INVALID;for(var i=0,l=net.watchee.RuleTypeEnums.length;i<l;i++){var ruleTypeEnum=net.watchee.RuleTypeEnums[i];if(ruleTypeEnum.getId()==ruleTypeId)
return ruleTypeEnum;}
return defaultRuleTypeEnum;}
net.watchee.EventSinkTypeEnums=[];net.watchee.EventSinkTypeEnum=function(eventSinkType,description){this.eventSinkType=eventSinkType;this.description=description||"";if(eventSinkType!="INVALID")
net.watchee.EventSinkTypeEnums.push(this);}
with(net.watchee){EventSinkTypeEnum.EMAIL=new EventSinkTypeEnum("EMAIL","Sending email");EventSinkTypeEnum.SMS=new EventSinkTypeEnum("SMS","Sending SMS");EventSinkTypeEnum.BROWSER=new EventSinkTypeEnum("BROWSER","Confirm in alarm table");EventSinkTypeEnum.DEVICECOMMAND=new EventSinkTypeEnum("DEVICECOMMAND","Sending doAction or doSetting");EventSinkTypeEnum.DEVICECOMMAND_TRACKINGRATE=new EventSinkTypeEnum("DEVICECOMMAND_TRACKINGRATE","Sending tracking rate");EventSinkTypeEnum.INVALID=new EventSinkTypeEnum("INVALID");}
net.watchee.EventSinkTypeEnum.prototype.getId=function(){return this.eventSinkType;}
net.watchee.EventSinkTypeEnum.prototype.getDescription=function(){return this.description;}
net.watchee.EventSinkTypeEnum.prototype.isEmail=function(){return this==net.watchee.EventSinkTypeEnum.EMAIL;}
net.watchee.EventSinkTypeEnum.prototype.isBrowser=function(){return this==net.watchee.EventSinkTypeEnum.BROWSER;}
net.watchee.EventSinkTypeEnum.prototype.isSame=function(other){var other=other||null;if(other==null&&this.getId()==null)return true;if(other==null||this.getId()==null)return false;if(other.constructor==net.watchee.EventSinkTypeEnum)
return(this.getId()==other.getId())
else
return(this.getId()==other);}
net.watchee.EventSinkTypeEnum.lookup=function(eventSinkTypeId,defaultEventSinkTypeEnum){var defaultEventSinkTypeEnum=defaultEventSinkTypeEnum||net.watchee.EventSinkTypeEnum.INVALID;for(var i=0,l=net.watchee.EventSinkTypeEnums.length;i<l;i++){var eventSinkTypeEnum=net.watchee.EventSinkTypeEnums[i];if(eventSinkTypeEnum.getId()==eventSinkTypeId)
return eventSinkTypeEnum;}
return defaultEventSinkTypeEnum;}
net.watchee.FilterTypeEnums=[];net.watchee.FilterTypeEnum=function(filterType,description){this.filterType=filterType;this.description=description||"";if(filterType!="INVALID")
net.watchee.FilterTypeEnums.push(this);}
with(net.watchee){FilterTypeEnum.CRON=new FilterTypeEnum("CRON","Cron based scheduler");FilterTypeEnum.FROM=new FilterTypeEnum("FROM","From expression");FilterTypeEnum.TO=new FilterTypeEnum("TO","To expression");FilterTypeEnum.INVALID=new FilterTypeEnum("INVALID");}
net.watchee.FilterTypeEnum.prototype.getId=function(){return this.filterType;}
net.watchee.FilterTypeEnum.prototype.getDescription=function(){return this.description;}
net.watchee.FilterTypeEnum.prototype.isCronType=function(){return this==net.watchee.FilterTypeEnum.CRON;}
net.watchee.FilterTypeEnum.prototype.isSame=function(other){var other=other||null;if(other==null&&this.getId()==null)return true;if(other==null||this.getId()==null)return false;if(other.constructor==net.watchee.FilterTypeEnum)
return(this.getId()==other.getId())
else
return(this.getId()==other);}
net.watchee.FilterTypeEnum.lookup=function(filterTypeId,defaultFilterTypeEnum){var defaultFilterTypeEnum=defaultFilterTypeEnum||net.watchee.FilterTypeEnum.INVALID;for(var i=0,l=net.watchee.FilterTypeEnums.length;i<l;i++){var filterTypeEnum=net.watchee.FilterTypeEnums[i];if(filterTypeEnum.getId()==filterTypeId)
return filterTypeEnum;}
return defaultFilterTypeEnum;}
net.watchee.RuleManager=function(watchee){this.watchee=watchee||null;if(this.watchee==null)
throw"IllegalArgumentException: net.watchee.RuleManager called with watchee == null";this.geofencesTO=null;this.rulesTO=null;this.getEventManager=function(){return this.watchee.getEventManager();}
this.getRequestResponseDispatcher=function(){return this.watchee.getRequestResponseDispatcher();}
this.sendGetGeofences=function(loginName,responseFp,responseThisArg,returnObj){if(this.watchee==null)return;var PropTO=org.xmlBlaster.util.PropTO;var propTOs=new Array();var bounceId=PropTO.VALUE_TASK_NAMED_GETGEOFENCES;propTOs.push(new PropTO(PropTO.KEY_SERVICENAME,PropTO.VALUE_SERVICE_GEOFENCE));propTOs.push(new PropTO(PropTO.KEY_TASK,PropTO.VALUE_TASK_NAMED_GETGEOFENCES));propTOs.push(new PropTO(PropTO.KEY_BOUNCE,bounceId));propTOs.push(new PropTO(PropTO.KEY_RESULTENCODING,PropTO.ENCODING_PLAIN));var serviceTO=new org.xmlBlaster.util.ServiceTO(propTOs)
var serviceListTO=new org.xmlBlaster.util.ServiceListTO(serviceTO);var silentlyDiscardOldIdentical=true;this.getRequestResponseDispatcher().registerRequest(bounceId,org.xmlBlaster.util.RequestResponseDispatcher.FOREVER_MULTIPLE_SHOTS,function(serviceTO,returnObj,requestInfo){var xml=serviceTO.getPropValue(PropTO.KEY_RESULT);var pcc=net.watchee.PropertyCollections.parseXml(xml);this.getEventManager().fireEvent("addGeofences",pcc);},this,returnObj,silentlyDiscardOldIdentical);this.watchee.publishServiceMessage(serviceListTO,responseFp,responseThisArg,returnObj);}
this.sendAddGeofence=function(propertyCollection,responseFp,responseThisArg,returnObj){if(this.watchee==null)return;var PropTO=org.xmlBlaster.util.PropTO;var propTOs=new Array();var bounceId=PropTO.VALUE_TASK_NAMED_ADDGEOFENCE;propTOs.push(new PropTO(PropTO.KEY_SERVICENAME,PropTO.VALUE_SERVICE_GEOFENCE));propTOs.push(new PropTO(PropTO.KEY_TASK,PropTO.VALUE_TASK_NAMED_ADDGEOFENCE));propTOs.push(new PropTO(PropTO.KEY_BOUNCE,bounceId));var serviceTO=new org.xmlBlaster.util.ServiceTO(propTOs)
var serviceListTO=new org.xmlBlaster.util.ServiceListTO(serviceTO);propTOs.push(new PropTO(PropTO.KEY_DATA,propertyCollection.toXml()));this.watchee.publishServiceMessage(serviceListTO,responseFp,responseThisArg,returnObj);}
this.sendRemoveGeofence=function(propertyCollection,responseFp,responseThisArg,returnObj){if(this.watchee==null)return;var PropTO=org.xmlBlaster.util.PropTO;var propTOs=new Array();var bounceId=PropTO.VALUE_TASK_NAMED_REMOVEGEOFENCE;propTOs.push(new PropTO(PropTO.KEY_SERVICENAME,PropTO.VALUE_SERVICE_GEOFENCE));propTOs.push(new PropTO(PropTO.KEY_TASK,PropTO.VALUE_TASK_NAMED_REMOVEGEOFENCE));propTOs.push(new PropTO(PropTO.KEY_BOUNCE,bounceId));var serviceTO=new org.xmlBlaster.util.ServiceTO(propTOs)
var serviceListTO=new org.xmlBlaster.util.ServiceListTO(serviceTO);propTOs.push(new PropTO(PropTO.KEY_DATA,propertyCollection.toXml()));this.watchee.publishServiceMessage(serviceListTO,responseFp,responseThisArg,returnObj);}
this.sendGetRules=function(loginNames,responseFp,responseThisArg,returnObj){if(this.watchee==null)return;var PropTO=org.xmlBlaster.util.PropTO;var propTOs=new Array();var bounceId=PropTO.VALUE_TASK_NAMED_GETRULES;propTOs.push(new PropTO(PropTO.KEY_SERVICENAME,PropTO.VALUE_SERVICE_RULE));propTOs.push(new PropTO(PropTO.KEY_TASK,PropTO.VALUE_TASK_NAMED_GETRULES));if(loginNames!=null&&loginNames.length>0){var list="";for(var i=0,l=loginNames.length;i<l;i++){if(i>0)list+=",";list+=loginNames[i];}
propTOs.push(new PropTO(PropTO.KEY_DATA,list));}
propTOs.push(new PropTO(PropTO.KEY_BOUNCE,bounceId));propTOs.push(new PropTO(PropTO.KEY_RESULTENCODING,PropTO.ENCODING_PLAIN));var serviceTO=new org.xmlBlaster.util.ServiceTO(propTOs)
var serviceListTO=new org.xmlBlaster.util.ServiceListTO(serviceTO);var silentlyDiscardOldIdentical=true;this.getRequestResponseDispatcher().registerRequest(bounceId,org.xmlBlaster.util.RequestResponseDispatcher.FOREVER_MULTIPLE_SHOTS,function(serviceTO,returnObj,requestInfo){var xml=serviceTO.getPropValue(PropTO.KEY_RESULT);var pcc=net.watchee.PropertyCollections.parseXml(xml);this.getEventManager().fireEvent("addRules",pcc);},this,returnObj,silentlyDiscardOldIdentical);this.watchee.publishServiceMessage(serviceListTO,responseFp,responseThisArg,returnObj);}
this.sendAddRule=function(propertyCollections,responseFp,responseThisArg,returnObj){if(this.watchee==null)return;var responseFp=responseFp||null;var responseThisArg=responseThisArg||this;var returnObj=returnObj||null;var PropTO=org.xmlBlaster.util.PropTO;var propTOs=new Array();var bounceId=PropTO.VALUE_TASK_NAMED_ADDRULE+"-"+this.getRequestResponseDispatcher().getRequestIdNextVal();propTOs.push(new PropTO(PropTO.KEY_SERVICENAME,PropTO.VALUE_SERVICE_RULE));propTOs.push(new PropTO(PropTO.KEY_TASK,PropTO.VALUE_TASK_NAMED_ADDRULE));propTOs.push(new PropTO(PropTO.KEY_BOUNCE,bounceId));var serviceTO=new org.xmlBlaster.util.ServiceTO(propTOs)
var serviceListTO=new org.xmlBlaster.util.ServiceListTO(serviceTO);propTOs.push(new PropTO(PropTO.KEY_DATA,propertyCollections.toXml()));if(responseFp!=null){var timeoutSec=10;this.getRequestResponseDispatcher().registerRequest(bounceId,timeoutSec,responseFp,responseThisArg,returnObj);}
return serviceListTO;}
this.sendRemoveRule=function(propertyCollection,responseFp,responseThisArg,returnObj){if(this.watchee==null)return;var responseFp=responseFp||null;var responseThisArg=responseThisArg||this;var returnObj=returnObj||null;var PropTO=org.xmlBlaster.util.PropTO;var propTOs=new Array();var bounceId=PropTO.VALUE_TASK_NAMED_REMOVERULE+"-"+this.getRequestResponseDispatcher().getRequestIdNextVal();propTOs.push(new PropTO(PropTO.KEY_SERVICENAME,PropTO.VALUE_SERVICE_RULE));propTOs.push(new PropTO(PropTO.KEY_TASK,PropTO.VALUE_TASK_NAMED_REMOVERULE));propTOs.push(new PropTO(PropTO.KEY_BOUNCE,bounceId));var serviceTO=new org.xmlBlaster.util.ServiceTO(propTOs)
var serviceListTO=new org.xmlBlaster.util.ServiceListTO(serviceTO);propTOs.push(new PropTO(PropTO.KEY_DATA,propertyCollection.toXml()));if(responseFp!=null){var timeoutSec=10;this.getRequestResponseDispatcher().registerRequest(bounceId,timeoutSec,responseFp,responseThisArg,returnObj);}
return serviceListTO;}
this.sendGetAlarms=function(loginName,responseFp,responseThisArg,returnObj,countOnly){var loginName=loginName||null;var countOnly=countOnly||false;if(this.watchee==null||loginName==null)return;var filterLimit=199;var PropTO=org.xmlBlaster.util.PropTO;var propTOs=new Array();var bounceId=PropTO.VALUE_TASK_NAMED_GETALARMS+this.getRequestResponseDispatcher().getRequestIdNextVal();propTOs.push(new PropTO(PropTO.KEY_SERVICENAME,PropTO.VALUE_SERVICE_ALARM));propTOs.push(new PropTO(PropTO.KEY_TASK,PropTO.VALUE_TASK_NAMED_GETALARMS));if(countOnly){propTOs.push(new PropTO(PropTO.KEY_DATA+":count",true));}
else{propTOs.push(new PropTO(PropTO.KEY_DATA+":filter/limit",filterLimit));}
propTOs.push(new PropTO(PropTO.KEY_DATA,loginName));propTOs.push(new PropTO(PropTO.KEY_BOUNCE,bounceId));propTOs.push(new PropTO(PropTO.KEY_RESULTENCODING,PropTO.ENCODING_PLAIN));var serviceTO=new org.xmlBlaster.util.ServiceTO(propTOs)
var serviceListTO=new org.xmlBlaster.util.ServiceListTO(serviceTO);var silentlyDiscardOldIdentical=true;this.getRequestResponseDispatcher().registerRequest(bounceId,org.xmlBlaster.util.RequestResponseDispatcher.FOREVER_MULTIPLE_SHOTS,function(serviceTO,returnObj,requestInfo){var xml=serviceTO.getPropValue(PropTO.KEY_RESULT);if(countOnly){this.fireCountAlarms(loginName,xml);}
else{var pcc=net.watchee.PropertyCollections.parseXml(xml);var hasMore=(pcc.size()>filterLimit);var alarmEventData={loginName:loginName,pcc:pcc,hasMore:hasMore};this.getEventManager().fireEvent("addAlarms",alarmEventData);}},this,returnObj,silentlyDiscardOldIdentical);this.watchee.publishServiceMessage(serviceListTO,responseFp,responseThisArg,returnObj);}
this.fireCountAlarms=function(loginName,countAlarms){if(this.watchee==null)return;this.watchee.getDevice(loginName).setCountAlarms(countAlarms);var countAlarmsInfo={loginName:loginName,countAlarms:countAlarms};this.getEventManager().fireEvent("countAlarms",countAlarmsInfo);}
this.sendConfirmAlarms=function(loginName,alarmTOArr,responseFp,responseThisArg,returnObj){if(this.watchee==null)return;var PropTO=org.xmlBlaster.util.PropTO;var propTOs=new Array();var bounceId=PropTO.VALUE_TASK_NAMED_CONFIRMALARM;var alarmIdCsv="";if(alarmTOArr==null){alarmIdCsv="*";}
else{for(var i=0,l=alarmTOArr.length;i<l;i++){var alarmTO=alarmTOArr[i];if(i>0)alarmIdCsv+=",";alarmIdCsv+=alarmTO.getAlarmId();}}
propTOs.push(new PropTO(PropTO.KEY_SERVICENAME,PropTO.VALUE_SERVICE_ALARM));propTOs.push(new PropTO(PropTO.KEY_TASK,PropTO.VALUE_TASK_NAMED_CONFIRMALARM));propTOs.push(new PropTO(PropTO.KEY_BOUNCE,bounceId));propTOs.push(new PropTO(PropTO.KEY_DATA,alarmIdCsv));if(alarmTOArr==null){propTOs.push(new PropTO("loginName",loginName));}
var serviceTO=new org.xmlBlaster.util.ServiceTO(propTOs)
var serviceListTO=new org.xmlBlaster.util.ServiceListTO(serviceTO);this.watchee.publishServiceMessage(serviceListTO,responseFp,responseThisArg,returnObj);var alarmConfirmEventData={loginName:loginName,alarmTOArr:alarmTOArr};this.getEventManager().fireEvent("confirmAlarms",alarmConfirmEventData);}}