@base-framework/base 2.6.0 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/base.min.js +1 -0
  2. package/es5/base.js +2968 -0
  3. package/es5/modules/ajax.js +663 -0
  4. package/es5/modules/animation.js +188 -0
  5. package/es5/modules/animations.js +1080 -0
  6. package/es5/modules/atom.js +65 -0
  7. package/es5/modules/component.js +1310 -0
  8. package/es5/modules/data-binder.js +1131 -0
  9. package/es5/modules/data.js +1808 -0
  10. package/es5/modules/date.js +525 -0
  11. package/es5/modules/form-validator.js +324 -0
  12. package/es5/modules/history.js +126 -0
  13. package/es5/modules/html-builder.js +461 -0
  14. package/es5/modules/layout.js +1679 -0
  15. package/es5/modules/mouse.js +124 -0
  16. package/es5/modules/nav-link.js +123 -0
  17. package/es5/modules/olderversions/animations-ease.js +1095 -0
  18. package/es5/modules/olderversions/animations-update.js +1048 -0
  19. package/es5/modules/olderversions/base-animations.js +636 -0
  20. package/es5/modules/olderversions/base-component-class.js +100 -0
  21. package/es5/modules/olderversions/base-data-binder-1.js +407 -0
  22. package/es5/modules/olderversions/base-data-binder-class.js +358 -0
  23. package/es5/modules/olderversions/base-layout-parser-class.js +172 -0
  24. package/es5/modules/olderversions/base-mode-1.js +777 -0
  25. package/es5/modules/olderversions/base-model-class.js +585 -0
  26. package/es5/modules/olderversions/data-binder/element-binding/base-data-binder-class.js +358 -0
  27. package/es5/modules/olderversions/data-binder/element-binding/base-model-class.js +585 -0
  28. package/es5/modules/olderversions/data-binder/model-binding/base-data-binder-class.js +353 -0
  29. package/es5/modules/olderversions/data-binder/model-binding/base-model-class.js +604 -0
  30. package/es5/modules/olderversions/data-binder-update-watcher.js +640 -0
  31. package/es5/modules/olderversions/data-tracker.js +187 -0
  32. package/es5/modules/olderversions/event-update.js +666 -0
  33. package/es5/modules/olderversions/nav-link.js +119 -0
  34. package/es5/modules/olderversions/router-with-templates-1.js +785 -0
  35. package/es5/modules/olderversions/router-with-templates.js +701 -0
  36. package/es5/modules/prototypes/ajax.js +657 -0
  37. package/es5/modules/prototypes/atom.js +65 -0
  38. package/es5/modules/prototypes/component.js +972 -0
  39. package/es5/modules/prototypes/data-binder.js +1089 -0
  40. package/es5/modules/prototypes/data.js +1290 -0
  41. package/es5/modules/prototypes/html-builder.js +414 -0
  42. package/es5/modules/prototypes/layout.js +879 -0
  43. package/es5/modules/router.js +1680 -0
  44. package/es5/modules/state.js +274 -0
  45. package/es6/.jshintrc +3 -0
  46. package/es6/base.js +41 -0
  47. package/es6/core.js +1 -0
  48. package/es6/data-tracker.js +351 -0
  49. package/es6/events.js +602 -0
  50. package/es6/legacy/es5/base.js +2968 -0
  51. package/es6/legacy/es5/modules/ajax.js +663 -0
  52. package/es6/legacy/es5/modules/animation.js +188 -0
  53. package/es6/legacy/es5/modules/animations.js +1080 -0
  54. package/es6/legacy/es5/modules/atom.js +65 -0
  55. package/es6/legacy/es5/modules/component.js +1310 -0
  56. package/es6/legacy/es5/modules/data-binder.js +1131 -0
  57. package/es6/legacy/es5/modules/data.js +1808 -0
  58. package/es6/legacy/es5/modules/date.js +525 -0
  59. package/es6/legacy/es5/modules/form-validator.js +324 -0
  60. package/es6/legacy/es5/modules/history.js +126 -0
  61. package/es6/legacy/es5/modules/html-builder.js +461 -0
  62. package/es6/legacy/es5/modules/layout.js +1679 -0
  63. package/es6/legacy/es5/modules/mouse.js +124 -0
  64. package/es6/legacy/es5/modules/nav-link.js +123 -0
  65. package/es6/legacy/es5/modules/olderversions/animations-ease.js +1095 -0
  66. package/es6/legacy/es5/modules/olderversions/animations-update.js +1048 -0
  67. package/es6/legacy/es5/modules/olderversions/base-animations.js +636 -0
  68. package/es6/legacy/es5/modules/olderversions/base-component-class.js +100 -0
  69. package/es6/legacy/es5/modules/olderversions/base-data-binder-1.js +407 -0
  70. package/es6/legacy/es5/modules/olderversions/base-data-binder-class.js +358 -0
  71. package/es6/legacy/es5/modules/olderversions/base-layout-parser-class.js +172 -0
  72. package/es6/legacy/es5/modules/olderversions/base-mode-1.js +777 -0
  73. package/es6/legacy/es5/modules/olderversions/base-model-class.js +585 -0
  74. package/es6/legacy/es5/modules/olderversions/data-binder/element-binding/base-data-binder-class.js +358 -0
  75. package/es6/legacy/es5/modules/olderversions/data-binder/element-binding/base-model-class.js +585 -0
  76. package/es6/legacy/es5/modules/olderversions/data-binder/model-binding/base-data-binder-class.js +353 -0
  77. package/es6/legacy/es5/modules/olderversions/data-binder/model-binding/base-model-class.js +604 -0
  78. package/es6/legacy/es5/modules/olderversions/data-binder-update-watcher.js +640 -0
  79. package/es6/legacy/es5/modules/olderversions/data-tracker.js +187 -0
  80. package/es6/legacy/es5/modules/olderversions/event-update.js +666 -0
  81. package/es6/legacy/es5/modules/olderversions/nav-link.js +119 -0
  82. package/es6/legacy/es5/modules/olderversions/router-with-templates-1.js +785 -0
  83. package/es6/legacy/es5/modules/olderversions/router-with-templates.js +701 -0
  84. package/es6/legacy/es5/modules/prototypes/ajax.js +657 -0
  85. package/es6/legacy/es5/modules/prototypes/atom.js +65 -0
  86. package/es6/legacy/es5/modules/prototypes/component.js +972 -0
  87. package/es6/legacy/es5/modules/prototypes/data-binder.js +1089 -0
  88. package/es6/legacy/es5/modules/prototypes/data.js +1290 -0
  89. package/es6/legacy/es5/modules/prototypes/html-builder.js +414 -0
  90. package/es6/legacy/es5/modules/prototypes/layout.js +879 -0
  91. package/es6/legacy/es5/modules/router.js +1680 -0
  92. package/es6/legacy/es5/modules/state.js +274 -0
  93. package/es6/main.js +1331 -0
  94. package/es6/modules/ajax/ajax.js +514 -0
  95. package/es6/modules/animation/animation.js +236 -0
  96. package/es6/modules/animations/animation-controller.js +231 -0
  97. package/es6/modules/animations/animation.js +64 -0
  98. package/es6/modules/animations/attr-movement.js +66 -0
  99. package/es6/modules/animations/css-movement.js +170 -0
  100. package/es6/modules/animations/movement.js +131 -0
  101. package/es6/modules/animations/value.js +187 -0
  102. package/es6/modules/atom/atom.js +54 -0
  103. package/es6/modules/component/component.js +230 -0
  104. package/es6/modules/component/event-helper.js +119 -0
  105. package/es6/modules/component/jot.js +144 -0
  106. package/es6/modules/component/state-helper.js +262 -0
  107. package/es6/modules/component/unit.js +551 -0
  108. package/es6/modules/data/attrs.js +40 -0
  109. package/es6/modules/data/basic-data.js +500 -0
  110. package/es6/modules/data/data-utils.js +29 -0
  111. package/es6/modules/data/data.js +3 -0
  112. package/es6/modules/data/deep-data.js +541 -0
  113. package/es6/modules/data/model-service.js +528 -0
  114. package/es6/modules/data/model.js +133 -0
  115. package/es6/modules/data/simple-data.js +33 -0
  116. package/es6/modules/data-binder/connection-tracker.js +113 -0
  117. package/es6/modules/data-binder/connection.js +16 -0
  118. package/es6/modules/data-binder/data-binder.js +352 -0
  119. package/es6/modules/data-binder/data-pub-sub.js +141 -0
  120. package/es6/modules/data-binder/data-source.js +56 -0
  121. package/es6/modules/data-binder/element-source.js +219 -0
  122. package/es6/modules/data-binder/one-way-connection.js +46 -0
  123. package/es6/modules/data-binder/one-way-source.js +43 -0
  124. package/es6/modules/data-binder/source.js +36 -0
  125. package/es6/modules/data-binder/two-way-connection.js +75 -0
  126. package/es6/modules/data-binder/two-way-source.js +41 -0
  127. package/es6/modules/date/date.js +544 -0
  128. package/es6/modules/history/history.js +89 -0
  129. package/es6/modules/html-builder/html-builder.js +434 -0
  130. package/es6/modules/import/import.js +390 -0
  131. package/es6/modules/layout/layout-builder.js +1269 -0
  132. package/es6/modules/layout/layout-parser.js +134 -0
  133. package/es6/modules/layout/watcher-helper.js +282 -0
  134. package/es6/modules/mouse/mouse.js +114 -0
  135. package/es6/modules/router/component-helper.js +163 -0
  136. package/es6/modules/router/history-controller.js +216 -0
  137. package/es6/modules/router/nav-link.js +124 -0
  138. package/es6/modules/router/route.js +401 -0
  139. package/es6/modules/router/router.js +789 -0
  140. package/es6/modules/router/utils.js +31 -0
  141. package/es6/modules/state/state-target.js +91 -0
  142. package/es6/modules/state/state.js +171 -0
  143. package/es6/package-lock.json +13 -0
  144. package/es6/package.json +28 -0
  145. package/es6/shared/objects.js +99 -0
  146. package/legacy/es5/base.js +2968 -0
  147. package/legacy/es5/modules/ajax.js +663 -0
  148. package/legacy/es5/modules/animation.js +188 -0
  149. package/legacy/es5/modules/animations.js +1080 -0
  150. package/legacy/es5/modules/atom.js +65 -0
  151. package/legacy/es5/modules/component.js +1310 -0
  152. package/legacy/es5/modules/data-binder.js +1131 -0
  153. package/legacy/es5/modules/data.js +1808 -0
  154. package/legacy/es5/modules/date.js +525 -0
  155. package/legacy/es5/modules/form-validator.js +324 -0
  156. package/legacy/es5/modules/history.js +126 -0
  157. package/legacy/es5/modules/html-builder.js +461 -0
  158. package/legacy/es5/modules/layout.js +1679 -0
  159. package/legacy/es5/modules/mouse.js +124 -0
  160. package/legacy/es5/modules/nav-link.js +123 -0
  161. package/legacy/es5/modules/olderversions/animations-ease.js +1095 -0
  162. package/legacy/es5/modules/olderversions/animations-update.js +1048 -0
  163. package/legacy/es5/modules/olderversions/base-animations.js +636 -0
  164. package/legacy/es5/modules/olderversions/base-component-class.js +100 -0
  165. package/legacy/es5/modules/olderversions/base-data-binder-1.js +407 -0
  166. package/legacy/es5/modules/olderversions/base-data-binder-class.js +358 -0
  167. package/legacy/es5/modules/olderversions/base-layout-parser-class.js +172 -0
  168. package/legacy/es5/modules/olderversions/base-mode-1.js +777 -0
  169. package/legacy/es5/modules/olderversions/base-model-class.js +585 -0
  170. package/legacy/es5/modules/olderversions/data-binder/element-binding/base-data-binder-class.js +358 -0
  171. package/legacy/es5/modules/olderversions/data-binder/element-binding/base-model-class.js +585 -0
  172. package/legacy/es5/modules/olderversions/data-binder/model-binding/base-data-binder-class.js +353 -0
  173. package/legacy/es5/modules/olderversions/data-binder/model-binding/base-model-class.js +604 -0
  174. package/legacy/es5/modules/olderversions/data-binder-update-watcher.js +640 -0
  175. package/legacy/es5/modules/olderversions/data-tracker.js +187 -0
  176. package/legacy/es5/modules/olderversions/event-update.js +666 -0
  177. package/legacy/es5/modules/olderversions/nav-link.js +119 -0
  178. package/legacy/es5/modules/olderversions/router-with-templates-1.js +785 -0
  179. package/legacy/es5/modules/olderversions/router-with-templates.js +701 -0
  180. package/legacy/es5/modules/prototypes/ajax.js +657 -0
  181. package/legacy/es5/modules/prototypes/atom.js +65 -0
  182. package/legacy/es5/modules/prototypes/component.js +972 -0
  183. package/legacy/es5/modules/prototypes/data-binder.js +1089 -0
  184. package/legacy/es5/modules/prototypes/data.js +1290 -0
  185. package/legacy/es5/modules/prototypes/html-builder.js +414 -0
  186. package/legacy/es5/modules/prototypes/layout.js +879 -0
  187. package/legacy/es5/modules/router.js +1680 -0
  188. package/legacy/es5/modules/state.js +274 -0
  189. package/package.json +8 -3
  190. package/update +16 -0
