| 1 | |
|---|
| 2 | /* Ajax Requests *****************************************************************/ |
|---|
| 3 | |
|---|
| 4 | <mt:Ignore> |
|---|
| 5 | /*** |
|---|
| 6 | * Returns a XMLHttpRequest object (for Ajax operations). |
|---|
| 7 | */ |
|---|
| 8 | </mt:Ignore> |
|---|
| 9 | function 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> |
|---|
| 41 | function 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 | |
|---|
| 56 | if ( !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 | |
|---|