Changed zouba directory heirarchy.
[ptas] / zouba / wrt / preview / script / lib / sapi / Logging.js
1 /**\r
2  * Logging.js\r
3  * \r
4  * Nokia Web Runtime Service API emulation \r
5  * WRT v1.1\r
6  * \r
7  * Copyright 2009 Nokia Corporation. All rights reserved.\r
8 */\r
9 \r
10  \r
11 (function(){\r
12         \r
13         var provider = 'Service.Logging',\r
14                 Interface = 'IDataSource';\r
15 \r
16         /**\r
17          * Landmark service\r
18          */\r
19         var LoggingService = function(){\r
20                 this.Add                                        = __Add;\r
21                 this.GetList                            = __GetList;\r
22                 this.Delete                                     = __Delete;\r
23                 this.RequestNotification        = __RequestNotification;                \r
24                 this.Cancel                                     = __Cancel;             \r
25 \r
26         }\r
27 \r
28         device.implementation.extend(provider, Interface, new LoggingService() );\r
29 \r
30 \r
31         /******************************************************/        \r
32         /******************************************************/        \r
33         /******************************************************/        \r
34 \r
35         var     context = device.implementation.context,\r
36                 _t = context._t,\r
37                 method = '',\r
38                 result = false,\r
39                 DBase = null;\r
40 \r
41         var transactionIds = new Array();\r
42         var tTransactionId = -1;\r
43         var isTraceInProgress = false;\r
44         var criteriaReq;\r
45         var callbackReq;\r
46 \r
47         /**\r
48          * Logging: Add\r
49          * @param {Object} criteria\r
50          * @param (function) callback\r
51          */\r
52         function __Add(criteria, callback, flag){\r
53                 method = "Add";\r
54                 //      Async call\r
55                 flag = flag || false;\r
56 \r
57                 if (!flag) {\r
58                         var result = ValidateAdd(criteria, callback);\r
59                         if (result.ErrorCode != 0) \r
60                                 return result;\r
61                 }                       \r
62                 \r
63                 \r
64                 if(typeof callback == 'function')\r
65                 {\r
66                         return context.callAsync(this, arguments.callee, criteria, callback);\r
67                 }\r
68                 DBase = context.getData(provider);\r
69                 var returnValue = DBase[criteria.Type];\r
70                 criteria.Item.id =      GenerateRandomNumber()+'';\r
71                 criteria.Item["EventTime"] = GetCurrDate();\r
72                 returnValue.push(criteria.Item);\r
73                 return context.Result(criteria.Item.id,0);\r
74         }\r
75 \r
76         /**\r
77          * Logging: GetList\r
78          * @param {Object} criteria\r
79          * @param (function) callback\r
80          */\r
81         function __GetList(criteria, callback, flag){   \r
82                 method = "GetList";\r
83                 //      Async call\r
84                 flag = flag || false;\r
85 \r
86                 if (!flag) {\r
87                         var result = ValidateGetList(criteria, callback);\r
88                         if (result.ErrorCode != 0) \r
89                                 return result;\r
90                 }                       \r
91                 \r
92                 \r
93                 if(typeof callback == 'function')\r
94                 {\r
95                         return context.callAsync(this, arguments.callee, criteria, callback);\r
96                 }\r
97                 if(criteria.Filter){\r
98                         context.notify(_t('%s:: GetList : filter not implemented in preview').arg(provider));\r
99                 }\r
100                                 \r
101                 DBase = context.getData(provider);\r
102                 var returnValue;\r
103                 // @todo: apply filter criteria\r
104                 returnValue = context.Iterator( DBase[criteria.Type] || [] );\r
105                 \r
106                 return context.Result(returnValue,0);\r
107         }\r
108 \r
109         /**\r
110          * Logging: Delete\r
111          * @param {Object} criteria\r
112          * @param (function) callback\r
113          */\r
114         function __Delete(criteria, callback, flag){\r
115                 method = "Delete";\r
116                 //      Async call\r
117                 flag = flag || false;           \r
118                 if (!flag) {\r
119                         if (!criteria || !criteria.Type) \r
120                                 return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgTypeMissing);\r
121 \r
122                         if (typeof criteria.Type != 'string') \r
123                                 return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgTypeInvalid);\r
124                         \r
125                         if (criteria.Type != 'Log') \r
126                                 return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgTypeInvalid);\r
127                         \r
128                         if (!criteria.Data) \r
129                                 return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgDataMissing);\r
130                         \r
131                         if(typeof criteria.Data != 'object')\r
132                                 return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgDataInvalid);\r
133 \r
134                         if(typeof criteria.Data.id == 'undefined')\r
135                                 return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgid);\r
136                         \r
137                         if (typeof criteria.Data.id != "string") \r
138                                 return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgidInvalid);\r
139                                 \r
140                         if(criteria.Data.id == '')\r
141                                 return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgidInvalid);\r
142                 }\r
143                 DBase = context.getData(provider);\r
144                 var returnValue,found = false;\r
145                 returnValue = DBase[criteria.Type];\r
146                 for(var i=0; i<returnValue.length; i++){\r
147                         if(returnValue[i].id == criteria.Data.id)\r
148                         {\r
149                                 found = true;\r
150                                 returnValue.splice(i,1);\r
151                         }                       \r
152                 }\r
153                 if(!found)\r
154                         return error(device.implementation.ERR_NOT_FOUND, msg.msgidInvalid);\r
155                 \r
156                 return context.Result(undefined,0);\r
157         }\r
158 \r
159         /**\r
160          * Logging: RequestNotification\r
161          * @param {Object} criteria\r
162          * @param (function) callback\r
163          */\r
164         function __RequestNotification(criteria, callback, flag){\r
165                 method = "RequestNotification";\r
166                 \r
167                 //      Async call\r
168                 flag = flag || false;           \r
169                 if (!flag) {\r
170                         if (!criteria || !criteria.Type) \r
171                                 return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgTypeMissing);\r
172 \r
173                         if (typeof criteria.Type != 'string') \r
174                                 return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgTypeInvalid);\r
175                         \r
176                         if (criteria.Type != 'Log') \r
177                                 return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgTypeInvalid);\r
178                         \r
179                         if (!criteria.Filter)\r
180                                 return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgFilterMissing);\r
181 \r
182                         if(typeof criteria.Filter != 'object') \r
183                                 return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgFilterInvalid);\r
184                         \r
185                         if(typeof criteria.Filter.DelayTime == 'undefined') \r
186                                 return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgDelayTimeMissing);\r
187                         \r
188                         if(typeof criteria.Filter.DelayTime != 'number')\r
189                                 return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgDelayTimeInvalid);\r
190                         if(criteria.Filter.DelayTime <= 0)\r
191                                 return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgDelayTimeInvalid);\r
192                         \r
193                         if(criteria.Filter.DelayTime < 1000000 )\r
194                         {\r
195                                 criteria.Filter.DelayTime = 1000000;\r
196                                 context.notify(_t('%s:: RequestNotification : Using DelayTime = 1000000').arg(provider));\r
197                         }\r
198                 }\r
199                 if(typeof callback != 'function')\r
200                                 return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgMissingCallback);\r
201 \r
202                 criteriaReq = criteria;\r
203                 callbackReq = callback;\r
204                 isTraceInProgress = true;\r
205 \r
206                 return notificationCall(criteria,callback);\r
207         }\r
208 \r
209         /**\r
210          * Logging: Cancel\r
211          * @param {Object} criteria\r
212          * @param (function) callback\r
213          */\r
214         function __Cancel(criteria){\r
215                         method = "Cancel";\r
216                         if (!criteria || typeof criteria.TransactionID == 'undefined') \r
217                                 return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgTransactionIdMissing);\r
218                         \r
219                         if (typeof criteria.TransactionID != 'number') \r
220                                 return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgTransactionIdInvalid);\r
221                         \r
222                         clearTimeout(criteria.TransactionID);\r
223                         if (criteria.TransactionID == tTransactionId) {\r
224                                 isTraceInProgress = false;\r
225                                 tTransactionId = -1;\r
226                         }\r
227                 return context.ErrorResult(device.implementation.ERR_SUCCESS);\r
228 \r
229         }\r
230         \r
231 \r
232         /**\r
233          * Location: error\r
234          * @param {number,string} ErrorCode and ErrorString\r
235          * Replaces Error String with method name\r
236          */\r
237         function error(code, msg /*, args...*/){\r
238 \r
239                 var args = ['Logging',method].concat([].slice.call(arguments,2));\r
240                 msg = msg ? _t().arg.apply(msg,args) : undefined;\r
241                 return context.ErrorResult(code, msg);\r
242         }\r
243         \r
244         /**\r
245          * Logging: notificationCall\r
246          * @param {} \r
247          * This function Calls callback function after given delay\r
248          */\r
249         function notificationCall(){\r
250                 var tid = setTimeout(function(){\r
251                 if(!isTraceInProgress)\r
252                         return;\r
253                         \r
254                 DBase = context.getData(provider);\r
255                 var returnValue;\r
256                 returnValue = context.Iterator( DBase[criteriaReq.Type] || [] );\r
257 \r
258                 var result,\r
259                         eventCode = {completed:2, error:4, progress:9},\r
260                 code = eventCode.completed;\r
261 \r
262                 callbackReq(tTransactionId,code,context.Result(returnValue,0));\r
263                 //notificationCall();\r
264                 }, criteriaReq.Filter.DelayTime/1000);\r
265                 if(tTransactionId == -1)\r
266                         tTransactionId = tid;\r
267                 return context.AsyncResult(tTransactionId);\r
268         }\r
269         \r
270         /**\r
271          * Helper functions\r
272          */\r
273 \r
274         /**\r
275          * GenerateRandomNumber\r
276          * @param {}array of log data for getting unique ID \r
277          * \r
278          */\r
279         function GenerateRandomNumber(arr)\r
280         {\r
281                 var randomnumber = Math.floor(Math.random() * 10001);\r
282                 randomnumber +=200;\r
283                 return randomnumber;\r
284         }\r
285 \r
286         /**\r
287          * GetCurrDate\r
288          * @param {}Gets date in internet format\r
289          * \r
290          */\r
291         function GetCurrDate()\r
292         {\r
293                 var d_names = new Array("Sunday", "Monday", "Tuesday",\r
294                 "Wednesday", "Thursday", "Friday", "Saturday");\r
295                 \r
296                 var m_names = new Array("January", "February", "March", \r
297                 "April", "May", "June", "July", "August", "September", \r
298                 "October", "November", "December");\r
299                 \r
300                 var ampm = "am";\r
301                 \r
302                 var d = new Date();\r
303                 var curr_day = d.getDay();\r
304                 var curr_date = d.getDate();\r
305                 if(curr_date <10)\r
306                         curr_date = "0"+curr_date;\r
307                 var curr_month = d.getMonth();\r
308                 var curr_year = d.getFullYear();\r
309                 var curr_hour = d.getHours();\r
310                 if(curr_hour > 11)\r
311                 {\r
312                         ampm = "pm";\r
313                 }\r
314                 else if(curr_hour <10)\r
315                 {\r
316                         curr_hour = "0"+curr_hour;\r
317                 }       \r
318                 var curr_min = d.getMinutes();\r
319                 if(curr_min <10)\r
320                         curr_min = "0"+curr_min;\r
321         \r
322                 var curr_sec = d.getSeconds();\r
323                 if(curr_sec <10)\r
324                         curr_sec = "0"+curr_sec;\r
325                 \r
326                 var strDate = d_names[curr_day]+', '+curr_date+' '+m_names[curr_month]+', '+curr_year+' '+curr_hour+':'+curr_min+':'+curr_sec+' '+ampm;\r
327                 return strDate;\r
328         }       \r
329 \r
330         /**\r
331          * ValidateAdd\r
332          * @param {object,function}\r
333          * Validates ADD arguments\r
334          */     \r
335         function ValidateAdd(criteria,callback)\r
336         {\r
337                 var type;\r
338                 if(!criteria || !criteria.Type)\r
339                         return error(device.implementation.ERR_MISSING_ARGUMENT,msg.msgTypeMissing);\r
340 \r
341                 if (typeof criteria.Type != 'string') \r
342                         return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgTypeInvalid);\r
343                 \r
344                 if(criteria.Type != 'Log')\r
345                         return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT,msg.msgTypeInvalid);\r
346                 \r
347                 if (!criteria.Item)\r
348                         return error(device.implementation.ERR_MISSING_ARGUMENT, msg.msgItemMissing);\r
349 \r
350                 if(typeof criteria.Item != 'object') \r
351                         return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgItemInvalid);\r
352                 \r
353                 \r
354                 if(typeof criteria.Item.EventType == "undefined")\r
355                         return error(device.implementation.ERR_MISSING_ARGUMENT,msg.msgEventTypeMissing);\r
356 \r
357                 if(typeof criteria.Item.EventType != "number" )\r
358                         return error(device.implementation.ERR_BAD_ARGUMENT_TYPE,msg.msgEventTypeInvalid);\r
359                 \r
360                 if(typeof criteria.Item.EventType == "number" && !(criteria.Item.EventType >=0 && criteria.Item.EventType <=4))\r
361                         return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT,msg.msgEventTypeInvalid);\r
362                 \r
363                 type = typeof criteria.Item.RemoteParty;\r
364                 if(type != 'undefined' &&  type != "string")\r
365                         return error(device.implementation.ERR_BAD_ARGUMENT_TYPE,msg.msgRemotePartyInvalid);\r
366                 \r
367                 type = typeof criteria.Item.Direction;\r
368                 if (type != 'undefined') {\r
369                         if (type != "number") \r
370                                 return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgDirectionInvalid);\r
371                         \r
372                         if (type == "number" && (criteria.Item.Direction < 0 || criteria.Item.Direction > 6)) \r
373                                 return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgDirectionInvalid);\r
374                 }\r
375 \r
376                 type = typeof criteria.Item.EventDuration;\r
377                 if(type != 'undefined' &&  type != "number")\r
378                         return error(device.implementation.ERR_BAD_ARGUMENT_TYPE,msg.msgEventDurationInvalid);\r
379                         \r
380                 type = typeof criteria.Item.DeliveryStatus;\r
381                 if (type != 'undefined') {\r
382                         if (type != "number") \r
383                                 return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgDeliveryStatusInvalid);\r
384                         \r
385                         if (type == "number" && (criteria.Item.DeliveryStatus < 0 || criteria.Item.DeliveryStatus > 6)) \r
386                                 return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgDeliveryStatusInvalid);\r
387                 }\r
388                 \r
389                 type = typeof criteria.Item.Subject;\r
390                 if(type != 'undefined' &&  type != "string")\r
391                         return error(device.implementation.ERR_BAD_ARGUMENT_TYPE,msg.msgSubjectInvalid);\r
392 \r
393                 type = typeof criteria.Item.PhoneNumber;\r
394                 if(type != 'undefined' &&  type != "string")\r
395                         return error(device.implementation.ERR_BAD_ARGUMENT_TYPE,msg.msgPhoneNumberInvalid);\r
396 \r
397                 type = typeof criteria.Item.Link;\r
398                 if(type != 'undefined' &&  type != "number")\r
399                         return error(device.implementation.ERR_BAD_ARGUMENT_TYPE,msg.msgLinkInvalid);\r
400 \r
401                 type = typeof criteria.Item.LogFlags;\r
402                 if(type != 'undefined' && (type != "number" || (criteria.Item.LogFlags != 1 && criteria.Item.LogFlags != 0)))\r
403                         return error(device.implementation.ERR_BAD_ARGUMENT_TYPE,msg.msgLogFlagsInvalid);\r
404 \r
405                 return context.ErrorResult(device.implementation.ERR_SUCCESS, "");\r
406         }       \r
407 \r
408         /**\r
409          * ValidateGetList\r
410          * @param {object,function}\r
411          * Validates GetList function\r
412          */     \r
413         function ValidateGetList(criteria,callback)\r
414         {\r
415                 var type;\r
416                 if(!criteria || !criteria.Type)\r
417                         return error(device.implementation.ERR_MISSING_ARGUMENT,msg.msgTypeMissing);\r
418 \r
419                 if (typeof criteria.Type != 'string') \r
420                         return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgTypeInvalid);\r
421                 \r
422                 if(criteria.Type != 'Log')\r
423                         return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT,msg.msgTypeInvalid);\r
424 \r
425                 type = typeof criteria.Filter;\r
426                 if(type != 'undefined' &&  type != "object")\r
427                         return error(device.implementation.ERR_BAD_ARGUMENT_TYPE,msg.msgFilterInvalid);\r
428                 \r
429                 if(type == 'undefined')\r
430                         return context.ErrorResult(device.implementation.ERR_SUCCESS, "");              \r
431                 \r
432                 type = typeof criteria.Filter.id;\r
433                 if(type != 'undefined' &&  type != "string")\r
434                         return error(device.implementation.ERR_BAD_ARGUMENT_TYPE,msg.msgid);\r
435                 \r
436                 if(type != 'undefined')\r
437                         return context.ErrorResult(device.implementation.ERR_SUCCESS, "");  // if id is given all other filters will be ignored\r
438 \r
439                 type = typeof criteria.Filter.EventType;\r
440                 if (type != 'undefined') {\r
441                         if (type != "number") \r
442                                 return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgEventTypeInvalid);\r
443                 \r
444                         if (type != "number" || !(criteria.Filter.EventType >= 0 && criteria.Filter.EventType <= 4)) \r
445                                 return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgEventTypeInvalid);\r
446                 }               \r
447                 type = typeof criteria.Filter.RecentList;\r
448                 if (type != 'undefined') {\r
449                         if (type != "number") \r
450                                 return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgRecentListInvalid);\r
451                         if (type == "number" && (criteria.Filter.RecentList < -1 || criteria.Filter.RecentList > 3)) \r
452                                 return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgRecentListInvalid);\r
453                 }\r
454                 \r
455                 type = typeof criteria.Filter.RemoteParty;\r
456                 if(type != 'undefined' &&  type != "string")\r
457                         return error(device.implementation.ERR_BAD_ARGUMENT_TYPE,msg.msgRemotePartyInvalid);\r
458                 \r
459                 type = typeof criteria.Filter.Direction;\r
460                 if (type != 'undefined') {\r
461                         if (type != "number") \r
462                                 return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgDirectionInvalid);\r
463                         if (type == "number" && (criteria.Filter.Direction < 0 || criteria.Filter.Direction > 6)) \r
464                                 return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgDirectionInvalid);\r
465                 }\r
466                 \r
467                 type = typeof criteria.Filter.DeliveryStatus;\r
468                 if (type != 'undefined') {\r
469                         if (type != "number") \r
470                                 return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgDeliveryStatusInvalid);\r
471                         if (type == "number" && (criteria.Filter.DeliveryStatus < 0 || criteria.Filter.DeliveryStatus > 6)) \r
472                                 return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgDeliveryStatusInvalid);\r
473                 }\r
474 \r
475                 type = typeof criteria.Filter.EndTime;\r
476                 if(type != 'undefined' && (type != "object" ||  typeof criteria.Filter.EndTime.getTime != "function"))\r
477                         return error(device.implementation.ERR_BAD_ARGUMENT_TYPE,msg.msgEndTimeInvalid);\r
478 \r
479                 type = typeof criteria.Filter.PhoneNumber;\r
480                 if(type != 'undefined' &&  type != "string")\r
481                         return error(device.implementation.ERR_BAD_ARGUMENT_TYPE,msg.msgPhoneNumberInvalid);\r
482 \r
483 \r
484                 type = typeof criteria.Filter.LogFlags;\r
485                 if (type != 'undefined') {\r
486                         if (type != "number") \r
487                                 return error(device.implementation.ERR_BAD_ARGUMENT_TYPE, msg.msgLogFlagsInvalid);\r
488                         if (type == "number" && (criteria.Filter.LogFlags != 1 && criteria.Filter.LogFlags != 0)) \r
489                                 return error(device.implementation.ERR_INVALID_SERVICE_ARGUMENT, msg.msgLogFlagsInvalid);\r
490                 }\r
491                 return context.ErrorResult(device.implementation.ERR_SUCCESS, "");\r
492         }       \r
493 \r
494 \r
495         /** \r
496          * error messages\r
497          * order of %s args: Service name, method name, parameter name \r
498          */\r
499         var msg = {\r
500                 msgTypeInvalid                          : '%s:%s:TypeInvalid',\r
501                 msgTypeMissing                          : '%s:%s:Type Missing',\r
502                 msgFilterInvalid                        : '%s:%s:FilterInvalid',\r
503                 msgidInvalid                            : '%s:%s:idInvalid',\r
504                 msgRecentListInvalid            : '%s:%s:RecentListInvalid',\r
505                 msgPhoneNumberInvalid           : '%s:%s:PhoneNumberInvalid',\r
506                 msgDirectionInvalid                     : '%s:%s:DirectionInvalid',\r
507                 msgDeliveryStatusInvalid        : '%s:%s:DeliveryStatusInvalid',\r
508                 msgLogFlagsInvalid                      : '%s:%s:LogFlagsInvalid',\r
509                 msgEndTimeInvalid                       : '%s:%s:EndTimeInvalid',\r
510                 msgRemotePartyInvalid           : '%s:%s:RemotePartyInvalid',\r
511                 msgEventTypeInvalid                     : '%s:%s:EventTypeInvalid',\r
512                 msgItemInvalid                          : '%s:%s:ItemInvalid',\r
513                 msgItemMissing                          : '%s:%s:ItemMissing',\r
514                 msgEventTypeInvalid                     : '%s:%s:EventTypeInvalid',\r
515                 msgEventTypeMissing                     : '%s:%s:EventType Missing',\r
516                 msgEventDurationInvalid         : '%s:%s:EventDurationInvalid',\r
517                 msgSubjectInvalid                       : '%s:%s:SubjectInvalid',\r
518                 msgEventDataInvalid                     : '%s:%s:EventDataInvalid',\r
519                 msgLinkInvalid                          : '%s:%s:LinkInvalid',\r
520                 msgDataInvalid                          : '%s:%s:DataInvalid',\r
521                 msgDataMissing                          : '%s:%s:Data Missing',\r
522                 msgid                                           : '%s:%s:id',\r
523                 msgFilterInvalid                        : '%s:%s:FilterInvalid',\r
524                 msgFilterMissing                        : '%s:%s:Filter Missing',\r
525                 msgDelayTimeInvalid                     : '%s:%s:DelayTimeInvalid',\r
526                 msgDelayTimerMissing            : '%s:%s:DelayTimerMissing',\r
527                 msgTransactionIdInvalid         : '%s:%s:TransactionIdInvalid',\r
528                 msgTransactionIdMissing         : '%s:%s:TransactionID Missing',\r
529                 msgMissingCallback                      : '%s:%s:Missing Callback',\r
530                 msgNoMsg                                        : '%s:%s:'\r
531         };\r
532                 \r
533 \r
534 }) ()\r
535 \r