@@ -0,0 +1,461 @@
1
+ /* base framework module */
2
+ /*
3
+ this will create dynamic html to be
4
+ added and modified
5
+ */
6
+ (function(global)
7
+ {
8
+ "use strict";
9
+
10
+ var DataTracker = base.DataTracker,
11
+ DataBinder = base.DataBinder;
12
+
13
+ var NORMALIZED_NAMES =
14
+ {
15
+ class: 'className',
16
+ text: 'textContent',
17
+ for: 'htmlFor',
18
+ readonly: 'readOnly',
19
+ maxlength: 'maxLength',
20
+ cellspacing: 'cellSpacing',
21
+ rowspan: 'rowSpan',
22
+ colspan: 'colSpan',
23
+ tabindex: 'tabIndex',
24
+ celpadding: 'cellPadding',
25
+ useMap: 'useMap',
26
+ frameborder: 'frameBorder',
27
+ contenteditable: 'contentEditable'
28
+ };
29
+
30
+ /**
31
+ * This will get the javascript property name.
32
+ *
33
+ * @param {string} prop
34
+ * @return {string}
35
+ */
36
+ global.normalizeAttr = function(prop)
37
+ {
38
+ return NORMALIZED_NAMES[prop] || prop;
39
+ };
40
+
41
+ /**
42
+ * This will remove on from a property.
43
+ *
44
+ * @param {string} prop
45
+ * @return {string}
46
+ */
47
+ global.removeEventPrefix = function(prop)
48
+ {
49
+ if(typeof prop === 'string' && prop.substring(0, 2) === 'on')
50
+ {
51
+ return prop.substring(2);
52
+ }
53
+ return prop;
54
+ };
55
+
56
+ /**
57
+ * htmlBuilder
58
+ *
59
+ * This will create an html builder object that can create
60
+ * and remove dom elements.
61
+ * @class
62
+ */
63
+ var htmlBuilder = base.Class.extend(
64
+ {
65
+ /**
66
+ * @constructor
67
+ */
68
+ constructor: function()
69
+ {
70
+
71
+ },
72
+
73
+ /**
74
+ * This will create a new element.
75
+ *
76
+ * @param {string} nodeName The node name.
77
+ * @param {object} attrObject The node attributes.
78
+ * @param {object} container The node container.
79
+ * @param {boolean} [prepend=false] Add to the begining of the container.
80
+ * @return {object} The new element.
81
+ */
82
+ create: function(nodeName, attrObject, container, prepend)
83
+ {
84
+ var obj = document.createElement(nodeName);
85
+ this._addElementAttrs(obj, attrObject);
86
+
87
+ /* we want to check if the new element should be
88
+ added to the begining or end */
89
+ if(prepend === true)
90
+ {
91
+ this.prepend(container, obj);
92
+ }
93
+ else
94
+ {
95
+ this.append(container, obj);
96
+ }
97
+ return obj;
98
+ },
99
+
100
+ /**
101
+ * This will add the element attributes.
102
+ *
103
+ * @protected
104
+ * @param {object} obj
105
+ * @param {object} attrObject
106
+ */
107
+ _addElementAttrs: function(obj, attrObject)
108
+ {
109
+ /* we want to check if we have attrributes to add */
110
+ if(!attrObject || typeof attrObject !== 'object')
111
+ {
112
+ return false;
113
+ }
114
+
115
+ /* we need to add the type if set to stop ie
116
+ from removing the value if set after the value is
117
+ added */
118
+ var type = attrObject.type;
119
+ if(typeof type !== 'undefined')
120
+ {
121
+ base.setAttr(obj, 'type', type);
122
+ }
123
+
124
+ /* we want to add each attr to the obj */
125
+ for(var prop in attrObject)
126
+ {
127
+ /* we have already added the type so we need to
128
+ skip if the prop is type */
129
+ if(attrObject.hasOwnProperty(prop) === false || prop === 'type')
130
+ {
131
+ continue;
132
+ }
133
+
134
+ var attrPropValue = attrObject[prop];
135
+
136
+ /* we want to check to add the attr settings
137
+ by property name */
138
+ if(prop === 'innerHTML')
139
+ {
140
+ obj.innerHTML = attrPropValue;
141
+ }
142
+ else if(prop.substring(4, 1) === '-')
143
+ {
144
+ // this will handle data and aria attributes
145
+ base.setAttr(obj, prop, attrPropValue);
146
+ }
147
+ else
148
+ {
149
+ this.addAttr(obj, prop, attrPropValue);
150
+ }
151
+ }
152
+ },
153
+
154
+ /**
155
+ * This will add html to an element.
156
+ *
157
+ * @param {object} obj
158
+ * @param {string} content
159
+ */
160
+ addHtml: function(obj, content)
161
+ {
162
+ if(typeof content !== 'undefined' && content !== '')
163
+ {
164
+ /* we need to check if we are adding inner
165
+ html content or just a string */
166
+ var pattern = /(?:<[a-z][\s\S]*>)/i;
167
+ if(pattern.test(content))
168
+ {
169
+ /* html */
170
+ obj.innerHTML = content;
171
+ }
172
+ else
173
+ {
174
+ /* string */
175
+ obj.textContent = content;
176
+ }
177
+ }
178
+ },
179
+
180
+ /**
181
+ * This will add an element attribute.
182
+ *
183
+ * @param {object} obj
184
+ * @param {object} attr
185
+ * @param {string} value
186
+ */
187
+ addAttr: function(obj, attr, value)
188
+ {
189
+ if(value === '' || !attr)
190
+ {
191
+ return false;
192
+ }
193
+
194
+ /* we want to check to add a value or an event listener */
195
+ var type = typeof value;
196
+ if(type === 'function')
197
+ {
198
+ /* this will add the event using the base events
199
+ so the event is tracked */
200
+ attr = removeEventPrefix(attr);
201
+ base.addListener(attr, obj, value);
202
+ }
203
+ else
204
+ {
205
+ var attrName = normalizeAttr(attr);
206
+ obj[attrName] = value;
207
+ }
208
+ },
209
+
210
+ /**
211
+ * This will create a doc fragment.
212
+ *
213
+ * @return {object}
214
+ */
215
+ createDocFragment: function()
216
+ {
217
+ return document.createDocumentFragment();
218
+ },
219
+
220
+ /**
221
+ * This will create a text node.
222
+ *
223
+ * @param {string} text
224
+ * @param {object} container
225
+ * @return {object}
226
+ */
227
+ createTextNode: function(text, container)
228
+ {
229
+ var obj = document.createTextNode(text);
230
+
231
+ if(container)
232
+ {
233
+ this.append(container, obj);
234
+ }
235
+ return obj;
236
+ },
237
+
238
+ /**
239
+ * This will create the options on a select.
240
+ *
241
+ * @param {object} selectElem
242
+ * @param {array} optionArray
243
+ * @param {string} [defaultValue]
244
+ */
245
+ setupSelectOptions: function(selectElem, optionArray, defaultValue)
246
+ {
247
+ if(!selectElem || typeof selectElem !== 'object')
248
+ {
249
+ return false;
250
+ }
251
+
252
+ if(!optionArray || !optionArray.length)
253
+ {
254
+ return false;
255
+ }
256
+
257
+ /* create each option then add it to the select */
258
+ for(var n = 0, maxLength = optionArray.length; n < maxLength; n++)
259
+ {
260
+ var settings = optionArray[n];
261
+ var option = selectElem.options[n] = new Option(settings.label, settings.value);
262
+
263
+ /* we can select an option if a default value
264
+ has been sumbitted */
265
+ if(defaultValue !== null && option.value == defaultValue)
266
+ {
267
+ option.selected = true;
268
+ }
269
+ }
270
+ },
271
+
272
+ /**
273
+ * This will remove an elements data.
274
+ *
275
+ * @param {object} ele
276
+ */
277
+ removeElementData: function(ele)
278
+ {
279
+ /* we want to do a recursive remove child
280
+ removal */
281
+ var children = ele.childNodes;
282
+ if(children)
283
+ {
284
+ var length = children.length - 1;
285
+ for(var i = length; i >= 0; i--)
286
+ {
287
+ var child = children[i];
288
+ if(child)
289
+ {
290
+ /* this will remove the child element data
291
+ before the parent is removed */
292
+ this.removeElementData(child);
293
+ }
294
+ }
295
+ }
296
+
297
+ DataTracker.remove(ele);
298
+
299
+ var bound = ele.bindId;
300
+ if(bound)
301
+ {
302
+ /* this will check to remove any data bindings
303
+ to the element */
304
+ DataBinder.unbind(ele);
305
+ }
306
+ },
307
+
308
+ /**
309
+ * This will remove an element and its data.
310
+ *
311
+ * @param {object} obj
312
+ */
313
+ removeElement: function(obj)
314
+ {
315
+ var container;
316
+
317
+ if(!obj || !(container = obj.parentNode))
318
+ {
319
+ return this;
320
+ }
321
+
322
+ /* this will remove all element data and binding
323
+ and remove from the parent container */
324
+ this.removeElementData(obj);
325
+ container.removeChild(obj);
326
+
327
+ return this;
328
+ },
329
+
330
+ /**
331
+ * This will remove an element.
332
+ *
333
+ * @param {object} child
334
+ */
335
+ removeChild: function(child)
336
+ {
337
+ this.removeElement(child);
338
+ },
339
+
340
+ /**
341
+ * This will remove all elements from the container.
342
+ *
343
+ * @param {object} container
344
+ */
345
+ removeAll: function(container)
346
+ {
347
+ if(typeof container === 'object')
348
+ {
349
+ var children = container.childNodes;
350
+ for(var child in children)
351
+ {
352
+ if(children.hasOwnProperty(child))
353
+ {
354
+ this.removeElementData(children[child]);
355
+ }
356
+ }
357
+ container.innerHTML = '';
358
+ }
359
+ },
360
+
361
+ /**
362
+ * This change the parent of an element.
363
+ *
364
+ * @param {object} child
365
+ * @param {object} newParent
366
+ */
367
+ changeParent: function(child, newParent)
368
+ {
369
+ if(typeof child === 'string')
370
+ {
371
+ child = document.getElementById(child);
372
+ }
373
+
374
+ var container = (typeof newParent === 'string')? document.getElementById(newParent) : newParent;
375
+ container.appendChild(child);
376
+ },
377
+
378
+ /**
379
+ * This will append a child element.
380
+ *
381
+ * @param {object} parent
382
+ * @param {object} child
383
+ */
384
+ append: function(parent, child)
385
+ {
386
+ switch(typeof parent)
387
+ {
388
+ case "object":
389
+ break;
390
+ case "string":
391
+ parent = document.getElementById(parent);
392
+ break;
393
+ case "undefined":
394
+ parent = document.body;
395
+ break;
396
+ }
397
+
398
+ parent.appendChild(child);
399
+ },
400
+
401
+ /**
402
+ * This will prepend a child element.
403
+ *
404
+ * @param {object} parent
405
+ * @param {object} child
406
+ * @param {object} [optionalNode]
407
+ */
408
+ prepend: function(parent, child, optionalNode)
409
+ {
410
+ switch(typeof parent)
411
+ {
412
+ case "object":
413
+ break;
414
+ case "string":
415
+ parent = document.getElementById(parent);
416
+ break;
417
+ case "undefined":
418
+ parent = document.body;
419
+ break;
420
+ }
421
+
422
+ var node = optionalNode || parent.firstChild;
423
+ parent.insertBefore(child, node);
424
+ },
425
+
426
+ /**
427
+ * This will clone an element.
428
+ *
429
+ * @param {object} node
430
+ * @param {boolean} deepCopy
431
+ * @return {object}
432
+ */
433
+ clone: function(node, deepCopy)
434
+ {
435
+ if(!node || typeof node !== 'object')
436
+ {
437
+ return false;
438
+ }
439
+
440
+ deepCopy = deepCopy || false;
441
+ return node.cloneNode(deepCopy);
442
+ }
443
+ });
444
+
445
+ /* we want to use a few private functions to add input selection
446
+ to an element and reduce any closures */
447
+ /**
448
+ * This will focus an element.
449
+ *
450
+ * @param {object} e
451
+ */
452
+ var focusElement = function(e)
453
+ {
454
+ e = e || window.event;
455
+ var src = e.srcElement || e.target;
456
+ src.select();
457
+ };
458
+
459
+ base.extend.htmlBuilder = htmlBuilder;
460
+
461
+ })(this);