renaming SliceAttribute into SliceTag and InterfaceSetting into InterfaceTag
[plewww.git] / planetlab / includes / js / bsn.DOM.js
1 /**
2  *  author:             Timothy Groves - http://www.brandspankingnew.net
3  *      version:        1.5 - 2006-08-03
4  *
5  *      requires:       nothing
6  *
7  */
8
9 var useBSNns;
10
11 if (useBSNns)
12 {
13         if (typeof(bsn) == "undefined")
14                 bsn = {}
15         _bsn = bsn;
16 }
17 else
18 {
19         _bsn = this;
20 }
21
22
23 if (typeof(_bsn.DOM) == "undefined")
24         _bsn.DOM = {}
25
26
27
28
29 _bsn.DOM.createElement = function ( type, attr, cont, html )
30 {
31         var ne = document.createElement( type );
32         if (!ne)
33                 return false;
34                 
35         for (var a in attr)
36                 ne[a] = attr[a];
37                 
38         if (typeof(cont) == "string" && !html)
39                 ne.appendChild( document.createTextNode(cont) );
40         else if (typeof(cont) == "string" && html)
41                 ne.innerHTML = cont;
42         else if (typeof(cont) == "object")
43                 ne.appendChild( cont );
44
45         return ne;
46 }
47
48
49
50
51
52 _bsn.DOM.clearElement = function ( id )
53 {
54         var ele = this.getElement( id );
55         
56         if (!ele)
57                 return false;
58         
59         while (ele.childNodes.length)
60                 ele.removeChild( ele.childNodes[0] );
61         
62         return true;
63 }
64
65
66
67
68
69
70
71
72
73 _bsn.DOM.removeElement = function ( ele )
74 {
75         var e = this.getElement(ele);
76         
77         if (!e)
78                 return false;
79         else if (e.parentNode.removeChild(e))
80                 return true;
81         else
82                 return false;
83 }
84
85
86
87
88
89 _bsn.DOM.replaceContent = function ( id, cont, html )
90 {
91         var ele = this.getElement( id );
92         
93         if (!ele)
94                 return false;
95         
96         this.clearElement( ele );
97         
98         if (typeof(cont) == "string" && !html)
99                 ele.appendChild( document.createTextNode(cont) );
100         else if (typeof(cont) == "string" && html)
101                 ele.innerHTML = cont;
102         else if (typeof(cont) == "object")
103                 ele.appendChild( cont );
104 }
105
106
107
108
109
110
111
112
113
114 _bsn.DOM.getElement = function ( ele )
115 {
116         if (typeof(ele) == "undefined")
117         {
118                 return false;
119         }
120         else if (typeof(ele) == "string")
121         {
122                 var re = document.getElementById( ele );
123                 if (!re)
124                         return false;
125                 else if (typeof(re.appendChild) != "undefined" ) {
126                         return re;
127                 } else {
128                         return false;
129                 }
130         }
131         else if (typeof(ele.appendChild) != "undefined")
132                 return ele;
133         else
134                 return false;
135 }
136
137
138
139
140
141
142
143 _bsn.DOM.appendChildren = function ( id, arr )
144 {
145         var ele = this.getElement( id );
146         
147         if (!ele)
148                 return false;
149         
150         
151         if (typeof(arr) != "object")
152                 return false;
153                 
154         for (var i=0;i<arr.length;i++)
155         {
156                 var cont = arr[i];
157                 if (typeof(cont) == "string")
158                         ele.appendChild( document.createTextNode(cont) );
159                 else if (typeof(cont) == "object")
160                         ele.appendChild( cont );
161         }
162 }
163
164
165
166
167
168 //      var opt = new Array( '1'=>'lorem', '2'=>'ipsum' );
169 // var sel = '2';
170
171 _bsn.DOM.createSelect = function ( attr, opt, sel )
172 {
173         var select = this.createElement( 'select', attr );
174         for (var a in opt)
175         {
176         
177                 var o = {id:a};
178                 if (a == sel)   o.selected = "selected";
179                 select.appendChild( this.createElement( 'option', o, opt[a] ) );
180                 
181         }
182         
183         return select;
184 }
185
186
187
188
189 _bsn.DOM.getPos = function ( ele )
190 {
191         var ele = this.getElement(ele);
192
193         var obj = ele;
194
195         var curleft = 0;
196         if (obj.offsetParent)
197         {
198                 while (obj.offsetParent)
199                 {
200                         curleft += obj.offsetLeft
201                         obj = obj.offsetParent;
202                 }
203         }
204         else if (obj.x)
205                 curleft += obj.x;
206
207
208         var obj = ele;
209         
210         var curtop = 0;
211         if (obj.offsetParent)
212         {
213                 while (obj.offsetParent)
214                 {
215                         curtop += obj.offsetTop
216                         obj = obj.offsetParent;
217                 }
218         }
219         else if (obj.y)
220                 curtop += obj.y;
221
222         return {x:curleft, y:curtop}
223 }