diff options
Diffstat (limited to 'js/lib')
38 files changed, 5487 insertions, 4675 deletions
diff --git a/js/lib/NJUtils.js b/js/lib/NJUtils.js index 1406ad98..cfb7ef07 100755 --- a/js/lib/NJUtils.js +++ b/js/lib/NJUtils.js | |||
@@ -1,24 +1,25 @@ | |||
1 | /* <copyright> | 1 | /* <copyright> |
2 | Copyright (c) 2012, Motorola Mobility, Inc | 2 | Copyright (c) 2012, Motorola Mobility LLC. |
3 | All Rights Reserved. | 3 | All Rights Reserved. |
4 | BSD License. | ||
5 | 4 | ||
6 | Redistribution and use in source and binary forms, with or without | 5 | Redistribution and use in source and binary forms, with or without |
7 | modification, are permitted provided that the following conditions are met: | 6 | modification, are permitted provided that the following conditions are met: |
8 | 7 | ||
9 | - Redistributions of source code must retain the above copyright notice, | 8 | * Redistributions of source code must retain the above copyright notice, |
10 | this list of conditions and the following disclaimer. | 9 | this list of conditions and the following disclaimer. |
11 | - Redistributions in binary form must reproduce the above copyright | 10 | |
12 | notice, this list of conditions and the following disclaimer in the | 11 | * Redistributions in binary form must reproduce the above copyright notice, |
13 | documentation and/or other materials provided with the distribution. | 12 | this list of conditions and the following disclaimer in the documentation |
14 | - Neither the name of Motorola Mobility nor the names of its contributors | 13 | and/or other materials provided with the distribution. |
15 | may be used to endorse or promote products derived from this software | 14 | |
16 | without specific prior written permission. | 15 | * Neither the name of Motorola Mobility LLC nor the names of its |
16 | contributors may be used to endorse or promote products derived from this | ||
17 | software without specific prior written permission. | ||
17 | 18 | ||
18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 20 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 21 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
21 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | 22 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
22 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 23 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
23 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 24 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
24 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 25 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
@@ -39,7 +40,7 @@ var Montage = require("montage/core/core").Montage, | |||
39 | exports.NJUtils = Montage.create(Component, { | 40 | exports.NJUtils = Montage.create(Component, { |
40 | 41 | ||
41 | /* =============== DOM Access ================ */ | 42 | /* =============== DOM Access ================ */ |
42 | 43 | ||
43 | ///// Quick "getElementById" | 44 | ///// Quick "getElementById" |
44 | $ : { | 45 | $ : { |
45 | value: function(id, doc) { | 46 | value: function(id, doc) { |
@@ -47,7 +48,7 @@ exports.NJUtils = Montage.create(Component, { | |||
47 | return doc.getElementById(id); | 48 | return doc.getElementById(id); |
48 | } | 49 | } |
49 | }, | 50 | }, |
50 | 51 | ||
51 | ///// Quick "getElementsByClassName" which also returns as an Array | 52 | ///// Quick "getElementsByClassName" which also returns as an Array |
52 | ///// Can return as NodeList by passing true as second argument | 53 | ///// Can return as NodeList by passing true as second argument |
53 | $$ : { | 54 | $$ : { |
@@ -57,7 +58,7 @@ exports.NJUtils = Montage.create(Component, { | |||
57 | return (asNodeList) ? list : this.toArray(list); | 58 | return (asNodeList) ? list : this.toArray(list); |
58 | } | 59 | } |
59 | }, | 60 | }, |
60 | 61 | ||
61 | ///// Get child nodes of element | 62 | ///// Get child nodes of element |
62 | ///// Omit filter to only return element nodes | 63 | ///// Omit filter to only return element nodes |
63 | ///// Pass in filter function to minimize collection, or | 64 | ///// Pass in filter function to minimize collection, or |
@@ -65,14 +66,14 @@ exports.NJUtils = Montage.create(Component, { | |||
65 | children : { | 66 | children : { |
66 | value : function(el, filter) { | 67 | value : function(el, filter) { |
67 | var f = filter || function(item) { | 68 | var f = filter || function(item) { |
68 | return item.nodeType === 1; | 69 | return item.nodeType === 1; |
69 | }; | 70 | }; |
70 | return this.toArray(el.childNodes).filter(f); | 71 | return this.toArray(el.childNodes).filter(f); |
71 | } | 72 | } |
72 | }, | 73 | }, |
73 | 74 | ||
74 | /* ============= DOM Manipulation ============= */ | 75 | /* ============= DOM Manipulation ============= */ |
75 | 76 | ||
76 | ///// Creates and returns text node from string | 77 | ///// Creates and returns text node from string |
77 | textNode : { | 78 | textNode : { |
78 | value: function(text) { | 79 | value: function(text) { |
@@ -95,7 +96,7 @@ exports.NJUtils = Montage.create(Component, { | |||
95 | return el; | 96 | return el; |
96 | } | 97 | } |
97 | }, | 98 | }, |
98 | 99 | ||
99 | decor: { | 100 | decor: { |
100 | value: function(el, attr) { | 101 | value: function(el, attr) { |
101 | if (typeof attr === 'object') { | 102 | if (typeof attr === 'object') { |
@@ -183,56 +184,56 @@ exports.NJUtils = Montage.create(Component, { | |||
183 | return node; | 184 | return node; |
184 | } | 185 | } |
185 | }, | 186 | }, |
186 | 187 | ||
187 | queryParentSelector : { | 188 | queryParentSelector : { |
188 | value: function(el, strSelector) { | 189 | value: function(el, strSelector) { |
189 | // queryParentSelector: | 190 | // queryParentSelector: |
190 | // Given a DOM element el (required), walk up the DOM tree | 191 | // Given a DOM element el (required), walk up the DOM tree |
191 | // and find the first parent that matches selector strSelector (required). | 192 | // and find the first parent that matches selector strSelector (required). |
192 | // Returns: The element that matches, or false if there is no match | 193 | // Returns: The element that matches, or false if there is no match |
193 | // or if insufficient parameters are supplied. | 194 | // or if insufficient parameters are supplied. |
194 | 195 | ||
195 | if ((typeof(el) === "undefined") || (typeof(strSelector) === "undefined")) { | 196 | if ((typeof(el) === "undefined") || (typeof(strSelector) === "undefined")) { |
196 | // Parameters are required, m'kay? | 197 | // Parameters are required, m'kay? |
197 | return false; | 198 | return false; |
198 | } else if ((typeof(el) !== "object") || (typeof(strSelector) !== "string" )) { | 199 | } else if ((typeof(el) !== "object") || (typeof(strSelector) !== "string" )) { |
199 | // You also have to use the right parameters. | 200 | // You also have to use the right parameters. |
200 | return false; | 201 | return false; |
201 | } | 202 | } |
202 | 203 | ||
203 | // First, get an empty clone of the parent. | 204 | // First, get an empty clone of the parent. |
204 | var myParent = el.parentNode; | 205 | var myParent = el.parentNode; |
205 | var clone = myParent.cloneNode(false); | 206 | var clone = myParent.cloneNode(false); |
206 | if (clone === null) { | 207 | if (clone === null) { |
207 | return false; | 208 | return false; |
208 | } | 209 | } |
209 | 210 | ||
210 | // If we're at the top of the DOM, our clone will be an htmlDocument. | 211 | // If we're at the top of the DOM, our clone will be an htmlDocument. |
211 | // htmlDocument has no tagName. | 212 | // htmlDocument has no tagName. |
212 | if (typeof(clone.tagName) !== "undefined") { | 213 | if (typeof(clone.tagName) !== "undefined") { |
213 | // create a bogus div to use as a base for querySelector | 214 | // create a bogus div to use as a base for querySelector |
214 | var temp = document.createElement("div"); | 215 | var temp = document.createElement("div"); |
215 | 216 | ||
216 | // Append the clone to the bogus div | 217 | // Append the clone to the bogus div |
217 | temp.appendChild(clone); | 218 | temp.appendChild(clone); |
218 | 219 | ||
219 | // Now we can use querySelector! Sweet. | 220 | // Now we can use querySelector! Sweet. |
220 | var selectorTest = temp.querySelector(strSelector); | 221 | var selectorTest = temp.querySelector(strSelector); |
221 | 222 | ||
222 | // What has querySelector returned? | 223 | // What has querySelector returned? |
223 | if (selectorTest === null) { | 224 | if (selectorTest === null) { |
224 | // No match, so recurse. | 225 | // No match, so recurse. |
225 | return this.queryParentSelector(myParent, strSelector); | 226 | return this.queryParentSelector(myParent, strSelector); |
226 | } else { | 227 |