root/trunk/Vanilla/plugins/Vanilla/templates/vanilla+scoring/javascript.mtml @ 1220

Revision 1220, 4.7 kB (checked in by bsmith, 13 months ago)

adding two Vanilla template sets: Vanilla+Scoring and Vanilla+Widgets

Line 
1
2/* Ajax Requests *****************************************************************/
3
4<mt:Ignore>
5/***
6 * Returns a XMLHttpRequest object (for Ajax operations).
7 */
8</mt:Ignore>
9function mtGetXmlHttp() {
10    if ( !window.XMLHttpRequest ) {
11        window.XMLHttpRequest = function() {
12            var types = [
13                "Microsoft.XMLHTTP",
14                "MSXML2.XMLHTTP.5.0",
15                "MSXML2.XMLHTTP.4.0",
16                "MSXML2.XMLHTTP.3.0",
17                "MSXML2.XMLHTTP"
18            ];
19
20            for ( var i = 0; i < types.length; i++ ) {
21                try {
22                    return new ActiveXObject( types[ i ] );
23                } catch( e ) {}
24            }
25
26            return undefined;
27        };
28    }
29    if ( window.XMLHttpRequest )
30        return new XMLHttpRequest();
31}
32
33
34/* Adding Handlers to window events *****************************************************************/
35
36<mt:Ignore>
37/***
38 * A utility function for assigning/adding handlers to window events.
39 */
40</mt:Ignore>
41function mtAttachEvent(eventName,func) {
42    var onEventName = 'on' + eventName;
43    var old = window[onEventName];
44    if( typeof old != 'function' )
45        window[onEventName] = func;
46    else {
47        window[onEventName] = function( evt ) {
48            old( evt );
49            return func( evt );
50        };
51    }
52}
53
54/* DOM Handler *****************************************************************/
55
56if ( !window.DOM )
57    DOM = {
58
59        getElement: function( e ) {
60            return (typeof e == "string" || typeof e == "number") ? document.getElementById( e ) : e;
61        },
62   
63   
64        addEventListener: function( e, en, f, uc ) {
65            try {
66                if( e.addEventListener )
67                    e.addEventListener( en, f, uc );
68                else if( e.attachEvent )
69                    e.attachEvent( "on" + en, f );
70                else
71                    e[ "on" + en ] = f;
72            } catch( e ) {}
73        },
74
75   
76        getClassNames: function( e ) {
77            if( !e || !e.className )
78                return [];
79            return e.className.split( /\s+/g );
80        },
81   
82   
83        hasClassName: function( e, cn ) {
84            e = DOM.getElement( e );
85            if( !e || !e.className )
86                return false;
87            var cs = DOM.getClassNames( e );
88            for( var i = 0; i < cs.length; i++ ) {
89                if( cs[ i ] == cn )
90                    return true;
91            }
92            return false;
93        },
94   
95   
96        addClassName: function( e, cn ) {
97            e = DOM.getElement( e );
98            if( !e || !cn )
99                return false;
100            var cs = DOM.getClassNames( e );
101            for( var i = 0; i < cs.length; i++ ) {
102                if( cs[ i ] == cn )
103                    return true;
104            }
105            cs.push( cn );
106            e.className = cs.join( " " );
107            return false;
108        },
109   
110   
111        removeClassName: function( e, cn ) {
112            var r = false;
113            e = DOM.getElement( e );
114            if( !e || !e.className || !cn )
115                return r;
116            var cs = (e.className && e.className.length)
117                ? e.className.split( /\s+/g )
118                : [];
119            var ncs = [];
120            /* support regex */
121            if( cn instanceof RegExp ) {
122                for( var i = 0; i < cs.length; i++ ) {
123                    if ( cn.test( cs[ i ] ) ) {
124                        r = true;
125                        continue;
126                    }
127                    ncs.push( cs[ i ] );
128                }
129            } else {
130                for( var i = 0; i < cs.length; i++ ) {
131                    if( cs[ i ] == cn ) {
132                        r = true;
133                        continue;
134                    }
135                    ncs.push( cs[ i ] );
136                }
137            }
138            if( r )
139                e.className = ncs.join( " " );
140            return r;
141        },
142
143
144        getElementsByTagAndClassName: function( tagName, className, root ) {
145            root = DOM.getElement( root );
146            if( !root )
147                root = document;
148            var allElements = root.getElementsByTagName( tagName );
149            var elements = [];
150            for( var i = 0; i < allElements.length; i++ ) {
151                var element = allElements[ i ];
152                if( !element )
153                    continue;
154                if( DOM.hasClassName( element, className ) )
155                    elements[ elements.length ] = element;
156            }
157            return elements;
158        },
159
160
161        getElementsByClassName: function( className, root ) {
162            return DOM.getElementsByTagAndClassName( "*", className, root );
163        }
164
165
166    };
167
Note: See TracBrowser for help on using the browser.