]> gitweb @ CieloNegro.org - Rakka.git/blob - js/jquery-dom.js
More users thingy
[Rakka.git] / js / jquery-dom.js
1 // DOM element creator for jQuery and Prototype by Michael Geary
2 // http://mg.to/topics/programming/javascript/jquery
3 // Inspired by MochiKit.DOM by Bob Ippolito
4 // Free beer and free speech. Enjoy!
5
6 $.defineTag = function( tag ) {
7         $[tag.toUpperCase()] = function() {
8                 return $._createNode( tag, arguments );
9         }
10 };
11
12 (function() {
13         var tags = [
14                 'a', 'br', 'button', 'canvas', 'div', 'fieldset', 'form',
15                 'h1', 'h2', 'h3', 'hr', 'img', 'input', 'label', 'legend',
16                 'li', 'ol', 'optgroup', 'option', 'p', 'pre', 'select',
17                 'span', 'strong', 'table', 'tbody', 'td', 'textarea',
18                 'tfoot', 'th', 'thead', 'tr', 'tt', 'ul' ];
19         for( var i = tags.length - 1;  i >= 0;  i-- ) {
20                 $.defineTag( tags[i] );
21         }
22 })();
23
24 $.NBSP = '\u00a0';
25
26 $._createNode = function( tag, args ) {
27         var fix = { 'class':'className', 'Class':'className' };
28         var e;
29         //try {
30                 var attrs = args[0] || {};
31                 e = document.createElement( tag );
32                 for( var attr in attrs ) {
33                         var a = fix[attr] || attr;
34                         e[a] = attrs[attr];
35                 }
36                 for( var i = 1;  i < args.length;  i++ ) {
37                         var arg = args[i];
38                         if( arg == null ) continue;
39                         if( arg.constructor != Array ) append( arg );
40                         else for( var j = 0;  j < arg.length;  j++ )
41                                 append( arg[j] );
42                 }
43         //}
44         //catch( ex ) {
45                 //alert( 'Cannot create <' + tag + '> element:\n' +
46                 //      args.toSource() + '\n' + args );
47                 //e = null;
48         //}
49
50         function append( arg ) {
51                 if( arg == null ) return;
52                 var c = arg.constructor;
53                 switch( typeof arg ) {
54                         case 'number': arg = '' + arg;  // fall through
55                         case 'string': arg = document.createTextNode( arg );
56                 }
57                 e.appendChild( arg );
58         }
59
60         return e;
61 };