1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/testing/mochitest/tests/MochiKit-1.4.2/MochiKit/DOM.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,1256 @@ 1.4 +/*** 1.5 + 1.6 +MochiKit.DOM 1.4.2 1.7 + 1.8 +See <http://mochikit.com/> for documentation, downloads, license, etc. 1.9 + 1.10 +(c) 2005 Bob Ippolito. All rights Reserved. 1.11 + 1.12 +***/ 1.13 + 1.14 +MochiKit.Base._deps('DOM', ['Base']); 1.15 + 1.16 +MochiKit.DOM.NAME = "MochiKit.DOM"; 1.17 +MochiKit.DOM.VERSION = "1.4.2"; 1.18 +MochiKit.DOM.__repr__ = function () { 1.19 + return "[" + this.NAME + " " + this.VERSION + "]"; 1.20 +}; 1.21 +MochiKit.DOM.toString = function () { 1.22 + return this.__repr__(); 1.23 +}; 1.24 + 1.25 +MochiKit.DOM.EXPORT = [ 1.26 + "removeEmptyTextNodes", 1.27 + "formContents", 1.28 + "currentWindow", 1.29 + "currentDocument", 1.30 + "withWindow", 1.31 + "withDocument", 1.32 + "registerDOMConverter", 1.33 + "coerceToDOM", 1.34 + "createDOM", 1.35 + "createDOMFunc", 1.36 + "isChildNode", 1.37 + "getNodeAttribute", 1.38 + "removeNodeAttribute", 1.39 + "setNodeAttribute", 1.40 + "updateNodeAttributes", 1.41 + "appendChildNodes", 1.42 + "insertSiblingNodesAfter", 1.43 + "insertSiblingNodesBefore", 1.44 + "replaceChildNodes", 1.45 + "removeElement", 1.46 + "swapDOM", 1.47 + "BUTTON", 1.48 + "TT", 1.49 + "PRE", 1.50 + "H1", 1.51 + "H2", 1.52 + "H3", 1.53 + "H4", 1.54 + "H5", 1.55 + "H6", 1.56 + "BR", 1.57 + "CANVAS", 1.58 + "HR", 1.59 + "LABEL", 1.60 + "TEXTAREA", 1.61 + "FORM", 1.62 + "STRONG", 1.63 + "SELECT", 1.64 + "OPTION", 1.65 + "OPTGROUP", 1.66 + "LEGEND", 1.67 + "FIELDSET", 1.68 + "P", 1.69 + "UL", 1.70 + "OL", 1.71 + "LI", 1.72 + "DL", 1.73 + "DT", 1.74 + "DD", 1.75 + "TD", 1.76 + "TR", 1.77 + "THEAD", 1.78 + "TBODY", 1.79 + "TFOOT", 1.80 + "TABLE", 1.81 + "TH", 1.82 + "INPUT", 1.83 + "SPAN", 1.84 + "A", 1.85 + "DIV", 1.86 + "IMG", 1.87 + "getElement", 1.88 + "$", 1.89 + "getElementsByTagAndClassName", 1.90 + "addToCallStack", 1.91 + "addLoadEvent", 1.92 + "focusOnLoad", 1.93 + "setElementClass", 1.94 + "toggleElementClass", 1.95 + "addElementClass", 1.96 + "removeElementClass", 1.97 + "swapElementClass", 1.98 + "hasElementClass", 1.99 + "computedStyle", // deprecated in 1.4 1.100 + "escapeHTML", 1.101 + "toHTML", 1.102 + "emitHTML", 1.103 + "scrapeText", 1.104 + "getFirstParentByTagAndClassName", 1.105 + "getFirstElementByTagAndClassName" 1.106 +]; 1.107 + 1.108 +MochiKit.DOM.EXPORT_OK = [ 1.109 + "domConverters" 1.110 +]; 1.111 + 1.112 +MochiKit.DOM.DEPRECATED = [ 1.113 + /** @id MochiKit.DOM.computedStyle */ 1.114 + ['computedStyle', 'MochiKit.Style.getStyle', '1.4'], 1.115 + /** @id MochiKit.DOM.elementDimensions */ 1.116 + ['elementDimensions', 'MochiKit.Style.getElementDimensions', '1.4'], 1.117 + /** @id MochiKit.DOM.elementPosition */ 1.118 + ['elementPosition', 'MochiKit.Style.getElementPosition', '1.4'], 1.119 + /** @id MochiKit.DOM.getViewportDimensions */ 1.120 + ['getViewportDimensions', 'MochiKit.Style.getViewportDimensions', '1.4'], 1.121 + /** @id MochiKit.DOM.hideElement */ 1.122 + ['hideElement', 'MochiKit.Style.hideElement', '1.4'], 1.123 + /** @id MochiKit.DOM.makeClipping */ 1.124 + ['makeClipping', 'MochiKit.Style.makeClipping', '1.4.1'], 1.125 + /** @id MochiKit.DOM.makePositioned */ 1.126 + ['makePositioned', 'MochiKit.Style.makePositioned', '1.4.1'], 1.127 + /** @id MochiKit.DOM.setElementDimensions */ 1.128 + ['setElementDimensions', 'MochiKit.Style.setElementDimensions', '1.4'], 1.129 + /** @id MochiKit.DOM.setElementPosition */ 1.130 + ['setElementPosition', 'MochiKit.Style.setElementPosition', '1.4'], 1.131 + /** @id MochiKit.DOM.setDisplayForElement */ 1.132 + ['setDisplayForElement', 'MochiKit.Style.setDisplayForElement', '1.4'], 1.133 + /** @id MochiKit.DOM.setOpacity */ 1.134 + ['setOpacity', 'MochiKit.Style.setOpacity', '1.4'], 1.135 + /** @id MochiKit.DOM.showElement */ 1.136 + ['showElement', 'MochiKit.Style.showElement', '1.4'], 1.137 + /** @id MochiKit.DOM.undoClipping */ 1.138 + ['undoClipping', 'MochiKit.Style.undoClipping', '1.4.1'], 1.139 + /** @id MochiKit.DOM.undoPositioned */ 1.140 + ['undoPositioned', 'MochiKit.Style.undoPositioned', '1.4.1'], 1.141 + /** @id MochiKit.DOM.Coordinates */ 1.142 + ['Coordinates', 'MochiKit.Style.Coordinates', '1.4'], // FIXME: broken 1.143 + /** @id MochiKit.DOM.Dimensions */ 1.144 + ['Dimensions', 'MochiKit.Style.Dimensions', '1.4'] // FIXME: broken 1.145 +]; 1.146 + 1.147 +MochiKit.Base.update(MochiKit.DOM, { 1.148 + 1.149 + /** @id MochiKit.DOM.currentWindow */ 1.150 + currentWindow: function () { 1.151 + return MochiKit.DOM._window; 1.152 + }, 1.153 + 1.154 + /** @id MochiKit.DOM.currentDocument */ 1.155 + currentDocument: function () { 1.156 + return MochiKit.DOM._document; 1.157 + }, 1.158 + 1.159 + /** @id MochiKit.DOM.withWindow */ 1.160 + withWindow: function (win, func) { 1.161 + var self = MochiKit.DOM; 1.162 + var oldDoc = self._document; 1.163 + var oldWin = self._window; 1.164 + var rval; 1.165 + try { 1.166 + self._window = win; 1.167 + self._document = win.document; 1.168 + rval = func(); 1.169 + } catch (e) { 1.170 + self._window = oldWin; 1.171 + self._document = oldDoc; 1.172 + throw e; 1.173 + } 1.174 + self._window = oldWin; 1.175 + self._document = oldDoc; 1.176 + return rval; 1.177 + }, 1.178 + 1.179 + /** @id MochiKit.DOM.formContents */ 1.180 + formContents: function (elem/* = document.body */) { 1.181 + var names = []; 1.182 + var values = []; 1.183 + var m = MochiKit.Base; 1.184 + var self = MochiKit.DOM; 1.185 + if (typeof(elem) == "undefined" || elem === null) { 1.186 + elem = self._document.body; 1.187 + } else { 1.188 + elem = self.getElement(elem); 1.189 + } 1.190 + m.nodeWalk(elem, function (elem) { 1.191 + var name = elem.name; 1.192 + if (m.isNotEmpty(name)) { 1.193 + var tagName = elem.tagName.toUpperCase(); 1.194 + if (tagName === "INPUT" 1.195 + && (elem.type == "radio" || elem.type == "checkbox") 1.196 + && !elem.checked 1.197 + ) { 1.198 + return null; 1.199 + } 1.200 + if (tagName === "SELECT") { 1.201 + if (elem.type == "select-one") { 1.202 + if (elem.selectedIndex >= 0) { 1.203 + var opt = elem.options[elem.selectedIndex]; 1.204 + var v = opt.value; 1.205 + if (!v) { 1.206 + var h = opt.outerHTML; 1.207 + // internet explorer sure does suck. 1.208 + if (h && !h.match(/^[^>]+\svalue\s*=/i)) { 1.209 + v = opt.text; 1.210 + } 1.211 + } 1.212 + names.push(name); 1.213 + values.push(v); 1.214 + return null; 1.215 + } 1.216 + // no form elements? 1.217 + names.push(name); 1.218 + values.push(""); 1.219 + return null; 1.220 + } else { 1.221 + var opts = elem.options; 1.222 + if (!opts.length) { 1.223 + names.push(name); 1.224 + values.push(""); 1.225 + return null; 1.226 + } 1.227 + for (var i = 0; i < opts.length; i++) { 1.228 + var opt = opts[i]; 1.229 + if (!opt.selected) { 1.230 + continue; 1.231 + } 1.232 + var v = opt.value; 1.233 + if (!v) { 1.234 + var h = opt.outerHTML; 1.235 + // internet explorer sure does suck. 1.236 + if (h && !h.match(/^[^>]+\svalue\s*=/i)) { 1.237 + v = opt.text; 1.238 + } 1.239 + } 1.240 + names.push(name); 1.241 + values.push(v); 1.242 + } 1.243 + return null; 1.244 + } 1.245 + } 1.246 + if (tagName === "FORM" || tagName === "P" || tagName === "SPAN" 1.247 + || tagName === "DIV" 1.248 + ) { 1.249 + return elem.childNodes; 1.250 + } 1.251 + names.push(name); 1.252 + values.push(elem.value || ''); 1.253 + return null; 1.254 + } 1.255 + return elem.childNodes; 1.256 + }); 1.257 + return [names, values]; 1.258 + }, 1.259 + 1.260 + /** @id MochiKit.DOM.withDocument */ 1.261 + withDocument: function (doc, func) { 1.262 + var self = MochiKit.DOM; 1.263 + var oldDoc = self._document; 1.264 + var rval; 1.265 + try { 1.266 + self._document = doc; 1.267 + rval = func(); 1.268 + } catch (e) { 1.269 + self._document = oldDoc; 1.270 + throw e; 1.271 + } 1.272 + self._document = oldDoc; 1.273 + return rval; 1.274 + }, 1.275 + 1.276 + /** @id MochiKit.DOM.registerDOMConverter */ 1.277 + registerDOMConverter: function (name, check, wrap, /* optional */override) { 1.278 + MochiKit.DOM.domConverters.register(name, check, wrap, override); 1.279 + }, 1.280 + 1.281 + /** @id MochiKit.DOM.coerceToDOM */ 1.282 + coerceToDOM: function (node, ctx) { 1.283 + var m = MochiKit.Base; 1.284 + var im = MochiKit.Iter; 1.285 + var self = MochiKit.DOM; 1.286 + if (im) { 1.287 + var iter = im.iter; 1.288 + var repeat = im.repeat; 1.289 + } 1.290 + var map = m.map; 1.291 + var domConverters = self.domConverters; 1.292 + var coerceToDOM = arguments.callee; 1.293 + var NotFound = m.NotFound; 1.294 + while (true) { 1.295 + if (typeof(node) == 'undefined' || node === null) { 1.296 + return null; 1.297 + } 1.298 + // this is a safari childNodes object, avoiding crashes w/ attr 1.299 + // lookup 1.300 + if (typeof(node) == "function" && 1.301 + typeof(node.length) == "number" && 1.302 + !(node instanceof Function)) { 1.303 + node = im ? im.list(node) : m.extend(null, node); 1.304 + } 1.305 + if (typeof(node.nodeType) != 'undefined' && node.nodeType > 0) { 1.306 + return node; 1.307 + } 1.308 + if (typeof(node) == 'number' || typeof(node) == 'boolean') { 1.309 + node = node.toString(); 1.310 + // FALL THROUGH 1.311 + } 1.312 + if (typeof(node) == 'string') { 1.313 + return self._document.createTextNode(node); 1.314 + } 1.315 + if (typeof(node.__dom__) == 'function') { 1.316 + node = node.__dom__(ctx); 1.317 + continue; 1.318 + } 1.319 + if (typeof(node.dom) == 'function') { 1.320 + node = node.dom(ctx); 1.321 + continue; 1.322 + } 1.323 + if (typeof(node) == 'function') { 1.324 + node = node.apply(ctx, [ctx]); 1.325 + continue; 1.326 + } 1.327 + 1.328 + if (im) { 1.329 + // iterable 1.330 + var iterNodes = null; 1.331 + try { 1.332 + iterNodes = iter(node); 1.333 + } catch (e) { 1.334 + // pass 1.335 + } 1.336 + if (iterNodes) { 1.337 + return map(coerceToDOM, iterNodes, repeat(ctx)); 1.338 + } 1.339 + } else if (m.isArrayLike(node)) { 1.340 + var func = function (n) { return coerceToDOM(n, ctx); }; 1.341 + return map(func, node); 1.342 + } 1.343 + 1.344 + // adapter 1.345 + try { 1.346 + node = domConverters.match(node, ctx); 1.347 + continue; 1.348 + } catch (e) { 1.349 + if (e != NotFound) { 1.350 + throw e; 1.351 + } 1.352 + } 1.353 + 1.354 + // fallback 1.355 + return self._document.createTextNode(node.toString()); 1.356 + } 1.357 + // mozilla warnings aren't too bright 1.358 + return undefined; 1.359 + }, 1.360 + 1.361 + /** @id MochiKit.DOM.isChildNode */ 1.362 + isChildNode: function (node, maybeparent) { 1.363 + var self = MochiKit.DOM; 1.364 + if (typeof(node) == "string") { 1.365 + node = self.getElement(node); 1.366 + } 1.367 + if (typeof(maybeparent) == "string") { 1.368 + maybeparent = self.getElement(maybeparent); 1.369 + } 1.370 + if (typeof(node) == 'undefined' || node === null) { 1.371 + return false; 1.372 + } 1.373 + while (node != null && node !== self._document) { 1.374 + if (node === maybeparent) { 1.375 + return true; 1.376 + } 1.377 + node = node.parentNode; 1.378 + } 1.379 + return false; 1.380 + }, 1.381 + 1.382 + /** @id MochiKit.DOM.setNodeAttribute */ 1.383 + setNodeAttribute: function (node, attr, value) { 1.384 + var o = {}; 1.385 + o[attr] = value; 1.386 + try { 1.387 + return MochiKit.DOM.updateNodeAttributes(node, o); 1.388 + } catch (e) { 1.389 + // pass 1.390 + } 1.391 + return null; 1.392 + }, 1.393 + 1.394 + /** @id MochiKit.DOM.getNodeAttribute */ 1.395 + getNodeAttribute: function (node, attr) { 1.396 + var self = MochiKit.DOM; 1.397 + var rename = self.attributeArray.renames[attr]; 1.398 + var ignoreValue = self.attributeArray.ignoreAttr[attr]; 1.399 + node = self.getElement(node); 1.400 + try { 1.401 + if (rename) { 1.402 + return node[rename]; 1.403 + } 1.404 + var value = node.getAttribute(attr); 1.405 + if (value != ignoreValue) { 1.406 + return value; 1.407 + } 1.408 + } catch (e) { 1.409 + // pass 1.410 + } 1.411 + return null; 1.412 + }, 1.413 + 1.414 + /** @id MochiKit.DOM.removeNodeAttribute */ 1.415 + removeNodeAttribute: function (node, attr) { 1.416 + var self = MochiKit.DOM; 1.417 + var rename = self.attributeArray.renames[attr]; 1.418 + node = self.getElement(node); 1.419 + try { 1.420 + if (rename) { 1.421 + return node[rename]; 1.422 + } 1.423 + return node.removeAttribute(attr); 1.424 + } catch (e) { 1.425 + // pass 1.426 + } 1.427 + return null; 1.428 + }, 1.429 + 1.430 + /** @id MochiKit.DOM.updateNodeAttributes */ 1.431 + updateNodeAttributes: function (node, attrs) { 1.432 + var elem = node; 1.433 + var self = MochiKit.DOM; 1.434 + if (typeof(node) == 'string') { 1.435 + elem = self.getElement(node); 1.436 + } 1.437 + if (attrs) { 1.438 + var updatetree = MochiKit.Base.updatetree; 1.439 + if (self.attributeArray.compliant) { 1.440 + // not IE, good. 1.441 + for (var k in attrs) { 1.442 + var v = attrs[k]; 1.443 + if (typeof(v) == 'object' && typeof(elem[k]) == 'object') { 1.444 + if (k == "style" && MochiKit.Style) { 1.445 + MochiKit.Style.setStyle(elem, v); 1.446 + } else { 1.447 + updatetree(elem[k], v); 1.448 + } 1.449 + } else if (k.substring(0, 2) == "on") { 1.450 + if (typeof(v) == "string") { 1.451 + v = new Function(v); 1.452 + } 1.453 + elem[k] = v; 1.454 + } else { 1.455 + elem.setAttribute(k, v); 1.456 + } 1.457 + if (typeof(elem[k]) == "string" && elem[k] != v) { 1.458 + // Also set property for weird attributes (see #302) 1.459 + elem[k] = v; 1.460 + } 1.461 + } 1.462 + } else { 1.463 + // IE is insane in the membrane 1.464 + var renames = self.attributeArray.renames; 1.465 + for (var k in attrs) { 1.466 + v = attrs[k]; 1.467 + var renamed = renames[k]; 1.468 + if (k == "style" && typeof(v) == "string") { 1.469 + elem.style.cssText = v; 1.470 + } else if (typeof(renamed) == "string") { 1.471 + elem[renamed] = v; 1.472 + } else if (typeof(elem[k]) == 'object' 1.473 + && typeof(v) == 'object') { 1.474 + if (k == "style" && MochiKit.Style) { 1.475 + MochiKit.Style.setStyle(elem, v); 1.476 + } else { 1.477 + updatetree(elem[k], v); 1.478 + } 1.479 + } else if (k.substring(0, 2) == "on") { 1.480 + if (typeof(v) == "string") { 1.481 + v = new Function(v); 1.482 + } 1.483 + elem[k] = v; 1.484 + } else { 1.485 + elem.setAttribute(k, v); 1.486 + } 1.487 + if (typeof(elem[k]) == "string" && elem[k] != v) { 1.488 + // Also set property for weird attributes (see #302) 1.489 + elem[k] = v; 1.490 + } 1.491 + } 1.492 + } 1.493 + } 1.494 + return elem; 1.495 + }, 1.496 + 1.497 + /** @id MochiKit.DOM.appendChildNodes */ 1.498 + appendChildNodes: function (node/*, nodes...*/) { 1.499 + var elem = node; 1.500 + var self = MochiKit.DOM; 1.501 + if (typeof(node) == 'string') { 1.502 + elem = self.getElement(node); 1.503 + } 1.504 + var nodeStack = [ 1.505 + self.coerceToDOM( 1.506 + MochiKit.Base.extend(null, arguments, 1), 1.507 + elem 1.508 + ) 1.509 + ]; 1.510 + var concat = MochiKit.Base.concat; 1.511 + while (nodeStack.length) { 1.512 + var n = nodeStack.shift(); 1.513 + if (typeof(n) == 'undefined' || n === null) { 1.514 + // pass 1.515 + } else if (typeof(n.nodeType) == 'number') { 1.516 + elem.appendChild(n); 1.517 + } else { 1.518 + nodeStack = concat(n, nodeStack); 1.519 + } 1.520 + } 1.521 + return elem; 1.522 + }, 1.523 + 1.524 + 1.525 + /** @id MochiKit.DOM.insertSiblingNodesBefore */ 1.526 + insertSiblingNodesBefore: function (node/*, nodes...*/) { 1.527 + var elem = node; 1.528 + var self = MochiKit.DOM; 1.529 + if (typeof(node) == 'string') { 1.530 + elem = self.getElement(node); 1.531 + } 1.532 + var nodeStack = [ 1.533 + self.coerceToDOM( 1.534 + MochiKit.Base.extend(null, arguments, 1), 1.535 + elem 1.536 + ) 1.537 + ]; 1.538 + var parentnode = elem.parentNode; 1.539 + var concat = MochiKit.Base.concat; 1.540 + while (nodeStack.length) { 1.541 + var n = nodeStack.shift(); 1.542 + if (typeof(n) == 'undefined' || n === null) { 1.543 + // pass 1.544 + } else if (typeof(n.nodeType) == 'number') { 1.545 + parentnode.insertBefore(n, elem); 1.546 + } else { 1.547 + nodeStack = concat(n, nodeStack); 1.548 + } 1.549 + } 1.550 + return parentnode; 1.551 + }, 1.552 + 1.553 + /** @id MochiKit.DOM.insertSiblingNodesAfter */ 1.554 + insertSiblingNodesAfter: function (node/*, nodes...*/) { 1.555 + var elem = node; 1.556 + var self = MochiKit.DOM; 1.557 + 1.558 + if (typeof(node) == 'string') { 1.559 + elem = self.getElement(node); 1.560 + } 1.561 + var nodeStack = [ 1.562 + self.coerceToDOM( 1.563 + MochiKit.Base.extend(null, arguments, 1), 1.564 + elem 1.565 + ) 1.566 + ]; 1.567 + 1.568 + if (elem.nextSibling) { 1.569 + return self.insertSiblingNodesBefore(elem.nextSibling, nodeStack); 1.570 + } 1.571 + else { 1.572 + return self.appendChildNodes(elem.parentNode, nodeStack); 1.573 + } 1.574 + }, 1.575 + 1.576 + /** @id MochiKit.DOM.replaceChildNodes */ 1.577 + replaceChildNodes: function (node/*, nodes...*/) { 1.578 + var elem = node; 1.579 + var self = MochiKit.DOM; 1.580 + if (typeof(node) == 'string') { 1.581 + elem = self.getElement(node); 1.582 + arguments[0] = elem; 1.583 + } 1.584 + var child; 1.585 + while ((child = elem.firstChild)) { 1.586 + elem.removeChild(child); 1.587 + } 1.588 + if (arguments.length < 2) { 1.589 + return elem; 1.590 + } else { 1.591 + return self.appendChildNodes.apply(this, arguments); 1.592 + } 1.593 + }, 1.594 + 1.595 + /** @id MochiKit.DOM.createDOM */ 1.596 + createDOM: function (name, attrs/*, nodes... */) { 1.597 + var elem; 1.598 + var self = MochiKit.DOM; 1.599 + var m = MochiKit.Base; 1.600 + if (typeof(attrs) == "string" || typeof(attrs) == "number") { 1.601 + var args = m.extend([name, null], arguments, 1); 1.602 + return arguments.callee.apply(this, args); 1.603 + } 1.604 + if (typeof(name) == 'string') { 1.605 + // Internet Explorer is dumb 1.606 + var xhtml = self._xhtml; 1.607 + if (attrs && !self.attributeArray.compliant) { 1.608 + // http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/name_2.asp 1.609 + var contents = ""; 1.610 + if ('name' in attrs) { 1.611 + contents += ' name="' + self.escapeHTML(attrs.name) + '"'; 1.612 + } 1.613 + if (name == 'input' && 'type' in attrs) { 1.614 + contents += ' type="' + self.escapeHTML(attrs.type) + '"'; 1.615 + } 1.616 + if (contents) { 1.617 + name = "<" + name + contents + ">"; 1.618 + xhtml = false; 1.619 + } 1.620 + } 1.621 + var d = self._document; 1.622 + if (xhtml && d === document) { 1.623 + elem = d.createElementNS("http://www.w3.org/1999/xhtml", name); 1.624 + } else { 1.625 + elem = d.createElement(name); 1.626 + } 1.627 + } else { 1.628 + elem = name; 1.629 + } 1.630 + if (attrs) { 1.631 + self.updateNodeAttributes(elem, attrs); 1.632 + } 1.633 + if (arguments.length <= 2) { 1.634 + return elem; 1.635 + } else { 1.636 + var args = m.extend([elem], arguments, 2); 1.637 + return self.appendChildNodes.apply(this, args); 1.638 + } 1.639 + }, 1.640 + 1.641 + /** @id MochiKit.DOM.createDOMFunc */ 1.642 + createDOMFunc: function (/* tag, attrs, *nodes */) { 1.643 + var m = MochiKit.Base; 1.644 + return m.partial.apply( 1.645 + this, 1.646 + m.extend([MochiKit.DOM.createDOM], arguments) 1.647 + ); 1.648 + }, 1.649 + 1.650 + /** @id MochiKit.DOM.removeElement */ 1.651 + removeElement: function (elem) { 1.652 + var self = MochiKit.DOM; 1.653 + var e = self.coerceToDOM(self.getElement(elem)); 1.654 + e.parentNode.removeChild(e); 1.655 + return e; 1.656 + }, 1.657 + 1.658 + /** @id MochiKit.DOM.swapDOM */ 1.659 + swapDOM: function (dest, src) { 1.660 + var self = MochiKit.DOM; 1.661 + dest = self.getElement(dest); 1.662 + var parent = dest.parentNode; 1.663 + if (src) { 1.664 + src = self.coerceToDOM(self.getElement(src), parent); 1.665 + parent.replaceChild(src, dest); 1.666 + } else { 1.667 + parent.removeChild(dest); 1.668 + } 1.669 + return src; 1.670 + }, 1.671 + 1.672 + /** @id MochiKit.DOM.getElement */ 1.673 + getElement: function (id) { 1.674 + var self = MochiKit.DOM; 1.675 + if (arguments.length == 1) { 1.676 + return ((typeof(id) == "string") ? 1.677 + self._document.getElementById(id) : id); 1.678 + } else { 1.679 + return MochiKit.Base.map(self.getElement, arguments); 1.680 + } 1.681 + }, 1.682 + 1.683 + /** @id MochiKit.DOM.getElementsByTagAndClassName */ 1.684 + getElementsByTagAndClassName: function (tagName, className, 1.685 + /* optional */parent) { 1.686 + var self = MochiKit.DOM; 1.687 + if (typeof(tagName) == 'undefined' || tagName === null) { 1.688 + tagName = '*'; 1.689 + } 1.690 + if (typeof(parent) == 'undefined' || parent === null) { 1.691 + parent = self._document; 1.692 + } 1.693 + parent = self.getElement(parent); 1.694 + if (parent == null) { 1.695 + return []; 1.696 + } 1.697 + var children = (parent.getElementsByTagName(tagName) 1.698 + || self._document.all); 1.699 + if (typeof(className) == 'undefined' || className === null) { 1.700 + return MochiKit.Base.extend(null, children); 1.701 + } 1.702 + 1.703 + var elements = []; 1.704 + for (var i = 0; i < children.length; i++) { 1.705 + var child = children[i]; 1.706 + var cls = child.className; 1.707 + if (typeof(cls) != "string") { 1.708 + cls = child.getAttribute("class"); 1.709 + } 1.710 + if (typeof(cls) == "string") { 1.711 + var classNames = cls.split(' '); 1.712 + for (var j = 0; j < classNames.length; j++) { 1.713 + if (classNames[j] == className) { 1.714 + elements.push(child); 1.715 + break; 1.716 + } 1.717 + } 1.718 + } 1.719 + } 1.720 + 1.721 + return elements; 1.722 + }, 1.723 + 1.724 + _newCallStack: function (path, once) { 1.725 + var rval = function () { 1.726 + var callStack = arguments.callee.callStack; 1.727 + for (var i = 0; i < callStack.length; i++) { 1.728 + if (callStack[i].apply(this, arguments) === false) { 1.729 + break; 1.730 + } 1.731 + } 1.732 + if (once) { 1.733 + try { 1.734 + this[path] = null; 1.735 + } catch (e) { 1.736 + // pass 1.737 + } 1.738 + } 1.739 + }; 1.740 + rval.callStack = []; 1.741 + return rval; 1.742 + }, 1.743 + 1.744 + /** @id MochiKit.DOM.addToCallStack */ 1.745 + addToCallStack: function (target, path, func, once) { 1.746 + var self = MochiKit.DOM; 1.747 + var existing = target[path]; 1.748 + var regfunc = existing; 1.749 + if (!(typeof(existing) == 'function' 1.750 + && typeof(existing.callStack) == "object" 1.751 + && existing.callStack !== null)) { 1.752 + regfunc = self._newCallStack(path, once); 1.753 + if (typeof(existing) == 'function') { 1.754 + regfunc.callStack.push(existing); 1.755 + } 1.756 + target[path] = regfunc; 1.757 + } 1.758 + regfunc.callStack.push(func); 1.759 + }, 1.760 + 1.761 + /** @id MochiKit.DOM.addLoadEvent */ 1.762 + addLoadEvent: function (func) { 1.763 + var self = MochiKit.DOM; 1.764 + self.addToCallStack(self._window, "onload", func, true); 1.765 + 1.766 + }, 1.767 + 1.768 + /** @id MochiKit.DOM.focusOnLoad */ 1.769 + focusOnLoad: function (element) { 1.770 + var self = MochiKit.DOM; 1.771 + self.addLoadEvent(function () { 1.772 + element = self.getElement(element); 1.773 + if (element) { 1.774 + element.focus(); 1.775 + } 1.776 + }); 1.777 + }, 1.778 + 1.779 + /** @id MochiKit.DOM.setElementClass */ 1.780 + setElementClass: function (element, className) { 1.781 + var self = MochiKit.DOM; 1.782 + var obj = self.getElement(element); 1.783 + if (self.attributeArray.compliant) { 1.784 + obj.setAttribute("class", className); 1.785 + } else { 1.786 + obj.setAttribute("className", className); 1.787 + } 1.788 + }, 1.789 + 1.790 + /** @id MochiKit.DOM.toggleElementClass */ 1.791 + toggleElementClass: function (className/*, element... */) { 1.792 + var self = MochiKit.DOM; 1.793 + for (var i = 1; i < arguments.length; i++) { 1.794 + var obj = self.getElement(arguments[i]); 1.795 + if (!self.addElementClass(obj, className)) { 1.796 + self.removeElementClass(obj, className); 1.797 + } 1.798 + } 1.799 + }, 1.800 + 1.801 + /** @id MochiKit.DOM.addElementClass */ 1.802 + addElementClass: function (element, className) { 1.803 + var self = MochiKit.DOM; 1.804 + var obj = self.getElement(element); 1.805 + var cls = obj.className; 1.806 + if (typeof(cls) != "string") { 1.807 + cls = obj.getAttribute("class"); 1.808 + } 1.809 + // trivial case, no className yet 1.810 + if (typeof(cls) != "string" || cls.length === 0) { 1.811 + self.setElementClass(obj, className); 1.812 + return true; 1.813 + } 1.814 + // the other trivial case, already set as the only class 1.815 + if (cls == className) { 1.816 + return false; 1.817 + } 1.818 + var classes = cls.split(" "); 1.819 + for (var i = 0; i < classes.length; i++) { 1.820 + // already present 1.821 + if (classes[i] == className) { 1.822 + return false; 1.823 + } 1.824 + } 1.825 + // append class 1.826 + self.setElementClass(obj, cls + " " + className); 1.827 + return true; 1.828 + }, 1.829 + 1.830 + /** @id MochiKit.DOM.removeElementClass */ 1.831 + removeElementClass: function (element, className) { 1.832 + var self = MochiKit.DOM; 1.833 + var obj = self.getElement(element); 1.834 + var cls = obj.className; 1.835 + if (typeof(cls) != "string") { 1.836 + cls = obj.getAttribute("class"); 1.837 + } 1.838 + // trivial case, no className yet 1.839 + if (typeof(cls) != "string" || cls.length === 0) { 1.840 + return false; 1.841 + } 1.842 + // other trivial case, set only to className 1.843 + if (cls == className) { 1.844 + self.setElementClass(obj, ""); 1.845 + return true; 1.846 + } 1.847 + var classes = cls.split(" "); 1.848 + for (var i = 0; i < classes.length; i++) { 1.849 + // already present 1.850 + if (classes[i] == className) { 1.851 + // only check sane case where the class is used once 1.852 + classes.splice(i, 1); 1.853 + self.setElementClass(obj, classes.join(" ")); 1.854 + return true; 1.855 + } 1.856 + } 1.857 + // not found 1.858 + return false; 1.859 + }, 1.860 + 1.861 + /** @id MochiKit.DOM.swapElementClass */ 1.862 + swapElementClass: function (element, fromClass, toClass) { 1.863 + var obj = MochiKit.DOM.getElement(element); 1.864 + var res = MochiKit.DOM.removeElementClass(obj, fromClass); 1.865 + if (res) { 1.866 + MochiKit.DOM.addElementClass(obj, toClass); 1.867 + } 1.868 + return res; 1.869 + }, 1.870 + 1.871 + /** @id MochiKit.DOM.hasElementClass */ 1.872 + hasElementClass: function (element, className/*...*/) { 1.873 + var obj = MochiKit.DOM.getElement(element); 1.874 + if (obj == null) { 1.875 + return false; 1.876 + } 1.877 + var cls = obj.className; 1.878 + if (typeof(cls) != "string") { 1.879 + cls = obj.getAttribute("class"); 1.880 + } 1.881 + if (typeof(cls) != "string") { 1.882 + return false; 1.883 + } 1.884 + var classes = cls.split(" "); 1.885 + for (var i = 1; i < arguments.length; i++) { 1.886 + var good = false; 1.887 + for (var j = 0; j < classes.length; j++) { 1.888 + if (classes[j] == arguments[i]) { 1.889 + good = true; 1.890 + break; 1.891 + } 1.892 + } 1.893 + if (!good) { 1.894 + return false; 1.895 + } 1.896 + } 1.897 + return true; 1.898 + }, 1.899 + 1.900 + /** @id MochiKit.DOM.escapeHTML */ 1.901 + escapeHTML: function (s) { 1.902 + return s.replace(/&/g, "&" 1.903 + ).replace(/"/g, """ 1.904 + ).replace(/</g, "<" 1.905 + ).replace(/>/g, ">"); 1.906 + }, 1.907 + 1.908 + /** @id MochiKit.DOM.toHTML */ 1.909 + toHTML: function (dom) { 1.910 + return MochiKit.DOM.emitHTML(dom).join(""); 1.911 + }, 1.912 + 1.913 + /** @id MochiKit.DOM.emitHTML */ 1.914 + emitHTML: function (dom, /* optional */lst) { 1.915 + if (typeof(lst) == 'undefined' || lst === null) { 1.916 + lst = []; 1.917 + } 1.918 + // queue is the call stack, we're doing this non-recursively 1.919 + var queue = [dom]; 1.920 + var self = MochiKit.DOM; 1.921 + var escapeHTML = self.escapeHTML; 1.922 + var attributeArray = self.attributeArray; 1.923 + while (queue.length) { 1.924 + dom = queue.pop(); 1.925 + if (typeof(dom) == 'string') { 1.926 + lst.push(dom); 1.927 + } else if (dom.nodeType == 1) { 1.928 + // we're not using higher order stuff here 1.929 + // because safari has heisenbugs.. argh. 1.930 + // 1.931 + // I think it might have something to do with 1.932 + // garbage collection and function calls. 1.933 + lst.push('<' + dom.tagName.toLowerCase()); 1.934 + var attributes = []; 1.935 + var domAttr = attributeArray(dom); 1.936 + for (var i = 0; i < domAttr.length; i++) { 1.937 + var a = domAttr[i]; 1.938 + attributes.push([ 1.939 + " ", 1.940 + a.name, 1.941 + '="', 1.942 + escapeHTML(a.value), 1.943 + '"' 1.944 + ]); 1.945 + } 1.946 + attributes.sort(); 1.947 + for (i = 0; i < attributes.length; i++) { 1.948 + var attrs = attributes[i]; 1.949 + for (var j = 0; j < attrs.length; j++) { 1.950 + lst.push(attrs[j]); 1.951 + } 1.952 + } 1.953 + if (dom.hasChildNodes()) { 1.954 + lst.push(">"); 1.955 + // queue is the FILO call stack, so we put the close tag 1.956 + // on first 1.957 + queue.push("</" + dom.tagName.toLowerCase() + ">"); 1.958 + var cnodes = dom.childNodes; 1.959 + for (i = cnodes.length - 1; i >= 0; i--) { 1.960 + queue.push(cnodes[i]); 1.961 + } 1.962 + } else { 1.963 + lst.push('/>'); 1.964 + } 1.965 + } else if (dom.nodeType == 3) { 1.966 + lst.push(escapeHTML(dom.nodeValue)); 1.967 + } 1.968 + } 1.969 + return lst; 1.970 + }, 1.971 + 1.972 + /** @id MochiKit.DOM.scrapeText */ 1.973 + scrapeText: function (node, /* optional */asArray) { 1.974 + var rval = []; 1.975 + (function (node) { 1.976 + var cn = node.childNodes; 1.977 + if (cn) { 1.978 + for (var i = 0; i < cn.length; i++) { 1.979 + arguments.callee.call(this, cn[i]); 1.980 + } 1.981 + } 1.982 + var nodeValue = node.nodeValue; 1.983 + if (typeof(nodeValue) == 'string') { 1.984 + rval.push(nodeValue); 1.985 + } 1.986 + })(MochiKit.DOM.getElement(node)); 1.987 + if (asArray) { 1.988 + return rval; 1.989 + } else { 1.990 + return rval.join(""); 1.991 + } 1.992 + }, 1.993 + 1.994 + /** @id MochiKit.DOM.removeEmptyTextNodes */ 1.995 + removeEmptyTextNodes: function (element) { 1.996 + element = MochiKit.DOM.getElement(element); 1.997 + for (var i = 0; i < element.childNodes.length; i++) { 1.998 + var node = element.childNodes[i]; 1.999 + if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) { 1.1000 + node.parentNode.removeChild(node); 1.1001 + } 1.1002 + } 1.1003 + }, 1.1004 + 1.1005 + /** @id MochiKit.DOM.getFirstElementByTagAndClassName */ 1.1006 + getFirstElementByTagAndClassName: function (tagName, className, 1.1007 + /* optional */parent) { 1.1008 + var self = MochiKit.DOM; 1.1009 + if (typeof(tagName) == 'undefined' || tagName === null) { 1.1010 + tagName = '*'; 1.1011 + } 1.1012 + if (typeof(parent) == 'undefined' || parent === null) { 1.1013 + parent = self._document; 1.1014 + } 1.1015 + parent = self.getElement(parent); 1.1016 + if (parent == null) { 1.1017 + return null; 1.1018 + } 1.1019 + var children = (parent.getElementsByTagName(tagName) 1.1020 + || self._document.all); 1.1021 + if (children.length <= 0) { 1.1022 + return null; 1.1023 + } else if (typeof(className) == 'undefined' || className === null) { 1.1024 + return children[0]; 1.1025 + } 1.1026 + 1.1027 + for (var i = 0; i < children.length; i++) { 1.1028 + var child = children[i]; 1.1029 + var cls = child.className; 1.1030 + if (typeof(cls) != "string") { 1.1031 + cls = child.getAttribute("class"); 1.1032 + } 1.1033 + if (typeof(cls) == "string") { 1.1034 + var classNames = cls.split(' '); 1.1035 + for (var j = 0; j < classNames.length; j++) { 1.1036 + if (classNames[j] == className) { 1.1037 + return child; 1.1038 + } 1.1039 + } 1.1040 + } 1.1041 + } 1.1042 + return null; 1.1043 + }, 1.1044 + 1.1045 + /** @id MochiKit.DOM.getFirstParentByTagAndClassName */ 1.1046 + getFirstParentByTagAndClassName: function (elem, tagName, className) { 1.1047 + var self = MochiKit.DOM; 1.1048 + elem = self.getElement(elem); 1.1049 + if (typeof(tagName) == 'undefined' || tagName === null) { 1.1050 + tagName = '*'; 1.1051 + } else { 1.1052 + tagName = tagName.toUpperCase(); 1.1053 + } 1.1054 + if (typeof(className) == 'undefined' || className === null) { 1.1055 + className = null; 1.1056 + } 1.1057 + if (elem) { 1.1058 + elem = elem.parentNode; 1.1059 + } 1.1060 + while (elem && elem.tagName) { 1.1061 + var curTagName = elem.tagName.toUpperCase(); 1.1062 + if ((tagName === '*' || tagName == curTagName) && 1.1063 + (className === null || self.hasElementClass(elem, className))) { 1.1064 + return elem; 1.1065 + } 1.1066 + elem = elem.parentNode; 1.1067 + } 1.1068 + return null; 1.1069 + }, 1.1070 + 1.1071 + __new__: function (win) { 1.1072 + 1.1073 + var m = MochiKit.Base; 1.1074 + if (typeof(document) != "undefined") { 1.1075 + this._document = document; 1.1076 + var kXULNSURI = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; 1.1077 + this._xhtml = (document.documentElement && 1.1078 + document.createElementNS && 1.1079 + document.documentElement.namespaceURI === kXULNSURI); 1.1080 + } else if (MochiKit.MockDOM) { 1.1081 + this._document = MochiKit.MockDOM.document; 1.1082 + } 1.1083 + this._window = win; 1.1084 + 1.1085 + this.domConverters = new m.AdapterRegistry(); 1.1086 + 1.1087 + var __tmpElement = this._document.createElement("span"); 1.1088 + var attributeArray; 1.1089 + if (__tmpElement && __tmpElement.attributes && 1.1090 + __tmpElement.attributes.length > 0) { 1.1091 + // for braindead browsers (IE) that insert extra junk 1.1092 + var filter = m.filter; 1.1093 + attributeArray = function (node) { 1.1094 + /*** 1.1095 + 1.1096 + Return an array of attributes for a given node, 1.1097 + filtering out attributes that don't belong for 1.1098 + that are inserted by "Certain Browsers". 1.1099 + 1.1100 + ***/ 1.1101 + return filter(attributeArray.ignoreAttrFilter, node.attributes); 1.1102 + }; 1.1103 + attributeArray.ignoreAttr = {}; 1.1104 + var attrs = __tmpElement.attributes; 1.1105 + var ignoreAttr = attributeArray.ignoreAttr; 1.1106 + for (var i = 0; i < attrs.length; i++) { 1.1107 + var a = attrs[i]; 1.1108 + ignoreAttr[a.name] = a.value; 1.1109 + } 1.1110 + attributeArray.ignoreAttrFilter = function (a) { 1.1111 + return (attributeArray.ignoreAttr[a.name] != a.value); 1.1112 + }; 1.1113 + attributeArray.compliant = false; 1.1114 + attributeArray.renames = { 1.1115 + "class": "className", 1.1116 + "checked": "defaultChecked", 1.1117 + "usemap": "useMap", 1.1118 + "for": "htmlFor", 1.1119 + "readonly": "readOnly", 1.1120 + "colspan": "colSpan", 1.1121 + "bgcolor": "bgColor", 1.1122 + "cellspacing": "cellSpacing", 1.1123 + "cellpadding": "cellPadding" 1.1124 + }; 1.1125 + } else { 1.1126 + attributeArray = function (node) { 1.1127 + return node.attributes; 1.1128 + }; 1.1129 + attributeArray.compliant = true; 1.1130 + attributeArray.ignoreAttr = {}; 1.1131 + attributeArray.renames = {}; 1.1132 + } 1.1133 + this.attributeArray = attributeArray; 1.1134 + 1.1135 + // FIXME: this really belongs in Base, and could probably be cleaner 1.1136 + var _deprecated = function(fromModule, arr) { 1.1137 + var fromName = arr[0]; 1.1138 + var toName = arr[1]; 1.1139 + var toModule = toName.split('.')[1]; 1.1140 + var str = ''; 1.1141 + 1.1142 + str += 'if (!MochiKit.' + toModule + ') { throw new Error("'; 1.1143 + str += 'This function has been deprecated and depends on MochiKit.'; 1.1144 + str += toModule + '.");}'; 1.1145 + str += 'return ' + toName + '.apply(this, arguments);'; 1.1146 + MochiKit[fromModule][fromName] = new Function(str); 1.1147 + } 1.1148 + for (var i = 0; i < MochiKit.DOM.DEPRECATED.length; i++) { 1.1149 + _deprecated('DOM', MochiKit.DOM.DEPRECATED[i]); 1.1150 + } 1.1151 + 1.1152 + // shorthand for createDOM syntax 1.1153 + var createDOMFunc = this.createDOMFunc; 1.1154 + /** @id MochiKit.DOM.UL */ 1.1155 + this.UL = createDOMFunc("ul"); 1.1156 + /** @id MochiKit.DOM.OL */ 1.1157 + this.OL = createDOMFunc("ol"); 1.1158 + /** @id MochiKit.DOM.LI */ 1.1159 + this.LI = createDOMFunc("li"); 1.1160 + /** @id MochiKit.DOM.DL */ 1.1161 + this.DL = createDOMFunc("dl"); 1.1162 + /** @id MochiKit.DOM.DT */ 1.1163 + this.DT = createDOMFunc("dt"); 1.1164 + /** @id MochiKit.DOM.DD */ 1.1165 + this.DD = createDOMFunc("dd"); 1.1166 + /** @id MochiKit.DOM.TD */ 1.1167 + this.TD = createDOMFunc("td"); 1.1168 + /** @id MochiKit.DOM.TR */ 1.1169 + this.TR = createDOMFunc("tr"); 1.1170 + /** @id MochiKit.DOM.TBODY */ 1.1171 + this.TBODY = createDOMFunc("tbody"); 1.1172 + /** @id MochiKit.DOM.THEAD */ 1.1173 + this.THEAD = createDOMFunc("thead"); 1.1174 + /** @id MochiKit.DOM.TFOOT */ 1.1175 + this.TFOOT = createDOMFunc("tfoot"); 1.1176 + /** @id MochiKit.DOM.TABLE */ 1.1177 + this.TABLE = createDOMFunc("table"); 1.1178 + /** @id MochiKit.DOM.TH */ 1.1179 + this.TH = createDOMFunc("th"); 1.1180 + /** @id MochiKit.DOM.INPUT */ 1.1181 + this.INPUT = createDOMFunc("input"); 1.1182 + /** @id MochiKit.DOM.SPAN */ 1.1183 + this.SPAN = createDOMFunc("span"); 1.1184 + /** @id MochiKit.DOM.A */ 1.1185 + this.A = createDOMFunc("a"); 1.1186 + /** @id MochiKit.DOM.DIV */ 1.1187 + this.DIV = createDOMFunc("div"); 1.1188 + /** @id MochiKit.DOM.IMG */ 1.1189 + this.IMG = createDOMFunc("img"); 1.1190 + /** @id MochiKit.DOM.BUTTON */ 1.1191 + this.BUTTON = createDOMFunc("button"); 1.1192 + /** @id MochiKit.DOM.TT */ 1.1193 + this.TT = createDOMFunc("tt"); 1.1194 + /** @id MochiKit.DOM.PRE */ 1.1195 + this.PRE = createDOMFunc("pre"); 1.1196 + /** @id MochiKit.DOM.H1 */ 1.1197 + this.H1 = createDOMFunc("h1"); 1.1198 + /** @id MochiKit.DOM.H2 */ 1.1199 + this.H2 = createDOMFunc("h2"); 1.1200 + /** @id MochiKit.DOM.H3 */ 1.1201 + this.H3 = createDOMFunc("h3"); 1.1202 + /** @id MochiKit.DOM.H4 */ 1.1203 + this.H4 = createDOMFunc("h4"); 1.1204 + /** @id MochiKit.DOM.H5 */ 1.1205 + this.H5 = createDOMFunc("h5"); 1.1206 + /** @id MochiKit.DOM.H6 */ 1.1207 + this.H6 = createDOMFunc("h6"); 1.1208 + /** @id MochiKit.DOM.BR */ 1.1209 + this.BR = createDOMFunc("br"); 1.1210 + /** @id MochiKit.DOM.HR */ 1.1211 + this.HR = createDOMFunc("hr"); 1.1212 + /** @id MochiKit.DOM.LABEL */ 1.1213 + this.LABEL = createDOMFunc("label"); 1.1214 + /** @id MochiKit.DOM.TEXTAREA */ 1.1215 + this.TEXTAREA = createDOMFunc("textarea"); 1.1216 + /** @id MochiKit.DOM.FORM */ 1.1217 + this.FORM = createDOMFunc("form"); 1.1218 + /** @id MochiKit.DOM.P */ 1.1219 + this.P = createDOMFunc("p"); 1.1220 + /** @id MochiKit.DOM.SELECT */ 1.1221 + this.SELECT = createDOMFunc("select"); 1.1222 + /** @id MochiKit.DOM.OPTION */ 1.1223 + this.OPTION = createDOMFunc("option"); 1.1224 + /** @id MochiKit.DOM.OPTGROUP */ 1.1225 + this.OPTGROUP = createDOMFunc("optgroup"); 1.1226 + /** @id MochiKit.DOM.LEGEND */ 1.1227 + this.LEGEND = createDOMFunc("legend"); 1.1228 + /** @id MochiKit.DOM.FIELDSET */ 1.1229 + this.FIELDSET = createDOMFunc("fieldset"); 1.1230 + /** @id MochiKit.DOM.STRONG */ 1.1231 + this.STRONG = createDOMFunc("strong"); 1.1232 + /** @id MochiKit.DOM.CANVAS */ 1.1233 + this.CANVAS = createDOMFunc("canvas"); 1.1234 + 1.1235 + /** @id MochiKit.DOM.$ */ 1.1236 + this.$ = this.getElement; 1.1237 + 1.1238 + this.EXPORT_TAGS = { 1.1239 + ":common": this.EXPORT, 1.1240 + ":all": m.concat(this.EXPORT, this.EXPORT_OK) 1.1241 + }; 1.1242 + 1.1243 + m.nameFunctions(this); 1.1244 + 1.1245 + } 1.1246 +}); 1.1247 + 1.1248 + 1.1249 +MochiKit.DOM.__new__(((typeof(window) == "undefined") ? this : window)); 1.1250 + 1.1251 +// 1.1252 +// XXX: Internet Explorer blows 1.1253 +// 1.1254 +if (MochiKit.__export__) { 1.1255 + withWindow = MochiKit.DOM.withWindow; 1.1256 + withDocument = MochiKit.DOM.withDocument; 1.1257 +} 1.1258 + 1.1259 +MochiKit.Base._exportSymbols(this, MochiKit.DOM);